<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Juho Torkkeli</title><description>Hackathon write-ups and build stories by Juho Torkkeli: why he built things, how he approached them, and what he learned.</description><link>https://www.torkke.li</link><language>en</language><item><title>Huuto: one-tap attendance for my fire brigade, built on a Sunday</title><link>https://www.torkke.li/blog/huuto</link><guid isPermaLink="true">https://www.torkke.li/blog/huuto</guid><description>My unofficial Flutter client for Nimenhuuto: one-tap IN/OUT and calendar sync, built in a day with Claude Code from my own network captures.</description><pubDate>Wed, 30 Sep 2026 00:00:00 GMT</pubDate><category>project-story</category><category>flutter</category><category>mobile</category><category>calendar</category><category>llm</category></item><item><title>Building Message Alert: from one message format to any</title><link>https://www.torkke.li/blog/building-message-alert</link><guid isPermaLink="true">https://www.torkke.li/blog/building-message-alert</guid><description>How my iOS alert app grew from a Shortcuts experiment into a TestFlight beta, and why v2 lets people build a schema for their own alert messages.</description><pubDate>Tue, 29 Sep 2026 00:00:00 GMT</pubDate><category>project-story</category><category>ios</category><category>swift</category><category>swiftui</category><category>shortcuts</category><category>app-intents</category></item><item><title>Building MaKe, a fire hydrant map for my volunteer fire brigade</title><link>https://www.torkke.li/blog/make-fire-hydrant-map</link><guid isPermaLink="true">https://www.torkke.li/blog/make-fire-hydrant-map</guid><description>How I replaced our unit&apos;s old GIS viewer with MaKe, a Flutter hydrant map built for moving vehicles, and why the data was the hard part.</description><pubDate>Thu, 10 Sep 2026 00:00:00 GMT</pubDate><category>project-story</category><category>flutter</category><category>maps</category><category>gis</category><category>desktop</category><category>fire-service</category></item><item><title>Building a new website for Kaarinan VPK</title><link>https://www.torkke.li/blog/kaarinan-vpk-website</link><guid isPermaLink="true">https://www.torkke.li/blog/kaarinan-vpk-website</guid><description>How a fellow volunteer and I replaced my fire brigade&apos;s old WordPress site with a static Astro site, a WCAG AA audit and a typed content model.</description><pubDate>Wed, 02 Sep 2026 00:00:00 GMT</pubDate><category>project-story</category><category>astro</category><category>accessibility</category><category>web</category></item><item><title>Why I wrote my own MapLibre plugin for Flutter</title><link>https://www.torkke.li/blog/maplibre-flutter</link><guid isPermaLink="true">https://www.torkke.li/blog/maplibre-flutter</guid><description>Why maplibre_flutter runs MapLibre Native on all six Flutter platforms, and what textures, gestures and a text bug known since 2013 taught me.</description><pubDate>Wed, 19 Aug 2026 00:00:00 GMT</pubDate><category>project-story</category><category>flutter</category><category>maplibre</category><category>maps</category><category>open-source</category></item><item><title>Junction x Aalto Defence 2026: Lost in the Mes(h)s</title><link>https://www.torkke.li/blog/junction-defence-2026</link><guid isPermaLink="true">https://www.torkke.li/blog/junction-defence-2026</guid><description>How three of us won the Kova Labs challenge with an encrypted mesh network for drone swarms, written in Rust on top of raw Wi-Fi frames.</description><pubDate>Wed, 03 Jun 2026 00:00:00 GMT</pubDate><category>hackathon</category><category>hackathon</category><category>junction</category><category>rust</category><category>mesh-networking</category><category>svelte</category><category>radio</category></item><item><title>Junction 2025: Survive the Feissari</title><link>https://www.torkke.li/blog/junction-2025</link><guid isPermaLink="true">https://www.torkke.li/blog/junction-2025</guid><description>Our Junction 2025 game, where Google Gemini plays street salespeople, won the best use of Gemini award and an honorable mention in Supercell&apos;s challenge.</description><pubDate>Thu, 20 Nov 2025 00:00:00 GMT</pubDate><category>hackathon</category><category>hackathon</category><category>junction</category><category>gemini</category><category>llm</category><category>nextjs</category><category>game</category></item><item><title>Junction 2024: from floor plans to AR, third place overall</title><link>https://www.torkke.li/blog/junction-2024</link><guid isPermaLink="true">https://www.torkke.li/blog/junction-2024</guid><description>Our Junction 2024 entry for KONE&apos;s challenge turned floor plans into editable 3D models with an AR view, and it took third place overall.</description><pubDate>Fri, 15 Nov 2024 00:00:00 GMT</pubDate><category>hackathon</category><category>hackathon</category><category>junction</category><category>flutter</category><category>ar</category><category>3d</category></item><item><title>Integrating ToloGo with HomeKit</title><link>https://www.torkke.li/blog/tologo-to-homekit</link><guid isPermaLink="true">https://www.torkke.li/blog/tologo-to-homekit</guid><description>How I got my ToloGo garage door into HomeKit and made it open when I arrive by car: first with Twilio calls, now with my own Home Assistant integration.</description><pubDate>Sat, 01 Jun 2024 00:00:00 GMT</pubDate><category>project-story</category><category>home-assistant</category><category>homekit</category><category>automation</category></item><item><title>Junction 2023: second place in Huawei&apos;s Sense the Motion challenge</title><link>https://www.torkke.li/blog/junction-2023</link><guid isPermaLink="true">https://www.torkke.li/blog/junction-2023</guid><description>How we picked Huawei&apos;s Sense the Motion challenge at Junction 2023, turned traditional games into an exercise platform, and placed second in the challenge.</description><pubDate>Wed, 15 Nov 2023 00:00:00 GMT</pubDate><category>hackathon</category><category>hackathon</category><category>junction</category><category>flutter</category><category>firebase</category></item></channel></rss>