HNHacker News
TopNewBestAskShowJobs

thundergolfer

3,626 karma · joined July 18, 2017

https://github.com/thundergolfer/ https://linktr.ee/jonathonbelotti

Building modal.com.

Previously data & ML platform @ Canva; also Zendesk and Atlassian.

NYC, USA.

submissionscomments
thundergolfer··on The suck is why we're here
> The more I think about it, the happier I am that AI is transforming the world of writing. In a way, I think it’ll make it even easier to stand out—because the more people take shortcuts, the less quality will remain for readers to flock to, even if the overall quantity of options is much larger.

It's easier than ever to be a p99.999% oil painter, but compared with p99.999% film directors basically no one cares at all. Because painting is not in high demand, and film still is, for now.

If the demand for your certain kind of writing vastly diminishes, it is your detriment. AI's supply effect is changing the demand.

George Eliot already wrote a p99.99999% novel, Middlemarch. It is only thanks to massive population growth that the number of readers of her novel has increased or remained steady. As a proportion of the population, Middlemarch has no readership, and is a side show of a side show. It has almost completely lost its once hallowed place in society and culture.

thundergolfer··on IPv6 just turned 30 and still hasn't taken over the world
You and me both, IPv6.
thundergolfer··on The Most Popular Blogs of Hacker News in 2025
Is there a way to make data cleaning contributions?
thundergolfer··on The Most Popular Blogs of Hacker News in 2025
Cool dataset. I did the same thing a few days ago[1] but somehow had the top 3 getting ~1000 more points than this data.

There's some data issues in the full dataset, expectedly. My blog got around 200 points this year, which should be enough to hit #2077, but the blog does not appear at all.

Also baseten.co is not a personal blog.

1. https://x.com/jonobelotti_IO/status/2005737476069933272?s=20

thundergolfer··on Python numbers every programmer should know
I meant it as an order-of-magnitude notation, so means more like 10,000-90,000. Eg. calling the function 3,000 times is OK, but 30,000 is too much. Odd notation, yes, but I've picked it up somewhere along the way.
thundergolfer··on Python numbers every programmer should know
A lot of people here are commenting that if you have to care about specific latency numbers in Python you should just use another language.

I disagree. A lot of important and large codebases were grown and maintained in Python (Instagram, Dropbox, OpenAI) and it's damn useful to know how to reason your way out of a Python performance problem when you inevitably hit one without dropping out into another language, which is going to be far more complex.

Python is a very useful tool, and knowing these numbers just makes you better at using the tool. The author is a Python Software Foundation Fellow. They're great at using the tool.

In the common case, a performance problem in Python is not the result of hitting the limit of the language but the result of sloppy un-performant code, for example unnecessarily calling a function O(10_000) times in a hot loop.

I wrote up a more focused "Python latency numbers you should know" as a quiz here https://thundergolfer.com/computers-are-fast

thundergolfer··on Love your customers
I dunno, a few hundred folks?
thundergolfer··on 2025 Letter
1. Elon is not funny. He’s deeply unfunny. 2. “Tend to” is the key bit you’re missing. It “tends to” be true that titans speak in those registers, even if it is true that Elon, a titan, a does not.
thundergolfer··on Top personal blogs on Hacker News in 2025, by points
This is the script which calculates the ranking, using Algolia's HN API: https://gist.github.com/thundergolfer/55a0e221d0babcfc1db9bc...
thundergolfer··on Top personal blogs on Hacker News in 2025, by points
After his first #1 HN post on Nov 11, 2024, Sean Goedecke went on a ridiculous posting run in 2025. Over 130 published and 2nd only to Simon Willison.

1. http://simonwillison.net — 21,015 points

2. http://seangoedecke.com — 11,243 points

3. http://jeffgeerling.com — 11,106 points

4. http://neal.fun — 8,998 points (374.92 point per post!)

thundergolfer··on Functional programming and reliability: ADTs, safety, critical infrastructure
The crux is in the "never have been possible" bit. In complex systems, it is impossible to eliminate these potential states with functional programming or any other technique, unsafe states are always potentialities that must be actively controlled.

Another way of casting it is like this. The goal may be:

1. Eliminate possibility code can enter invalid state 2. Control parameters of the system so that it remains in a safe condition

Those are very different goals.

thundergolfer··on Functional programming and reliability: ADTs, safety, critical infrastructure
All the line items are decent things, worth doing, but the claim about how much following the line items would improve reliability is super exaggerated.

> [Most production incidents] are due to the code entering a state that should never have been possible.

I have never seen evidence that this is even remotely true, and I've been looking at software reliability research in the last few months.

Instead, it is more true that most production incidents are due to the system entering into one of thousands of unsafe states which were possible and latent in production potentially for years. In a sufficiently complex system—all interesting and important software projects—functional programming is not strong enough a tool to prevent even a sliver of potential accidents.

> Arguments that these degraded conditions should have been recognized before the overt accident are usually predicated on naïve notions of system performance. System operations are dynamic, with components (organizational, human, technical) failing and being replaced continuously. — https://how.complexsystems.fail/

thundergolfer··on How uv got so fast
This optimization hits serverless Python the worst. At Modal we ensure users of uv are setting UV_COMPILE_BYTECODE to avoid the cold start penalty. For large projects .pyc compilation can take hundreds of milliseconds.
thundergolfer··on Paperbacks and TikTok
McLuhan is anything but a cynic. It sounds like you haven’t read him.
thundergolfer··on Paperbacks and TikTok
> There's really nothing inherently wrong about the format.

