Twenty-four modules, one wrapper

Twenty-four modules, one wrapper

Every case study was its own Astro page. That was the first problem. Each page had its own layout logic, its own spacing decisions, its own way of handling full-bleed sections versus contained text. Some used inline styles. Some used one-off SCSS files. None of them agreed on what "default spacing" meant. Adding a new case study meant copying an old one, deleting most of it and hoping the parts...

Every case study was its own Astro page. That was the first problem. Each page had its own layout logic, its own spacing decisions, its own way of handling full-bleed sections versus contained text....

Field Notes
2d ago
We haven’t missed a Thursday in 28 weeks

We haven’t missed a Thursday in 28 weeks

We ship every week. Nobody outside the team could tell. The work was real (features, fixes, infrastructure changes) but invisible. Clients saw results on their pages. Visitors saw a polished site. Nobody saw the pace. We wanted a way to make the cadence obvious without turning it into a marketing exercise. The format we chose Plain `.txt` files in a folder. That's it. `public/release-notes/`...

We ship every week. Nobody outside the team could tell. The work was real (features, fixes, infrastructure changes) but invisible. Clients saw results on their pages. Visitors saw a polished site....

Field Notes
2d ago
What a prompt system taught us about writing

What a prompt system taught us about writing

Releases 18 Jun
The testbed nobody will see

The testbed nobody will see

Every case study was a standalone Astro page with its own layout, its own component imports and its own way of breaking on mobile. Twenty-two of them. Each one built at a different time by a different combination of people, with whatever patterns felt right that week. Changing shared behavior (a hero transition, a spacing value, a navigation pattern) meant touching every file individually. The...

Every case study was a standalone Astro page with its own layout, its own component imports and its own way of breaking on mobile. Twenty-two of them. Each one built at a different time by a...

Field Notes
2d ago
Two months in Three.js, we started over

Two months in Three.js, we started over

Two months into a Three.js prototype, the transition we wanted still wasn't there. We could see it in our heads and not on the screen. That was the moment we started over from scratch. Labs uses real-time shaders, physics-style interactions and transitions that happen at the GPU level. That behavior took roughly 6,000 lines of hand-written WebGL 2 and four months of iteration. We needed direct...

Two months into a Three.js prototype, the transition we wanted still wasn't there. We could see it in our heads and not on the screen. That was the moment we started over from scratch. Labs uses...

Field Notes
2d ago
The cache that doubled as a coordinator

The cache that doubled as a coordinator

Releases 4 Jun
Five prototypes in 50 minutes

Five prototypes in 50 minutes

Releases 25 Jun
The form we actually trust

The form we actually trust

In February 2026, we replaced our contact form with a submission pipeline we built and own. For the two years before that, it was a Pipedrive iframe inside our page. We had no control over fields, no client-side validation, no error handling beyond whatever Pipedrive showed inside its frame. When a submission failed, we found out from the client, not the system. A form we built, designed and...

In February 2026, we replaced our contact form with a submission pipeline we built and own. For the two years before that, it was a Pipedrive iframe inside our page. We had no control over fields, no...

Field Notes
2d ago
We test the revenue path

We test the revenue path

The contact form is the only page on this site that generates leads. So that's where the tests live. We don't chase coverage numbers. What we have is a targeted set of tests aimed at the things that would hurt if they broke: the forms, the pipeline that processes submissions and the CI that catches problems before production. Dependency injection as a testing technique Our submission pipeline...

The contact form is the only page on this site that generates leads. So that's where the tests live. We don't chase coverage numbers. What we have is a targeted set of tests aimed at the things that...

Field Notes
2d ago
Putting video back where it belongs

Putting video back where it belongs

Releases 11 Jun

You’re at the end of our articles… for now!