I build things I actually use — notebooks that listen, tools that talk back, sweeping radios, cameras that understand context. I am the architect; LLMs handle most of the typing.
Magicnote is a notebook that listens, watches, and helps you think. You write in it the way you'd write in any notebook — pages inside folders — but it can also record audio, take photos, accept drawings, and talk to an assistant that reads and edits alongside you.
Three small MCP servers that give MagicNote's agent real situational awareness. Where I am, what the sky is doing, what's happening on X right now. Weather runs in a container on dockerllm; gpslog is stdio-native.
Browser-first spectrum + waterfall, 30+ US band allocations, remote PortaPack control. Hardware interrogated command-by-command over the ChibiOS shell — every button traces back to something verified on the device.
Python + GTK4 + GStreamer on libcamera. Autofocus, histogram,
audio levels, recording. The rear 13 MP Surface sensor streams at 30 fps —
something that took a custom libcamera build and an IPA tuning file to achieve.
A tiny Python daemon that toggles GNOME's on-screen keyboard based on whether you have a real keyboard attached. pyudev, evdev capability checks, 1.5 s debounce, and a sleep/resume listener. No polling.
Command-line probes for the Surface's cellular modem and GPS hardware.
A dashboard for event diagnostics feeds into gpslog, which
the MCP server reads.
The Surface Pro 9 is the UI playground. It's where I try out interfaces for LLM-layer applications — cameras, microphones, stylus, GPS, software-defined radio all inches from the code. The dockerllm Debian box is the deployment platform: headless, docker-compose all the way down, where the services live. Everything here runs on the LAN today — with cloud pieces coming as the garage grows.
what it took to make both sides work