~/blog

Field notes.

Deep dives into system architecture, engineering practices, and lessons learned building scalable products — with the occasional detour into life beyond the terminal.

28 posts · 71 tags · English & 中文
Also: Podcast · Talks

Two Tools for the Human in the Loop

I shipped two small, local, single-purpose tools in one week. Bogyman tells me which coding agent is waiting on me, on what, and for how long. Tinycap turns what is on my screen into a small file I can drop into a pull request. Both exist because the job left to the person is supervision.

16 min

What Changed in LLMs, 2017 to 2026

Five products turned the language model from something you talk to into something that acts for you. Each one handed the model a job a person used to do — and handed the person a new one back.

13 min

Product Bets and the Reflection of Engineering Inside a Product Org

Three days at a Product Summit — 1H reflection, 2H big bets, and a day of open proposals — left me with more questions about engineering than about product. Notes on the gaps between top-down and bottom-up, early and burned-out AI adopters, and what a "bet" actually is.

7 min

The Engineer Becomes the Editor

I built a three-platform AI product alone for $725 of tooling and under $45/month to run. The interesting part was never the speed — it was what it changed about how I would lead a team.

10 min

Building GroceryTrack: From a Pile of Receipts to Users I Never Expected

How I went from idea to a live receipt-scanning app in one day, and what 444 receipts, the first 100 users, and an unexpected Canadian audience taught me about building in the LLM era.

20 min

Share Packages, Not Applications: 3 Years of a Multi-Brand Next.js Monorepo

Three years modernizing a multi-brand healthcare platform — what I learned about monorepos, GraphQL gateways, and why sharing packages beats sharing apps.

42 min

My 2025 Reflection: A Year of AI, Exploration, and Growth

Personal reflections on 2025: navigating the AI revolution, rediscovering photography, traveling across continents, and finding balance in a year of rapid change.

8 min

Chasing Stories Across the British Isles

A Winter Journey Through the UK and Ireland: Exploring London, Edinburgh, Dublin, and More

8 min

The Toolbox For Principal Software Engineers

What I've learned about building systems, patterns, and clarity in a multi-brand environment

9 min

The Field Guide for Learning Swimming as an Adult

From zero laps to 1000 yards: A practical, honest guide to learning swimming as an adult, including what gear to buy, how to structure lessons, and what actually works.

12 min

Why Re-Platforming Matters: A Strategic Guide to Technology Transformation

A comprehensive guide exploring when, why, and how organizations should approach re-platforming initiatives to drive business growth and technological advancement.

8 min

Leading Without Authority as an Individual Contributor

How individual contributors can lead effectively without formal authority—through influence, expertise, and collaborative strategies.

8 min

Takeaways From GraphQL Summit 2022

GraphQL Summit 2022 takeaways: the 5 talks I recommend from 22, including Netflix and Fidelity on Apollo Federation, Reddit’s supergraph and Apollo Router 1.0.

8 min

Bye 2021, Hello 2022

Moving to the suburbs, running half the days of the year, baking sourdough and getting a driver's license — what I started in 2021 and want to try next.

1 min

SEO: The Secret Sauce for Making Online Grocery Shopping Popular

Single page apps and search crawlers don't mix, and grocery adds store-level assortment on top. Weighing SSR, NoScript tags and prerendering for bots.

7 min

Order Status, The Long Awaited Feature

Shipping Order Status at Peapod: push notifications, invoice emails, and a 30-minute ETA in place of a two-hour window, plus what the usage data showed.

3 min

2017 Year At A Glance

A year of meal kits, food waste and a grocery co-op, alongside shipping Order Status at Peapod, starting a hackathon and mentoring our first interns.

6 min

When The Night Is Falling, We Need The Dark Theme

I injected CSS into an Electron build of Peapod.com to give it a night mode. What inverted badly, and the Chrome extension it eventually turned into.

3 min

What Are The Two Hard Things In Computer Science?

Naming things and vertically centering things. Four ways to center in CSS — absolute, table cell, flexbox and grid — with tradeoffs, plus BEM naming.

3 min

TD, Or Not TD, That Is The Question

Our order confirmation email broke only in the Android Gmail IMAP app. The fix was swapping semantically correct TH cells for TD. HTML email has no standard.

3 min

A Not-so-brief Landing Page History of Peapod

Peapod took grocery orders in 1989 with no browser required. A visual tour of its landing page from the MS-DOS blue screen through the flat UI era.

5 min

Web Accessibility: Designing The User Experience With All Users In Mind

Why Peapod audits for WCAG 2.0 Level AA, and how we shipped it: site-wide high-contrast mode, full keyboard navigation, and tested VoiceOver support.

6 min

Cooking & Coding

A year of cooking unfamiliar cuisines taught me what engineering does: you get good by practicing, reading and failing. Plus the daily rules I set.

3 min

Why Scala Can Help You to Build a More Reliable Service

Coming from C, Java and PHP, I assumed languages were interchangeable. Immutable variables and first-class functions in Scala changed my mind.

4 min

Printable, Shareable and Responsive Design of Certificate

Bootstrap made the certificate responsive in minutes; printing it took much longer. Why DOMPDF, TCPDF and jsPDF fell short, and how media queries fixed it.

3 min

HowdyBarber: A scripting way to check my barber's availability

My barber's booking system had no public API, so I scripted the undocumented one behind their web app — and found it had no authentication at all.

3 min

How I used Docker for LaTeX On macOS Yosemite/Sierra

MacTeX is a huge download. How I compile .tex files from any editor with one Docker command, updated for the 2026 rebuild with latexmk and XeLaTeX.

6 min
Stay in the loop

New essays, in your inbox.

Get notified when I publish on engineering, product thinking, and the occasional life lesson. Two posts a month at most — no spam, unsubscribe anytime.

Also available as a podcast — “Think Inside of the Box.”