I build software for flight operations: a hub that keeps flight planning data in sync, a dispatcher's client for it, and a viewer for electronic flight folders. Over more than 20 years I have worked across the whole chain, from ARINC standards and dispatch systems to the iPads in the cockpit.

The work starts with the process, not the code: how dispatchers and crews actually use the data, where it goes wrong, and what they need to see. This site describes the tools and the technical details behind them.

Background

I hold a Diploma in Mechanical Engineering with a specialisation in Manufacturing Technology — a foundation that shaped my approach to software: precision, structure, and a healthy respect for the machine underneath.

My interest in computing began long before professional software development. Starting on a Commodore VIC-20, I progressed through the Commodore 64 and the Amiga line (500, 2000, and 3000). I began with BASIC on the VIC-20, but quickly moved to 6502 and 68000 assembly language for the performance that games demanded. Writing demos and games in assembler on those machines gave me a deep intuition for memory layout, CPU cycles, and the cost of every instruction that I still draw on today.

In the mid-1990s I transitioned to C and later C++, moving with the industry toward more portable, structured systems code. Around the same time Linux and macOS became my primary platforms; I work with Windows where a project needs it.

Following the release of the iPad in 2010 I added Objective-C to my toolkit for iOS and iPadOS application development.

Today my primary language is Rust: the performance and control of systems programming, with a modern type system, an async runtime, and a compiler that catches whole categories of bugs at build time.

Domain Expertise

Technology Stack

Primary language: Rust (async/await, Axum, Tokio, SQLx, serde, quick-xml, utoipa)

Database: PostgreSQL 16 — parameterized queries, multi-tenant row-level isolation, schema migrations via SQLx

Observability: structured logging, a denormalised fact table for analytics

Frontend: React + TypeScript + Vite, deck.gl for route map visualization

Infrastructure: Docker, docker-compose, Linux (Debian/Ubuntu, 20+ years), shell scripting, webhook-driven event delivery

CLI tooling: ratatui (terminal UI), Clap (CLI parsing), blocking and async reqwest

Earlier languages: C, C++, Objective-C, 68000 & 6502 assembly, BASIC

Selected Projects

ofp hub — Multi-tenant hub between flight planning systems and their clients, PPS first. Keeps one canonical record per flight, generates ARINC 633 flight folders from it, takes the crew's reports back, and adds events, a dispatcher exception board and a tamper-evident change log.

ofp — The terminal client for the ofp hub: the dispatcher's flight list, the exception board and analytics, with a route map in the browser.

aviant — ARINC 633 EFF briefing platform. EFF package ingestion, folder-tree navigation derived from eff.xml, and document delivery for flight crews.