Program Manager, DARPA Information Innovation Office (on leave from Rice University)
Program Manager, DARPA Information Innovation Office (on leave from Rice University)
Posts
Program Manager, DARPA Information Innovation Office (on leave from Rice University)
Program Manager, DARPA Information Innovation Office (on leave from Rice University)
Program Manager, DARPA Information Innovation Office (on leave from Rice University)
Program Manager, DARPA Information Innovation Office (on leave from Rice University)
I've recently been playing around with vibe coding some basic tree-like data structures (treaps, red-black trees, AVL trees, and hash-array mapped tries) in Rust, and then twisting the arm of the LLM to do an optimization from Sarnak and Tarjan (1986) that lets you keep a version history without paying O(log n) path copying costs. This is the sort of thing that, in the old days, might have made for a useful undergraduate senior thesis that they'd crank on for a semester.
I'm at a point where I now have modest confidence in the correctness of my vibe code (e.g., it's got property-based tests that check the invariants, and also doesn't crash under load, despite lots of internal calls to Option::expect()), but I'm not confident enough to share it. It's not bad but not great.
At some point, I'll write up something useful about what I've learned about how to vibe code (in short, write vicious unit tests or you're doomed), but meanwhile I thought I'd skip straight to the data.
For comparison, I also included Rust's "im_rc" crate, which includes a human-written HAMT by
@bodil@social.treehouse.systems; I'm using the faster "Rc" version since that's how I vibe-coded all those others.
Punchline 1: @bodil@social.treehouse.systems wins. Their work is the "IM HashMap" in the graph. Higher is better. X-axis is problem size and Y-axis is throughput. The benchmark was 80% reads and 20% a mix of inserts, deletions, and updates. Every "version" is saved, creating (hopefully) real memory pressure.
Punchline 2:
The Sarnak-Tarjan optimization definitely helps for the various binary trees, but my attempt to do it for HAMT ended up costing a factor of two in perf. Yikes.
Graph below generated by Criterion.rs. Yes the colors are horrible. Measured on my M1 MacBook Air, because why not.
Program Manager, DARPA Information Innovation Office (on leave from Rice University)
I gave a keynote talk last week at NDSS. I spent the front half talking about memory safety and how we can, once and for all, eliminate things like buffer overflows. In the back half, I talked about how DARPA works, saying all the things that I wish I'd known about DARPA when I was starting my own academic career. I also wore my favorite vintage aloha shirt.
Program Manager, DARPA Information Innovation Office (on leave from Rice University)
A useful explainer about why static type systems, in general, and Rust, in particular, are super useful for debugging code.
https://blog.daniel-beskin.com/2025-12-22-the-compiler-is-your-best-friend-stop-lying-to-it
Program Manager, DARPA Information Innovation Office (on leave from Rice University)
Program Manager, DARPA Information Innovation Office (on leave from Rice University)
This is great: https://blog.trailofbits.com/2025/11/25/constant-time-support-lands-in-llvm-protecting-cryptographic-code-at-the-compiler-level/
LLVM 22 (and presumably all the subsequent versions) now have a constant time select intrinsic to enable cryptography algorithms to tell the compiler exactly what they need (i.e., evaluate both sides of a conditional expression then select the one you want), replacing gross bit hacking expressions that newer optimizers would unravel.