Privacy (8)
Apps, games & projects

umami-swift
A small Swift package that sends app analytics to a self-hosted Umami backend, privacy-first with no IDFA and no App Tracking Transparency prompt. Built for iOS, macOS and watchOS, with no third-party dependencies.
2026
Deceptive patterns, formerly known as dark patterns
Why deceptive patterns work, six examples from real sites and four tips to avoid misleading your users.
Answering Apple's App Privacy questionnaire for umami-swift
Exactly what to select in App Store Connect's App Privacy questionnaire when your app uses umami-swift 1.6, and the facts behind each choice.
Reporting app errors with self-hosted Umami
How my iOS apps report handled errors as plain Umami events through umami-swift, with static names and error codes.
Using self-hosted Umami for iOS app analytics
How my native apps share the self-hosted Umami backend my websites already use, through a small open source Swift package called umami-swift.
Self-hosting Umami with Cloudflare, Fly, and Supabase
A practical guide to running your own cookieless, privacy-friendly web analytics with Umami on Cloudflare, Fly, and Supabase for a few dollars a month.

Nei takk, jeg vil ikke spare penger
Talk for Ping 2026 about dark patterns, the design choices that make it cheap to say yes and expensive to say no. It goes through six patterns from Norwegian and international sites, from confirmshaming to drip pricing and fake scarcity, why each one works on the brain, what the DSA and GDPR say about them, and how a dark pattern gets born out of an A/B test and a quarterly target without anyone in the room doing anything wrong.
2015
The Norwegian Data Protection Authority - privacy built in
Make it private by default!