Notebook

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
Product 2026-09-12 · 7 min

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
Product 7 min

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
Product 6 min

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
Product 5 min

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
Product 6 min

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
Case study </> 10 min

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
Case study </> 7 min

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
Case study </> 9 min

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
Craft note </> 7 min

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
Craft note </> 6 min

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
Craft note </> 5 min

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
Craft note </> 5 min

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.

Contact Info

Feel free to reach out for project inquiries, consulting, or longer-term collaboration. I'm open to discussing practical product work and frontend engineering opportunities.

Get in Touch

© 2026 Martin Hubalek. All rights reserved.

Martin Hubálek Business ID (IČO): 08827303 Registered office: Dolní Štěpanice 29, 514 01 Benecko, Czech Republic Registered in the Czech Trade Licensing Register Not registered for VAT