Articles

suBPEriod - Byte Pair Encoding at speed

September 21, 2026

suBPEriod - Byte Pair Encoding at speed

C++   Performance   Tokenizers  

suBPEriod is a C++ Byte Pair Encoding encoder I wrote so I could work on speed without giving up accuracy. Unit tests require the same token ids as tiktoken, including Unicode, and a fuzzer checks that odd inputs do not hang or crash. I kept a change only when a second run and the profiles agreed. On a 100 megabyte English sample it used about half of tiktoken's time, and Chinese stayed near parity.

Tutorial Videos - Automated

August 21, 2026

Tutorial Videos - Automated

PAC Hub  

Product tutorial videos go stale the moment the UI changes. This article shows how I generate PAC Hub training videos with Playwright and Grok TTS, and why keeping them current costs pennies. The pipeline records the real product, speaks a script, and can be run again when the interface moves. A script is the source of truth, so I can regenerate a video instead of reshooting it.

Why I Am Building PAC Hub

July 1, 2026

Why I Am Building PAC Hub

PAC Hub  

I chair a Parent Advisory Council at a large elementary school, and the tools around that work add a lot of extra weight. I am building PAC Hub so parent volunteers can run a school year from one place. The aim is less toil, a cleaner handoff, and a home the next chair can inherit.

Chunking Technique Research

June 9, 2026

Chunking Technique Research

AI   Python  

After building RAG systems for technical books, I kept asking which chunking strategy actually retrieves better. I built a research platform to answer that with real vector search, LLM-as-judge ground truth, and metrics such as NDCG, MAP, and MRR. I compare fixed-length and overlap splitters with heading-aware and linguistically scored approaches. Some of this is still a heuristic, not a settled result.

Consuming Textbooks

May 28, 2026

Consuming Textbooks

AI   Learning  

I never finished technical textbooks by reading them cover to cover. This article describes how I use an LLM as a chapter-by-chapter study partner, with room for side quests and real code along the way. The point is not to hand off the understanding. It is to keep the doing in the loop so the material sticks.

Compiler - Growing Up

May 18, 2026

Compiler - Growing Up

Node.js   Compiler   LLVM  

Complect gets arrays, a 1993 demoscene fire effect, and a VS Code language server. Building all three showed me what the language still needs. This article follows those features from the language design through the implementation, including the messy parts that tutorials skip. The fire effect is the check. If the language can run a classic demo, the runtime is growing up.

Compiler - A Backend

April 3, 2026

Compiler - A Backend

Node.js   Compiler   LLVM  

Complect grew from a Babel-based transpiler into a multi-backend compiler with an LLVM code generator, user-defined functions, manual memory management, and SDL graphics. This article is the architecture behind that change. I cover how the backends split, why LLVM entered the picture, and what it took to go from emitting JavaScript to drawing a rotating cube.

Vibe Coding - Style Over Substance

January 1, 2026

Vibe Coding - Style Over Substance

AI  

AI can whisper an elegant function into a codebase, and that can hide a shallow understanding of the work. This article is my take on vibe coding, style over substance, and using AI as a sidekick rather than a replacement for the craft. I draw a line from the sci-fi companions I grew up with to how I actually write software.

HAL - Highly Adaptable Learning AI

March 18, 2025

HAL - Highly Adaptable Learning AI

Python   AI  

HAL is a retrieval-augmented generation assistant for technical books, with a WarGames-style terminal UI. I built it to ingest compiler and systems texts, chunk and embed them, store them in Qdrant, and answer questions from that store. This article is the stack, the architecture, and what I learned. It is part nostalgia project and part a real attempt to make those books searchable.

Writing a Compiler in Node.js

May 31, 2024

Writing a Compiler in Node.js

Node.js   Compiler  

This article asks whether Node.js is a reasonable place to write a compiler, using a toy language as the vehicle. I walk through the lexer, the parser, and the AST, and I explain why I started by targeting Babel instead of emitting machine code. The goal was a side project that would force me to understand Node.js streams, not a production language. What follows is the architecture, the trade-offs, and what I learned building the first version of Complect.

Contributing to Node.js Core

February 13, 2021

Contributing to Node.js Core

Node.js   Community  

My first contribution to Node.js core started from a missing piece in N-API, and this article is about finding a place to start in a large project. I cover the working groups, the review process, and what I learned from a welcoming community. The technical change matters less than understanding how a project of this size actually ships work.