mananaysiempre

Joined 5 years ago

Karma
9,705
Submissions
3,141
Member since
May 30
all code in comments is CC0-1.0 OR 0BSD unless specified otherwise
View on Hacker News

Recent submissions

Comment · 4 days ago
Live by the NDA, die (at least wrt education/mindshare) by the NDA. Seems fair.
Comment · 4 days ago
Unladen Swallow died for lack of upstream interest.

PyPy lacks upstream interest, looked like it could have a shot after many years of development but recently NumPy removed support because they just couldn’t fathom how a non-dead project could be a couple of versions behind CPython.

Now the new JIT is dying because of what seems to be a lack of upstream interest. (The things TFA describes as being required are not unreasonable, but not realistic for a necessarily speculative long-running project without wild amounts of committed funding.)

I’m not optimistic.

Comment · 5 days ago
Comment · 20 days ago
Alternatively, let people cancel easily everywhere. If you think it’s worth the extra revenue to geofence easy cancellations, then—well, you do you, but you are making a business judgment that the additional development cost is justified. This is different from VAT/sales tax etc., where it is in fact impossible to comply everywhere without discriminating by jurisdiction.
Comment · 1 month ago
No need for image gen to get this kind of problem; to me that skin look just reads as really aggressive denoising. And there is no escaping physics, a tiny high-res sensor will need a whole lot of denoising for this really challenging scene (meh lighting, strong backlight; the dark, shiny skin is probably also an issue but I’ve no experience there).

The only surprising part is how good the results are: there is no leftover color noise that I can see, the window doesn’t have any color fringing, the high-frequency detail of the table setting and the drapes hasn’t been destroyed, the small backlit hairs on the sides of the face of the girl in front haven’t been smeared over oil-painting style. It’s strange how one eyebrow (in the back) got completely obliterated while the other looks completely fine, and it’s even stranger how the texture of the collar (in front) is basically perfect on the left where it’s unobstructed but basically destroyed on the right where some hair escaping from the braids was in front of it, so perhaps there is some image-gen-adjacent stuff going on here.

The skin looks bad, don’t get me wrong. But the degree of badness seems fair for the situation, and as a whole the result has no business looking as good as it does to my 2016-camera-trained eye.

(Also, don’t photograph people with a wide-angle lens from up close, it’s always freaky at best—like here—and ugly at worst. Just don’t.)

Comment · 1 month ago
It’s partly by design—the word senate shares its root with the word senex “old man” (whence also senile, etc.) because it’s literally a council of elders. That’s what the Roman one was and what the US constitution (among others) was attempting to emulate.

Partly, though, it’s a bit more interesting than that[1]. Wikipedia has an interesting chart[2] titled “Lifespan of each United States president”, which shows that in modern-ish times, the generation from which US presidents come is sticky: you get three presidents born ca. 1855, then one born ca. 1865, two ca. 1875, three from the late 1880s, four(!) from the 1910s (starting with “young” JFK), Carter/Reagan/Bush Sr. oscillate between the 1910s and 1920s, then again four from the 1940s (starting with “young” Clinton) only interrupted by “young” Obama (born 1961). (I could start my recounting earlier and it would still work.) Trump and Biden appear abnormal if you look at their ages, but if you look at their birth years instead they are simply a backslide, after Obama, to the generation of Clinton and Bush Jr.

What does appear true is that generations hold onto their power for longer and longer before the snap transition to the next eligible generation happens. Longer life expectancy due to better medical care seems like a perfectly satisfactory explanation for that.

[1] I first read about this idea a few years ago and I don’t remember where, so I’ll need to attempt my own explanation. Sorry.

[2] https://en.wikipedia.org/wiki/List_of_presidents_of_the_Unit...

Comment · 1 month ago
An ASCII-friendly way to spell ℞, an R with a crossed right leg, shorthand for the Latin singular imperative recipe! “take (the following)!”, which is the conventional start of a prescription; by extension, something necessitating a prescription to buy.
Comment · 1 month ago
Depending on the effort you’re willing to put in, you don’t have to: gzip has a specific provision for concatenated files and tar is a flat array of (file) records each followed by file data, terminated by a sentinel record, so what you need to do is to trim the sentinel off the first tar.gz and then append the second one as is. I don’t know of a ready-made tool that would be able to chop off a gzip file’s last 512 uncompressed bytes without recompressing it in full, but it ought to be possible.
Comment · 2 months ago
Comment · 2 months ago
None of the sequelae of that have really improved since then, at least as far as the first world is concerned. The foundations of universal surveillance were being laid down, but it wasn’t yet feasible. Police (transport security, border patrol, potato, pot-ah-to) ruffling through your belongings had not yet been normalized. You could transact with cash. People largely still sort of believed that talking to your political opponents would lead to better outcomes than making them comply under threat of government violence or unemployment.

(Plenty of things sucked, don’t get me wrong, it’s just that a lot of the fallout from the “war on terror” was still in the upper atmosphere.)

Comment · 2 months ago
Comment · 2 months ago
Comment · 2 months ago
Muratori et al. like comparing speeds to (single-core) memory bandwidth (dozens of GB/s) and that’s a reasonable upper bound, but generally it seems to me that, unless you operate on huge elements and don’t do very much with them, you won’t get within an order of magnitude of it. Even if you think about RAM exclusively, the headline numbers are for sequential reads and things will slow down dramatically if you actually perform random accesses (IIRC, DDR5 is about as slow as DDR4 there in terms of physical time units, so much slower in terms of bus cycles). Meanwhile, in a real situation, you’re going to be bound by compute long before that.

And I think you’re being unfair labelling my couple of examples “some arbitrary algorithm[s]”: my choice was indeed arbitrary, but it’s also immaterial. The general setup would be that you’re processing elements in a loop and that your iterations are serialized (as they usually more or less are before you get around to optimization). A loop body of even three lines of C is likely to have a latency of 5–10 cycles or so, and you’re running on a core clocked somewhere from 5 GHz (desktop) to half that (server). So the best you should expect is ~500 MB/s if your elements are bytes, ~2 GB/s if they’re 32-bit integers, etc. For very simple tasks (that are also somehow not susceptible to vectorization), it is possible to not lose this order of magnitude and get down to almost 1 cycle/element in scalar code, but that requires heroic effort[1].

[1] https://github.com/powturbo/Turbo-Histogram

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton