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
- 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/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)
- Download the OSX GCC Installer (Prebuilt, 10.7 Lion)
- Install Xcode tools (version 4.3 from the Macintosh App Store)
- Install command line tools inside of Xcode
Homebrew
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
- Use Apple’s distribution or install via brew
- Setup (GitHub’s instructions)
- GitHub’s great GUI
RVM
- 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)
MAMP
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
sudo mysql_install_db –verbose –user=_mysql –basedir="$(brew –prefix mysql)" –datadir=/usr/local/var/mysql –tmpdir=/tmp
- See Superuser Thread for using the MySQL preference pane with the brew install
- Jason’s my.cnf for homebrew: https://gist.github.com/3099049
- /usr/local/var/log/mysql/ and /usr/local/var/run/mysql/ need to be created and chown’d to _mysql
POW
- use powder gem to link the app (see RVM above)
- powder open will open the default browser with “http://appname.dev”
- Pow 0.4 now includes an option for accessing the app from other systems. (not yet explored by Jason and Daniel)
Applications
- Textmate: Get license from Daniel
- Might want to go ahead and start with Textmate 2.0
- Skype
- Browsers
- Browser plugins (please share your recommendations!):
- Safari: Click to Plugin (run #%@^^# flash on your own terms)
- Safari/Chrome: Google voice/video plugin for hangouts
- Microsoft Office — downloadable from NC State if you actually need it
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
- Note: if using brew version of r: