HNHacker News
TopNewBestAskShowJobs

jerf

94,454 karma · joined October 13, 2008

http://www.jerf.org/iri , though infrequently updated

jerf@jerf.org , though be aware that I only really check email every few days now.

Permission for comment republication in HN collections granted, though please do drop a line to jerf@jerf.org so I know. :)

my public key: https://keybase.io/jerf; my proof: https://keybase.io/jerf/sigs/vL9FeVDSGtiDMBmXC4f_rCikI0n4jNfB-1PsNgUN-Is

submissionscomments
jerf··on Function Arguments Are Not Function Colors
Your configuration structs are not "everything". You probably have dozens of things in them. You have hundreds to thousands of different parameters to different functions. By the time your configuration structs have hundreds of things in them you have thousands to tens of thousands of parameters to functions. Only a fairly small fraction of things make it all the way up to main.

This is exactly what I was talking about with this being a "cognitively available" operation. You notice when you have to propagate something all the way up to the top precisely because it is not something you do very often and it stands out as an exception when you do. If you are literally propagating everything up to main, all the time, every time you change any function anywhere in your program, you are doing something very, very wrong.

jerf··on Function Arguments Are Not Function Colors
That has no propagation up the stack at all. Whether a child function does or does not use channels has no effect on the parent.
jerf··on Function Arguments Are Not Function Colors
I think this is a case where you want to avoid architecture astronautics and deal with languages as they are presented. Yes, in the end it's all continuation passing, or depending on the cut of your jib, it's all just assembler in the end, but meanwhile, down in the trenches, there are real, practical differences in color that change how you program in those languages, and that's the topic color addresses.
jerf··on Function Arguments Are Not Function Colors
I don't think there's a way to color functions in Go. That's not terribly special, several languages have no colors in them.
jerf··on Working on Economics with Fable 5
It's to compensate for the effect where they are still a bit of a yes man. Way, way better than they were several models ago where they were pathological about it, but still a bit biased in the direction of explaining why you're right. I know I'm not right. I don't want a neutral summary, I want an interesting discussion of what's wrong with my idea and why.

If I were operating in a field in which I was already an expert, or in a field that is more strongly opinion-based anyhow (e.g., philosophy... it isn't particularly clear that being an "expert" in philosophy has any strong impact on your chances of being "right", for whatever that even means in that field), I might ask for something more neutral, but I know I'm not.

jerf··on Simple Is Not Small
I see at least:

"Few tokens" - perhaps the most literal simplicity, literally, it doesn't use many tokens to do the job. But as the article points out, that doesn't necessarily fit with...

"Easy to reuse" - This is that simplicity that functional programming aspires to, where you craft some precise abstraction that somehow captures something like "monad". Haskell is full of this sort of simplicity, oozing out of every pore, but people generally think of it as a very complex and hard langauge, contrasting...

"Easy to understand" - As in, not cognitively complex. It is amazing how quickly things that I would otherwise describe as very simple still blow out our little minds. Consider the first time you saw quicksort... or even how it feels now. It's not a lot of tokens, but it's twisty and recursive and especially if you're not mathematically trained and in practice it's easy to call it more "complicated" than a CRUD form that takes in and validates 10 parameters in a straightforward way, even though in terms of what is actually happening the CRUD form may be doing vastly more than the little quicksort algorithm. It just isn't being twisty, recursive, and subtle in how it does it.

And I'm just filling out the first three that come to mind. Note these are not always in conflict by any means... but they certainly aren't always in harmony with each other either.

(One might argue "easy to reuse" is more about the complexity of the code doing the reusing, but I feel like this is definitely something people mean when they talk about the simplicity of code.)

jerf··on Working on Economics with Fable 5
So, like, legit pro AI tip, at least for 3rd-quarter 2026... whenever you're working on something interesting, ask the AI about prior art, or to do a scan of the scientific literature. Whether it's economics, health, or something algorithmic at work, at least the AIs I've used (as we've not all spent all the time with all the models) are still generally inclined to give you exactly what you ask for. They may do a good job at giving you what you asked for, but they won't generally do a whole lot more. Ask them to go looking around and it's like giving them a 30 point IQ boost sometimes. They all operate way better when you fill the context window with relevant information then when you're operating just in the latent space of their training, but they only rarely seek it out without being prompted on their own.

On my near-term todo list is to explore a particular crank physics theory of my own with AI... but not as a way to validate it, I know it's a crank theory that is far too simple to have been missed by pros in the relevant fields, but as a window into the literature and figure out what's wrong with it and thereby learn something. I will be framing it to the AI in pretty much precisely that way: Go get literature and reputable sources and talk through why this is already well known, probably well known to be a bad and wrong idea.

I still feel like not enough people are talking about this here on HN... AI has opened the scientific literature like never before. It's like being able to interrogate it and interview it as if it was a person, rather than just searching papers, for keywords you don't know, for lines of thought you've never heard of, in a sub-sub-sub-field you didn't even know existed, and failing before you even knew what it is you wanted. I've read more papers in the past 6 months than the past 10 years. Whatever opportunity you have to try this out, be it some question bothering you for the last 10 years, or a crank theory of your own to prove out against the literature, the foundation of some vibe-coded program informed by the literature rather than just vibing on the neural weights directly, or just asking something random about the studied effects of beavers on local ecosystems, you gotta try this. Prompt it specifically for "reputable sources and scientific papers", that helps a lot. It does not make you suddenly an expert in the field, but it does let you poke through the pile of literature far, far more effectively than you could hope to before.

And then don't forget to ask it why your summary is wrong or incomplete. Even if it doesn't convince you, you'll learn yet more.

jerf··on Simple Is Not Small
Honestly, having watched people argue about what simple is for about the last 10 years, I've pretty much settled on it not being a well-defined term. We know complex when we see it for sure, at least when it is present in quantity, but simplicity is not just the absense of complexity. There's at least three concepts we're all trying to stuff into the same word, and they are not only not "orthogonal" they are often in conflict with each other. I don't even think it can be rehabilitated, it can only really be abandoned, to clear the way to trying to characterize the multiple concepts we're trying to stuff into this one word.

It is especially dangerous when something is "good" and people try to appropriate the term to appropriate the goodness of the term, as if goodness flows from a term to the thing it is attached to rather than the other way around. "Simple" is good so my good thing must be "simple" to be "good". But it doesn't. Simple can even be bad, in the wrong place or in the wrong sort of "simple" for a given job.

jerf··on Hackers had a live feed of every ID verification company scanned for over a year
More poking around suggests it is an Android 14 issue.
jerf··on Cloud in a Bottle: making self-hosting accessible to everyone
"We (Imbue, the company I work for) also offer a managed version, which I think is really important to making this widely accessible - and it gives us a straightforward business model to support the project."

Looking at your hosted page, I see no reference to backups. I see in your docs reference to backup, but you should definitely offer some sort of turnkey, appropriately-marked-up backup solution. Configuration difficulty is what kills self-hosting on the front end, updates make it hard over time, but when it all dies and then I have no backup is when I give up.

I can't find any reference to disk size limits anywhere. Can I host Immich on this? Can I host my media server? What will it cost? Surely not $10/month for my media collection. I'm not a hoarder and mostly have stuff ripped from my personally-owned media, which limits the size, and you're still not hosting that for $10/month. I see you have Jellyfin in the set of apps but I don't know what it will cost. The CPU & RAM limits I understand from the deploy page.

Oh, and I'm specifically referring to your hosted service here.

jerf··on How Swiss tables work in Go built-in map
It's the "map" builtin. Go has a scripting-language-esque attitude of "you can build most things with arrays and hash tables". It doesn't completely preclude getting deeper but that's the general starting point.
jerf··on Hackers Had a Live Feed of Every ID Verification Company Scanned for over a Year
My passkeys are in my self-hosted Vaultwarden. If I can't put them there, I don't use them.

It's not all sunshine and roses, though. Despite having Bitwarden set as the only passkey provider in my Android setup, the phone persistently only offers me Google. Which is empty, because as I said, I won't use one tied to things I can't control. Works great on desktops, though.

Passkeys can theoretically require you to be on hardware, I haven't found anything yet that requires that.

jerf··on Claude Fable 5.1 made me a nice animated pelican
Thank you for the clarification. I'm just impressed by the whole thing in general.
jerf··on Claude Fable 5.1 made me a nice animated pelican
And it's correct detail. Earlier models had things like detached hats, or lighthouses floating above or below the level they should be at, etc. Everything is where it should be, the fish is clearly in the basket and not clipping through it, the animation has cartoon-correct parallax which is fairly impressive. By "cartoon-correct" I mean that if that was a real photo with real physics, that would be way too much motion for the boat and clouds, but for a cartoon, that is completely acceptable.
jerf··on Evidence of Fraud in an Influential Study About Procrastination
Later correct research can't build on previous wrong results. Later incorrect research most assuredly can build on previous wrong results essentially indefinitely.

I'm not constructing a full differential equation model for an HN comment, but I'm pretty sure any realistic model of likelihood of detection of the falseness of past research and other similar parameters would produce a surprisingly sharp cutoff when looked at over time, above which the science does tend to self-correct and below which it disintegrates into endlessly recursive garbage drowning out any real science being produced. And I'm pretty sure a number of fields are below that threshold right now. That doesn't mean the problem is permanent... the parameters can be changed over time, too, but the problem does get worse and harder to fix if allowed to accrue too much.

jerf··on Since it was stripped of planetary status, Pluto’s defenders have been fighting
Or alternatively, how would any conceivable definition not be equally "psuedo-scientific"? There isn't going to be a bright, shining line. Our own Solar System is complicated enough and if we could see out into the cosmos with equal detail the lines would get even fuzzier. Judgment calls are inevitable.
jerf··on Since it was stripped of planetary status, Pluto’s defenders have been fighting
"Scientists really should have made up their own categories instead of using our words."

If they could do it all over again probably most of them would. The sciences all grew organically too. Some of these things like "berries" aren't even just the product of one reclassification, they're the product of several over the course of decades or centuries, which is how they get so common-sense silly over time.

jerf··on Since it was stripped of planetary status, Pluto’s defenders have been fighting
You know, this is really just a fantastic opportunity to realize the phenomenal psychological power of "headcanon". Who cares if Pluto is or is not tagged with the word "planet" by some organization you know effectively nothing about, have no control over, has no control over you, and couldn't so much as move a pebble on the planetary body in question any time in the next 20 years, if not more?

Have whatever emotional relationship you like with "Pluto" and don't wait around for others to validate it. It's fine. Nobody can stop you. I'm a bit fond of Ceres myself. Nobody can stop me. Nobody needs to approve it. Take control. Write your own headcanon.

jerf··on My experience has nuance, yours is a data point
To me, the "best of the best" is its own thing. I do not watch romance movies in general, but I've had good experiences watching what people call the best of the best of the genre. Similarly for a lot of genres, media types, etc. Even just the "best of the best" of "cute animal video" can be fun every once in a while.

But I have to keep a heavy hand on the YouTube watch history and remove many things that I may have enjoyed as an exception, but don't want to see endlessly offered up forever. Some of the strange attractors in the algorithm are very, very powerful, like the aforementioned "cute animal videos". Another problem I hit is situations like, I watched the video because, say, a parrot was doing a very good impression of Captain Picard (just making this up, sorry) which was given due to general sci fi interest, but the algorithm sees "a ha! another hapless human who likes cute animal videos! Après cette vidéo, le déluge!"

At least YouTube has that knob, and does generally seem to honor it. The algorithms that don't are very hard to keep from degenerating into the lowest common denominator, because the slightest hint that you like some extremely popular thing or have an interest in a very lucrative ad keyword almost immediately swamps my actual interests.

jerf··on Notes on Private Trackers
It isn't hard to work out that it's impossible for a forum to maintain a true 1:1 ratio based solely on reported byte counts. First, you have the obvious bootstrapping problem, which is that on day 1, no matter what is uploaded, nobody has any right to download anything because everyone has only uploaded zero bytes.

So you may think "ah, I'll start with an allowance". Just count everyone as having uploaded, let's say for concreteness, 1GB. The next problem is that each file transfer means moving that around like it's money; 1000 bytes downloaded for me is exactly 1000 bytes uploaded by you. But then, again for concreteness, let's say someone puts up a popular torrent and everybody downloads their 1GB directly from this guy. (Imagine they do it in sequence and then don't seed themselves or whatever.) The person with the popular torrent now has all the credit in the system. Then they walk away. Everyone who leaves the system and never comes back, or is just generally unavailable, is taking credit out of the system with them. This is the ongoing problem with the system.

So you must have some sort of mechanism for acquiring "ratio" other than actually uploading something. Fortunately, simply rewarding people for seeding is pretty good. It incentivizes people to seed things that otherwise would be left behind. Even better is to give even more reward for things others aren't seeding. This tends to turn your tracker into a persistent library, with even old things still available, rather than a competition to beat everyone to the popular torrents so that we can download things before everyone else so hopefully we can upload more than we downloaded. I'm sure this isn't perfect but it's a lot better than a rigid ratio system. You just have to deal with people who think it's not "fair" to give out ratio for just hosting things that nobody downloads.

jerf··on Inception-style curved map for turn-by-turn directions
I remember for at least a while people would complain about how GPS navigation ruined their sense of the local area. Probably stopped hearing about it because people have just surrendered to the apps, but I think part of the reason is also that by default they were just zoomed in way too close. If you forced them back out a ways, I was actually learning a lot about my local area. Like, there's all these subdivisions around, you know, and from the outside who knows what connects to what, I'm not going to just duck in to a subdivision and physically navigate the streets to see how they're all connected, but driving around with the navigation made it much more clear... when it was zoomed out somewhat.
jerf··on GUIs should be fully keyboard-driven
"What does it mean though for a GUI to be keyboard-driven?"

For literally decades after they were state of the art, people who used old-school mainframe TUIs would still swear by them.

I think the key difference is that they would buffer inputs. You could be on the "Receipt" screen, and know that if you needed to enter the code for some rebate receipt or something, you could hit F6 - F2 - down - down - down - {start typing code}, and even if the UI took multiple seconds to actually get to the point that the code was being entered, the input would be kept.

Normal GUIs have discarded this for fairly good reasons. Especially when it comes to queuing mouse clicks. If you get down to the nitty-gritty of what it means to queue a "mouse click" it get very conceptually complicated. But you could create a GUI toolkit that still had the same idea integrated into it for a keyboard interface, if you have well-defined points where you are and are not accepting keyboard input.

I would submit that "keyboard-driven UI that is as intuitive as clicking with a mouse" is actually the wrong direction to cut on. You need to beat the conventional mouse GUI completely in some other dimension, one where it can't even compete. This is the only one I know of that has historical precedent.

The downside is that on a desktop I'm pretty sure you're looking at a completely new widget toolkit. Trying to force this on the current ones is going to be hard and could even be impossible.

If I were going to create a new web frontend framework, this is what I'd focus on to have an actual new feature that isn't just a respelling of the current set of features. And I can't guarantee that it won't also be missing something crucial, though, I think everything you need is actually there. You could even have modern nicities like, store the entire GUI field state transition diagram statically at the beginning and as the user types ahead of the GUI's current state, show them a rendered view of where they are going, e.g., the key sequence I showed above could be "[Rebates] -> [Rebate Receipt] -> [Name Field] -> [Address 1 Field] -> [Address 2 Field] -> [Rebate Code Field] -> [Entering {'A8F2-132A-9283'}]", live updating as it goes so if the user can just bang that out even while the first screen hasn't loaded they can even be sensibly editing the text input they're going to put in.

Combined with something as simple as making sure everything always has a keyboard shortcut in a defined format, which is conspicuously displayed every time you change something, e.g., every time the user clicks the Rebate Code Field you can also display something like "Ctrl-F R" or something so they also learn how to drive the screen with a keyboard and you would, if nothing else, have something different than what's out there today.

Anyone who wants to, steal this idea. I'm not going to do anything with it. I don't see this as something you want in every app necessarily, but people who spend hours a day in the same app for whatever reason would be confused for a week, then I bet you couldn't pry it from them with a crowbar.

jerf··on AI Is a Harsh Mistress
I still really enjoy the science fiction of that age. It's fun to read stories set in a universe where computers basically never came into existence. It's really hard for anyone to write stories like that now, so, kind of like analogy to "low-background steel" [1] that has been used recently of the pre-AI world, there's a way in which no more of this sort of story can be produced anymore, or at least, very little. Fortunately there's already more than you can read.

But it is also funny to read about "robots" in a world where computers are still blinking lights and punchcards, if they exist at all. Some of Asimov's work took it to the logical, yet still absurd, conclusion - computers are still blinking lights and punchcards but hyperadvanced and very massive robotic positronic brains are built to run the entire world at once... basically the robots become so advanced that their brains are repurposed as computers. Very amusing in its own way.

Fallout is probably the biggest example of this I can think of. Complete with the robots that are absurdly more capable than the computer hardware seems to be, and the Yes Man who at least aspires to run his part of the world.

[1]: https://en.wikipedia.org/wiki/Low-background_steel

