rssed

a collection of dev rss feeds - blogroll

Add a new feed

+

317 feeds


Notes on software development

Posts

Mojo's not (yet) Python 🔗

This is an external post of mine. Click here if you are not redirected. [...]

Source-available projects and their AI contribution policies 🔗

This is an external post of mine. Click here if you are not redirected. [...]

Open Source Contributor Spotlight: Kosta Tarasov and DataFusion 🔗

This is an external post of mine. Click here if you are not redirected. [...]

I started a software research company 🔗

I quit my job at EnterpriseDB hacking on PostgreSQL products last month to start a company researching and writing about software infrastructure. I be [...]

We have pgvector at home 🔗

This is an external post of mine. Click here if you are not redirected. [...]

Generating vector embeddings for semantic search locally 🔗

This is an external post of mine. Click here if you are not redirected. [...]

Paths of MySQL, vector search edition 🔗

This is an external post of mine. Click here if you are not redirected. [...]

Companies behind Postgres 18 development 🔗

This is an external post of mine. Click here if you are not redirected. [...]

LLMs and your career 🔗

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 [...]

Distinguishing yourself early in your career as a developer 🔗

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 [...]

Year in community 🔗

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 [...]

Year in books 🔗

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 [...]

Is psql's scripting language Turing complete? Or: fibonacci in psql 🔗

This is an external post of mine. Click here if you are not redirected. [...]

An individual can change an organization 🔗

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 [...]

Transaction pooling for Postgres with pgcat 🔗

This is an external post of mine. Click here if you are not redirected. [...]

In response to a developer asking about systems 🔗

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 [...]

A simple clustering and replication solution for Postgres 🔗

This is an external post of mine. Click here if you are not redirected. [...]

Analytics query goes 6x faster with EDB Postgres Distributed's new analytics engine 🔗

This is an external post of mine. Click here if you are not redirected. [...]

Set up a single-node EDB Postgres Distributed cluster on Ubuntu 🔗

This is an external post of mine. Click here if you are not redirected. [...]

What even is distributed systems 🔗

Distributed systems is simply the study of interactions between processes. Every two interacting processes form a distributed system, whether they are [...]

Stack traces for Postgres errors with backtrace_functions 🔗

This is an external post of mine. Click here if you are not redirected. [...]

Want to meet people, try charging them for it? 🔗

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 [...]

Debugging memory leaks in Postgres, jemalloc edition 🔗

This is an external post of mine. Click here if you are not redirected. [...]

Cheerleading 🔗

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 [...]

Debugging memory leaks in Postgres, heaptrack edition 🔗

This is an external post of mine. Click here if you are not redirected. [...]

Burn your title 🔗

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 a protocol 🔗

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 [...]

Things that go wrong with disk IO 🔗

There are a few interesting scenarios to keep in mind when writing applications (not just databases!) that read and write files, particularly in trans [...]

Phil Eaton on Technical Blogging 🔗

This is an external post of mine. Click here if you are not redirected. [...]

Minimal downtime Postgres major version upgrades with EDB Postgres Distributed 🔗

This is an external post of mine. Click here if you are not redirected. [...]

From web developer to database developer in 10 years 🔗

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 [...]

Edit for clarity 🔗

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 [...]

An explosion of transitive dependencies 🔗

A small standard library means an explosion in transitive dependencies. A more comprehensive standard library helps you minimize dependencies. Don't m [...]

Embedding Python in Rust (for tests) 🔗

This is an external post of mine. Click here if you are not redirected. [...]

Logical replication in Postgres: Basics 🔗

This is an external post of mine. Click here if you are not redirected. [...]

How I run a coffee club 🔗

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 [...]

Picking up volleyball in NYC with Goodrec and New York Urban 🔗

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 [...]

1 million page views 🔗

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 [...]

Exploring Postgres's arena allocator by writing an HTTP server from scratch 🔗

This is an external post of mine. Click here if you are not redirected. [...]

Effective unemployment and social media 🔗

Being unemployed can be incredibly depressing. So much rejection. Everything seems to be out of your control. Everything except for one thing: what yo [...]

Checking linearizability in Go 🔗

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 [...]

Intuitions for Distributed Consensus by Phil Eaton 🔗

This is an external talk of mine. Click here if you are not redirected. [...]

Build a serverless ACID database with this one neat trick (atomic PutIfAbsent) 🔗

Delta Lake is an open protocol for serverless ACID databases. Due to its simplicity, scalability, and the number of open-source implementations, it's [...]

Be someone who does things 🔗

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 [...]

Obsession 🔗

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 [...]

What's the big deal about Deterministic Simulation Testing? 🔗

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 [...]

