Software developer at @breez, working on the Breez SDK, Bitcoin payments packaged so that app developers never have to think about channels, swaps, liquidity or chain reorgs. I've worked across all three implementations: Nodeless (Liquid), Spark, and the original Greenlight SDK.
Most of it is Rust at the core with bindings fanning out through UniFFI to Swift, Kotlin, Dart, Go, Python, React Native and WASM. The interesting problems are rarely the payment itself. They're the parts either side of it: keeping a wallet's view of the chain correct across devices, recovering state from nothing but a seed, deciding what to do when a swap is half-complete and the counterparty has gone quiet, and making all of that behave identically on six language bindings at once.
- Multi-asset send/receive and paying network fees in USDT via payjoin, so a user holding only stablecoins never needs to hold BTC to move them.
- Chain swaps, send and receive across chains, with address monitoring, timeout cancellation and a claim loop that recovers swaps that couldn't be verified first time round.
- Real-time sync with chain recovery, multi-device wallet state that reconciles against the chain rather than trusting a server.
- Stable balance and cross-chain send on the Spark SDK, including token to lightning conversion.
- Passkey seedless restore and support for external signers that can't export their keys.
- BOLT12 receive, LNURL (pay, withdraw, verify, per-domain attribution), webhooks and notification plugins.
- Unilateral exit and instant 0-conf static deposit claims, the unglamorous safety net work.
- Satimoto, charge your electric vehicle and pay instantly with Bitcoin over Lightning. No sign-up, no credit cards. A Swift app on top of an embedded LND node, backed by a set of Go services: an OCPI hub speaking to charge point operators, an LSP, a public API and a fiat exchange rate provider, all deployed with Terraform.
Elsewhere I've contributed to lnbits, boltz-rust, bitbox-wallet-app, lwk, greenlight and rust-lightning.





