CONTACT

josh at codeposse dot com

SUMMARY

Hello, I’m Josh.

I currently work for Breville, a Sydney, Australia-based small-appliance company. I develop interface specifications, research emerging technology, and create technical documentation to support the line of IoT connected products.

For many years I was a part of the University of Minnesota Space Physics group. I wrote software and managed GSE to support various science instruments on multiple NASA missions that we’ve been a part of. It was an incredible experience.

In the (lengthy) span of my professional career I’ve done everything from sending commands to spacecraft while on a road trip to helping colleagues troubleshoot their printer.

I’ve written code for quite a few different embedded, server, desktop, and mobile platforms (some now defunct). I’ve contributed to commerically successful releases of embedded devices, desktop and mobile software.

I began my career as a UNIX administrator, designing and supporting Solaris and IRIX systems to support simple file services as well as large, redundant, distributed installations that supported thousands of users.

This is all to say that I’ve happily had a varied career with many challenges and have been able to work with many amazing people (not all of whom are engineers!) as well as many diverse technologies, deriving enjoyment from problem solving and collaboration.

Finally, learning new things, working in small but diverse groups and technological variety are what I feel is most engaging.

References are available upon request.

PROFESSIONAL EXPERIENCE (27 years, last ~10 shown)

Breville Group, Sydney, Australia, 2022 - current (remote)

Senior Firmware Engineer

  • Develop firmware for IoT products using the ESP32 micro-controller running FreeRTOS.

  • Integrated with AWS cloud services (IoT Core, Lambda, S3, CloudWatch, Athena)

  • Integrated multiple third-party BLE-based temperature probes into existing firmware.

    • Developed 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 a ESP32-based sous vide appliance.

  • Mentor colleagues

Senior Software Engineer

  • Secretary of the “Architecture Committee”, a group that reviews additions and changes to existing infrastructure interfaces. My responsibilities include:

    • Create and maintain a full set of connected product interface documentation. This includes full technical details of all protocols.

    • Work with app, cloud, and firmware teams to capture interface changes to the existing architecture, and review those changes with the Committee, possibly suggesting alternatives.

  • Research and development

    • Investigate new IoT technologies (e.g. Matter IoT or Amazon Sidewalk)

    • Create proof-of-concept demos

  • Technical writing

  • Assist any of the three teams with development when needed. “Utility player”, so to speak.

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 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.

  • Developed roof-rack mountable fishing rod case (in development)

    • Designed in AutoDesk Fusion 360 + 3D printer to develop parts

    • Uses off-the-shelf mounting brackets for roof-rack

    • Tube is extruded aluminum, case will be vacuum-formed ABS.

  • Developed knee-board for holding an iPad

    • The knee-board is used to hold the iPad securely about your thigh while flying an airplane.

    • No commercially available product fit my needs.

    • Designed in AutoDesk Fusion 360

  • Developed 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.

University of Minnesota, Space Physics, Minneapolis, MN 2004 – current

Ground Support Equipment Engineer

  • Generate specifications and gather requirements for flight and ground software during mission planning and development.

  • Develop 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.

  • Creating and maintaining an end-to-end CCSDS telemetry de-commutation package complete with custom domain specific language for describing data structures.

  • Creating and maintaining a telecommanding software package with multiple language bindings.

  • Creating and maintaining telemetry housekeeping applications on Apple platforms. Here’s a recent example on the PSP project for the FIELDS2 instrument suite.

  • Creating software and hardware-based closed-loop testing systems.

  • Integrating third-party software and hardware solutions into existing integration and test processes.

  • Creating embedded systems using ARM Cortex-M3/4 micro-controllers to aid in instrument testing.

  • Basic FPGA design and process automation using Microsemi SmartFusion2 and Actel toolchains.

AMSAT-NA, Silver Spring, MD 2013 - 2015

Telecommand software developer (volunteer)

  • Part of the FOX-1A amateur satellite team.

  • Developed telecommand software in Qt that emulates the Holtek HT12E hardware encoder.

  • Built prototype encoder/decoder testing platform using SPI FSK transceivers and the TI MSP430. (Video description of test setup)

Audiofile Engineering, Saint Paul, MN 2005 – 2019

Software Engineer

  • Helped create the first VoIP application for iOS called TruPhone (UK-based Teleco). We were among the first 50 applications produced for the iPhone.

  • 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).

  • Worked remotely and on-site (Wellington, New Zealand) on the macOS screen capture product called iShowU Studio for ShinyWhiteBox.

  • Developed firmware updater for Line6’s MIDIMobilizer iPhone accessory that utilized the TI MSP430.

  • Created iOS video capture library for RØDE recording iOS app.

  • Ported a vocoder DSP application from Java to C in MaxMSP (Cycling ‘74) and then to iOS.

  • Created initial version of Audiofile’s voXover voice over teleprompter application using Obj-C and Cocoa on MacOS X.

