Skip to content
Buttondown

Buttondown

Buttondown is the last email platform you'll migrate to. We're focused on your success, not on bleeding you dry.

buttondown.com
ButtondownButtondown
GENERATIVE AI AND FOUNDATION MODELS
On artificial intelligence
"I have been searching for a bright line, one where I can say that this subset of AI usage is ethical, or at least ethical enough for me to use. I have reached the point where I don’t think that line exists." (via Adactio)
GOOGLE
Proofs and PromptsrichwhitehouseTechnology, Environment, and Art | Dr. Jason Polak | Substack
ButtondownButtondown
SOFTWARE ENGINEERING AND PROGRAMMING
Logic for Programmers is Done
It'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 download the 1.0 for free. This marks the completion of a project that took five years of work, six bookwriting professionals, fourteen domain experts, and fifteen public alphas. This has been, without a doubt, the biggest and most exhausting project I've ever done. The examples in the discarded drafts alone could make a second book. The cursed knowledge I've gained on LaTeX and typography could fill a third (or at least a couple of entertaining blog posts). Self-publishing was simultaneously the worst and best decision I made. Now excuse me I am going to sleep for a month.
Hillel Wayne
ButtondownButtondown
PROGRAMMING LANGUAGES AND COMPILERS

Logic for Programmers extra credits

So 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 , but the book is dense enough as it is and many of these were too tangential or technical to fit in well. So I’ve been writing some supplements and uploading them here . I’ve got four so far: How we compute the number of orderings of multiple concurrent processes How first-order logic can quantify over “a set of functions”, what a “set of functions” looks like, and how functions can be defined in terms of sets (plus a bit on currying and type theory) Barbara Liskov’s “history rule” in subtyping Total and partial orders on sets. Now I’m going to caveat that these were written off the cuff and haven’t gone through the obsessive editing of the book itself, so they may be rough and there might be errors in them. Still, it’s like 2-3000 words of math content, so hopefully covers not having a proper newsletter this time. Seeya next week!
BUDAPESTBARBARA LISKOV
ButtondownButtondown
CAREER DEVELOPMENT AND PROFESSIONAL SKILLS

The Phase Change

Last week I ran my first 10k. It wasn't a race or anything. I left that evening planning to run a 5k, and then three miles later thought "what if I kept going?"1 I've been running for just over two years now. My goal was to run a mile, then three, then three at a pace faster than a power-walk. I wish I could say that I then found joy in running, but really I was just mad at myself for being so bad at it. Spite has always been my brightest muse. Looking back, the thing I find most fascinating is what progress looked like. I couldn't tell you if I was physically progressing steadily, but for sure mental progress moved in discrete jumps. For a long time a 5k was me pushing myself, then suddenly a "phase change" happens and it becomes something I can just do on a run. Sometime in the future the 10k will feel the same way. I've noticed this in a lot of other places. For every skill I know, my sense of myself follows a phase change. In every programming language I've ever learned, I lurch from "bad" to "okay" to "good". There's no "20% bad / 80% normal" in between. Pedagogical experts say that learning is about steadily building a mental model of the topic. It really feels like knowledge grows continuously, and then it suddenly becomes a model. Now, for all the time I spend writing about software history and software theory and stuff, my actually job boils down to teaching formal methods. So I now have two questions about phase changes. The first is "can we make phase changes happen faster?" I don't know if this is even possible! I've found lots of ways to teach concepts faster, cover more ground in less time, so that people know the material more quickly. But it doesn't seem to speed up that very first phase change from "this is foreign" to "this is normal". Maybe we can't really do that until we've spent enough effort on understanding. So the second may be more productive: "can we motivate people to keep going until the phase change?" This is a lot easier to tackle! For example, removing frustration makes a huge difference. Getting a proper pair of running shoes made running so much less unpleasant, and made me more willing to keep putting in the hours. For teaching tech topics like formal methods, this often takes the form of better tooling and troubleshooting info. We can also reduce the effort of investing time. This is also why I prefer to pair on writing specifications with clients and not just write specs for them. It's more work for them than fobbing it all off on me, but a whole lot less work than writing the spec by themselves, so they'll put in time and gradually develop skills on their own. Question two seems much more fruitful than question one but also so much less interesting! Speeding up the phase change feels like the kind of dream that empires are built on. I know I'm going to keep obsessing over it, even if that leads nowhere. --- 1. For non-running Americans: 5km is about 3.1 miles, and 10km is 6.2. ↩