Hillel Wayne writes about formal methods, TLA+, software engineering practice and programming language history.
Commenters recommend his blog and his book Practical TLA+, saying it helped them structure their thinking and find bugs before coding.
This is a great question, and unfortunately the existing proof tools are very fragmented when it comes to target languages. E.g. there are a lot of C / LLVM and Java tools, a few C++ tools, a few Rust tools. I don't know of any proof tool that is production-ready that targets Go, Swift, and Kotlin.
One thing I will say is that proof is usually an expensive technique, and not just for the reasons in my post. Even setting up a proof can be demanding. So it's worth asking where in the project it's worth applying this kind of assurance? For example, Galois often applied proofs to cryptography, which are security critical and self-contained in small pieces of code. Proof and formal methods aren't one tool, but rather a toolbox that can solve different assurance problems. There's a big difference from a scalable static analysis like Infer and a fine-grained proof tool like Coq or Galois' SAW tool.
One easy place that formal methods can be useful is in modeling features of a project design for consistency. E.g. this is useful for protocols, state machines and similar. This means you can 'debug your designs' before building them into software. If that sounds like it might useful, I would suggest taking a look at Hillel Wayne's website: https://www.hillelwayne.com
After reading https://www.hillelwayne.com/post/are-we-really-engineers/ I am convinced that Software Engineering is the same as any other engineering field. Sure, it looks like like and death is at play in the other fields and all we do is debate what color fonts should be on a web page, but their projects seem a lot like that too. In every engineering field, projects usually go well enough to get another project, which is the best you can really hope for in the real world.
Our whole "I can't do work today, I have to apply these security fixes 83 levels deep" also sounds a lot like: https://practical.engineering/blog/2022/8/2/you-spend-more-on-rust-than-gasoline-probably
All in all, yeah, I don't understand the inferiority complex. Engineering always looks amazing to people that aren't in the thick of it, but we hide a lot of the flaws, and fix the other ones through iteration.
I can recommend Hillel Wayne's book "Practical TLA+". It helped me understand scenarios where TLA+ specifications and the modelling approach would be essential in discovering bugs before writing any code. (Still waiting to put my fledgling TLA+ knowledge to some actual application though, as I'm currently working on some graphics stuff with nothing distributed about it...)
Wayne also has a great blog: https://www.hillelwayne.com
Btw, not all great technology finds adoption at the FAANGs. At least Facebook and Google tend to be quite insular: they certainly don't frown on open source, but it must be something that can be assimilated into the worldview of hulking monorepos, company IDEs and tools teams.
To put it another way: if Facebook/Google are giant Borg cubes, then TLA+ is a clever little Vulcan ship applying pure logic to stay in the game.
Hi Hacker News!
There was a recent post on Show (https://news.ycombinator.com/item?id=28120247) for a collab notebook that allowed anyone to create AI art. We took that code and made a hosted version that makes it easy to get a video with just a query - no setup or coding experience necessary. Just click to the page and you’ll be able to create new art for free.
The generator is based off of the notebooks (https://colab.research.google.com/drive/1n_xrgKDlGQcCF6O-eL3NOd_x4NSqAUjK) written by Hillel Wayne (https://www.hillelwayne.com/) and Katherine Crowson.
You just type a query and you’ll get both an image and a video that the gan will generate. Because it’s seeded randomly each time, no two videos will ever be the same even with the same query.
Would love to get your feedback or see what you make!
There is a series of blog posts by Hillel Wayne, where he interviews former "real" engineers who became software developers, and asked them whether software development is engineering.
15 out of 17 subjects said yes, software development is engineering.
One interesting takeaway for me from that article is that we over-romanticise what "real" engineers actually do in their day-to-day life. "Real" engineering practices is messy and sloppy in ways that would make software developers uncomfortable, according to the some people who worked on both sides.
The articles are well worth a read:
https://www.hillelwayne.com/post/crossover-project/are-we-really-engineers/
https://www.hillelwayne.com/post/crossover-project/we-are-not-special/
https://www.hillelwayne.com/post/crossover-project/what-we-can-learn/
The major part of this post is about documentation, and would have benefitted greatly from reference to the 4doc model: https://docs.divio.com/documentation-system/
It's basically saying: don't just provide a reference, provide how-tos as well, and lead with them because they're the part of the total documentation which users generally want to see first. Generally, mind you, I tend to go straight to the reference material but not always.
Not that 4doc is a silver bullet or a law of nature, Hillel Wayne has some good things to say about that here https://www.hillelwayne.com/post/problems-with-the-4doc-model/