{
  "articles": [
    {
      "title": "Anatomy of a ClickFix infection",
      "date": "2026-09-03",
      "url": "./posts/2026-09-03/fake-homebrew.html",
      "lang": [
        "macOS",
        "ClickFix",
        "EDR",
        "DFIR"
      ],
      "description": "A macOS paste-and-run attack, reconstructed: 12 commands in 541 ms, why the EDR blocked only the last one, and what its alert narrative got wrong.",
      "status": "live"
    },
    {
      "title": "Rebuilding the blog, by hand",
      "date": "2026-09-02",
      "url": "./posts/2026-09-02/rebuilding-the-blog.html",
      "lang": [
        "bash",
        "html"
      ],
      "description": "Why a generated blog index was the wrong tool, and what replaced it.",
      "status": "live"
    },
    {
      "title": "exploRob",
      "date": "2020-07-01",
      "url": "./posts/2020-07-01/exploRob.html",
      "lang": [
        "C99",
        "Arduino"
      ],
      "description": "Build notes on an exploration robot: an ATmega328P, an L298N H-bridge, and sensors on a 400 kbps I2C bus.",
      "status": "live"
    },
    {
      "title": "Open Boat",
      "date": "2020-06-19",
      "url": "./posts/2020-06-19/open-boat.html",
      "lang": [
        "C99",
        "Arduino"
      ],
      "description": "An RC boat on an Arduino, and the 2.4 GHz command protocol that replaced its Bluetooth link: a packed frame, a handshake and a cipher.",
      "status": "live"
    },
    {
      "title": "Sunny: a solar tracker",
      "date": "2019-05-01",
      "url": "./posts/2019-05-01/sunny-solar-tracker.html",
      "lang": [
        "Electronics",
        "PHP"
      ],
      "description": "A school solar tracker: an omnidirectional light sensor, 9 g servos, and a cardboard frame light enough for them.",
      "status": "live"
    },
    {
      "title": "Three small games",
      "date": "2018-11-26",
      "url": "./posts/2018-11-26/small-games.html",
      "lang": [
        "C99",
        "Python3",
        "PHP",
        "C++"
      ],
      "description": "Hangman in C99 and Python 3, tic-tac-toe in PHP, and Pong on an Arduboy. Student code, and it shows.",
      "status": "live"
    }
  ]
}
