RSSAmplifier

Blog

Andrew Healey's Blog

Andrew Healey's blog and personal website. Software engineer, writer, creator.

healeycodes.comRSS feed ↗127 posts

Latest posts

Adding Go's defer to the TypeScript Compiler

Forking tsc to support Go's defer.

A Tiny Compiler for Data-Parallel Kernels

Exploring how compilers lower ordinary loops into explicit data-parallel kernels.

Building a Runtime with QuickJS

Building a tiny JavaScript runtime on top of QuickJS with timers, file I/O, and an event loop.

Building a Shell

I built a tiny shell in C to learn what fork, execvp, and dup2 are doing under the hood.

A Fair, Cancelable Semaphore in Go

Building a fair, cancelable semaphore in Go and the subtle concurrency issues involved.

Solving NYT's Pips Puzzle

A solver for The New York's Times' daily Pips puzzle.

Compiling a Forth

A bytecode compiler and VM for a Forth-like language.

Icepath: a 2D Programming Language

Sliding around a cave and hitting opcodes.

Counting Words at SIMD Speed

Rewriting a word counting program five times until it's 494x faster.

Optimizing My Disk Usage Program

Increasing performance by reducing thread scheduling overhead and lock contention.

Maybe the Fastest Disk Usage Program on macOS

A very fast du -sh clone for macOS.

Filesystem Backed by an LLM

FUSE filesystem where file operations are handled by an LLM.

Solving Queuedle

Writing a game solver for Queuedle.

How I Made Queuedle

A daily word-sliding puzzle game inspired by Wordle and Scrabble.

Visualizing Chess Bitboards

Brief introduction to chess bitboards and move generation with animations.

Installing NPM Packages Very Quickly

Building a package manager with a fast install step.

Building Game Prototypes with LÖVE

Chess, card games, and Lua.

Compiling Lisp to Bytecode and Running It

Extending my Lisp compiler and adding a fast virtual machine.

Generating Mazes

Visualizations and techniques for different maze generation algorithms.

Making Python Less Random

Using ptrace to intercept and modify a process's getrandom syscall.

2D Multiplayer From Scratch

Exploring patterns and systems for creating realtime browser games.

Lisp Compiler Optimizations

Smaller programs that do less work.

Lisp to JavaScript Compiler

Transpiling Lisp to JavaScript using Rust.

Adding a Line Profiler to My Language

Creating my own developer tooling, and some thoughts on line profilers.

Compressing CS2 Demos

Shrinking demo data by a factor of 13x.

A Custom WebAssembly Compiler

Making my programming language 4000x quicker, and adding a static type checker.

Rendering Counter-Strike Demos in the Browser

Building a demo player for coaches and analysts to visualize CS2 gameplay.

Porting Boolrule To Rust

Building a fast boolean expression evaluation engine.

Running Untrusted Python Code

Using seccomp and setrlimit to build a Python sandbox.

Building Family Websites

The highest user-joy-per-visit than any other project I'll ever work on.

My Own Python Web Framework

Using Vercel's Build Output API to explore some framework ideas.

My Time At The Recurse Center

Thoughts and reflections on my six week batch.

Sandboxing JavaScript Code

An overview of the sandboxing landscape, and some experiments with Deno.

Implementing Highlighting, Search, and Undo

How I added three new features to my text editor.

Making a Text Editor with a Game Engine

Writing my own quirky version of nano using the 2D game engine Ebitengine.

Profiling and Optimizing an Interpreter

Rewriting library code to speed up my interpreter benchmark by 28%.

Adding For Loops to an Interpreter

Extending an existing tree-walk interpreter step by step.

A Personal File Share CLI

Sharing files with my friends from the terminal.

CodeGuessr

Building a guessing game for popular open source projects.

Recent Projects I Didn't Finish

A few ideas I tried. Including flamegraphs, fast HTTP routing, and infinite chess.

Virtual Ants

Artificial life and Langton's ant.

Implementing Bitcask, a Log-Structured Hash Table

Shipping a speedy key/value store for datasets larger than memory.

Building and Solving Sokoban

Creating an automated solver for Sokoban puzzles.

Beating grep with Go

Writing a fast file searching program and benchmarking it.

When I'm Sad My Computer Sends Me Cats

I wrote a program that sends cats to my phone when I'm sad at the computer.

Designing a Code Playground for Adventlang

Using Web Workers and WebAssembly to build a speedy UI.

Designing a Programming Language for Advent of Code

What is the minimum amount of features I need to not hate my life during this festive season?

DOOM Rendered via Checkboxes

WebAssembly meets 16000 HTML checkboxes.

Porting Niceware to Rust

The sensation of incremental progress when programming with Rust.

Creating the Golfcart Programming Language

Writing an interpreter from scratch.