Job Openings at JPL/NASA: SPICE 2.0!


Awesome job openings at JPL

Ever dreamed of working for NASA? Can you envision working at JPL?

An awesome opportunity landed in my email inbox via the NAIF’s SPICE announcements mailing list (from Boris Semenov at NAIF):

The NAIF team is seeking to hire a team member whose primary job will be the development of the next generation SPICE Toolkit (SPICE 2.0), implemented in C++11.

Woot! SPICE 2.0!

SPICE Toolkit

SPICE is an (awesome) software library published by NAIF/JPL/NASA used primarily for spacecraft planning and analysis tools. The original is authored in FORTRAN, and translations into several languages also available (C, MATLAB, Java JNI, IDL)… (Not to mention Unreal Engine 5’s Blueprints Visual Programming language, additional info below.)

From the NAIF website:

ASA’s Navigation and Ancillary Information Facility (NAIF) offers NASA flight projects and NASA funded researchers the “SPICE” observation geometry information system to assist scientists in planning and interpreting scientific observations from space-based instruments aboard robotic planetary spacecraft. SPICE is also used in support of engineering tasks associated with these missions. While planetary missions were the original focus, today SPICE is also used on some heliophysics and earth science missions.
The SPICE system is freely available to space agencies, scientists and engineers around the globe, subject to the provisions explained on the Support and Rules web pages. It is also available to the general public with the caveat that support from NAIF is VERY LIMITED.
SPICE: An Observation Geometry System for Space Science Missions

JPL is publishing one job openings for a NAIF SPICE 2.0 role, as well as roles in two other groups.


Solar System Geometry Development Engineer

NAIF is advertising an awesome role:

Assist with the design and development of "SPICE 2.0," a re-implementation of the SPICE Toolkit software ( in the C++11 language, architected for thread safety and object oriented design. Includes the development of comprehensive test plans and allied test software. Conceive, design, implement, document and test modules as well as whole subsystems. This capability will be deployed around the world in support of NASA and partner planetary, heliophysics and earth science missions.
Mentor the NAIF Team as it infuses C++11 into its programming and information system processes. Participate in the continuing development of the existing SPICE 1.0 Toolkits, written in Fortran 77, C, IDL, MATLAB, and Java. Having obtained a broad understanding of the full SPICE domain, provide consultation and problem solving for SPICE users, and participate in the development of training materials and the teaching of SPICE classes.
Job Opening: Solar System Geometry Development Engineer

Whether or not object oriented design is a good quality is debatable, but this is an excellent opportunity which is undeniable. I’d be interested in this one myself if I was available and a bit more aligned :).

Pointless aside about SPICE implementation details

The SPICE 1.0 library was nearly stateless, aside from kernel data that persists (data about orbits, orientations, etc). I hope the same will be true of 2.0, but then where does the object oriented-ness come in?

Even more pointless deeper-in-the-weeds aside on SPICE implementation

FWIW there are a few areas in which SPICE 1.0 does retain state. For one thing, CELL local data structures are declared with static durations, meaning their contents are retained across function calls. And, some API calls to “enumerate” data preserve a “cursor” with the state of the enumeration across function calls. This can bite you if you approach SPICE from a presumption of statelessness. IMO stateless-ness facilitates exposing the SPICE functionality across a wide range of platforms more readily than a stateful implementation. Would love to talk about the SPICE 2.0 architecture with whomever ends start up in the role!

JPL Solar System Dynamics Group

Software Engineer for Small-body Ephemeris Development

The Solar System Dynamics Group (SSD) publishes the “Small-Body Database”, with the latest ephemeris (trajectory) data for the solar system’s asteroids and comets, among other things. (There are over 1 million entries in the database, last I looked).

More information on what SSD does:
What does SSD do?
Small-Body Database Query

SSD has a very interesting job opening:

Designs, develops, and/or modifies engineering applications for highly complex or specialized capabilities within spacecraft, instrument/sensor, telecommunications, control systems, electronic ground support equipment (egse), navigation, planning, or similar data and mission software systems. Utilizes extensive domain-specific engineering expertise to understand the needs of the customer, translate needs into requirements, develop prototype applications, iterate with customers and then deliver quality applications. Involved in entire life-cycle of system, including planning, development, deployment and maintenance. Responsible for understanding and meeting software operational and engineering requirements.
Tasks will include but not limited to:

  • Maintain and improve SSD’s small-body database, which currently contains orbits of all known asteroids and comets.
  • Maintenance of database systems, including MySQL master and replicated systems both in-house and AWS.
  • Maintenance of existing AWS assets using technologies including EC2, S3, CloudFront, ALB, Lambda, and RDS.
  • Provides system-administration support for critical production servers running RedHat Enterprise Linux.
  • Support development of cloud-optimized code for SSD’s current systems: auto system, Sentry, Scout, mission design, etc.
  • Gather data on survey performance of asteroid detection and identification and provide improved metrics to the Program Manager for annual program reporting.
  • Support of current small-body orbit determination systems (maintenance and improvement): auto, Sentry, mission design, Scout, etc.

Job Opening: Software Engineer for Small-body Ephemeris Development

JPL Planning and Execution Systems Section

Engineering Applications Software Engineer III

If Mars is more your cup of (proverbial) tea, this could be your ticket to into JPL:

Carry out development of Mars ground data system tools controlling Mars assets. Development includes creating web based applications, migrating legacy code to newer technologies, supporting existing infrastructure and tools used throughout the lifecycle of spacecraft commanding. These areas include, but not limited to, spacecraft commanding, communication pass scheduling, and downlink data product processing.
Under supervision from the Realtime Operations (RTO) subsystem of MSL, this individual will be responsible for the following tasks:

  • Technical Owner of the codebase for the MSL Science planning tool called MSLICE
  • Primary Developer for the MSLICE tool based in Java and Eclipse
  • Works with Cognizant Engineer and product owner to determine roadmap of application
  • Upgrading third-party dependencies in various applications
  • Documenting application architecture and test cases
  • Performing testing of applications
  • Migrating software to new operating systems
  • Helping implement new vulnerability analysis tools

Job Opening: Engineering Applications Software Engineer III

If any of these sound like you or someone you know, I cannot more highly recommend checking out JPL. The SPICE toolkit is amazingly robust, documented, and capable - any group that can put something like that together is obviously doing more than a few things right.

Additional Info: Visual Programming with SPICE

For those who’d like to play around with SPICE but may be intimidated by C/FORTRAN programming, there’s MaxQ which contains an Unreal Engine 5 Blueprints wrapper around SPICE. This allows calling the SPICE Toolkit using an intuitive flowchart-like solution in Unreal Engine - Blueprints. It comes with the full power of Unreal Engine 5. This facilitates developing cinematic visualizations or interactive experiences in conjunction with SPICE.

Example of visual programming with MaxQ/SPICE: Computing Hubble Space Telescope's location in Longitude/Latitude

Tutorial: How SPICE was integrated with Unreal Engine 5
GitHub: MaxQ source code
Docs: MaxQ/Unreal Engine 5-SPICE integration

Comments are disabled. To share feedback, please send email, or join the discussion on Discord.