Slimming down in 2012 (but just my comics subscriptions)

I made my first trip out to Game On! Comics the other weekend. When I last posted about comics, I was thinking about quitting the “traditional” print comics world entirely. I haven’t done that, but I did cut down my subscription list.

First: the store is great– Louis and crew have created a really cool space there. There’s more room, and more color than the late, lamented Nova Comics. The location is bothersome for a number of reasons (and I don’t just mean distance-from-my-house this time), but it’s not worth getting into that.

Here’s what I was reading (Thanks to Dave at Game On for sending me my then-current list):

  • BATMAN INCORPORATED
  • DMZ
  • FABLES
  • FELL
  • GRAVEYARD OF EMPIRES
  • LIL DEPRESSED BOY
  • MEMOIR
  • NORTHLANDERS
  • SCALPED
  • SWEET TOOTH
  • UNWRITTEN

After taking a two or three month break, I found that I just didn’t miss most of them.  It’s like that moment in a book, movie, or show where you realize that you don’t really care what happens next. You aren’t invested in the characters or stories. You could keep reading (or watching), or you could get that time back and spend it in a way more productive or enjoyable.

The second path is usually best. Here is what I’m reading now:

Fell is technically on the list, as well– though it’s currently on something of a hiatus due to events in Ben Templesmith’s life.

Introduction to the Culinary Arts at the Workhouse: Week 1

I’m enrolled in a 6-week cooking class at the Lorton Workhouse. Our first class was Monday.

I expected the classroom to be a temporary space. The workhouse map shows a “culinary arts center” that isn’t yet complete, so I was prepared for this to be a makeshift operation.

And boy, is it makeshift:  less a kitchen or classroom than a bunch of folding tables and portable gas and electric burners in the lobby area of one of the Workhouse buildings. The pantry and most of the equipment are crated and carried back and forth between class and the chef’s home.

I’ll admit this was off-putting at first, but Chef Kathleen Linton does a great job making it all work. I got more out of the 30 or so minutes we spent talking about knife skills and specific cuts than I did from Culinaerie’s 3-hour “knife skills” course, mostly because of the personal attention: In a five person class, you get a lot more interaction with the instructor.

Beyond the knife skills, it was good to see how a roux is supposed to come together, how to moderate the thickening it provides, how to produce a béchamel, how to that turn it into a pretty delicious cheese sauce, and some tips for shopping for and cooking with olive oil. Most of this stuff comes down to trusting the evidence of your senses– but seeing it done (or having someone knowledgeable help) is a big deal. It’s like calibrating those senses so you can trust them.

The food we produced was great. Our first menu was:

  • Garden Vegetable Soup
  • Cheese Scalloped Potatoes
  • Ratatouille
  • Pan Fried Chicken and Spinach
  • Apple Tarts

I’m not sure it’ll happen in the next six weeks, but (with the help of a corporate donor) a real teaching kitchen is apparently coming soon– it’s exciting that the Workhouse folks are investing in the cooking program.

Next Week: More sauces!

Github + EC2: Integration Opportunities

Before the holidays, I was tasked with creating the first iteration of a tool that allows our developers to spin up their own private servers, in our Amazon Virtual Private Cloud. In my first sketch of the idea, I called it “Thinglauncher” and (to my delight and coworkers chagrin) they name has stuck.

Meanwhile, we are nailing down our installation of Github Enterprise– a behind-the-firewall version of Github.com, with all the things that make Github useful: code repositories, gist, wiki’s, and social features. Trust me, It’s awesome.

What follows are some ways the two systems work together.

Authentication

One of my first thoughts was: this new launcher tool should use Github as an login mechanism– it avoids two kinds of authentication pain that I’ve dealt with:

  • Making users remember a new password
  • and the alternative, making me figure out how to authenticate against something like  ActiveDirectory

Win, win. See also the “oauth as identity” section of How Github uses Github to build Github.

Key management

When you create a (linux) EC2 instance, you specify an SSH public key, which gets added to the authorized_keys file on the newly created server. As long as the corresponding private key is installed on your workstation, you’ll be able to log in.

Github uses SSH keys as well– once you add your public key to your Github account, you’re able to push and pull code from any workstation that has your private key. The Github API also exposes your SSH keys. This means that an app that authenticates against Github, can also grab a users public keys via the API. If what your app does is launch EC2 instances, the key can be grabbed from Github and used to launch the EC2 instance. You’ve allowed your user to log in to the newly created instance without making them create a new password or new SSH key.

More key management

If we are in fact creating servers for development work, then the servers need to be able to push and pull code to and from Github. We could expect users to do the whole ssh-keygen dance for each server, or to remember to upload their private key to each server they create. No fun, right?

After some digging, I found a handy recipe for generating new key pairs in Python. The first time a user creates a server, a new key is created and stored behind the scenes. The server template (What Amazon calls an “AMI”) we’re using includes Ubuntu’s CloudInit bootstrapping system. The new private key is installed in the users SSH configuration, and the public key is added to the users list of keys in Github. Users can log in to the new server, and push and pull to github just like they can on their local machine.

Code checkout during provisioning

There’s not much magic here: When the user creates a server, they can specify a repository and branch name that get checked out to the users home directory on the new server.

Server configuration in git

This part is a little magic. If the repository you checkout includes a file called ‘fabfile.py’ in the root folder, it assumes it’s a Fabric script, and runs it against your new server. This can be used to further customize the server for the code you want to run. For example, if you’re developing a wordpress theme, Fabric can be used to install PHP, MySQL, the libraries that integrate the two, wordpress itself, and import a wordpress database.

I hate to use the word “synergy”, but…

