
CMP
•
Three bugs I found in my own BaseViewModel
A small UDF base class for Compose Multiplatform: one state, one-time events and central error handling

A small UDF base class for Compose Multiplatform: one state, one-time events and central error handling

A small UDF base class for Compose Multiplatform: one state, one-time events and central error handling

Persisting a light, dark or system theme in Compose Multiplatform with multiplatform-settings, Koin and StateFlow

Persisting a light, dark or system theme in Compose Multiplatform with multiplatform-settings, Koin and StateFlow

I started on Android, and it's still home. These days I work across Android and iOS with Kotlin and Compose Multiplatform, and I care about the parts of mobile development that tutorials skip: apps that stay connected to hardware through a full shift, recover when the network or Bluetooth drops, sync in the background, and survive whatever the operating system throws at them.
What I do
Architecture and development of production Android and cross-platform apps
Bluetooth Low Energy: reliable connections, reconnection, command queues, background sync
Offline-first apps that behave well on bad networks
Turning messy, real-world requirements into maintainable code
What I'm building here
This site is my workshop. I'm building EdgeKit, an open Compose Multiplatform app with production-minded architecture, and writing about the decisions along the way: what worked, what broke, and why.
How I work
I prefer small, testable pieces over clever ones, and I write down why I chose something, not only what. I'd rather ship a plain solution that holds up than an impressive one that doesn't.
Get in touch
I'm open to conversations about mobile roles / consulting / collaboration.

I started on Android, and it's still home. These days I work across Android and iOS with Kotlin and Compose Multiplatform, and I care about the parts of mobile development that tutorials skip: apps that stay connected to hardware through a full shift, recover when the network or Bluetooth drops, sync in the background, and survive whatever the operating system throws at them.
What I do
Architecture and development of production Android and cross-platform apps
Bluetooth Low Energy: reliable connections, reconnection, command queues, background sync
Offline-first apps that behave well on bad networks
Turning messy, real-world requirements into maintainable code
What I'm building here
This site is my workshop. I'm building EdgeKit, an open Compose Multiplatform app with production-minded architecture, and writing about the decisions along the way: what worked, what broke, and why.
How I work
I prefer small, testable pieces over clever ones, and I write down why I chose something, not only what. I'd rather ship a plain solution that holds up than an impressive one that doesn't.
Get in touch
I'm open to conversations about mobile roles / consulting / collaboration.