Top all-time · #676
Notes on software development
Personal blog · notes.eatonphil.comprogrammingsystems
Notes on software development is a personal blog at notes.eatonphil.com about programming and systems. Since 2016, 93 different Hacker News readers have linked it 312 times, most often “Writing a storage engine for Postgres: An in-memory table access method (2023)”. It is still writing: the last post was on 2026-10-29, and you can follow it by feed.
Rarely recommended · 4 of 40 sampled comments recommend it?
Why HN links it
HN readers link Phil Eaton's posts as hands-on guides to building databases, emulators, parsers and compilers from scratch, and for database internals such as indexes.
- Recommended for · 4 comments
- One commenter finds it super interesting and lacking fluff; two enjoyed it; one likes the site's design.
Summarised by Claude from a sample of 40 HN comments that link here. Each comment is marked recommending, critical or neutral (citing without judging); how this works.
Notes on software development
Most-linked posts?
- Writing a storage engine for Postgres: An in-memory table access method (2023)8 people · 8 mentions · first linked 2023-11-02
- Implementing MVCC and major SQL transaction isolation levels6 people · 6 mentions · first linked 2024-05-16
- Writing a SQL database, take two: Zig and RocksDB5 people · 7 mentions · first linked 2022-11-14
- Parser generators vs. handwritten parsers: surveying major languages in 20215 people · 7 mentions · first linked 2021-08-21
- Is it worth writing about?5 people · 5 mentions · first linked 2022-12-02
- LLMs and Your Career5 people · 5 mentions · first linked 2026-01-19
- Writing a SQL database from scratch in Go5 people · 5 mentions · first linked 2020-04-12
- Writing a minimal Lua implementation with a virtual machine from scratch in Rust4 people · 6 mentions · first linked 2021-12-28
- Intercepting and modifying Linux system calls with ptrace4 people · 5 mentions · first linked 2023-10-01
- Enumerating and analyzing 40 non-V8 JavaScript implementations4 people · 5 mentions · first linked 2021-09-21
What Hacker News says?
I've been writing a sql parser + memory backend in rust called rustsql[1] I've been following this[2] go tutorial and converting code into rust. [1] https://github.com/madushan1000/rustsql [2] https://notes.eatonphil.com/database-basics.html
Comment linking /database-basics.html
on “Ask HN: What's your quarantine side project?”Submitted Writing a SQL database from scratch in Go as a story · 430 points
HN discussionHere's the first post: http://notes.eatonphil.com/emulator-basics-a-stack-and-regis...
Comment linking /emulator-basics-a-stack-and-register-machine.html
on “I don't know how CPUs work so I simulated one in code”Submitted A reawakening of systems programming meetups as a story · 392 points
HN discussionYeah maybe it would force you to get too close to the code, I don't know SQLite well enough. When I do surveys of software I try to provide links to source (mostly just the relevant file or directory) so folks can verify for themselves. For example when looking into the parsers behind Postgres-compatible DBs [0] and parser techniques in a few major language implementations [1]. But both those posts are at a higher-l…
Comment linking /parser-generators-vs-handwritten-parsers-survey-2021.html
on “SQLite Internals: Pages and B-trees”Submitted I run a software book club as a story · 327 points
HN discussionThis feels like the sort of thing that has led to the development of deterministic simulation testing (DST) techniques as pioneered by FoundationDB and TigerBeetle. https://notes.eatonphil.com/2024-08-20-deterministic-simulat... I hope something like this becomes popular in the Rust/Tokio space. It seems like Turmoil is that? https://tokio.rs/blog/2023-01-03-announcing-turmoil
Comment linking /2024-08-20-deterministic-simulation-testing.html
on “Futurelock: A subtle risk in async Rust”Submitted Standard ML in 2020 as a story · 313 points
HN discussionI have also enjoyed his blog. Here's another way to understand indexes by implementing them in a simple SQL database. This includes both storing/retrieving indexed values and also deciding whether or not a query has an applicable index. https://notes.eatonphil.com/database-basics-indexes.html
Comment linking /database-basics-indexes.html
on “Advanced SQL and database books and resources”Submitted Let's build a distributed Postgres proof of concept as a story · 279 points
HN discussionUnexpected, but welcome, to see the first part in the series on here right now. I just published the second part [0] today, featuring binary expressions and WHERE filtering. It also updates the REPL to use a prettier table-printing library and a readline implementation. The repo [1] has some additional bare notes on architecture and links to similar, more mature projects (primarily go-mysql-server and ramsql). [0] h…
Comment linking /database-basics-expressions-and-where.html
on “Writing a SQL database from scratch in Go”Submitted Compiler basics: Lisp to Assembly as a story · 242 points
HN discussionI've read a similar series from Phil back in 2020: "Writing a SQL database from scratch in Go" https://notes.eatonphil.com/database-basics.html The code is available on GitHub: https://github.com/eatonphil/gosql (it's specifically a PostgreSQL implementation in Go). It's cool to build a database in 3000 lines, but for a real production-ready database you'll need testing. Would love to see some coverage on correctnes…
Comment linking /database-basics.html
on “Build a Database in 3000 Lines with 0 Dependencies”Submitted SMTP protocol basics from scratch in Go: receiving email from Gmail as a story · 203 points
HN discussionI thoroughly enjoyed what little I read of this, bookmarked it for later -- thanks! https://notes.eatonphil.com/emulating-amd64-starting-with-el...
Comment linking /emulating-amd64-starting-with-elf.html
on “Writing a Game Boy Emulator in OCaml”Submitted Want to meet people, try charging them for it? as a story · 192 points
HN discussionMy unpopular opinion is to emulate an extremely reduced subset of x86. For example, jump to main and emulate the result of `int main() {return 2;}` compiled with gcc. You already have the compiler (no need to cross compile), you already have the decompiler and you can run the binary on the reference machine without an emulator. You save so much time having this entire toolchain already and you can start emulating si…
Comment linking /tags/emulators.html
on “Writing a Game Boy Emulator in OCaml”Submitted Parser generators vs. handwritten parsers: surveying major languages in 2021 as a story · 190 points
HN discussionNot sure if you knew this or not, but Phil Eaton (the OP) writes databases for fun[1]. This post isn't saying Postgres and MySQL aren't modern, but is more trying to get ideas for what to play around with next. [1] https://notes.eatonphil.com/database-basics.html
Comment linking /database-basics.html
on “Ask HN: What could a modern database do that PostgreSQL and MySQL can't”Submitted From web developer to database developer in 10 years as a story · 179 points
HN discussionIt's not a book but I wrote a series on writing a postgres clone from scratch in Go. https://notes.eatonphil.com/tags/database.html
Comment linking /tags/database.html
on “Write a time-series database engine from scratch”Submitted Writing a document database from scratch in Go: Lucene-like filters and indexes as a story · 168 points
HN discussionOh there are way more than 10 implementations of JavaScript before we even start counting all their distributions (Bun being a distribution of JSC, etc). https://notes.eatonphil.com/javascript-implementations.html
Comment linking /javascript-implementations.html
on “Will Bun JavaScript Take Node's Crown”Submitted Compiler Basics: LLVM as a story · 168 points
HN discussion> nobody hand-writes parsers for large languages; that's just a needless source of tedium and bugs That is absolutely not true! In fact, most major programming language implementations use handwritten parsers [0]. That said: > Using a parser generator is also a smart move since they exist already Jamie wrote the parser generator here too. So it's all the more "from scratch". [0] https://notes.eatonphil.com/parser-ge…
Comment linking /parser-generators-vs-handwritten-parsers-survey-2021.html
on “Goal: Pass all 4259065 tests in sqllogictest in 1 week”Submitted Writing a simple JSON library from scratch: a tour through modern C++ as a story · 161 points
HN discussionHere are my four: Designing Data Intensive Applications, the Google SRE book, High Performance Browser Networking, and Effective Python. https://notes.eatonphil.com/books-developers-should-read.htm...
Comment linking /books-developers-should-read.html
on “A curated list of books on Software Architecture”Submitted A write-ahead log is not a universal part of durability as a story · 159 points
HN discussionFocused on systems and design for backend devs: 1. High Performance Browser Networking 2. Designing Data-Intensive Applications 3. Site Reliability Engineering: How Google Runs Production Services 4. Effective Python: 90 Specific Ways to Write Better Python I wrote in a bit more detail here: https://notes.eatonphil.com/books-developers-should-read.htm... . Personally I would definitely not put Pragmatic Programmer,…
Comment linking /books-developers-should-read.html
on “Ask HN: Name 3-5 books that had the most impact on your career and knowledge?”Submitted What's the big deal about embedded key-value databases? as a story · 156 points
HN discussion