Nathan Spelts
Firmware engineer — embedded C, automotive diagnostics, low-level systems, Rust.
nathan at spelts dot net
Summary
I write embedded C for automotive diagnostic tools. Before that, I spent nearly three years on safety-critical forklift firmware, secure boot, and Rust CAN tooling. Currently pursuing an M.S. in Cybersecurity at Georgia Tech, focused on cyber-physical systems.
Work Experience
Salvo Software Apr 2026 – Present
Aftermarket Automotive Engineer · Vancouver, WA
- Maintain production embedded C firmware for a widely used vehicle diagnostic tool.
- Implement ECU software update routines for engine and transmission controllers, with a focus on reliability.
- Develop cloud services that support the tool.
Hyster-Yale Materials Handling Aug 2023 – Apr 2026
Software Engineer II · Fairview, OR
- Wrote safety-critical embedded C firmware for a truck controller, from pallet jacks to container handlers.
- Improved secure boot and firmware authentication to guard against tampering and unsafe OTA updates.
- Built a Rust CAN flashing and diagnostics tool (Vector XL, C FFI) used by about 25 people; it cut 3 minutes from every flash and took plain binaries, not the commercial tool’s zip and layout file.
- Developed Lua applications for an in-truck smart display running embedded Linux.
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 / 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.90 / 4.00
Projects
Raspberry Pi 4 Rust Bootloader
Bare-metal no_std Rust boot code and 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#, Lua, Bash
- Embedded & Systems: Secure Boot, Bootloaders, Bare-Metal ARM, Nucleus RTOS, CMSIS-RTOS
- Protocols: CAN, UDS, ISO-TP, J1939, CANopen, I2C, SPI, UART
- Tools & Technologies: .NET, Git, GitHub Actions, Docker, Linux, GDB, QEMU, Vector XL