Even if a genie would walk through this door right now and grant me my oldest and dearest wish of having four additional hands and two new keyboards, I still wouldn’t be able to write down all the things I want to write about — there’s simply too much happening, too many things to read and twice as many left to read still, too many interesting conversations.
Programming is changing, I’m convinced of that now and I couldn’t be more excited. And I want to write about that, a lot.
Until I find the time (and twenty additional fingers) to do that: here's a ray of what Joscha Bach — in a link down there — calls my “fractured light”.
In case you’ve never heard that OpenOffice can’t print on Tuesdays or that cars can be allergic to vanilla ice cream: today’s your lucky day for you shall do nothing but click here and read and ponder what a jungle the world of software is.
From my own collection: Uber's iOS app rewrite trainwreck, UNIX Recovery Legend, and this six year old thread on why unsubscribing from emails can sometimes take days. A little preview: “Every one of these changes is reviewed (at 4pm UK time) by a team in an office in Scotland. If they approve it, it gets executed 24 hours LATER at 4pm. If this person is NOT a customer, they add it to an excel and email it (just before they go home) to a marketing team in Swindon.”
Good, quick, fast, entertaining read: Programming Languages That Blew My Mind. Never heard of HyperCard or Opalang, but the line that really made me curious was this one here: “Mind blown backwards: Understanding how
finally
was implemented in the JVM.” I went looking and it turns out that “the JVM designers chose to push the finally statement into the compiler rather than building it into the VM” and that finally-blocks are inlined into every possible execution path.Found this: rcmd, a “Reimagined Command-Tab”. Looks very similar to what I’ve used on Linux with GNOME, where
left-cmd-[number]
is bound to the corresponding application in the dock, except that it uses the right command key and… I love the idea, but I worry that without eight weeks of daily drills I’ll never get my muscle memory to remember to use the right command key.Julia Evans on getting a modern terminal setup. Great overview and yet again I’m thinking: maybe I should switch to fish? If I remember correctly, the reason why I switched to ZSH about twenty years ago was that it supported auto-completing directory names on a remote host and… that’s not something I require today anymore.
An ode to the M1 MacBook Air, “the best laptop ever". I’ve never used an M1 Air but I’ve used an M1 Max since soon after it came out and an M3 Max since last year and I still don’t know how Apple pulled this off. In the most literal sense of the word, the M-class MacBooks still seem incredible to me: I can’t believe how Apple, a huge, huge, huge company, pulled off a project of this scale — a new computer architecture, a new OS, a new emulation layer — not only without anyone hearing about it (!) but with results that impressive. I’d love to read a “The Making of M1” book some day.
Doug Turnbull on preferring throwaway code over design docs. I fully share the preference.
Interesting idea of using Transformer Memory as a Differentiable Search Index but seems like this is still fully in the realm of research, since the tradeoffs don’t seem worth it yet. If I understand it correctly, you’d have to train a new model everytime your corpus changes, right?
Not sure why they deleted it, but this post on the Cursor blog on “Editing Files at 1000 Tokens per Second” is fascinating. Feels like a peek into the new world.
I’m a huge Tailscale fan and was quite happy to see that they’re doing well. The fascinating bit for me in that article, though, was this: “AI firms have big networking problems because they must transfer immense amounts of data between many machines across multiple cloud providers. They also face plenty of access control, compliance, cryptography, identity, and privacy concerns, given the amount of personal data they process for clients and the reputational risk should something go awry. These characteristics make AI companies ‘an ideal use case’ for Tailscale.” That makes sense, of course, but I have to admit that even though I was aware that AI involves a lot of data, my mind didn’t make the leap to “they probably run into a lot of networking problems.”
Marshall spotted a great caption: “Young teens play a game on their TV, blissfully unaware of the lack of makefiles its manufacturer previously provided to those requesting its source code.” Picture it in your mind before you click.
Good framing: “When thinking about coding with LLMs, think of them as generators of templates. You say what code you need, and an LLM provides you with a template from a collection that most closely resembles the code you needed.” I’ve said something similar in different conversations these past few weeks and that I’ve begun thinking of LLMs-as-code-assistant more in the category of frameworks and generators than magic wands.
Dear Software Engineer: “The data clearly shows that AI is already having a significant impact on how software engineers work. Not everyone sees it. Not everyone wants to see it. But it’s happening.” A year ago I would’ve said “I dunno, man”, and even six months ago you would have only have gotten a “Hmmm” out of me, but now? I truly think something’s changing.
Fascinating analysis of “what happened to the Sonos app”. The interesting bits to me: (1) the post intentionally does not talk about the new UI, which seems like an easy target, but instead focuses on performance, and (2) you can see how some of the decisions that ultimately lead to trouble might have appeared as good decisions when they were made. Software is hard.
I really like the ideas in the AI Reading Club. That’s what a Kindle should be able to do. Without typing, somehow. The surest way to suck the joy out of reading is to make the user type on a Kindle.
Very, very interesting and new to me angle on learning & teaching: “A big reason that guys with slightly above average genetics who worked their asses off to squat 500 and deadlift 550 tend to be better coaches than guys who squat 700 and deadlift 800, is because the latter guys don’t have to do nearly as much problem-solving to get to impressive numbers as the former, in both technique and programming.” Isn’t that something? Take that, people who say dumb stuff like “those who can, do; those who can’t, don’t”
“knowing when to push matters as much as the push itself” — it’s about doing hard things, but hey, maybe it’s also about git?
Realistic post on one month with Devin, the AI assistant. Money quote: “When it worked, it was impressive. But that’s the problem - it rarely worked.”
A whole lot of words on an “AI Founder’s Bitter Lesson” and I’m not sure I understand them all, but what I do think I understand — foundation models can change the landscape with a single release, wiping you off the map — seems true.
If you’re in any way interested in products and how to onboard new users and how to make them use your product, I highly recommend installing and trying out Nikita Bier’s new app Explode. The amount of work that went into the onboarding flow, the exploitation of iOS APIs, the company name itself being a growth hack of sorts — this is what you get if you turn it up to 11 and I can’t help but think that it’s an argument for saying that all product people need to be technical, because how else do you come up with the idea of using the iOS picture-in-picture mode to guide a user through the steps required to enable your app? Would I build an app like this? No. But it sure is inspiring.
DHH on the Ruby Rogues podcast in 2014: “‘Oh, this will be more maintainable.’ Maintainable to me is such a weasel word. It's a way to sort of avoid talking about the here and the now, the concrete. The things we can see and we can touch and we can actually compare and then move it out into the abstract, the vague, the things we can't compare, to sort of the hand wavy end of design discussions which I find generally to be an uninteresting domain.” There are so many discussions in the programming world in which one side of the argument boils down to: “this is good because it’s good.”
This is said to be about writing for the AIs, but I’d it’s about all writing and it’s beautiful: “Be interesting, expose a surface that reflects the universe in sophisticated disturbances. The fractured light produced by your cracks might be what makes you useful as a lens.”