Notes

Notes are a free-form stream-of-consciousness of thoughts, ideas, and references. Some are more organized than others.

2026
August 6, 2026 5 min

Serving Datastar Streams

Datastar leaves the server-side implementation open-ended. Datastar provides SDKs for various languages, but those SDKs only cover the protocol on top of SSE that the Datastar JavaScript client …

March 19, 2026 11 min

Datastar Basics

Datastar is an HTMX-like framework that attempts to minimize the amount of Javascript you write using a few concepts:

2025
2024
October 1, 2024 4 min

Typescript Retrospective

As part of trying out Svelte, I’ve also stepped into the modern web development ecosystem. I previously worked primarily in Clojurescript, so my reference point is based on being away from …

September 23, 2024 3 min

Svelte 5 for ReactJS Users

Disclaimer: I didn’t learn Svelte before v5, so this is an experience report on translating Svelte 4 code to 5.

September 19, 2024 2 min

Toml Crash Course

Since migrating this site to Hugo, I felt like it was finally time to avoid learning TOML.

2020
January 5, 2020 6 min

check.statem: Generating Test Programs

One of the most interesting parts of generative testing (aka QuickCheck) is state machine testing. The original purpose I built Fox was to explore state machine testing. In particular, the talk from …

2016
August 31, 2016 5 min

Reading Code – Assertions & Assumptions

I’m fascinated by how engineers read and interpret code that they work on a daily basis. It’s no doubt different for everyone, but few explain how they go about and understand an unfamiliar codebase.

July 31, 2016 4 min

What's Your Engineering Culture?

When evaluating companies, it’s of utmost importance to learn about the engineering culture. Culture for a company is similar to scope for code – culture provides a context for getting work done.

June 30, 2016 4 min

TLDR Programming Concepts

Trying to concisely describe concepts is an interesting exercise. The ideal goal is to build upon existing concepts, but as you add more concepts you run the risk of being inconsistent.

May 31, 2016 6 min

Two Kinds of Abstractions

When someone talks about abstractions, they’re usually trying to make the software more flexible. But that’s usually one of two kinds of abstractions.

April 30, 2016 5 min

Design of Software Solutions

What’s the best way to model a solution? In software, there’s several common ways of building solutions that solve specific problems. It’s worth trying to identify their characteristics and the …

March 31, 2016 5 min

Editing Text (Basics)

The problem seems simple: open, edit, and save text files. This can range from JSON files to source code like every other editor.

February 29, 2016 2 min

Observation

The more you learn, the more this skill seems to be necessary. When missing a bug or a refactor opportunity, I wonder how did I miss this? Sure, everyone wants to learn from their mistakes. But …

January 31, 2016 4 min

Modeling the Domain

Let’s mentally build an API for an e-commerce site. Let’s say we’re tasked with building the cart & checkout portion of the API. Building a RESTful API seems like the natural choice. At first, a Cart …

2015
November 30, 2015 5 min

Daily Processes Check-In

Instead of sounding prescriptive, this article is much more descriptive.

October 31, 2015 2 min

Going Fast by Going Slow

People always ask about how did you learn this or work so quickly doing that? It’s a tough question to answer elegantly. And it’s a cop-out to vaguely say I spent my free time looking into that …

September 30, 2015 3 min

Process is King

There’s a process behind every result.

August 31, 2015 5 min

Communicating as an Engineer

As an engineer, one of the most valuable skills you can have is to communicate effectively. This applies both to your fellow engineers as well as non-engineers (PMs, designers, business). Obviously, …

July 30, 2015 5 min

Mental Schemas

It is difficult to always be improving in the software industry. In creative fields, many artists talk about churn. When starting out, there’s an enormous amount of work to produce to get better. If …

June 29, 2015 4 min

Software as Bridges

Software is always challenging to explain to non-engineers and having a metaphor is valuable to explain complex concepts. Bridges happen to be a good analogy to software. But the devil is always in …

April 15, 2015 2 min

Moving On

It’s a bittersweet end to a chapter. I’ve thoroughly enjoyed my time at Pivotal Labs. I met a lot of great friends. I paired and talked with geniuses and newcomers alike. And I’d recommend anyone with …

January 31, 2015 3 min

Generative Testing

It’s no secret that I’ve been interested in testing. Most of the work I’ve done are around example-based testing. While useful, it’s interesting to look at other communities for inspiration. I’m …

2014
July 26, 2014 4 min

Reverse Engineering Objective-C

Languages that have dynamic introspection provide powerful meta-programming capabilities. This is generally done at runtime with additional memory used for storing metadata - such as types and method …

July 25, 2014 2 min

Adapting Binary Search

It’s great to use classic algorithms to solve problems at hand. Take this problem of ellipsis:

July 24, 2014 1 min

Evaluating New Techonologies

Every time you look at a new (or familiar) technology, you should ask: What are the tradeoffs?

July 7, 2014 4 min

Objective-C: Lazy Sequences

Lazy data structures are a powerful abstraction can increase the readability of your program while encouraging separation of concerns.