Category Archives: Macintosh

Lion taught us we were scrolling the wrong way for 25 years

When I started using Lion, the first thing I did was turn off ‘Natural Scrolling’. A week ago, I decided to try natural scrolling again. After using it for a few days, I started getting used to it, and a week later, I actually find it more natural.

The way scrolling worked in the past, you were manipulating the scroll bar, which acted as a window into your document, showing the portion of your document that’s visible in the window. Therefore, when the scroll indicator is at the top you see the beginning of the document. When you drag it down to the bottom, you see the end of the document.

With natural scrolling, you’re manipulating the document content rather than the scroll bar. This is the same way scrolling works in iOS. Since Lion de-emphasizes the scroll bar, this makes more sense. I still prefer to show the scrollbar as an indication of the document size, however.

WWDC Wrap-up

I haven’t had a chance to write any blog posts last week while I was at WWDC, but I had a great time and learned a lot. This may have been the most important WWDC in recent years.

While last year’s WWDC focused primarily on iOS, this year’s conference was about equally split between iOS 5 and Mac OS X Lion. Both systems share some major enhancements including iCloud storage and Objective C runtime improvements that make memory management easier and a lot faster. I can’t write about much of what I saw, since everything except the keynote is under NDA. I will say that I’m running iOS 5 on my iPad and Lion on my MacBook Air and I’m very happy with both and find them stable enough for regular use. I haven’t installed iOS 5 on my iPhone, though.

On Sunday I went on the annual bus Pilgrimage to Apple’s headquarters in Cupertino. As always, the only thing we were able to see was the Apple company store. I took advantage of it to pick up a USB Ethernet adapter for my MacBook Air, since large downloads aren’t allowed over wireless connections during WWDC. I was pleasantly surprised by how fast the MacBook Air USB adapter is and how it just works without any fuss, unlike USB ethernet adapters I’ve used in the past.

1 Infinite Loop

WWDC isn’t all work. There are also a few fun events, starting with Tuesday night’s Apple Design Awards and Stump The Experts. One highlight of the conference is always the Thursday night WWDC Bash. Since the Bash moved from Apple’s campus in previous years to Yerba Buena Garden across from Moscone Center, Apple has been getting major bands to perform at the Bash. In previous years they had Ozomotli, Barenaked Ladies, Cake, and OK Go. This year they got Michael Franti & Spearhead for a great show.

The conference ended at noon on Friday, so I took advantage of the rest of the day to enjoy San Francisco. I walked from Moscone to the Ferry Building & took lots of pictures, which you can see here. I only brought my Canon G12, since I didn’t feel like lugging the D90. I’m very happy with the results, both for still photos & videos.

Converting OmniFocus to The Hit List

Since The Hit List finally reached 1.0, I decided to take another look at it. I already had a license, although I haven’t used it for a long time. One thing keeping me from using it was all of my projects & tasks that I have in OmniFocus.

I wrote this AppleScript to get my tasks from OmniFocus into The Hit List. It’s still a work in progress & has some limitations, like not supporting nested tasks & not importing the context for tasks. You can download the script here.


property myfolder : ""

property currentList : ""


on exportOneTask(thing)

tell application "OmniFocus"

if thing is not completed then

set nm to (name of thing)

set sd to start date of thing

set dd to due date of thing

set ct to the context of thing

set nt to note of thing

if ct is not equal to missing value then

nm = nm & " @" & (name of ct)

end if

tell application "The Hit List"

set props to {timing task:nm, notes:nt}

if sd is not equal to missing value then

set props to props & {start date:sd}

end if

if dd is not equal to missing value then

set props to props & {due date:dd}

end if

tell currentList to make new task with properties props

end tell

end if

end tell

end exportOneTask


on exportList(thing)

set nm to (name of thing)

tell application "The Hit List"

tell myfolder to set currentList to make new list with properties {name:nm}

end tell

tell application "OmniFocus"

repeat with t in (tasks of thing)

my exportOneTask(t)

end repeat

end tell

end exportList


on exportFolder(thing)

set nm to (name of thing)

tell application "The Hit List"

tell selected group to set myfolder to make new folder with properties {name:nm}

end tell

tell application "OmniFocus"

repeat with p in (projects of thing)

if p is not completed then

my exportList(p)

end if

end repeat

end tell

end exportFolder


tell application "OmniFocus"

-- set docSource to default document

my exportFolder(default document)

repeat with f in (folders of default document)

my exportFolder(f)

end repeat

end tell

MacBook Pro disappointment

When Apple introduced the MacBook Air late last year, they called it The Next Generation of MacBooks. I was really hoping the new MacBook Pro would inherit many of its attributes, such as the thin profile, light weight, and standard SSD. Although the new models are a nice improvement over the old MacBook Pro, with faster processors & improved graphics, they’re still just as big and heavy.

After using the 3 pound 13″ MacBook Air, I will never go back to a big laptop that weighs 5 pounds or more. I would have preferred to see much thinner MacBook Pros with no optical drive and a standard SSD drive. Despite the slower processor, I find my MacBook Air to be almost as fast as my old 15″ MacBook Pro thanks to the much faster SSD. I would still love to see a “super MacBook Air”, with the fastest CPU & graphics from the MacBook Pro and 8GB RAM, but without too much extra size & weight by keeping the SSD and eliminating the optical drive.

