Blog

A Year on GrapheneOS: Switching from iPhone to Pixel 9 Pro featured image

A Year on GrapheneOS: Switching from iPhone to Pixel 9 Pro

How I de-Googled my phone, what works, what doesn't, and the self-hosted stack behind it

avatar
David Bösiger
Six Months of Daily Cold Plunges featured image

Six Months of Daily Cold Plunges

How an unplanned pool purchase turned into a daily habit - and what I've learned along the way

avatar
David Bösiger
Push It Part 2: Fixing Elevation and Adding Grade Adjusted Pace featured image

Push It Part 2: Fixing Elevation and Adding Grade Adjusted Pace

How I fixed GPS elevation data with DEM correction and added meaningful run statistics

avatar
David Bösiger
Push It: Building My Own Fitness App for the Bangle.js featured image

Push It: Building My Own Fitness App for the Bangle.js

How I built a self-hosted fitness platform that syncs with my open-source smartwatch

avatar
David Bösiger
Reverse Engineering a Unity IL2CPP Save File featured image

Reverse Engineering a Unity IL2CPP Save File

How I built a save editor for Tainted Grail after getting stuck with an unforgivable bounty

avatar
David Bösiger
Bangle.js 2: A Smartwatch for Data Owners featured image

Bangle.js 2: A Smartwatch for Data Owners

Why I chose an open-source smartwatch - and what I learned along the way

avatar
David Bösiger
Getting an Old Swisscom TV Box to Work with Jellyfin featured image

Getting an Old Swisscom TV Box to Work with Jellyfin

A frustrating debugging session with no error messages - and why ECDSA certificates were the problem

avatar
David Bösiger