<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[Zsolt Molnár: Roamr]]></title><description><![CDATA[A hiking app, an AI, and a solo build that's really a novel. Notes from the terminal, pictures from a 2022 Camino.]]></description><link>https://molnarzs.substack.com/s/roamr</link><image><url>https://substackcdn.com/image/fetch/$s_!5Xhu!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25fb45e7-c72e-48ca-90dd-6b3ab1ff2ec2_400x400.jpeg</url><title>Zsolt Molnár: Roamr</title><link>https://molnarzs.substack.com/s/roamr</link></image><generator>Substack</generator><lastBuildDate>Thu, 25 Jun 2026 00:56:14 GMT</lastBuildDate><atom:link href="https://molnarzs.substack.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Zsolt Molnár]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[molnarzs@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[molnarzs@substack.com]]></itunes:email><itunes:name><![CDATA[Zsolt Molnár]]></itunes:name></itunes:owner><itunes:author><![CDATA[Zsolt Molnár]]></itunes:author><googleplay:owner><![CDATA[molnarzs@substack.com]]></googleplay:owner><googleplay:email><![CDATA[molnarzs@substack.com]]></googleplay:email><googleplay:author><![CDATA[Zsolt Molnár]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Roamr part 2. Set Out So You Can Return]]></title><description><![CDATA[Did you know that when you head out on a weekend hike, and you want to leave your car somewhere, you are actually solving a thesis-level package logistics problem in your head?]]></description><link>https://molnarzs.substack.com/p/roamr-part-2-set-out-so-you-can-return</link><guid isPermaLink="false">https://molnarzs.substack.com/p/roamr-part-2-set-out-so-you-can-return</guid><dc:creator><![CDATA[Zsolt Molnár]]></dc:creator><pubDate>Sat, 02 May 2026 20:20:53 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!IGqf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F044fa756-3f8e-4fdf-88e5-7755e2e14282.heic" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>How close, do you think, is the warehouse placement problem to the question of which bus to take out to the &#8220;T&#252;cs&#246;k tanya&#8221; (Cricket Farm)? The answer: it is the same task, only this time you are the package. Backpack and all.</strong></p><div class="callout-block" data-callout="true"><p>This is the second entry in the Roamr series. The first one is <a href="https://molnarzs.substack.com/p/roamr-first-entry">here</a> - what this whole thing is about, and why.</p></div><p>The map view loads slowly. A map on which exactly this task has been solved. <s>The orange-glowing sunset</s> The background shimmers in shades of black-green, slow animations drifting across it with a hypnotic kind of patience. A map, two markers, and somewhere in the middle a third one, that...</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://molnarzs.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>...hold on, I&#8217;ll be back in a minute.</p><p>Let me start over.</p><p>A few weeks ago I was sitting at the foot of a loess wall, somewhere past Cs&#225;sz&#225;rt&#246;lt&#233;s on the <a href="https://www.termeszetjaro.hu/en/tour/hiking-trail/alfoeld-blue-trail/45784453/">Hungarian Great Plain Blue Trail</a>, around 5 in the afternoon. Phone in my hand, in my head a complete railway timetable trying to optimize itself. An hour and a half, and I make it to Pincefalu in a hurry. From there a bus runs to Baja. That&#8217;s the good news, but there is bad news too: my accommodation is in Kiskunhalas. You can get there from Baja, in fact these days you can only get there through Baja - provided I actually make it by half past six.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!IGqf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F044fa756-3f8e-4fdf-88e5-7755e2e14282.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!IGqf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F044fa756-3f8e-4fdf-88e5-7755e2e14282.heic 424w, https://substackcdn.com/image/fetch/$s_!IGqf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F044fa756-3f8e-4fdf-88e5-7755e2e14282.heic 848w, https://substackcdn.com/image/fetch/$s_!IGqf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F044fa756-3f8e-4fdf-88e5-7755e2e14282.heic 1272w, https://substackcdn.com/image/fetch/$s_!IGqf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F044fa756-3f8e-4fdf-88e5-7755e2e14282.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!IGqf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F044fa756-3f8e-4fdf-88e5-7755e2e14282.heic" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/044fa756-3f8e-4fdf-88e5-7755e2e14282.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:5083849,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://molnarzs.substack.com/i/196253888?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F044fa756-3f8e-4fdf-88e5-7755e2e14282.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!IGqf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F044fa756-3f8e-4fdf-88e5-7755e2e14282.heic 424w, https://substackcdn.com/image/fetch/$s_!IGqf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F044fa756-3f8e-4fdf-88e5-7755e2e14282.heic 848w, https://substackcdn.com/image/fetch/$s_!IGqf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F044fa756-3f8e-4fdf-88e5-7755e2e14282.heic 1272w, https://substackcdn.com/image/fetch/$s_!IGqf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F044fa756-3f8e-4fdf-88e5-7755e2e14282.heic 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h6 style="text-align: right;"><strong>Picture: on the Great Plain Blue Trail, heading toward Kunfeh&#233;rt&#243;</strong></h6><p></p><p>A Sunday in this timetable looks like someone designed it as a complicated game of chance. A moment ago the theme was the soft light filtering through the trees, the play of vineyard shadows. Now it is just buses. The last three kilometers of the hike pass with phone-tapping and stress, and a bit of running. I could be running at home too.</p><p>On the Camino, this kind of question never even came up. A road on which the pilgrim only walks forward, albergue in the evening, onward in the morning, and somewhere at the very end an ocean. But on ordinary days the hike has to draw a circle somehow. You have to return somewhere, somehow. To where I left the car. To where the train home departs from. To where the accommodation is.</p><p>And if the two endpoints of the route are not close to each other, then a third one needs to be found. An origin point.</p><p>What happened at the foot of the loess wall is that, because of all this, a product development began. Yes, story-based. Which I then told to an AI back at home. Who asked back, quite good things. What does &#8220;late&#8221; mean? What does &#8220;bad connection&#8221; mean? Has it happened before? Always. Well then, this is a pattern.</p><p>So there is an everyday experience, a story. A frustration, a question.</p><p>Then out of this comes a conversation. With myself (during a hike there is time for this), with the artificial intelligence, with others. This conversation, if it ripens, gives birth to the second story, the story of product development.</p><p>And this, if I do it well, transforms into a third story, which the product tells to the user. Not &#8220;this here is a base point&#8221;, but rather: this is the place you are looking for, because here you can leave the car, next to it there is a shop where you can buy a sandwich, on the way back you&#8217;ll have to wait 30 minutes, but luckily this is where the village&#8217;s best gyros place is, it&#8217;ll be open, go in.</p><p>And from this comes the fourth story, the one that matters: the story of the user&#8217;s hike.</p><p>The answering of this question became the Hikebase, one of the sub-stories of Roamr. An app within the app, that searches for the best answer to a single question: where to leave the car.</p><p>For this, at some point, you need code. And a server. And the code always begins with a formal question, because the machine - whatever we think of it nowadays - computes, it does not narrate.</p><blockquote><p>So let&#8217;s get the math out of the way. The starting point of classical route planning: given a graph <em>G = (V, E)</em>, with nodes <em>(V)</em> being the stops and edges <em>(E)</em> the connections between them. But since &#8220;at seven in the morning different edges are alive than at ten at night&#8221;, and so on, what we are really talking about is a time-dependent graph: <em>G = (V, E, w_t)</em>, where every edge <em>e &#8712; E</em> has a weight function <em>w_t(e)</em>, giving the travel time and accessibility as a function of the departure time t (<em>w_t(e) = &#8734;</em> if that connection does not run at time t).</p><p><br>The weight, however, is not a scalar, but a vector: <em>w(e, t) = (time, distance, elevation gain, difficulty, experience, risk, &#8230;)</em>. The user&#8217;s preferences are encoded in a preference vector p, and the actual edge cost is their scalar product: <em>c(e, t) = &#10216;p(t), w(e, t)&#10217;</em>. The p itself is also time-of-day dependent - in the morning speed might dominate, around noon something like shade, at dusk a stop close to the descent.</p><p><br>The time of walking sections is not linear in distance either: we approximate it with Tobler&#8217;s hiking function, <em>v(s) = 6&#183;exp(&#8722;3.5&#183;|s + 0.05|)</em> km/h, where s is the signed slope - meaning that beyond a certain point even going downhill slows you down.</p><p><br>So the task is not simple Dijkstra, but a constrained, multi-criteria, time-dependent shortest-path search:</p><p><br><em>min &#931;&#7522; c(e&#7522;, t&#7522;)<br>s.t. &#931;&#7522; time(e&#7522;, t&#7522;) &#8804; T_max</em> (e.g. back before dark)<br><em>max&#7522; difficulty(e&#7522;) &#8804; D_user<br>t&#7522;&#8330;&#8321; = t&#7522; + time(e&#7522;, t&#7522;)</em> (time chaining: the weight of the next edge depends on when I get there)</p><p><br>... and so on. But more about this in the coming entries.</p></blockquote><p>And here we come back to the topic of the opening sentence: this is a classic <em>facility location</em> problem - a variant of the task used in logistics for placing warehouses. Given the traffic, you look for an intermediate point that minimizes the round-trip cost. The big ones, like <a href="https://www.conveyal.com/">Conveyal</a>, solve exactly this kind of problem for cities - only they optimize the journeys of millions of people, while we are now optimizing where to leave the car tomorrow.</p><p>And this is where I am now, after a net one day of AI-based development (with Claude Code). What this actually means, I will be writing about a lot in the coming entries. Yes, the UI is still chaotic, scaffolding everywhere. But on this map I can already see a bus stop where, yes, I really would leave the car if I were heading out tomorrow.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!GbuZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F464f5d3e-4fce-4f6d-a399-ae425405dc2b_2625x1736.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GbuZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F464f5d3e-4fce-4f6d-a399-ae425405dc2b_2625x1736.png 424w, https://substackcdn.com/image/fetch/$s_!GbuZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F464f5d3e-4fce-4f6d-a399-ae425405dc2b_2625x1736.png 848w, https://substackcdn.com/image/fetch/$s_!GbuZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F464f5d3e-4fce-4f6d-a399-ae425405dc2b_2625x1736.png 1272w, https://substackcdn.com/image/fetch/$s_!GbuZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F464f5d3e-4fce-4f6d-a399-ae425405dc2b_2625x1736.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!GbuZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F464f5d3e-4fce-4f6d-a399-ae425405dc2b_2625x1736.png" width="1456" height="963" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/464f5d3e-4fce-4f6d-a399-ae425405dc2b_2625x1736.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:963,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2468440,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://molnarzs.substack.com/i/196253888?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F464f5d3e-4fce-4f6d-a399-ae425405dc2b_2625x1736.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!GbuZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F464f5d3e-4fce-4f6d-a399-ae425405dc2b_2625x1736.png 424w, https://substackcdn.com/image/fetch/$s_!GbuZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F464f5d3e-4fce-4f6d-a399-ae425405dc2b_2625x1736.png 848w, https://substackcdn.com/image/fetch/$s_!GbuZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F464f5d3e-4fce-4f6d-a399-ae425405dc2b_2625x1736.png 1272w, https://substackcdn.com/image/fetch/$s_!GbuZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F464f5d3e-4fce-4f6d-a399-ae425405dc2b_2625x1736.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h6 style="text-align: right;">Picture: the current state of Hikebase. That big blue dot in the middle is the selected base.</h6><p></p><p>A practical note to close with. While the Hikebase is being built, there is a usable enough trick in Google Maps for similar situations: in the public transport route planner, by toggling between &#8220;depart at&#8221; and &#8220;arrive by&#8221;, you can also calculate backwards. With a few attempts you can sketch out the place that lies in the middle of the car-accommodation-train triangle. It is not pretty, it is slow, but I too did it this way for years. Now, however, the Hikebase gives it to me within seconds. I hope soon to you as well.</p><p>If anyone has a similar, regularly returning frustration during hiking - something about which you always tell yourself &#8220;I&#8217;ll solve this somehow one day&#8221; - I&#8217;d be glad to read it. It will not only be the Hikebase that gets built into Roamr, you know.</p><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://molnarzs.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Roamr. First entry]]></title><description><![CDATA[A hiking app, written like a novel, built with an AI.]]></description><link>https://molnarzs.substack.com/p/roamr-first-entry</link><guid isPermaLink="false">https://molnarzs.substack.com/p/roamr-first-entry</guid><dc:creator><![CDATA[Zsolt Molnár]]></dc:creator><pubDate>Tue, 21 Apr 2026 22:24:25 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!xcls!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F753e35a7-ebc9-40d9-ade5-15810f63ef91_1024x768.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Sometime back in November last year I typed into an AI to come up with a name for a hiking app. I told it roughly what the thing should do, and it threw back about ten. Around the fourth one, there it was: Roamr. It was raining outside. I said it out loud on the way from my study to the living room. It didn&#8217;t fall flat in the air, so that was the one.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xcls!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F753e35a7-ebc9-40d9-ade5-15810f63ef91_1024x768.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xcls!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F753e35a7-ebc9-40d9-ade5-15810f63ef91_1024x768.jpeg 424w, https://substackcdn.com/image/fetch/$s_!xcls!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F753e35a7-ebc9-40d9-ade5-15810f63ef91_1024x768.jpeg 848w, https://substackcdn.com/image/fetch/$s_!xcls!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F753e35a7-ebc9-40d9-ade5-15810f63ef91_1024x768.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!xcls!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F753e35a7-ebc9-40d9-ade5-15810f63ef91_1024x768.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xcls!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F753e35a7-ebc9-40d9-ade5-15810f63ef91_1024x768.jpeg" width="1024" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/753e35a7-ebc9-40d9-ade5-15810f63ef91_1024x768.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:589743,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://tergeoperferendis115759.substack.com/i/194969173?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F753e35a7-ebc9-40d9-ade5-15810f63ef91_1024x768.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!xcls!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F753e35a7-ebc9-40d9-ade5-15810f63ef91_1024x768.jpeg 424w, https://substackcdn.com/image/fetch/$s_!xcls!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F753e35a7-ebc9-40d9-ade5-15810f63ef91_1024x768.jpeg 848w, https://substackcdn.com/image/fetch/$s_!xcls!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F753e35a7-ebc9-40d9-ade5-15810f63ef91_1024x768.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!xcls!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F753e35a7-ebc9-40d9-ade5-15810f63ef91_1024x768.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p style="text-align: right;"><em><strong>Saint-Jean-Pied-de-Port, the morning I first put on the backpack for the Camino.</strong></em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://molnarzs.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>I did this once before, ten years ago. Back then with an EU grant, an office, colleagues, a business plan, and the kind of attitude where sure, failure is important because you can learn from it, and so on. But I&#8217;d rather stay unlearned, since I won&#8217;t be the one going down with this. That project went its own way, straight into the ditch, and I went mine. I didn&#8217;t stay unlearned... and now, ten years later, the same kind of idea is in front of me again, only everything around it has changed. I&#8217;m alone. There&#8217;s no office. And the code we&#8217;re going to write, most of it won&#8217;t be written by me. In fact, not even by a human.</p><p>Before I dive in, let me set one thing straight, because this is what the whole series is going to live or die on: this is not a dev blog. There won&#8217;t be code snippets and architecture diagrams here. Well, there will be, but those won&#8217;t be the point. The point is the story. How an app gets built when you spend hours every day talking to an AI, mostly on weekends and in the evenings, since during the day the focus is on earning the daily bread.</p><p>I have a phrase for this that I came up with along the way, and it&#8217;s possible someone else thought of it before me: story-based development. It came from noticing what I&#8217;m actually doing. Working with an AI isn&#8217;t coding. Vibe, maybe, but coding, no. It&#8217;s a conversation. I describe what I want, it asks back, suggests, we argue, and the picture in my head shifts along the way. This conversation has an arc, it has turning points, it has nerve-grinding stretches and moments where I lean back in my chair, or fall flat next to it. Every feature is a scene. Every refactor is a rewritten chapter.</p><p>And if that&#8217;s true, then what we&#8217;re building isn&#8217;t just an app. It&#8217;s a novel, whose end product happens to run on iOS and Android.</p><p>The novel is called Roamr. The authors are me and an AI. The reader will be you.</p><p>A few words about myself, since some is owed: my name is Zsolt, I live in Solym&#225;r, in one of its prettier parts. A village, I think, next to Budapest, where in the mornings even the neighbour&#8217;s rooster stays quiet, the silence is that big. I&#8217;m a theoretical physicist, I have a paper to prove it, but I left that path sometime in the early two thousands and drifted into software. Whether that was a good decision, I still don&#8217;t have an answer to. Maybe I won&#8217;t have one by the end of this series either. What&#8217;s certain is that something stayed with me from physics that&#8217;s coming in handy now: the belief that behind every complicated thing there&#8217;s a simpler layer worth scratching at, only to find out that this layer is also bloody complicated, but there must be something simpler behind it.</p><p>We start around tomorrow. I still don&#8217;t know what the app is going to do beyond being called Roamr. I have hunches, and a few trail markers. I don&#8217;t know either if I&#8217;ll get anywhere with it. What I do know is that I&#8217;ll write down how it happens. The good calls and the dumb dead ends, the AI&#8217;s small wonders, and the moments when I drive the laptop into the monitor with the keyboard, preferably right where I can see the Claude logo.</p><p>If something comes of this, you&#8217;ll be able to say you were here from the start. If nothing comes of it, that&#8217;s also a story, and you were here at the start of that too.</p><p>Sit down. Let the mechanical keys clack. Let&#8217;s begin.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://molnarzs.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item></channel></rss>