Available for new work

Software for
edges and meshes.

I build software that lives where the network gets thin. Mobile apps, mesh networking, embedded firmware, and the low-level glue underneath.

iOS · Android
Native + Flutter
LoRa · BLE
Off-grid radio
STM32 · ESP32
Embedded

Things I've built

Mostly shipped products with a long tail of experiments. The flagship is SocialMesh - everything else is the curiosity that feeds it.

iOS · Aviation

Aether

Flight tracking and aviation tools built natively for iOS. Real-time data, lean UI, no clutter.

SwiftMapKitAviation
Companion · Mesh

NodeDex

A catalog and identity layer for Meshtastic nodes - track who's out there, what they're running, and where.

FlutterMeshFirestore
Identity · Cryptography

Sigil

Lightweight, verifiable identity primitives for mesh networks where you can't trust the channel.

CryptoMeshIdentity
Hardware · Firmware

Embedded experiments

STM32, ESP32, RP2040 - DMA pipelines, UART/CAN/SPI bring-up, FPGA accel, signal generation, audio synthesis. The bit-twiddling on the side.

STM32ESP32CRustFPGA
GitHub

Open source

Scattered side projects: emulators, retro tooling, microcontroller libraries, dev tools. Sometimes useful, always for fun.

Open sourceEmulationRetro

I build for the edge.

Writing software professionally since 2003, across the stack - but my favourite problems live at the boundaries. Mobile clients talking to mesh radios. Embedded firmware juggling DMA and interrupts. Backend code that has to be honest about the network.

Currently focused on SocialMesh - a Meshtastic client that treats off-grid communication as a first-class product, not an afterthought.

  • MobileFlutter, Swift, Kotlin - native when it matters, Flutter when sharing wins.
  • Mesh & radioMeshtastic protocols, LoRa physical layer, BLE GATT, APRS-style routing.
  • EmbeddedSTM32, ESP32, RP2040 in C/C++/Rust. DMA, peripherals, real-time constraints.
  • BackendNode, Go, Firebase, Postgres. Boring is good - until something needs to be clever.
  • Low-levelEmulators, retro reverse engineering, signal processing - the bit-twiddling side.