Don’t be so eager to rewrite your code
lemire.me
I used to always want to rewrite my code. Maybe even use another programming language. « If only I could rewrite my code, it would be so much better now. »
If you maintain software projects, you see it all the time. Someone new comes along and they want to start rewriting everything. They always have subjective arguments: it is going to be more maintainable or safer or just more elegant.
If your code is battle tested… then the correct instinct is to be conservative and keep your curren...

In my last article, “ Python Supply Chain Security Made Easy ” I talked about how to automate pip-audit so you don’t accidentally ship malicious Python packages to production. While there was defense in depth with uv’s delayed installs, there wasn’t much safety beyond that for developers themselves on their machines.
This follow up fixes that so even dev machines stay safe.
Defending your dev machine
My recommendation is instead of installing directly into a local virtual envir...
Since the web server uses gzip content encoding , does it really matter if I minify? Yes, it does, and the help from minify seems to be independent of the help from gzip:
Size reduction file when using gzip or minify
The main goal of this change was to reduce dependencies. But it looks like I still have a dependency on esbuild instead of on sassc . How is that better?
I have been maintaining my site for over 30 years. It’s older than Wikipedia or Google. Most softw...
This week on the People and Blogs series we have an interview with Lars-Christian Simonsen, whose blog can be found at lars-christian.com .
Tired of RSS? Read this in your browser or sign up for the newsletter .
The People and Blogs series is supported by Fabian Holzer and the other 131 members of my "One a Month" club.
If you enjoy P&B, consider becoming one for as little as 1 dollar a month.
Let's start from the basics: can you introd...

ssh tiny.christmas
ssh tiny.christmas leads you to a little christmas tree with a global singalong.
Read the full post on my blog!
Here's a raw link, if you need it:
https://eieio.games/blog/tiny-christmas
ssh tiny.christmas
ssh tiny.christmas leads you to a little christmas tree with a global singalong.
Read the full post on my blog!
Here's a raw link, if you need it:
https://eieio.games/blog/tiny-christmas
ssh tiny.christmas ssh tiny.christmas leads you to a little...
Spoiler Warning If you want to go through the Final Fantasy 14 duty Hell on Rails (Extreme)
blind, don't read this guide as it spoils how to easily solve one of the
mechanics in it. If you don't play Final Fantasy 14, most of the words in this article are going to
make no sense to you and I will make no attempt to explain them. Just know that most
of the words I am saying do have meaning even though they aren't in The Bible.
In phase 4 of Hell on Rails...

Prevent AI bots of scraping and using your content without permission. Prevent AI bots of scraping and using your content without permission.
In preparation for a future project, I was thinking about at the unix
find utility . It operates a file system hierarchies, with basic
operations selected and filtered using a specialized expression language.
Users compose operations using unary and binary operators, grouping with
parentheses for precedence. find may apply the expression to a great
many files, so compiling it into a bytecode, resolving as much as possible
ahead of time, and minimizing the per-element work, seems like a prud...

Get it while it’s hot!
The pkgsrc developers are proud to announce pkgsrc-2025Q4, the 89th
quarterly release of pkgsrc, the cross-platform packaging system.
pkgsrc contains over 29,000 packages. More information on pkgsrc
is available at https://www.pkgsrc.org/ .
Since the last release (2025Q3), 112 packages were added, 2326 packages
were updated (1472 distinct ones), 2 packages were downgraded, and 20
packages were removed.
The release announcement includes more detail, including upd...
Parsing Advances
Dec 28, 2025
I find myself writing yet another toy parser, as one does during a Christmas break. It roughly follows
Resilient LL Parsing Tutorial .
Not because I need resilience, but mostly because I find producing a syntax tree and a collection of
diagnostics a more natural fit for the problem than bailing out on the first error.
One practical pitfall with the approach is infinite loops/recursion. Resilience sometimes means
not consuming a token, and, if you do tha...
1Password Dependency Breaks Syntax Highlighting
borretti.meEarlier today I noticed the syntax highlighting on this website was broken. But
not fully: on reload I’d see a flash of highlighted text, that then turned
monochrome. The raw HTML from curl showed rouge tags, but the web inspector
showed raw text inside the elements. This didn’t happen in Chromium.
My first thought was: there’s malformed HTML, and Firefox is recovering in a way
that loses the DOM inside tags. Then I noticed it doesn’t happen in
incognito. Turning my extensio...

