HNHacker News
TopNewBestAskShowJobs

idoubtit

3,429 karma · joined July 6, 2017

submissionscomments
idoubtit··on 100M-Row Challenge with PHP
The weirdness is partly in JSON . In the JSON spec, the slash (named "solidus" there) is the only character that can be written plainly or prefixed with a backslash (AKA "reverse solidus").

See page 4, section 9 of the latest ECMA for JSON: https://ecma-international.org/wp-content/uploads/ECMA-404_2...

idoubtit··on 100M-Row Challenge with PHP
> That's the default output when using json_encode with the JSON_PRETTY_PRINT flag in php.

JSON_PRETTY_PRINT is irrelevant. Escaping slashes is the default behavior of json_encode(). To switch it off, use JSON_UNESCAPED_SLASHES.

idoubtit··on 0 A.D. Release 28: Boiorix
0AD's web site is rather bad at describing the game, but Beyond All Reason is even worse. I rarely play, so I had never heard about it. Both focus on details, forgetting the main points.

After reading BAR's homepage and the FAQ, I still have no idea what to expect. It could be a purely online game with ads and in-game buys, through a central proprietary server. It could also have a single player campaign.

idoubtit··on How far back in time can you understand English?
Most European people know about Odysseus, but few have read Homer, even in translation.

I one met a visiting Iranian academic just after I'd learned about the Shahnameh. I'd also read the opinion of a French scholar who thought its language was, for a modern Iranian, like Montaigne for a modern French. The Iranian woman told me that very few people in Iran actually read the book. It's very long, and hard to grasp for untrained readers. But most people know some of its stories and characters, because they are often mentioned in everyday life, and because the abridged prose books are widespread.

BTW, I don't know which editions are the most popular in Iran. Wikipedia says the Shahnameh was heavily modified and modernized up to the 14th century, when its most famous illustrated edition was created. The book most read today is probably not a scholar edition.

idoubtit··on How far back in time can you understand English?
I think it depends a lot on the history of the language. My native language is French, and since long ago various authorities try to normalize and "purify" the language. This is why the gap between spoken French and written French is so wide. Now my experience as an avid reader...

Books written in the 17th century or later are easy to read. Of course, the meaning of some words can change over time but that's a minor trouble. I believe Molière and Racine are still studied in school nowadays, but the first name that came to my mind was Cyrano de Bergerac (the writer, not the fictitious character).

Books from the 16th need practice, but I think anyone who tries hard will get used to the language. I enjoyed Rabelais's Pantagruel and Gargantua a lot, and I first read them by myself when I was in highschool (I knew a bit of Latin and Greek, which helped).

Before that, French was much more diverse; the famous split into "langue d'oc" and "langue d'oïl" (terms for "oui" — yes — at the time) is a simplification, because there were many dialects with blurry contours over space and time.

I've read several 11th-12th novels about the Round Table, but I was already experienced in Old French when I started, and I think most readers would struggle to make sense of it. It may depend on the dialect; I remember "Mort Artur" was easier than "Lancelot, le chevalier à la charette".

"La chanson de Roland" (11th century, Old French named anglo-normand) is one of my favorite books of all times. Reading it for the first time was a long process — I learned the declensions of Old French and a lot of vocabulary — but it was also fun, like deciphering some mystery. And the poesy is a marvel, epic, incredibly concise, surprising and deep.

Before that (9th-10th), Old French was even closer to Latin.

idoubtit··on We're no longer attracting top talent: the brain drain killing American science
> That seems a bit too optimistic to be a valid argument.

I think you misunderstood, since that's not about optimism. Years ago, smart students from all over the world could hope for a successful career in American research. Now, in the USA many doors are closing in most academic domains, and few (potential) researchers dare plan any success story.

idoubtit··on The Perils of ISBN
Wikidata is a FRBR-compatible public database of books. I don't know if it's good enough for the kind of books the author wants, but in recent years the quality of wikidata greatly increased for the books that deal with (about 1000 items).

BTW, they misunderstood their own example of "Hotel Iris" by Yoko Ogawa when they wrote "the same work is duplicated four times." In fact, those four entries in the list point to distinct works.

One of these is a French publication by the publisher Actes Sud. Translations are not the same work as the original. They are derived works.

