Hints that your program is too complicated

Posted in Uncategorized on February 22nd, 2010 by chrismear – Be the first to comment

Your interface needs a ‘Home’ button.

(screenshot from MacWorld’s preview of Microsoft Office for Mac 2011)

Seven Reasons why Fireworks Works for Screen Design

Posted in Uncategorized on February 21st, 2010 by chrismear – Be the first to comment

“Seven Reasons why Fireworks Works for Screen Design” — and, in particular, why it’s better than Photoshop or (heaven help you) Illustrator for this task.

I link to this mainly because it confirms my own internal reasons for preferring Fireworks, and thus makes me feel like less of a kook when people say, “Fire-what?”

Show me your dock!

Posted in Workflow on May 20th, 2009 by chrismear – Be the first to comment

Inspired by Grace Smith’s intimate dock exposé (found via the inimitable Lewis King), here is my dock.

chrismear's dock

Finder
I know some people bitch about the Finder, but I quite like it.
Safari
Switched to Safari when the very first beta came out, and I’ve always been happy with it. Flash sometimes slows it to a crawl (but ClickToFlash helps with this), but I still find it faster than Firefox for all my everyday browsing. I use Keywurl for quick searches.
Firefox
Firefox, along with the Web Developer, Firebug, Operator and YSlow add-ons, is my go-to-guy for web development.
NetNewsWire
Functional, traditional feed reading. Works for me, and I like that it syncs easily between my Macs and my iPhone.
Mail
After years of using a ‘real’ desktop mail client, I can’t bring myself to move entirely to a webmail interface, even if it is as good as Gmail. Mail gets on my tits several times a day with random hanging and slowness, but I can’t find a better native email client.
Adium
For IM on just about every network, except…
iChat
…which I use for my MobileMe account, Bonjour messaging and video/audio chat with other Mac nerds, and…
Skype
…which I use when I am forced to, and…
Colloquy
…which is hands-down the nicest, cleanest, most free and open-sourciest IRC client for OS X.
Tweetie
The best Twitter client I’ve found for my (admittedly fairly simple) needs.
Transmit
Another standard, for (S)FTP transfer, and for occasionally checking that my backups are actually ending up on S3. Doesn’t get the heavy use that it used to, now that most of my sites are deployed using Capistrano.
iCal
Does the job. Interface disaster. Syncs with MobileMe, though, which is why I keep using it.
Address Book
As with iCal, although slightly less of an interface disaster.
OmniFocus
The Big Daddy of GTD-style task management apps. Syncs with its iPhone version, which allows me to be terrified of my responsibilities on the go.
iTunes
Don’t see any reason to use anything else. And of course nothing else syncs with the iPhone properly.
Spotify
Fantastic for when you get that urge to listen to a track that you don’t actually have.
Last.fm
Fantastic for when you get that urge to listen to, uh, a bunch of related tracks. Also scrobbles all of my iTunes plays, to maintain my logging obsession.
Terminal
I’m constantly in the terminal, usually in a Screen session or twenty.
TextMate
Great programmer’s text editor. Sort of the de facto standard for Rails developers. Automates a bunch of stuff for loads of different languages/frameworks.
VMware Fusion
I have three VMs, for testing IE 6, 7 and 8. Running them all at once is a bit of tragedy, unsurprisingly. Also handy for Minesweeper nostalgia.
Fireworks
I’ve always used Fireworks for web design, mock-ups and interface elements. Never really got my head around Photoshop.
MacBreakZ
Great little app that I use to reduce the chances of getting crippling RSI at some point in the future. It monitors your keyboard and mouse activity, and gets you to take regular breaks, along with providing little stretches you can do.
FontExplorer X
Font management is a necessity once you have more than a few hundred of them. This is a free app from Linotype that makes a bit more sense to me than the built-in Font Book, and comes with plug-ins for Photoshop, Illustrator, etc. for automatically activating fonts as you need them. The latest version is a commercial app, but you can still download the previous version for free.
X11
I use a couple of X apps: gitk, for browsing Git repositories, and GnuCash for managing finances. This is the community-produced version, which is a bit ahead of the one that comes with OS X.
Applications, Downloads, Work and Personal documents
Nothing much to explain here. I use Fan view for the Downloads stack, and List view for everything else.
Knowledge Base
This is just a text document I keep synced between my machines that contains my personal list of command line incantations, notes on how to fix occasionally-occurring problems, and things like that. It has, of course, an Optimus Prime icon.
Trash
Usually empty.

