Kudoro is a mobile app for overlaying Strava data on photos and videos,
with more than 1,500 users.
The project started as a simple live data overlay tool for cyclists because
the existing solutions were overcomplicated and expensive.
Since then, it has pivoted into an all-in-one visual editor for all sports,
focusing on summary overlays for activities, segments and training.
The tech stack consists of React Native, TypeScript, Expo, React Native Skia,
the Strava API, and native iOS and Android modules.
For this project I wear all the hats.
I make the product and technology decisions, design the UI, build and ship the app,
handle customer support, and do the marketing.
One of the biggest things I've learned is how important it is to balance technical
exploration and building features with actually shipping, talking to users and
getting the product in front of people.
My Van
I built my home on wheels over 18 months, from the ground up, turning dreams
into SketchUp models, into reality.
The process had plenty of ups and downs, and I learned a lot of new skills
while overcoming unforeseen challenges along the way.
The van has been my full-time home for more than three years now, and has
enabled me to ride my bikes in some of the most beautiful places in Europe.
Building a van with as many requirements as I had, meant an endless stream of
compromises.
Today I have a compact, fully autonomous, stealth home on wheels, with a
proper kitchen, bathroom, and storage for two bikes, that serves as a rolling music
studio, office, and workshop.
It is pretty satisfying that all the planning paid off.
Even after living in it for more than three years, there are very few decisions
I would have made differently, knowing what I know today.
The second React Native app I built, based on the Strava API, was
born out of my excitement for cycling fast up mountains.
My friends and I wanted to know how to pace our efforts up a climb
on a given day, and we wanted to do it with a simple UI using the only
true metric of greatness: Strava segments.
I built this project together with a non-technical co-founder and
was able to reuse a lot of knowledge from Kudoro.
The big challenge was designing a UI that stays simple to use while
still allowing the full complexity of our calculations, which combine
user data, physics and weather data.
The app is currently still in alpha testing within our friend groups,
but it has already helped us take a KOM or two.
Flashkill was a browser extension that enhanced the browsing experience on
a Counter-Strike league platform for more than 3,000 users.
I built this solution together with my brother.
As a user I was frustrated with the experience and felt that something
had to be done about it.
We had to make lots of interesting technical decisions, learn about the
advantages and limitations of browser extensions, and figure out how to
work with a third-party platform.
Fetching and caching data while dealing with rate limits were some of the
challenges we had to overcome.
Building the project open source also gave me the opportunity to think about
development guidelines, project structure and how to use TypeScript effectively
in browser extensions.
One of the more interesting things I explored was typing
background script message protocols.
I worked as a fullstack developer for Manta Marine, using React, TypeScript,
Kotlin, Spring, and PostgreSQL.
During my time there, I started specializing more in frontend development.
I was involved in shaping requirements, designing the interface, and taking
the RoutePilot AI feature all the way to production.
Another big undertaking was redesigning the Performance Analytics dashboard,
taking it from rudimentary charts to an advanced data selection and visualization
interface.
AI
In these small projects, I am experimenting with how far agent-driven
development has come and how it changes the way I build software.
I still review every line of code in larger projects like Kudoro,
but in these projects I increasingly focus on direction,
architecture, structure and reviewing security-critical code.
I mostly work with Cursor.
Turn in-app screenshots into App Store and Google Play product page assets.
No login needed and no useless AI features.
Simply select the screenshots, choose the style and text and export in all
the required formats.
Measure camera and microphone hardware latency for streaming sync
with a single click of a button.
Inspired by the hilariously manual process of a famous streamer
tweaking their OBS settings on a new system.
Open source darts scoring for practice and games.
Everything from classic 501 to fun game and practice modes.
Again, no sign in needed, but now even supports syncing and
online play using Supabase and Cloudflare durable objects.
Studies
I got my Msc. in Computer Science at the Chalmers University of Technology in Gothenburg,
with a thesis about
invariant inference from tests in Boogie.
During my studies, I worked as a teaching assistant for the Databases course,
grading assignments and running tutorial sessions in both English and Swedish.
A big influence on my decision to visit Chalmers was my work at Fraunhofer FOKUS,
where I worked during my Bsc. studies in Computer Science at Humboldt University of Berlin.
My thesis about
the formal verification of heap algorithms using Frama-C
was about the research I did there.