Experimental AI Projects
XTrkCAD Plus
A working modernization of XTrkCAD, the open-source 2D CAD used to design model-railroad layouts. The product stays a layout planner; the engineering work is making a decades-old C codebase something a small team can extend, test, and eventually assist with local AI.
Desktop CAD · In Progress
Keep the Layout Tools. Replace the Brittle Core.
XTrkCAD already draws track, easements, turnouts, and benchwork
across scales, with parameter libraries, layered canvases, and
.xtc / .xtce persistence. XTrkCAD Plus
is the fork where that surface is preserved while the internals
move to GNU++20, typed ownership, and a real test gate.
What It Is
Layout CAD for model railroaders: straight and curved track, Cornu and Bézier geometry, structures, elevations, parts lists, and export. The Windows build is a single-threaded GDI app with a CMake/Ninja toolchain, parameter catalogs, and demo layouts used as golden files.
The plus work is not a rewrite from a blank canvas. It is a controlled migration: compile as C++, introduce typed heaps and document ownership, keep the message loop honest, and refuse the landmines that would crash live layouts.
What I Own on It
- C++ uplift — first-party modules compile as GNU++20 without
-fpermissive; C-style casts and alloc sites move to typed helpers. - OOP migration — command tools, draw targets, live pointer hooks, and a
LayoutDocumentthat holds the track list without pretending nodes areunique_ptryet. - Quality gate — unit and OOP checks, smoke launches, golden round-trips on sample layouts, and a Windows clean-object gate before merge.
- AI track assistant (design) — planned in-app help that creates or extends a plan from a prompt, using local models and validated CAD operations rather than raw file generation.
Around the planner
The same .xtc files now have a second product sketch:
xtrkwalker—a .NET launcher that reads a plan and
hands a scene to Unity. Desktop walkthrough is prototype scale along
the railroad corridor, not empty plywood. The Quest 1 board stays
model size: room-scale inches, or fit-to-guardian. The walker is
still notes-and-architecture before a full build; the first check
map is a one-sheet N-scale room that would be more than a mile at
1:1.
Beside that, a local JMRI 5.16 reference pack (DecoderPro / PanelPro) and KMRI—a feasibility workspace for a Kotlin-hosted design-and-run app that would eventually sit between XTrkCAD Plus and JMRI without forking either GPL tree.
Stack
C / C++ (GNU++20) · CMake / Ninja · Win32 / GDI · Cornu and Bézier
geometry · custom .xtc/.xtce streams ·
.NET 10 launcher (planned) · Unity 2022.3 / Quest 1 board (planned) ·
JMRI 5.16 reference
Why It Belongs Here
This is brownfield engineering of the kind I sell: a living application, real users of the upstream product, and a migration that has to keep drawing track while the types get honest. It is also a place to put AI next to CAD—on the machine, under review— without making the planner depend on a cloud model.