Sign in

Hillel

@hillelwayne.com
8.2K followers 104 following 5.1K posts

Developer educator at @antithesis.com. Formal methods, software history, chocolatiering. DMs open. *Logic for Programmers* now out! logicforprogrammers.com Newsletter: buttondown.email/hillelwayne

PostsRepliesMedia
Hillel @hillelwayne.com · 28/09/2026
I created an AI model that takes ANY software system and produces a TLA+ model that satisfies ALL its properties. Software engineering is solved forever!
A Python program that just outputs the null TLA+ spec, which automatically satisfies all properties
2322
Hillel @hillelwayne.com · 17/09/2026
Someone on LinkedIn has extremely low expectations of my wife, my grandmother, and Donald Knuth
A post saying "You called for Al generated comments to be autobans on
Linkedln. Is that what you want to happen if your spouse posts Al
generated content? How about a grandparent? Donald Knuth?" (I did not call for autobans)
5640
Hillel @hillelwayne.com · 10/09/2026
Are you kidding me
Sorry, you can't be Hillel Wayne because you're already in the author program as Hillel Wayne
0181
Hillel @hillelwayne.com · 29/07/2026
To make sure it looked good in print, I did five proofs. The printed version actually its own complex toolchain to build, as it needs different fonts and margins than the ebook PDF while still preserving 1-1 page compatibility. I think the results are worth it, though!
Page spread of the printed book, with a weighted cube
190
Hillel @hillelwayne.com · 17/06/2026
Does anybody have ins at Google marketing? I NEED to know how who was in charge of making sure this car miniature had A Chrome advert on it and how much Google had to pay (I believe the actual car had a Chrome advert, too, but surely they have to negotiate the merchandise, too?)
A McLaren MCL38 Miami Grand Prix 2024 miniature car with a chrome logo on it
171
Hillel @hillelwayne.com · 21/05/2026
Apparently books need a publisher label to be professional looking so now I'm mocking up injokes
It's the chicago flag! Not really
0100
Hillel @hillelwayne.com · 13/05/2026
The alleged problem is this section, where he says that the American TypeFounders Association defined a point as exactly .013837 inches, citing a NIST document. But NIST is codifying existing use, so they had to get it from SOMEWHERE. So what primary source gives that definition of a point?
The units have been defined here so that precise conversion to sp is efficient
on a wide variety of machines. In order to achieve this, TEX’s “pt” has been
made slightly larger than the official printer’s point, which was defined to equal exactly
.013837 in by the American Typefounders Association in 1886 [cf. National Bureau of
Standards Circular 570 (1956)]. In fact, one classical point is exactly .99999999 pt, so
the “error” is essentially one part in 108. This is more than two orders of magnitude
less than the amount by which the inch itself changed during 1959, when it shrank to
2.54 cm from its former value of (1/0.3937) cm; so there is no point in worrying about
the difference. The new definition 72.27 pt = 1 in is not only better for calculation, it is
also easier to remember.1 point (typography) is 0.013837 inch, or 1/72 inch (???)
110
Hillel @hillelwayne.com · 29/04/2026
Lobsters has a bit of a theme today
2252
Hillel @hillelwayne.com · 23/04/2026
I've been using .ttf fonts for the pdf because they zoomed in and out better. Then I got a printing proof and hoo boy that looks gross. This is 10x magnification but 1x also looks bad So now I need to make two versions of the book, one with .ttfs for screen reading and one with .otfs for printing
The printed words "only type" at 10x magnification. It's from a .ttf font so the type looks all smudgyThe printed words "only type" at 10x magnification. The .otf font is all smooth
160
Hillel @hillelwayne.com · 27/03/2026
So this is apparently how Austrians eat hotdogs
"An Austrian "hot dog" can use a hollowed-out baguette as the bread." — https://en.wikipedia.org/wiki/Hot_dog
1190
Hillel @hillelwayne.com · 25/03/2026
First proof run of Logic for Programmers! It found a lot of formatting issues that need to be fixed, but the book inches ever closer to being an actual physical book. Obligatory PDF link logicforprogrammers.com
A proof printing of Logic for ProgrammersInner page, with a diagram
0221
Hillel @hillelwayne.com · 16/03/2026
Man even the scambots are into QCon
140
Hillel @hillelwayne.com · 25/02/2026
Every rich person's nightmare is that they will somehow have to give something back to society
 You're worth $6 million in Illinois. 
