Notes on software development
-
A reawakening of systems programming meetups
-
A write-ahead log is not a universal part of durability
-
The limitations of LLMs, or why are we doing RAG?
-
Confusion is a muse
-
How I run a software book club
-
Implementing MVCC and major SQL transaction isolation levels
-
What makes a great technical blog
-
A paper reading club at work; databases and distributed systems research
-
Finding memory leaks in Postgres C code
-
Zig, Rust, and other languages
-
First month on a database team
-
An intuition for distributed consensus in OLTP systems
-
Writing a minimal in-memory storage engine for MySQL/MariaDB
-
Make your own way
-
Exploring a Postgres query plan
-
Writing a storage engine for Postgres: an in-memory Table Access Method
-
io_uring basics: Writing a file to disk
-
Go database driver overhead on insert-heavy workloads
-
Intercepting and modifying Linux system calls with ptrace
-
How do databases execute expressions?
-
Eight years of organizing tech meetups
-
Thinking about functional programming
-
We put a distributed database in the browser – and made a game of it
-
Metaprogramming in Zig and parsing CSS
-
Implementing the Raft distributed consensus protocol in Go
-
Two books I recommend to developers
-
My favorite software subreddits
-
Errors and Zig
-
Notes from Neal Gabler's Walt Disney
-
Lessons learned streaming building a Scheme-like interpreter in Go
-
An effective product manager
-
The year in books: 2022
-
Favorite compiler and interpreter resources
-
General book recommendations
-
In response to a frontend developer asking about database development
-
Is it worth writing about?
-
A Programmer-Friendly I/O Abstraction Over io_uring and kqueue
-
Writing a SQL database, take two: Zig and RocksDB
-
A minimal RocksDB example with Zig
-
A database without dynamic memory allocation
-
A minimal distributed key-value database with Hashicorp's Raft library
-
What's the big deal about key-value databases like FoundationDB and RocksDB?
-
SQLite has pretty limited builtin functions
-
Container scheduling strategies for integration testing 14 different databases in Github Actions
-
Implementing a simple jq clone in Go, and basics of Go memory profiling
-
One year as a solo dev building open-source data tools without funding
-
Let's build a distributed Postgres proof of concept
-
SQLite in Go, with and without cgo
-
HTML event handler attributes: down the rabbit hole
-
Interview With Phil of DataStation
-
Surveying SQL parser libraries in a few high-level languages
-
Writing a document database from scratch in Go: Lucene-like filters and indexes
-
Speeding up Go's builtin JSON encoder up to 55% for large arrays of objects
-
SMTP protocol basics from scratch in Go: receiving email from Gmail
-
The world of PostgreSQL wire compatibility
-
How to recommend books, or, stop recommending SICP
-
Bootloader basics
-
dsq: Commandline tool for running SQL queries against JSON, CSV, Excel, Parquet, and more.
-
Analyzing large JSON files via partial JSON parsing
-
The year in books: 11 to recommend in 2021
-
Writing a minimal Lua implementation with a virtual machine from scratch in Rust
-
Running SQL Server in a container on Github Actions
-
Implementing zip archiving in Golang: unzipping
-
Benchmarking esbuild, swc, tsc, and babel for React/JSX projects
-
Building a fast SCSS-like rule expander for CSS using fuzzy parsing
-
Exploring PL/pgSQL part two: implementing a Forth-like interpreter
-
Exploring PL/pgSQL: Strings, arrays, recursion, and parsing JSON
-
Experimenting with column- and row-oriented datastructures
-
Notes on running Electron
-
Enumerating and analyzing 40+ non-V8 JavaScript implementations
-
Writing a simple JSON library from scratch: a tour through modern C++
-
Parser generators vs. handwritten parsers: surveying major language implementations in 2021
-
Practical? Common Lisp on the JVM: A quick intro to ABCL for modern web apps
-
Writing an efficient object previewer for JavaScript
-
React without webpack: fast path to a working app from scratch
-
Controlled HTML select element in React has weird default UX
-
Leaders, you need to share organization success stories more frequently
-
Languages you can run in the browser, part 1: Python, JavaScript, SQLite
-
Coolest hard-tech companies in NYC 2021
-
Writing a Jinja-inspired template library in Python
-
Learning a new codebase: hacking on nginx
-
How to get better at recursion
-
Extending gosql to supporting LIMIT and OFFSET
-
The year in books: 20 to recommend in 2020
-
Static analysis with semgrep: practical examples using Docker
-
Emulating linux/AMD64 userland: interpreting an ELF binary
-
The impact of management teams as a decision-making group, in startups and enterprise
-
Standard ML in 2020
-
The case for comments in code
-
Writing a simple Python compiler: 1. hello, fibonacci
-
A single-node Kubernetes cluster without virtualization or a container registry
-
Generating a full-stack application from a database
-
Generating a REST API from a database
-
RFCs and asynchronous-first culture
-
Writing a SQL database from scratch in Go: 4. a database/sql driver
-
Writing a SQL database from scratch in Go: 3. indexes
-
Writing a SQL database from scratch in Go: 2. binary expressions and WHERE filters
-
Studying foreign languages with inbox zero
-
Reviewing the Surface Book 2
-
Writing a SQL database from scratch in Go: 1. SELECT, INSERT, CREATE and a REPL
-
A minimal REST API in Java
-
Writing a lisp compiler from scratch in JavaScript: 6. an x86 upgrade
-
Confusion and disengagement in meetings
-
Interpreting Go
-
Administering Kubernetes is hard
-
Unit testing C code with gtest
-
Writing an x86 emulator from scratch in JavaScript: 2. system calls
-
Writing a lisp compiler from scratch in JavaScript: 6. LLVM system calls
-
Writing an x86 emulator from scratch in JavaScript: 1. a stack and register machine
-
Tail call elimination
-
Writing a lisp compiler from scratch in JavaScript: 4. LLVM conditionals and compiling fibonacci
-
Responsibility and ownership
-
Interpreting TypeScript
-
Writing a web server from scratch: 1. HTTP and sockets
-
Writing a simple JSON path parser
-
Writing a lisp compiler from scratch in JavaScript: 3. LLVM
-
AOT-compilation of Javascript with V8
-
Transparency and communication on small teams
-
Windows
-
Writing a lisp compiler from scratch in JavaScript: 2. user-defined functions and variables
-
Make small changes and solve the problems you have
-
Writing a lisp compiler from scratch in JavaScript: 1. lisp to assembly
-
On NYC, Tokyo and Seoul
-
Why (and how) to read books
-
Compiling dynamic programming languages
-
btest: a language agnostic test runner
-
Writing to be read
-
Writing a simple JSON parser
-
Finishing up a FreeBSD experiment
-
Book Review: ANSI Common Lisp
-
Starting a minimal Common Lisp project
-
Interview with the D Language Blog: BSDScheme
-
First few hurdles writing a Scheme interpreter
-
Deploying FreeBSD on Linode unattended in minutes
-
Walking through a basic Racket web service