27" iMac

I ordered the 27″ i7 quad core 2.8GHz iMac last week. It still hasn’t shipped – the order status still says “Ships: November”. A lot of people who ordered them earlier are starting to receive them, and from early reports, the performance is outstanding.

For the last few years, I’ve been using laptops with 15″ or smaller screens & speeds of 2.5 GHz or less exclusively, so this will be a nice upgrade. I’m really starting to feel the limitations of the MacBook Pro when running a Windows 7 VM and trying to do useful work like XCode builds in OS X with 4GB of RAM.

I’ll be keeping only the 13″ MacBook, since I prefer it to the 15″ for traveling.

Screen shot 2009-11-17 at 9.45.18 PM.png

Parallels still beats VMWare

Parallels Desktop 5 and VMWare Fusion 3 were both released in the last week, and as usual I tried both. I find that Parallels is noticeably faster running Windows 7, and it doesn’t slow down my MacBook Pro like VMware does.

When running a Windows 7 VM with 768M RAM allocated, VMWare uses 1GB of physical RAM and at least 20% CPU most of the time. Parallels uses around 632M and almost no CPU time when idle.

Parallels Coherence mode still looks a lot cleaner than VMWare’s Unity. Parallels starts up cleanly in Unity, while VMWare can’t switch to Unity until the virtual machine is fully booted & the VMWare tools are loaded. Dragging windows in Unity tends to be ugly, with desktop artifacts appearing, while dragging seems faster & cleaner in Parallels.

Parallels 5 adds a new crystal view, which resembles Coherence plus it makes the Parallels application disappear completely, with an icon added to the menu bar that lets you launch Windows applications.

Choosy is even more awesome than I realized

I use Choosy so I can switch between browsers easily. Instead of having to set Safari, Firefox, Google Chrome, or some other browser as my default, if I have one browser open, links will automatically open that browser. If more than one browser is open, Choosy will let you pick which one to open a link in.

Today I discovered that it’s even more awesome than I realized: It not only lets you choose Mac OS X browsers — it also supports Windows browsers running under VMWare Fusion 3 (I haven’t tried it with Parallels yet, but I suspect it will work as well). If you have both a Windows and Mac OS X browser open, Choosy will show both of them in its menu and let you open links in either one.

The 27" iMac looks very tempting

I’ve been using laptops exclusively for several years. I now have both a 13″ aluminum Macbook, which I bought late last year, and a 15″ unibody MacBook Pro, which I won from DriveSavers at Macworld Expo earlier this year. I use the 15″ as my desktop system at home, since it has better graphics performance and a nicer screen for editing photos, but I prefer the 13″ for traveling, since it’s lighter, more convenient, and has better battery life.

Although the 15″ is an excellent system, it’s still a lot less powerful than a dedicated desktop machine like the new 27″ iMac. In particular, I’ve been getting very annoyed with the slow virtualization performance, since it’s limited to 4GB RAM and I need to run both XCode and a Windows virtual machine, as well as Mail & Safari which max out the RAM.

I’ll most likely get the i5 quad core iMac and upgrade the RAM to 8GB.

The Magic Mouse is a winner

I’ll cut right to the point: the Magic Mouse is the best mouse I’ve ever used. The scrolling is so smooth & effortless that when I first started using it, I kept scrolling around just to admire how nice it feels. Unlike the Mighty Mouse, the right click works easily and I’ve never had any false clicks. I haven’t had much of an opportunity to use the swipe gestures, since not too many applications support it. The only feature I miss is the middle button click. I suspect it may be possible to implement it in a future software upgrade.

Front View Side View

The Magic Mouse requires a software update, which is available from Apple’s download page. Without the software, none of the gestures work and the mouse movement is erratic. The new mouse preference panel lets you enable the various gestures.

Magic Mouse Preferences

I ordered the Magic Mouse as soon as Apple announced it, and it finally arrived today. The first thing I noticed was the minimal packaging. The shipping box contained only the small plastic box with some padding instead of the usual big cardboard boxes. Unfortunately a bit of sticky tape on the bottom left a bit of residue on the mouse, although it came off easily.

No box inside! Side
Sticky tape on bottom Batteries included!

See the full unboxing gallery here.

Add TFS Work Tickets to OmniFocus

At work we use Microsoft Team Foundation Server to assign tasks & work tickets. When someone assigns me a work ticket I get an email with a subject like ‘so and so assigned you work ticket 12345 – fix some bug’. It would be really useful if they could be automatically added as a task to OmniFocus.

I looked at OmniFocus’ mail rule for creating new tasks, but unfortunately it won’t work with TFS work ticket notifications because it requires a specially formatted email.

Using that script as an inspiration, I came up with this script that creates a new task with the message linked to the note field. I’m sharing it just in case anyone else finds it useful.

