Just talk to it – A way of agentic engineering
A practical guide to working with AI coding agents without the hype.
The latest blog posts to take off on Hacker News. 14,537 posts.
A practical guide to working with AI coding agents without the hype.
The following submission to Jeremy Friesen’s ‘elevator pitch’-themed Emacs blog carnival is taken from my rather long manuscript in progress (‘the present work’), tent…
Your product's core abstractions determine whether new features compound into a moat or just add to a feature list. Here's how to get it right.
How to start really getting Ruby, especially blocks.
If you can ctrl-c and ctrl-v, you can build a JIT.
Recently, I have been testing how well the newest generations of large language models (such as GPT-5 or Claude 4.5) handle natural language, specifically counting characters, manipulating characters in a sentences, or solving encoding and ciphers. Surprisingly, the newest models were able to solve these kinds of…
Programming languages have rapidly evolved in recent years. But in software development, the new often meets the old, and the scaffolding that OS gives for running new processes hasn’t changed much since Unix.
As all developers, I’ve been using git since the dawn of time, since its commands were an inscrutable jumble of ill-fitting incantations, and it has remained this way until today. Needless to say, I just don’t get git. I never got it, even though I’ve read a bunch of stuff on how it represents things internally. I’ve…
Alternative configuration formats solve superficial problems. Configuration languages solve the deeper problem: the need for abstraction.
Some of my favorite tidbits from the past year of working with Go.
David A. Wheeler's Page on Countering 'Trusting Trust' through Diverse Double-Compiling (DDC) - Countering Trojan Horse attacks on Compilers
No newsletter next week Running the TLA+ workshop. No way I'm gonna have any brainpower after that. Syntax highlighting is a waste of an information channel...
Completing a BASIC language interpreter in 2025 for replacing the very slow Mattel ECS BASIC for Intellivision.
Since my previous blog entry about JIT compiler for PostgreSQL, sadly not much happened due to a lack of time, but still some things were done (biggest improvement was the port to ARM64, a few optimizations, implementing more opcodes…). But I am often asking myself how to really beat the interpreter… And on “modern”…
Logic vs language: how a Turkish alphabet bug played a years-long game of hide-and-seek inside the Kotlin compiler
My Helix editor config and how I am using it
A Gaussian splat is essentially a bunch of blurry ellipsoids. Each one has a view-dependent color, using a process similar to training an AI model, you can optimize until it converges to the photos you feed in. The result is a sort of 3D photograph that can be viewed freely from any angle. Captivated by this…
(This is the blog post version of my keynote from EuroPython 2025 in Prague, Czechia.) We now have a lock file format specification. That might not sound like a big deal, but for me it took 4 years of active work to get us that specification. Part education, part therapy,
"Correct" doesn't mean "correct" when correctly using "correct"
the psql client version 18 comes with pipelining, which can speed up client-server communication. In this post, let's see how it works and how much can be g...
I first started programming Java at IBM back in 1999 as a Pre-University Employee. If I remember correctly, we had Java 1.1.8 installed at that time, but were moving to Java 1.2 (“Java 2”), which w…
I recently shipped a non-trivial Ghostty feature (unobtrusive macOS automatic updates) that was largely developed with AI.
If you have arrived here, you should know this is an early draft containing mostly unedited stream-of-consciousness crap because I have found it difficult to structure this topic. My latest attempt is to split this information up into multiple separate articles.
Make your dynamic content accessible by default with the HTML tag that time forgot.
Here’s another blog post on gathering some common threads from reading recent posts. Today’s topic is about the unassuming nature of talented software engineers. The first thread was a …
Macros are required to do some very helpful things in Rust, but this isn't an article about any of those things.
It Happened.
On multi-core programming, not as a special-case technique, but as a new dimension in all code.
Whether it's building a new project from scratch, implementing a big feature, or beginning a large refactor, it can be difficult to stay motivated and complete large technical projects. A method that works really well for me is to continuously see real results and to order my work based on that.