Software Development and IT Experience

Summary of software skills

I have 13 years of professional experience developing scientific software in a diverse range of environments: first in industry, then in academia, and now in government. I can quickly prototype new ideas, but I can also write carefully implemented and tested deliverable software as a member of a large team. I can navigate my way through poorly documented large code bases and find obscure bugs. Not only do I know how to use many software tools, I also know when it is appropriate to use each one. Recently, I have transitioned into a managerial role, where I spend more time thinking about the entire software development life cycle.

  • Programming languages (proficient, used regularly): C++, Python, MATLAB, bash shell script, Fortran
  • Programming languages (some experience): C, Java, Perl, IDL
  • Databases: MySQL
  • Version control: Subversion, git
  • Compilers: gcc/g++/gfortran, make, Xcode, Microsoft Visual Studio, Eclipse
  • Operating Systems: Linux (including clusters), Mac OS X, Windows
  • Documentation: doxygen, Javadoc, Markdown, MkDocs, LaTeX, Microsoft Word
  • Software tools: vim, tmux
  • Coursework: Advanced Programming for Scientists and Engineers, Introduction to Parallel Programming, Mining Massive Data Sets (free book at http://www.mmds.org)

Software and IT management, Southern California Seismic Network (SCSN)

2018-present, USGS Pasadena

I have a leadership role in the development, maintenance, and operation of real-time earthquake monitoring software in the Southern California Seismic Network (SCSN), in collaboration with the Caltech Seismological Laboratory. I manage the local IT team on the USGS side of the SCSN, where my role includes supervision, hiring, and interviewing. I completed the USGS Leadership Training and USGS Supervisory Training courses in 2019. My position requires frequent collaboration with stakeholders in geographically distributed locations including other USGS offices, academic institutions, and external organizations.

I am involved in planning, coordination, and support for real-time ground shaking intensity (ShakeMap) products for earthquakes in southern California, as part of the California Integrated Seismic Network (CISN). I am also part of a project to plan and develop requirements for the next-generation ANSS Quake Monitoring Software (AQMS), which is used in regional seismic networks around the United States to monitor local earthquake activity. I regularly encourage and promote software development best practices within our local IT team, such as version control, git workflow for collaboration, coding standards, unit tests, integration tests, issue tracking, code review, and documentation.

Earthquake Notification Service (ENS) project planning

2018-present, USGS Pasadena

I lead the product planning and requirements development for the next-generation Earthquake Notification Service (ENS), a flagship USGS software product that sends customized real-time email and text earthquake notifications to over 400,000 users. My activities on this project include brainstorming, strategic thinking, engagement with product users, gathering feedback and ideas from a wide range of USGS stakeholders within the Earthquake Hazards Program, and writing a contractor statement of work. I also coordinate maintenance and updates to the existing ENS software with collaborators at the USGS National Earthquake Information Center (NEIC) in Golden, Colorado.

Presentations (Poster):

  • Yoon, C., S. Schwarz, and V. Thomas, Earthquake Notification Service (ENS): Present Capabilities and Next-Generation Product Ideas, 2019 SCEC Meeting, Abstract 304, https://www.scec.org/publication/9826.

Earthquake monitoring software development and maintenance

2018-present, USGS Pasadena

I provide maintenance, testing, documentation, and user support for the AQMS Jiggle GUI, a software application used by seismic networks nationwide for human review of earthquake waveforms and refinement of automatic earthquake phase picks, locations, and magnitudes. Using the MkDocs package (Markdown source code is available on my GitLab), I created a Jiggle user manual with screenshots to help new users who are unfamiliar with features and capabilities of the application. I am currently working on making Jiggle an open-source software package within the AQMS GitLab site.

Open-source FAST earthquake detection software

2014-2018, Stanford University, Geophysics

With my collaborators, I developed, tested, and documented the open-source Fingerprint And Similarity Thresholding (FAST) software application: https://github.com/stanford-futuredata/FAST. I had a central role as the seismology domain expert in the development of FAST at every step: concept, MATLAB prototype, algorithm development and integration, software implementation, extensive testing on seismic data sets, and open-source software release.

  • FAST takes an unsupervised approach to detect similar earthquake signals in long-duration continuous seismic data sets up to a decade long.
  • FAST is written on Python and C++, is built on top of the ObsPy library for seismology, and runs on Linux clusters. For months to years-long data sets, FAST should be run on clusters with at least a few hundred GB memory, several TB of disk space, and parallel processing.
  • An example data set, a variety of configuration file examples with different input parameters, and an introductory user guide are provided on the GitHub site.

I regularly use a combination of Python, ObsPy, bash shell script, MATLAB, and GMT for processing, analyzing, and visualizing seismological data.

Remote sensing algorithm and software development

2006-2012, Arete Associates

I developed scientific software on research and development projects for remote sensing systems, where my tasks included simulation and modeling, data analysis, algorithm development, software implementation (C++, Fortran 90), software testing, technical documentation, and oral presentations to customers. I worked on various projects that involved computational geometry, synthetic aperture radar, interpolation, optical image processing, feature detection, noise reduction, signal processing, numerical analysis, and statistics.