Andrew Williams

Andrew Williams

Computer Engineer

I design and build embedded software systems that bridge hardware, data, and real-time applications.

LinkedInResume
C++
Python
Linux
Embedded Systems
JavaScript
TypeScript
SQLite
Git
Machine Learning
MATLAB
KiCAD
VHDL

Work Experience

Embedded Software Engineer

Beacon Industries

Aug 2025 - Jan 2026

    Phase I SBIR work focused on non-intrusive exposure of legacy avionics data to modern software applications under real-time constraints.

  • Led development of a C++/Python avionics data simulation and exposure framework for legacy bus data analysis.
  • Implemented MIL-STD-1553 and ARINC-429 protocol decoding, abstraction, and data routing for validation and analytics.
  • Designed a modular, hardware-agnostic simulation architecture for repeatable validation under timing and data-rate constraints.
  • Developed an offline-trained autoencoder workflow and deployed static model artifacts into a deterministic real-time pipeline.
  • Authored the final Phase I report submitted to NAVAIR, delivering the end-to-end system from concept through review.

Service Technician

College Computing Services

Feb 2021 - July 2025

    Supported computing infrastructure and internal tooling for engineering labs and academic departments, with a mix of software development and hands-on system support.

  • Developed and maintained a custom TypeScript-based inventory tracking application used to manage over 5,000 devices.
  • Improved the application interface and workflows, making inventory tracking more efficient and easier to use for staff.
  • Cloned and deployed SSD images to streamline software installation and setup across engineering lab machines.
  • Upgraded and maintained classroom computers and AV systems to support reliable day-to-day use by students and faculty.

Projects

Open-Architecture Avionics Data Simulation & Analysis Framework

Slide 1
Slide 2
Slide 3
Slide 4

A real-time framework for non-intrusive observation, simulation, and analysis of legacy avionics bus data.

Embedded Systems
Real-Time Systems
Simulation & Test
Systems Architecture
Defense R&D

Challenge

Modern software systems increasingly rely on access to real-time data, but many avionics platforms expose data through legacy interfaces that cannot be modified without impacting certification or flight-critical behavior. The challenge was to design a system that could observe and distribute avionics data in real time while remaining non-intrusive, deterministic, and compatible with existing constraints.

The solution needed to support validation, testing, and analytics without relying on physical avionics hardware or altering certified systems.

Solution

Designed and implemented a modular C++/Python software architecture that ingests, translates, and disseminates avionics bus data through a controlled, observational pipeline. The system emphasized non-intrusive data exposure, preserving certified system boundaries while enabling downstream analysis and application access.

To support development and validation, a hardware-independent simulation pipeline was created to emulate avionics traffic under representative timing and data-rate constraints. This allowed repeatable testing and iteration without reliance on physical interfaces.

An offline machine learning workflow was used to characterize data behavior, with static model artifacts deployed into the real-time pipeline for bounded, deterministic analysis during runtime.

Impact

  • Delivered an end-to-end Phase I SBIR software system from concept through final government review
  • Enabled secure, non-intrusive access to legacy avionics data for validation and analytics use cases
  • Demonstrated deterministic, real-time behavior under representative operational constraints
  • Established a scalable foundation for future prototype development and system expansion
View SBIR topic solicitation

AI-Assisted Driving Simulator

Slide 1
Slide 2
Slide 3
Slide 4
Slide 5
Slide 6

A real-time driving simulation exploring human-in-the-loop feedback, system responsiveness, and interactive software design.

Real-Time Systems
Simulation
Human-in-the-Loop
Systems Integration
Software Architecture

Challenge

Design a driving simulator capable of providing real-time feedback to a human operator, combining realistic vehicle control, simulation fidelity, and adaptive software behavior. The project needed to integrate physical input devices with a simulation environment while maintaining responsiveness and a coherent user experience.

Solution

Built a real-time driving simulator using Unreal Engine that integrated steering wheel hardware, haptic feedback, and software-driven coaching. The system combined simulation logic with external AI-based services to generate contextual feedback for the driver, emphasizing timing, responsiveness, and usability rather than visual realism alone.

The simulator was designed as a modular system, separating simulation logic, input handling, and feedback mechanisms to allow iterative development and testing.

Impact

  • Implemented real-time input handling and feedback loops between physical hardware and a simulation environment
  • Gained hands-on experience designing interactive systems where timing and responsiveness directly affect user behavior
  • Explored modular software design in a simulation context, reinforcing principles later applied to embedded and avionics systems
  • Delivered a complete, standalone simulator suitable for demonstration and evaluation

3x3 Mechanical Macropad

Slide 1
Slide 2
Slide 3
Slide 4
Slide 5
Slide 6

A custom hardware and firmware project exploring embedded input devices, PCB design, and low-level firmware configuration.

Embedded Systems
Firmware Development
Hardware-Software Integration
PCB Design
Low-Level Programming

Challenge

Design and build a compact input device that integrates custom hardware with configurable firmware, balancing simplicity, reliability, and usability. The project required understanding both the electrical design of a small PCB and the firmware needed to translate physical inputs into meaningful system-level actions.

Solution

Designed a custom 3x3 macropad PCB using KiCad, integrating mechanical switches, diodes, and a microcontroller for reliable key scanning. Assembled and soldered the hardware, then developed and flashed custom QMK firmware in C to define keymaps, layers, and macro behavior.

The firmware configuration emphasized modularity and flexibility, allowing the device to be easily reprogrammed and adapted to different workflows without hardware changes.

Impact

  • Gained hands-on experience designing and assembling a custom PCB for an embedded input device
  • Developed and modified low level firmware to handle key scanning, debouncing, and macro behavior
  • Reinforced understanding of the interaction between hardare constraints and firmware design
  • Delivered a fully functional, programmable device used for daily workflow automation

Let's Connect

"The question of whether computers can think is like asking whether submarines can swim." — Edsger Dijkstra