The way I work.

Four habits I keep coming back to in serious work. Each one is wired into the site you're reading — the column on the right is the receipt, pulled straight from the source. Crack open devtools any time you want to check my math.

№ 01 Systems

I build in rings.

I split a system into rings — the most important things in the middle, the optional things on the outside. You should be able to peel off any feature without breaking the core. This site is wired exactly that way: a tiny kernel at the center, mode renderers in the middle, optional features at the edge.

Keeping the rings honest is forced clarity. The bus doesn't know about modes; modes don't know about features; features don't know about each other. Coupling is what makes systems brittle — the boundary is where I draw the line.

assets/
├── kernel/    bus, router, mode, loader
├── modes/     terminal · swiss
├── features/  indicator · snippets
│              banner · keys
└── tokens/    palette + base
№ 02 Speed

Every byte earns its place.

I treat dependencies and code lines like ingredients — every one has to earn its spot. This site has no third-party libraries, no build step, and a hard rule that no file is allowed to grow past 150 lines. (A small script checks all of that on save.)

Constraints aren't about being a purist; they're how I keep the codebase legible six months later. The first time I cut a feature because a file was creeping past the line limit, I realized I didn't need that feature anyway. Fast is a side-effect of small.

deps
0
files
17
longest
149 lines
average
66 lines
fonts
system
build
none
№ 03 Craft

Source is the product.

Open devtools right now. The HTML, CSS, and JavaScript you'll see is the same code I edited — no compiler in between, no Shadow DOM hiding things. Every file opens with a short comment naming what it's for, what it depends on, and what it deliberately won't do.

The reader I'm writing for is a senior engineer poking around for ten minutes. Comments explain why something is the way it is — names handle the what.

/*
 * mode-manager.js — owns <html data-mode>.
 *   Wraps swap in a View Transition with
 *   reduced-motion fallback. Emits 'mode:change'.
 * Dependencies: ./event-bus.js
 * Invariants: data-mode set inline before paint.
 * Non-goals: no UI; no scheduling.
 */
№ 04 Proof

Numbers over adjectives.

"Faster" is unfalsifiable. "P99 dropped from 412ms to 89ms after dropping the N+1 query" isn't. When I claim something about performance, I want a number behind it and a script that reproduces it. Otherwise the optimization didn't really happen.

This site has a budget too — the table on the right. They're not impressive numbers, just ones I picked on purpose and then held myself to.

metrictarget
first paint< 100 ms
transfer< 50 KB
CLS0
INP1 frame
fontssystem
Patterns

Habits I keep coming back to.

At scale

Where I've put this to work.

Past here the source goes private. The four above are the part I can prove on this page; the rest you take on the numbers — or on a call.

For fun

Here are some things I made for myself.

The rest of the workshop lives at github.com/Linh35.

If a team treats the work like this, I'd love to talk. About · linh@lelinh.dev · github.com/Linh35 · LinkedIn