My calendar syncing setup

Posted in Workflow on March 27th, 2009 by chrismear – 3 Comments

I post this here so that future generations may laugh.

Diagram of calendar syncing setup, described below

I’ve used Apple’s iCal to manage my calendars for as long as I’ve had a Mac. In the past few months, since I started using two Macs and an iPhone on a regular basis, I’ve been using MobileMe to keep them in sync. This was all grand, except that I couldn’t sync my iCalendar subscriptions since MobileMe doesn’t support that yet.

More recently, I’ve needed to start keeping a separate work calendar to share with my colleagues at Greenvoice, who also share their calendars with me. We use Google Apps at Greenvoice for calendaring, but unfortunately, neither iCal nor MobileMe plays particularly well with Google Calendar.

Enter BusySync. This is a great piece of software that, among other clever syncing things, includes the ability to seamlessly sync your calendars from Google Calendar with calendars in iCal.

So. I have a personal Google Calendar account. I subscribe to iCalendar feeds in this account, and I also subscribe to my work calendars through it. Then, BusySync syncs all of these to iCal on my personal Mac. MobileMe then syncs this to my work Mac and my iPhone.

It’s kinda ridiculous, and took a fair amount of initial setup, but it now runs seamlessly.

Stricter routes speccing in RSpec 1.2.0

Posted in Rails on March 16th, 2009 by chrismear – Be the first to comment

I just updated the Greenvoice codebase to use Rails 2.3.2 and RSpec 1.2.0, and got a flurry of failing examples from our routing specs. It turns out the routes_for helper in RSpec 1.2.0 is a bit stricter when it comes to request methods and parameters.

For example, here’s an example that worked pre-1.2.0:

route_for(:controller => 'friends',
          :action => 'request_friend',
          :user_id => 1).should ==
'/users/1/friends/request_friend'

This fails under 1.2.0, for two reasons. First, if your route doesn’t accept GET requests, you need to specify the method like this:

route_for(:controller => 'friends',
          :action => 'request_friend',
          :user_id => 1).should ==
{
  :path => '/users/1/friends/request_friend',
  :method => :delete
}

Second, it’s stricter about all parameters being strings; in this example, the user_id parameter was specified as a number, and it wasn’t matching. This is the final, passing example:

route_for(:controller => 'friends',
          :action => 'request_friend',
          :user_id => '1').should ==
{
  :path => '/users/1/friends/request_friend',
  :method => :delete
}

Update: Of course, if I’d bothered to look, this is all pointed out in the ‘Upgrade’ document that comes with RSpec 1.2.0.

Think of Cappuccino as a prototype open-source Flex

Posted in Ideology on February 25th, 2009 by chrismear – Be the first to comment

Ben Ward has written an excellent post about Cappuccino, the web application framework by 280 north that lets you “build desktop-caliber applications that run in a web browser”. He expresses a commonly-held criticism of Cappuccino, which is that it divorces developers from having to understand or appreciate the core web technologies and principles of HTML, CSS, JavaScript, openness and standards. In doing so, it encourages people to create web apps that simply don’t work well with the rest of the web, and simply ignore most of the last few years’ significant progress in accessibility, interoperability and more across the rest of the standards-based web.

I generally agree with most of Ben’s sentiments — I am a web developer first, and my experience with native GUI app development and Flash/Flex development run a far second and third respectively. However, even after reading many similar rants, I still can’t get myself angry about Cappuccino.

In my eyes, Cappuccino is an early, prototype of an open-source version of Flash/Flex, which is built on the standard web technologies of HTML, CSS and JavaScript. To me, this is a good thing to have around. There is increasing demand for desktop-style applications that are served over the web, and the idea of letting Adobe create another proprietary monopoly in this space scares me more than Cappuccino’s backward steps.

Yes, its standards-compliance and accessibility are pretty dire at the moment, but I believe that these are things that can be improved. It’s open-source, after all.