Writing
On BIM, AI agents and engineering practice.
Oct 19, 2026 · AI · Computer Vision · Engineering Drawings · Few-shot Learning
Given One Example, Can AI Find Every Symbol on a Drawing?
On a public dataset of fire-alarm system drawings, I chained detection, OCR, training-free classification and a little training into one pipeline, to see how far 1 or 5 examples per class can go.
Oct 12, 2026 · Emulation · Webulator · WebGL · Windows XP
Bypassing the Emulated CPU: D3D/OpenGL API Forwarding and an x87 Fast Path
Once browser XP had a virtual graphics card, the bottleneck became the graphics drivers running on the emulated CPU. I wrote two stand-in DLLs that hand Direct3D 9 and OpenGL calls straight to WebGL2 outside the emulator, and gave v86's x87 floating point a native f64 fast path.
Oct 11, 2026 · Emulation · Webulator · WebGL · Windows XP
Giving Windows XP a Graphics Card in the Browser: SVGA3D to WebGL2
v86 has no 3D hardware. I implemented a VMware SVGA II card and its SVGA3D protocol inside it, executed the XP driver's commands with WebGL2, and got Direct3D and OpenGL acceleration in browser XP, up to running OpenArena.
Oct 11, 2026 · Emulation · WebAssembly · Webulator
Turning a Screenshot into a Live Computer: Why I Built Webulator
Webulator puts v86, Mini vMac, Basilisk II and SheepShaver behind one browser API: the same input, the same snapshots, the same conformance tests. Four old computers wake from a snapshot with a first frame identical to the saved screen.
Oct 2, 2026 · Emulation · WebAssembly · Asyncify · Classic Mac
Save States for Classic Mac Emulators: Asyncify, a Virtual Clock, and "Disk Busy"
Mini vMac, Basilisk II and SheepShaver have no save state. For the save states themselves I changed only build flags: I used Asyncify to unwind the call stack at the input poll, so all three classic Macs can be saved and restored in a fresh page with a pixel-identical first frame. Plus why a virtual clock is required, and how to keep the guest running while the disk is slow.
Jul 31, 2026 · Networking · iOS · SSH · Tailscale
The SSH connection that only failed on 5G
A thirty-second SSH connect timeout from an iPhone over Tailscale, with no packets on the wire, turned out to be iOS synthesising a NAT64 address from an IPv4 literal.
May 22, 2026 · BIM · AI
BIM Components Are Functions, Not Data
A door, a steel beam, a duct fitting: each is a mapping from parameters to geometry. Make that mapping a first-class citizen and you get the family: three invariants, three tiers of components, Connectors, and a shared component library published by AI.
May 14, 2026 · Single Line Diagrams · Auto-Layout · Graph Algorithms
Auto-Layout for Single Line Diagrams: A Fun Little Problem
How the auto-layout in sldeditor, an open-source electrical single line diagram editor, encodes domain concepts like busbars, chains, electrical nodes and tiers so that machine-drawn diagrams look like an electrical engineer drew them.
Apr 10, 2026 · AI · BIM
How to Make AI Agents Truly Understand Buildings? Building an AI-Native BIM Data Structure
Exploring the pure technical details and design trade-offs behind the BimDown format, bringing AI back to resolving architectural scenarios using approaches it finds most familiar.
Apr 6, 2026 · AI · BIM · OpenClaw · Revit
I Built a Revit for OpenClaw
BimDown in practice: letting AI agents like OpenClaw read and write building models directly, five demo scenarios, and what's still missing compared with Revit.
Apr 6, 2026 · BIM · AI
BimDown Internals: Engineering the Path from CSV+SVG to a Geometric Reasoning Engine
A sequel to the BimDown format post, about implementation only: schema inheritance, merging CSV and SVG into DuckDB tables, deriving room boundaries with a DCEL, rebuilding MEP topology, and incremental round-trips with Revit.
Jun 8, 2025 · AI · Revit · BIM
The Missing Piece of Vibe Coding Revit Plugins: Running API Tests Without Launching Revit
How to run Revit API tests without launching Revit, letting AI close the feedback loop on its own and fully unleashing the iteration speed of Vibe Coding.