| CARVIEW |
Select Language
HTTP/2 200
content-type: text/html; charset=utf-8
last-modified: Wed, 03 Dec 2025 01:27:40 GMT
server: AmazonS3
content-encoding: gzip
date: Fri, 16 Jan 2026 04:23:34 GMT
etag: W/"860651dffea59038d0134fbd755bc950"
vary: accept-encoding
x-cache: Hit from cloudfront
via: 1.1 b0a888249d3bba55334f019544ce6cec.cloudfront.net (CloudFront)
x-amz-cf-pop: TLV50-C1
x-amz-cf-id: va0rHNWB8ubikWbCmGPvzLjV5Ghc5yjkfVxzqMjTU4v1GoF4_Gd2BA==
age: 924
Hillel Wayne
Skip to Content
New: My new book, Logic for Programmers, is now in public beta! Get it for 20% off here.
Hillel Wayne
Blog Posts
-
-
Posted on
Gamer Games for Non-Gamers
-
Posted on
A Perplexing Javascript Parsing Puzzle
-
Posted on
The Hierarchy of Controls (or how to stop devs from dropping prod)
-
Posted on
Hiatus
-
Posted on
Toolbox languages
-
Posted on
Composing TLA+ Specifications with State Machines
-
Posted on
Software Friction
-
Posted on
Don't let Alloy facts make your specs a fiction
-
Posted on
The Tale of Daniel
-
Posted on
The Hunt for the Missing Data Type
-
Posted on
Planner programming blows my mind
-
Posted on
An RNG that runs in your brain
-
Posted on
The World and the Machine
-
Posted on
Notes on Every Strangeloop 2023 Talk I Attended
-
Posted on
A better explanation of the Liskov Substitution Principle
-
Posted on
Learn AutoHotKey by stealing my scripts
-
Posted on
My Problem With the Four-Document Model
-
Posted on
Somehow AutoHotKey is kinda good now
-
Posted on
Breaking the limits of TLA+ model checking
-
Posted on
Ten weird things you can buy online (and why you would)
-
Posted on
That Time Indiana Almost Made π 3.2
-
Posted on
A Neovim Task Runner in 30 lines of Lua
-
Posted on
NP-Complete isn't (always) Hard
-
Posted on
Sources of Complexity: Constraints
-
Posted on
Let's Prove Leftpad
-
Posted on
Notes on Every Strangeloop 2022 Talk I Attended
-
Posted on
Safety and Liveness Properties
-
Posted on
Software Mimicry
-
Posted on
Crimes with Python's Pattern Matching
-
Posted on
Announcing: Learn TLA+
-
Posted on
I ❤️ Microscopes
-
Posted on
Hiatus
-
Posted on
Using Abstract Data Types in TLA+
-
Posted on
Alloy 6: it's about Time
-
Posted on
How to Solve the Sudoku Puzzle with programming
-
Posted on
Specification Refinement
-
Posted on
Cross-Branch Testing
-
Posted on
Clever vs Insightful Code
-
Posted on
Why Specifications Don't Compose
-
Posted on
Why Do Interviewers Ask Linked List Questions?
-
Posted on
TLA+ Action Properties
-
Posted on
What engineering can teach (and learn from) us
-
Posted on
We Are Not Special
-
Posted on
Are We Really Engineers?
-
Posted on
There's Always More History
-
Posted on
Two workers are quadratically better than one
-
Posted on
Software correctness is a lot like flossing
-
Posted on
Finding Goroutine Bugs with TLA+
-
Posted on
Decision Table Patterns
-
Posted on
J Notation as a Tool of Thought
-
Posted on
A Better Cheatsheet
-
Posted on
The Frink is Good, the Unit is Evil
-
Posted on
Weak and Strong Fairness
-
Posted on
Property Testing with Complex Inputs
-
Posted on
Constructive vs Predicative Data
-
Posted on
In Praise of AutoHotKey
-
Posted on
The Hard Part of Learning a Language
-
Posted on
Announcing: Alloydocs
-
Posted on
10 Most(ly dead) Influential Programming Languages
-
Posted on
This is How Science Happens
-
Posted on
Feature Interaction Bugs
-
Posted on
The Business Case for Formal Methods
-
Posted on
Hypermodeling Hyperproperties
-
Posted on
How fast do I talk?
-
Posted on
Formally Modeling Database Migrations
-
Posted on
Python Negatypes
-
Posted on
Performance Matters
-
Posted on
Modeling Missing Requirements
-
Posted on
Probabilistic Modeling with PRISM
-
Posted on
At least one Vim trick you might not know
-
Posted on
Alan Kay Did Not Invent Objects
-
Posted on
Modeling Adversaries with TLA+
-
Posted on
Finding Property Tests
-
Posted on
Metamorphic Testing
-
Posted on
Using Formal Methods at Work
-
Posted on
Solving Knights and Knaves with Alloy
-
Posted on
Why Don't People Use Formal Methods?
-
Posted on
STAMPing on event-stream
-
Posted on
A Better Interview
-
Posted on
Modeling Message Queues in TLA+
-
Posted on
Practical TLA+ Now Available
-
Posted on
Optimizing MiniZinc
-
Posted on
Constraint Solving with Minizinc
-
Posted on
1/0 = 0
-
Posted on
Augmenting Agile with Formal Methods
-
Posted on
Decision Tables
-
Posted on
Formally Specifying UIs
-
Posted on
The Great Theorem Prover Showdown
-
Posted on
Why Does "=" Mean Assignment?
-
Posted on
Just a Whole Bunch of Different Tests
-
Posted on
Formally Specifying a Package Manager
-
Posted on
The Problem With APLs
-
Posted on
Important Women in CS Who Aren't Grace Hopper
-
Posted on
Proving Games are Winnable with Alloy
-
Posted on
Vim Macro Trickz
-
Posted on
Property Tests + Contracts = Integration Tests
-
Posted on
What's the Right Tool for the Job?
-
Posted on
Introduction to Contract Programming
-
Posted on
Calculating Burn Rates in J
-
Posted on
Why TDD Isn't Crap
-
Posted on
Handwriting Programs in J
-
Posted on
Uncle Bob and Silver Bullets
-
Posted on
Instructive and Persuasive Examples
-
Posted on
How Do We Trust Our Science Code?
-
Posted on
Hypothesis Testing with Oracle Functions
-
Posted on
Modeling Zero-Downtime Deployments with TLA+
-
Posted on
Falsehoods Programmers Believe About Dogs