The Curious Engineer

All blogs / Software / engineering practice

Hillel Wayne

hillelwayne.com/post

Recent content in Blog on Hillel Wayne

Software / engineering practiceMathTesting / QA

Posts
127 from 28 Dec 2016 to 1 Sep 2026
Posting
now and then (4 in the last year)
Kind
personal blog
Feed
https://www.hillelwayne.com/post/index.xml

2026 4

  1. A Crash Course in Predicate Logic
  2. Logic for Programmers is Now Available
  3. Chicago vs New York Pizza is the Wrong Argument
  4. Some Silly Z3 Scripts I Wrote

2025 4

  1. A Very Early History of Algebraic Data Types
  2. Gamer Games for Non-Gamers
  3. A Perplexing Javascript Parsing Puzzle
  4. The Hierarchy of Controls (or how to stop devs from dropping prod)

2024 10

  1. Hiatus
  2. Toolbox languages
  3. Composing TLA+ Specifications with State Machines
  4. Software Friction
  5. Don't let Alloy facts make your specs a fiction
  6. How old is the name 'Daniel'?
  7. The Hunt for the Missing Data Type
  8. Planner programming blows my mind
  9. An RNG that runs in your brain
  10. The World and the Machine

2023 11

  1. Notes on Every Strangeloop 2023 Talk I Attended
  2. A better explanation of the Liskov Substitution Principle
  3. Learn AutoHotKey by stealing my scripts
  4. My Problem With the Four-Document Model
  5. Somehow AutoHotKey is kinda good now
  6. Breaking the limits of TLA+ model checking
  7. Ten weird things you can buy online (and why you would)
  8. That Time Indiana Almost Made π 3.2
  9. A Neovim Task Runner in 30 lines of Lua
  10. NP-Complete isn't (always) Hard
  11. Sources of Complexity: Constraints

2022 8

  1. Let's Prove Leftpad
  2. Notes on Every Strangeloop 2022 Talk I Attended
  3. Safety and Liveness Properties
  4. Software Mimicry
  5. Crimes with Python's Pattern Matching
  6. Announcing: Learn TLA+
  7. I ❤️ Microscopes
  8. Haitus

2021 12

  1. Using Abstract Data Types in TLA+
  2. Alloy 6: it's about Time
  3. How to Solve the Sudoku Puzzle with programming
  4. Specification Refinement
  5. Cross-Branch Testing
  6. Clever vs Insightful Code
  7. Why Specifications Don't Compose
  8. Why Do Interviewers Ask Linked List Questions?
  9. TLA+ Action Properties
  10. What engineering can teach (and learn from) us
  11. We Are Not Special
  12. Are We Really Engineers?

2020 19

  1. There's Always More History
  2. Two workers are quadratically better than one
  3. Software correctness is a lot like flossing
  4. Finding Goroutine Bugs with TLA+
  5. Decision Table Patterns
  6. J Notation as a Tool of Thought
  7. A Better Cheatsheet
  8. The Frink is Good, the Unit is Evil
  9. Weak and Strong Fairness
  10. Property Testing with Complex Inputs
  11. Constructive vs Predicative Data
  12. In Praise of AutoHotKey
  13. The Hard Part of Learning a Language
  14. Announcing: Alloydocs
  15. 10 Most(ly dead) Influential Programming Languages
  16. This is How Science Happens
  17. Feature Interaction Bugs
  18. The Business Case for Formal Methods
  19. Hypermodeling Hyperproperties

2019 15

  1. How fast do I talk?
  2. Formally Modeling Database Migrations
  3. Python Negatypes
  4. Performance Matters
  5. Modeling Missing Requirements
  6. Probabilistic Modeling with PRISM
  7. At least one Vim trick you might not know
  8. Alan Kay Did Not Invent Objects
  9. Modeling Adversaries with TLA+
  10. Finding Property Tests
  11. Metamorphic Testing
  12. Using Formal Methods at Work
  13. Solving Knights and Knaves with Alloy
  14. Why Don't People Use Formal Methods?
  15. STAMPing on event-stream

2018 24

  1. A Better Interview
  2. Modeling Message Queues in TLA+
  3. Practical TLA+ Now Available
  4. Optimizing MiniZinc
  5. Constraint Solving with Minizinc
  6. 1/0 = 0
  7. Augmenting Agile with Formal Methods
  8. Decision Tables
  9. Formally Specifying UIs
  10. Raw Materials
  11. The Great Theorem Prover Showdown
  12. Why Does "=" Mean Assignment?
  13. Just a Whole Bunch of Different Tests
  14. Formally Specifying a Package Manager
  15. List of TLA+ Examples
  16. Monad Tutorials for Other Topics
  17. The Problem With APLs
  18. It's Hard to Reason About Systems
  19. Modeling Redux with TLA+
  20. We've Already Thought the Unthinkable
  21. Teaching Leaky Abstractions
  22. Important Women in CS Who Aren't Grace Hopper
  23. Proving Games are Winnable with Alloy
  24. The best software engineering paper you haven't read

2017 19

  1. Vim Macro Trickz
  2. Property Tests + Contracts = Integration Tests
  3. What's the Right Tool for the Job?
  4. Maybe Comments SHOULD Explain 'What'
  5. How is a Class like a Microservice?
  6. Introduction to Contract Programming
  7. Calculating Burn Rates in J
  8. Why TDD Isn't Crap
  9. Unit Tests Aren't Tests
  10. Handwriting Programs in J
  11. Uncle Bob and Silver Bullets
  12. Instructive and Persuasive Examples
  13. How Do We Trust Our Science Code?
  14. Hypothesis Testing with Oracle Functions
  15. List of Articles about Programming Skepticism
  16. Modeling Zero-Downtime Deployments with TLA+
  17. Doctests in Python
  18. Falsehoods Programmers Believe About Dogs
  19. Uncle Bob is Ruining Software

2016 1

  1. Hate Your Tools