But it's true this list is a mess. Another entriy has 3 editions, one in English and two in Spanish, so it's obviously an error that mixes two distinct works.

idoubtit··on Linux From Scratch ends SysVinit support
> Is this really that hard to type?

Your link is irrelevant. It points to OpenBSD which uses rc, not sysv. The 3 lines of this rc startup script use a file of 400 lines of shell with commands that don't exist in SysVinit.

With sysv, the difficulty depended on the local tools because the launching scripts could not be shared across Linux distributions. Debian used the compiled helper `start-stop-daemon` while Redhat did not.

With sysv, some sysadmin tasks require external tools. Try to write a launching script with a smart autorestart in case of crash. Make it work even when the daemon forks. Do not assume that the daemon writes its initial PID anywhere. IIRC, to get this feature, we had to drop sysv for runit, two decades ago. Now it's just 2 lines in a systemd unit.

idoubtit··on Linux From Scratch ends SysVinit support
The world is vast, and I doubt that every mechanical engineer has studied steam engines, and that it makes a difference in the end.

Most modern programmers don't learn COBOL60 or Commodore BASIC. Modern mathematician very rarely study writings of Euler or Gauss; even 50 years old math books may be hard to grasp for modern students.

I agree that using a simpler tool for educational purpose is useful, but since SysVinit is obsoleted almost everywhere, it made sense to drop it. LFS could have chosen a simpler init than the domain standard, like runit or s6-init.

idoubtit··on Mermaid ASCII: Render Mermaid diagrams in your terminal
Comparing MermaidJS with Kroki is a bit like comparing PDF.js to Adobe Acrobat. I don't think either is better than the other, they're just for different use-cases.

With MermaidJS, converting a diagram inside a web page requires adding a handful of lines to a HTML page. The execution is fast and local.

Kroki is a web-service. To use it in a web page means adding a dependency to an external provider (a free service exists, but asks for fundings). An alternative is self-hosting by running a Kroki container.

A few years ago, I added Mermaid diagrams to a project in a few minutes of work. Had we needed a much more complex tool, maybe I would have gone with Kroki, but not by myself; it would have required a change in the deploying process of the project.

idoubtit··on The Gleam Programming Language
For anyone opening the link and wondering why the expected "gleam.toml" is missing: the project contains 2 Gleam sub-projects. The server/ directory is the BEAM server (no framework) and the client/ directory is the gleam-compiled-js client (lustre framework).

Unfortunately, there are many tests for the server, and none for the client.

idoubtit··on You are not required to close your <p>, <li>, <img>, or <br> tags in HTML
This a very verbose and confuse article. Mixing P/LI and IMG/BR is wrong. I think the situation could be explained with two points:

1. The autoclose syntax does not exist in HTML5, and a trailing slash after a tag is always ignored. It's therefore recommended to avoid this syntax. I.e write <br> instead of <br />. For details and a list of void elements, see https://developer.mozilla.org/en-US/docs/Glossary/Void_eleme...

2. It's not mandatory to close tags when the parser can guess where they end. E.g. a paragraph cannot contain any line-block, so <p>a<div>b</div> is the same as <p>a</p><div>b</div>. It depends on the context, but putting an explicit end tag is usually less error-prone.

idoubtit··on Overdose deaths are falling in America because of a 'supply shock': study
The reporter rightly queried other researchers about this article, and all of them were skeptical that a "supply shock" could be the cause, or even the main cause. My own skepticism is because the death rate went down many months before any sign of shortage appeared.

I haven't read the paywalled Science paper, but The Economist extracted a graph which shows that the purity of Fentanyl pills was stable till the first months of 2024, then dropped sharply. The purity of the powder peaked in 2023, then went down in 2024, back to its older levels. They suppose that it proves the supply was short, but another researcher even states that the supply of Fentanyl precursors didn't change until the end of 2024.

Anyway, the epidemic plateaued by the start of 2022, then went down after August 2023; Source https://www.cdc.gov/nchs/nvss/vsrr/drug-overdose-data.htm

Why did the death rate slow down for one year, then go down many months before any sign of supply changes?

idoubtit··on The Great Gatsby is the most misunderstood novel (2021)
I've read thousands of books. There are good novels everywhere, and no country has the exclusivity of any theme.

