<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>hann.io</title>
    <description>András Hann's blog showcasing personal projects</description>
    <image>
      <url>https://hann.io/og/hann_io.png</url>
      <title>hann.io | András Hann</title>
      <link>https://hann.io</link>
    </image>
    <link>https://hann.io/</link>
    <atom:link href="https://hann.io/feed.xml" rel="self" type="application/rss+xml"/>
    <pubDate>Thu, 06 Jun 2024 00:03:14 +0200</pubDate>
    <lastBuildDate>Thu, 06 Jun 2024 00:03:14 +0200</lastBuildDate>
    <generator>Jekyll v4.2.1</generator>
    
          
        <item>
          <title>Peak performance</title>
          <description>
            <![CDATA[
            
                <p>
                  <a href="https://hann.io/articles/2023/peak-performance/">
                    <img width="1200" height="630" src="https://storage.googleapis.com/storage.hann.io/og/peak_performance.jpg" class="attachment-full size-full" alt="Peak performance" />
                  </a>
                </p>
            
            A friend of mine came to me with a really fascinating question: can we find all the peaks in Hungary, no matter how tall or short they are - a mountain, a hill or just a mound? This question led me on a long journey with many questions. What is the definition of a peak? Where do I get the data and what method do I use to identify them? And once I identified them, could I use their characteristics to understand the difference between places called peaks, mountains, or hills? As it turns out, other people have asked these questions before me and some answers are already out there.
            ]]>
          </description>
          <pubDate>Sun, 21 May 2023 20:00:00 +0200</pubDate>
          <link>https://hann.io/articles/2023/peak-performance/</link>
          <guid isPermaLink="true">https://hann.io/articles/2023/peak-performance/</guid>
          
          
          <category>php</category>
          
          <category>website</category>
          
          <category>blast_from_the_past</category>
          
        </item>
      
    
          
        <item>
          <title>Blast from the past: romkocsmak.com</title>
          <description>
            <![CDATA[
            
                <p>
                  <a href="https://hann.io/articles/2023/bftp-romkocsmak-com/">
                    <img width="1200" height="630" src="https://storage.googleapis.com/storage.hann.io/og/romkocsmak.jpg" class="attachment-full size-full" alt="Blast from the past: romkocsmak.com" />
                  </a>
                </p>
            
            In 2012, with the help of a friend, I created a website that was a simple quiz: does this bar or pub exist in Budapest? Since all the new places seemed to follow the same naming pattern, we could easily come up with a bunch of fake and real names to use in a quiz. I wrote the code in PHP, a language I was completely unfamiliar with, then put the page online at romkocsmak.com, Hungarian for "ruinbars.com". And then never advertised it anywhere. To keep it from being lost forever, I recently spent too much time getting it up and running again – and I am sharing it here.
            ]]>
          </description>
          <pubDate>Mon, 06 Feb 2023 00:00:00 +0100</pubDate>
          <link>https://hann.io/articles/2023/bftp-romkocsmak-com/</link>
          <guid isPermaLink="true">https://hann.io/articles/2023/bftp-romkocsmak-com/</guid>
          
          
          <category>php</category>
          
          <category>website</category>
          
          <category>blast_from_the_past</category>
          
        </item>
      
    
          
        <item>
          <title>I almost bumped into a friend on the Hochschwab</title>
          <description>
            <![CDATA[
            
                <p>
                  <a href="https://hann.io/articles/2022/almost-bumped-into-a-friend/">
                    <img width="1200" height="630" src="https://storage.googleapis.com/storage.hann.io/og/hochschwab.jpg" class="attachment-full size-full" alt="I almost bumped into a friend on the Hochschwab" />
                  </a>
                </p>
            
            <p>On a weekend in July 2022, a couple of friends and I decided to go for a hike in the Hochschwab mountains in Austria. When I posted the photos a couple of days later, another friend commented that she, too, had been there during the weekend. Did we just miss each other by a couple of minutes, or were we much farther apart? I looked our track logs to find out.</p>


            ]]>
          </description>
          <pubDate>Thu, 28 Jul 2022 00:00:00 +0200</pubDate>
          <link>https://hann.io/articles/2022/almost-bumped-into-a-friend/</link>
          <guid isPermaLink="true">https://hann.io/articles/2022/almost-bumped-into-a-friend/</guid>
          
          
          <category>maps</category>
          
          <category>gis</category>
          
          <category>python</category>
          
        </item>
      
    
          
        <item>
          <title>I reached a dead end in my research about road numbers (but this didn't stop me from making a cool map and finding some interesting insights)</title>
          <description>
            <![CDATA[
            
                <p>
                  <a href="https://hann.io/articles/2022/reaching-a-dead-end/">
                    <img width="1200" height="630" src="https://storage.googleapis.com/storage.hann.io/og/dead_end.jpg" class="attachment-full size-full" alt="I reached a dead end in my research about road numbers (but this didn't stop me from making a cool map and finding some interesting insights)" />
                  </a>
                </p>
            
            I have been wondering for some time about the system behind the numbering of roads in Hungary. The system itself is simple: the main road that leads from Budapest to Vienna is number 1, the other main roads radiating out from the capital are numbered in clockwise sequential order. Connecting roads have two (or sometimes three) digits. But why is this the system? How long has it been like this? What happened when the borders of the country changed?
            ]]>
          </description>
          <pubDate>Mon, 07 Feb 2022 00:00:00 +0100</pubDate>
          <link>https://hann.io/articles/2022/reaching-a-dead-end/</link>
          <guid isPermaLink="true">https://hann.io/articles/2022/reaching-a-dead-end/</guid>
          
          
          <category>research</category>
          
          <category>maps</category>
          
          <category>hungary</category>
          
        </item>
      
    
          
        <item>
          <title>Why did I get to drive this car for €0.01 per kilometer?</title>
          <description>
            <![CDATA[
            
                <p>
                  <a href="https://hann.io/articles/2021/why-cheap-rental-car/">
                    <img width="1200" height="630" src="https://storage.googleapis.com/storage.hann.io/og/juuve_car.jpg" class="attachment-full size-full" alt="Why did I get to drive this car for €0.01 per kilometer?" />
                  </a>
                </p>
            
            <p>I’m not sure but I have an idea.</p>


            ]]>
          </description>
          <pubDate>Tue, 13 Apr 2021 00:00:00 +0200</pubDate>
          <link>https://hann.io/articles/2021/why-cheap-rental-car/</link>
          <guid isPermaLink="true">https://hann.io/articles/2021/why-cheap-rental-car/</guid>
          
          
          <category>economics</category>
          
          <category>product</category>
          
        </item>
      
    
          
        <item>
          <title>A couple of lines of Python for a night of family fun</title>
          <description>
            <![CDATA[
            
                <p>
                  <a href="https://hann.io/articles/2021/words-in-wooden-blocks/">
                    <img width="1200" height="630" src="https://storage.googleapis.com/storage.hann.io/og/wooden_blocks.jpg" class="attachment-full size-full" alt="A couple of lines of Python for a night of family fun" />
                  </a>
                </p>
            
            <p>Have you ever wondered what words you can spell out using wooden cubes that have letters on each face? I have.</p>


            ]]>
          </description>
          <pubDate>Tue, 09 Mar 2021 00:00:00 +0100</pubDate>
          <link>https://hann.io/articles/2021/words-in-wooden-blocks/</link>
          <guid isPermaLink="true">https://hann.io/articles/2021/words-in-wooden-blocks/</guid>
          
          
          <category>python</category>
          
          <category>game</category>
          
        </item>
      
    
          
        <item>
          <title>A simple website and API for downloading and printing geocache information for offline use</title>
          <description>
            <![CDATA[
            
                <p>
                  <a href="https://hann.io/articles/2021/print-geocache-descriptions/">
                    <img width="1200" height="630" src="https://storage.googleapis.com/storage.hann.io/og/geolada_leirasok.jpg" class="attachment-full size-full" alt="A simple website and API for downloading and printing geocache information for offline use" />
                  </a>
                </p>
            
            <p>If you enjoy <a href="https://en.wikipedia.org/wiki/Geocaching">geocaching</a>, you might want to go paperless and just bring a smartphone or GPS device with you on your treasure hunt. Alternatively, you might want to have a backup with you on paper if anything goes wrong with your device. I wrote a simple web service that helps you with the second case.</p>


            ]]>
          </description>
          <pubDate>Wed, 24 Feb 2021 00:00:00 +0100</pubDate>
          <link>https://hann.io/articles/2021/print-geocache-descriptions/</link>
          <guid isPermaLink="true">https://hann.io/articles/2021/print-geocache-descriptions/</guid>
          
          
          <category>python</category>
          
          <category>geocaching</category>
          
          <category>api</category>
          
        </item>
      
    
          
        <item>
          <title>Is there enough space in Manhattan to stay six feet apart?</title>
          <description>
            <![CDATA[
            
                <p>
                  <a href="https://hann.io/articles/2020/manhattan-distance/">
                    <img width="1200" height="630" src="https://storage.googleapis.com/storage.hann.io/og/manhattan_distance.jpg" class="attachment-full size-full" alt="Is there enough space in Manhattan to stay six feet apart?" />
                  </a>
                </p>
            
            <p>According to my analysis, it is likely that there is, but this seems not to be the case in other, more densely populated localities.</p>


            ]]>
          </description>
          <pubDate>Sat, 17 Oct 2020 00:00:00 +0200</pubDate>
          <link>https://hann.io/articles/2020/manhattan-distance/</link>
          <guid isPermaLink="true">https://hann.io/articles/2020/manhattan-distance/</guid>
          
          
          <category>python</category>
          
          <category>visualization</category>
          
          <category>data</category>
          
          <category>gis</category>
          
        </item>
      
    
          
        <item>
          <title>Graphing Construction on Tram Line 6 in Budapest</title>
          <description>
            <![CDATA[
            
                <p>
                  <a href="https://hann.io/articles/2020/graphing-construction-on-tram-line-6/">
                    <img width="1200" height="630" src="https://storage.googleapis.com/storage.hann.io/og/tram6_reno.jpg" class="attachment-full size-full" alt="Graphing Construction on Tram Line 6 in Budapest" />
                  </a>
                </p>
            
            <p>In this article I explore a method to visualize linear spatial data that changes over time: which segments of tram line 6 of Budapest were under construction at which points in time? This investigation is inspired by a <a href="https://index.hu/video/2020/06/15/4_6_villamos_felujitas_nagykorut_negyes_hatos_husz_ev_alatt/">video</a> posted on Index.hu and a 140-year-old <a href="http://marlenacompton.com/?p=103">train schedule diagram</a>.</p>


            ]]>
          </description>
          <pubDate>Tue, 30 Jun 2020 00:00:00 +0200</pubDate>
          <link>https://hann.io/articles/2020/graphing-construction-on-tram-line-6/</link>
          <guid isPermaLink="true">https://hann.io/articles/2020/graphing-construction-on-tram-line-6/</guid>
          
          
          <category>python</category>
          
          <category>visualization</category>
          
          <category>data</category>
          
        </item>
      
    
          
        <item>
          <title>Get Public Transport Timetables</title>
          <description>
            <![CDATA[
            
                <p>
                  <a href="https://hann.io/articles/2020/get-public-transport-timetables/">
                    <img width="1200" height="630" src="https://storage.googleapis.com/storage.hann.io/og/gptt.jpg" class="attachment-full size-full" alt="Get Public Transport Timetables" />
                  </a>
                </p>
            
            <p>About two years ago, I shared an <a href="/articles/2018/nicely-formatted-transit-schedules/">article</a> about a project where I query and process results from the Google Transit API in a way that provides a simple overview for public transport connections between two places. Since I ended up using it rather frequently, I decided to turn it into a proper Python package, called <em>gptt</em>, available on <a href="https://github.com/andrashann/gptt">GitHub</a> and <a href="https://pypi.org/project/gptt/">PyPI</a>.</p>


            ]]>
          </description>
          <pubDate>Mon, 25 May 2020 00:00:00 +0200</pubDate>
          <link>https://hann.io/articles/2020/get-public-transport-timetables/</link>
          <guid isPermaLink="true">https://hann.io/articles/2020/get-public-transport-timetables/</guid>
          
          
          <category>python</category>
          
          <category>transportation</category>
          
          <category>pypi</category>
          
        </item>
      
    
          
        <item>
          <title>A first endeavor into generative art</title>
          <description>
            <![CDATA[
            
                <p>
                  <a href="https://hann.io/articles/2020/first-endeavor-generative-art/">
                    <img width="1200" height="630" src="https://storage.googleapis.com/storage.hann.io/og/generative.jpg" class="attachment-full size-full" alt="A first endeavor into generative art" />
                  </a>
                </p>
            
            <p>Last year we organized an internal conference at my workplace and I volunteered to put together a booklet with the abstracts of the presentations. I wanted to add photos of the authors, but I did not want them to look all the same. I came up with the idea to have the photos on top of two rectangles of the same size but of two different colors, a bit offset from the photo – every photo should be paired with differently offset rectangles to add some unique design. Of course, I did not want to do this by hand, but that’s what I know Python for.</p>


            ]]>
          </description>
          <pubDate>Fri, 17 Apr 2020 00:00:00 +0200</pubDate>
          <link>https://hann.io/articles/2020/first-endeavor-generative-art/</link>
          <guid isPermaLink="true">https://hann.io/articles/2020/first-endeavor-generative-art/</guid>
          
          
          <category>python</category>
          
          <category>graphic_design</category>
          
          <category>automation</category>
          
          <category>generative_art</category>
          
        </item>
      
    
          
        <item>
          <title>Introducing gpxslicer</title>
          <description>
            <![CDATA[
            
                <p>
                  <a href="https://hann.io/articles/2020/introducing-gpxslicer/">
                    <img width="1200" height="630" src="https://storage.googleapis.com/storage.hann.io/og/introducing-gpxslicer.jpg" class="attachment-full size-full" alt="Introducing gpxslicer" />
                  </a>
                </p>
            
            <p>I have recently released my first Python package, <code class="language-plaintext highlighter-rouge">gpxslicer</code>, a  simple tool to cut GPX track logs into smaller segments. It is now available on <a href="https://github.com/andrashann/gpxslicer">GitHub</a> and <a href="https://pypi.org/project/gpxslicer/">PyPI</a>. The motivation behind creating it was simple: I wanted to automate tasks that I had done by hand too many times.</p>


            ]]>
          </description>
          <pubDate>Tue, 28 Jan 2020 00:00:00 +0100</pubDate>
          <link>https://hann.io/articles/2020/introducing-gpxslicer/</link>
          <guid isPermaLink="true">https://hann.io/articles/2020/introducing-gpxslicer/</guid>
          
          
          <category>python</category>
          
          <category>gps</category>
          
          <category>gis</category>
          
        </item>
      
    
          
        <item>
          <title>Understanding Overpass, the API of OpenStreetMap</title>
          <description>
            <![CDATA[
            
                <p>
                  <a href="https://hann.io/articles/2020/understanding-overpass/">
                    <img width="1200" height="630" src="https://storage.googleapis.com/storage.hann.io/og/understanding_overpass.jpg" class="attachment-full size-full" alt="Understanding Overpass, the API of OpenStreetMap" />
                  </a>
                </p>
            
            <p>If you want to use spatial data from <a href="https://www.openstreetmap.org/">OpenStreetMap</a>,<span class="sidenote"> OpenStreetMap is more than just a free map: it is also a free database of global geographical data. If you are not familiar with it, check out its <a href="https://wiki.openstreetmap.org/wiki/Main_Page">Wiki</a> to learn more. </span> one way to get it is via <a href="http://overpass-api.de/">Overpass</a>,<span class="sidenote"> Read more about the Overpass API and its various endpoints <a href="https://wiki.openstreetmap.org/wiki/Overpass_API">here</a>. </span> a read-only API of the OpenStreetMap database. While the API is extremely flexible, its unique language, Overpass QL is not very intuitive. This article takes a very simple query and dissects it into its smallest pieces. This will help you understand (and write) such queries.</p>


            ]]>
          </description>
          <pubDate>Fri, 17 Jan 2020 00:00:00 +0100</pubDate>
          <link>https://hann.io/articles/2020/understanding-overpass/</link>
          <guid isPermaLink="true">https://hann.io/articles/2020/understanding-overpass/</guid>
          
          
          <category>osm</category>
          
          <category>overpass</category>
          
        </item>
      
    
          
        <item>
          <title>Alphabetical sorting is hard</title>
          <description>
            <![CDATA[
            
                <p>
                  <a href="https://hann.io/articles/2019/sorting-is-hard/">
                    <img width="1200" height="630" src="https://storage.googleapis.com/storage.hann.io/og/sorting_is_hard.jpg" class="attachment-full size-full" alt="Alphabetical sorting is hard" />
                  </a>
                </p>
            
            <p>It really was a great idea. As usual, I took a problem that I randomly ran into and wanted to find a solution to. I was not sure if I could implement the solution, but I knew I could describe it. It happened when I was working on a project where I got some data about municipalities in Hungary. I thought it would be handy to sort them alphabetically so that the user of the final product can easily find the place they are interested in. However, due to the unusual letters in the Hungarian alphabet, such as <em>ő</em> or <em>gy</em>, collation is not trivial. But I knew I could find a way to solve this!</p>


            ]]>
          </description>
          <pubDate>Sun, 24 Nov 2019 00:00:00 +0100</pubDate>
          <link>https://hann.io/articles/2019/sorting-is-hard/</link>
          <guid isPermaLink="true">https://hann.io/articles/2019/sorting-is-hard/</guid>
          
          
          <category>language</category>
          
        </item>
      
    
          
        <item>
          <title>The autumn of 1929 – the story of two hikes</title>
          <description>
            <![CDATA[
            
                <p>
                  <a href="https://hann.io/articles/2019/autumn-of-1929/">
                    <img width="1200" height="630" src="https://storage.googleapis.com/storage.hann.io/og/frenyo_tatra.jpg" class="attachment-full size-full" alt="The autumn of 1929 – the story of two hikes" />
                  </a>
                </p>
            
            <p>I was going through the documents of my great-grandfather, Lajos Frenyó when I found a couple of folded papers in one of the notebooks. I had already known that he really liked hiking but I did not have any material proof of this hobby apart from the photo used as the cover image of this post. That is, up until that moment, because these papers contained a very detailed account documenting two trips in the Tatra mountains. This post contains these two reports with my comments.</p>

            ]]>
          </description>
          <pubDate>Tue, 29 Oct 2019 00:00:00 +0100</pubDate>
          <link>https://hann.io/articles/2019/autumn-of-1929/</link>
          <guid isPermaLink="true">https://hann.io/articles/2019/autumn-of-1929/</guid>
          
          
          <category>hiking</category>
          
          <category>maps</category>
          
        </item>
      
    
  </channel>
</rss>
