Workflow Recipes

The "recipes" in this group are all "procedural", meaning that they consist of a set of steps to follow rather than a particular bit of code to use. Some must be followed precisely as stated, and others just illustrate tools and skills you can mix-and-match as needed.

Some of these recipes include one-time-only steps that you should only need to do once, or perhaps once every so often, mixed in with steps you'll do every time you follow the recipe. I'll try to be clear about which steps are once-only.

Overall, these recipes — or rather, the process of applying and getting comfortable with them — will familiarize you with key elements of the course "tech stack": the GitHub website and our course "org" within it; Beskar, the Linux server you'll use for all your coding work; JupyterHub, the browser-based coding environment that will be your "front door" and primary workbench on Beskar; and a bit of the behind-the-scenes plumbing on Beskar.

The Recipes

Here are some recipes for basic processes required to use the course "tech stack" to get, do, and submit assignments. (It is very much not an accident that these same processes are widely useful in computational physics, and well beyond it into all kinds of software development work. 😏)

  • Find and Fork a Repo on GitHub: I want to make my own copy of a course level repo (the "package" that assignments come bundled in) so that I can start working on it.

  • Manage Files on Beskar: I want to view and/or reorganize the files and folders in my personal file space on Beskar.

  • Authorizing with GitHub from Beskar: I want GitHub to allow me to access my repos from Beskar without having to type in a password every time.

  • Clone a Repo to Beskar: I want to copy my fork of a course level repo from GitHub to Beskar so that I can start working on it in JupyterHub.

  • Commit and Push Changes to GitHub: I want to make a snapshot of my work so far in case I need to roll back changes, and copy the current repo state back to GitHub for safekeeping.

  • Execute Interactive Python: I want to execute python commands interactively (perhaps to do a one-off calculation or just try things out).

  • Submit a Level via Commit-Push-Pullreq: I want to submit a repo (level) of completed work for course credit.

  • Update a Repo: I want to pull changes from the master repo into my already-existing fork of the assignment.