I design and build reliable software for mission-critical Linux
infrastructure — from netlink and packet rings up to distributed
middleware for autonomous maritime systems. Tech lead by day,
open-source toolsmith the rest of the time.
Spin up a realistic multi-router network — impairments, WireGuard, VXLAN, VRFs — as fast and reproducibly as running a unit test, without Docker or vendor NOS images.
NLL, a typed topology language: loops, parametric imports, IP arithmetic, editor tooling (tree-sitter, VS Code, Zed, Helix)
#[lab_test] macro runs whole topologies inside cargo test with automatic teardown
wan-impairment.nll
# Two sites joined by an impaired WAN link — one file, one command.
profile router { forward ipv4 }
node router-a : router { route 10.2.0.0/24 via 172.16.0.2 }
node host-a { route default via 10.1.0.1 }
link router-a:eth0 -- host-a:eth0 { 10.1.0.1/24 -- 10.1.0.10/24 }
link router-a:wan0 -- router-b:wan0 {
172.16.0.1/30 -- 172.16.0.2/30
delay 30ms jitter 5ms loss 0.1% rate 50mbit
}
Typed subscription engine splits filters between kernel BPF and userspace; JA3/JA4, Sigma, YARA-X detections built in
capture.rs
// Zero-copy borrowed batches via AsyncFd — nothing is copied per packet.
let mut cap = netring::AsyncCapture::open("eth0")?;
loop {
let mut guard = cap.readable().await?;
while let Some(batch) = guard.next_batch() {
for pkt in &batch {
let data: &[u8] = pkt.data(); // borrows from the ring
let ts = pkt.timestamp(); // ns kernel timestamp
}
}
}
Watch a fleet of Linux hosts and network devices — SNMP, syslog, NetFlow, Modbus, gNMI, kernel telemetry — through one data model and one live desktop UI, without a heavyweight monitoring stack.
11 protocol sensors plus eBPF probes publish into one Zenoh keyspace; every sensor is auto-discovered
A correlator fuses per-sensor identity evidence into a single entity per host
Prometheus and OpenTelemetry exporters bridge it to existing stacks; native Iced frontend
keyspace
# Every sensor publishes into one Zenoh keyspace — add one, it appears.
zensight/v1/h-9706b31ddad3/telemetry/sysinfo/cpu/usage
zensight/v1/h-9706b31ddad3/telemetry/netflow/flows
zensight/v1/h-9706b31ddad3/state/netlink/health
zensight/v1/h-9706b31ddad3/@rpc/netlink/sockets
Ecosystem
One toolkit, not a pile of experiments
Most of my open-source projects are stages of the
same pipeline: a Rust toolkit for configuring, simulating, capturing,
analyzing, transporting and observing distributed Linux networks. The
pieces test each other — zenoh-bridge-tcp runs its
integration suite on nlink-lab WAN topologies, and
zensight ships a netring-based wire sensor.
Everything here is developed on my own self-hosted
Forgejo forge — CI, releases and
signed flatpaks included — and mirrored to
GitHub. If you're working on
Rust, Linux networking, distributed systems or the Zenoh ecosystem,
I'm always happy to compare notes.