Where I live, which is not in the USA, I'm confident my doctor's office doesn't sell their contact list - or at least, not without statistical anonymisation and aggregation for research purposes.
They probably outsource processing the data and storing it to other entities, but that will be under contracts which govern how the data may be used and handled. I assume that's not what "sell the data" means in this conversation.
It would be such an egregious violation of local data protection law to sell patient personal details for unrestricted commercial use, including their contact info, and it would make the political news where I live if they were found out.
Here in NL my local doctors office just delegates their IT to some US-based company. I doubt they take privacy seriously. Their whole security is a joke. but they make a theatre out of it to give an impression otherwise.
EU law means little in this respect, since it's not enforced and most people don't understand enough on the subject to even evaluate what's going on with their data (or their clients data).
Also "not in the USA" i actually work on a medical ish application these days (not the in production version, mind but a fork with new features that's entirely separate at the moment).
I have access to ... zero patient data. Our entire test database is synthetic records.
A name for that strange time I was in a room of ~15 people chaired by me, who unanimously decided that PHP should be used for the website, made by volunteers. Yet when I asked individuals afterwards, none of them had wanted PHP, and only one or two ever used PHP.
They chose it because they incorrectly thought that's what most people wanted, and they preferred to go along with their perception of group view so readily that nobody revealed their own tech preferences, despite a long discussion.
It wasn't a compromise, because that would start with people knowing each others' preferences, then compromising.
It was more like a bad default based on incorrect beliefs about each other.
The strangest part, for me, was realising that this happened despite meeting for a good hour discussing alternative options, with several professional webdevs in the group. The groupthink effect is powerful!
The effect of the group decision was not what people in the group had hoped for. Instead of producing an attractive common interest, it resulted in few volunteers, because everyone picked a tech choice they were not interested in working with themselves, assuming it would be of more interest to others.
Very nice. It reminds me of a https://en.wikipedia.org/wiki/Keynesian_beauty_contest : "a beauty contest where judges are rewarded for selecting the most popular faces among all judges, rather than those they may personally find the most attractive".
The Abilene Paradox is used to describe an unhealthy consensus.
The problem is, is that a hallmark of a healthy consensus, is that no one is really happy with the decision, and a hallmark of an unhealthy consensus, is that no one is really happy with the decision.
The same happened to me last year, on a company trip people voted to not go to a bioluminescent swimming, but when I confronted them everyone was really wanting to go. We ended up going (I can be a bit pushy), and everybody loved that experience.
"In one famous example, Thomas C. Schelling shows that a slight-but-not-malicious preference to have neighbors of the same race eventually leads to completely segregated populations."
To get reliable message delivery, you have to do that when using WebSockets or SSE too, because those also disconnect or time out depending on upstream network conditions outside the client's control, and will lose messages during reconnection if you don't have a sender-side retransmt queue.
However, queued messages don't have to be kept for a very long time, usually. Because every connection method suffers from this problem, you wouldn't usually architect a system with no resync or reset strategy in the client when reconnection takes so long that it isn't useful to stream every individual message since the last connection.
The client and/or server have a resync timeout, and the server's queue is limited to that timeout, plus margin for various delays.
Once there's a resync strategy implemented, it is often reasonable for rhe server to be able to force a resync early, so it can flush messages queues according to other criteria than a strict timeout. For example memory pressure or server restarts.
With websockets, the client can immediately acknowledge receipt of a message, since the connection is bidirectional. And on a resync the server can just send events that the client never acknowledged.
That (to quote you) means you have to keep them in the queue until the next time the client connects, which could be a very long time.
To be clear, there's no real difference - in both cases you have to keep messages in some queue and potentially resend them until they've been acknowledged.
I have about 1000 accounts in my password manager. 100 passkeys to replace them is not enough. I wouldn't feel comfortable with that as a hard limit, if it's to replace all passwords.
Many of those 1000 are obsolete (old accounts I'll never use again), but many are not. At least 30 are things I use every week, most of them financial or tech admin, i.e. not social media. I'm confident (though not certain) that I login to more than 100 accounts over a typical year, and there are accounts that I sometimes login to more than a year since the previous time, glad that I recorded the credential.
WhatsApp on Android has the same behaviour. Most of my conversations show as a bare phone number because I decided not to give it all my contacts.
However, WhatsApp groups show a name, so that's a workaround if you are using WhatsApp with someone you know well: Make a group for the two of you.
When a friend went to install WhatsApp for their iPad, they succeeded!
Then they said it wasn't working properly. Unfortunately that's because app store search brought up misleading third-party WhatsApp apps for the iPad. If you weren't paying attention, it was too easy to think you were installing the official app from WhatsApp. I didn't notice the app was third-party at first either, and I was very surprised to find no app at all from WhatsApp itself on closer inspection, amidst a page of search resulrs all claiming to be it.
>WhatsApp on Android has the same behaviour. Most of my conversations show as a bare phone number because I decided not to give it all my contacts.
It was actually worse (at least as of a few years ago) because they didn't allow you to manually input phone numbers. You either need the other party to message you first, or use a wa.me deeplink (eg. wa.me/12125551234).
I would have settled for something like the Instagram “iPad app”: a phone-sized rectangle in the middle of a black background. Alas, they don’t even allow that, hence all the fake crap you can easily download by mistake. And the web app is pretty bad on iPads, thanks in no small part to Apple.
> it seems like linux already has functionality that could make spawning a process a lot more efficient and threadsafe. My idea is basically to use clone or clone3 to create a new process in a new thread group that shares the original processes memory (that is with CLONE_VM but not CLONE_THREAD). And pass a function point to call (instead of returning on the child process) and a heap-allocated stack for the child process to use.
In Linux you can do that with standard system calls, by spawning a thread with pthread_create() then calling vfork() from the thread. vfork() pauses only the parent thread, not the entire parent process, until the vfork child calls execve().The effect is to create a child task which has CLONE_VM but not CLONE_THREAD, which runs concurrently with all the other threads.
I use Firefox as my main browser on a Mac. A lot, every day - I have about 30 Firefox windows open now. But there are a number of things that only work in Chrome or Safari.
So I also use Ungoogled Chromium. I have about 3 Ungoogled Chromium windows open now.
Occasionally a banking, financial service, shopping or video meeting site doesn't work right in Firefox. I've had some site logins just spin forever in Firefox, and work immediately in Chromiun.
For example, for work with one company we use Google video meetings a lot. In theory this works in Firefox, but in practice sometimes the audio doesn't work. The microphone volume gets set to zero, unpredictably. It's flaky enough that I switched to Ungoogled Chromium for those, and decided to use it for all the Google Workspace linked services for that company, as well as AWS, Hetzner etc accounts linked with that company.
Chromium's profiles are good, with clear separation and a reasonable UI. So are Firefox containers, but in different ways.
Firefox automatic per-site container selection doesn't work at all well when you have multiple accounts on the same site, though. It doesn't group container-switching according to working context. So I have a couple of Ungoogled Chromium profiles for work with different companies.
Finally, Chrome renders print-to-PDF better for some use-cases, so I use Ungoogled Chromium to generate invoices and similar documents. Firefox print-to-PDF works, but I could never get ruled lines to be.a good thickness on the printed page. They were always too thick, or invisible. Firefox did better pagination last time tried it, though.
> If you print out the parsed representation of this whitespace code, you get back the lisp code (data) also. But this is different to what you fed into the parser.
First, Lisp is not homoiconic by that definition either. If you read "( + 1 2 )" as a Lisp object then print it, you'll get "(+ 1 2)", which is not the same string.
We understand that difference in sexp whitespace to be superficial, and superficial can be technically defined, but it's a difference. If you accept that superficial differences are allowed within the definition of homoiconicity, you can define the difference between indententation syntax and sexp syntax to be superficial too, if you want.
Second, it's not true that what gets printed has to be the Lisp representation. It depends which print function you use. Homiconicity requires the reader and printer match. If you write a different reader, to accept a different syntax, then you need to use the corresponding printer.
If you print_with_new_syntax (a function name I've made up), you get back the original code in its indentation-based form, which makes the pair read_with_new_syntax + print_with_new_syntax homoiconic in the classical Lisp sense.
There may be superficial differences, such as if you put in "baz 1 " and get out "bar 1" (missing a space), or "baz" followed by "1" indented on the next line, but as noted above, Lisp sexps have this characteristic too.
(Then consider "(+ 1 #-t 2 3)" which in a Lisp that supports #- evaluates to 4. Read that and print it, you'll get "(+ 1 3)", which isn't a superficial difference any more.)
They probably outsource processing the data and storing it to other entities, but that will be under contracts which govern how the data may be used and handled. I assume that's not what "sell the data" means in this conversation.
It would be such an egregious violation of local data protection law to sell patient personal details for unrestricted commercial use, including their contact info, and it would make the political news where I live if they were found out.