Software engineer since 2012. These are my field notes.

I started writing code for an electronic trading firm, deep in the world of high-frequency systems — latency measured in microseconds, ring buffers, off-heap memory, and the LMAX Disruptor. From there I moved to a large financial institution, where the problems shifted from raw speed to correctness, data at scale, and systems that had to survive years without a restart. After that, a fintech startup building in Go, then an established European financial technology firm, and currently a large US technology company.

This blog documents what I actually encountered — not tutorials, but real tradeoffs, real failures, and what the benchmarks don’t tell you.

Lately I’ve started crossing a line I spent a decade next to but never over: from building the systems trading firms run on to actually analysing markets myself. A series of side projects — a software engineer playing quant, applying engineering discipline to market-data analysis in Python (numpy, pandas, and the data/ML stack). Documented as it happens, mistakes included.


Skills & Specialisations

Low-Latency & High-Throughput Systems

Lock-free data structures, the LMAX Disruptor, Chronicle Queue/Map, mechanical sympathy, JVM GC tuning, off-heap memory, CPU affinity. Building systems where microseconds are the unit of concern.

JVM Internals

GC mechanics (CMS, G1, ZGC, Shenandoah), JIT compilation, safepoints, memory layout, profiling with async-profiler and JFR. Java and Scala.

Go

Primary language since 2019. Goroutine scheduler, memory model, pprof profiling, gRPC, net/http at scale, generics, race detector. Production services from startup to enterprise scale.

Distributed Systems & Data

Kafka (including EOS), Flink, ClickHouse, time-series databases, Apache Arrow/Parquet, event sourcing, stream processing. Designing systems that stay correct under partition.

Functional Programming

Clojure in production — risk calculation pipelines, data transformation, clojure.spec, core.async. Functional thinking applied beyond Clojure.

AI-Native Engineering

LLM integration and production RAG systems. Designing retrieval pipelines (chunking strategies, embedding models, vector stores, reranking). Function calling and tool-use patterns. Prompt engineering for structured output. Using AI tooling as a genuine development multiplier — not vibe-coding, but systematic augmentation of the engineering workflow. Evaluating and testing LLM-integrated systems.

Engineering Leadership

Technical strategy, RFC-driven decision making, platform engineering (internal developer platforms as products), cross-team alignment, engineering management, hiring and onboarding, postmortem culture.

Quantitative & Data Analysis (side projects)

Market-data research in Python — numpy, pandas, pyarrow/Parquet. Reproducible research pipelines, vectorised time-series analysis, honest backtesting (lookahead and survivorship bias, transaction costs), walk-forward validation. An engineer’s discipline applied to data the maths PhDs usually own. A learning thread, deliberately.


Available for Consulting

I take on a limited number of consulting engagements:

  • Architecture review — distributed systems, data pipelines, Go services, low-latency systems
  • Performance investigation — latency analysis, GC tuning, profiling, bottleneck identification
  • LLM integration — RAG system design, production LLM pipelines, evaluation frameworks
  • Technical due diligence — codebase and architecture assessment for investment or acquisition

[email protected]