Introduction
The kind of thing this is gonna be
On Hating Your Tools
New Post: Formally Modeling Database Migrations
On Documentation
Data and Reality, 2nd Edition
Software isn’t designed for power users
Automation vs Augmentation
New Post! Plus Upkeep
- New Post: How Fast Do I Talk?
- The Crossover Project
- Link: A Cool Game
We Are Not Special
Canonical Examples
- Newsletter Links
Back on Windows
What is a “beautiful” proof?
A few smaller updates
- Ethnography of antipatterns
- Crossover project update
New Essay! (Also Workshop Field Notes)
Workshop Improvements
Increment Magazine
Science Turf War
Computer Things: YOW Roundup Edition
- YOW
Why Python is my Favorite Language
Why Python Is My Favorite Language
- Solving this
On Marketing Formal Methods
- Marketing Formal Methods
Back up your arguments plz
Bill Kentstravaganza
New Essay, Intentional Errors, and a TLA+ CLI
- New Essay
- Intentional Errors
- TLA+ CLI
Three Ways Juggling is Like Programming
A Totally Polished and not-at-all half-baked Take on Static vs Dynamic Typing
New Essay: The Business Case For Formal Methods
On Emulation
Project updates, request for help, braindump
- Random Thoughts
New Essay: Feature Interaction Bugs
10 Most(ly dead) important programming languages (first draft)
- tlacli now a python package
- First draft
Happy Precedence Day!
- Formal Methods Tweetstorm
- Precedence is weird
Donald Knuth Was Framed
- YOW! Talk
- Donald Knuth Was Framed
On Scaling Mental Models
- No Newsletter Next Week
- The Actual Thing
The Opposite of Documentation is Superstition
Online Workshops, Project Updates, New Post
- Leo Trip Report
On Customization
Special Purpose Languages
- Github acquires NPM
- Special Purpose Languages
Please don’t write your documentation in Markdown
- What to use instead
Language Warts and Vim Trix
- New(ish post)
- Language Warts
What’s the Most Expensive Software Per Byte?
- Expensive
- Small
- Small and Expensive
- Very Small and Very Expensive
- Small and Hideously Expensive
- Conclusion
- Update 2020-04-03
A Very Brief Intro to Formal Methods (aka my job)
- Formal Methods
Announcing Alloydocs, updates on major projects
- Alloydocs
- What’s Next
Making Illegal States Unrepresentable
Workshop Announcement, Vim is a bad modal editor
- Vim is a bad modal editor
- Better modal editors
New Essay, Office Hours, and a short essay
- New Essay
- Terse Programming Languages
Sneak Peek: Constructive vs Predicative Data
- Techniques for constructive solutions
- Thoughts
How I Write Talks
Rage Against the God Machine
New Essay: In Praise of AutoHotKey
- New Essay: In Praise of AutoHotKey
- Nothing else for now
If Inheritance is so bad, why does everyone use it?
- Some thoughts on first-generation solutions
Workshop Innovations and New Website Essay
- New essay: constructive versus predicative data
- Workshop innovations
Defects are not the fault of programmers
Some Ranting About Examples
Monads and Transducers are Literally 100% The Same Thing
New TLA+ Workshop, New PBT Essay
Understanding Fairness
- Stuttering
- Strong fairness
- Thoughts
Why You Should Always Blindly Chase Industry Trends
- “Are we really engineers” video now available
Why You Should Always Blindly Chase Industry Trends
- Disclaimers
- Technical Benefits
- Career Benefits
- Personal Benefits
- Conclusion
Situated Software
- New essay
- Situated software
I have become ideas guy
- Random Thoughts
Merchants on the Ivory Road
- Merchants on the Ivory Road
J sieves as a tool of thought
- J sieves as a tool of thought
- Sieves
Syntax highlighting is a waste of an information channel
New essay and some thoughts on humility
- New essay
- On Humility
Software correctness is a lot like flossing
How knowing math helps you write better software
- Bonus: De Morgan’s Paradoxes
Test Inference
- Miscellaneous thoughts
New Essay and a Very Peculiar Optimization
- New Essay
- Storing Sorts
- Discussion
What’s the Deal with Message Passing, Anyway
- Tweetstorms
Please read the paper before you comment
Formal Specification Languages
- Conclusion
- Tweetstorms
Treasure Hunting in the Noosphere
- Office Hours
- Fringetech
- Tweetstorms
Finding Go Concurrency Bugs with TLA+
- Discussion
That Time I Almost Joined a Software Cult
Write Notes for Your Code
- New Essay
- Write Notes For Your Code
Updates on the Crossover Project
Software Engineers Don’t Have Disciplines
- What is a discipline?
New essay, new “book” thingy
- New Essay
- New “Book”: Graveyard
Mystery Knowledge
We’re Bad at SAT Solvers
- We’re bad at SAT Solvers
We have met the Excelnemy and he is us
- Whoops on SAT
Edge Case Poisoning
- Addressing edge case poisoning
The Pendulum Swings Eternal
- Alloy Stream
- The Pendulum Swings Eternal
Sneak Peek: Two Workers are Quadratically Better than One
Two Workers are Quadratically Better than one
- Planning Ahead
- Specifying Throughput
- Specifying Latency
- Two Workers
- Generalizing the Model
- Conclusion
TLA+ Helped Me Count to Six
New Essay, Universal Examples, Old Essay
- Universal examples
Programs Writing Programs
- New Essay
Programs Writing Programs
- Other uses
- Misc
No, your clean code won’t save the planet
- Why do people do this?
Why I Still Use Vim
Weird Examples and Weird Tools
- Weird Examples
- Weird Tools
- Twitter
Knights, Puzzles, and Hypermodels
- Knights, Puzzles, and Hypermodels
There’s always more history
Computer Things: Vacation Phone-In Edition
Safety and Liveness Properties
- Limitations of LTL
- Exotic Properties
Oracle Testing
New Essay, New Workshop, Thoughts on Cleverness
- On Cleverness
The Most Important Video Game Ever Made
- The Most Important Video Game Ever Made
Cross-Branch Testing