So first the fast information: I simply launched model 0.14 of Logic for Programmers! This launch is fairly just like 0.13. There are just a few rewrites however the overwhelming majority of the modifications are format, copyediting, and technical modifying. Full notes right here.
In associated information, I’ve began doing take a look at prints of the e book:

There’s not a complete lot left to be completed. I’ve gotta repair up some diagrams, do extra formatting and proofreading, incorporate some fixes raised by readers, and make a web site and again cowl. After that, the e book ought to be prepared for 1.0. I am aiming to have print copies purchasable by the top of June!
Now the large information: beginning August, I will be a full-time worker of Antithesis, a generative testing platform. Formally my function is “developer educator”, and I will be tasked with making “property-based testing, fuzzing, fault injection, Hegel, Bombadil, and the Antithesis platform comprehensible to on a regular basis engineers”. So the identical sort of work I do now, besides with way more assist and an identical 401(ok).
I have already got three pages of matter concepts you don’t have any concept how excited I’m about this
So how is that this going to have an effect on the publication? First, I need to clarify that this isn’t going to grow to be an Antithesis publication. My Antithesis-related work goes to be on their official platforms. I do suppose among the best methods to make a subject “comprehensible” is to jot down foundational materials that is helpful to all engineers, whether or not they’re invested within the matter or not. I’d share hyperlinks to issues I make alongside these traces, however they will be simply that, hyperlinks.
On the similar time, the content material of this article will change slightly. Property testing and fuzzing aren’t the identical as formal strategies, however loads of the foundations overlap, particularly in how we take into consideration properties and correctness. I do not know for certain but, however I believe that I will begin biasing this article away from Antithesis associated subjects. So there’ll most likely be much less theoretic issues like what does undecidable imply and Some exams are stronger than others and extra historical past and software program weirdness issues like Why can we name it “boilerplate code” and esoteric programming paradigms.
The opposite change goes to be frequency. For the previous six years I’ve stored updates to (largely) a weekly schedule. For the previous six years I’ve additionally been completely self-employed. I do not know the way a lot time I will have with a full time job! As soon as I am settled in I might prefer to preserve writing newsletters, however it would possibly decelerate from weekly to biweekly or month-to-month. We’ll really feel it out as we go.
Anyway, this has been a fairly software-light publication, so let’s shut out with a enjoyable factor. f(x) = x+2 is a monotonically growing operate: growing x will increase f(x) and reducing f(x) decreases f(x). Equally, f(x) = -x+1 is monotonically reducing, and f(x) = x^2 is neither.
Whereas engaged on the e book I spotted that the all quantifier is monotonically false with respect to including parts and true with respect to eradicating them. Let A(set) = all x in set: P(x). Then if A(S) is fake, A(S | {e}) can be false, and if A(S) is true, A(S – {e}) can be true. some goes the opposite manner: if it is true, it is true when you add a component, and if it is false it is nonetheless false when you take one away.
An fascinating consequence is that each one have to be true for the empty set, as a result of if it was false it could be false for all values! That is one other justification why, in Python, all([]) == True.
Equally, in temporal logic: all the time A is monotonically false with respect to system habits and ultimately A is monotonically true. I spotted this when messing with this LTL visualizer my good friend (and shortly to be coworker!) Oskar Wickström. I believe that is fairly neat!
