Nathaniel R. Stickley

Software Engineer - Astrophysicist - Data Scientist

The fmt Library

The standard options for formatting strings in C++ are, frankly, annoying and cumbersome. Yesterday, I found a nice solution: fmt (formerly known as cppformat). Fmt is a ligthweight library that allows you to use a syntax that is very similar to the string formatting mini-language supported by Python's str.format() function and the Rust language's formatting syntax.

POLL: Potential Summer Course

I am exploring the possibility of teaching a free course over the summer during the evenings or weekends, near my home. First, I need to find out if anyone would be interested. Here are some possible topics.


Somelight is a Python module that I wrote to assist in garden planning—particularly plant placement—by computing the daily sunlight exposure at a specified set of points. The user simply specifies the shapes of nearby objects that can potentially shade their garden and then uses Somelight to compute the sun exposure on a specified date (or range dates).

Euclid Software Development Notes

This page contains my personal notes on Euclid software development. I am putting concise summaries of the Wiki content and links to longer documents here, since the Euclid Redmine website is currently a bit of a rat's nest.

Frequently-Referenced Python

I am reserving this spot to put links to Python pages that I often reference. The things I put here are bits of syntax (for Python itself and library APIs) that are easily forgotten. For example, the string formatting mini-language is something that I have trouble remembering, so I refer to

Simple Deep Neural Network Code

During my final days at UCR, I developed an artificial neural net code in C++ in order to get a more complete understanding of deep learning. I used that code to make the following animation, which shows a very small artificial neural network learning a function.

Debian / Ubuntu System Administration Roadmap

This is intended to be a brief summary of the basic knowledge and skills needed in order to maintain the NebulOS cluster at UC Riverside, starting at a low level. More generally, this is a concise roadmap (or outline) for Ubuntu Linux system administration. In this roadmap, I will point you to resources that can be used to learn more. The purpose of this is not to explain everything in detail; it will merely get you started. Note that some of the things mentioned here are specific to Ubuntu or Debian-based operating systems, so this isn't exactly a general Linux system administration roadmap.


Wormhole uses the Linux kernel's inotify functionality to react to filesystem events. More specifically, it watches a directory and performs user-specified actions on any files that are moved into or written to the directory. Once the files are processed, the results are stored in another directory. Wormhole was initially developed to provide a means of automatically compressing files before they are transferred via NFS, and then decompressing the files after they have been transferred.

New Blog

When I was a graduate student, I started a research blog at my personal website, About one year after completing my Ph.D., I created as a professional profile / résumé. I will now continue the blog here. I may eventually import some of the old posts into this blog, but until then, readers can refer to for older posts.

Nathaniel R. Stickley