Find us on GitHub

Our Infrastructure

Posted 2013-05-25 by Greg Wilson in Tooling.

As described in these posts from May, and October 2012 (which build on this one from April 2012), we use a complicated collection of tools to manage our work:

As you can tell, there are a lot of moving parts. Here are the steps involved in several common activities:

Write and publish a blog post.
  1. Create a new branch in your clone of the GitHub website repo.
  2. Write the post as an HTML file with a bit of Jinja2 boilerplate.
  3. Run the compilation script to make sure it's valid, properly linked, etc.
  4. Commit your changes, then send a pull request.
  5. Once it's merged, get an admin to log in to the server and recompile the public-facing version of the web site.
  6. Tweet about the post.
Set up a new bootcamp.
  1. Create a new event on EventBrite.
  2. (Optional) create a new mailing list for the instructors and helpers (so that they can coordinate with each other), and add the appropriate people to it.
  3. Create a new branch in your clone of the GitHub website repo, add an HTML page for the bootcamp, send us a pull request, and recompile the site on the server once it's merged (or in other words, do everything you'd do for a blog post). Our calendar and map are automatically populated using this data.
  4. Blog and tweet about the bootcamp so that people know they can register. (We forget to do this sometimes.)
  5. Create a new branch in the boot-camps repo to hold teaching materials.
  6. Add a page for the bootcamp to the gh-pages branch of that repo (because that's the way GitHub does things).
  7. Update the notes we keep in the private administrators' repo for each prospect to say that a bootcamp has been scheduled.
Wrap up a bootcamp.
  1. Add participants names and email addresses to the SQLite database file.
  2. Invite them to join the announcements mailing list (by uploading their addresses to a widget in Dreamhost's online control panel, which then sends the invites and handles responses).
  3. Write a blog post about how it went. (We sometimes forget this step too, or people don't send us a post.)
Add someone to the online study group.
  1. Add their name and email address to the SQLite database file.
  2. Add them to the appropriate mailing list (by hand, since Dreamhost doesn't let us use the Mailman API).
  3. Make them an author on the teaching blog.
Issue someone an instructor's badge.
  1. Add an entry to our SQLite database file.
  2. Add an includable snippet of HTML describing them to the web site, along with a photo of some kind, that we can use on the roster page.
  3. Add a line to the badge directory's index file (which handles everything else).

There are far too many manual steps in these lists, but I'm not sure what to replace it with. WordPress didn't meet many of our needs, and while customer relationship management packages like SugarCRM would be useful for managing bootcamp prospects and attendees, they don't handle blogging, event Registration, or badging.

It's tempting to build something ourselves, but that way madness lies we don't have the days needed to build, test, deploy, and maintain something. Even if we did, it always seems we'd be better off using them to create new lesson material or actually teach. We can't go on like this, but I honestly don't know what we should do instead.

comments powered by Disqus

You can review our commenting policy here.