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 ✨






