Upgrade process

The first two attempts failed despite following the instructions to the letter. On the third attempt I left it on the familiar red-green-blue boot-screen a previous attempt had left it on and just ignored all the on-screen instructions and it flashed just fine.

Sync on the Mac

There is no official Windows Mobile sync software available on the Mac however Missing Sync for Windows Mobile is a capable, if somewhat temperamental, solution.

Version 4 is required for Windows Mobile 6 compatibility and is capable of syncing files, music, notes, bookmarks and photos as well as the expected contacts and calendars.

The initial problem is getting the Bluetooth to start syncing is a bit of a nightmare. The best advice is if it fails to do anything when you try to sync then delete both ends of the Bluetooth pair, reboot the Mac and follow the help instructions again.

Calendar sync problems

Everything was now syncing nicely with the exception of the iCal entries. The log gives the cryptic error:

Mark/Space Calendar Events: NSInvalidArgumentException [ISyncConjunctionFilter shouldApplyRecord:withRecordIdentifier:]: the record com.apple.syncservices:0845AD5F-A4C7-48D3-B1D3-B5809C9D000E should have an entity name, but instead it is {}

Over in iCal I couldn’t find anything looking corrupt but a quick Back up Database… followed by a Restore Database Backup… took care of it.

Apple tends to hide away unusual functionality in order to keep the user interface easy to use.

Here are a few hidden menu options that magically appear when you press the Shift, Alt or Ctrl modifier keys.

Standard menus

Apple menu

Alt > System Profiler… (Leopard only)

Alt > Shut Down (with no confirmation)

Alt > Restart (with no confirmation)

Alt > Log Off (with no confirmation)

Shift > Force Quit ? (current application)

File menu

Alt > Close All (in some applications)

Edit menu

Alt > Deselect All (in some applications)

Window menu

Alt > Minimize All

Alt > Zoom All

Alt > Arrange in Front

Finder

Finder menu

Alt > Empty Trash (no confirmation)

Alt > Secure Empty Trash (no confirmation)

File menu

Alt > Always Open With

Alt > Show Inspector (like Get Info but changes to reflect whatever you select)

Shift > Slideshow (Leopard only)

Shift > Add to Favorites

Shift > Find by Name… (Leopard only)

Ctrl > Open in this Window (Leopard only)

Ctrl > Get Summary Info

View menu

Alt > Clean Up

Alt > Keep Arranged By (Leopard only)

Go menu

Ctrl > Enclosing Folder in this Window (Leopard only)

Dock

Application running menu

Alt > Hide Others

Alt > Force Quit

Safari

Application menu

Alt > Private Browsing (no confirmation)

File menu

Alt > Close All Windows

Alt > Close Other Tabs

Bookmarks menu

Shift > Add Bookmark to Menu

Pages

Edit menu

Alt > Delete Page (no confirmation)

Insert menu

Alt > Custom Footmark…

QuickTime Player

Window menu

Alt > Show Movie Info

iPhoto

Photos menu

Ctrl > Hide Flagged Photos

Ctrl > Move Flagged to Trash

Alt > Clear All Flags

Events menu

Alt > Merge With Next

iChat

Buddies menu

Alt > Send Direct Message

Window menu

Ctrl > Logout Jabber List

Xcode

File menu

Ctrl > New Empty File

Ctrl > Close Project

Alt > Open in Separate Editor

Alt > Reveal in Finder

Alt > Show Inspector

Alt > Save All…

Alt > Save a Copy As…

View menu

Alt > Zoom Editor In Fully

Alt > Split View Horizontally

Project menu

Shift > Ungroup

Run menu

Alt > Step Into Instruction

Alt > Step Over Instruction

Find menu

Shift > Find Previous

Shift > Replace and Find Previous

Alt > Find Select Regex in Project (Damn useful!)

Alt > Replace All

OmniWeb

File menu

Alt > Save As…

Bookmarks menu

Alt > Open Bookmarks Window

Ctrl > Open All Changed Bookmarks

OmniGraffle Pro

Edit menu

Alt > Select None

Arrange menu

Alt > Bring Forward

Alt > Send Backward

Note: OmniGraffle Pro also toggles various toolbar buttons on Alt including lock/unlock and which side the utilities drawer slides out.

OmniOutliner & OmniFocus

View menu

Alt > Expand Line Completely

Alt > Collapse Line Completely

VMware Fusion

Virtual Machine menu

Alt > Start Up Guest

Alt > Shut Down Guest

Alt > Suspend Guest

Alt > Restart Guest

Colloquy

View menu

Alt > Show Inspector

Alt > Mark All

Window menu

Alt > Select Previous Active Panel

Alt > Select Next Active Panel

Camino

View menu

Alt > Reload All Tabs

Shift > Force Reload Page

Bookmark menu

Shift > Bookmark Current Page

Shift > Bookmark Current Tabs as Tab Group

If you like keyboard short cuts you might also want to check out KeyCue which can display all of an applications short cuts on in a single list when you hold down the Apple key including these key-modified options.

Heavy keyboard users may also want to head to the Keyboard & Mouse preferences pane where you can switch on full keyboard navigation allowing you to tab through all controls in a window. It also shows a number of useful key-navigation options you may not be aware of such as pressing CtrlF3 to select an item from the dock.

Preparing Fink

GrinGod gave me a heads-up that we’ll need to turn on the unstable packages to get the gems package and latest version of Ruby. The details are in the Fink FAQ but in summary:

