
01
Ordkupan
A Swedish take on Spelling Bee from the New York Times. Find as many words as you can from a handful of letters, and compete with everyone else on the daily leaderboard. Built for phones, and you can install it like an app.
Hello, I'm
I'm a software developer at Layer 10, currently working at Volvo Group. I've written for Better Programming, I write guides on Banjo Code, and my side projects live on GitHub.

Companies
A mix of consulting gigs, startups and big companies. Click one to read more.
My first job. A full-stack system for the automotive industry, built from scratch.
carsMoved a queueing tool used by lots of teams from JavaScript to TypeScript, all by hand.

Lead developer on Unify Trials Pro, from database to UI.

Rebuilt the apps for a startup using machine learning to save fuel at sea.
the other oneSenior developer across the whole stack, focused on performance, developer experience and bundling.

The Gothenburg consultancy I work through. Ping pong table included.
Coding stats
Since 2019, WakaTime has counted every hour I spend actually writing code. Here it is, week by week.
WakaTime tracks everything automatically, so this is a fairly honest picture of what I work with. A few things to know:
It only counts active coding time in the IDE. Leaving it open doesn't count, and neither do meetings, research or waiting for builds.
It goes by file extension, so React and Angular count as TypeScript, while TypeScript inside Vue files counts as Vue.
Lately, the numbers are probably a bit lower than reality. With AI, I often code through CLI tools instead of my IDE, and WakaTime doesn't count that time.
Who am I?
I didn't plan on becoming a developer. I found my way into it by accident, at a job I'd picked for the wrong reasons.

Growing up
I was sure I'd end up in economics, with my own office and lots of Excel. Making Flash games and websites on the side was just for fun. Or so I thought.
University
I graduated with a degree in economics, then lasted about three long months at work before I realized I'd picked the wrong path.
At work
I started automating my tasks with small Python scripts. Before I knew it, I was automating everything I could find.
One year
Three more years of school felt like too much, so I spent a year teaching myself to code online.
Today
I landed my first developer job, and today I work across the whole stack. Probably the best decision I've ever made.
Writing
Not my most-read posts, but the ones that mean the most to me. From my very first article to my latest guides.
More guides on Banjo CodeI never studied computer science, so topics like this were gaps I had to fill on my own. This is the guide I wish I'd had when I started.
Same story as the hashing guide. Buffers were something I used all the time without really understanding them, and writing this was how I finally did.
When I switched from VS Code to Neovim, the debugger was the part I kept putting off, because getting it to work was hard. Once I finally did, I wrote everything down so the next person doesn't have to start from scratch.
This is my own story: how I went from economics to my first developer job using only free resources.
My very first programming article, and the one that got me writing for Better Programming. I still remember the kind words I got from Al Sweigart, whose book Automate the Boring Stuff with Python taught me Python not long before.
Projects
Games, apps and tools. Most of them full-stack, all of them built for fun. The ones marked pre-AI were made by hand.

01
A Swedish take on Spelling Bee from the New York Times. Find as many words as you can from a handful of letters, and compete with everyone else on the daily leaderboard. Built for phones, and you can install it like an app.

02
Keeps coding agents in their lane. A fast architecture linter for TypeScript that tidies up your project structure after every edit.

03
Excalidraw with a few extra features. Save your drawings, sync them with your Google account, and share a link to draw together with friends.

04
A Neovim plugin that finds the AI rule files that apply to the file you have open, so your chat gets the right context. Works with Cursor-style rules, GitHub Gists and CodeCompanion.

05
A full-stack RSS reader. Follow your favorite blogs and feeds in one clean, simple place.

06
The utility functions I kept copying between projects, collected in one package on npm.

07
A deck of cards for the most popular card games, designed from scratch by me. More than 250 copies sold.