> One is the depiction of desolation and human loneliness before the American continent was developed into a prosperous land.

Of course, classical European literature didn't focus on the American wilderness. Though the most famous book on this theme is probably Defoe's Robinson Crusoe. And I enjoyed T.E. Lawrence' Seven Pillars of Wisdom which most people know through the film; the Arabian desert was a good place for loneliness in the wilderness.

> Another is the pursuit of the American Dream, where people achieve success through relentless struggle.

Like wise, the American Dream is an American myth, which is rarely the focus outside of the USA. But searching success through relentless struggle is a frequent theme. For instance, Stendhal's Le rouge et le noir or Maupassant's Bel-ami. These are from two of the most famous classical French authors, but there are many novels about hard-working people that reach success.

> The third is what this novel expresses: what happens after success? Money and career cannot solve all problems; people need more to fill an entire life.

As you like Russian literature, I suppose you've read Goncharov's Oblomov and Chekov's theater, especially Uncle Vania. That theme is central in one of the most famous French novel, Flaubert's Madame Bovary. The excellent Italian writer Alberto Moravia also has many novels about this, the most famous being Il disprezzo and my favourite being Gli indifferenti. I also like D'Annunzio's Il piacere much more than The Great Gatsby. I would argue that variations of this theme are universal, with old writings like the Bibles's Qohelet and even more Sumer's Gilgamesh.

idoubtit··on Standard Ebooks: Public Domain Day 2026 in Literature
The title makes it look like Public Domain is universal, while the article does mention that this list is only about the USA.

> On January 1, 2026, books published in 1930 enter the U.S. public domain.

The Copyright laws are different in each country, and it's a non-sense in the modern world.

A few years ago, I was searching for books written by Alexandra David-Neel. I found them on a Canadian (IIRC) website, but downloads were filtered by geo-IP, since what was in the public domain there was not yet public in France. One of the books I wanted was written before 1900, and not in print since then. Yet the author died in 1969, aged 100, so the French Public Domain for her works will start in 2040.

Another example: "As I lay dying" by William Faulkner is now Public Domain in the USA. It was Public Domain in Canada from 2013 to 2023. Then the law changed, and the copyright was extended by 20 years, and reinstated for this book until 2032 — which is 70 years after the author's death in 1962.

idoubtit··on A faster heart for F-Droid
Not much...

I wrote a few times to my local MPs ("député", as we call them in France). I usually got a response, though I suspect it was written by their secretary with no other consequence. In one case (related to privacy against surveillance), they raised a question in the congress, which had just a symbolic impact.

It may be different in other countries. In France, Parliament is de-facto a marginal power against a strong executive power. Even the legal terms are symptomatic of this situation: the government submits a "project of law" while MPs submit a "proposal of law" (which, for members of the governing party, is almost always written by the government then endorsed by some loyal MP).

idoubtit··on Go away Python
That's my experience. I'm not a Python developer, and installing Python programs has been a mess for decades, so I'd rather stay away from the language than try another new tool.

Over the years, I've used setup.py, pip, pipenv (which kept crashing though it was an official recommendation), manual venv+pip (or virtualenv? I vaguely remember there were 2 similar tools and none was part of a minimal Python install). Does uv work in all of these cases? The uv doc pointed out by the GP is vague about legacy projects, though I've just skimmed through the long page.

IIRC, Python tools didn't share their data across projects, so they could build the same heavy dependencies multiple times. I've also seen projects with incomplete dependencies (installed through Conda, IIRC) which were a major pain to get working. For many years, the only simple and sane way to run some Python code was in a Docker image, which has its own drawbacks.

idoubtit··on Upcoming Changes to Let's Encrypt Certificates
> If you use Caddy that's even the default behavior - it tries ZeroSSL first and automatically falls back to Let's Encrypt if that fails for whatever reason.

No, that's false. It's the other way around.

“If Caddy cannot get a certificate from Let's Encrypt, it will try with ZeroSSL”. Source: https://caddyserver.com/docs/automatic-https#issuer-fallback

Which makes sense, since the ACME access to ZeroSSL must go through an account created by a manual registration step. Unless the landscape changed very recently, LE is still the only free ACME that does not require registration. Source: https://poshac.me/docs/v4/Guides/ACME-CA-Comparison/#acme-ca...

