Notes on Development Installs

Most of my colleagues and I on our engineering team for our initiative at work (a designer, software developer, sysadmin, and me – the wildcard draw four) just received new laptops last week, and Daniel (the sysadmin) and I have been putting together some instructions on setting up the development environment and software. We get to finally get them off Snow Leopard and onto Lion. Just in time for Mountain Lion.

I’ve been using my personal laptop for work ever since I started back, and that one had been done via a migration, so there’s years of built up tools and apps, so starting new gave me a chance to document all the apps I use for work (either free apps or ones I’ve bought)

A note about our development

We are a primarily a Ruby on Rails shop for all our development – though we have a few WordPress/WordpresMU installs, and a Drupal install that is used as a content creation system for published content to (a Ruby on Rails app) and a content management system for administrative documents. You can see all our projects in GitHub.

We follow a “develop local” model, all our apps have to work locally (this seems old hat now, but we were doing it before it was fashionable, and you’d be surprised/saddened at how many higher education shops develop “on the server”). We use Pow for serving the rails apps, and with one exception (me), most use MAMP for serving PHP and using MySQL. We are considering using vagrant and setting up an Ubuntu VM to match our server configuration, but aren’t there yet.

We deploy to either a demo or development server, and depending on the app, we may have a staging server as well. We use capistrano for deployment, even for our Drupal and WordPress deploys. We log deploys and announce them in our campfire chat room using an add-on to capistrano we wrote.

We use RVM to manage rubies and gemsets. I tried rbenv, and maybe it’s the sysadmin in me, but I didn’t like it as much – while I know there’s an add-on that does “gemsets” for rbenv, I like the native gemset support. I still think RVM is easier to get setup and going in a team, and Jewelry Box can make it even easier. Still, I’m definitely looking forward to Tokaido.

That’s us in a snapshot, here’s our checklist for the system installs:

Lion Notes

  • FileVault (full disk encryption) should be enabled, totally the right thing to do.
  • Natural scrolling is the default: you probably want to change this.
  • Apple doesn’t include Flash, which is a good thing for the most part, but you’ll probably need to install it for some things, like auto-tuned Dale Jr. videos

SSH Notes

Make sure to get your ssh keys (~/.ssh/id_rsa and ~/.ssh/ off your old macintosh (and copy the ssh key password from the keychain on your old Macintosh)

Add the following to your ~/.ssh/config file – this will help keep ssh connections open on remote networks, particularly wireless networks:

Host *   ServerAliveInterval 120   ServerAliveCountMax 3  

Getting your compile on

(steps numbered because order matters)

  1. Download the OSX GCC Installer (Prebuilt, 10.7 Lion)
  2. Install Xcode tools (version 4.3 from the Macintosh App Store)
    • Install command line tools inside of Xcode


Installation information

Install the following (brew install blah)

  • wget
  • libxml2
  • libxslt
  • imagemagick
  • mysql

other optional installs

  • git
  • pv (useful for database refresh scripts)
  • r (will need gfortran)

Getting your git on


Installation information

  • Need to have 1.9.3 and REE
  • per-app gemsets (rvm use rubyversion@appname --create)
  • create .rvmrc file in app directory (rvm use rubyversion@appname --create)
  • install bundler (unless you add it to the global gem set)
  • install powder (if not in the development block of the Gemfile already, which it should be)
  • Setup a proper build for nokogiri: bundle config build.nokogiri --with-xml2-include=/usr/local/Cellar/libxml2/2.8.0/include/libxml2 --with-xml2-lib=/usr/local/Cellar/libxml2/2.8.0/lib --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.26
  • bundle install
  • Jewelry Box (gui for RVM)



if using MAMP, use custom my.cnf (Applications/MAMP/conf/) to allow importinglarge db’s (darmok, create). Note: you will have to create this file, it doesnot already exist. Sample my.cnf and instructions on how to modify apache config to only listen on localhost – Daniel’s gist

Install the timezone tables:

/Applications/MAMP/Library/bin/mysql_tzinfo_to_sql /usr/share/zoneinfo/ | /Applications/MAMP/Library/bin/mysql -uroot -p mysql

Optional/Advanced: Brew MySQL Install

Please note: means you have to do your own PHP environment somehow, alsodoesn’t include a database management tool – you’ll want something likeQuerious or MySQL workbench


Installation information

  • use powder gem to link the app (see RVM above)
  • powder open will open the default browser with “”
  • Pow 0.4 now includes an option for accessing the app from other systems. (not yet explored by Jason and Daniel)


Jason’s List of other Useful Applications

Macintosh App Store (MAS)

  • Evernote: (free – yearly service subscription available)
  • Skitch: (free)
  • Patterns: regex tool ($2.99)
  • Growl: ($1.99)
  • HTTPClient: debug HTTP requests in a GUI ($1.99)
  • Reeder: GREAT google reader “client” – also available for iOS ($4.99)
  • Meme Generator: (free)
  • Pixelmator: nice alternative to Photoshop ($$$) for simple things ($14.99)

Other applications (may be available in MAS as well)

  • Mailplane: GREAT front-end for gmail ($24.99) (also in MAS)
  • Alfred: App Launcher (free, has $ addon) (also in MAS)
  • Adium: IM client (free) – see also Xtras
  • Propane: nice campfire client ($20)
  • 1Password: GREAT password manager ($49.99) (also in MAS) particularly useful when combined with Dropbox
  • Querious: nice mysql management tool ($29)
  • Tower: nice git gui ($59 – I got it on sale, not sure I’d have leaped in at $59)
  • Fluid: create site-specific browsers (free/$4.99 gets extra features)
  • RStudio: GREAT front-end to R (makes using R approachable) (free)
    • Note: if using brew version of r: ln -s "/usr/local/Cellar/r/2.15.1/R.framework" /Library/Frameworks

Other tools

  • Zsh (using “Oh My Zsh”)
  • Pry
  • Linking to dotfiles in dropbox

Keynotes that matter

I absolutely love the O’Reilly OSCON conference. It is one of the few conferences that align technology and passion in a direction that lends itself to meaningful change – both in the technologies themselves, but in how those technologies are applied. Very rarely at a conference are you going to hear about the technical issues parsing local government data sources in one session and the guts of Node.js in the next.

Last year, I came away completely inspired by the voices in the keynotes – particularly Eri Gentry and Ariel Waldman in the regular OSCON keynotes and Steve Yegge in the OSCON Data keynotes. Each focused on real problems, real open source and things that were “stuff that matters” as Tim O’Reilly himself exhorted of the community just a few years ago.

Maybe their keynotes were an ideal alignment for me, the intersection of science, and health, and software, and data. Maybe I’m just a year older and more jaded.

But this year the keynotes are so far nothing like last year. While the keynote that Dave Eaves presented resonated with me, as well as most of Tim O’Reilly’s message – the rest of the keynotes seem like empty sales pitches for the sponsor organization at best.

In summary – “We are [HP | Microsoft | Bluehost] and we love open source, and we love you, and most of all we love ourselves”.

While Mark Shuttleworth at least presented tools and real things that Canonical was actually doing – even that doesn’t seem like it belonged at the level of a keynote.

And that’s at best. At worst, it’s a mirror of the problems endemic to our industry, a celebration of rock-star engineers job-hopping every few years or less to yet another valley company to figure out how to “monetize” data, software, and people, and the companies that embrace it.

Dear keynoters: you are talented speakers and brilliant minds in leadership roles in technology. You are speaking to people who can, have, and will change the world. You have a chance to make a difference on that stage. Use it.