fink configure

And choose the option for unstable trees. Then type:

fink selfupdate
fink index
fink scanpackages

And make sure you have rsync or cvs updating turned on to get the descriptions.

Ruby (via Fink)

Ruby is the language we wish to use and Fink currently supports 1.6 and 1.8 The following commands will install 1.8 for us and the Ruby Gems package management system:

fink install ruby
fink install rubygems-rb18

Rails (via Gem)

Now we need the Rails web framework which will be installed using gem.

gem install rails --include-dependencies

Choosing your web server

There are a number of options available again here including Apache, LightTPD and Mongrel. I wanted to give LightTPD a shot as it is on Fink and less of a beast than Apache. I tried various combinations but even having installed the lighttpd-fastcgi module I couldn’t get the fastcgi gem to do anything but spew errors so Mongrel it is.

Testing Ruby, Rails & Mongrel

A number of files should be created if Ruby & Rails are working correctly. Now type:

cd mytest
script/server

You should see a line stating Starting Mongrel listening at 0.0.0.0:3000

Open your browser of choice and navigate to http://localhost:3000

Choosing a database

You can go with MySQL, PostgreSQL or SQLite from Fink alone. I went with MySQL for a change.

MySQL 5.0

Whilst Mac OS X Server comes with MySQL the standard edition does not. Rather than use the Fink port I went with the official MySQL 5.0 package primarily to get the preferences pane that allows me to start and stop it as required however it also includes a helpful monitoring widget.

MySQL Tools

Run the MySQL Administrator application and connect to localhost on the default port of 3306 with the user name root and a blank password. Don’t forget to change the password by heading over to the Account pane.

Ruby with MySQL

Install the native Ruby to MySQL library to improve db performance by heading back to the Terminal window and executing:

Testing the database

As MySQL doesn’t include a sample database head into MySQL Administrator and into the Catalogs pane. Create a new database by pressing the + button and giving it the name mytest.

Select mytest from the left then choose Create Table… from the Table Actions drop-down list.

Enter the table name products then use the + button to create the following columns:

Name

Type

Primary Key?

Nullable?

Auto Increment?

id

INT

Y

N

Y

name

VARCHAR(255)

N

N

N

Click Apply, Execute, OK then Close.

Go to the Terminal window and cd into the mytest folder you generated earlier.

Edit the config/database.yml file using nano or TextEdit and change the database name from mytest_development to mytest. You will also need to enter the password here – either for your root account or ideally a special application-specific account you set-up in MySQL Administrator.

Back at the trusty Terminal execute:

script/generate scaffold product
script/server

Now open your browser to http://localhost:3000/products/ and try creating, editing and deleting some products.

The primary difference is that Microsoft try to align everything to whole pixels vertically and sub-pixels horizontally.

Apple just scale the font naturally – sometimes it fits into whole pixels other times it doesn’t.

This means Windows looks sharper at the expense of not actually being a very accurate representation of the text. The Mac with it’s design/DTP background is a much more accurate representation and scales more naturally than Windows which consequently jumps around a lot vertically.

Jeff and Joel both wrote follow up posts agreeing that it is one of philosophy but both are of the opinion that the Windows pixel-grid approach is the better whilst our displays are only capable of low dots-per-inch (DPI).

What they don’t seem to appreciate is the compromise this causes.

Here is an example of Times New Roman on Windows (left) and Mac OS (right) scaled over whole point sizes with sub-pixel precision:

The two thing to note here arising from this “pixel-grid is king” approach are

Windows does not scale fonts linearly as the rough line points out

Windows scales the height and width but not the weight of the font

Neither of these may matter to a casual user but for professionals preparing material destined for high DPI (film or print) then it’s a world of difference. How can you layout a page on-screen and expect the same result on the page when the font isn’t the same width?

The issue is reminiscent of the “I hate black bars on wide-screen films” brigade who believe that the film should be chopped, panned, scaled and otherwise distorted from the artists original intention simply so that it fits better on their display.

Typography has a rich and interesting history developed and honed over centuries. It is a shame to misrepresent typefaces especially as the pixel-grid approach becomes less relevant as displays reach higher resolutions.

Update

Some additional comparisons and a note that the gamma differences between Windows and Mac will affect how you see the “other” systems rendering on your machine.

Further update (21 August 2007)

Thanks to Daring Fireball and ZDNet we’ve had a few more great comments which I’ve summarized here:

George thinks the philosophy idea is wrong because “What percentage of Mac users sit around all day doing nothing but pre-press work?” but as Fred points out Microsoft’s desktop-user optimized rendering ends up on images and videos all over the web, thus escaping the environment for which it was crippled.

George also claims that Vista’s rendering is improved, I can’t vouch for that one way or another but from looking at his screen shots the difference there could simply be the contrast level as adjusted by the ClearType tuner.

Nathaniel believes that it’s not Microsoft’s job to manipulate a typeface and that if you want on-screen readability then choose a font designed for that such as Microsoft’s own Tahoma or Apple’s Lucida Grande.

I’d go further and say that Microsoft’s own aggression in sticking to the grid kills font choice at the regular reading size of 10/11 point by optimizing everything to a generic sans or serif look:

Windows XP

Mac OS X

James points to an article called Texts Rasterization Exposures that proposes a combination of using vertical hinting only and calculating horizontally to 256 levels and has some convincing screen-shots showing the benefits. Probably too late for Leopard or Vista SP1 though.