I. Telescope Control Systems

The Realtime Software Ecosystem of the SMA

A few SMA antennas
Figure 1. A few of the SMA antennas
The Submillimeter Array (SMA) is a pioneering interferometer atop Maunakea in Hawaii, consisting of eight 6-m antennas working together as a single telescope. I am the lead software engineer responsible for making sure that the telescope and all its instrumentation operate smoothly night-after-night for producing cutting-edge science. It is my job to lead and supervise the creation of software to support new capabilities; improve the efficiency of the observations and data quality; and troubleshoot any problems that might pop up. This involves maintaining around 500k lines of C code, running on a heterogeneous systems of machines with different (some very old) UNIX operating systems; designing new modern solutions that allow these computers to work more efficiently together; writing low-level code (e.g. custom kernel modules), server and client applications, monitoring and control tools.

II. Software Libraries

SuperNOVAS C/C++ Astrometry Library

SuperNOVAS logo
Figure 2. SuperNOVAS library
SuperNOVAS is a C/C++ astronomy software library, providing high-precision astrometry such as one might need for running an observatory, a precise planetarium program, or for analyzing astronomical datasets. It started as a fork of the Naval Observatory Vector Astrometry Software (NOVAS) C version 3.1, but since then it has grown into its own, providing bug fixes, tons of new features, and a much improved API compared to the original NOVAS.

SuperNOVAS is easy to use and it is very fast, providing 3--5 orders of magnitude faster position calculations than astropy 7.0.0 in a single thread, and its performance will scale with the number of CPUs when calculations are performed in parallel threads.

SMA-X Real-time Hierarchical Database for Distributed Systems

The SMA Exchange (SMA-X) is a free, high performance, and versatile real-time data sharing platform for distributed software systems. It is built around a central Redis (or equivalent) database, and provides efficient atomic access to structured data, including specific branches and/or leaf nodes, with associated metadata. SMA-X was developed at the Submillimeter Array (SMA) observatory, where we use it to share real-time data among hundreds of computers and nearly a thousand individual programs

SMA-X consists of a set of server-side LUA scripts that run on a Redis / Valkey server; a set of libraries to interface client applications; and a set of command-line tools built with them. Currently we provide client libraries for C99 and Python 3.

RedisX — Independent Redis / Valkey client library for C/C++

RedisX is a free, light-weight Redis / Valkey client library for C/C++. It supports both interactive and batch queries, managing and processing subscriptions, atomic execution blocks, and LUA script loading. It can be used with multiple Redis servers simultaneously also. RedisX is free to use, in any way you like, without licensing restrictions.

While there are other C/C++ Redis clients available, this one is C99 compatible, andarren dowelld hence can be used on older platforms also. It is also small and fast, but still capable and versatile.

Rather than providing high-level support for every possible Redis command (which would be challenging given the pace new commands are being introduced all the time), it provides a basic framework for synchronous and asynchronous queries, with some higher-level functions, such as for managing key/value storage types (including hash tables) and PUB/SUB. Future releases may add further higher-level functionality based on demand for such features.

xchange — Structured data representation library for C/C++

The xchange library provides structured data representation and exchange in C/C++, and includes support for JSON parsing and generation. It is free to use, in any way you like, without licensing restrictions. For JSON parsing end emitting, xchange provides a higher-level data model than cjson, with high-level functions for accessing and manipulating data both with less code and with cleaner code.

The nom.tam.fits Java FITS Library

The nom.tam.fits logo
Figure 3. nom.tam.fits
FITS (Flexible Image Transport System) is a commonly used data exchange format for astronomical data, developed by NASA. In Java, support is provided by the nom.tam.fits package, originally developed by Tom McGlynn at NASA Goddard Space Fight Center. I am now the lead maintainer of this package. In this role, I lead and oversee the creation of periodic releases, providing bug fixes, improvements and new features to this popular library. My goal is to (a) ensure that the library provides flawless support for FITS; (b) that it fully supports the latest FITS standard; and (c) does it with an API that is simple and intuitive to use; and (d) that its documentation is helpful and up-to-date.

III. Instrumentation

A mm-Wave Integral Field Unit (IFU) Spectrometer Instrument

Coming soon...

NASA / POEMM Mission

POEMM logo
Figure 4. POEMM logo
POEMM (Planetary Origins and Evolution Multispectral Monochromator) is a selected NASA Astrophysics Pioneers balloon mission to study water and ice signatures in protoplanetary and debris disks around stars. I will be providing the data reduction pipeline (CRUSH) which will be used both for the on-board pipeline during flight, and for the final science data reduction on the ground.

The APEX MKID Camera (A-MKID)

AMKID is a large-format, dual-band (850um + 350um), camera for the APEX telescope. Its densely packed focal planes (in both bands) fill the ~12 arc minute Field-of-View (Fov) of the 12-m telescope, located at the high plateau, at 5300m elevation, in the Atacama desert in Chile. I provide the unified readout backend software, which collects and processes (in real-time) the data from 24 Fast Fourier Transform Spectrometer (FFTS) boards, needed to read out all pixels in the array. The backend also controls the FFTS boards, manages spectral sweeps, and interfaces to the telescope's control system (APECS), and to the frontend (FE) computer. Apart from the software, I help with troubleshooting and commissioning the instrument, which is now the largest, most powerful mm-wave camera in existence.

GISMO-2

GISMO-2 schematic
Figure 5. Schematic of GISMO-2 (Staguhn et. al. 2012).
Building on the highly successful development of the first 2-mm camera for the IRAM 30-m telescope at Pico Veleta, by Johannes Staguhn and his outstanding team, we are continuing with GISMO-2. We are using everything we learned from GISMO to build the best 2-mm camera possible, while adding a 1.2 mm array also for dual-band imaging. GISMO-2 will fill the focal-plane with more sensitive detectors, and provide superior optical performance and stray-light rejection. Its goal is to become the first truly background-limited 2-mm camera, with an NEFD ≤ 2 mJy/beam s0.5 (on the 30-m telescope).

My role in GISMO-2 began with suggested improvements (e.g. stray-light rejection, detector wiring), and I shall provide its data reduction facility with CRUSH. GISMO-2 may make its debut on the Greenland Telescope (GLT) in the not too distant future. Stay tuned!

IV. Observational Science

S-Z Clusters

Coming soon...

Interferometric On-the-Fly (OTF) Mapping

Coming soon...