Mojo's not (yet) Python 🔗
This is an external post of mine. Click here if you are not redirected. [...]
a collection of dev rss feeds - blogroll
Posts
This is an external post of mine. Click here if you are not redirected. [...]
This is an external post of mine. Click here if you are not redirected. [...]
This is an external post of mine. Click here if you are not redirected. [...]
I quit my job at EnterpriseDB hacking on PostgreSQL products last month to start a company researching and writing about software infrastructure. I be [...]
This is an external post of mine. Click here if you are not redirected. [...]
This is an external post of mine. Click here if you are not redirected. [...]
This is an external post of mine. Click here if you are not redirected. [...]
This is an external post of mine. Click here if you are not redirected. [...]
The most conservative way to build a career as a software developer is 1) to be practical and effective at problem solving but 2) not to treat all exi [...]
Sometimes I get asked questions that would be more fun to answer in public. All letters are treated as anonymous unless permission is otherwise gr [...]
This year I ran three book club readings over email with 1,230 unique attendees. I ran 12 coffee club meetups in midtown Manhattan with 170 unique att [...]
Among the 50 books I read in 2025, I recommend the following 11 non-fiction and 7 fiction works (complete list here). These were the 18 books that I r [...]
This is an external post of mine. Click here if you are not redirected. [...]
One of the biggest lessons I learned early in my career was from Drew DeVault at Linode, 10 years ago. He was one of the youngest developers in the co [...]
This is an external post of mine. Click here if you are not redirected. [...]
Sometimes I get asked questions that would be more fun to answer in public. All letters are treated as anonymous unless permission is otherwise gr [...]
This is an external post of mine. Click here if you are not redirected. [...]
This is an external post of mine. Click here if you are not redirected. [...]
This is an external post of mine. Click here if you are not redirected. [...]
Distributed systems is simply the study of interactions between processes. Every two interacting processes form a distributed system, whether they are [...]
This is an external post of mine. Click here if you are not redirected. [...]
I have been blogging consistently since 2017. And one of my goals in speaking publicly was always to connect with like-minded people. I always left my [...]
This is an external post of mine. Click here if you are not redirected. [...]
At work we're so absorbed in the difficulties we face that it becomes easy to forget what we appreciate and what we value in our coworkers. On social [...]
This is an external post of mine. Click here if you are not redirected. [...]
I've been a developer, a manager, a cofounder, and now I'm a developer again. I ran away from each position until being a founder because I felt like [...]
Transactions are not an intrinsic part of a storage system. Any storage system can be made transactional: Redis, S3, the filesystem, etc. Delta Lake a [...]
There are a few interesting scenarios to keep in mind when writing applications (not just databases!) that read and write files, particularly in trans [...]
This is an external post of mine. Click here if you are not redirected. [...]
This is an external post of mine. Click here if you are not redirected. [...]
Last month I completed my first year at EnterpriseDB. I'm on the team that built and maintains pglogical and who, over the years, contributed a good c [...]
I have the fortune to review a few important blog posts every year and the biggest value I add is to call out sentences or sections that make no sense [...]
A small standard library means an explosion in transitive dependencies. A more comprehensive standard library helps you minimize dependencies. Don't m [...]
This is an external post of mine. Click here if you are not redirected. [...]
This is an external post of mine. Click here if you are not redirected. [...]
I started the NYC Systems Coffee Club in December of 2023. It's gone pretty well! I regularly get around 20 people each month. You bring a drink if yo [...]
I was so intimidated to go at first, but it is in fact easy and fun to start playing beginner volleyball in New York. The people are so friendly and w [...]
I was delighted to notice this morning that this site has recently passed 1M page views. And since Murat wrote about his 1M page view accomplishment a [...]
This is an external post of mine. Click here if you are not redirected. [...]
Being unemployed can be incredibly depressing. So much rejection. Everything seems to be out of your control. Everything except for one thing: what yo [...]
You want to check for strict consistency (linearizability) for your project but you don't want to have to deal with the JVM. Porcupine, used by a numb [...]
This is an external talk of mine. Click here if you are not redirected. [...]
Delta Lake is an open protocol for serverless ACID databases. Due to its simplicity, scalability, and the number of open-source implementations, it's [...]
I wrote last month that what you want to do is one of the most useful motivations in life. I want to follow that up by saying that the only thing more [...]
In your professional and personal life, I don't believe there is a stronger motivation than having something in mind and the desire to do it. Yet the [...]
Bugs in distributed systems are hard to find, largely because systems interact in chaotic ways. And even once you've found a bug, it can be anywhere f [...]
This is an external post of mine. Click here if you are not redirected. [...]
This year has seen a resurgence in really high quality systems programming meetups. Munich Database Meetup, Berlin Systems Group, SF Distributed Syste [...]
A database does not need a write-ahead log (WAL) to achieve durability. A database can write its long-term data structure durably to disk before retur [...]
This is an external post of mine. Click here if you are not redirected. [...]
Some of the most interesting technical blog posts I read come from, and a common reason for posts I write is, confusion. You're at work and you start [...]
I've been running software book clubs almost continuously since last summer, about 12 months ago. We read through Designing Data-Intensive Application [...]
In this post we'll build a database in 400 lines of code with basic support for five standard SQL transaction levels: Read Uncommitted, Read Committed [...]
I want to explain why the blogs in My favorite technical blogs are my favorite. That page is solely about non-corporate tech blogs. So this post is to [...]
I started a paper reading club this week at work, focused on databases and distributed systems research. I posted in a general channel about the premi [...]
This is an external post of mine. Click here if you are not redirected. [...]
Having worked a bit in Zig, Rust, Go and now C, I think there are a few common topics worth having a fresh conversation on: automatic memory managemen [...]
A little over a month ago, I joined EnterpriseDB on a distributed Postgres product (PGD). The process of onboarding myself has been pretty similar at [...]
Distributed consensus in transactional databases (e.g. etcd or Cockroach) is a big deal these days. Most often under the hood are variations of log-ba [...]
I spent a week looking at MySQL/MariaDB internals along with ~80 other devs. Although MySQL and MariaDB are mostly the same (more on that later), I fo [...]
Over the years, I have repeatedly felt like I missed the timing for a meetup or an IRC group or social media in general. I'd go to a meetup every so o [...]
I learned this week that you can intercept and redirect Postgres query execution. You can hook into the execution layer so you're given a query plan a [...]
With Postgres 12, released in 2019, it became possible to swap out Postgres's storage engine. This is a feature MySQL has supported for a long time. T [...]
King and I wrote a blog post about building an event-driven cross-platform IO library that used io_uring on Linux. We sketched out how it works at a h [...]
The most popular SQLite and PostgreSQL database drivers in Go are (roughly) 20-76% slower than alternative Go drivers on insert-heavy benchmarks of mi [...]
How software fails is interesting. But real-world errors can be infrequent to manifest. Fault injection is a formal-sounding term that just means: try [...]
Databases are fun. They sit at the confluence of Computer Science topics that might otherwise not seem practical in life as a developer. For example, [...]
This is a collection of random personal experiences. So if you don't want to read everything, feel free to skip to the end for takeaways. I write beca [...]
Someone on Discord asked about how to learn functional programming. The question and my initial tweet on the subject prompted an interesting discussio [...]
This is an external post of mine. Click here if you are not redirected. [...]
I knew Zig supported some sort of reflection on types. But I had been confused about how to use it. What's the difference between @typeInfo and @TypeO [...]
As part of bringing myself up-to-speed after joining TigerBeetle, I wanted some background on how distributed consensus and replicated state machines [...]
Originally published on February 1, 2021. The original version included two books I don't think are actually so worthwhile. This list is down to t [...]
Originally published on December 5, 2021. If you are an experienced software developer whose only exposure to reddit is dank memes, proggit or even l [...]
At TigerBeetle these last few weeks I've been doing a mix of documenting client libraries, writing sample code for client libraries, and writing integ [...]
Disney was a celebrity by his mid-30s, Disney the company was famous by 1930s. Even though politically the 1930s was considered the decade of Roosevel [...]
I wanted to practice making coding videos so I did a four-part series on writing a basic Scheme-like language (minus macros and arrays and tons of stu [...]
There are three specific activities I have loved in some product managers I've worked with (and missed in others). tldr; Talk with customers and prosp [...]
In 2022 I finished 20 books spanning 15,801 pages. 3 more than I read in 2021, but about twice the number of pages. 3 fiction and 17 non-fiction. Ano [...]
This is an external post of mine. Click here if you are not redirected. [...]
This is an external post of mine. Click here if you are not redirected. [...]
This is an external post of mine. Click here if you are not redirected. [...]
You acquire a skill or experience through time and effort, then downplay the impact of writing and sharing the learning process. Professionals seem na [...]
This is an external post of mine. Click here if you are not redirected. [...]
For my second project while learning Zig, I decided to port an old, minimal SQL database project from Go to Zig. In this post, in ~1700 lines of code [...]
I mostly programmed in Go the last few years. So every time I wanted an embedded key-value database, I reached for Cockroach's Pebble. Pebble is great [...]
This is an external post of mine. Click here if you are not redirected. [...]
When I wrote the "build a distributed PostgreSQL proof of concept" post I first had to figure out how to use Hashicorp's Raft implementation. There we [...]
Let's assume you're familiar with basic SQL databases like PostgreSQL and MySQL, and document databases like MongoDB and Elasticsearch. You probably k [...]
This is an external post of mine. Click here if you are not redirected. [...]
This is an external post of mine. Click here if you are not redirected. [...]
In this post we'll build a basic jq clone in Go. It will only be able to pull a single path out of each object it reads. It won't be able to do filter [...]
This is an external post of mine. Click here if you are not redirected. [...]
What is CockroachDB under the hood? Take a look at its go.mod and notice a number of dependencies that do a lot of work: a PostgreSQL wire protocol im [...]
This is an external post of mine. Click here if you are not redirected. [...]
This is an external post of mine. Click here if you are not redirected. [...]
This is an external interview. Click here if you are not redirected. [...]
This is an external post of mine. Click here if you are not redirected. [...]
In this post we'll write a rudimentary document database from scratch in Go. In less than 500 lines of code we'll be able to support the following int [...]
This is an external post of mine. Click here if you are not redirected. [...]
I've never run my own mail server before. Before today I had no clue how email worked under the hood other than the very few times I've set up mail cl [...]
This is an external post of mine. Click here if you are not redirected. [...]
Many "must-read" books are not well-written. I try to read a lot, but I still have a low tolerance for bad writing and bad editing. I write this post [...]
I spent a few days playing around with bootloaders for the first time. This post builds up to a text editor with a few keyboard shortcuts. I'll be giv [...]
This is an external post of mine. Click here if you are not redirected. [...]
This is an external post of mine. Click here if you are not redirected. [...]
Last year (2021) I finished 17 books, a five year low. But that's ok! 4 fiction and 13 non-fiction. Another 30 started but not finished. Non-fiction I [...]
By the end of this guide we'll have a minimal, working implementation of a small part of Lua from scratch. It will be able to run the following progra [...]
This is an external post of mine. Click here if you are not redirected. [...]
All code for this post is available on Github. Let's take a look at how zip files work. Take a small file for example: $ cat hello.text Hello! Let's [...]
This is an external post of mine. Click here if you are not redirected. [...]
This is an external post of mine. Click here if you are not redirected. [...]
Previously in exploring PL/pgSQL: Strings, arrays, recursion and parsing JSON In my last post I walked through the basics of PL/pgSQL, the embedde [...]
Next in exploring PL/pgSQL: Implementing a Forth-like interpreter PostgreSQL comes with a builtin imperative programming language called PL/pgSQL. [...]
This is an external post of mine. Click here if you are not redirected. [...]
This is an external post of mine. Click here if you are not redirected. [...]
V8 is, I'm sure, the most used implementation of JavaScript today. Used in Chrome, (and by extension) Microsoft Edge, Node.js, etc. Safari's JavaScrip [...]
Modern C++ has a lot of cool features. Move semantics means passing around structs in functions is cheap. std::shared_ptr means I don't have to manage [...]
Developers often think parser generators are the sole legit way to build programming language frontends, possibly because compiler courses in universi [...]
In a ridiculous attempt to prove an internet wrong about the practicality of Lisp (Common Lisp specifically), I tried to get a simple (but realistic) [...]
This is an external post of mine. Click here if you are not redirected. [...]
This is an external post of mine. Click here if you are not redirected. [...]
This is an external post of mine. Click here if you are not redirected. [...]
This post goes out to anyone who leads a team: managers, directors, VPs, executives. You need to share organization success stories with your organiza [...]
This is an external post of mine. Click here if you are not redirected. [...]
For years I've kept a private list of really cool tech companies in NYC. Now that I'm funemployed it's the perfect time to publish. This list is influ [...]
In this post we'll build a minimal text templating library in Python inspired by Jinja. It will be able to display variables and iterate over arrays. [...]
I have never contributed to nginx. My C skills are 1/10. But downloading the source, hacking it up, compiling it, and running it doesn't scare me. Thi [...]
tldr; reimplement standard library functions in your favorite language without loops. Background For a few years after college I spent a lot of free t [...]
It's been a few months since I picked up gosql and I wanted to use it to prototype a SQL interface for data stored in S3. But one missing critical fea [...]
This year I finished 47 books, up from last year but not a personal best. The breakdown was 17 non-fiction and 30 fiction. Another 20-30 remain starte [...]
In this post we'll get a basic semgrep environment set up in Docker running some custom rules against our code. Existing linters Linters like pylint f [...]
In this post we'll stumble toward a working emulator for a barebones C program compiled for linux/AMD64. The approach will be slightly more so based o [...]
Ambitious companies form management teams at every level above you, sometimes including you. Management teams meet periodically and have private chat [...]
Incredibly, Standard ML implementations are still actively developed. MLton, Poly/ML, MLKit, SML# and SML/NJ are the most prominent. Discussion on the [...]
When I first started programming, especially when asked for code samples, my comments lacked purpose and would often duplicate in English what the cod [...]
In this post we'll write a Python to C compiler in Python. This is especially easy to do since Python has a builtin parser library and because a numbe [...]
This post is a recipe for setting up a minimal Kubernetes cluster on Fedora without requiring virtualization or a container registry. These two featur [...]
DBCore can now generate a TypeScript/React CRUD UI that is automatically hooked up to the generated REST API (in Go). The UI has full support for logi [...]
I recently published an alpha version of a code generation tool, DBCore, that reads a database schema from PostgreSQL or MySQL and generates an entire [...]
I hated writing documentation before working on features. But after a while I realized I couldn't communicate well enough, even with folks I had a goo [...]
Previously in database basics: 1. SELECT, INSERT, CREATE and a REPL 2. binary expressions and WHERE filters 3. indexes In this post, we'l [...]
Previously in database basics: 1. SELECT, INSERT, CREATE and a REPL 2. binary expressions and WHERE filters 4. a database/sql driver In t [...]
Previously in database basics: 1. SELECT, INSERT, CREATE and a REPL 3. indexes 4. a database/sql driver In this post, we'll extend gosql [...]
The only time I've been able to seriously, rapidly improve my ability to speak a foreign language was through intensive language courses in college. I [...]
The first few paragraphs cover what I was looking for and what I considered. Then the review. Why the Surface Book 2 I used a Macbook throughout my pr [...]
Next in database basics: 2. binary expressions and WHERE filters 3. indexes 4. a database/sql driver In this series we'll write a rudimen [...]
There's a style of Java that is a joy to write. This post will cover how to set up a basic PostgreSQL-integrated REST API using Jersey and JOOQ in a s [...]
Previously in compiler basics: 1. lisp to assembly 2. user-defined functions and variables 3. LLVM 4. LLVM conditionals and compiling f [...]
The quickest way to cut through confusion or disagreement among otherwise amiable and honest folks is to ask questions. Ask early so you don't waste t [...]
After spending some time at work on tooling for keeping documentation in sync with Go struct definitions I had enough exposure to Go's built-in parsin [...]
Kubernetes is easy to use after some exposure; it's pretty convenient too. But it is super hard to set up. eksctl is a good tool for folks who don't w [...]
This post covers building and testing a minimal, but still useful, C project. We'll use Google's gtest and CMake for testing C code. This will serve a [...]
Previously in emulator basics: 1. a stack and register machine In this post we'll extend x86e to support the exit and write Linux system calls, [...]
Previously in compiler basics: 1. lisp to assembly 2. user-defined functions and variables 3. LLVM 4. LLVM conditionals and compiling f [...]
Better yet, take a look at this post walking through emulating x86 ELF binaries in Go: Emulating linux/AMD64 userland: interpreting an ELF binary [...]
In this post we'll explore what tail calls are, why they are useful, and how they can be eliminated in an interpreter, a compiler targeting C++, and a [...]
Previously in compiler basics: 1. lisp to assembly 2. user-defined functions and variables 3. LLVM 5. LLVM system calls 6. an x86 up [...]
Responsibility is only possible by granting ownership and setting expectations. If you don't turn over ownership, don't expect folks to take responsib [...]
In addition to providing a static type system and compiler for a superset of JavaScript, TypeScript makes much of its functionality available programm [...]
Say we have some HTML: <html> <body> <h1>Hello world!</h1> </body> </html> And say we'd like to be able to render this page in a web browser. [...]
Let's say we want to implement a simple list filtering language so we can enter a.b = 12 and return only results in a list where the a column is an ob [...]
Previously in compiler basics: 1. lisp to assembly 2. user-defined functions and variables 4. LLVM conditionals and compiling fibonacci [...]
tldr; I'm working on a AOT-compiled Javascript implementation called jsc. Many dynamically typed programming languages have implementations that compi [...]
It has been six years since I last used Windows for any remotely serious software development. I've used Ubuntu, Arch, or FreeBSD since. But eventuall [...]
Previously in compiler basics: 1. lisp to assembly 3. LLVM 4. LLVM conditionals and compiling fibonacci 5. LLVM system calls 6. an x [...]
Next in compiler basics: 2. user-defined functions and variables 3. LLVM 4. LLVM conditionals and compiling fibonacci 5. LLVM system ca [...]
I’ve lived in NYC for the past year — moved here after years in Philly and after growing up in a rural community a few hours west of there. My wife is [...]
The last time I read for fun was in elementary school. Since college I knew I must read more, but I never forced myself to build the habit. Then three [...]
It can be difficult to disassociate the idea that dynamically typed programming languages are tied to byte-code interpreters (e.g. YARV Ruby, CPython, [...]
btest is a minimal, language-agnostic test runner originally written for testing compilers. Brian, an ex- co-worker from Linode, wrote the first imple [...]
There is a common struggle in the writing and maintenance of documentation, checklists, emails, guides, etc. Each provides immense value; a document m [...]
Writing a JSON parser is one of the easiest ways to get familiar with parsing techniques. The format is extremely simple. It's defined recursively so [...]
I've been using FreeBSD as my daily driver at work since December. I've successfully done my job and I've learned a hell of a lot forcing myself on CU [...]
Score: 4.5 / 5 Paul Graham and his editor(s) are excellent. His prose is light and easy to follow. The only awkward component of the book's organizati [...]
If you've only vaguely heard of Lisp before or studied Scheme in school, Common Lisp is nothing like what you'd expect. While functional programming i [...]
This is an external post of mine. Click here if you are not redirected. [...]
I started working on BSDScheme last October, inspired to get back into language implementation after my coworker built bshift, a compiler for a C-like [...]
I became a FreeBSD user over 2 years ago when I wanted to see what all the fuss was about. I swapped my y410p dual-booting Windows / Ubuntu with FreeB [...]
Racket is an impressive language and ecosystem. Compared to Python, Racket (an evolution of Scheme R5RS is three years younger. It is as concise and e [...]