About these notes

The rest of this site explains how things are supposed to work. These notes are about what happens when they do not: a security release with a deadline, a protection that silently did nothing, a server nobody had updated in months. Each one is written up the way a team writes up an incident, as described in Postmortems: a short summary, a timeline, the cause, what was done, how the fix was checked, and what changed afterwards.

Next to the incidents are notes about hands-on projects, such as building a pen plotter: what it took, what went wrong, and what I would tell someone starting out.

The commands and output are real, with one change: host names, IP addresses and file paths that could identify the server are replaced by example values such as example.org and 203.0.113.10, an address reserved for documentation. A note is only published once the problem it describes is fixed.

Notes

  1. 09Plotting a Map: OpenStreetMap Data on a Pen PlotterDrawing with data instead of chance: a vsketch sketch that downloads a neighborhood from OpenStreetMap and turns its buildings, water, parks and tram tracks into lines at a fixed scale, and the step-by-step route from that map to the LY Drawbot.
  2. 08Turtle Graphics on a Pen Plotter: Keeping the Pen DownThe turtle's commands are almost a plotter's commands: a small Python class that turns turtle programs into an SVG in millimeters, why a tree that looks right on screen draws every line twice on paper, and a curve drawn as one unbroken line.
  3. 07Turtle Graphics: Drawing from the Turtle's Point of ViewGo forward, turn left: what turtle graphics is, how a robot on a classroom floor grew out of the Logo language, why it helps to play turtle yourself, and first drawings with Python, from a square to spirals and a recursive tree.
  4. 06The Forgotten Port Forward: When “Local Only” Was NotA routine Node.js upgrade turned up an old port forward that exposed a development server with a known PHP flaw to the internet: how it was found by testing from outside, closed and checked for damage, and what it taught.
  5. 05Paper.js: Hidden Lines and Hatching for a Pen PlotterA vector library that remembers every shape: what Paper.js is, why cutting shapes is the plotter's way to show depth, and overlapping hatched circles that come out in millimeters, ready for the LY Drawbot.
  6. 04p5.js: Drawing for a Pen Plotter in the BrowserGenerative drawings in JavaScript: what p5.js is, how to start with nothing more than a browser, saving lines instead of pixels, and a flow field that comes out in millimeters, ready for the LY Drawbot.
  7. 03vsketch: Drawing for a Pen Plotter with PythonGenerating plotter drawings with code: a first vsketch sketch, what finalizing does for the plot, and the step-by-step route from a sketch to the LY Drawbot, including the conversion from pixels to millimeters.
  8. 02LY Drawbot: Building a Pen Plotter and Making a First PlotWhat a pen plotter is and what it is not, assembling a low-cost A4 kit, the chain from drawing to G-code to moving pen, and the small things that decide whether a first plot works.
  9. 01php2shell: Patching a Critical PHP FlawTwo leaked remote code execution flaws in PHP, getting a VPS ready to receive the fix, taking PHP offline behind a clean maintenance page, and installing the patch the moment it landed.