Senior front-end engineer | React, TypeScript, and applied AI
I turn complex data and workflows into usable web applications. I've programmed professionally since 1997, and my recent work spans interactive front ends, small local AI models, browser tools, and the infrastructure that runs them. I'm based in Front Royal, Virginia and interested in senior front-end engineering and AI application roles.
Portfolio site · Career history · Blog · Email · LinkedIn
Career documents: Introduction letter (PDF) · Resume (PDF) · Selected projects (PDF)
- React and TypeScript: Public-ledger explorer — filtering and visualizing public financial data.
- Applied AI: Crystal-9 — a compact, validated MoE model built for tight memory limits.
- Server operations: Zogograph Client — telemetry, alerts, and AI-assisted diagnostics with cost tracking.
- Interactive tools: D64 Storage Lab — visual disk repair, recovery, and read-efficiency experiments.
- Front end: React, TypeScript, JavaScript, accessible interfaces, data visualization, and browser APIs.
- Applied AI: PyTorch, model training and validation, MoE architectures, Ollama, llama.cpp, local inference, and tool calling.
- Services and delivery: Node.js, PHP, C#/.NET, SQLite and SQL, Linux hosting, Forgejo, CI/CD, and WHM/cPanel automation.
Each project's More details page on my portfolio site has an executive summary and a technical overview. Palace-9, Crystal-9, Crystal Palace 9 and Falken-9 are one series, compared side by side in The tic-tac-toe models.
| Project image | Project |
|---|---|
![]() |
Local Agent Lab | Portable AI workspace Built a private React and TypeScript AI workspace for chat, code, images, and audio. Runs models in the browser or on a local Ollama server, so it works offline and conversations never have to leave the device; API providers are optional. Projects stay in a folder or on a removable drive. Live demo · Source · More details |
![]() |
Ghost Jack | Eyes, ears and a mouth for AI agents Built a local bridge and cyberpunk control deck that gives people and AI agents eyes, ears and a mouth through a $2 thrift-store pan/tilt camera, with no cloud app. Reverse-engineered its sign-in, live RTSP stream, pan/tilt, night vision and speaker (found through the vendor's old Flash engine), with recording and a three.js aiming model. Live demo · Source · More details |
![]() |
Crystal-9 | Tiny MoE for 8-bit hardware Redesigned a sparse MoE tic-tac-toe policy for a 13-token vocabulary and tight memory budgets. Released a 46,299-byte packed INT4 artifact for a custom local runtime, with zero policy misses across 294,778 legal histories. A compact adaptation powers Crystal Palace 9 on the C64. Source · Hugging Face · More details |
![]() |
Falken-9 | A neural network designed for the C64 Trained a mixture-of-experts tic-tac-toe model for the Commodore 64 from the start: width 8, four experts with top-2 routing and exact integer 6502 inference in a 5,195-byte model that stays in RAM. Crystal Palace 9 now plays a complete AI-vs-AI game in just over a minute, with a research report that probes the network. Live demo · Source · Hugging Face · Research report · More details |
![]() |
Crystal Palace 9 | AI on 8-bit hardware Built a Commodore 64 tic-tac-toe game whose AI moves come from a real neural network running in 6502 assembly, with a command-room interface in 8 x 8 multicolor graphics. Now powered by Falken-9, a complete AI-vs-AI game takes just over a minute, down from about 20 with the original Crystal-9 weights. Source · Video · More details |
![]() |
Palace-9 | Local model inspection A playable tic-tac-toe lab pairs a deterministic controller with a compact MoE model trained from scratch. It uses the Qwen2-MoE architecture for Ollama and llama.cpp compatibility without a custom fork; the browser inspects checkpoints locally. Live demo · Source · Ollama · Hugging Face · Video · More details |
![]() |
Zogograph Client | AI-assisted server monitoring PHP/SQLite collectors and a JavaScript dashboard make server telemetry, alerts, and diagnostics readable. An AI assistant calls diagnostic tools and tracks the cost of an investigation. Source · Videos · More details |
| Project image | Project |
|---|---|
![]() |
sandbox-kernel | A small bare-metal kernel for your own OS Built a small bare-metal kernel for the Raspberry Pi Zero W that loads your own operating system as one user-mode program from the SD card. It has A/B kernel slots with trial boot and confirm, recovery to a diagnostic program, a POSIX-style ABI, an e-ink status panel and USB development commands. Game-Maker OS is the first OS built on it. Source · The guide · Game-Maker OS · More details |
![]() |
Game-Maker OS | DOS Game-Maker games from the SD card, on a Pi Zero W Built an operating system that turns a Raspberry Pi Zero W into a Game-Maker machine. It boots with a castle splash to a game library on a TV, with category tabs, demo previews, saves and high scores, and plays the games' original DOS files from the SD card. It runs on sandbox-kernel; an experimental QuickJS layer runs small JavaScript apps. Source · sandbox-kernel · More details |
![]() |
Game-Maker Pocket | DOS games in your pocket Built firmware that plays Game-Maker: Sandbox Edition games from their real DOS files on cheap ESP32 touch-screen boards, with a microSD library, touch and stylus controls, a settings screen and a first-start display setup. A GitHub Pages install page flashes a board from Chrome or Edge. Web flasher · Source · Game-Maker OS · More details |
| Project image | Project |
|---|---|
![]() |
Sculpted Prim Toolkit | Three.js editor Decodes Second Life-style RGB sculpt maps into editable 3D geometry. Camera views, mesh overlays, textures, and vertex tools support PNG, glTF/GLB, OBJ, and STL exports. Live demo · Source · Videos · More details |
![]() |
Data Over Audio | Web Audio API Transfers text and binary data through sound using MFSK modulation, packetization, CRC checks, Hamming error correction, interleaving, and repeat requests. Live demo · Source · Videos · More details |
![]() |
Emoji Explorer | Unicode and pixel font A localized Unicode explorer with version and sequence filters, favorites, keyboard navigation, and offline PWA support. Includes a custom 12 x 12 Pixel Emoji font and pixel editor. Live demo · Source · npm · More details |
![]() |
QR Code Generator | Creator and inspector A browser tool backed by a first-party ES module for mixed segmentation, versions 1-40, Reed-Solomon correction, mask selection, and structural inspection. Live demo · Source · More details |
| Project image | Project |
|---|---|
![]() |
Game-Maker: Sandbox Edition | DOS engine port and visual editors Reimplemented and extended RSD Game-Maker 3.0 in TypeScript, preserving original DOS file formats while adding browser-based visual editors, OPL2 audio, offline play, and desktop exports. Built automated level checks and replayable walkthroughs, reusable engine and tooling packages, and original games within an interactive 1994 desktop. Live demo · Source · Video · More details |
![]() |
Dreamy Tags | WordPress plugin An open-source PHP/Gutenberg plugin for category- and tag-filtered clouds, with exclusion rules and minimum-use thresholds. Published as a block, widget, and shortcode. Plugin directory · Source · More details |
![]() |
Restoring the Signal | Dialable exhibit A live installation at Stone Branch Center for the Arts joins Raspberry Pi, Asterisk, and a PHP contribution site. It handles telephone audio, dialplans, transcription, and TTY support. Live demo · Source · Videos · Press and photos · More details |
![]() |
Tiny Pockets Press | Miniature publishing A modular JavaScript editor for miniature books, with layout and imposition logic and separate interior and cover print/PDF views. Live demo · Source · Videos · More details |
![]() |
Shoomi's HomePage | GeoCities restoration A 1990s web restoration with a Canvas recreation of its Java applet marquee, Web Audio MIDI playback, and a browser version of a Visual Basic color editor. Live demo · Source · Videos · More details |
| Project image | Project |
|---|---|
![]() |
D64 Storage Lab | Repair and optimization A JavaScript workbench maps Commodore 64 disk sectors and file chains, estimates read efficiency, repairs corruption, restores deleted files, and compares optimized and fragmented layouts. Live demo · Source · Video · More details |
![]() |
Sector 256 | Tiny programs for the C64 Built a graphical Commodore 64 launcher for games, utilities, demos, and experiments with stored payloads of 256 bytes or less. Combines 6502 assembly, shared routines, and a Python build pipeline to package programs into a D64 disk image, with automated machine-code tests. Live demo · Source · Video · More details |
| Project image | Project |
|---|---|
![]() |
Stream Scribe | Independent meeting archive and research Developing an independent archive and research tool for livestreamed government meetings. Captures video, transcribes locally with Whisper, and supports searching transcripts and navigating thumbnails while meetings are still live. Adds speaker, topic, and vote annotations, exports short clips, and fills capture gaps from official recordings. Built with React, TypeScript, Node.js, and SQLite. Source · More details |
I volunteer with local history and library projects, started a LEGO users group, and sometimes perform as a clown. I like projects that connect technology with something people can actually use, explore, or enjoy.
| Site | About |
|---|---|
![]() |
lewismoten.com | Blog and career history A near-daily blog about the projects on this page and the history behind them. Blog · Career history |
![]() |
The Bard of Bizarre | Lyrics, music and visuals A multimedia project built around my lyrics and a 16-track concept album with AI-generated music and visuals. Website · Listen on Spotify and other services · Watch “Time Is a Flat Liar” |
![]() |
Front Royal LUG | LEGO User Group The LEGO users group I started and organize in Front Royal. Website |
![]() |
The Chez | A 1976½ CitiCar Restoring, upgrading and driving my 1976½ Sebring-Vanguard CitiCar, an early electric car. Blog |






























