Indeed, it's a pity that the author placed so much focus on a cool looking font that they forgot to take basic properties like "good readability" into account. Form should follow function, not the other way around.
HN user
vog
https://njh.eu
[ my public key: https://keybase.io/vog; my proof: https://keybase.io/vog/sigs/ozUUuyqnoQrtbFK7EBI5seZKjJ73P9bwrVzhSNDMj4c ]
This is far from meaningless, because if you are too far below those 3.5%, you'll fail to make a change for the better, despite having a good cause with no real opposition.
Those 3.5% are encouraging for all social movements, who suffer (and/or have friends/family who suffer) from some issue in the system, have perhaps developed a good plan out of it, but think they are too small to make a difference.
Note that the article's link to the UUID v7 standard is meanwhile outdated. You should instead head directly to RFC 9562:
https://datatracker.ietf.org/doc/html/rfc9562
(which wasn't yet finished at the time of the article)
Okay, fair point.
But then, why prescribe the most expensive placebos where you co-finance societal harmful behavior, rather than just prescribing the "harmless" placebos that are not homeopathy, which are usually even cheaper and don't have any ideological overhead?
To those who downvoted: Would you dare to explain your disagreement?
Contrast this with advertisement, which actually does work even when people know that it is ads, and which still does work on people how know how ads work.
Also, contrast this with psychotherapy, which usually does work even better if the patient understands how it works, because it enables them to become an active and more effective part of the therapy.
This is an incorrect summary of the placebo effect. The placebo effect does require the patient to either believe it is effective, or at least not knowing clearly it is ineffective.
This is why clinical studies don't tell neither group (neither the treated group nor the control group) who is in which group, to not spoil the results.
And also, this is why homeopathy puts so much effort into spreading the belief they are effective despite all odds, up to the point of trying to convince people to abandon basic scientific principles.
While I hear this argumentation a lot, I still struggle with this:
If you have "mild problems, which would normally heal on their own", buying no medication at all would be even cheaper.
And from an ethical point of view, the idea of financing a whole (homeopathic) industry that uses your money to produce fake science, even with a single cent, should make one shudder, shouldn't it?
To me the "natural way" has always been to write portable code in the first place. From time to time, you'll find that parts of it are not portable, so you fix it, and along that way to learned something new about portability and apply it to future improvements on your code as well. Over time, you'll find fewer and fewer portability issue as you get better and better at writing portable code in the first place.
I'm not saying that this is the best way to do this, but to me this was always the obvious thing to do. As a somewhat extreme example, I'd never write a graphical user interface in pure Win32 API and expect it to be even remotely portable by some additional layer. I'd rather use Qt (or GTK, or Dear ImGui, or whatever) for native UIs even for programs that are (for now) meant to be only run on Windows.
To me personally, this has the additional benefit that I can do most of the development and testing in a non-hostile environment (e.g. Debian), then running a cross compiler (e.g. via MXE) and only do the final testing on Windows (well, usually first Wine, then some Windows VM), but at that last stage surprises are extremely seldom.
I'd recommend starting "from scratch" for the simple reason that the official PostgreSQL manual is excellent:
https://www.postgresql.org/docs/14/index.html
You'll quickly find which parts of the manual are interesting to you and which ones just repeat what you already know (or could have guessed on your own). Since the manual is very well structured, skipping those parts is very easy.
I have always suspected this to be the case, but it is great to see it confirmed and well-explained in detail by an almost-authority in our field.
I wonder if in the near future we'll see a similar article regarding security - "You Can't Buy Security".
From the announcement:
"We will continue to improve this new solution and are already working on an IPv6 only solution for cloud servers, too."
I'm eagerly waiting especially for this! The cloud servers are pretty cheap, but costs for IPv4 addresses make a significant part of the monthly cost. The Hetzner cloud server would be much more interesting if they weren't each tied to a public IPv4 address.
It took a while for me to fully appreciate the OpenSSH approach to portability:
They primarily develop OpenSSH purely for OpenBSD, using all (including non-portable) facilities of OpenBSD, including crypto and whatnot.
Then, a separate team manages the "portable" version of OpenSSH, which add stubs and does everything else needed to make OpenSSH compile on as many operating systems as possible.
I'm aware that OpenSSH is not the only project using that approach to portability. Nevertheless, I think it is fair to say this is an unusual approach used only on a minority of projects.
I was always puzzled on why they are doing this. This always struck me to be "just" a side effect of project politics and historically grown project structures.
But over the years I started to see some interesting benefits of that approach as well. I'm still not convinced by this model, but I have to admit that, more generally speaking, the OpenBSD project does many things against the mainstream, but quite often they turn to be right.
Put a public Jitsi server.
If you haven't been aware of the great work of the European NGO "noyb", this should grab your attention.
Facebook's GDPR violations are not just tolerated by the Irish DPC, they are outright protecting Facebook. Until recently, nobody was able to prove that. But noyb finally managed to annoyi the Irish DPC so much that the Irish DPC finally showed they true face by trying to force noyb into signing an NDA for documents that have clearly, and legally proven, a public interest.
These "Advent Reading" sessions are noyb's way to kick back the blanket so everyone can see what the Irish DPC is actually doing here.
If you haven't been aware of the great work of the European NGO "noyb", this should grab your attention.
Facebook's GDPR violations are not just tolerated by the Irish DPC, they are outright protecting Facebook. Until recently, nobody was able to prove that. But noyb finally managed to annoyi the Irish DPC so much that the Irish DPC finally showed they true face by trying to force noyb into signing an NDA for documents that have clearly, and legally proven, a public interest.
These "Advent Reading" sessions are noyb's way to kick back the blanket so everyone can see what the Irish DPC is actually doing here.
PostgreSQL allows for all of that: User-defined types with user-defined index structures and whatnot. PostgreSQL is great and flexible, yet transaction safe and fast. You should really try it. It is one of the highest-quality FLOSS projects I have ever seen, not just in term of code quality, but also in terms of project and community management.
Congrats for this simple and beautiful website!
I wonder how you manage your overall style, though. Is your design set in stone, do you never change it or fix quirks? If you e.g. change from GitHub to GitLab, would you edit the footer of every single page?
One small suggestion: Please advertise your RSS feed to the browser using the <link rel="alternate" ...> tag. Ideally on every page. Otherwise, visitors of your blog articles (like myself) get the wrong impression that you don't provide a feed, until they go back to the main page and scroll down to the bottom.
I used to use a lot of SymPy, but finally switched to Sage. This is Python as well, but has some syntax extensions and sensible defaults that reduce many quirks of Python. For example, you can write 1/2 instead of of Rational(1,2) and a^b instead of ab.
Moreover, Sage integrates lots of other libraries seamlessly. I remember doing lots of polynomial calculations and groebner basis stuff, and generating Singular script from Python seemed to be very elegant in the beginning. However, this quickly showed severe drawbacks. With Sage this all became easy and seamless again.
The fact that its default chats are not end-to-end encrypted and are stored in plaintext on its servers is a concern.
"Concern"? This is a deal-breaker.
Everyone who talks about this as a huge deficiency should also consider that this applies to email too, unless one always uses encryption (like GPG/PGP or S/MIME).
The contenders here are Signal and WhatsApp, not email.
Having better UX and safer defaults than email is nothing to be proud of - it is the bare minimum.
I find it quite telling that a short outage does more damage to Facebook than any data breaches and mishandling of user data.
The article is refreshing and makes clear that REST is violates KISS, making a good case for RPC with no nonsense on top of it.
I fully agree with that sentiment.
However, at some places the article goes over the top. This is really a pity, as those bits are not necessary for the overall argument. Moreover, those parts weaken the reading experience as much as a bunch of spelling mistakes would.
Using “HTTP 404 Not Found” to notify about an unexisting resource sounds RESTful as heck, doesn’t it? Too bad: your nginx was misconfigured for 1 hour, so your API consumers got only 404 errors and purged hundreds of accounts, thinking they were deleted….
A non-existing resource doesn't mean it was deleted, but simply means it is not there - for whatever reason. Acting with deletion after receiving a 404 sound quite far fetched to me. (Except when mirroring, but then it would restore everything as soon as the configuration was fixed.)
Moreover, if the server does have active knowledge of the deleted status of a dataset, and wants to communicate that to a client, it would use 410 Gone. Only then the client has enough evidence to perform a deletion on their side.
You want to use PUT to update your resource? OK, but some Holy Specifications state that the data input has to be equivalent to the representation received via a GET. So what do you do with the numerous read-only parameters returned by GET (creation time, last update time, server-generated token…)?
The PUT semantics only require it to be idempotent. That is, multiple identical PUTs should lead to the same result as a single PUT. The specs do not require that GET has to return the exact same value installed by PUT. Even more so, the specs actively discourage clients to make that assumption, as a different client - or any other event for that matter - could have changed the value in the meantime.
The site https://f-droid.org/ currently shows:
Not Found
The requested URL / was not found on this server.
This look more like a configuration error than anything else.several of which using 200GB of memory
I really, really hope you mean "200MB", although I honestly wouldn't be surprised if they managed to use 200GB if accidentally started on a beefy server.
Not sure what you argue against, but exactly that aspect, "human experience is limited by our senses", means that everything could be a simulation. Plato named those "shadows", but that's only because people weren't used to good simulation technologies back then. Today we have 3D cinemas, flight simulators, VR headsets, etc.
But if you still don't like that example, here's another historic example of a philosopher who published the idea that everything could be a simulation.
The evil daemon by René Descartes:
https://en.wikipedia.org/wiki/Evil_demon
So my point still stands: The idea that everything might be a simulation is as old as humanity. It is neither modern nor based on creationism.
The next president then reversed this.
Just out of curiosity: This is very uncommon in modern democracies, isn't it?
In most European countries (and maybe also in the US?) each newly elected government shows enough respect for the previous government by not reversing laws established just 1-3 years ago. They usually either concentrate on different topics, or restrict themselves to refinements and corrections of existing laws.
And there's some good reason for that: You don't want a country's set of laws switching between two versions every 4-5 years without making any progress.
However, since that taboo has been broken by now, maybe the next US president would have the courage to do the same with everything the current president did?
It is really a pity that there are so many browser extensions who get this right, but the browsers themselves don't.
That's why it is so refreshing to see at least one of them (Firefox) actually trying to get it right.
The technical term for a browser is "User Agent". That naming may be historic and old-fashioned, but it was named that way for a reason. It's time to restore the original meaning, to make the browser an agent who actually acts on behalf of and in the interests of the user, not the website creator.
In my humble opinion, this should be the task of the browser, not the task of every site that links somewhere.
Moreover, I always mute the speakers of my computer, for exactly that reason. When I do want sound, I usually connect my headset or an external speaker. The computer's speakers remain muted. In the rare cases where I do want to use the computer's speakers, I unmute them, and mute them when I'm finished. This is so seldom that it's not a big deal.
Back to browsers, I wonder why those implemented auto-play for videos in the first place. More specifically: I wonder why they auto-play audio, as I don't see that issue with animated GIFs. Moving ads are annoying, but not remotely as bad as an unexpected sound.
The upcoming Firefox versions are very promising in that regard:
"Block video auto-play: Firefox will provide users with a way to block video auto-play that doesn't break websites." https://wiki.mozilla.org/Firefox/Roadmap
"Implement new autoplay policy" https://bugzilla.mozilla.org/show_bug.cgi?id=1382574
If something like this happened in my country there would be a general strike and the country would be at a standstill.
That sounds too good, and too progressive, to be true. Which country do you live in?
the theory that we're actually living in a simulation, ... It's basically Creationism in modern form.
It's not even modern. It is basically Plato's Cave, which is classic Greek philosophy.
https://en.wikipedia.org/wiki/Allegory_of_the_Cave
The religious touch of that idea did not become popular until the movie "The Matrix", which originally had allusions to many different religions, but specialized to Christianity / Creationism with the second and especially the third movie "The Matrix Revolutions".