It was striking to me how all these nice integration points appeared. Whenever I scratched my head about how to solve a particular problem, the answer was usually “use this feature of Github” or “that feature of EC2″. I’m sure there are more that I haven’t discovered, yet.

This should all get less abstract, soon: we’re working on our process and policies to open source (really, public domain) all of our code, and releasing Thinglauncher is on the roadmap.

No more “bookmarked”

I’ve turned off the automatic weekly “Bookmarked” post as of today.

There are some new posts in the works, so things won’t be quite so barren around here for long.

While you’re here, dig the new slogan: I think it succinctly captures what I want to do with ye olde blog this year: create a space for me to geek out on both tech and food topics.

ifttt.com is how the internet should work

If you had reason to divide technology users into two groups, those who are curious enough to look behind the curtain and figure out how things can be made to work better, and those who aren’t– I can think of no better line than the humble email filter. Tinkering with email rules isn’t rocket science (or even computer science), but it marks a person as belonging to a certain tribe. Lets call them People Who Think The Computer Should Be Working Harder.

ifttt.com (If This Then That) is for people who think the Internet should be working harder. It’s basically the same principal as email filters: instead of applying rules to incoming emails, you assign them to particular triggers– which could be a Craigslist search, incoming Facebook messages, new posts to an RSS feed, photos on Instagram or Flickr, videos on YouTube or Vimeo, and any of dozens of other triggers– even email. Triggers are grouped by source, called a “channel”.

Ifttt  Channels  20111207

Most of the channels can also be the destination of an action. For example, here are some tasks I use:

  • Send posts from the CFPB blog to Instapaper (I figure it’s probably good practice to read the stuff my employer publishes)
  • When ever there’s a new post to the official Django blog, email me– these are most often security updates.
  • Longreads is a great source of good (and, long) articles. I like sending those to Instapaper, too.

As you can see, I’ve barely scratched the surface– I could be doing a lot more with this. Here are a few some contrived examples, mostly for fun:

  • Post to Twitter, every time I “love” a track on Last.fm
  • Whenever I post a new Facebook status, post it to LinkedIn as well. Or Tumblr. Or Posterous. Or WordPress.
  • Every time I send an email attachment to a certain address (provided by ifttt), save it to my Dropbox account.
  • Send me an email whenever someone is selling a particular item on craigslist.

Explore it yourself, and I think you’ll find several examples of ways it can make the web more useful for you. This is one of those sites that I wish I could pay for. What they do is so useful, I hope they find a way to make it sustainable. It’d be a shame for it to go away.

Help kids learn to code

CodeNow is a DC non-profit that teaches kids to code, and they need donations. It seems like a good program:

The Five Parts To Our Program:

1) Weekend Training: Each student selected participates in one weekend training. On Day 1, students will learn basics in programming with Hackety Hack, an open source program teaching basics in Ruby. On Day 2, using Lego Mindstorms, (robotic kits made out of Legos), students works in team to build and program robots.

2) Projects: After the weekend training students will complete online assignments and projects to hone their skills

3) BootCamp: Students will attend a bootcamp from December 27-30, during which they will receive intensive training in the programming language Ruby.

4) Netbooks: Each student who completes the weekend training and bootcamp will receive a netbook. We feel it’s important for students to be able to practice their skills. The netbook is a tool which will allow them to do so.

5) Alumni Network: All students who complete the trainings and bootcamp will be invited to join our Alumni network where they will receive mentoring, assistance finding internships, and invitations to attend hackathons and other events.

 

 

#foodfail: Peanut Butter Cookies

After I had a few Ratio-driven successes under by belt, I had an idea: The Maximum Peanut Butter Cookie.

Ruhlman describes the “essential” cookie as 1 part sugar, 2 parts fat, and 3 parts flour. I’ve made this, and it’s OK.  Somehow, I got to wondering how it could be adapted to a peanut butter cookie. I stayed up late and actually did the math: I came up with a recipe where peanut butter provided all of the fat and most of the sugar. I made no other changes and added no other ingredients.

I thought this was brilliant. I gave it a name (see above). It was a few days later that I actually got around to trying this crazy thing, but that night I went to sleep convinced of my own genius.

The “cookie” it produced was awful. Imagine a lump of peanut butter in your mouth, with flour (making it drier) and being baked (even drier). You’re thirsty just thinking about that, right?

If I try this again, I think I’ll use a liquid for the additional sweetener (honey, perhaps), lower the amount of flour (to account for all the other “stuff” in a serving of peanut butter that is neither fat nor sugar: the peanut solids and whatever else), and probably add some eggs to soften and leaven it a bit.

 

Basics

I’ve been absorbing a lot of information about food in the last year(and actually cooking too!), but there a lot of basic things I have yet to try or learn.

I’ve read On Food and Cooking, but (until last week) had never made mashed potatoes. I’ve read Ideas in Food, but had never made gravy– and gravy is perhaps the best “idea in food” ever.

Preparing a traditional Thanksgiving dinner was educational, then. Here’s the menu we ended up with (including what Patty & I made, and things brought by family) :

  • Turkey
  • Stuffing
  • Mashed potatoes
  • Brussels sprouts
  • Strawberry Salad
  • Gravy (!)
  • Cranberry applesauce
  • Sweet potatoes
  • Green beans
  • Pumpkin Pie
  • Chocolate-chip pumpkin bread

There were no major disasters, but I’m already plotting The Next Turkey. I would have liked the bird to have come out with crispier skin– I’m not sure whether to blame the electric roaster, the brining process, both, or neither. I was happy that I took Ruhlman’s advice to make turkey stock ahead of time. Otherwise there would have been no gravy at all– there were no juices in the pan after the turkey was done.