I changed my license
In the last 28 years of publishing software, I’ve had three distinct eras of software licensing. All of my recent stuff is available under the European Union Public License 1.2, and I thought to explain why.
Topics /
The most popular blog posts about software engineering on Hacker News. 1,414 posts.
In the last 28 years of publishing software, I’ve had three distinct eras of software licensing. All of my recent stuff is available under the European Union Public License 1.2, and I thought to explain why.
A false dichotomy that hides the real request
How we built memchunk - a blazing fast text chunking library using SIMD and memchr for RAG pipelines
Test-case reducers are less well known than they should be, and those who are aware of them don’t always realise the variety of ways we can use – perhaps even abuse! – them. In this post, I’m going to explore some of the things I’ve learnt while using these wonderful tools. I’ll start at the basics, because the idea…
Run away while you still can, it's not too late for you to avoid the curse of knowledge.
The following post involves far too much discussion of the XOR swap trick. If XOR itself is unfamiliar, I have written a gentler introduction to it .
Several PDF implementations advertise AES-256, but generate the 256-bit key from either a very small state space, or from insecure random sources.
So a good while ago I added a fun curl version of my site, meant for viewing in the terminal. Try running these commands!
A deep dive into converting a simple arithmetic expression into a binary tree, leading to a custom language in C.
Node.js® is a free, open-source, cross-platform JavaScript runtime environment that lets developers create servers, web apps, command line tools and scripts.
A recent paper argues that frontier LLMs can work with neural network weights directly. This seems superhuman, but it isn’t. The paper shows that GPT-6 Astra…
I feel like I got substantial value out of Claude today, and want to document it. I am at the tail end of AI adoption, so I don't expect to say anything particularly useful or novel. However, I am constantly complaining about the lack of boring AI posts, so it's only proper if I write one.
Here, we’re sharing the research behind how we’re translating that to design editing workflows.
Figuring out how it went missing.
Vary support is now available in Cache Rules on every plan. You can normalize known negotiation headers, pass exact values through to the origin when those small differences matter, or bypass cache when the variation is too unpredictable.
I authored 1 the announcement post on the Superlogical homepage , which describes the problem statement and what we're building. 2 Read that to learn more. This post is more of a personal statement about what led to this, how it relates to my recent work, and what comes next.
Micropayment-powered stories
The rare moment when I need to open a powerpoint document is here. As usual, I have my institutional account logged into their “services”, because my university pays microslop something in the ballpark of hundreds of thousands of euros in contracts with this large software provider.
Here are my thoughts on the free online textbook Is Parallel Programming Hard, And, If So, What Can You Do About It? by Paul E. McKenney, author of the Linux kernel’s RCU synchronization mechanism. I read a lot of this textbook, got my fill, and probably won’t read more of it in the near future so wanted to write this…
How VHDL preserves determinism In this post, I would like to talk about VHDL’s crown jewel: how it preserves determinism in a concurrent language. Here is a figure of how it works:
How long should a micro benchmark run? My rule of thumb is to tweak the input size until the benchmark takes about 300ms, for the following reasons:
Python and JavaScript/TypeScript AI frameworks are reinventing what telecom solved in 1986. What 40 years of production-grade concurrency teaches us about building AI agents.
`foldl` and `foldr` can be confusing, so let's work out what's up
Picture this, the year is 1996. You find yourself frustrated with the incumbent search engines like AltaVista, which primarily does a content-based search (it'll give you an article on "Hotels for Chickens" if you search "Hotels" because the word matches). There's gotta be a better way, right? Well, in hindsight, of…
reverse engineering, abandonware
Front-end antics and typographic mischievousness
Git packfiles were designed for mmap and local disk, so pulling one object out of a bucket means guessing at a byte range. I wrote a new format instead.
I’m having a lot of fun with reverse engineering lately, so when I was looking over the service manual for my guitar amp, a Yamaha THR10c, and saw references to a UART header in the schematic, I got excited. I wondered if anything cool was hiding in there. Next to it was a JTAG header. I knew next to nothing about…
I’ll admit that until fairly recently I had no idea git worktrees existed. They’ve been part of git for a decade1 and I never once needed them. Feature branches did the job just fine - create a branch, do the work, merge it, delete it, and start over. What finally introduced me to worktrees was, of all things, AI…