What I build and what I learn along the way
Plain-language introductions to the products I build, plus case studies and craft notes on how they are put together.

Weather InTouch: The App That Warns You Before the Weather Turns
Most weather apps show you the weather. This one warns you about it — with your own rules, official alerts, and an honest tally of how often it gets things right.

From "It Will Rain" to "Tell Me When" — Weather Rules in Plain Words
A general forecast will not tell you whether you can pour concrete tomorrow. Your own rule will — written as a plain sentence, delivered where you actually look.

The App That Grades Its Own Forecast
Forecasts promise a lot and nobody ever checks them afterwards. Weather InTouch keeps its own tally: what it said yesterday, what actually happened, and by how many minutes it was off.

Just Ask About the Weather in Plain Words
Tables and icons answer a question you never asked. The assistant in Weather InTouch answers yours — grounded in the actual forecast, not in a hunch.

Official Warnings From Seven Countries — And Why That Is Hard
Storm warnings come from a national weather service, not from an app. Weather InTouch follows seven of them — and lines them up so they read the same in a country whose weather service you have never seen.

Building a Weather Platform Whose Costs Track Locations, Not Users
Forecasts are a free commodity. The value is doing something proactive with them — without burning your paid-API budget. A case study of a full-stack TypeScript monorepo.

One Upstream API Call per Location, However Many Users Arrive
A paid weather API bills per call. A naive cache still kills you when 500 people in one city open the app the same second. The fix: two-layer single-flight.

Doing Official Weather Alerts Right: CAP, Attribution, and Extensibility
Government alerts are free and public — but "just display them" is a trap: different sources, severity scales, mandatory attribution, expiry, local time zones.

A Readable Hourly Weather Chart: Chart.js, 4 Series, 7 Days
An icon says "rain today." A chart says "rain 2–4pm, then wind picks up." How to fit 4 series and 168 hours into one readable Chart.js graph.

A Precipitation Radar in Leaflet: Smooth, and Only Once It Is Seen
The radar is the most "live" part of the app — and the heaviest on performance and privacy. How to animate it smoothly, load it only when seen, and handle third-party tiles.

Why I Wrote My Own SSG Instead of Reaching for Astro
For a marketing site in 20 languages, Astro or Next is overkill. A few thousand lines of esbuild and tsx do the same — and I understand every line.

Free Data as the Backbone, Paid Overlay Behind a Switch — and Why It Is Off
Open-Meteo covers the whole forecast for free. The paid OpenWeather overlay only touched a few instant values — today it is switched off and the app runs on.