First you’ll need to create a mail rule that filters messages matching the criteria of the subject ‘assigned you work ticket’ and the TFS notification email address as the sender.

Mail Rule.jpg

Here’s the mail action script:


using terms from application "Mail"

	on process_message(theMessage)
		tell application "OmniFocus"
			log "OmniFocus calling process_message in MailAction script"
		end tell
		set theSubject to subject of theMessage
		set p to offset of "Work Ticket" in theSubject
		set theSubject to characters p through end of theSubject as string
		set theText to "message:%3C" & message id of theMessage & "%3E"
		tell application "OmniFocus"
			tell default document
				set ctx to context "Work"
				make new inbox task with properties {name:theSubject, note:theText, context:ctx}
			end tell
		end tell
	end process_message

	on perform mail action with messages theMessages
		try
			set theMessageCount to count of theMessages
			repeat with theMessageIndex from 1 to theMessageCount
				my process_message(item theMessageIndex of theMessages)
			end repeat
		on error m number n
			tell application "OmniFocus"
				log "Exception in Mail action: (" & n & ") " & m
			end tell
		end try
	end perform mail action with messages
end using terms from

I switched to OmniFocus

I’ve gone back and forth between Things and The Hit List for a while, but I was never completely happy with either one of them.

I like THL’s user interface and flexibility to set up nested lists & folders, but I’m frustrated with the lack of an iPhone app, which I find essential.

I use Things just for their iPhone sync, but I’m frustrated with its inflexible structure and lack of folders or outlines with subtasks.

After trying the Mac app for a while, I finally took the plunge today and got both the Mac & iPhone versions of OmniFocus. Like The Hit List, OmniFocus allows complete flexibility to create outlines of subtasks and it goes even further by letting you promote a task to a project. iPhone sync is even better than Things, which can only sync over the local network. OmniFocus syncs via Mobile Me, so you don’t have to be near your computer to sync with it.

OmniFocus is more expensive than the other applications but it’s well worth the price if you want complete flexibility and iPhone support.

How 1Password extension loads in 64-bit Safari in Snow Leopard

Kevin Ballard explains how 1Password is able to load an extention into Safari when running in 64-bit mode:

When Cocoa was introduced, one of the behaviors that every Cocoa application automatically acquired was the loading of Input Managers. These Input Managers were intended to allow developers to extend the text input system of OS X in ways that the system did not provide by default. However, these Input Managers were really nothing more than Cocoa bundles that got loaded by every single Cocoa app at launch. This means that it was very quickly abused to become a general plugin mechanism for applications that do not natively support plugins (such as Safari). In recent OS updates, Apple has been deprecating this mechanism, and now in Snow Leopard it’s completely gone for 64-bit apps.

Luckily, the smart folks who make 1Password came up with a solution for their upcoming 1Password 3.0 (which is in public beta right now).

AppleScript is a rather old technology, first introduced in System 7. It is a human-readable scripting language that can control any application that implements support for it, along with a slew of system functions. Under the hood, it sends Apple events to actually talk to each process.

Scripting additions are bundles that provide additional functionality to AppleScript, generally by installing Apple event handlers or doing Apple event data coercion.

The thing about scripting additions is that they will be potentially loaded by any process on the system. Generally, they get loaded into a process that attempts to use an AppleEvent that the scripting addition handles.

The ability to load a scripting addition into a target process simply by sending it an Apple event is the key mechanism that allows us to restore the old Input Manager functionality. And this is exactly what 1Password does. 1Password includes a scripting addition that handles the ONEP/Load Apple event with a context of “Process”. This handler takes a single argument, the path to a given bundle, and it loads that specified bundle into the target process. The last component is a background daemon called 1PasswordAgent. This daemon sends the ONEP/Load Apple event to Safari immediately after Safari is launched, causing Safari to load the 1Password WebKit plugin.

This actually sounds a lot cleaner than the input manager hack. I hope Apple doesn’t disable this in the future. Hopefully it will also provide a mechanism for 1Password to work in Opera & Google Chrome.

Staying in sync with Dropbox

For a long time I was using Windows Live Sync to synchronize a few folders between my MacBook & MacBook Pro, however it no longer seems to work in Snow Leopard.

I was also using Dropbox to create a shared folder although I wasn’t really using it as a synchronization tool. Dropbox only lets you share a single folder rather than selecting any folders you want to synchronize.

What I didn’t realize is that you can put a symbolic link to another folder inside your dropbox folder to synchronize it. A finder alias will NOT work; you have to use the command ‘ln -s’ in the terminal to create a symbolic link. Thanks to that little known feature, I’m able to use it to synchronize my entire documents folder, my source code, and several other folders.