idoubtit··on Ask HN: End of Year Book Recommendations
1. Die Wand (1963, Germany). The Wall. Marlen Haushofer.

An excellent novel, simple, yet moving. Why do we live and what is our connection to nature?

2. Fifth Business (1970, Canada). Robertson Davies.

I've read thousands of novels, so I'm always glad to read something new and unpredictable, but still based on the best premise: interesting characters.

3. Sostiene Pereira (1994, Italy). Pereira Maintains. Antonio Tabucchi.

My favorite book this year. A deep and smart and tense plunge into the Portuguese life of a few decades ago. Italian literature has so many gems.

idoubtit··on Ask HN: End of Year Book Recommendations
> Another good book is "Eichman in Jerusalem"

I've read at least two articles authored by historians that thought this book was full of factual errors and misunderstandings. One of them had studied Eichmann's life and correspondance, and found that he was far from the character that Hannah Arendt depicted. IIRC, the other article tried to explain her bias; I remember she hated Jerusalem and despised most people she met in Israel.

It may be good read, but don't expect the book to be fair or truthful.

idoubtit··on Using Git add -p for fun (and profit)
Your mileage may vary, because the workflow you described does not suit me. I rarely want to put on hold my commit, work on a new one, then go back later to the former commit.

Most of the time, when working on a new commit I have a few changes related to recent commits. So _when I'm done with all that_, I commit selectively the new work, then dispatch the rest among the other commits:

  git add -p ; git commit
  git add -u ; git absorb
Sometimes, I use `commit --fixup` instead of the automatic `absorb`. Anyway, I tried Jujutsu for a few weeks, some was good and some was bad; it didn't "shine" enough and I went back to pure Git.
idoubtit··on Using Python for Scripting
So they suggest to write scripts in Python rather than shell because Python is stable, probably installed on the target machine, has a big standard library, and is more readable. Many people do so.

That's the bright side of Python. They should mention the dark side, or Why _not_ to use Python for scripting.

First of all, the promise of easy portability breaks as soon as the script has dependencies. Try to install some Python program on a server where you're not root and a minimal python3 is installed.

The stability isn't very good in my experience either. I've often seen programs not compatible with recent releases of Python, either explicitly in the README or implicitly at runtime. Unmaintained Python code breaks.

Unfortunately, there is no silver bullet. Posix shell or bash may be better for simple scripts; Perl or Python if you know you won't require dependencies or if you have a good control on where to install the script; languages that compile to static executables are not really "scripting", but may be a better choice for long(term usage. These past years, I tend to keep away from Python as much as I can.

idoubtit··on Security issues with electronic invoices
What was unclear in that article is that the XML is usually embedded in the invoice. For instance, Factur-X is the mandatory format in Germany, and it's a PDF which contains a metadata block with a XML EN16931 content.

This XML will usually not be read by the companies that pay the invoice. For instance, in France by the end of 2027, every business will have to send e-invoices, but never directly to the real recipient. The business sends the invoice to a registered go-between, which will ask a national platform for the address of the recipient's go-between, etc. So, only those official go-between companies will have to securely parse the XML.

BTW, in 2022 when the French government decided to make e-invoicing mandatory, it announced that it would develop a national unique go-between platform. Two years later, it dropped that part of the project and announced that there would be an official list of private platforms. So, by the end of 2026 or 2027, every French business will have to select one of the 112 platforms and buy a subscription. It give the State more control, but for small businesses it means higher costs and complexity.

idoubtit··on Wave of (Open Street Map) Vandalism in South Korea
So, a handful of persons "believe that OpenStreetMap is a creation of Chinese communists" and are removing specific data from OpenStreetMap, and the OP explains why this is stupid but innocuous.

But that's not the first time that a community is tagged "Chinese communists" and attacked as such. Now imagine if some maga/alt-right/whatever leaders asked their followers to attack the "communist" OpenStreetMap by injecting a bit of false data everyday. Could OSM defend itself as easily?

idoubtit··on GitHub to Codeberg: my experience
> Codeberg is a fork of Gitea, itself a fork of Gogs.

Codeberg is a website powered by Forgejo which is a fork of Gitea.

> Both forks originated for "philosophical" reasons, not technical ones

