About

James Tucker

I am a systems engineer in Invercargill, New Zealand. I spend most of my time on problems where correctness and latency both matter, and where the system has to keep running once the interesting part is finished.

Since 2025 I have been building and operating EdgeDepth, a real-time market data and replay platform for crypto perpetual futures. It is a solo project in the sense that I wrote all of it, and a production system in the sense that it holds exchange connections open around the clock, records everything, and pages me when it stops. The client is open source.

What I actually work on

Real-time C++. The EdgeDepth client is C++20 compiled to WebAssembly with Emscripten, rendered through Dear ImGui, ImPlot and WebGL2, drawing dense market visualisations at up to 180 FPS. Most of the engineering there is about frame budgets and choosing the right synchronisation for each kind of data. Order-book updates land in a mutex-protected write model that the render thread publishes once per frame, because only the latest book is ever drawn. Discrete events drain in order through a dispatch queue under a 3 ms per-frame budget, so a burst of ingest can never eat a whole frame. The reasoning is written up in the repo’s architecture document.

Go and distributed data. The backend runs as distributed services across bare-metal Linux hosts in three locations joined by WireGuard. A thin producer holds the exchange connections for 558 instruments and publishes into NATS JetStream; analytics consumers reconstruct order books, process concurrent streams, detect events, and deliver Protobuf over WebSocket. Either side can be redeployed without losing data.

Storage and operations. PostgreSQL and TimescaleDB with streaming replication to a standby, tiered storage running from a NATS tail through TimescaleDB out to Parquet on object storage, backups behind a daily automated integrity gate, Prometheus and Grafana, nginx, firewalling, and my own on-call. A historical depth backfill through that pipeline moved 38.7 billion rows across 171,146 files, 337 GiB in total, in 71 hours with zero errors.

Determinism. On top of the recording sits a research engine with a closed 39-feature grammar across 844 instruments. Queries are content-addressed and byte-reproducible, and outcome fields are structurally excluded from predicates, so selecting on the result you are trying to measure is impossible by construction rather than by discipline.

Fiordland, New Zealand

Before this

Three and a half years at WEBPUNKS in Klagenfurt, Austria, as a full-stack engineer in a team of roughly seven, building trail-angels.com and its Bookyourtrail booking platform for guided hiking-trail operators across the Alpine-Adriatic region. AngularJS front end, TypeScript and Node.js services, MongoDB. It was not the most technically demanding work I have done, but it is where I learned to operate inside someone else’s codebase: git workflow, code review, tests, and writing things other engineers would have to read a year later.

After that, a BSc at the University of Otago, a double major in Computer Science and Statistics, finishing in 2024. The statistics half turned out to matter more than I expected: stochastic modelling, Poisson and point processes, Markov chains, hidden Markov models, forecasting and simulation are most of what the research side of EdgeDepth is built on.

Away from the screen

I tramp and run, mostly in Fiordland and the Southland backcountry. There are photos here. It is the main reason I moved back south.

Getting in touch

Email james@edgedepth.com, or find me on GitHub and LinkedIn. My CV is here.