About

Backend engineer with 5+ years building production-scale distributed systems. My work spans event-driven microservices serving millions of users and protocol-level upgrades to large, live peer-to-peer networks. I thrive in small, fast-moving teams with high ownership and high engineering standards.

I’m especially interested in agentic loops, building experiences, flows, and tools for both developers and non-developers, AI, and event-driven systems.

Day-to-day I work with local parallel coding agents (Codex, Claude) β€” designing features and steering agents through implementation.

Outside of work, you can find me in the mountains, looking for rocks to climb, photo hunting, practicing calisthenics, or spending time with friends.


Writing

I love breaking down dense protocols and systems into approachable pieces. My deep-dive technical posts on Bitcoin and Lightning Network internals have been widely read and well received across the community.

Lightning Network Onion Routing: Sphinx Packet Construction

Lightning Network Onion Routing: Preliminaries

Normal operation and closure of a pre-taproot LN channel

Taproot Channel Transactions

Taproot and MuSig2 recap

Opening and announcing a pre-taproot LN channel

BIP158: Compact Block Filters Deep Dive

LN Things Part 5: HTLC Deep Dive

LN Things Part 4: HTLC Overview

LN Things Part 3: Revocation in more detail

LN Things Part 2: Updating State

LN Things Part 1: Creating a channel

See all articles β†’


Work

Lightning LabsLightning Infrastructure Engineer | Lightning Labs

2021 to Present

Top contributor to LND, the most widely-deployed Lightning Network implementation. My work centres on shipping protocol upgrades and large database migrations safely across a live peer-to-peer network of thousands of nodes. I also lead major features in the Lightning Terminal and Lightning Node Connect developer tooling.

Selected highlights:

  • LND graph SQL migrationβ€” leading the multi-PR epic moving LND’s graph database to SQL. One batch-fetching rework took ForEachNodeCached on a mainnet graph from 276s to 10s (~28Γ— speedup).
  • Neutrino sync β€” batched filter fetching took a 3,200-filter regtest sync from 4m25s to 653ms (~400Γ— speedup).
  • BOLT11 blinded paths β€” drove BLIP-0039, the BOLT11 invoice blinded-path tagged field.
  • Network gossip protocol upgradeβ€” authored the BOLT spec extension upgrading the Lightning network graph gossip protocol.

LunoSoftware Engineer | Luno

2020 to 2021

Backend engineer on the crypto-operations team. Worked in Go on event-driven microservices handling high cryptocurrency volumes for millions of users.


Public Appearances