Best Practices#

Helpful Templates#

Thinking about starting a new project? It can be helpful to use a template so you are not starting from scratch.

Package Template#

Anderson Banihirwe (@andersy005) created a template repository for packages, which includes automated code-quality checkers. This can be a helpful place to start.

Analysis Repository#

Within the Pangeo community, Julius Busecke (@jbusecke) created the “Cookiecutter-Science-Project” repository which serves as a template when you are working with Jupyter notebooks. This repository walks you through setting up your repository and syncing it up through Github.

Software Design#

4+1 Software Architecture Model#

Currently, the ESDS group is experimenting with design documents for the next generation of diagnostics package. This is an example of the “4+1 View Model of Software Architecture” with an application to the diagnostics workflow. Feel free to use this example as a template!

Zen of Scientific Computing#

A group of researchers and software engineers put together a helpful guide for developing scientific software, detailing the nuances of working Python stacks and the difference between daily use cases and more foundational libraries.

Managing Computational Resources#

NSF NCAR HPC Best Practices#

If you are using NSF NCAR Computational and Information Systems Lab (CISL) resources such as Casper and Derecho, this is a great place to start with learning to make the most of your computing and storage allocations.