It's lovely to see how PHP keeps growing. It's far from what it was when I used to code with it in V3. I really thought it would be lost in its bad design, but the core devs kept at it, and it is, indeed, a pretty decent language now.
After 2001 the US lost the habeas corpus in total silence. The Snowden revelations demonstrated that you can have a stage level conspiracy unveiled, and again nothing Will happen.
The writing has been on the wall for 2 decades: laws don't matter there.
HN has been cheering for those types of people for as long as I have been here. Musk seldom even sees his 10 kids, except one. Jobs just decided that raising his daughter was not his problem.
Really? We must have been reading two different HNs. I have the impression that posts appreciating work-life balance get more upvotes that the ones trying to sell you "your career is the most important thing you have" narrow outlook.
In the 1930s, the Dutch government conducted a census that included religion. The Netherlands, after all, had a comprehensive population registry system (Bevolkingsregister) established in the 19th century. This registry was centralized, continuously updated, and included religion, addresses, family connections, and occupations.
After the German occupation in 1940, the Nazis accessed and exploited the Dutch population registry, including religious affiliation.
About 75–80% of the ~140,000 Jews in the Netherlands were killed.
This is the highest percentage in Western Europe.
Compare that to France, which had a more fragmented administrative system, and less complete central records and 25% of Jews in France were deported and killed — a much lower percentage than the Netherlands.
As usual, when reaching the Godwin point, the idea is not for you to take it at face value, but to extrapolate to your situation.
The concentration of power and centralized people tracking are eventually always abused, and once your system becomes less free (which has historically eventually happened on a long enough timescale), you will pay the price for it.
In our case, having a full history of all opinions, interactions, locations, and behavior linked to full identity of people is what we are ultimately talking about here. It's already well on its way, but it will make it worse.
The more you concentrate power and feed data about people, the greater the potential damage.
And of course, it doesn't need to be a full-on dictatorship to get problems with those.
It's a spectrum of increasing problems you will get, the more you lean into it.
> In our case, having a full history of all opinions, interactions, locations, and behavior linked to full identity of people is what we are ultimately talking about here. It's already well on its way, but it will make it worse.
Well, not really. Age verification doesn't have to, and IMO should not, lead to a linked identity. Just a blind check "are you a real human older than X years old? Yes! OK". That way you get the benefits of age restrictions and real human validation, without any of the potential privacy ramifications.
But to be clear, most real people's online presence is under their own names (or linked trivially to their own names, like a cutesy turn on their name for an instagram handle that is linked to their Facebook account which has their full name). It's already possible, and done, to track your public social media presence and interactions. Places like HN and even Reddit are much more niche than that.
That's the whole point of this thread, the current setup makes a google account mandatory, with all the terrible consequences on private life that it has.
Not to detract from the rest of your message, but it wasn't centralized; the data was collected and stored in each municipality separately. The only part that is centralized is the historical archive: after death, each person's info card is moved to the National Archives.
This system has never been centralized, even after digitization: birth records are still kept only in the town of birth, and when moving house your active records must be officially requested and the transfer manually authorized between municipal systems.
>This registry was centralized, continuously updated, and included religion, addresses, family connections, and occupations.
Sorry, but why would the Dutch government need to know all those details in the first place? Did Dutch citizens never ask that question back then? Nazis or no Nazis, that was an issue waiting to happen. I guess it wouldn't have mattered if they did, since the Netherlands was a kingdom and people didn't have much say into how the monarchy ran things.
To do governing properly you want to understand the impact your policies are having, and I general that means more data can give you better answers. In a world where the invasion had not happened yet it was not unreasonable to collect as much as we could and store it in threefold. Things are different now, once bitten twice shy.
Do Americans or Europeans ask any questions with regarding to why the Government wants to pass these anti-privacy laws, or how is it even supposed to reduce "child grooming", etc.?
Maybe the Dutch citizens did ask these questions you think they did not ask, but the Government won.
Your post highlights how shocked people who don't live in a database state can be when they encounter one.
In the UK you can expect to be asked your ethnicity, sexuality, sex, gender, religion and a few other things every time you apply for a job or interact with the state.
Because they don't represent the same thing. Pydantic models represent your input, it's the result of the experience you expose to the outside world, and therefore comes with objectives and constraints matching this:
- make it easy to provide
- make it simple to understand
- make it familiar
- deal with security and authentication
- be easily serializable through your communication layer
On the other hand, internal representations have the goal to help you with your private calculations:
- make it performant
- make it work with different subsystems such as persistence, caching, queuing
- provide convenience shortcuts or precalculations for your own benefits
Sometimes they overlap, or the system is not big enough that it matters.
But the more you get to big or old system, the less likely they will.
However, I often pass around pydantic objects if I have them, and I do this until it becomes a problem. And I rarely reach that point.
It's like using Python until you have performance problems.
My pydantic models represent a "Thing" (a concept or whatever), not an input
You can translate many things into a Thing, model_validate will help you with that (with contextinfo etc)
You can translate your Thing into multiple output format, with model_serialize
In your model, you shall put every checks required to ensure that some input are, indeed, a Thing
And from there, you can use this object everywhere, certain that this is, indeed, a Thing, and that it has all the properties that makes a thing a Thing
You can certainly do it, but since serialization and validation are the main benefit from using Pydantic, I/O are why it exists.
Outside of I/O, the whole machinery has little use. And since pydantic models are used by introspection to build APIs, automatic deserializer and arg parsing, making it fit the I/O is where the money is.
Also, remember that despite all the improved perf of pydantic recently, they are still more expensive than dataclass, themselves more than classes. They are 8 times more expensive to instanciate than regular classes, but above all, attribute access is 50% slower.
Now I get that in Python this is not a primary concern, but still, pydantic is not a free lunch.
I'd say it's also important to state what it conveys. When I see a Pydantic objects, I expect some I/O somewhere. Breaking this expectation would take me by surprise and lower my trust of the rest of the code. Unless you are deep in defensive programming, there is no reason to validate input far from the boundaries of the program.
Yeah, I'd agree with that. Validation rules are like an extension to the type system. Invariants are useful at the edges of a system but also in the core. If, for example, I can be told that a list is non-empty then I can write more clean code to handle it.
In Java they got around the external-dependency-in-the-core-model problem by making the JSR-380 specification that could (even if only in theory) have multiple implementations.
In clojure you don't need to worry about another external dependency because the spec library is built-in. One could argue that it's still a dependency even if it's coming from the standard library. At the point I'd say, why are we worried about this? it's to isolate our core from unnecessary reasons to change.
I get that principled terms it's not right but, if those libraries change on API on a similar cadence to the programming language syntax, then it doesn't impact in practical terms. It's these kind of pragmatic compromises that distinguish Python from Java - after all, 'worse is better'.
Sure, runtime validation is useful – at the boundaries of your domain! After that your type checker should ensure your data has the shape your code expects.
The boundaries of my domain is everywhere, because stuff are built everywhere. I'm sure I am a bad dev, yet prebuilding all possibles objects I might need everytime I receive an input sounds stupid at best
(btw, this post sounds a lot like "if it compiles, it works", not gonna do this, especially in Python)
No? Well, you can:
uv run https://pastebin.com/raw/RrEWSA5F
And since yesterday, you can even run a github gist:
uv run https://gist.github.com/charliermarsh/ea9eab7f56b1b3d41e5196...