The Focused MacBook Air

Knowing that the hard drive in my MacBook Pro will go at moment, I picked up a MacBook Air this week (13″, 1.8GHz, 256MB, 4GB).

In the process of setting it up – I’ve decided to make this new machine a focused, minimal, work, machine. Despite Migration Assistant – I want to start some new habits, not repeat old, bad ones.

So far this means:

  • Changing ‘Desktop’ color to ‘Sold Gray Medium’ (something I’ve done since 1997)
  • Changing ‘Appearance’ from ‘Blue’ to ‘Graphite’
  • Removing everything possible from the top menu bar (so far, only Spotlight & Flux remain – they won’t be removed)
  • Leaving only the Spotlight search and ‘arrange’ icons in the Finder window toolbar
  • Removing any casual app (iMovie, FaceTime, etc) from the dock
  • Auto hiding the dock
  • Installing Flux.app (does a great job of discouraging writing too late into the night)
  • Installing Quicksilver (Macs w/o Quicksilver are unusable – try it)
  • Installing Isolator.app (on by default, hide other applications by default)
  • Installing MenuBarFilter.app to make the menu bar much less prominent.
  • Not setting up email, IM, Skype, or any sort of communications app. Nothing. This is a creation machine – not a communication machine.
  • Not migrating over bookmarks or browser histories.

How to Automagically Sync Directories Across Multiple Macs with Git & Launchd

In an effort to minimize my downtime when the funny noises this MacBook Pro is making finally amount to something – I’ve wired up a git repository to OS X’s native launchd service. The git repository hold all of my active projects – whether development projects with their own repos, research projects, consulting project. Everything.

Right now, there’s a Mac mini holding the shared repo with a MacBook Pro and a MacBook Air pushing and pulling to it.

  1. Set up SSH keys the laptops and server (I like GitHub’s instructions)
  2. Set up the repo on the server
    mkdir active-projects.git
    cd active-projects.git
    git --bare init
  3. set up a repo on both client macs
    cd ~/Documents/Projects
    git init
    git add .
    git commit -a -m "initial commit"
  4. create the active-projects.sh backup script in your ~/Documents directory #!/bin/sh
    DATE=`date -u`
    cd /Users/YOUR-USER-NAME/Documents/Projects
    git pull origin master
    git add .
    git commit -a -m "Active Project Sync - $DATE"
    git push origin master
  5. make active-projects.sh executable chmod +x project-backup.sh
  6. Make the active-projects-backup.plist file for launchd

    < ?xml version="1.0" encoding="UTF-8"?>
    < !DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"
    "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <dict>
    <key>Label</key>
    <string>YOURNAME.rsync.backup</string>
    <key>LowPriorityIO</key>
    <true />
    <key>Program</key>
    <string>/Users/YOUR-USER-NAME/Documents/active-projects.sh</string>
    <key>ProgramArguments</key>
    <array>
    <string>active-projects.sh</string>
    </array>
    <key>RunAtLoad</key>
    <true />
    <key>QueueDirectories</key>
    <array>
    <string>/Users/YOUR-USER-NAME/Documents/Projects</string>
    </array>
    <key>WorkingDirectory</key>
    <array>
    <string>/Users/YOUR-USER-NAME/Documents/Projects</string>
    </array>
    </dict>
  7. save the active-projects-backup.plist file to ~/Library/LaunchAgents and load it up launchctl load ~/Library/LaunchAgents/active-projects-backup.plist
  8. Now, whenever a change is made in your ~/Documents/Projects – it will be automatically committed to the git repo and propagated to all computers connected to that repo. Like magic.

Thanks to culturedcode’s instructions for syncing Things with git & Launchd.

Planting Flying Meat Acorn Near Photoshop Elements Grave

Like most professional graphic designers, my career was measured in versions of Adobe Photoshop.

v2.5: I decided I wanted to be a graphic designer. The dad of a high school classmate was one. I went to talk with him about it. He worked out of his basement home office with a view of the lake, a room full of Apple gear, and telecommuted to Minneapolis. He launched Photoshop and showed me some of the crazy stuff he was doing with it. I left stunned.

v3: Spent far too long on the Photoshop Classroom-in-a-book tutorial as part of my least favorite college course – something about printing methods and preparing images for press.

v4: The first version I used in a professional environment auch auf Deutsche.

v5: Editable type, Multiple Undo. Those two features are reason enough to fall in love with it.

v6: Like Word 6, and Star Wars 2 – all the hope, promise, performance, and love of the previous version was an unsaved memory. This is the last full version I used and the beginning of my strained relationship with Adobe.

In 2002, my new digital camera shipped with Photoshop Elements v2 and then a couple years later, my scanner shipped with Elements v3. Aside from a few small omissions (inverse selection, select color range, etc), Elements was all the image editing horsepower I needed. It was my go to app, until I switched to the MacBook.

Elements never launched on the MacBook. It’d just bounce and bounce and bounce and bounce until I forgot why I opened it and Force Quit (a pretty good indicator of my image editing workload over the past 2 years).

After 15 years, my relationship with Photoshop officially ended today.

A while back, I downloaded Flying Meat’s Acorn and hadn’t opened it until this afternoon. While Elements was bouncing, I opened Acorn to take a closer look at a client website mockup. Instinct kicked in and I was pushing pixels, using the same key commands I remembered from Photoshop.

Before I hit Save the first time, I bought a license.

In addition to costing less than 1/10th the price of Photoshop, it was the most integrated web/desktop licensing experience I’ve seen. After completing the purchase online, a single click in the browser applied the license to the still running desktop app. Seamless. Fast. Amazing.

I’m one step closer to being Adobe-free and happier than ever.

How To Set Up Subversion, svnX, for TextDrive on OS X

I’m walking through the latest beta version of Agile Web Development with Rails 2nd Edition, specifically the new bits on deploying Rails apps. Capistrano – the preferred and recommended deployment utility. Thing is – Capistrano hinges on Subversion. Not something covered in AWDwR or appropriate to be covered. There’s plenty of other books on the subject.

Though, that left me stuck on how to set up a Subversion repository and access it.

I do my hosting at TextDrive, and in the interest of making this process just a hair simpler, I set up my svn repository there. Here’s how I did it:

  1. Set up repository on TextDrive domain in webmin.[your-server].textdrive.com:80.
    There’s a ‘subversion repository’ menu option right when you sign-in.
  2. Assign svn access rights to a TextDrive domain user.
    It’s a radio button and select list selection in their profile.
  3. Install Subversion on your local Mac – I did via macports
  4. Install svnX and in svnX preferences, confirm your path to svn in svnX (macports uses /opt/local/bin)
  5. Import your project into the TextDrive repository
    svn import /Users/your/local/path/to/the/app http://[your-domain]/svn/[repository-name]/ -m 'initial import' --username=[your-svn-account-name]
  6. Connect svnX to the repository
    Path: http://[your-domain]/svn/[your-repository-name]
    User: [your-svn-user-name]
    Pass: [your-svn-user-name-pass]
  7. Check out your project back on to your mac by clicking the ‘svn checkoutexport‘ button and picking a directory to put it (not your original directory). I created an /svn directory within my main project directory.
  8. Now, if everything worked, double-clicking the repository should load it up in a new window.
  9. I’ve got a weird proxy between me and the internet right now, so I’ll make sure the commits work tomorrow. UPDATE: Yep, it works. Yah!