SKILLS

Here are the acronyms.

SKILLS MOST RECENTLY USED OR OF PARTICULAR PERSONAL INTEREST:

  • Development Tools & Languages

    • C, C++, Python, Lisp, SQL

    • GCC, as, ld, GDB, clang, lldb

    • Git, SVN

    • Make, CMake, ninja

    • Emacs, Xcode, VSCode, Visual Studio

  • Embedded Hardware

    • ARM-based Cortex M3, M4, A7 from STMicro, Atmel, and Nordic

    • MIPS-based PIC32MZ from Microchip

    • Xtensa-based ESP32 from Espressif

    • I2C, I2S, SPI, BluetoothLE, DMA, ADC, IPCC, IRQs, Timers, and other common embedded peripherals.

  • Development Platforms / Libraries

    • UNIX / Linux / Embedded Linux (OpenSTLinux) / FreeRTOS

    • STMicro STM32Cube

    • Espressif ESP-IDF

    • Atmel ASF

    • Nordic nRF Connect

    • Lex, Yacc, Curses, CMSIS, lwIP stack

  • Aerospace Related

    • CCSDS, PTP, CDF

    • GSEOS

    • telemetry and telecommanding methodologies

    • familiar with standard spacecraft instrument development lifecycle

      • specification, implementation, testing, and integration
  • Technical Knowledge

    • Domain Specific Language (DSL) design

    • RDBMS design, MariaDB/MySQL

    • OS design and implementation

    • Basic DSP knowledge

    • Basic maths (calculus and some linear algebra)

    • Value- and Protocol-oriented programming. (Note: these are just fancy ways of saying I strive to write simple, modular code, design good (NOT general) interfaces on those modules and use a minimum of language syntactical sugar to do it. [as tempting as it sometimes is!])

    • Network application and protocol development at all ISO/OSI layers.

    • Serialization formats: JSON, XML, CBOR, ProtoBuf

    • Security: PGP, X.509, DH

    • Basic RF (GNURadio, Ham radio, antennas, FSK, CW)

  • Hardware Skills

    • Basic analog and digital circuit design (I read The Art of Electronics)

    • Basic PCB schematic capture and layout

      • Cadence OrCAD Capture and Allegro PCB Editor
    • Basic circuit simulation using PSpice

    • Oscilloscope, Logic Analyzer, Spectrum Analyzer, Function generator, and other basic test equipment.

    • Basic AutoDesk Fusion 360

    • Basic 3D print

SKILLS I HAVE BUT ARE ON THE VERGE OF BEING “SWAPPED” OUT (i.e. older or weak):

  • Development Tools & Languages

    • Swift, Forth, Objective-C, Java/TypeScript, Tcl, Perl, Fortran, IDL, Java
  • Embedded Hardware

    • Actel SmartFusion2, TI MSP430, WD6502, PIC8
  • Development Technologies

    • Qt, Xt/X11, GNOME, JUCE, Motif

    • Apple Metal, OpenGL (Camera Flyby Demo)

    • macOS (Cocoa, Carbon)

    • Windows development (Win32, WinSock)

    • Apple MFi (iAP and iAP2)

    • NI LabView

    • UNIX variants such as: SGI IRIX, Sun Solaris, HP HP-UX, IBM AIX

    • MacOS Toolbox (System 7, 8 and 9) + CodeWarrior

    • MSSQL, OracleDB

EDUCATION

A high school diploma is the highest level of formal education I have completed. In addition, I’ve also completed about two years of university course work.

Autodidact would be an appropriate word to describe my education were it not to significantly lessen the contributions of many incredible mentors I’ve been fortunate to have throughout my career.

  • Centennial High School, Graduated 1995

  • Anoka-Ramsey Community College, Attended 1996 - 1997

  • University of Minnesota Twin Cities, Attended 1997 - 1998, 2006, 2015, 2017

INTERESTS & MISCELLANEA

  • I love to fly airplanes.

  • Tube amplifiers and classic HiFi audio gear.

  • Astrophotography

  • Camping and hiking. As long as there is fishing involved.

  • Speaking of fishing, I fly fish. For trout. A lot.

  • I love ancient Roman history. I’m particularly interested in the period from the founding to about the age of Augustus. I’m even trying to learn Latin.

  • I play hockey. Once upon a time I was actually pretty OK at it.

  • I love MotoGP racing.

  • ‘Extra’ licensed ham radio operator. I operate CW (morse code) mostly.

  • I play guitar and make music. I used to play in a couple good bands. We even made some records.

  • I also read a lot of sci-fi and fantasy novels. I’ll throw in an occasional classic every once in a while.