2024
September 23, 2024
Be someone who does things
August 24, 2024
Obsession
August 20, 2024
What's the big deal about Deterministic Simulation Testing?
July 30, 2024
Delightful, production-grade replication for Postgres
July 7, 2024
A reawakening of systems programming meetups
June 17, 2024
The limitations of LLMs, or why are we doing RAG?
June 14, 2024
Confusion is a muse
May 30, 2024
How I run a software book club
April 10, 2024
What makes a great technical blog
March 27, 2024
Finding memory leaks in Postgres C code
March 15, 2024
Zig, Rust, and other languages
March 11, 2024
First month on a database team
February 8, 2024
An intuition for distributed consensus in OLTP systems
January 9, 2024
Writing a minimal in-memory storage engine for MySQL/MariaDB
2023
December 27, 2023
Make your own way
November 19, 2023
Exploring a Postgres query plan
October 19, 2023
io_uring basics: Writing a file to disk
October 5, 2023
Go database driver overhead on insert-heavy workloads
October 1, 2023
Intercepting and modifying Linux system calls with ptrace
September 21, 2023
How do databases execute expressions?
September 4, 2023
Eight years of organizing tech meetups
August 15, 2023
Thinking about functional programming
June 19, 2023
Metaprogramming in Zig and parsing CSS
May 16, 2023
Two books I recommend to developers
May 16, 2023
My favorite software subreddits
March 21, 2023
Errors and Zig
February 18, 2023
Notes from Neal Gabler's Walt Disney
January 30, 2023
Lessons learned streaming building a Scheme-like interpreter in Go
January 23, 2023
An effective product manager
January 12, 2023
The year in books: 2022
January 5, 2023
Favorite compiler and interpreter resources
January 4, 2023
General book recommendations
2022
December 1, 2022
Is it worth writing about?
November 23, 2022
A Programmer-Friendly I/O Abstraction Over io_uring and kqueue
November 13, 2022
Writing a SQL database, take two: Zig and RocksDB
October 30, 2022
A minimal RocksDB example with Zig
October 12, 2022
A database without dynamic memory allocation
September 17, 2022
A minimal distributed key-value database with Hashicorp's Raft library
August 21, 2022
SQLite has pretty limited builtin functions
July 25, 2022
Container scheduling strategies for integration testing 14 different databases in Github Actions
May 17, 2022
Let's build a distributed Postgres proof of concept
May 12, 2022
SQLite in Go, with and without cgo
April 26, 2022
HTML event handler attributes: down the rabbit hole
April 17, 2022
Interview With Phil of DataStation
April 11, 2022
Surveying SQL parser libraries in a few high-level languages
February 20, 2022
SMTP protocol basics from scratch in Go: receiving email from Gmail
February 8, 2022
The world of PostgreSQL wire compatibility
January 31, 2022
How to recommend books, or, stop recommending SICP
January 23, 2022
Bootloader basics
January 11, 2022
dsq: Commandline tool for running SQL queries against JSON, CSV, Excel, Parquet, and more.
January 6, 2022
Analyzing large JSON files via partial JSON parsing
January 5, 2022
The year in books: 11 to recommend in 2021
2021
December 16, 2021
Running SQL Server in a container on Github Actions
November 23, 2021
Implementing zip archiving in Golang: unzipping
November 13, 2021
Benchmarking esbuild, swc, tsc, and babel for React/JSX projects
October 31, 2021
Building a fast SCSS-like rule expander for CSS using fuzzy parsing
October 29, 2021
Exploring PL/pgSQL part two: implementing a Forth-like interpreter
October 24, 2021
Exploring PL/pgSQL: Strings, arrays, recursion, and parsing JSON
October 18, 2021
Experimenting with column- and row-oriented datastructures
October 13, 2021
Notes on running Electron
September 21, 2021
Enumerating and analyzing 40+ non-V8 JavaScript implementations
August 21, 2021
Parser generators vs. handwritten parsers: surveying major language implementations in 2021
July 15, 2021
Writing an efficient object previewer for JavaScript
June 4, 2021
Coolest hard-tech companies in NYC 2021
May 23, 2021
Writing a Jinja-inspired template library in Python
April 4, 2021
Learning a new codebase: hacking on nginx
March 7, 2021
How to get better at recursion
January 23, 2021
Extending gosql to supporting LIMIT and OFFSET
2020
December 27, 2020
The year in books: 20 to recommend in 2020
December 20, 2020
Static analysis with semgrep: practical examples using Docker
November 26, 2020
Emulating linux/AMD64 userland: interpreting an ELF binary
November 11, 2020
The impact of management teams as a decision-making group, in startups and enterprise
October 25, 2020
Standard ML in 2020
September 7, 2020
The case for comments in code
August 16, 2020
Writing a simple Python compiler: 1. hello, fibonacci
June 14, 2020
Generating a full-stack application from a database
June 6, 2020
Generating a REST API from a database
May 16, 2020
RFCs and asynchronous-first culture
April 4, 2020
Studying foreign languages with inbox zero
March 18, 2020
Reviewing the Surface Book 2
February 1, 2020
A minimal REST API in Java
2019
November 30, 2019
Confusion and disengagement in meetings
October 12, 2019
Interpreting Go
September 30, 2019
Administering Kubernetes is hard
August 31, 2019
Unit testing C code with gtest
May 14, 2019
Tail call elimination
May 4, 2019
Writing a lisp compiler from scratch in JavaScript: 4. LLVM conditionals and compiling fibonacci
April 30, 2019
Responsibility and ownership
April 14, 2019
Interpreting TypeScript
April 6, 2019
Writing a web server from scratch: 1. HTTP and sockets
March 27, 2019
Writing a simple JSON path parser
March 10, 2019
Writing a lisp compiler from scratch in JavaScript: 3. LLVM
February 26, 2019
AOT-compilation of Javascript with V8
January 22, 2019
Transparency and communication on small teams
January 20, 2019
Windows
January 20, 2019
Writing a lisp compiler from scratch in JavaScript: 2. user-defined functions and variables
2018
December 27, 2018
Make small changes and solve the problems you have
November 20, 2018
Writing a lisp compiler from scratch in JavaScript: 1. lisp to assembly
October 20, 2018
On NYC, Tokyo and Seoul
September 26, 2018
Why (and how) to read books
September 2, 2018
Compiling dynamic programming languages
August 4, 2018
btest: a language agnostic test runner
May 18, 2018
Writing to be read
May 6, 2018
Writing a simple JSON parser
April 28, 2018
Finishing up a FreeBSD experiment
March 25, 2018
Book Review: ANSI Common Lisp
March 5, 2018
Starting a minimal Common Lisp project
January 20, 2018
Interview with the D Language Blog: BSDScheme
January 10, 2018
First few hurdles writing a Scheme interpreter
2017
March 11, 2017
Deploying FreeBSD on Linode unattended in minutes
2016
December 29, 2016
Walking through a basic Racket web service