Înapoi la articole →

Cel mai recent articol

Ultima verificare

Urmăritori 0 urmăritori
Articole: 127
  1. A Crash Course in Predicate Logic

    I started writing Logic for Programmers because there weren’t any good resources on logic for, uh, programmers.

  2. I am delighted to announce that my book, Logic for Programmers, is now available!

  3. It’s April Cools!

  4. Some Silly Z3 Scripts I Wrote

    As part of writing Logic for Programmers I produced a lot of “chaff”, code samples and sections I wrote up and then threw away.

  5. Been quiet around here!

  6. Gamer Games for Non-Gamers

    It’s April Cools!

  7. What does this print?

  8. 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 effective controls available.

  9. Hiatus

    All of my budgeted blogwriting time is going to Logic for Programmers.

  10. Toolbox languages

    A toolbox language is a programming language that’s good at solving problems without requiring third party packages.

  11. Last 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.

  12. Software Friction

    In 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.

  13. I’ve recently done a lot of work in Alloy and it’s got me thinking about a common specification pitfall.

  14. How old is the name 'Daniel'?

    It’s April Cools!

  15. The Hunt for the Missing Data Type

    A (directed) graph is a set of nodes, connected by arrows (edges).

  16. Planner programming blows my mind

    Picat is a research language intended to combine logic programming, imperative programming, and constraint solving.

  17. An RNG that runs in your brain

    Humans are notoriously bad at coming up with random numbers.

  18. The World and the Machine

    This is just a way of thinking about formal specification that I find really useful.

  19. This is my writeup of all the talks I saw at Strangeloop, written on the train ride back, while the talks were still fresh in my mind.

  20. Short version: If X inherits from Y, then X should pass all of Y’s black box tests.

  21. tl;dr annotated AHK scripts here.

  22. Two universal facts about user documentation: Documentation is really important.

  23. Somehow AutoHotKey is kinda good now

    img {border-style: groove; border-width: 1px;} I love Autohotkey so much that it keeps me on Windows.

  24. I haven’t written much about TLA+ on the blog since the new learntla went up.

  25. It’s April Cools!

  26. That Time Indiana Almost Made π 3.2

    I originally ran this on my newsletter last year but I like it way too much to let it rot in the archives.

  27. I like how easy it is to configure neovim.

  28. NP-Complete isn't (always) Hard

    A common assumption I see on the ‘net is that NP-complete problems are impossible to solve.

  29. Sources of Complexity: Constraints

    Complexity is bad.

  30. Let's Prove Leftpad

    img {border-style: groove;} Someone recently told me a project isn’t real until you do a retrospective, so I think it’s time to do one for Let’s Prove Leftpad.

  31. This is my writeup of all the talks I saw at Strangeloop, written on the train ride back, while the talks were still fresh in my mind.

  32. Safety and Liveness Properties

    img {border-style: groove; border-width: 1px; padding: 5px; } Sounds like I should write a post on safety and liveness!

  33. Software Mimicry

    Mimicry is when software X reimplements at a higher level a core feature of software Y.

  34. Crimes with Python's Pattern Matching

    One of my favorite little bits of python is __subclasshook__.

  35. Announcing: Learn TLA+

    tl;dr: online TLA+ manual/advanced techniques/examples here.

  36. I ❤️ Microscopes

    To celebrate April Fools, some friends and I made content outside our normal brands.

  37. Hiatus

    I’m not letting myself work on software content for the website until I finish both the Alloydocs update and the learntla rewrite.

  38. Using Abstract Data Types in TLA+

    In my 2021 TLAConf Talk I introduced a technique for encoding abstract data types (ADTs).

  39. Alloy 6: it's about Time

    Alloy is a powerful formal specification language, but it’s historically been weak at modeling concurrency.

  40. A Sudoku Puzzle is a famous Japanese puzzle.

  41. Specification Refinement

    When teaching formal methods, I often get asked how we can connect the specifications we write to the code we produce.

  42. Cross-Branch Testing

    This was originally a newsletter post I wrote back in December, but I kept coming back to the idea and wanted to make it easier to find.

  43. Clever vs Insightful Code

    “Don’t write clever code.”

  44. Why Specifications Don't Compose

    Recently my friend Lars Hupel and I had a discussion on why formal methods don’t compose well.

  45. A couple years back I gave a talk on researching software history, using “linked list interview questions” as an example topic.

  46. TLA+ Action Properties

    There’s not a whole lot on TLA+ technique out there: all the resources are either introductions or case studies.

  47. This is part three of the crossover project.

  48. We Are Not Special

    This is part two of the crossover project.

  49. Are We Really Engineers?

    This is part one of the Crossover Project.

  50. There's Always More History

    Last month I researched two historical questions.