Delightful, production-grade replication for Postgres 🔗

This is an external post of mine. Click here if you are not redirected. [...]

A reawakening of systems programming meetups 🔗

This year has seen a resurgence in really high quality systems programming meetups. Munich Database Meetup, Berlin Systems Group, SF Distributed Syste [...]

A write-ahead log is not a universal part of durability 🔗

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 [...]

The limitations of LLMs, or why are we doing RAG? 🔗

This is an external post of mine. Click here if you are not redirected. [...]

Confusion is a muse 🔗

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 [...]

How I run a software book club 🔗

I've been running software book clubs almost continuously since last summer, about 12 months ago. We read through Designing Data-Intensive Application [...]

Implementing MVCC and major SQL transaction isolation levels 🔗

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 [...]

What makes a great technical blog 🔗

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 [...]

A paper reading club at work; databases and distributed systems research 🔗

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 [...]

Finding memory leaks in Postgres C code 🔗

This is an external post of mine. Click here if you are not redirected. [...]

Zig, Rust, and other languages 🔗

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 [...]

First month on a database team 🔗

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 [...]

An intuition for distributed consensus in OLTP systems 🔗

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 [...]

Writing a minimal in-memory storage engine for MySQL/MariaDB 🔗

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 [...]

Make your own way 🔗

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 [...]

Exploring a Postgres query plan 🔗

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 [...]

Writing a storage engine for Postgres: an in-memory Table Access Method 🔗

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 [...]

io_uring basics: Writing a file to disk 🔗

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 [...]

Go database driver overhead on insert-heavy workloads 🔗

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 [...]

Intercepting and modifying Linux system calls with ptrace 🔗

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 [...]

How do databases execute expressions? 🔗

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, [...]

Eight years of organizing tech meetups 🔗

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 [...]

Thinking about functional programming 🔗

Someone on Discord asked about how to learn functional programming. The question and my initial tweet on the subject prompted an interesting discussio [...]

We put a distributed database in the browser – and made a game of it 🔗

This is an external post of mine. Click here if you are not redirected. [...]

Metaprogramming in Zig and parsing CSS 🔗

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 [...]

Implementing the Raft distributed consensus protocol in Go 🔗

As part of bringing myself up-to-speed after joining TigerBeetle, I wanted some background on how distributed consensus and replicated state machines [...]

Two books I recommend to developers 🔗

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 [...]

My favorite software subreddits 🔗

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 [...]

Errors and Zig 🔗

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 [...]

Notes from Neal Gabler's Walt Disney 🔗

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 [...]

Lessons learned streaming building a Scheme-like interpreter in Go 🔗

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 [...]

An effective product manager 🔗

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 [...]

The year in books: 2022 🔗

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 [...]

Favorite compiler and interpreter resources 🔗

This is an external post of mine. Click here if you are not redirected. [...]

General book recommendations 🔗

This is an external post of mine. Click here if you are not redirected. [...]

In response to a frontend developer asking about database development 🔗

This is an external post of mine. Click here if you are not redirected. [...]

Is it worth writing about? 🔗

You acquire a skill or experience through time and effort, then downplay the impact of writing and sharing the learning process. Professionals seem na [...]

A Programmer-Friendly I/O Abstraction Over io_uring and kqueue 🔗

This is an external post of mine. Click here if you are not redirected. [...]

Writing a SQL database, take two: Zig and RocksDB 🔗

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 [...]

A minimal RocksDB example with Zig 🔗

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 [...]

A database without dynamic memory allocation 🔗

This is an external post of mine. Click here if you are not redirected. [...]

A minimal distributed key-value database with Hashicorp's Raft library 🔗

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 [...]

What's the big deal about key-value databases like FoundationDB and RocksDB? 🔗

Let's assume you're familiar with basic SQL databases like PostgreSQL and MySQL, and document databases like MongoDB and Elasticsearch. You probably k [...]

SQLite has pretty limited builtin functions 🔗

This is an external post of mine. Click here if you are not redirected. [...]

Container scheduling strategies for integration testing 14 different databases in Github Actions 🔗

This is an external post of mine. Click here if you are not redirected. [...]

Implementing a simple jq clone in Go, and basics of Go memory profiling 🔗

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 [...]

One year as a solo dev building open-source data tools without funding 🔗

This is an external post of mine. Click here if you are not redirected. [...]

Let's build a distributed Postgres proof of concept 🔗

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 [...]

SQLite in Go, with and without cgo 🔗

This is an external post of mine. Click here if you are not redirected. [...]

HTML event handler attributes: down the rabbit hole 🔗

This is an external post of mine. Click here if you are not redirected. [...]

Interview With Phil of DataStation 🔗