Your estate tax bill? $456,071. 
 
Most people I talk to have no idea Illinois has an estate tax. 
Or that it kicks in at $4 million. 
Not $15 million like the federal exemption. 
$4 million.
3231
Hillel @hillelwayne.com · 24/02/2026
"Do not cite the 'IBM Systems Sciences Institute study' as evidence, as it does not exist. Also The IBM Systems Sciences Institute study proves we're right."
The section at URL https://codemarine.ai/research/#cost-of-bugs
330
Hillel @hillelwayne.com · 28/01/2026
Logic for Programmers has now passed 50,000 words, making it officially the longest text I have ever written.
Wordcount of each of the chapters (+ appendices + some mixins) showing that the wordcount of the book is now at 50,365
1450
Hillel @hillelwayne.com · 24/01/2026
One more basic misunderstanding of the problem domain: "if a problem takes O(n^3) to solve, it must take O(n^3) to verify a solution" Our best algorithm for solving 3SAT is ≈O(1.4^n) (n being number of variables). That's exponential. But we can CHECK IF A SOLUTION IS CORRECT in linear time.
1290
Hillel @hillelwayne.com · 24/01/2026
Then we get to the paper and... hoo boy. The central claim is that LLM output has O(n^2) computational complexity (n being input length), meaning it cannot solve problems harder than O(n^2). Later they give the example of printing all length k binary strings, which would take 2^k steps.
1271
Hillel @hillelwayne.com · 22/01/2026
Two years to go!
Tweet from 2018 saying

You want to stay relevant as a software developer for the next 10 years?

These are 3 major things you should focus on:

- GraphQL.
- Web Assembly.
- Web Components.

You will most likely end up using it so no better time to start learning it
than today!You want to stay relevant as a software developer for the next 10 years?

These are 3 major things you should focus on:

- GraphQL.
- Web Assembly.
- Web Components.

You will most likely end up using it so no better time to start learning it
than today!
1254
Hillel @hillelwayne.com · 21/01/2026
The gist of it is that A left join B is the inner join unioned with all the records of A where *no* B matches the join condition. This is one of the few ways to introduce universal quantifier into a SQL query. I've got a longer explanation in the next version of *Logic of Programmers*
Given the previous SELECT t1.x etc query, the outer join version is

{(t1.x, t2.y) for (t1, t2) in table1 x table2:
1. join_clause
2. where_clause
} |
{(t1.x, null) for (t1, t2) in table1 x {NULL}:
1. all t2 in table2:
1. !join_clause
2. where_clause
}

Where NULL is a special type that has all of table2’s keys but returns null for all of
them.

Notice that the first set comprehension is identical to the inner join. In the second
set comprehension, the filter clause changes from join_clause && where_clause to
(all t2: !join_clause(t2)) && where_clause. This is important because it means a left join can introduce an all quantifier to our query. Say we want a list of all employees who have never been a manager. The query, as a set comprehension, would be

{e in employees: all dm: dm.e_id != e.id}

We can’t use this quantifier as-is in SQL, but we can rewrite the comprehension into
a left join form!

