2021 Unidata Summer Internship

The 2021 Unidata Summer Internship will offer graduate students and upper-level undergrads an opportunity to work with Unidata software engineers and scientists on projects drawn from a wide variety of areas that overlap atmospheric and computational sciences. Unidata's mission is to support the Earth Science research and education community with innovative data access, analysis, and visualization tools.

Watch this space for additional details about the 2021 internships. Details will be available in December 2020, with an application deadline in January 2021.

View the 2019 Internship Solicitation.

As an intern, you will use, design, and/or modify existing Unidata software in innovative ways to better support the Unidata Community. The 2021 program is a 11-week summer position (40 hours / week) running 17 May to 30 July, 2021. Depending on the COVID-19 situation in May, interns will either work at the Unidata Program Center (UPC) in Boulder, Colorado or in a virtual internship setting. If interns come to Colorado, housing (shared with other UCAR interns) is provided, along with an hourly stipend and transportation costs to and from Boulder. Additionally, Unidata will arrange for 2021 interns to attend the 2022 AMS annual meeting to present their work.

In addition to software projects, as a Unidata intern you will participate in the following activities:

Writing

You'll gain professional writing experience by documenting your work, at both the code and user documentation level. You'll be encouraged to participate in the Unidata Developers Blog throughout the summer.

Reporting / Seminars

In addition to working closely with individual developers, you will attend technical staff meetings to report on the status of your project. You'll also have opportunities to update the UPC staff on the progress of your project through informal “brown bag” talks. And you'll also be encouraged to share your progress and experiences at UCAR and Unidata with a larger community by posting to the Unidata developer's blog.

In the last week of your internship, you will have the opportunity to give a Unidata Community Seminar describing your experience and the outcomes of your summer work.

Unidata will also arrange for your attendance at the AMS Annual Meeting's Student Conference, allowing you to present your internship work to a wide audience of working scientists and other students. We'll help you get starting on your presentation and abstract submission during the summer.

Community and Professional Behavior

As a Unidata intern, you will be part of a larger community of UCAR and NCAR summer interns. Interns are expected to contribute positively to the UCAR/NCAR community and to conduct themselves in a manner appropriate to a professional environment. Interns are expected to fully participate during normal office hours.

How to Apply

Applications for the Unidata Summer Internship will be accepted starting in December 2020. Applications are due 27 January 2021 and must be submitted through the UCAR Career Portal.

Part of the application process involves writing a letter of interest describing the work you are interested in doing during the internship. Please indicate which Unidata software package(s) you are interested in using or developing and how your work would positively impact the Unidata community. An additional short personal esssay is also required as part of the application. See the summaries of recent interns' projects (links at upper left) for an idea of the typical scope of a summer project, but don't feel limited by past interns' choices of areas to work in.

Possible Projects

We'd like to hear what you want to work on! We're open to pretty much any project that holds your interest and will benefit the Unidata community in some way.

To get a good idea about the scope of summer projects, read through some of the descriptions of previous interns' summer activities. (You can also watch their end-of-summer presentations on the Unidata Seminar Series page.)

If you're still undecided, below are a number of possible projects that Unidata developers and scientists have suggested. If one of these topics grabs you, feel free to make it your own!

  • Improve and extend MetPy — an open-source Python toolkit for meteorology

    Work with Unidata developers and MetPy's community to improve and extend MetPy. MetPy fills in the gaps for using Python in meteorology, with tools like calculations (dew point, wind chill, etc.) and plots like Skew-T's. Enhancements for MetPy can range from improving documentation and examples to adding new plots, calculations, or other tools. MetPy's open issues on GitHub also contain a wide array of bugs and feature ideas that could use some work.

  • Contribute improvements to the netCDF4-Python API and Documentation

    We are looking for somebody to evaluate the existing netcdf4 python API and suggest/implement improvements in the form of new or extended functions/functionality. We are also looking for somebody to make sure our user documentation is consistent with the state of the current netcdf software.

  • Enhance Siphon — an open-source library for working with the THREDDS Data Server

    Work with Unidata developers to improve and extend Siphon. Siphon provides a supported python library to talk to THREDDS. This includes parsing catalogs as well as formulating queries for the NetCDF Subset Service (NCSS). Enhancements for Siphon can range from improving documentation and examples to experimenting with implementing the ideas of the Common Data Model (CDM) in Python. Siphon's open issues on GitHub also contain bugs and feature requests that could use some work, or could inspire other ideas.

  • Investigate the impact of data localization, enabled by cloud technologies, using the THREDDS Data Server (TDS) with Siphon and MetPy via Unidata's JupyterHub instance

    Work with the THREDDS and Python developers to assess the impact of doing analysis and visualization “near” data using cloud technologies.

  • Improve netCDF C++ interface/API

    We are looking for somebody to evaluate the existing netCDF C++ API and give it a good spring cleaning; this will involve making sure that recent improvements to the netcdf C library are accessible through the C++ interface, and are being properly tested and documented.

  • Develop Java APIs and implementations for calibration of local satellite imagery dataset

    Work with Unidata developers and SSEC engineers to develop Java API of calibration module based on the old fortran code for different satellites.

  • Develop HTML5/JavaScript-based data visualization and analysis applications

    Work with Unidata developers and scientists to develop basic data visualization and analysis applications using HTML5 and JavaScript. Investigate the use of data visualization libraries like D3 and OpenLayers.

  • Investigate container technologies

    Explore ways Unidata software packages can take advantage of containerization technologies like Docker. Lay the groundwork for a Unidata container image repository.

  • Develop new data access web services in the THREDDS Data Server (TDS)

    Work with the THREDDS developers to extend the set of data access web services available through the TDS.

  • Develop optimization schemes for selecting netCDF-4 chunking and compression parameters

    Implement a C API for optimizing access to big datasets by setting optimum netCDF-4 chunking (multi-dimensional tiling) and compression parameters. Write tests and demonstration code showing huge improvements possible when optimum chunking is used with datasets too large to fit in memory.

  • Develop IDV bundle/script library for use by the Unidata community

    Work with Unidata software engineers and scientists to develop and document a library of IDV bundles for use by the Unidata community.

  • Improve netCDF Fortran-2003 API

    Improve netCDF Fortran-2003 API to exploit new features of the language, such as portable derived types.

  • Develop simple netCDF utility tools

    Write a few simple netCDF utility tools that replace the overloaded options and complexity of current ncgen and ncdump tools. For example, a tool to generate Python, C, or Java code to read or write an input netCDF file (without using CDL) would be useful.

  • Develop THREDDS Data Server (TDS) capability to easily capture data for a case study

    Work with the THREDDS developers to add a TDS service to capture specified datasets for a given space and time extent.

  • Have other ideas for how to help the Unidata Community? Let us know!