I'm the founder of Aperture Robotics. I build open-source software for embedded Linux and local-first p2p computing.
LinkedIn · X · Stack Overflow · Instagram · SkiffOS Discord
A shared workspace for people, agents, and their tools.
I'm building Spacewave to bring files, conversations, applications, and computers into shared Spaces. The goal is to make it easy to work together, follow what an agent is doing, and continue across devices.
Spacewave is in active development. Its foundations combine local storage, peer-to-peer networking, and plugins, with components built in Go, TypeScript, and WebAssembly.
Explore Spacewave · Browse the source
- SkiffOS: a lightweight Linux distribution for running containers across different hardware, including Raspberry Pi and other single-board computers. Read the paper and its use in the CNS Flight Stack.
- QuickJS WASI Reactor: run QuickJS-NG in Go and TypeScript through the WASI reactor model.
- ocpipe: SDK for LLM pipelines with OpenCode and Zod.
- GoScript: compile Go to TypeScript.
- Bifrost: configurable peer-to-peer networking for Go and TypeScript.
- flex-layout: interactive drag-and-drop layouts for React.
- StaRPC, protobuf-go-lite, and protobuf-es-lite: lightweight, reflection-free Protobuf and RPC implementations for browsers, WebAssembly, and embedded systems.
Buildroot. I've contributed packages for container runtimes, Go development, networking, and hardware support to Buildroot, which SkiffOS uses to build its Linux systems.
NASA / Jet Propulsion Laboratory. I interned during the summers of 2013-2017, applying cell-phone processors to visual navigation for small flying robots on the Mars Helicopter Ingenuity team. Read the story.
FACEIT. I built matchmaking infrastructure and algorithms, WebSocket messaging, and the go-dota2 bot network at FACEIT. I also created the FPro in-house system, which later became the FACEIT Pro League (FPL).
rgraphql streams changes to GraphQL queries so user interfaces can stay up to date. The client combines component queries into one session query.
D2Moddin brought Dota 2 custom games to the public in May-June 2014, before Valve released Dota 2 Reborn with the Source 2 engine.
Old archived projects
- AirNet: gossip based p2p networking
- AwesomiumCE3: rendering a web browser inside CryEngine to textures.
- D2Moddin source: the first DOTA 2 custom game modes platform & website.
- Dota2: C# implementation of the DOTA2 game coordinator client.
- EagleEye: an Arma 2 DayZ in-browser map of players & items
- EveFleet: real-time UI for managing EVE Online fleets
- EveWaitlist: real-time UI for managing EVE Online incursions
- Hackatron: connect teams with questions at Hackathons.
- LivingPlanet: hackathon project of a beautiful informational site.
- SubGames: a site for Twitch streamers to host Dota lobbies w/ bots.
- charlie: a dynamic networked module loader in C++
- diskutil: Go library to access raw disks on windows
- evexmap: a force-directed graph visualization of the EVE Online world.
- go-libp2p-grpc: GRPC proxying over libp2p.
- go-p2pd: a daemon for libp2p
- gogame: cross-platform games written in Go.
- grpc-bus: call GRPC services from the browser over WebSocket.
- historian-view-window-js: remote-state-stream to a browser
- inca-go: inca implementation in Go
- inca-js: javascript implementation: inca-counter-example-js
- inca: blockchain framework for Proof of Authority
- kvgossip: gossip key/value store on top of Serf using RSA keys.
- matrixserver: peer-to-peer networking library for C#
- metric-stream: stream of time-series data to the browser.
- mutate: Go library for generating mutations in JSON.
- netproto: abstract KCP and quic into a single api in Go
- obd-reporter: report OBD data from cars to Prometheus
- objectenc-js: object encrypt for binary blobs in Js
- objectenc: object encrypt for binary blobs in Go
- objectsig-js: object signatures implemented in js
- objectsig: object signatures for binary blobs in Go
- objstore-js: object storage in js
- objstore: object storage in Go
- p2p-storageref: common storage ref to multiple locations
- pbobject-js: js implementation of pbobject
- pbobject: protobuf object wrapper and table decoder
- PlayLethalLeague: neural network to play a real-time fighting game.
- PlayLLBlaze: openAI gym for Lethal League Blaze
- pstream: packet stream for Go
- quic-channel: prototype of mesh networking with Quic channels
- webleague: a DOTA 2 in-house league system (for FPL) with bots.
- xbee-netdev: Linux TAP network interface over Xbee radios.







