↓ Skip to main content

Software Engineering

2025

A twofer on software estimation that also tallies with my intuition. People are really great at estimating the median which is impossible to communicate to people without deep intuition for software engineering and statistics.

·232 words
I fully agree with Paolo Scanferla here that very complex typing (“hyper-typing”) is an impediment to get anything done but besides the technical aspects, here are some ratchets here that are very pernicious.

·66 words
Using the same Github account for work that you also use to do anything and everything else with is not particularly secure. That’s why I split my presence on the platform, but getting everything to work that way has been somewhat annoying.

We use reservoir sampling a lot day to day and here’s a great visual explanation of how this algorithm does this seemingly impossible task.

·49 words
Thorsten Ball keeps writing bangers such as this speed run how to write a AI coding agent.

·31 words
Something that I also need to try. The rise of overlay networks that can create private networks and make all your devices and servers internet addressable is a huge convenience.

·63 words
Here’s a topic over at Lobsters of what a bunch of software engineers would like to see programmed out in the world. Every ask gets a bunch of suggestions of things out there that could fill that gap.

Should managers be in the code? Yes, absolutely. Should managers write code? Maybe, but it also depends on what you mean by writing code.

·54 words
A thought provoking attack on SQL with a bunch of pointers and hints as to what could come next. I’m pretty competent with SQL but that is exactly the point where you should become interested in what the limitations are and in what situations it makes sense to break out of the paradigm.

·22 words
I’m not a huge fan of these “best programmer” lists, but this list was better than most that I have seen.

·31 words
The amount of positive things happening around Python packaging and performance is really cool to see. Here’s a way to compile Python directly to Webassembly and get much better performance.

·36 words
I’ve never used a tool that supports interdiff code reviews, but seeing it described here, it makes intuitive sense and I would love to have this. Instead we are–as is pretty much everybody else–stuck on Github.

All of those things listen above are in support of your primary goal: ensuring that you are getting shit done. You cannot get shit done to a world-class level by leaving all of the details to other people.

·26 words
Running a public website these days means staving off attacks from every LLM company in the world trying to get your data (legally or illegally).

·26 words
Type level programming in Typescript has been driven to the point of pure absurdity by implementing a DOOM runtime on it to play the game with.

We liked to pretend that it was possible to use American cloud providers with any measure of sovereignty, but that pretence is going to drop very soon now. Not sure what the alternatives are, but everybody should be planning for some drastic changes here.

A good overview of how Git developers configure git for themselves with a bunch of settings that should be the default for everybody but which will take ages to be rolled out. You should copy most of these into your own config.

·63 words
I think this critique of Flamework is a bit rich coming from the author of Flask with its global request object. But there is a point in being able to iterate really quickly, it’s even better to be able to work crudely without creating a disastrous unmaintainable mess.

·35 words
Our work in software engineering consists mostly of learning and for me and my team a fair part of that is teaching. Both of these are immensely difficult and rewarding components of the job.

·46 words
Here’s a good article about platform teams that I got to read an early draft of. I can say from my own experience that all of these traps are very easy to go into. Be aware and prioritize ruthlessly what works and what doesn’t work.

Using jj as a manager

·354 words
I think when people ask what’s so great about jj they tend to go deep into things such as mega-merge strategies and stacked PRs. These things are cool, no doubt, but jj can be useful starting from the very small.

·78 words
I can relate to this because I’m using Cursor to write a bit of Gleam where it’s usually off entirely because this is such a small language.

·48 words
A lot has been made of this talk about Egoless Engineering but I can say that for me it came at the exactly right time. In our platform team we got to the point mentioned in the talk and are now working on #3: Empower Everybody Else.

·22 words
Obsidian is a knowledge worker’s lightsaber. It’s indispensable for any kind of serious work and it is now free to use.

·23 words
Rare to see an actual apples-to-apples comparison of databases like this. Postgres comes out ahead versus Sqlite but as always, it depends.

·28 words
This is the way “A Pattern Language” intended we should talk about patterns: applied and without making things more complicated. Patterns should simplify and be grasped immediately.

·19 words
Filing this away for future reference when at some point we’ll want to get out of managed Kubernetes.

·46 words
A very good explanation about “object soup” and how Rust is uniquely poorly suited to model problems in that way. It pins down a very fundamental issue that people coming from an object oriented background run into all the time and offers a helpful solution.

·47 words
Quanta’s write-ups of math discoveries are always enjoyable to read. In this case an undergraduate (!) figured out something new about hash tables and how fast they can be. Not sure yet when this will be shipped in code, but still it’s a pretty amazing discovery.

·39 words
Wild to see the materials that go into making a single inference machine for private use. At scale this stuff will of course be more efficient, but still the main components will be more or less the same.

We’ve revived our tech blog and will be sharing a bunch of stuff around our AI process and what it means to be an “AI first” company. Here’s an in-depth first piece about what it takes to develop a successful real life product with LLMs.

·87 words
LLMs are fundamentally matching the patterns they’ve seen, and their abilities are constrained by mathematical boundaries. Embedding tricks and chain-of-thought prompting simply extends their ability to do more sophisticated pattern matching. The mathematical results imply that you can always find compositional tasks whose complexity lies beyond a given system’s abilities.

·16 words
Overview of the performance of different caching solutions for Rails comparing Redis to some competitors.

·78 words
This was exactly a discussion I had yesterday where when teams reach higher levels of maturity, they may catch and fix issues internally before they become full blown incidents.

·39 words
Even the most basic functions in foundational libraries can be iterated on and improved by reading papers and implementing novel algorithmic approaches. Here’s a breakdown of how the time crate got faster (even though “no one has complained”).

·57 words
SQLite is a tiny, somewhat quirky but incredibly convenient and fast database. For side projects I definitely don’t bother with a “real” database anymore and for many of them I just check the entire .sqlite file into version control for easier deployments.

·40 words
After missing the previous edition, I’m ‘attending’ HYTRADBOI 2025. Databases are the bread and butter of our team and I enjoy keeping up with the cutting edge of the field while using the most boring possible one at work.

·17 words
“OpenAI shocked that an AI company would train on someone else’s data without permission or compensation.”

·75 words
This is a very good framework from Matt Webb for organizations how to do strategic pathfinding when it comes to AI. In Germany especially, lots of orgs would benefit from doing this instead of whatever it is that they are busy with right now.

·32 words
I don’t think there’s been a Python developer tool that’s been adopted as quickly as uv is being right now. Dealing with dependencies and running Python code has never been easier.

·26 words
A write-up of the current dream stack in practice: prototype work in Python and then hook it up to Rust to bring it to production.

·49 words
Quick turnarounds on fixing vulnerabilities usually correlated with general engineering operational excellence. The best cases were clients who asked us to just give them a constant feed of anything we found, and they’d fix it right away.

·104 words
[…] the abandonment of responsibility in two dimensions. Firstly, and following on from what was already happening in ‘big data’, the world stopped caring about where AI got its data — fitting in nicely with ‘ surveillance capitalism. And secondly, contrary to what professional organisations like BCS and ACM had been preaching for years, the outcomes of AI algorithms were no longer viewed as the responsibility of their designers — or anybody, really.

·61 words
Artemis, fostered with Apollo, virgin who delights in arrows, far-shooting goddess, who swiftly drives her all-golden chariot through Smyrna to vine-clad Claros, I ask that you establish a loop counting from ninety-nine to one called beerLoop.

·28 words
I had no idea that Git trailers were a thing, but this is pretty cool. Not sure where I’ll ever use it though: “trailers are severely underutilized”