Noah Watkins (@spin_lock_init) header
Noah Watkins (@spin_lock_init) profile picture

Engineering @RedpandaData

sf
Joined August 2026
Photo by Noah Watkins (@spin_lock_init)Photo by Noah Watkins (@spin_lock_init)Photo by Noah Watkins (@spin_lock_init)Photo by Noah Watkins (@spin_lock_init)Photo by Noah Watkins (@spin_lock_init)Photo by Noah Watkins (@spin_lock_init)Photo by Noah Watkins (@spin_lock_init)Photo by Noah Watkins (@spin_lock_init)
prototyping some new #cplusplus interview questions
2
750
Noah Watkins retweeted
Replying to @craigjellick
The weird thing about vision is if you tell most people the long term vision up front they call you crazy and laugh at it. It's better to do something short term and obvious that everyone can grasp while carrying water and chopping wood towards the real vision.
16
19
11
565
14,450
Noah Watkins retweeted
Okay, let's do this. Isabelle, Lean, and Rocq (formerly Coq*) are theorem provers. They are meant to prove mathematical theorems. We use them for formal verification by either 1) translating a program to the theorem prover (risking a translation error) or 2) using a language built into the theorem prover that extracts into a working binary. Fizzbee, TLA+, Spin, Alloy, Quint, and P are specification languages. They are meant for checking high-level blueprints of programs. After checking the blueprint, you still need to make sure your program matches it, which is a hard problem. Specification languages differ in what they make easy to express. P, Spin, and Fizzbee are designed to be closer to the code implementations. P looks like interacting state machines, Spin looks like C with CSP, Fizzbee looks like a dialect of Python. It's easier to use a codelike specification language and refine it to code, but you can't do as much with it. Alloy, TLA+, and Quint are more abstract. Alloy looks like a bunch of algebraic relationships, TLA+ is a much of logical formula, and Quint is a programmer-oriented (and statically typed) condensation of TLA+. Abstract modeling languages are harder to get started with and harder to represent things, but you can represent a wider class of systems with them. I believe UPPAAL is a specification language for realtime systems. This is a field I have no experience in. It seems a graphical language, though, which would make LLM-assistance difficult. Dafny is a verifiable programming language. It has regular programming language features, but also a bunch of features to express and prove properties of the program. It uses SMT solvers to actually prove the properties, meaning you don't need to learn a proof language (though you need to learn to cajole the solver). Dafny is probably the easiest thing on your list to get started with, but also the least likely to meet any weirder needs you might have. I don't know what Ivy is but some cursory Kagiing suggests it falls in the specification language category. Some other things @spin_lock_init didn't mention: - Other theorem provers: Agda, Metamath - Other abstract specification languages: mcrl2, NuXMV, Event-B - Other verifiable programming languages: Idris, F*, Whiley - There's also using a verifiable subset of a language, like Verus for Rust or SPARK for Ada. So, what you need to pick depends on what you want to do. You'll get the maximum power with a theorem prover. Lean is the de facto language for vibeproving, but Anthropic recently published a post about vibeproving in Rocq so YMMV. If you want to make abstract models of software systems, go for a specification language. Which you choose depends on a lot of factors. If your system can be represented as lots of simple communicating state machines over a network, try P. Spin, I believe, is close to simple C/Go with a network and channels. I have never used Fizzbee. Alloy is good for domain modeling, but struggles with really complicated temporal actions, nested data structures, and largish numbers. Also AIs aren't to good at it (last I checked, in March). Runs fast and makes good visualizations though. TLA+ and Quint are for modeling complex temporal systems. I'm partial to TLA+ but know a lot of people who say Quint is easier to get into. Note P, Fizzbee, and Quint all claim to have features for testing a codebase against a spec. I can't vouch for any of them, though. None of the languages I mentioned (except maybe NuXMV?) are particularly good at modeling sequential, deterministic algorithms. Use Dafny if you need to just write a verified program and don't care which language it's in. I don't think other verifiable programming languages are as user-friendly for the time being. Consider a verified subset if you already know a language and want to just augment it with more correctness. You may need other, more exotic tools depending on your particular needs. Regardless of the above advice, don't be afraid to use the wrong tool for the job. If you vibe well with a language, and you achieve good LLM-sympathy with it, you'll be able to go farther than using a "right tool" you don't like.
IIUC, all i need to do next is pick one of these? fizzbee, tla, spin, alloy, ivy, quint, isabelle, lean, p language, dafny, coq, uppaal
26
54
5
347
16,897
I suspect the answer is no [0], but @hillelogram, is there a decision tree to help match a problem to a tool? [0]: my hunch is that there are really only a few categories that cover all use cases, in which case the decision tree is far less useful than it appears.
IIUC, all i need to do next is pick one of these? fizzbee, tla, spin, alloy, ivy, quint, isabelle, lean, p language, dafny, coq, uppaal
1
2
556
insane stuff and just getting started
AI is making it unsafe to ship even just a binary to your customers. Over the past 6 weeks, we've had multiple users attempt to reverse-engineer the Archil client as well as try to infer different behaviors about the Archil client from the strings present inside of it. I don't know how this ends, but this is definitely making it challenging to distribute software to customers. In my previous life, I wouldn't have wanted to give customers tools that would be confusing or lead them to the wrong conclusions about how services work (like the strings to a binary). In this new world, maybe you just have to open-source everything?
1
334
but pgrust passes all 46,066 tests 🤦‍♀️ databasearchitects.blogspot.…
9
9
2
199
20,949
Noah Watkins retweeted
We're rdfmaxxing. semblance.dev/
2
2
4
460
Rust? Are you even trying to spy on me Amazon?
1
2
370
After years of ignoring Bazel, I can't imagine using anything else. And it looks like the future is bright, as this recap shows that BazelCon 2026 was a total banger. Plus, even Bazel can escape sandbox-mania: > actiond: the quest for a better sandbox blogsystem5.substack.com/p/b…
1
5
128
Built an entire sandbox company today during the ride
2
2
180
eBay out here doing some serious storage system engineering usenix.org/conference/fast27…
1
2
121
hey @CrowdStrike when are we going to get official support for Ubuntu 26.04 LTS? It has been out since April.
58
gemini just nailing it, as usual
1
60
vim vs emacs is a fun time, but the real psychology starts when people reveal if they get just as much pleasure out of coding with agents as they did in the before times.
2
5
339
"It's not that we don't value human review, we just haven't yet invented a browser than can open Claude's PR"
45