# logic
{e for (e, dm) in employees x dep_managers:
1. dm.e_id == e.id
2. dm.id == NULL
} |
{e for (e, dm) in employees x {NULL}:
1. all dm in dep_managers:
1. !(dm.e_id == e.id)
2. dm.id == NULL
}
120
Hillel @hillelwayne.com · 21/01/2026
Why are Venn diagrams of SQL joins misleading? Let me count the ways: 1. The inner join is the intersection of A and B. But A and B are different types, so the intersection should be empty! 2. The left outer join is the whole circle A, so... what's B even doing there at all?
Venn diagrams of join tables, from https://stackoverflow.com/questions/13997365/sql-joins-as-venn-diagram
193
Hillel @hillelwayne.com · 16/01/2026
Either way I gotta figure out what I'm gonna do about this problem
310
Hillel @hillelwayne.com · 16/01/2026
I've got a big fan
New subsriber: youreapieceofshit at hillel dot wayne
290
Hillel @hillelwayne.com · 08/12/2025
Thanks to everybody who donated to the Feedchicago fundraiser! We raised a total of $2250 for @fooddepository.bsky.social. I donated last week to leverage a Giving Tuesday 2x match so it's $6750 total
Receipt of having donated $2,250
0100
Hillel @hillelwayne.com · 20/10/2025
6. CAVES OF QUD: The Citizen Kane of Dying Earth. Nobody could truly have liked the Dying Earth genre/setting before because, prior to Qud, nobody had truly experienced it. This game is a century-old idea finally reaching its real potential. Live and drink, traveler.
161
Hillel @hillelwayne.com · 20/10/2025
5. CASE OF THE GOLDEN IDOL: If this was around in 2005 Roger Ebert wouldn't have written that "video games aren't art" rant. This game is art by any conventional definition of "art". It's also proudly a game, telling its story in ways impossible in books or movies.
150
Hillel @hillelwayne.com · 20/10/2025
4. HEAT SIGNATURE: the second closest you'll feel to John Wick. A game about leisurely unfolding 5-alarm crises, demanding clever solutions to problems accidentally created by clever solutions to previous problems
160
Hillel @hillelwayne.com · 20/10/2025
2. RETURN OF THE OBRA DINN: A therapist once told me that all anger comes from loss. I told her some anger came from joy, because one discovery in Obra Dinn was SO GOOD it made me physically angry. Emotion hysteresis is real
2101
Hillel @hillelwayne.com · 20/10/2025
1. FACTORIO: @r.whal.ing and I spent like 80 hours beating the space age expansion, the single most incredible experience I had playing a game. By the end of the factories and shipping lanes we built were a work of craftship, unclear where engineering ended and art began
2110
Hillel @hillelwayne.com · 13/10/2025
You can create customer pickers! I got one for "open neovim files" bsky.app/profile/arac...
All my cool telescope mappings, like "local marks" and "everything in my vimrc folder"
151
Hillel @hillelwayne.com · 10/10/2025
If you ctrl click+drag on firefox you can select multiple independent sources of text and copy them all at once bsky.app/profile/benj...
020
Hillel @hillelwayne.com · 07/10/2025
FYI not all the abalone barnacles were dead, this 'lil guy even survived a night in the fridge
010
Hillel @hillelwayne.com · 07/10/2025
Are Abalone the grossest-looking food in the sea? 100%, especially under 40x magnification Still delicious tho
The Abalone shell has shells of other shellfish living on its shellHoles? Weird scales? A shell infection? Who knows!!!No idea what this purple thing hiding in one of the breathing holes is but it's probably from something aliveA whole colony of dead barnacles on this shell
240
Hillel @hillelwayne.com · 03/10/2025
There's "I think AI is a net negative to society" anti-AI and there's "I wish your human son had died" anti-AI
A: "AI helped me diagnose my son!"
B: "So would common sense"
A: "No there's context here"
B: "How dare you"
0140
Hillel @hillelwayne.com · 01/07/2025
I mean just look at how the cover evolved
160
Hillel @hillelwayne.com · 23/06/2025
Hmmmmm
Cognitive ease at a cost: LLMs reduce mental effort but compromise depth in student scientific inquiry

