About
I'm a software engineer up north in Oslo, Norway, living with my wife, who is also a software engineer. Together, we have two boys who have caught the bug too and build their own software and games, with ambitions that grow with each model release.
I grew up with the web and Open Source. I learned HTML in 1997 by reading the source of other people's pages, and found my first CSS when I dug into why the links on a game magazine's CD changed on hover. Usenet newsgroups taught me about specs and validators, and as a young teenager I could tell you exactly what was valid HTML and what wasn't.
Linux came next. I never got far with the Red Hat 5.2 CD I picked up in Stockholm one summer, but since the release of good old Slackware 8, every year has been the year of Linux on the desktop for me. At the ripe age of 18, I co-founded Above, a domain registrar and web hosting company powered by the infamous LAMP stack.
A summer job on NAV, an Open Source network monitoring system, introduced me to Python in 2006, and I left PHP behind for good. Python has been home ever since, despite detours through Java, Ruby, and plenty of JavaScript. Agents do most of the typing these days, but the years with Python still pay off: they taught me what good code looks like. So has following Rust since 2012. I've written little of it, but borrowed plenty of its ideas.
At Cisco, I was one of three engineers behind the web app on more than a million video conferencing devices, used for everything from configuration to making calls.
As the first employee at Otovo, I built the software backbone of an electricity retail and solar installation business, from a fleet of Debian-based solar production loggers to infrastructure, back-office tools, and the customer app. Otovo later grew to more than 500 people and went public.
At the online grocer Oda, I helped rebuild the in-house software that runs logistics from purchasing to delivery, so the company could grow from a single fulfillment center to four, across Norway, Finland, and Germany. When we moved the warehouse system to the cloud, we did it in a few hours between two shifts, and operations never noticed.
Invoicing and accounting have followed me since I did the books for Above, and later automated electricity billing at Otovo. In 2023, I co-founded Cardboard to take on the part most companies still do by hand: managing their software, AI, and marketing spend. No more shared company cards, hunting for receipts, or hours wasted on accounting every month.
Outside work, I've stuck with the same two hobbies for years: Open Source and running. Much of my Open Source work has grown out of Mopidy, which I started in 2009. The projects below have had busy years and quiet years, but somehow I keep coming back to them.
Open Source projects
- Mopidy Extensible music server that plays music from local files, streaming services like Spotify, Internet radio, and more, controlled from any phone, tablet, or computer. Started as an MPD server that could play music from Spotify, and grew into a favorite base for Raspberry Pi jukeboxes and DIY hardware hacks.
- Pykka Python implementation of the actor model, making it easier to build concurrent applications. Built on the patterns we established in Mopidy.
- Biip Python library for making sense of the data in barcodes. Started because every system at Oda had its own incomplete barcode parser.
- Comics Webcomics aggregator and feed builder that I built as a procrastinating student and forgot to shut down. Still going strong after more than twenty years.
- Debian packages Mopidy, its extensions, and its dependencies, packaged for Debian. From there, they also reach Ubuntu and Raspberry Pi OS.
- See github.com/jodal for more.
Retired projects
- pyspotify Complete Python wrapper for the libspotify library, made for Mopidy's Spotify support. It stopped working when Spotify shut down libspotify in 2022.
- netsgiro Python library for parsing and building Nets AvtaleGiro and OCR Giro files. Built to automate invoicing and payment processing at Otovo.