I'm Runar Ovesen Hjerpbakk, product coach and people manager in Trondheim. I build my own apps, and I write and speak about leadership, product and technology.
Last week I shipped BookScanner 2026.4, the first version with umami-swift analytics on board. Today the dashboard showed one visitor: a test event I had sent by hand with curl. I had used the app plenty myself since the release. Umami counted none of it.
Since umami-swift shipped, a few people have asked me the same thing: what do I tell Apple in the App Privacy questionnaire? The form is a wall of legal-sounding categories, and the tracking part makes it feel like one wrong checkbox gets the app rejected. With umami-swift 1.6 it comes down to just two data types, both in the friendliest column.
Every app I’ve shipped has many catch blocks to deal with failures which doesn’t crash the app. While I develop, the print in those blocks shows up in Xcode, however, once the app is on someone else’s phone, there is no console for me to read, and the failure disappears. Since version 1.5.0, umami-swift reports those failures as plain analytics events to the Umami backend I already self-host. Why…
Game developers use the term “juice” for the small animations, particles, sounds and vibrations that make an action feel satisfying. I wanted to experiment with more of it, so I made Scratch a Saying, or Skrapelykke in Norwegian, an app where you scratch away foil to reveal a saying you can save or share.
Since I already self-host Umami, I wanted the same experience for my apps without a heavyweight analytics SDK, an IDFA prompt, or a third party collecting data on my behalf. I created a small open source Swift package to achieve this: umami-swift. This gives me the same visitor and visit numbers as the sites, in the same dashboard.
This is a guide for running your own privacy-friendly web analytics: cookieless, first-party so ad blockers do not eat it, and cheap to run. It works for static sites and dynamic ones alike. I’ve implemented it across my own sites ( hjerpbakk.com, a Jekyll blog on GitHub Pages and a handful of SvelteKit sites on Cloudflare Pages), and I use those as worked examples throughout.
SinceTag is now on the Mac App Store. It started as a tool I built for myself. I wanted a simple way to see what had changed in a repo since the last tagged release, without reading through the git log every time I sat down to cut a new version. Point it at a local git repo and SinceTag reads your tags, then shows everything that has happened since the most recent one. Switch to the history view…
Stoic Focus started as a simple way to keep Stoic quotes in the Mac menu bar. It did one thing well, but that was about it. This update turns it into something I actually want to open every day. You can now turn on daily quote notifications so the app comes to you instead of waiting to be opened. Save favorites when a quote does enough for you that you want it close for good. And when you want…
Simplest Workout Tracker just got its biggest update yet. I originally made this app because every workout tracker I tried wanted too much from me. I just needed to mark that I exercised and move on. That core idea has not changed, but the app was missing some obvious things. You can now tap a logged day to actually see what you did and edit it. Before, tapping would just delete it, which was not…
Golden Ratio Calculator++ version 2026.1 is here! I made Golden Ratio Calculator++ for one very specific moment: you are deep in a layout, canvas, frame or screen design, you know one side, and you just want the other number without stopping to do math. Type in width or height, pick a ratio, and the app gives you the matching value right away. The rectangle preview updates as you go, the color…