I'm Morten — a software engineer who's been drifting from .NET to React Native to Kubernetes to whatever shiny thing catches my eye next for the past 15+ years. Currently on the AI team at ZeroNorth, helping the maritime industry decarbonize. I also have two kids who are profoundly unimpressed by all of this.
I write about AI agents, infrastructure, developer tools, and the mistakes I make building all of them at mortenolsen.pro.
A self-hosted news reader that assembles RSS feeds into finite, curated magazines using on-device ML for article classification.
A calm, offline-first media player for music, podcasts, and audiobooks — backed by Jellyfin and Audiobookshelf with no ads, accounts, or tracking.
A Bitwarden-compatible CLI, SSH agent, and daemon for Vaultwarden — built for engineers who want their secrets served from memory, not files on disk.
A Kubernetes-based homelab infrastructure stack using Helm charts and ArgoCD for GitOps-driven home server management.
An AI-powered system management daemon that uses Nix for safe, auditable, and rollback-friendly OS automation.
I told an LLM 'don't use var' and then watched it use var. So I built four experiments to find out why. I was wrong every time. The answer was better than anything I'd predicted.
I fed the same coding prompts through open LLMs in different tones of voice and looked at the model's internal representations. Turns out it cares more about how you ask than what you ask.
The entire AI agent industry is built on thirty lines of Python. Let me ruin the word 'agent' for you.
I build agentic AI platforms for a living and tinker with them for fun. The green grass is real — but getting there required breaking a lot of things first. Here is what went wrong, what we are losing, and why I think you can put the doom articles down.









