CONTACT
josh at codeposse dot com
Dual U.S. & German (EU) citizen — authorized to work in both the U.S. and the EU without visa sponsorship (ITAR/EAR-eligible in the U.S.).
SUMMARY
Hello, I’m Josh; a largely self-taught embedded and spaceflight software engineer with a career spanning roughly 30 years across both flight and ground systems.
Right now I’m writing flight software for the IMPAX mission with the University of Minnesota Space Physics group, and AWS cloud software for Breville, a Sydney, Australia-based small-appliance company. The IMPAX work is the kind I enjoy most.
I have deep roots in NASA instrument ground support. For years I’ve written software and managed ground support equipment (GSE) for science instruments across multiple missions: WIND, RBSP, STEREO, Parker Solar Probe, and Ulysses. Building the IMPAX flight software has been a natural extension of that work, carrying it from the ground up into orbit.
Across a varied career I’ve written code for embedded, server, desktop, and mobile platforms (some now defunct) and contributed to commercially successful embedded devices and desktop and mobile software. I began as a UNIX administrator, designing and supporting Solaris and IRIX systems — from simple file services to large, redundant, distributed installations serving thousands of users. Thirty years on, UNIX and Linux remain my daily working environment.
I’ve also become an adopter of AI-assisted development, integrating agentic coding tools like Claude Code directly into my development workflow; for code review, refactoring, documentation, and testing.
What keeps me engaged hasn’t changed: learning new things, working in small but diverse groups, and a healthy variety of technology and people (not all of whom are engineers!) to work with and problems to solve.
PROFESSIONAL EXPERIENCE (30 years, last ~10 shown)
University of Minnesota, Space Physics, Minneapolis, MN 2004 – current
Flight Software Engineer — IMPAX mission (2023 – current)
-
Sole developer of the IMPAX CubeSat flight software, built on the EnduroSat OBC SDK (STM32H753 ARM Cortex-M7, FreeRTOS), commanding the mission’s two science instruments.
-
Wrote bare-metal drivers for two space-physics instruments — I-AXIS (an x-ray imaging detector) and I-FIRE (an energetic-electron spectrometer) over RS-422/RS-485 UART, using CCSDS packet command framing with Fletcher-32 and CRC-32 integrity checks.
-
Designed libipg, a reusable interrupt- and DMA-driven UART transport library (IPG = inter-packet gap, a concept borrowed from classic Ethernet): double-buffered DMA receive with idle-line frame detection, hardware-timer inter-packet-gap pacing, RS-485 direction control, and CRC-32 framing supporting multiple independent instrument links.
-
Built a PPS-disciplined time-synchronization service that distributes GPS-disciplined time-at-tone to both instruments for precise science time-tagging.
-
Authored a MAX1340 SPI ADC driver for instrument thermal monitoring, integrated into the platform Sensor Data Service and DataCache telemetry pipeline.
-
Implemented mutex-safe rolling SD-card science logging and an endian-aware binary pack/unpack serialization library (libimpax) used for all command and telemetry encoding.
-
Stood up the project’s build & release pipeline: traceable (git-describe) versioning, reproducible containerized builds, and automated CI/CD with unit tests, static analysis, artifact archiving, and metrics.
-
Validated flight software with hardware-in-the-loop and day-in-the-life (DitL) testing, plus on-target profiling and debugging.
-
Authored project documentation — coding standards, architecture, software plans, and ICDs — and presented at NASA mission reviews.
-
Built a custom PC104 OBC board for at-home testing of software builds.
Ground Support Equipment Engineer (2004 - current)
-
Developed ground-based software solutions, test automation, and hardware integration to support various satellite instruments the Space Physics department has either currently in-flight or in-development. NASA missions include: WIND, RBSP, STEREO, Parker Solar Probe, Ulysses.
-
Built and maintained an end-to-end CCSDS telemetry de-commutation package complete with custom domain-specific language for describing data structures.
-
Developed and maintained a telecommanding software package with multiple language bindings.
-
Created and maintained telemetry housekeeping applications on Apple platforms. Here’s a recent example on the PSP project for the FIELDS2 instrument suite.
-
Designed software- and hardware-based closed-loop testing systems.
-
Integrated third-party software and hardware solutions into existing integration and test processes.
-
Built embedded systems using ARM Cortex-M3/M4 micro-controllers to aid in instrument testing.
-
Performed FPGA design and build automation.
Breville Group, Sydney, Australia, 2022 - current (remote)
Senior Firmware Engineer
-
Developed firmware for IoT products using the ESP32 micro-controller.
-
Integrated with AWS cloud services (IoT Core, Lambda, S3, CloudWatch, Athena).
-
Integrated multiple third-party BLE-based temperature probes into existing firmware.
- Designed a generic JSON-based protocol for transmitting probe metadata as well as sample data to cloud.
-
Ported and integrated code to detect a shorted heater condition in an ESP32-based sous vide appliance.
Architecture Committee Secretary
-
Served as secretary of the Architecture Committee, which reviews additions and changes to product infrastructure interfaces.
-
Created and maintained the set of connected-product interface documentation and specifications, covering all protocol details.
-
Worked with app, cloud, and firmware teams to capture interface changes and reviewed them with the Committee, proposing alternatives where useful.
-
Investigated emerging IoT technologies (e.g. Matter, Amazon Sidewalk) and built proof-of-concept demos.
AMSAT-NA, Silver Spring, MD 2013 - 2015
Ground Support Equipment Engineer (volunteer)
-
Member of the FOX-1A flight team — AMSAT’s first Fox-1 CubeSat, launched in 2015 (designated AO-85).
-
Developed telecommand software in C++ / Qt that emulates the Holtek HT12E hardware encoder.
-
Built a prototype encoder/decoder testing platform using SPI FSK transceivers and the TI MSP430. (Video description of test setup)
Codeposse Consulting, Inc., Saint Paul, MN 2004 - current
President
Codeposse is the consulting company that I’ve owned for over 20 years. I’ve had a number of interesting projects, but to me these are the most interesting and recent.
-
Developed a music product using STMicro’s STM32MP1 microprocessor (in development)
-
Embedded Linux driver development for handling processor IPC
-
Wrote almost-bare-metal (using STM HAL) OS.
-
Created shared-memory IPC solution for sending large amounts of ADC/DMA audio data from the M4 to the A7.
-
The initial version was developed on an Atmel ATSAME54.
-
Analog schematic was captured and laid out in OrCAD / Allegro and sent off to OSH Park for fabbing.
-
-
Built a custom 6502-based computer.
-
Used Western Design’s W65C02S MPU, W65C22 VIA, and W65C51N ACIA
-
Static RAM in lieu of DRAM
-
Used perf-board; plans for a full etched PCB are in progress.
-
Images and blinky-light can be found here.
-
-
Various mechanical / maker projects designed in AutoDesk Fusion 360 (3D-printed, vacuum-formed, and extruded-aluminum parts) — including a roof-rack fishing-rod case and a kneeboard for securing an iPad while flying.
Audiofile Engineering, Saint Paul, MN 2005 – 2019
Embedded Software Engineer
-
Reverse-engineered third-party embedded software update protocol for RØDE Microphone’s Wireless-GO product.
-
Integrated support for the aforementioned protocol in their cross-product firmware update application developed using JUCE and C++.
-
Added iAP2 support to RØDE Microphone’s iXLR iOS accessory (an XLR-to-Lightning adapter implemented using an ARM Cortex-M3).
-
Developed firmware updater for Line6’s MIDIMobilizer iPhone accessory that utilized the TI MSP430.
SKILLS
Languages: C, Python, SQL; also C++, Objective-C, Swift, Lisp, Forth, Tcl, Perl, Fortran, IDL, Verilog.
Embedded / RTOS: ARM Cortex-M3/M4/M7 & Cortex-A7 (STMicro, Atmel, Microchip, Nordic), Xtensa ESP32, MIPS PIC32MZ; FreeRTOS / CMSIS-RTOS v2, embedded Linux (OpenSTLinux); bare-metal bring-up, DMA, I2C / I2S / SPI, UART / RS-422 / RS-485, BluetoothLE, ADC, timers, interrupts, power management.
UNIX / Linux: daily driver since the mid-1990s — Linux (desktop, server, embedded), the BSDs, and macOS (Darwin) today; Solaris, IRIX, HP-UX, and AIX in earlier years. Administration (from simple file services to large, redundant, distributed installations), shell scripting with the classic command-line toolset (sed, awk, grep, find, and friends), and significant systems and network programming.
Platforms / libraries: STM32Cube, ESP-IDF; Apple MFi / iAP2, lwIP, CMSIS, FatFs, Lex / Yacc, Curses.
Spaceflight / GSE: CCSDS telemetry & telecommand, hardware-in-the-loop & day-in-the-life (DitL) testing, PPS / GPS time-tagging, PTP, CDF; NASA software standards (NPR 7150.2C, NASA-HDBK-2203, NASA-STD-2100-91); full instrument lifecycle — specification, implementation, testing, integration.
Tools & build: GCC / Clang, as / ld, GDB / LLDB, Make / CMake / Ninja, Git / SVN, Docker, CI/CD (Gitea); SEGGER J-Link / SystemView / Ozone; Emacs, VS Code, Xcode, Visual Studio.
Hardware: schematic capture & PCB layout (Cadence OrCAD Capture / Allegro & Altium), PSpice simulation, oscilloscope / logic / spectrum analyzers / function generators, FPGA (Microsemi SmartFusion2, Xilinx Artix), Fusion 360 + 3D printing, analog and digital design.
AI-assisted development: agentic coding tools (Claude Code) in embedded C / firmware workflows — code review, refactoring, documentation, testing and navigating unfamiliar codebases.
Foundations: DSL design, OS design & implementation, network / protocol development (at all OSI layers), serialization (JSON, XML, CBOR, Protobuf, custom binary), security (PGP, X.509, DH), RDBMS (MariaDB / MySQL), RF (GNU Radio, antennas, modulation, and ham radio — Amateur Extra, KD0OPN), DSP & applied math (calculus, linear algebra).
EDUCATION
I’m largely self-taught. Nearly everything I do professionally I learned by doing — shipping real flight, ground, and embedded software over more than two decades — with the guidance of many extraordinary mentors I’ve been fortunate to learn from along the way. Continuous, hands-on learning is simply how I work.
Formal education:
-
Centennial High School — graduated 1995
-
Anoka-Ramsey Community College — 1996–1997
-
University of Minnesota, Twin Cities — ~2 years of coursework (1997–1998, 2006, 2015, 2017)