{:routes {""               {:to [:mmm]}
          :portfolio       {:to [:mmm "/portfolio"]}
          :contact         {:to [:mmm "/contact"]}
          :ig              {:to "https://instagram.com/s_ol.pics"}
          
          ; blog
          :xy-music        {:to [:mmm "/blog/xy-music"]}
          :self-hosted     {:to [:mmm "/blog/self-hosted_virtual_home"]}
          :aspect-ratios   {:to [:mmm "/blog/aspect_ratios"]}
          :why-redirectly  {:to [:mmm "/blog/why_redirectly"]}
          :moq-one         {:to [:mmm "/blog/moq-one"]}
          :realities       {:to [:mmm "/blog/realities"]}
          :watch-cad       {:to "https://www.youtube.com/watch?v=zlG01j462A4"}
          :alivecoding     {:to [:mmm "/blog/alivecoding"]}
          :ba              {:to [:mmm "/blog/mmmfs"]}
          "ba/pdf"         {:to [:mmm "/blog/mmmfs" ":application/pdf"]}
          "ba/log"         {:to [:mmm "/blog/mmmfs/ba_log"]}
          "ba/ref/nms"     {:to "https://netmarketshare.com/operating-system-market-share.aspx?options=%7B%22filter%22%3A%7B%22%24and%22%3A%5B%7B%22deviceType%22%3A%7B%22%24in%22%3A%5B%22Desktop%2Flaptop%22%2C%22Mobile%22%5D%7D%7D%5D%7D%2C%22dateLabel%22%3A%22Trend%22%2C%22attributes%22%3A%22share%22%2C%22group%22%3A%22platform%22%2C%22sort%22%3A%7B%22share%22%3A-1%7D%2C%22id%22%3A%22platformsDesktop%22%2C%22dateInterval%22%3A%22Monthly%22%2C%22dateStart%22%3A%222018-12%22%2C%22dateEnd%22%3A%222019-11%22%2C%22hiddenSeries%22%3A%7B%7D%2C%22tableOrder%22%3A%5B%5B2%2C%22desc%22%5D%5D%2C%22segments%22%3A%22-1000%22%7D"}

          ; projects
          :plonat-atek     {:to [:mmm "/projects/plonat_atek"]}
          :iii-telefoni    {:to [:mmm "/projects/iii-telefoni"]}
          :btrktrl         {:to [:mmm "/projects/btrktrl"]}
          :VJmidiKit       {:to [:mmm "/projects/VJmidiKit"]}

          :vcvmods         {:to "https://github.com/s-ol/vcvmods"}
          "vcvmods/doc"    {:to "https://github.com/s-ol/vcvmods/blob/master/README.md"}

          :redirectly      {:to [:mmm "/blog/why_redirectly"]}
          "redirectly/src" {:to [:klaus "redirectly"]}

          :alive           {:to "https://alive.s-ol.nu/main/"}
          "alive/src"      {:to "https://git.s-ol.nu/alive"}
          :glsl-view       {:to [:klaus "glsl-view"]}
          
          :hex-caps        {:to "https://hw.s-ol.nu/HEX-keycaps/"}
          :hex12pad        {:to "https://hw.s-ol.nu/0xC.pad/"}
          :0xC.pad         {:to "https://hw.s-ol.nu/0xC.pad/"}
          "0xC.pad/buy"    {:to "https://lectronz.com/products/-0xc-pad-fully-assembled"}
          "0xC.pad/cfg"    {:to "https://config.qmk.fm/#/s_ol/0xc_pad/LAYOUT"}
          :0x2C.board      {:to "https://fabacademy.org/2020/labs/opendot/students/sol-bekic/projects/keyboard/"}
          "0x2C.board/cfg" {:to "https://qmk.s-ol.nu/#/s_ol/0x2c_board/LAYOUT"}
          :0x33.board      {:to "https://hw.s-ol.nu/0x33.board/"}
          "0x33.board/doc" {:to "https://hw.s-ol.nu/0x33.board/"}
          "0x33.board/sub" {:to "https://hw.s-ol.nu/0x33.board/subscribe/"}
          "0x33.board/buy" {:to "https://lectronz.com/products/beta-0x33-board-midi-controller"}
          
          :isokbexp        {:to "https://isokb.s-ol.nu"}
          "isokbexp/src"   {:to [:klaus "isomorphic-kb-explorer"]}

          ; legacy blog posts
          :blog {:to [:mmm "/blog"]}
          "blog/2015/06-27/challenging-myself" {:to [:mmm "/blog/challenging_myself"] :status 301}
          "blog/2015/06-29/stencils-101" {:to [:mmm "/blog/stencils_101"] :status 301}
          "blog/2015/08-08/automating-my-rice" {:to [:mmm "/blog/automating_my_rice"] :status 301}
          "blog/2015/08-25/ludum-dare-33-postmortem" {:to [:mmm "/blog/ludum_dare_33_postmortem"] :status 301}
          "blog/2016/05-29/love-lua-photoshop-and-games" {:to [:mmm "/blog/love_lua_photoshop_and_games"] :status 301}
          "blog/2017/06-26/video-synth-research" {:to [:mmm "blog/video_synth_research"] :status 301}
          "blog/2017/06-28/clocks-triggers-gates" {:to [:mmm "blog/clocks_triggers_gates"] :status 301}
          "blog/2017/07-04/stretching-gates" {:to [:mmm "blog/stretching_gates"]} :status 301}
 :404 "
    <html>
      <head>
        <meta charset=\"UTF-8\">
        <title>not found</title>
      </head>
      <body>
        <h3>entry not found :(</h3>
        <p>
          if you followed a link here, please let me know at s+missing <i>&lt;ät&gt;</i> s-ol <i>&lt;döt&gt;</i> nu.
        </p>
        <p>
          in the meantime, you may find what you were looking for at <a href=\"//mmm.s-ol.nu\">mmm.s-ol.nu</a>.
        </p>
      </body>
    </html>"}