Use ScienceDirect AI!
0253
Hillel @hillelwayne.com · 20/06/2025
Picture of the vs screen, though I think it loses a bit without the animations and the music (oh hey the lights turned yellow because the last race is with DuckDB) They plan to release the program so you can make your own database races
151
Hillel @hillelwayne.com · 20/06/2025
These guys employ a lot of artists #sd25
111
Hillel @hillelwayne.com · 20/06/2025
Tigerbeetle also had the ability to do full replication and durability checks, since it was fast enough to afford to spend cycles on that. That was at 10% contention. Now benchmarking 50% contention with the proprietary postgres million-dollar cluster. Gets 2 minute headstart vs tigerbeetle
111
Hillel @hillelwayne.com · 20/06/2025
THE STAGE LIGHTS CHANGE COLOR THEY CHANGED COLOR THIS WHOLE TIME #sd25
Red and blue stage lights, they were yellow for EVERY OTHER TALK. Changing in time to the synthwave that's also playing
152
Hillel @hillelwayne.com · 20/06/2025
bufstreamIO [uses/is Kafka?] Kafka has some wierd properties, like you can insert a write in the middle of a read. Going through some of the bugs he found with jepsen, like a lease expiration never getting transmitted These slides are v good btw
KAFKA CHOOSE YOUR OWN ADVENTURE
110
Hillel @hillelwayne.com · 20/06/2025
It's day two of Systems Distributed, hosted by @tigerbeetle.com! I'll be liveskeeting all of the talks, except mine (at 11 AM). Since the venue is a film museum, they're setting up special posters for each talk. #sd25
2354
Hillel @hillelwayne.com · 19/06/2025
Break time. Since the conference is taking place at the Eye Filmmuseum, organizers made parody movie posters for each talk. #sd25
Systemland, "simple is the new black", etc.
250
Hillel @hillelwayne.com · 31/05/2025
Critical MASS
180
Hillel @hillelwayne.com · 27/05/2025
the claim / the proof
"I have a proof that P != NP and have verified the proof in Coq"

(From https://blog.computationalcomplexity.org/2025/04/p-v-np-papers-galore.html?m=1)Theorem P_not_equal_NP : True. Proof.  trivial.

(From https://github.com/SystymaticDev/P_does_not_equal_NP/blob/Src/Main.v)
450
Hillel @hillelwayne.com · 24/05/2025
Messing around with laminated candies. These are molasses brittles with a chocolate shell
1340
Hillel @hillelwayne.com · 23/05/2025
11 (for real)/ #Excel has "spillover arrays", where you put the formula in one cell and it creates an array over many cells. Operations on the formula cell act on the whole array. This makes Excel an APL and yes, you can tersely implement Game of Life in it
An excel implementation of game of life. A glider is on the left in green cells, and the next stage is on the right. Formula at top of picture. Don't ask me how it works, I wrote this years ago
1141
Hillel @hillelwayne.com · 22/05/2025
Tweaking the design of *Logic for Programmers* always seems to take so much more time than writing or editing it. Changing the title design took three hours and changing the tables took another three
LfP v0.9. Bog standard latex chapter title header, table with alternating shadesThe soon to be LfP v0.10, with sleeker title and tables
190
Hillel @hillelwayne.com · 17/05/2025
Hooray for SMT solvers, a real useful tool for doing real useful work
mymax([1, 2, 3]) = 3
mymax([4, 2, 2]) = 4
mymax([1, 1, 1]) = 1
mymax([8, 0, 9]) = 9
mymax([-1, -2, -3]) = -1

mymax([x, y, z]) = -443x + 1148y + -617z + 0xy + 129xz + -34yz + -182from z3 import * # type: ignore
solver = Solver()
a0, a, b, c, d, e, f = Consts('a0 a b c d e f', IntSort())
t = "a*x+b*y+c*z+d*x*y+e*x*z+f*y*z+a0"
x, y, z = Ints('x y z')
    
# use_z3_func = True
use_z3_func = False
if use_z3_func:
    mymax = Function('mymax', IntSort(), IntSort(), IntSort(),  IntSort())
    solver.add(ForAll([x, y, z], mymax(x, y, z) == eval(t)))
else:
    mymax = lambda x, y, z: eval(t)

gags = [(1,2,3), (4, 2, 2), (1, 1, 1), (8,0,9), (-1, -2, -3)]
for g in gags:
    solver.add(mymax(*g) == max(*g))

if solver.check() == sat:
    m = solver.model()
    for x, y, z in gags:
        print(f"mymax([{x}, {y}, {z}]) =", m.evaluate(mymax(x, y, z)))
    print(f"\nmymax([x, y, z]) = {m[a]}x + {m[b]}y + {m[c]}z + {m[d]}xy + {m[e]}xz + {m[f]}yz + {m[a0]}")
180
Hillel @hillelwayne.com · 16/05/2025
Very helpful, copilot
080
Hillel @hillelwayne.com · 15/05/2025
Ahahaha get fucked, black deck
Balatro gold stake black deck violet vessel cleared with no hands and zero discards, with the weirdest set of jonklers
2100