jerf··on A curmudgeon tries a language server
I haven't used Lisp but I've used another environment that was heavily image based (Frontier). The runtime ability to modify things sounds super neat but in my opinion it leads to disaster. It is not a weakness that we have a lot of tech built on a concrete specification of the initial state of the system and very careful control over where data and the modified versions of that data live. It is hard-won experience that it is a good way to build robust systems. "Reboot & pray" isn't just an accident, it's a legitimately good way to set up a system.

Some of you may object to the idea that we are super careful with data and modifications to it. I know where you are coming from... however, compared to an image-based system, the modern world is in fact super careful! To the extent that you think we are still not careful enough, that leads you even farther from wanting an image-based system.

If you conceive of a system as the full state space of everywhere it can go, the vast, vast, vast majority of systems have pathological places in it. It is very hard to get them all out. It is advantageous to have a button that says "restart this system from the initial state", and to push it often to make sure it continues to work, even if you're not thinking of it this way. By contrast, image-based systems have the tendency to either 1. get into a bad place in the state space and then the user has no way back out or 2. accidentally create a scenario in which there is no way to bring the system up from scratch anymore, which includes things like "giving the system to someone else to start their own work up".

Sure, it's a good idea to minimize the need to hit the reset button. But you don't really want to give it up entirely.

There are a variety of ways of improving the image-based system. Most, perhaps all of the practical ones, involve basically removing the image-based nature of it and moving closer to the systems we all work with today.

jerf··on Tracking Costco gas prices
I don't know if this is how Costco itself thinks of it, but you can get to a pretty decent understanding of their financials by assuming they sell everything at cost and pocket the membership fees as profit. Their actual profits tend to be about 50% higher than that implies, but given the size of the rest of the business that means the membership fees are only about 2% of the revenue overall it's not a bad approximation.

They can twiddle with dropping a bit of price here and raising it somewhere else and still have the same ratio of cost.

Of course you can still think of things in terms of the cost per item versus the profit per item, but the stability of that ratio over many years makes me wonder if maybe Costco thinks of the membership fees that way.

jerf··on Dolly Parton has died
I still carry the rather 20th century idea that a performer of almost any kind also ought to have some sort of other talent in addition to their main one. The versatility of that sort of thing is one of the things that should separate a pro from the rest. I generally count "professional level musician" on more than one instrument as fulfilling that contract... perhaps one of the easier of the options, but it still carries that versatility advantage. Another example that I'm quite fond of is famous comedian Steve Martin performing Dueling Banjos with Kermit the Frog. The combo of two professional entertainers playing off of each other combined with the music skills creates the opportunity for a creative routine.
jerf··on When str.lower() is a security vulnerability in Python
I wouldn't call this a "vulnerability", I'd call it "a thing that can potentially turn into a vulnerability, more often it can turn into an obscure bug, and most often it is just a quirk".

In particular, if my corporate security team started just mass-flagging all instances of "str.lower" as "security bugs" I would be having a talk with their manager about their threshold for what constitutes a "security bug". Their job is arguably to be more sensitive to that than most engineers, but not that sensitive. It would be like flagging all instances of string concatenation as a vulnerability... and I say that as the guy who would like to eliminate simple string concatenation from programming languages, already a very extreme position on that operation, because of it being at the root cause of so many vulnerabilities... but simply flagging every use as a "vulnerability" is way too sensitive. A demonstration of the ability to use it to bypass some sort of security barrier is necessary to call any specific instance a "vulnerability".

And string concatenation has caused orders of magnitude more actual, verified vulnerabilities than incorrect case folding has.

jerf··on OpenAI Jalapeño: Better than Nvidia Blackwell
I know what you're saying, but modulo things like losing track of what year it is as time passes by, a current frontier model is going to continue to be useful for many tasks for many years, even moreso if it's 5-10x faster due to the chip architecture.

It's not that it would be the best forever, it's that it would be useful for plenty long enough to be worthwhile, even if there was better stuff available. In exactly the same way that this computer I'm typing this message on is not the latest and hottest cutting edge stuff. A 7 year old CPU, 7 year old Intel integrated graphics, an older NVMe disk, a mere 32GB of RAM... ok, that's one spec that's still pretty modern although it is slower RAM... but it's still plenty fast enough to comment on HN, even these seven years after it was cutting edge.

jerf··on My Friend Aaron
INT 18 WIS 3 is no way to go through life, son.

(Ref: https://www.quotes.net/mquote/3799 https://www.youtube.com/watch?v=mkoPq5AOCOA )

jerf··on How much of HN is AI?
Heh. Indeed.
← PreviousPage 4 of 34Next →