This is an external interview. Click here if you are not redirected. [...]

Surveying SQL parser libraries in a few high-level languages 🔗

This is an external post of mine. Click here if you are not redirected. [...]

Writing a document database from scratch in Go: Lucene-like filters and indexes 🔗

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 [...]

Speeding up Go's builtin JSON encoder up to 55% for large arrays of objects 🔗

This is an external post of mine. Click here if you are not redirected. [...]

SMTP protocol basics from scratch in Go: receiving email from Gmail 🔗

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 [...]

The world of PostgreSQL wire compatibility 🔗

This is an external post of mine. Click here if you are not redirected. [...]

How to recommend books, or, stop recommending SICP 🔗

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 [...]

Bootloader basics 🔗

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 [...]

dsq: Commandline tool for running SQL queries against JSON, CSV, Excel, Parquet, and more. 🔗

This is an external post of mine. Click here if you are not redirected. [...]

Analyzing large JSON files via partial JSON parsing 🔗

This is an external post of mine. Click here if you are not redirected. [...]

The year in books: 11 to recommend in 2021 🔗

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 [...]

Writing a minimal Lua implementation with a virtual machine from scratch in Rust 🔗

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 [...]

Running SQL Server in a container on Github Actions 🔗

This is an external post of mine. Click here if you are not redirected. [...]

Implementing zip archiving in Golang: unzipping 🔗

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 [...]

Benchmarking esbuild, swc, tsc, and babel for React/JSX projects 🔗

This is an external post of mine. Click here if you are not redirected. [...]

Building a fast SCSS-like rule expander for CSS using fuzzy parsing 🔗

This is an external post of mine. Click here if you are not redirected. [...]

Exploring PL/pgSQL part two: implementing a Forth-like interpreter 🔗

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 [...]

Exploring PL/pgSQL: Strings, arrays, recursion, and parsing JSON 🔗

Next in exploring PL/pgSQL: Implementing a Forth-like interpreter PostgreSQL comes with a builtin imperative programming language called PL/pgSQL. [...]

Experimenting with column- and row-oriented datastructures 🔗

This is an external post of mine. Click here if you are not redirected. [...]

Notes on running Electron 🔗

This is an external post of mine. Click here if you are not redirected. [...]

Enumerating and analyzing 40+ non-V8 JavaScript implementations 🔗

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 [...]

Writing a simple JSON library from scratch: a tour through modern C++ 🔗

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 [...]

Parser generators vs. handwritten parsers: surveying major language implementations in 2021 🔗

Developers often think parser generators are the sole legit way to build programming language frontends, possibly because compiler courses in universi [...]

Practical? Common Lisp on the JVM: A quick intro to ABCL for modern web apps 🔗

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) [...]

Writing an efficient object previewer for JavaScript 🔗

This is an external post of mine. Click here if you are not redirected. [...]

React without webpack: fast path to a working app from scratch 🔗

This is an external post of mine. Click here if you are not redirected. [...]

Controlled HTML select element in React has weird default UX 🔗

This is an external post of mine. Click here if you are not redirected. [...]

Leaders, you need to share organization success stories more frequently 🔗

This post goes out to anyone who leads a team: managers, directors, VPs, executives. You need to share organization success stories with your organiza [...]

Languages you can run in the browser, part 1: Python, JavaScript, SQLite 🔗

This is an external post of mine. Click here if you are not redirected. [...]

Coolest hard-tech companies in NYC 2021 🔗

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 [...]

Writing a Jinja-inspired template library in Python 🔗

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. [...]

Learning a new codebase: hacking on nginx 🔗

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 [...]

How to get better at recursion 🔗

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 [...]

Extending gosql to supporting LIMIT and OFFSET 🔗

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 [...]

The year in books: 20 to recommend in 2020 🔗

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 [...]

Static analysis with semgrep: practical examples using Docker 🔗

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 [...]

Emulating linux/AMD64 userland: interpreting an ELF binary 🔗

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 [...]

The impact of management teams as a decision-making group, in startups and enterprise 🔗

Ambitious companies form management teams at every level above you, sometimes including you. Management teams meet periodically and have private chat [...]

Standard ML in 2020 🔗

Incredibly, Standard ML implementations are still actively developed. MLton, Poly/ML, MLKit, SML# and SML/NJ are the most prominent. Discussion on the [...]

The case for comments in code 🔗

When I first started programming, especially when asked for code samples, my comments lacked purpose and would often duplicate in English what the cod [...]

Writing a simple Python compiler: 1. hello, fibonacci 🔗

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 [...]

A single-node Kubernetes cluster without virtualization or a container registry 🔗

