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 www.extension.org (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

SSH Notes

Make sure to get your ssh keys (~/.ssh/id_rsa and ~/.ssh/id_rsa.pub) 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

Homebrew

Installation information

Install the following (brew install blah)

other optional installs

Getting your git on

RVM

Installation information

MAMP

Download

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

POW

Installation information

Applications

Jason’s List of other Useful Applications

Macintosh App Store (MAS)

Other applications (may be available in MAS as well)

Other tools