xkcd comic tar
My work setup
There’s a really great website called Uses This that asks people what they use to “get stuff done.” I love this idea of workflow transparency, so in the vein of sharing cool ideas, I hope this information will be useful to someone.
Hardware: As of writing this (February 2018), I use a 2015 Macbook Air with an up-to-date OS and 8 GB of RAM. It’s a great little machine for plotting, but when I have to do any big data wrangling, I use supercomputers that live on the UC Irvine campus or in Wyoming.
Storage: For peace of mind, I keep everything important on Dropbox, and I shell out money for the 1 TB per year option. It’s completely worth it. My laptop was stolen in my 4th year of grad school, but thanks to cloud storage, I didn’t lose a thing (well, except the computer itself).
Terminal program: I’m on a terminal shell a lot, and I’m not a huge fan of the Mac Terminal, so I use iTerm2. I like it because it allows for a lot more customization than Mac’s version (the major selling point for me: split panes!).
Text editors: When I’m editing within terminal, I like vim, but my all-time favorite application-based text editor is the BBEdit (I find the free version to be everything I need). It’s simple and, for me, a much more efficient alternative to vim. I also like Jupyter Notebook for Python.
Color schemes: For color schemes, I like Solarized, which was designed to be slightly easier on your eyes than the standard, pre-packaged options: darks are less dark, whites are less white, but the contrast is still good. I use the dark color scheme in iTerm2 and the light color scheme in BBEdit. The colors on this site are also taken from Solarized.
Package managers: To keep things clean and working on my Mac, I like to use the Homebrew package manager. It’s great for keeping a lot of finicky dependencies in check, and I use it in conjunction with conda (from the Anaconda Python distribution).
In terms of data analysis, I’m a die-hard Python fan. It was the first coding language I learned (circa 2008), and I’m a huge proponent of open-source software.
Python distributions: My favorite way to keep the Python ecosystem on my computer healthy is Anaconda (available for Mac, LINUX, and Windows). I think it’s the best way to install, use, and maintain a Python distribution. The best part of Anaconda is that it can be installed in a user’s home directory, and it doesn’t require root permissions. For me, this means I can create my own clean Python installation on any computer I can log into, and I don’t have to worry about having administrator privileges or dealing with dependency issues.
Another major selling point of Anaconda is that it allows me to maintain working environments of different Python versions and other goodies like NCO and CDO (see below). In my experience, it’s now easier than ever to have multiple, complex software programs installed and working happily on a single computer. It’s #neato.
My favorite Python packages are:
- cartopy for making geo-referenced maps
- pandas for really simple manipulation of csv files and other common data formats
- xarray for a higher-dimensional version of pandas
- wrf-python for manipulating output from the Weather Research and Forecasting (WRF) model
- netCDF4 for messing around with NetCDF files
Useful tools for climate data analysis
Outside of Python, a few of my favorites include:
- ncview: Written by David Pierce at Scripps, this is a really lightweight way to view NetCDF files.
- NCO: Short for NetCDF Operators, NCO has a few really great tools to splice up NetCDF files and do quick calculations on them (even regridding!). This website out of the University of Washington has taught me almost everything I need to know.
- CDO: Short or Climate Data Operators, CDO serves as a really great complement to NCO.
- NCL: Short for the NCAR Command Language, NCL was developed by and for climate and weather scientists. I find it a bit clunky as a language, but it has a great support staff and a useful mailing list, and it’s good at regridding and interpolating data if you’re willing to summit the learning curve.
A final and useful fact: NCO, CDO, and NCL can all be installed using conda, and homebrew can install ncview. The days of annoying software dependencies are mostly over: wt!