This post is a recipe for setting up a minimal Kubernetes cluster on Fedora without requiring virtualization or a container registry. These two featur [...]

Generating a full-stack application from a database 🔗

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 [...]

Generating a REST API from a database 🔗

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 [...]

RFCs and asynchronous-first culture 🔗

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 [...]

Writing a SQL database from scratch in Go: 4. a database/sql driver 🔗

Previously in database basics: 1. SELECT, INSERT, CREATE and a REPL 2. binary expressions and WHERE filters 3. indexes In this post, we'l [...]

Writing a SQL database from scratch in Go: 3. indexes 🔗

Previously in database basics: 1. SELECT, INSERT, CREATE and a REPL 2. binary expressions and WHERE filters 4. a database/sql driver In t [...]

Writing a SQL database from scratch in Go: 2. binary expressions and WHERE filters 🔗

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 [...]

Studying foreign languages with inbox zero 🔗

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 [...]

Reviewing the Surface Book 2 🔗

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 [...]

Writing a SQL database from scratch in Go: 1. SELECT, INSERT, CREATE and a REPL 🔗

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 [...]

A minimal REST API in Java 🔗

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 [...]

Writing a lisp compiler from scratch in JavaScript: 6. an x86 upgrade 🔗

Previously in compiler basics: 1. lisp to assembly 2. user-defined functions and variables 3. LLVM 4. LLVM conditionals and compiling f [...]

Confusion and disengagement in meetings 🔗

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 [...]

Interpreting Go 🔗

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 [...]

Administering Kubernetes is hard 🔗

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 [...]

Unit testing C code with gtest 🔗

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 [...]

Writing an x86 emulator from scratch in JavaScript: 2. system calls 🔗

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, [...]

Writing a lisp compiler from scratch in JavaScript: 6. LLVM system calls 🔗

Previously in compiler basics: 1. lisp to assembly 2. user-defined functions and variables 3. LLVM 4. LLVM conditionals and compiling f [...]

Writing an x86 emulator from scratch in JavaScript: 1. a stack and register machine 🔗

Better yet, take a look at this post walking through emulating x86 ELF binaries in Go: Emulating linux/AMD64 userland: interpreting an ELF binary [...]

Tail call elimination 🔗

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 [...]

Writing a lisp compiler from scratch in JavaScript: 4. LLVM conditionals and compiling fibonacci 🔗

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 and ownership 🔗

Responsibility is only possible by granting ownership and setting expectations. If you don't turn over ownership, don't expect folks to take responsib [...]

Interpreting TypeScript 🔗

In addition to providing a static type system and compiler for a superset of JavaScript, TypeScript makes much of its functionality available programm [...]

Writing a web server from scratch: 1. HTTP and sockets 🔗

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. [...]

Writing a simple JSON path parser 🔗

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 [...]

Writing a lisp compiler from scratch in JavaScript: 3. LLVM 🔗

Previously in compiler basics: 1. lisp to assembly 2. user-defined functions and variables 4. LLVM conditionals and compiling fibonacci [...]

AOT-compilation of Javascript with V8 🔗

tldr; I'm working on a AOT-compiled Javascript implementation called jsc. Many dynamically typed programming languages have implementations that compi [...]

Windows 🔗

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 [...]

Writing a lisp compiler from scratch in JavaScript: 2. user-defined functions and variables 🔗

Previously in compiler basics: 1. lisp to assembly 3. LLVM 4. LLVM conditionals and compiling fibonacci 5. LLVM system calls 6. an x [...]

Writing a lisp compiler from scratch in JavaScript: 1. lisp to assembly 🔗

Next in compiler basics: 2. user-defined functions and variables 3. LLVM 4. LLVM conditionals and compiling fibonacci 5. LLVM system ca [...]

On NYC, Tokyo and Seoul 🔗

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 [...]

Why (and how) to read books 🔗

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 [...]

Compiling dynamic programming languages 🔗

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: a language agnostic test runner 🔗

btest is a minimal, language-agnostic test runner originally written for testing compilers. Brian, an ex- co-worker from Linode, wrote the first imple [...]

Writing to be read 🔗

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 simple JSON parser 🔗

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 [...]

Finishing up a FreeBSD experiment 🔗

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 [...]

Book Review: ANSI Common Lisp 🔗

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 [...]

Starting a minimal Common Lisp project 🔗

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 [...]

Interview with the D Language Blog: BSDScheme 🔗

This is an external post of mine. Click here if you are not redirected. [...]

First few hurdles writing a Scheme interpreter 🔗

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 [...]

Deploying FreeBSD on Linode unattended in minutes 🔗

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 [...]

Walking through a basic Racket web service 🔗

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 [...]