Parallel ./configure
I paid good money for my 24 CPU cores, but ./configure can only manage to use 69% of one of them. As a result, this random project takes about 13.5× longer to configure the build than it does to actually do the build.
I paid good money for my 24 CPU cores, but ./configure can only manage to use 69% of one of them. As a result, this random project takes about 13.5× longer to configure the build than it does to actually do the build.
Welcome to the very first post in a new blog! Here I will discuss software development, SRE work, and other fun stuff. Sometimes an idea is just too good to pass up. I hope this blog will motivate me to turn sparks and little pieces into general knowledge in writing the words down. The other day I was discussing Tabby…
A review of the 20th anniversary edition of The Pragmatic Programmer, updated for modern software development.
Update: See my follow up post, What should a native DOM templating API look like? .
It helps, of course, that I still consider many of the people I worked with friends, and I know some of them even still read this blog. (Hi!)
Here’s a little idiom that I haven’t really seen discussed anywhere, that I think makes Rust code much cleaner and more robust.
My last article about generic data structures in C was written to set the stage for today’s topic: A data structure with constant time indexing, stable pointers, and works well with arena allocators. Its been independently discovered by multiple programmers over the years and so goes by different names. A 2001 paper…
Celebrating a little bit of legacy from Placemark and a new product for hydraulic simulation
How Jujutsu's flexibility and safety changed my approach to version control.
Introducing kv, a statically allocated key/value server.
ICU gets Unicode right and pays for it. This post shows a different approach: fold-safe windows, SIMD probes, and verifiers for fast UTF‑8 search.
I just think it's neat!
Exploring a peculiar bit-twiddling hack at the intersection of 1980s geek sensibilities.
The third edition of Automate the Boring Stuff with Python is now available for purchase or to read for free online . It has updated content and several new chapters, but one chapter that was left on the cutting room floor was "Working with Audio, Video, and Webcams" . I present the 26-page rough draft chapter in this…
Applying human ergonomics and design principles to syntax highlighting
A problem I experienced when pursuing my PhD and submitting academic articles was that I had built solutions to problems that required dramatic scale to be effective and worthwhile. Responses to my publication submissions often claimed such problems did not exist; however, I had observed them during my time within…
Make AI weird again.
My Helix editor config and how I am using it
In the previous posts, we've explored the SQLite file format and built a simple SQL parser. It's time to put these pieces together and implement a query…
Machine code isn't scary. If you can make sure your JSON conforms to a JSON schema, you can write machine code.
Fizz Buzz is a counting game that has become oddly popular in the world of computer programming as a simple test of basic programming skills. The rules of the game are straightforward. Players say the numbers aloud in order beginning with one. Whenever a number is divisible by 3, they say 'Fizz' instead. If it is…
Yes, you read that right. SQL does treat all NULLs as distinct values. I learnt this a while back while working on Convoy and again on LiteQueue: a Golang a queueing library. Basically, any column wi
TIL: `satisfies` is my favorite TypeScript keyword
You know what: Microsoft became miserably incompetent in IT. I develop open-source code. But that never made me one of the “I hate proprietary software or IT giant corporations” types. …
I want to view a picture of a funny cat I found on the web. How hard can it be?
Dissecting various compression algorithms.
In my book Understanding the Odin Programming Language I wrote that “Odin incorporates some of my favorite C best practices, straight into the language”. But I didn’t really elaborate on the details. Let’s do that here! This brings me to talking a bit about a previous job I had. Back in 2021 I worked at a place called…
I spend an awful lot of my day in Unix terminals running shell commands. For some reason, the variance in efficiency between different people when using the shell is huge: I know people who can run rings around me, and I’ve come across more than one paid professional who doesn’t use the “up” key to retrieve the…
I had a vague idea that closures could have a variety of performance implications; I did not believe that so many of the chosen and potential designs for C and C++ extensions ones, however, were so…
Software engineer by day, software engineer by night also.