Victoria's Code STA / 01
Blog/Ground Control Station
GCS — build log

Multi-Domain Ground Control Station

One console to fly drones, drive ground robots, sail boats, and dive underwater vehicles — all on one screen. Multi-domain from day one, license-clean, works air-gapped. No cloud, no vendor lock-in. This is the full build log, oldest question to newest answer.

Entries

Newest answer to oldest question

August 2026
2026.08.15

The EMERGENCY button that did nothing

A command came back REJECTED with no reason given. Chasing it down led me to a button labelled EMERGENCY that had never worked on that aircraft type — not broken, not disabled, just quietly incapable while looking exactly like a working control. The bug was one word in a list.

Deep DiveSafetyAdapters
Latest
2026.08.14

A number is not a measurement

The console said the drone was at 394. Four hundred what, measured from where, and as of when? A bare number on an operations screen is three questions pretending to be an answer. Today I shipped the unit, the reference frame, and the age — and a test caught me quietly widening a safety limit while converting between them.

StatusTelemetryUnits
2026.08.11

A Dead Drone That Looked Alive

This is the most important safety bug I've fixed on this project, and the scariest kind: the drone lost its link, and the console kept showing it flying. Frozen position, frozen battery — a calm, healthy-looking asset that was no longer talking to anyone. Silence has to look like silence.

Build LogSafetyTelemetry
2026.08.03

A Simulator, and the Five Bugs That Only Showed Up Once I Flew It

I added the MAVLink adapter and the tests passed. Then I built a tiny simulator so I could actually watch a vehicle fly — and within ten minutes it handed me five real bugs the green test suite never caught. One of them crashed the whole console.

Deep DiveSimulatorTesting
2026.08.03

One Port, Many Drones: Teaching the Console to Speak MAVLink

The console could already fly my own simulator. Teaching it MAVLink — the protocol industry autopilots speak — was supposed to be the big job of the week. It was a small one, and that's the whole point: a new kind of vehicle is a new adapter behind one unchanged seam.

Deep DiveMAVLinkAdapters
Gated
July 2026
2026.07.30

One Map, Eleven Radars: A Whole-Fleet Glance

A map answers where everything is. It's bad at telling you which asset is about to have a problem. So I built the what-view: eleven assets, every critical number, one screen — a grid of identical status cards where trouble literally glows.

Deep DiveUXTelemetry
2026.07.20

Sealing the Black Box: Making the Tape Tamper-Evident

The recorder is append-only, which makes it honest but not tamper-evident. It still trusts whoever holds the file. This post chains every event to the last, so changing any past entry breaks the whole chain after it. There is no quiet edit.

Deep DiveRecorderCryptography
Gated
2026.07.14

The Black Box: An Append-Only Record of Everything

I promised the recorder at the end of the pipeline post. Here it is — every operator action, every gate verdict, every command that reached a vehicle, written to a log that only ever grows. After an incident, you replay the tape.

Deep DiveRecorderAudit
Gated
2026.07.09

Wiring the Command Pipeline: The Ticker Stops Being a Promise

I'd marked the command pipeline "designed, not wired" and said so plainly. This post closes that gap — every command now traverses RBAC → Safety → ROE → Authorization before anything moves. The architecture that made it a small change instead of a rewrite.

SecurityZero-Trust
Gated
2026.07.09

Why TypeScript Now — and When I'd Reach for Rust, Go, or C++

Is the stack good, or should the whole thing be rewritten in something faster? For what this software does today, TypeScript isn't a compromise — it's the right fit. The other languages have a real place, but at the edges, and only at a concrete trigger.

LanguagesStrategy
June 2026
2026.06.30

Thinking Ahead: The Comms Layer, and a Polyglot Edge

A direction post, not a shipped-feature post. Resilient datalinks, gateways, a mission system, and integration through published standards — plus why the edge goes polyglot (Rust, Go, C/C++) while the core stays TypeScript.

RoadmapComms
2026.06.28

Zero-Trust: What I Actually Enforce, and What I Only Designed

Most security write-ups blur the line between what's enforced in code and what's on a slide. For a defense-grade console that line IS the deliverable. Here's mine drawn explicitly — enforced, designed-but-not-wired, and roadmap. Naming the gap is the point.

SecurityHonesty
Gated
2026.06.25

Talking to Drones Without the Internet

Air-gap means no internet, not no communication. The two-channel model, the local bearers, and the one seam that lets any device plug in — plus the first real hardware adapter, a clean-room Tello driver. (The Tello is the proof, not the plan.)

Air-GapComms
Gated
2026.06.25

The Stack — and the Three Rules That Picked It

TypeScript, Electron, React, MapLibre — and the three hard rules that chose every one of them: license-clean, runs air-gapped, and dangerous parts impossible by type. The stack is downstream of the rules.

ArchitectureLicensing
Gated
2026.06.01

GCS Build Log: Days 0–6

The day-by-day journal — what actually happened. Docs, design tokens, the map going live, making it testable, a ghost bug that took three sessions, and why I wrote a design doc instead of code.

Build Log
Gated
May 2026