CONTACT

josh at codeposse dot com

SUMMARY

Hello, I’m Josh.

I currently work for the University of Minnesota in the Space Physics group. I write software and manage GSE to support various science instruments on multiple NASA missions that we’ve been a part of.

I love working on “space stuff” and in an R&D-style environment. It’s always been my dream to work on spacecraft and to be part of an incredible team that makes it possible. I’m very fortunate.

I currently favor writing C, Swift and Python code on UNIX platforms. I personally enjoy and have professional experience developing embedded applications for ARM Cortex M3/M4 and TI MSP430 microcontrollers.

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

PROFESSIONAL EXPERIENCE (25+ years, last 10 shown)

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

Ground Support Equipment Engineer (contract)

  • 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 microcontrollers 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 (contract)

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

  • Helped create the first VoIP application for iOS in 2008 called TruPhone (UK-based Teleco).

SKILLS

In the (lengthy) span of my professional career I’ve done everything from desktop support, to distributed UNIX and SAN implementation and administration, to writing desktop and embedded software for multiple platforms (some now even defunct). I’ve worked with and learned many (and some happily now forgotten) technologies.

SKILLS MOST RECENTLY USED OR OF PARTICULAR PERSONAL INTEREST:

  • C, Python, Swift, SQL

  • UNIX (macOS and Linux) application development

  • Network application development (BSD sockets, TCP/IP and friends)

  • Various data formats and protocols commonly used in space missions. (e.g. CCSDS, PTP, CDF, etc…)

  • 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!])

  • ARM Cortex M3/4, some PIC and even some 6502(!)

  • Emacs and some LISP

  • Git & Subversion

  • Basic DSP knowledge

  • Basic Cadence OrCAD Capture and PSpice

  • Basic analog and digital design (including test equipment)

  • OS Design and Internals

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

  • C++ and Objective-C

  • Qt and JUCE application frameworks

  • OpenGL (Camera Flyby Demo)

  • Actel SmartFusion2, TI MSP430

  • Apple MFi (iAP and iAP2)

  • CMake

  • NI LabView

  • Windows development (Win32, WinSock)

  • Some front- and back-end web dev, but don’t tell anyone.

INTERESTS

I have a lot of hobbies and interests. Here are but a few…

  • Honestly? My work is my favorite hobby. I love learning and making new things.

  • Camping and hiking are definitely up there. 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 Formula1 racing.

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