Nathan Spelts
Firmware engineer — embedded C, ECU flashing, low-level systems, Rust.
nathan at spelts dot net
Summary
I write embedded C for automotive ECU reprogramming, after nearly three years on safety-critical forklift firmware, secure boot, and Rust tooling for CAN diagnostics. Currently pursuing an M.S. in Cybersecurity at Georgia Tech, focused on cyber-physical systems.
Work Experience
Salvo Software Apr 2026 – Present
Firmware Engineer · Vancouver, WA
- Maintain production embedded C firmware for an automotive diagnostic tool that reprograms vehicle ECUs.
- Implement flash routines for reprogramming a wide range of ECUs, with a focus on reliability.
- Develop .NET cloud services that support the diagnostic tool.
Hyster-Yale Materials Handling Aug 2023 – Apr 2026
Software Engineer II · Fairview, OR
- Developed safety-critical embedded C firmware for forklift controllers under industry safety standards.
- Improved secure boot and firmware authentication to guard against tampering and unsafe OTA updates.
- Built a Rust CAN logger and analyzer for Vector XL hardware via C FFI, for live and offline diagnostics.
Seasalt.AI Jul 2022 – May 2023
Data Science Intern · Remote
- Reduced word error rate over 40% for Spanish and Indonesian Kaldi ASR models through model and data tuning.
- Automated scraping and cleaning of thousands of hours of captioned training audio in Python and Bash.
Education
Georgia Institute of Technology Aug 2025 – Present
Master of Science in Cybersecurity – Cyber-Physical Systems · Remote
- Current GPA: 4.00
- Coursework: secure system design, binary exploitation, network and database security, applied cryptography.
Washington State University Graduated May 2023
Bachelor of Science in Computer Science · Vancouver, WA
- GPA: 3.9 / 4.00
Projects
Raspberry Pi 4 Bare-Metal Kernel
A no_std Rust kernel for the Raspberry Pi 4, booted straight from the SD card.
- Wrote AArch64 startup assembly that parks secondary cores, zeroes BSS and sets up the stack for Rust.
- Drove the VideoCore GPU via its mailbox interface for a double-buffered framebuffer with text rendering.
- Unit-tested the hardware-facing code on the host against a mocked mailbox, run in GitHub Actions CI.
Particle Simulator
A falling-sand physics sandbox in JavaScript and WebGL. Try it on the Particles page.
- Simulates sand, water, lava, steam, fire and growing seeds with local density and reaction rules.
- Renders every particle with a small WebGL sprite renderer, targeting 60 fps.
CAN Logger
Designed and developed a CAN logger application using the Rust programming language.
- Displayed live and recorded CAN traffic for real-time debugging and post-analysis.
- Reverse engineered the .blf file format to enable reading and writing industry-standard CAN log files.
- Optimized CAN data processing for high throughput using async programming and efficient Rust techniques.
Rust Driver for Vector XL Devices
Developed a Rust driver for Vector XL devices, enabling CAN message transmission and reception via a C foreign function interface.
- Designed a robust API to streamline communication with Vector XL hardware for automotive integration.
- Implemented functionality to transmit and receive CAN messages with high performance and low latency.
- Employed comprehensive unit testing with mocking and integration tests to ensure reliability and maintainability.
Skills
- Programming Languages: C, C++, Rust, Python, C#, Bash
- Embedded & Systems: Secure Boot, Bootloaders, Bare-Metal ARM, RTOS, I2C / SPI / UART / CAN, Memory-Mapped I/O, GDB, QEMU
- Tools & Technologies: .NET, Git, GitHub Actions, Docker, Linux, FFI (Rust/C), Vector XL