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 LayoutDocument that holds the track list without pretending nodes are unique_ptr yet.
  • 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.