Software and hardware for people the default interface wasn't built for.
I don't start from an accessibility checklist. I start from one specific person's interface problem and build outward, and I know the problem because I live it: I have SMA, I've used a wheelchair my whole life, and I control my entire world through voice commands and a joystick I control with my lips. I'm not building for a market I've studied. I'm building for a life I've lived.
ATDev, ARPA-H and ATOS
Most of my working time goes to ATDev (Assistive Technology Development, Inc.), which I co-founded in May 2020 and where I'm also CMO. It builds robotics for mobility and rehabilitation.
The biggest thing on the table is RAMMP, a five-year, $41M ARPA-H program. ATDev co-leads it with the University of Pittsburgh, which leads it under Dr. Rory Cooper, alongside Carnegie Mellon, Cornell, Northeastern, Purdue, Kinova and LUCI.
Everyone's talking about humanoid robots. The wheelchair is already the robot, and today it's a closed, single-vendor appliance. ATOS is the open platform layer inside RAMMP, and the part I work on: open wheelchair and mobility middleware built on ESP-IDF, handling BLDC motor control and dynamically loaded modules. It's built to make the chair an open platform, governed by an independent foundation, so the software somebody depends on to move can't be discontinued by one company. I'm in a powered wheelchair every day. Governance matters as much as the code. That's the whole argument.
I write the software definition and the prototypes, including the CI and release pipeline that builds and publishes signed distributable binaries. The ATOS ground station runs on NASA Open MCT, the framework NASA Ames wrote to fly spacecraft. I pointed it at a powered wheelchair instead. The ATOS console is the engineer-facing control plane: it cryptographically signs firmware and module images, promotes them onto release channels, and watches the fleet take them. Then there's RAMMS, ATDev's Unreal Engine 5 simulation environment for the program, where I contributed the pointer-accessible input defaults.
The other ATDev product is Reflex, an FDA-registered, telehealth-enabled robotic knee brace in limited commercial release across eight states. Separately, ATDev holds an NIH / ACL NIDILRR SBIR Phase I award, Rehab Robo, A Patient-Specific Robot for Tele-Rehabilitation in Neuromuscular Diseases. Neuromuscular diseases are the brief. I have one.
OPAL, accessibility for the Unreal Editor
A creator with a motor disability can play the games and still can't build them. Game engines are some of the least accessible professional software in wide use, because the editor assumes a mouse, a keyboard, and more than a dozen chorded viewport combinations. OPAL is ATDev's open-source answer: voice, eye gaze, head tracking and switch access for the Unreal Editor.
Here's what exists, and what doesn't. UEMCP ships today: an MIT-licensed MCP server, published on PyPI as uemcp, that drives a live Unreal Editor by natural language across UE 5.0 to 5.7 with nothing to install inside the engine. The OPAL input layer is designed, not built. The command grammar, the gaze and head tracking, the switch and sip-and-puff scanning and the accessible Sequencer control are scoped as a six-month program, and it isn't funded yet. OPAL is a separate effort from RAMMP and carries none of its funding. One part ships. One part is a plan.
Defensible, accessibility reports you can stand behind
Most accessibility conformance reports are confidently wrong, and it isn't carelessness. It's arithmetic. Automation reaches about 21% of WCAG 2.2 success criteria at Level AA, and the other 79% need a human. The standard move is to treat silence as success: no findings for a criterion, so the criterion must be supported. Procurement reviewers have learned to distrust exactly that.
Defensible is the audit harness I built to refuse that move. It drives a real browser against a defined page inventory with five checks: axe, IBM Equal Access as a second engine, a keyboard probe, a state fuzzer that opens the states nobody tested, and a document checker for PDF, DOCX and PPTX. Every finding maps to the success criterion it actually fails. Out come two artifacts: an Accessibility Conformance Report (VPAT 2.5, plus machine-diffable OpenACR) for procurement, and a remediation summary written to hand straight to an AI coding agent in the target repository. Anything that writes user-facing prose, like alt text or a form label, stays flagged for a human, because a wrong accessibility fix passes every scanner forever.
Four rules decide what goes in the report, and none of them can be switched off. A stale manual pass can't override a live automated failure. A suppression can remove evidence of failure but can never create a claim of conformance. Silence only counts when the engine that could break it actually ran. Everything the tool can't reach says Not Evaluated, and says why. It isn't public yet. It won't claim what it didn't test.
Things I build directly
I wrote alpha-osk because the on-screen keyboards that ship with Windows and Linux weren't usable for a working day. It's built for motor-impaired users, with local word prediction. There's no LLM in it, no GPU, and no data leaves the machine. It's Python, MIT licensed, open source, and covered by 3,053 test functions across 104 test files. It's had 23 releases since April, v1.0.5 to v1.8.0.
alpha-stick is an open-source, 3D-printable adaptive gaming joystick: an ESP32-S3 stick on a bearing-free flexure pivot that moves with under 5 grams of force. It presents as a USB or Bluetooth gamepad, mouse, keyboard, or wheelchair input, for gamers with limited mobility.
Omega Stick is ATDev's low-force joystick for computer control and gaming. A conventional joystick makes you push against a centering spring, typically well over 100 grams on every input. Omega Stick takes the spring out of the sensing path: a contactless 3-axis Hall-effect sensor reads a small magnet, and the force is set by the return mechanism alone, adjustable from roughly 5 to 25 grams. It's plain USB with nothing to install, and it's 3D-printable, so a unit can be made locally. The firmware is open, MIT licensed, C++20 on ESP-IDF for the ESP32-S3. Adjustable matters more than light. Which force works is a property of the person, not the device.
Nimbus Adaptive Controller is a free and open-source alternative to the Xbox Adaptive Controller, written in Python with PySide6/QML: a 60 FPS input pipeline driving two virtual device backends, with response curves, deadzones and tremor filtering tuned for wheelchair joysticks.
openmouse, written in Kotlin, is an open-source Android cursor for mouse and trackball users: dwell click plus an on-screen gesture menu, built as an AccessibilityService and a clean-room clone of Ease Mouse.
linux-quickdrag brings click-lock to Linux. Windows has had ClickLock for years, so you can drag without holding the mouse button down the whole time. Linux didn't. It's Python, MIT licensed, built for Ubuntu 24.04.
On Windows, ClickLock only ever covered the left button. Mouse Button Lock closes that gap, and Microsoft merged it into PowerToys in October 2026, slated for release 0.102. It's a new Mouse Utilities module that latches the left, right or middle button, so a right-drag or a middle-drag doesn't need a sustained press either. It's C++ and C#, with unit tests, UI tests, a fuzzing target and Group Policy support, because that's what a Microsoft module has to carry.
timbre recognizes spoken commands by matching them against the speaker's own recordings instead of generalizing across voices. It's Kotlin on the JVM, MIT licensed, runs offline with zero runtime dependencies, and uses MFCC features with path-normalized dynamic time warping. It's built for atypical speech, exactly where general-purpose recognition tends to fail. I run my computer by voice, so I know what failure costs.
Handy Voice Control takes the same approach into a full Android app: hands-free, offline, matching spoken commands against recordings the user made themselves. The source is private, but built APKs are published at handy-releases.
gaze-on-glass does single-device gaze tracking for VITURE XR glasses, using Pupil Core eye cameras and 2D pupil-to-screen calibration, running entirely on an Android phone.
I contribute to Dasher, a long-lived gaze and pointer text-entry system for people who can't use a keyboard: 34 pull requests so far, 29 merged, 27 of them in the GTK front end.
Same premise every time: designed with, not for.