- NewsletterNew Post: A Crash Course in Predicate LogicLogic for Programmers has now been out for a month! To celebrate, I'm releasing the entire second chapter, "A Crash Course in Logic", for free on my blog. Read it here!
- BlogA Crash Course in Predicate LogicI started writing Logic for Programmers because there weren’t any good resources on logic for, uh, programmers. Now that the book’s out, the new problem is that there aren’t any good free resources on…
Hillel Wayne
Everything, newest first — across every channel. Their profile →
Hiding
1 September
18 August
- Vim wants you to control, VSCode wants you to consumeNewsletter updates were sporadic in July because of two weddings, two conferences (with two different talks!), and finishing Logic for Programmers. Huge thank you to everybody who bought a copy, as well as for your pati…
29 July
- Logic for Programmers is DoneIt's done. Logic for Programmers is now 1.0 and available in print. Full announcement here, official website here, direct Amazon link here. If you got an early version of the ebook, you can go back to leanpub to downloa…
-
But this is the book that I give to every junior engineer because I think like nobody ever really talks about debugging as like a discipline outside of like basic heuristics.
-
And up until now that like could only really happen if one of those people in that family that community or that school was like really really into computers. But now it's possible for everybody to have situated software.
-
I predict that in the next 10 years software development will survive, but it will become like any other white-collar professional work. No more $200,000 salaries, unlimited vacation, or incredible employee bargaining power.
+ 21 more
-
So, it's hard to tell how much of like the loss of the past few years was AI versus the end of like zero interest rate policy and like the post-COVID crash. And I think it's more the latter, but like again, LLMs are still getting better.
-
I think it is making it more popular. I don't know if it'll make it go mainstream, but it's definitely making it a lot more popular. It's bringing it from maybe like 0.1% to 0.3% which is huge.
-
And often I found with my clients I have to tell them like it's doing a good job at generating the actual design, but in actually expressing what the design is supposed to do, it cannot do that yet. You have to do that part yourself.
-
As a general thing we've seen like to get good results you have to already know how to get good results without it. It just helps you get good results faster.
-
I love formal methods, but I think it's a fairly niche tool for most people and I think like property-based testing is in general going to be useful for more people.
-
I think a lot of the reason people are skeptical of these is because they've been burned by things like case and UML and all these other miracle solutions that were forced on them by people who wanted them to use it no matter what.
-
I think the case of TLA+ and most, not all, but most formal methods, they shine the most in highly computational domains, where most of the problems are highly technical and not like business embedded.
-
And I wonder sometimes if that is the reason people don't recognize the use of math in software engineering is because the math they do need is not the math they've been exposed to.
-
But I think it is more useful for most developers to have an exposure to like what math has in the various fields versus just going all in every single field when they see them, right? You've got to know what's available to know what's most useful for you. And most math will not be useful for you.
-
I think a large part of the problem of why it's hard for us is because you don't get a lot of practice. Usually when you have a race condition in a system, you find out months later and then you try a fix and you find out weeks later after that if the fix actually worked.
-
Then the actual system might still have bugs, but we can iron out the issues in the abstraction such that we don't actually build them in the real system.
-
but I can tell you with first hand experience nuclear power plants do not care about this stuff. They're actually just fine with with with thorough testing.
-
when you start talking about like most interesting domain problems, you have to pull in so much context that basically even writing what the function is supposed to do becomes a nightmare. The imperative program you write that will get correct 99% of the time is probably good enough to use in almost all cases.
-
I think this project and writing about it and thinking about it has firmly moved me from the camp of we are definitely not to we probably are.
-
And that kind of compiling of information about the materials is something other fields do that we don't do. An analogy that I would think of in software would be something like a 500-page book on how to version an API.
-
while we are a lot better at iterating than other fields, we're worse at the planning part. Like we still need to do some kind of planning before we iterate and we just aren't as good as those other fields.
-
Yeah, I interviewed like 20 people on this. I think all 20 mentioned version control as the thing they wish they had in their old field.
-
Software is kind of unique in having the third kind of the practitioner conference where we are just meeting to get better at what we do. We also are really the only kind to really focus heavily on like open source in making our knowledge freely available.
-
And the first thing he pointed out to me was that they had their Agile revolution in 1960.
-
The core tension of engineering is between how expensive it is to make a mistake and how quickly you can iterate. The faster you can iterate, the less planning you need to do before you iterate, and the more expensive it is, the more planning you need to do.
-
If I had to summarize what I found in general, I'd put it like this. Everybody hates waterfall.
- Logic for Programmers is Now AvailableI am delighted to announce that my book, Logic for Programmers, is now available! You can check out the release site here or go directly to buy the ebook or print versions. If you bought any of the early access versions…
21 July
14 July
- I'm still aliveBetween travel obligations and this last heads-down-gotta-get-the-book-done stretch I haven't had time to write any newsletters or even look at social media. The good news is that Logic for Programmers should be done an…
7 July
17 June
- Logic for Programmers v0.15, LivecodingThere's a new release of Logic for Programmers! This one, version 0.15, is the first true release candidate. There's a couple of minor touch-ups I need to do but all content is in and copy edited and proofread. Unless s…
10 June
- Nontrailing separators do not spark joyThis is valid JSON: { "a": 1, "b": 2, "c": 3 } This is invalid JSON: { "a": 1, "b": 2, "c": 3, } The difference is the last comma. The JSON grammar specifies that a comma can separate two members of an object but not po…
2 June
- Logic for Programmers extra creditsSo I said there wasn’t a proper newsletter this week, since I’m in Budapest prepping for a conference. But I still got a thing for y’all. There’s a lot of interesting topics I wanted to cover for Logic for Programmers,…
28 May
- Knowing about things is cheaper than knowing thingsShort one this week because I'm way behind on book and conference prep. Last week a LinkedIn Influencer wrote about how math has nothing to do with programming, so I spite-wrote a rejoinder about how math is necessary t…
20 May
- Assumptions weaken propertiesIn some tests are stronger than others, I defined STRONG => WEAK to mean "any system passing test STRONG is also guaranteed to pass WEAK". This uses the logical implication operator, defined as P => Q = !P || (P && Q).…
13 May
- Points are a weird and inconsistent unit of measureI'm in the middle of redoing the Logic for Programmers diagrams and this has surfaced a really annoying problem. The book is formatted in LaTeX using a pseudo-grid of 10.8pt × 7.2pt. The diagrams are done in Inkscape us…
6 May
- New Logic for Programmers (and the future of this newsletter)So first the immediate news: I just released version 0.14 of Logic for Programmers! This release is pretty similar to 0.13. There are a few rewrites but the vast majority of the changes are layout, copyediting, and tech…
28 April
- Illegal vs Unwanted StatesAn illegal state is a state we never want our system to be in. An unwanted state is a state we don't want to stay in. Many states that we wish were illegal are actually unwanted. Considering a calendaring software which…
21 April
- People get confused when language implementations break language guaranteesTake the following Python program: # x = 1, y = 2 x = 0 y = x print([x, y]) It'll print [0, 0]. If we swapped the two assignments, it'd instead print [0, 1]. Each assignment happens in a separate temporal step. Pretty m…
15 April
- A sufficiently comprehensive spec is not (necessarily) codeSorry for missing last week! Was sick and then busy. This week I want to cover a pet peeve of mine, best seen in this comic: A "comprehensive and precise spec" is not necessarily code. A specification corresponds to a s…
1 April
- NewsletterApril Cools Post: New York vs Chicago PizzaHappy April Cools! My not-tech post this year is Chicago vs New York Pizza is the Wrong Argument, which is mostly an excuse for me to talk about Chicago food. See here for all of the other April Cools submissions. As of…
- BlogChicago vs New York Pizza is the Wrong ArgumentIt’s April Cools! It’s like April Fools, except instead of cringe comedy you make genuine content that’s different from what you usually do. For example, last year I talked about The best introductory…
24 March
- Choose Boring Technology and Innovative PracticesThe famous article Choose Boring Technology lists two problems with using innovative technology: There are too many "unknown unknowns" in a new technology, whereas in boring technology the pitfalls are already well-know…
18 March
10 March
- LLMs are bad at vibing specificationsNo newsletter next week I'll be speaking at InfoQ London. But see below for a book giveaway! LLMs are bad at vibing specifications About a year ago I wrote AI is a gamechanger for TLA+ users, which argued that AI are a…
3 March
- Free BooksSpinning a lot of plates this week so skipping the newsletter. As an apology, have ten free copies of Logic for Programmers. These five are available now. These five should be available at 10:30 AM CEST tomorrow, so peo…
23 February
- NewsletterNew Blog Post: Some Silly Z3 Scripts I WroteNow that I'm not spending all my time on Logic for Programmers, I have time to update my website again! So here's the first blog post in five months: Some Silly Z3 Scripts I Wrote. Normally I'd also put a link to the Pa…
- BlogSome Silly Z3 Scripts I WroteAs part of writing Logic for Programmers I produced a lot of “chaff”, code samples and sections I wrote up and then threw away. Sometimes I found a better example for the same topic, sometimes I threw the to…
18 February
- Stream of Consciousness Driven DevelopmentThis is something I just tried out last week but it seems to have enough potential to be worth showing unpolished. I was pairing with a client on writing a spec. I saw a problem with the spec, a convoluted way of fixing…
25 September 2025
- A Very Early History of Algebraic Data TypesBeen quiet around here! I’ve been putting almost all of my writing time into Logic for Programmers and my whole brain is book-shaped. Trust me, you do not want to read my 2000-word rant on Sphinx post-build LaTeX…
9 September 2025
7 May 2025
1 April 2025
- Gamer Games for Non-GamersIt’s April Cools! It’s like April Fools, except instead of cringe comedy you make genuine content that’s different from what you usually do. For example, last year I talked about the 3400-year history…
12 March 2025
- A Perplexing Javascript Parsing PuzzleWhat does this print? x = 1 x --> 0 Think it through, then try it in a browser console! Answer and explanation in the dropdown. Show answer It prints 1. wait wtf At the beginning of a line (and only at the beginning of…
4 March 2025
- The Hierarchy of Controls (or how to stop devs from dropping prod)The other day a mechanical engineer introduced me to the Hierarchy of Controls (HoC), an important concept in workplace safety. 1 (source) To protect people from hazards, system designers should seek to use the most eff…
3 February 2025
11 September 2024
- HiatusAll of my budgeted blogwriting time is going to Logic for Programmers. Should be back early 2025. (I’m still writing the weekly newsletter.)
15 July 2024
- Toolbox languagesA toolbox language is a programming language that’s good at solving problems without requiring third party packages. My default toolbox languages are Python and shell scripts, which you probably already know about…
17 June 2024
- Composing TLA+ Specifications with State MachinesLast year a client asked me to solve a problem: they wanted to be able to compose two large TLA+ specs as part of a larger system. Normally you’re not supposed to do this and instead write one large spec with both…
29 May 2024
- What We Know We Don't Know: Empirical Software EngineeringThis version of the talk was given at DDD Europe, 2024. Technology is a multitrillion dollar industry, but we know almost nothing about how it’s best practiced. Empirical Software Engineering, or ESE, is the study…
14 May 2024
- Comment Section: Software FrictionThese are some of the responses to Software Friction. Blogs on a similar topic Laurie Tratt wrote What Factors Explain the Nature of Software? which touches on the topic of friction, too. Emails and Comments I’m a…
1 May 2024
- Software FrictionIn his book On War, Clausewitz defines friction as the difference between military theory and reality: Thus, then, in strategy everything is very simple, but not on that account very easy. Everything is very simple in w…
10 April 2024
- Don't let Alloy facts make your specs a fictionI’ve recently done a lot of work in Alloy and it’s got me thinking about a common specification pitfall. Everything in the main post applies to all formal specifications, everything in dropdowns is for exper…
1 April 2024
- How old is the name 'Daniel'?It’s April Cools! It’s like April Fools, except instead of cringe comedy you make genuine content that’s different what you usually do. For example, last year I talked about the strangest markets on th…
18 March 2024
- Comment Section: The Hunt For The Missing Data TypeI got a lot of responses to The Hunt For the Missing Data Type. I’ve included some of the most interesting ones below. Response Blogs The “missing” graph datatype already exists. It was invented in the…
5 January 2024
21 August 2023
18 May 2023
7 April 2023
2 August 2022
1 July 2022
22 June 2022
Nothing matches.
What is a korrent?
A korrent is a belief a person has stated in their own words: one sentence stating the claim, backed by a quote and a source, kept at korrents.com.
Under a name here, the quoted block is what they actually said. The korrent beneath it is the claim those words support, in korrents' wording — tap it to see the record, its source, and who else holds it.
Nobody here wrote their own korrents. They are compiled from public statements, and a person can change their mind, which is recorded too.