Gitea forked because one developer was the only owner of Gogs' repository and refused to share maintaining rights. The fork was more "practical" than "philosophical".

Forgejo forked when a leading developer secretly created a company with the trademark of Gitea and its logo. The fork was to gain back control over the assets of the project (name/trademark, logo, etc.).

idoubtit··on PHP 8.5
Adding new functions and alternative syntax has a long-term cost for PHP and the projects that use the language. I don't see much value in the new features of PHP5 announced on https://www.php.net/releases/8.5/en.php

- URI extension: there was already the internal `parse_url()` which was imperfect, and alternative libraries that were RFC 3986 compliant. An official extension will bring speed, but now there will be 2 official ways to parse URLs.

- The pipe operator is a matter of taste. In the release notes, the new code is more verbose, because it defines anonymous functions. This alternative syntax means keeping a consistent code style will be harder.

- The update of "clone" replaces 2 lines of code in some cases. Unless I misunderstood, it's a very minor change.

- The #Discard/void will replace the similar feature from static analyzers.

- Closures in constants is one of the 2 features that bring more than an alternative syntax. It's one more little step toward a preprocessor. But I'm not thrilled about the future #attributes assigned with complex closures.

- cURL persistent handles are a real performance feature, because curl_init() is costly.

- array_first() is a minor syntax-sugar. In a project of 100k+ lines of PHP, I probably could use it twice or thrice. Was it worth a global function?

idoubtit··on PHP 8.5
Are the new features really readable? I have no idea what this code from the OP is meant for:

    #[SkipDiscovery(static function (Container $container): bool {
        return ! $container->get(Application::class) instanceof ConsoleApplication;
    })]
    final class BlogPostEventHandlers
    { /* … */ }
As a side note, even PHP's official wiki cannot highlight correctly the multiline attributes behind a "#". See https://wiki.php.net/rfc/closures_in_const_expr
idoubtit··on Nearly all UK drivers say headlights are too bright
A small correction: drivers from the EU do not need a UK license; the driving license from their own country is valid in the UK, even post-Brexit. And the exchange scheme only applies to residents of Great-Britain.

So those bloody foreigners that live in the United Kingdom and dare drive there are from Australia, Canada, Japan, Switzerland... Countries well-known for their dangerous drivers! /s

idoubtit··on Short Little Difficult Books
I share many of the author's delights. I would add another source of "short little difficult books": old books, written in an old form of your modern language.

My native tongue is French, so in my case it was Rabelais' "Gargantua" (~1500) and "La Chanson de Roland" (~1100). Both books require some motivation to get used to their respective languages. After a while, I could read almost fluently Rabelais' prose ; it was immensely funny, coarse and impudent. Roland was harder to grasp, I had to use a specialized dictionary, but it's a concise and epic tale, and I read some verses so many times I ended learning them by rote.

Even translated, some short books from a very different culture far in the past can be challenging. For instance "Eugene Onegin" or "Gilgamesh". As a counterpoint, "The art of war" is an easy read, though written 2300 years ago in a small kingdom of China.

A last comment: the author conflate books that are difficult because of a technicality in their writing, and those that are strange in their story. The translations of Abe Kobo or Kafka I've read had nothing difficult in their words, but the surrealist plots were very unsettling. In "Pedro Páramo" the reader feels lost in a harsh world and unsure of reality. Meanwhile, Perec's "La disparition" or Becket's "Molloy" are more about style tricks.

idoubtit··on Why use OpenBSD?
The post has many links to OpenBSD's man pages, FAQ and manual. But I thought it was quite unsatisfying, even common tasks are missing. Or at least I couldn't find them.

I had a test case in mind while reading the documentation: running a custom web service with Nginx as a reverse-proxy. In the documentation, I couldn't find anything about creating a service. Are we supposed to write a frontend script (in ksh) that accepts various arguments (ie start/reload/...)? And what about the logs of this wrapper? And if I want an auto-restart when my program crashes, I have to find another tool that will wrap and monitor the process? I've done all this tedious work in Linux long ago, and I'm not willing to do it again.

If the question was "Why OpenBSD instead of Linux", I don't think documentation is a good argument. In fact, the only strong response I've read is "to try something a bit different and more niche".

← PreviousPage 3 of 20Next →