Hello and Good Morning from San Francisco! I’ll be in the bay area for the next two weeks. One week of work (and giving a talk, come by!), then one week of vacation (my family’s here with me). Should be a lot of fun — that is, if we make it through this day, on which every family member woke up before 4am.
The title of the video is “I Saved a PNG Image To A Bird”, the description starts with “I got a bit concerningly obsessed with birds for a few months”, and someone tweeted about it: “This is one of the craziest ideas I've ever seen. He converted a drawing of a bird into a spectrogram (PNG -> Soundwave) then played it to a Starling who sung it back reproducing the PNG.”
This, here, is very true: “But the real skill, the real thing that makes you effective, is knowing when to use one mode or the other, and being able to switch between them as needed.” I use Amp a lot. A lot. But I also have days when I write 90% of the code I commit by hand, and days when 80% is written by the agent. Why? From the same article: “AI coding tools supercharge this, allowing you to bring whole machineries to life by waving your hands around, offloading the understanding for much longer, but if you want it all to actually work, you'll need to dive into the details eventually.” It takes a lot of practice to know when you will be able to skip understanding something and when not to.
This will hopefully put a smile on your face: What’s Not to Like? It’s about “similes, good and bad” and contains smile-inducing representatives of both categories. Just wait until you get the one introduced with “(my eyes are closed as I type)”. And then, there, at the end, there’s James Joyce. “A girl stood before him in midstream, alone and still, gazing out to sea. She seemed like one whom magic had changed into the likeness of a strange and beautiful seabird.” So, maybe I should read Ulysses, huh?
Armin Ronacher on Agentic Coding Things That Didn’t Work. Very interesting. And I think it also maps in general how we think about developing Amp: do not pretend the model isn’t an unreliable narrator, do not pretend there’s determinism. It’s incredibly tempting to do so. Just add this feature on top, that feature here, don’t expose this, add a UI button that suggests you can always click it and, there you go, users now think the magic always-right machine powers this tool.
The title already tells you — it’s called: The many, many, many JavaScript runtimes of the last decade — but still: wow. So many runtimes! So. many. On top of the wow-factor: it’s a very interesting read that brought back some names I’ve long forgotten.
Seth Godin’s 65 notes to himself. Some of them are cryptic, others apparently personal and unknowable, but, man, I’m a sucker for lists like these. I mean, I’m not really sure what it’s supposed to mean, but I get fired up when I read “People like us do things like this” or “Take responsibility, demand freedom, don’t seek authority”. Good stuff.
Curious article about the “the sale of the popular route-planning platform Komoot to private equity”. I had zero clue that there was such a big community behind Komoot, which I’ve used to plan hikes before. Or at least tried to use, since the only real distinct memory I had of Komoot was that it felt full of made-up “content”. I guess I just used it in the wrong places. (Side-note: the term “enshittification” seems to undergo the same process it describes — is there a word for that?)
Similarily curious: “I'm never going back to Matrix” A peek into a corner of the Internet in which I’ve long stopped venturing.
Treasure Trove, Terminal Trove. Start by checking the “Tool of the Week” box and then go exploring.
Fast: “Rarely in software does anyone ask for “fast.” We ask for features, we ask for volume discounts, we ask for the next data integration. We never think to ask for fast. But software that's fast changes behavior. Developers ship more often when code deploys in seconds (or milliseconds) instead of minutes. […] Fast eliminates cognitive friction.”
… and Slow: “Below is a list of marvellous projects which human beings have undertaken over an exceptionally long time.” But it should probably have been called “long”.
Geoffrey Litt: “Enough AI copilots! We need AI HUDs” I agree that HUDs are great and in the past few weeks I thought a lot about what makes a great HUD for me. Turns out that one thing is what I’d call “glanceability”: can I take a quick look and see what’s going on, get a feel for the state of the system, spot whether something’s off? Okay, maybe that’s not the HUD that Geoffrey is talking about, but just shows that it’s thought-provoking stuff. And his “hacker-themed debug view of a Prolog interpreter” looks amazing.
6 Weeks of Claude Code is really good. S-tier blog post. Nuanced, honest, interesting, good writing. “We are at the ‘introduction of photography’ period of programming. Painting by hand just doesn’t have the same appeal anymore when a single concept can just appear and you shape it into the thing you want with your code review and editing skills.”
Apparantly, this one here, You might not need tmux, is seen as spicy, as a post caliente, but, man, what’s spicy about performance degradation? I was a hard-core tmux user for many, many, many years (and I never switched from ctrl-b to ctrl-a, because of how, well, hardcore I was) and then dropped it completely after I realized (a) Ghostty is faster without it (b) it looks better without it (c) I didn’t enjoy the half-yearly brew-upgrade leading to broken tmux configs (d) I no longer SSH into machines a lot and if I do I can still use it (e) Ghostty has panes and tabs and windows.
Since we’re on the topic of terminals. Here’s an interesting code comment: “Terminal.App is a wretched piece of shit that can't handle even the most basic of queries, instead bleeding them through to stdout like a great wounded hippopotamus. it does export "TERM_PROGRAM=Apple_Terminal", becuase it is a committee on sewage and drainage where all the members have tourette's. on mac os, if TERM_PROGRAM=Apple_Terminal, accept this hideous existence, circumvent all queries, and may god have mercy on our souls.” It goes on after that too.
And that reminds of the legal drug NOTCURSES III: THE SAGA CONTINUES (1080P) which everyone should take at least once. (Funnily enough: I dreamt of that video last night. Jetlag, man.)
notcurses has this Paul Valéry quote in its README and I love it: “Our fine arts were developed, their types and uses were established, in times very different from the present, by men whose power of action upon things was insignificant in comparison with ours. But the amazing growth of our techniques, the adaptability and precision they have attained, the ideas and habits they are creating, make it a certainty that profound changes are impending in the ancient craft of the Beautiful.”
“We are in the age of self-ware. Small throwaway utility software for an audience of one.”
This week I was talking to a colleague about “make sure that you introduce invariants into your system as soon as possible, you want reduce the number of questions someone asks themselves when reading your code” and then I wondered: did I get that from Alexis King’s post “Parse, don’t validate”? Not sure! But it’s a good post (even though I’d love to have a programming-language-agnostic version of it to link to. And yes, it’s not really about the languages used, but you get my point.)
“One time I got mugged at knifepoint by two guys and I found myself saying, first and foremost, in reaction to seeing the knife, for reasons that are absolutely beyond me, ‘now hold on a minute there compadre.’”
great post as usual!! I've just recently discover your posts here, and I was wondering if you read this one https://southbridge-research.notion.site/An-LLM-s-Perspective-What-It-s-Actually-Like-to-Receive-These-Instructions-2055fec70db18195b9f6ef655745749c which is hilarious and a fun read