Resources & guides
Your approach to dependencies should be different depending on what kind of software you're making and where it fits in the wider ecosystem. If other people are integrating your code into their own system or... ·
13 June 2026
18 November 2022
16 December 2024
3 October 2020
12 July 2020
Essays & opinions
This is a series about a research rabbit hole I've been going down over the last year or so, about a kind of incremental programming approach for games, UIs, and more [...] ·
30 September 2024
6 February 2022
How big are the largest projects today? What if they were 100x bigger? ·
15 June 2022
It's well-known that state management in programs can lead to a lot of problems. Spaghetti machines of far too many transitions, orchestrated by widely-visible variables, lead to hard-to-debug, hard-to-change code. [...] ·
24 June 2023
Most reactive systems in use today lack important abstractions, making it easy to write inconsistent code ·
30 July 2023
Ideas for a language targeting shell scripts ·
1 May 2022
23 February 2019
Interesting articles elsewhere
- Before you try to do something, make sure you can do nothing - The Old New Thing
- Laurence Tratt: Which Parsing Approach?: a review of different ways to implement parsing, and their tradeoffs
- Common Misconceptions about Compilers
- Migrations: the sole scalable fix to tech debt. - Irrational Exuberance
- newren/git-filter-repo: Quickly rewrite git repository history
- Two articles about what coroutines are really for: Philosophy of coroutines - Simon Tatham / research!rsc: Storing Data in Control Flow
- Two articles about designing error handling: How do you cut a monolith in half? / Scaling in the presence of errors—don’t ignore them) (“Systems grow by pushing responsibilities to the edges”)
- Push Ifs Up And Fors Down - matklad
- Quick takes on the GCP public incident write-up – Surfing Complexity: an insight into great incident response mindset
- Technical Debt — notes.doismellburning.co.uk - big catalog of articles about it
- Breaking systems into modules - Ted Kaminski
- Designing with types: Making illegal states unrepresentable
- The one ring problem: abstraction and our quest for power - Ted Kaminski
- Instead of “auth”, we should say “permissions” and “login” - nicole@web
- Restyling apps at scale – Space and Meaning (or rather, how it’s not really possible)
- Why Kakoune — The quest for a better code editor (This convinced me that modal editing is good and the things I don’t like about Vim are about Vim specifically and not about modal editing in general. I now have been using Kakoune-inspired extension Dance in VS Code for several years. Also the official documentation for Vim and Kakoune lack context and are hard to learn from; they should be more like Practical Vim command workflow - Max Shen Dev.)
- Incidents — notes.doismellburning.co.uk (a collection of resources on incidents)
- Schema migrations and avoiding downtime - quanttype (didn’t even realise this could be an issue)
- dbmate: A lightweight, framework-agnostic database migration tool
- Building the fastest Lua interpreter.. automatically!
- Sunsetting Cursed Terminal Emulation - Arcan
