<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Martin Hubálek — Notebook</title>
    <link>https://martinhubalek.cz/en/blog</link>
    <description>Notes on the apps I build (LingoSnap, Navixer and others), plus Angular and UX/UI craft.</description>
    <language>en-US</language>
    <atom:link href="https://martinhubalek.cz/en/feed.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Building a Weather Platform That Doesn&apos;t Blow Its API Budget</title>
      <link>https://martinhubalek.cz/en/blog/weather-intouch-jak-jsem-postavil-weather-platformu</link>
      <guid isPermaLink="true">https://martinhubalek.cz/en/blog/weather-intouch-jak-jsem-postavil-weather-platformu</guid>
      <description>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.</description>
      <pubDate>Sun, 14 Jun 2026 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>Serving Thousands of Users With One Paid API Call per Location</title>
      <link>https://martinhubalek.cz/en/blog/weather-intouch-jedno-volani-na-lokalitu</link>
      <guid isPermaLink="true">https://martinhubalek.cz/en/blog/weather-intouch-jedno-volani-na-lokalitu</guid>
      <description>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.</description>
      <pubDate>Fri, 12 Jun 2026 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>Doing Official Weather Alerts Right: CAP, Attribution, and Extensibility</title>
      <link>https://martinhubalek.cz/en/blog/weather-intouch-oficialni-vystrahy-cap</link>
      <guid isPermaLink="true">https://martinhubalek.cz/en/blog/weather-intouch-oficialni-vystrahy-cap</guid>
      <description>Government alerts are free and public — but &quot;just display them&quot; is a trap: different sources, severity scales, mandatory attribution, expiry, local time zones.</description>
      <pubDate>Wed, 10 Jun 2026 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>A Readable Hourly Weather Chart: Chart.js, 4 Series, 7 Days</title>
      <link>https://martinhubalek.cz/en/blog/weather-intouch-hodinovy-graf-chartjs</link>
      <guid isPermaLink="true">https://martinhubalek.cz/en/blog/weather-intouch-hodinovy-graf-chartjs</guid>
      <description>An icon says &quot;rain today.&quot; A chart says &quot;rain 2–4pm, then wind picks up.&quot; How to fit 4 series and 168 hours into one readable Chart.js graph.</description>
      <pubDate>Mon, 08 Jun 2026 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>A Smooth Precipitation Radar: Leaflet, Frame Crossfade, and Lazy Init</title>
      <link>https://martinhubalek.cz/en/blog/weather-intouch-radar-srazek-leaflet</link>
      <guid isPermaLink="true">https://martinhubalek.cz/en/blog/weather-intouch-radar-srazek-leaflet</guid>
      <description>The radar is the most &quot;live&quot; 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.</description>
      <pubDate>Sat, 06 Jun 2026 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>Why I Wrote My Own SSG Instead of Reaching for Astro</title>
      <link>https://martinhubalek.cz/en/blog/weather-intouch-vlastni-ts-ssg</link>
      <guid isPermaLink="true">https://martinhubalek.cz/en/blog/weather-intouch-vlastni-ts-ssg</guid>
      <description>For a three-page site in 20 languages, Astro or Next is overkill. A few hundred lines of esbuild and tsx do the same — and I understand every line.</description>
      <pubDate>Thu, 04 Jun 2026 00:00:00 +0000</pubDate>
    </item>
    <item>
      <title>Free Data as the Backbone, Paid API Only for the Peak</title>
      <link>https://martinhubalek.cz/en/blog/weather-intouch-free-paste-i-placene-data</link>
      <guid isPermaLink="true">https://martinhubalek.cz/en/blog/weather-intouch-free-paste-i-placene-data</guid>
      <description>Open-Meteo covers most of the forecast for free. Paid OpenWeather is only touched for a few instant values — and if it drops, the app keeps running.</description>
      <pubDate>Tue, 02 Jun 2026 00:00:00 +0000</pubDate>
    </item>
  </channel>
</rss>