"Our conventional response to all media, namely that it is how they are used that counts, is the numb stance of the technological idiot. For the 'content' of a medium is like the juicy piece of meat carried by the burglar to distract the watchdog of the mind...The effects of technology do not occur at the level of opinions or concepts, but alter sense ratios or patterns of perception steadily and without any resistance. The serious artist is the only person able to encounter technology with impunity, just because he is an expert aware of the changes in sense perception." — Marshal McLuhan, Understanding Media

thundergolfer··on Paperbacks and TikTok
The crux of the post is this:

> A closer look reveals that by vastly increasing the market for the published word, paperbacks also vastly increased the opportunities to make a living writing serious books

We can grant that this is true and yet it doesn't seem to provide encouragement. The equivalent today would be slop TikTok demand vastly increasing the opportunity for "serious" TikToks, whatever those may be.

A 'serious TikTok' is not a film. To think a film and a TikTok are alike is to make an elementary mistake in media analysis.

I can buy that we're going to get an explosion in fantastic short-form content. I'd say that the _Almost Friday TV_ group, who started a few years ago, are an example.

But this remains terrible news for predecessor mediums, who will suffer diminished demand and a general decline in the competency of audiences to enjoy those mediums ("great writers need great readers").

thundergolfer··on Ask HN: What are the best engineering blogs with real-world depth?
- https://modal.com/blog/vprox - https://modal.com/blog/host-overhead-inference-efficiency - https://modal.com/blog/resource-solver
thundergolfer··on Programmers and software developers lost the plot on naming their tools
My old company Canva, was pretty good about this and I'm bringing that to the culture at my current place.

Krazam has excellently parodied this unserious naming indulgence of programmers[1]. "See, Bingo knows everyone's name-O. So we get the user ID from there." Racoon, Wingman, EKS (Entropy Chaos Service), RGS, Barbie Doll, Ringo-2.

1. https://youtu.be/y8OnoxKotPQ?si=QkI-TPStI9I4RtAB&t=33

thundergolfer··on Size of Life
Pretty glad the 9 foot long Arthopleura centipede went extinct 300 million years ago. No one wants to deal with that thing.
thundergolfer··on Using LLMs at Oxide
Too much has been written about em-dashes and LLMs, but I'd highly recommend If it cites em dashes as proof, it came from a tool from Scott Smitelli if you haven't read it.

It's a brilliant skewering of the 'em dash means LLM' heuristic as a broken trick.

1. https://www.scottsmitelli.com/articles/em-dash-tool/

thundergolfer··on Using LLMs at Oxide
A measured, comprehensive, and sensible take. Not surprising from Bryan. This was a nice line:

> it’s just embarrassing — it’s as if the writer is walking around with their intellectual fly open.

I think Oxide didn't include this in the RFD because they exclusively hire senior engineers, but in an organization that contains junior engineers I'd add something specific to help junior engineers understand how they should approach LLM use.

Bryan has 30+ years of challenging software (and now hardware) engineering experience. He memorably said that he's worked on and completed a "hard program" (an OS), which he defines as a program you doubt you can actually get working.

The way Bryan approaches an LLM is super different to how a 2025 junior engineer does so. That junior engineer possibly hasn't programmed without the tantalizing, even desperately tempting option to be assisted by an LLM.

thundergolfer··on I ignore the spotlight as a staff engineer
Did you read the full post? The author addressed these points at the end. They’re not naive.
thundergolfer··on We're losing our voice to LLMs
Ironically this post is written in a pretty bland, 'blogging 101' style that isn't enjoyable to read and serves just to preach a simple, consensus idea to the choir.

These kinds of posts regularly hit the top 10 on HN, and every time I see one I wonder: "Ok, will this one be just another staid reiteration of an obvious point?"

thundergolfer··on Building the largest known Kubernetes cluster
No, as in Lambda itself uses FUSE as an implementation detail of their container filesystem.
thundergolfer··on Building the largest known Kubernetes cluster
AWS Lambda uses FUSE and that’s one of the largest prod systems in the world.
thundergolfer··on We stopped roadmap work for a week and fixed bugs
This is the 'Zero Defects'[1] mode of development. A Microsoft department adopted it in 1989 after their product quality dropped. (Balmer is cc'd on the memo.)

1. https://sriramk.com/memos/zerodef.pdf

thundergolfer··on Cloudflare outage on November 18, 2025 post mortem
Fair. I agree that saying "it's the unwrap" and calling it a day is wrong. Recently actually we've done an exercise on our Worker which is "assume the worst kind of panic happens. make the Worker be ok with it".

But I do feel strongly that the expect pattern is a highly useful control and that naked unwraps almost always indicate a failure to reason about the reliability of a change. An unwrap in their core proxy system indicates a problem in their change management process (review, linting, whatever).

thundergolfer··on Cloudflare outage on November 18, 2025 post mortem
Fly writes a lot of Rust, do you allow `unwrap()` in your production environment? At Modal we only allow `expect("...")` and the message should follow the recommended message style[1].

I'm pretty surprised that Cloudflare let an unwrap into prod that caused their worst outage in 6 years.

1. https://doc.rust-lang.org/std/option/enum.Option.html#recomm...

thundergolfer··on My stages of learning to be a socially normal person
The numbers represent progressive stages of growth away from socially abnormal behavior. Numbers 1 and 2 represent the author's abnormal behavior. Numbers 5-6 are their later stages, where they've achieved competency in social normally behavior.
thundergolfer··on Replicate is joining Cloudflare
My perception (engineer at modal.com) is that Replicate lost out to Fal.ai more than they lost to Together AI and Fireworks.
← PreviousPage 3 of 34Next →