Echo Chamber Effect

I’m sure you’ve heard the stories that Steve Jobs has “6 weeks to live”. I’m not sure if it’s true or not – I certainly hope it isn’t, but I don’t consider it a credible news story. It’s still just a rumor.

The original source of that story is the National Enquirer based on a few photos and a doctor who diagnosed his condition and predicted how long he has left based only on looking at a photo without having any direct knowledge of Steve’s medical history. This is not good journalism.

The story was picked up by 9to5Mac and developed a life of its own as other sites reported it as fact. Until Steve Jobs himself or his representative makes a statement, it’s still just a rumor.

Best Mac I've owned

I spent today walking around San Francisco, from my hotel near Union Square to the Chinatown gate, then to the ferry building and along the Embarcadero to Pier 39, then Fisherman’s Wharf and back, carrying my MacBook Air and Nikon D90.

I found the weight of the MacBook Air to be almost unnoticeable. On my last trip, I had a 15″ MacBook Pro, which seemed to get heavier after hours of carrying it. I stopped several places with WiFi and used my MacBook Air for a total of about 3 1/2 hours without plugging it in at all while running Aperture, downloading photos from a SD card, and uploading photos to Flickr. When I got back to my hotel, the battery was only down to about 50% and it claimed 4 hours time remaining.

The MacBook Air doesn’t seem any slower than the MacBook Pro, and certain things like launching applications is actually faster. It’s a lot lighter and easier to carry than the MacBook Pro and seems potentially less fragile due to not having a hard drive, so it makes a much better travel companion.

Here’s one of the many photos I took today. You can see the rest of them on Flickr.


How Mac App Store Updates Should Be Done

As you probably know, Mac apps that you bought previously can’t be updated through the Mac app store. This is causing a lot of hard feelings between loyal customers and developers. Here’s a proposal for how app store upgrades can be implemented, with Apple’s cooperation.

  1. Apple needs to allow an unlimited number of promo codes for the Mac app store. This is the only change Apple needs to make.
  2. Developers who wish to provide updates can set up a page or script where a customer enters their current serial number.
  3. With a current serial number, the developer can issue a promo code. If they wish, they can charge an upgrade fee for the promo code.
  4. The customer then uses the promo code to download the app from the Mac app store.

Voila! Everyone is happy. The customer gets a free or discounted upgrade from the Mac app store, and the developer gets another sale or download, which increases their ranking and allows the customer to rate their app.

Declaring Independence

I’ve decided to go Indie in 2011. I will be concentrating on developing my own apps full time, although I will also be available for some contract work & freelance projects.

MacBook Air as a development machine

Last week I got a new 13″ MacBook Air as a possible replacement for my 15″ MacBook Pro. Although it has a slower CPU and less RAM, the SSD makes it almost as fast, and in some cases even faster. Applications launch almost instantaneously and disk intensive tasks are much faster on the Air.

Despite having a 2.1 GHz Core 2 Duo and 4GB of RAM, vs the MacBook Pro’s 2.8 GHz Core i7 and 8GB of RAM, the MacBook Air is surprisingly pleasant to use. If you travel a lot, the Air’s size, weight, and battery life make it a better choice than the larger MacBook Pro, unless you do a lot of graphic intensive work.

My primary work is iOS software development, so I need a machine that can run Xcode, as well as Photoshop to create UI elements. THe Air works surprisingly well with both applications. Since I have a high end Core i7 iMac, I’ve set it up to support Xcode distributed compilation, which makes it even nicer to use.

For distributed compilation, you need two or more Macs running the same version of Xcode and the same OS version. On your fastest machines, in Xcode’s distributed build preferences enable ‘share my computer’, and on the others enable ‘distributed building’. You will then be able to take advantage of the faster machine when building on any of the other machines.

Here’s how I set it up on my iMac to provide distributed build services:

Screen shot 2010-12-09 at 7.27.21 PM.png

Here are the settings on the MacBook Air to distribute builds to the iMac:

Screen shot 2010-12-09 at 8.25.27 PM.png

With this setup, the MacBook Air can take advantage of the SSD’s faster disk speeds as well as the iMac’s faster CPU. Of course when I’m away from my home network I can’t take advantage of that speed boost.

Memory Upgrade

I upgraded my new MacBook Pro to 8GB of RAM today ($295 from OWC, plus a rebate when I return my old RAM). It makes a huge difference when running many applications or large applications such as Aperture.

The upgrade was very easy and the Unibody MacBook Pro is very easy to open, despite having 3 screws to remove. Once the bottom is off, the RAM is exposed and can be easily replaced.

Inside my MBP

The entire process took about 15 minutes, including opening & closing the case.

I often run Xcode, Interface Builder & Photoshop CS5 at the same time, which caused the disk to thrash constantly in 4GB. Now there’s hardly any swapping and I haven’t seen a beachball. Aperture 3 was so slow it was nearly unusable in 4GB, but with 8GB it feels pretty snappy. I can move between photos seeing a beachball.

Memory stats