I build and write about the engineering work behind durable web products: frontend systems, build graphs, runtime boundaries, type systems, and the tiny workflow choices that decide whether a team keeps cruising or slowly turns into soup.
Most of my notes live at longho.dev, my vanity URL for the GitHub Pages site, where I poke at the places product engineering meets infrastructure.
- ποΈ Build systems: Bazel, TypeScript, monorepos, selective builds, explicit dependencies, generated metadata, and package boundaries that stay understandable.
- π§© Frontend runtime: shared browser, webview, and desktop capabilities; platform APIs; storage; telemetry; localization; and config that behaves consistently across surfaces.
- π Internationalization: localization architecture, message extraction, translation workflows, and maintaining FormatJS.
- β‘ Product engineering: fast interfaces, routing, data loading, UX systems, deploy safety, artifact verification, and tooling that remains maintainable after launch.
- π¦ Build outputs are APIs.
- π§± Boundaries should be visible in code, not only in convention.
- πͺ Generated framework wiring still has API-like failure modes.
- π Internationalization belongs in the architecture early, not as a late-game string scramble.
- π Shared runtime layers are product infrastructure, not just convenience utilities.
- π§ The best internal tooling makes the right thing feel boring.
For writing, RSS, and more engineering rabbit holes, just go to longho.dev β¨






