Systems Architecture & Engineering

Bridging high-level design with low-level, battle-tested implementations.

18+ years designing zero-assumption infrastructure that powers trillions of sessions for millions of creators; built to run reliably alongside uninspected, third-party codebases.

Pay only for the bits needed.

Z serializes a schema straight into a buffer: variable-length integers, bit-packed booleans, and lossy fixed-point types. Move one player's state and watch what crosses the wire, next to the same fields as JSON.

One player, one ticktry it

Z11 bytes

  1. 05
  2. 64
  3. 0C
  4. 00
  5. 05
  6. 00
  7. EC
  8. FF
  9. D8
  10. 08
  11. 40

JSON103 bytes

{"flags":[true,false,true,false],"hp":100,"pos":{"x":12,"y":5,"z":-20},"xp":1112,"yaw":1.5707963267949}
  • flags1 BZ.bools4 booleans in 1 byte, 4 bits spare
  • hp1 BZ.u8fixed 1 byte, 0 to 255
  • pos6 BZ.Vector3i163 × i16, whole studs
  • xp2 BZ.uintvarint: 7 bits per byte, grows with the value
  • yaw1 BZ.Angle8a full turn in 1 byte, 1.4° steps

9.4× smaller · sixty players on a server, each client hearing the other fifty-nine at 20 Hz: Z13.0 KB/s, JSON 121.5 KB/s.

Built in the Open.

The engines, platforms, and primitives behind those trillions of sessions: source you can read, numbers you can rerun.

library

Flux

A lazy reactivity engine and UI framework. Computations run only when observed, so a write costs the flag, not the recompute. No dirty-checking, no topological sorts, and no virtual DOM. Strictly typed to catch misuse before the code executes.

  • Luau
  • Reactivity
  • Typed API
  • CI + Coverage
platform

Kohl's Admin

Live-ops infrastructure for Roblox experiences: role-based access, live moderation, anti-abuse, and monetization behind a version-stable API.

  • Luau
  • RBAC
  • Live Ops
  • API Stability
generator

LuauDocs

A documentation generator for Luau. It works out what a module exports and reads the real type annotations, so untagged libraries still get a full API reference and no signature can drift from the code.

  • TypeScript
  • Luau
  • VitePress
  • Moonwave-compatible
method

Luau reactivity benchmark

A port of js-reactivity-benchmark. Upstream abandoned their GC suite, so I wrote one that measures teardown cost and retention across 60k-node graphs.

  • Luau
  • Python
  • Measurement
  • Reproducible CI
algorithm

HyperLogLog

HyperLogLog++: counts millions of distinct values in a few kilobytes of fixed memory, and its sketches merge across servers without double-counting.

  • Luau
  • Cardinality
  • Probabilistic
  • Distributed

O(1) inserts
tunable precision

wire format

Z

Schema-driven binary serialization: varints, bit-packed booleans, and lossy fixed-point types; every value pays for only the bits it needs.

  • Luau
  • buffers
  • protocol design
  • schema migration

varint + bit-packed
migratable schemas

Identical workloads. Measured.

Flux is mine. The other bars are the ecosystem's three most popular fine-grained reactivity libraries, plus Roblox's official one. The workloads aren't mine: the harness is a straight port of js-reactivity-benchmark.

Luau reactivity benchmarkheadless luau -O2· per-bench process isolation · normalised per row to the fastest (shorter = faster)10×relative time, lower is faster →OVERALL · GEOMETRIC MEANover 22 of 22 rows · DNF charged its per-bench time capkohltastrophe/flux0.1.01.08×centau/vide0.4.01.32×roblox/signals0.9.01.66×littensy/charm0.11.01.73×elttob/fusion0.3.014.84×Port of milomg/js-reactivity-benchmark · normalised per row to the fastest framework (1.0×, shorter = faster) · process-isolated, fastest-of-N per run.Faded bars exceed 10× (true multiple labelled) · a DNF is charged its benchmark's time budget (per-bench cap, else the 60s process cap) in the geomean (an unexpected error is excluded instead).

Geometric mean across the kairo, cellx, dynamic, sbench, and GC suites, each library configured as shipped. Method, adapters, and raw numbers: luau-reactivity-benchmark.

How I work. With receipts.

Three principles, each ending in the code that holds me to it.

Write the missing spec

Ambiguity is expensive, so hard definitions come first: what to measure, what must be fast, and what counts as done.

receipt

Upstream started a GC suite and never finished it, so I wrote the spec myself.

the measurement

Build for the dark

Production, for me, is other people's servers: no console, no logs, no second chances. Anything that can fail is handled before it ships.

receipt

One release lands on millions of live servers at once. Strict versioning is the only rollback I get.

the solution

Ship the proof

Recent client work is under NDA, so the open repositories stand in for it. Nothing on this page asks to be taken on trust.

receipt

Six repositories, MIT licensed, benchmarks included. Audit the commit history, not the résumé.

the work

Let's connect

hi@kohl.gg

Whether you're designing from scratch, untangling legacy performance bottlenecks, or building something ambitious; my inbox is open. Let's talk specifics.

Write to meGitHublimited availability
Experience
18 YearsProductSystems
Focus
Live OpsProtocolsReactivity
Languages
LuauC/C++JavaJSPythonSQL
Also
BlenderAfter FXIllustratorPhotoshop
Kohl, an ambiguous engineer