Security · Distributed systems · Developer tools · Local AI
Born and raised in Germany with Vietnamese roots. Currently doing my PhD in Canada.
Available for part-time remote contracting · $70/hour
I like building things, taking systems apart, and finding out why something behaves differently from what I expected. Sometimes that leads to a useful tool. Sometimes it just leads to another project.
For my PhD, I'm working on distributed key management for storage systems. A lot of that means writing prototypes, running benchmarks, and seeing what happens when the system is under load or parts of it fail.
In my free time I've been messing with coding agents and their harnesses. Lately I've been looking into skills: do they actually make agents better at particular tasks, or are we sometimes just adding more instructions and hoping for the best?
There's also my homelab, which runs on Proxmox and regularly gives me something new to tinker with. I tend to try a tool, run into one annoying limitation, and start wondering whether I should build my own. This may explain the number of unfinished projects.
|
An accounts-payable agent I built for the Tameion Agents Hackathon. It can recommend payments, but it can't approve its own spending. A budget contract on-chain makes that decision instead. I'd rather not let an agent talk its way around a spending limit. |
|
|
Part of my PhD research. I'm comparing different ways to build key management services for distributed storage and testing how they behave. Generating a key is usually the easy bit. Things get more interesting when requests pile up, a node disappears, or recovery doesn't go quite as planned. |
A commissioned prototype for managing different hypervisor platforms through one interface. It supports Proxmox and Xen Orchestra, with room for additional providers. The prototype is complete and has been handed off to the requesting organization's R&D team. It's not an open-source project. |
|
I keep wondering how much of a coding agent's performance comes from the model itself and how much comes from everything around it. I've been experimenting with smaller local models, tool use, context handling, and delegation. More recently, I've been trying to figure out which agent skills actually help and which ones just add noise. |
My NixOS configuration stopped being just a configuration a while ago. It's now where I experiment with multi-machine setups and self-hosted services. I like being able to rebuild a machine without having to remember every little thing I changed six months ago. Whether I always manage that is another question. |
I maintain Specht, and I also contribute fixes upstream when I run into problems. Sometimes the fix is tiny. Figuring out why it's needed usually isn't.
A few examples:
-
TokenTracker — Worked on Linux/NixOS and WSL support, provider integrations, and token accounting. Antigravity process + port detection · Command Code limits · Antigravity token accounting · DeepSeek Harness v3
-
Serpantinum — Fixed some Wayland desktop behavior and display-manager issues. SDDM compositor handling · Autohide tray behavior
-
Specht — Vulnerability management tooling I'm working on. I want it to be useful to developers first, not just another place to dump scanner output. I'm exploring CLI and MCP support so coding agents can help make sense of findings and work through them. Still very much a work in progress.
- You Can't Touch This: Detecting Typosquatting Packages for Enhanced Malware Prevention in Software Supply Chains — NSS 2024, Best Paper Award (Springer)
- Comparing Client- & Server-Side AEAD Encryption in Software-Defined Storage Systems — PST 2025 (IEEE Xplore)
Most days I write Go or Python. The rest depends on what I'm trying to make work.
If you're working on something interesting, have a weird bug, or just want to compare notes, feel free to reach out.
Probably working on another side project.


