Software developer · IT consultant · photographer · radio enthusiast
I build software around radio systems, cloud infrastructure, and digital imaging. A lot of it starts with hardware I use, a workflow that could be better, or a proprietary format that looked interesting enough to reverse engineer.
Professionally, I run a small IT consulting business working with Microsoft 365, Azure, AWS, networking, identity, security, and automation.
A cross-platform operator console for P25, DMR, and NXDN radio systems, built with .NET and Avalonia. It brings independent channels, talkgroup patching, secure voice, recording, and graphical configuration into one workspace.
NEO is a ground-up rewrite of the original application, now supporting macOS, Windows, and Linux, with iPhone and iPad versions in public beta.
Explore the project → · Downloads · iOS/iPadOS beta
A browser-based tool for exploring Nikon's NP3 Flexible Color Picture Controls. I reverse-engineered the format and built an analyzer that decodes all 44 parameters, visualizes tone curves and LUTs, and exposes the color-blending and grading data inside each file.
Built with Rust and WebAssembly. Files are processed locally in your browser.
I've also been spending quite a bit of time reverse-engineering Nikon Z camera firmware, particularly the EXPEED 7 generation. That work has taken me into embedded systems, firmware architecture, camera processing pipelines, and hardware emulation.
I'm part of the WonderLantern team and created Z8 QEMU, a Nikon Z8 firmware emulator built on WonderLantern's earlier Z9 emulation work. It runs the camera's original firmware, including menu navigation, display rendering, simulated controls, and experimental image capture using modeled hardware and synthetic sensor data.
I've also been working on Z6III firmware emulation, EXPEED 7 internals, and tools for understanding and experimenting with Nikon's imaging pipeline.
One related public project is LUT to Picture Control, an experimental tool that fits Nikon Flexible Color settings to approximate a compatible 3D LUT.
My radio work spans digital voice networks, HF, SDR, audio, and hardware integration. DVMHost and FNECore are part of the wider ecosystem I work with.
I'm also a photographer, interested in both making photographs and understanding how the camera arrives at the finished image. Increasingly, that curiosity has led me from picture controls and color science all the way down to firmware, processors, and the hardware underneath.
More radio projects and forks
- KFDtool — P25 keyloading software and hardware tooling
- NetworkIcom — Icom IC-7610 Ethernet control in Swift and SwiftUI
- P25Clients and NXDNClients — gateways and parrots
- MMDVM_CM — cross-mode conversion tools
- anytone-flash-tools — Anytone radio flash tools
- OpenHPSDR-wdsp — SDR and digital signal processing
Some are active work; others are older experiments or forks I used to explore a radio, protocol, or piece of hardware.
Tools I work with: C# · .NET · Avalonia · C/C++ · Rust · WebAssembly · Python · QEMU · Swift · JavaScript
Mostly, I like figuring out how complicated things work and making them easier to use.
And occasionally fixing things that probably would have been easier not to take apart in the first place.