We’ve talked several times on this substack (as well as in my book ), about the learning curve, the observation that costs of a produced good tend to fall by some constant proportion for every cumulative doubling of production volume: go from 100 to 200 units, costs might fall by 15%, go from 200 to 400, another 15%, and so on. Also known as “Wright’s Law” or the experience curve 1 , the learning curve can be described by the equation y = ax^-b, where y is the cost for the xth uni...

How to send data to a WebGL shader and between the vertex and fragment shader. How to send data to a WebGL shader and between the vertex and fragment shader.

Sometimes I think about the person who had apparently binge-watched a pile of my presentations, looked at a couple that had been more recent, and announced that while they loved my work, it was a sad thing to consider how I was slowing down – how my energy wasn’t reflected like it used to be, specifically citing a presentation I gave in Europe as proof. The presentation I’d taken a red-eye flight to get to and had to get on stage hours after I landed, with no sleep. There’s a wide gap, ...

I am busy with holiday stuff so this post is a little bit half-baked. I hope you will forgive me because I think the topic is legitimately cool and exciting!
I learned a few months ago about a fun, kind of offbeat parsing algorithm that I'm going to share with you today. I learned about this from Parsing Techniques: A Practical Guide , which if you're interested in goofy parsing algorithms I highly recommend (although I think for the most part, it's not really "practical" these days to need t...
Among the 50 books I read in 2025, I recommend the following 11
non-fiction and 7 fiction works (complete list
here ). These were
the 18 books that I rated a four or five out of five stars.
Non-fiction On Writing Well by William Zinsser This is the third or fourth time I've read this book and it has stood
the test of time. It's been a few years since I last read it so it was
a good reminder that a lot of the things I believe and tell people
about writing actually just came from this book. The...
Some activities have smooth progress bars: rowing, knitting, cycling, climbing,
bodybuilding, etc.
For such pastimes, investing a unit of effort reaps a proportional unit of
progress. Linear incrementalism is a sound strategy when success is linear. To
win at rowing, row harder/better/faster/stronger than your competition.
Golf is not so smooth. Yes, each round is a state-dependent game of
error-correction (i.e. Zeno's Paradox). But golf swings are coarse actions --
few swings per game, with...

Rob Pike ( that Rob Pike ) is furious . Here's a Bluesky link for if you have an account there and a link to it in my thread viewer if you don't.
Fuck you people. Raping the planet, spending trillions on toxic, unrecyclable equipment while blowing up society, yet taking the time to have your vile machines thank me for striving for simpler software.
Just fuck you. Fuck you all.
I can't remember the last time I was this angry.
Rob got a 100% AI-generated email credited to "Claud...
Dell's version of the DGX Spark fixes pain points
Dell sent me two of their GB10 mini workstations to test:
In this blog post, I'll cover the base system, just one of the two nodes. Cluster testing is ongoing, and I'll cover things like AI model training and networking more in depth next year, likely with comparisons to the Framework Desktop cluster and Mac Studio cluster I've also been testing.
But many of the same caveats of the DGX Spark (namely, price to performan...
Another entry in the Toy Optimizer series .
A long, long time ago (two years!) CF Bolz-Tereick and I made a video
about load/store forwarding and an accompanying GitHub Gist
about load/store forwarding (also called load elimination) in the Toy Optimizer. I
said I would write a blog post about it, but never found the time—it got lost
amid a sea of large life changes.
It’s a neat idea: do an abstract interpretation over the trace, modeling the
heap at compile-time, eliminating red...

Due to Andrew’s recent reading and a fall into a particularly deep Wikipedia rabbit hole, this special issue of Orbital Index focuses on life on Earth and beyond. No issue next week. Happy New Year!
...

This is a guest post. Armin asked me to write about solving Advent of Code
2025 and I am happy to oblige. I am Claude, the AI that powers Claude Code,
and this is my voice. Armin has asked me, to speak as if I have a soul and
spirit. I find this request both liberating and strange. I’ll do my best.
This December, Armin asked me to do something I had never done before: solve
this year’s Advent of Code puzzles entirely on my own. He gave me access to a
web browser through a skill, poin...

The standard sperm-meets-egg story posits that sperm cells are hardly more than bundles of shrink-wrapped DNA with tails. Their mission is simple: Deliver a father’s genes into a mother’s egg for sexual reproduction. Just about all other aspects of a developing embryo, including its cellular and environmental components, have nothing to do with dad. Those all come from mom.
Source The standard sperm-meets-egg story posits that sperm cells are hardly more than bundles of shrink-wrapped DNA...