A Not-So-Agile Apple Train Jumps Its Tracks

Apple, fresh from delivering AppleTV and in the middle of pushing iPhone out the door, has announced a delay in the planned shipping date of October 2007 for Mac OS X (MOX).

While some bloggers denounce Apple’s claim as deceitful (there isn’t even an entry in its press releases, only a statement for April 12, 2007 on the Hot News page), I’d say it’s more likely a half- (or less) truth. There are plenty of causes for MOX’s delay.

Apple knows it has a process problem. Steve discussed only the AppleTV and iPhone during his MacWorld 2007 keynote.

Apple has a huge backlog of duplicate and unresolved bugs in its radar database. My own entry is #3665065, entered on 23-May-2004 12:26 AM and still open.

Apple doesn’t eat its own dogfood.

Apple doesn’t have enough bodies to handle its current plans. Here’s a listing of the groups with current software engineering needs from a recent job posting:

The following teams at Apple are now hiring:

– X Grid
– Core OS
– File Systems
– Build and Integration
– Kernel Development
– Vector Numerics
– Java
– Networking
– QuickTime
– Compiler
– User Interface
– Graphics and Imaging
– Frameworks
– Security
– Localization and Release Engineering
– Core Audio
– Video Codec
– Desktop Management Solutions

On top of that, the Professional Audio, Professional Video, FileMaker, Desktop Apps (incl. iTunes), Interactive Media, iTunes Store, iPod, AppleTV and other teams I wouldn’t even guess about need developers to develop products currently on the market as well as future goodies and you can see why Apple’s in the pickle it’s in.

After working to release AppleTV and iPhone with their own variants of MOX, the Leopard team most likely has to reintegrate those branches back into the main branch. As a bonus, they will most likely develop some inability to let you run an AppleTV as a standalone MOX system in the future and cripple the iPhone’s OS to prevent that sort of thing as well.

There are serious scope and process issues within Apple’s development groups. Do not expect a speedy resolution.

[Update – 2007-04-20] Here’s another loss to one of Apple’s product teams. His story is far more indicative of Apple’s problems.

Well, That Didn’t Take Long!

So it turns out the announcements were not as spectacular as we had hoped for. A lot of the keynote was in fact a repeat of last year’s. What was new was the disclosure that EA and id were developing new games for the Mac, Safari was going to be available on the Windows platform, and that XHTML/AJAX was the API for the iPhone.

Very underwhelming. Very un-spectacular. And very significant.

Gaming for Mac gives less cause for users to run Windows on Mac hardware.

Safari for Windows gives more reason for web developers to support the lowly Mac user, who could otherwise be ignored.

And XHTML/AJAX, or Web2.0, means that the iPhone has no significant programming hurdle for users. You could write up a simple iPhone app using Safari on your Mac or PC, and download it to your iPhone when it’s ready. You could even tweak other apps to your liking. Perhaps Apple will be motivated to release DashCode for Windows as well. But it just goes to show that scripting has already won.

It will also inhibit the adoption of Microsoft’s PopFly!, Silverlight, Adobe’s AIR, and other proprietary “solutions” to ubiquitous, networked apps.

It also means the iPhone has no significant programming differentiator from any other platform. Thus, whatever apps you write for the iPhone will operate with minor modification on the Nokia N90, which also has an embedded WebKit.

And, finally, it means my plans are not only safe, but will carry more weight than I thought.

MacBookAir: Oh, the Compromises You’re Willing to Make Just to be Trendy.

Wow. A lot of folks already have lists of what they don’t like about the MBA. So do I.

  • It isn’t a tablet.

    The tablet interface opens up a whole new range of apps (just look at what changes the touchscreen interface has brought to the mobile market.) I could be so much moreproductive with a tablet. I promise.

  • Lack of replaceable battery.

    Will I be able to get to an outlet in five hours? Would I have been able to find a spare battery in three years’ time when the charge goes down to 2?

  • 1.6GHz CPU?

    Are you kidding me? Weren’t we looking forward to the 3GHz PowerPC G5 more than four years ago?

  • FireWire!

    Why has Apple abandoned the IEEE1394 spec it created?

  • Gigabit Ethernet

    In fact, any ethernet at all! Something, at least, which has better performance than WiFi!

Others complained about the hard drive capacity being only 80GB, and the solid-state drive (SSD) being so expensive. I don’t care. As a laptop, it wouldn’t be where I do the bulk of my work or computing. It would only be for away-from-the-desk computing.

When I saw the announcement, and the pics, I knew it was a computer for lightweights. It isn’t meant for power users. It isn’t meant for programmers. It’s meant for folks whose computing needs just aren’t driven by applications which demand horsepower.

Joe Goh, the developer behind Phone Journal, replied, “Definitely not just trendy. Lots of people I know won’t carry a portable computer otherwise. Its going to be a hit with ladies”, which proves my point exactly. If you haven’t already needed to carry around a laptop, particularly one like the less expensive and more powerful MacBook, why would you start with this model?

So, although I saw that the userbase for the Mac was going to explode through the MBA, as a user, it just wasn’t my type of machine.

But as I was reading Wil Shipley’s take on it, the notoriously name-dropping blogger and lead developer of Delicious Library, and how he was going to buy one for himself, I realized there was something special about that solid-state drive.

This is a picture of a 256K Dynamic RAM memory card for an S-100 computer. It’s the sort of thing we used back in the late 1970s. Typical of gadget freaks, it was more power than the CPU could directly handle, so the excess had to be put to use somehow: RAMDisk.

Back in those days, microcomputers generally used floppy drives: storage devices that stored information on portable media that resembled CD-Rs *inside* its jewelry case; except the floppies stored up to 800KB, looked dark brown because they were actually coated with rust, and were 5.25″-8″ in size! These things were large, and slow. Things were better if you could afford the $3,000 for a 5MB hard drive because they were faster and stored a tad more info, but the majority of us users were stuck with the less-expensive, and slower, floppy drive.

Ah, but that extra RAM came in handy here. Once you loaded in some RAMDisk software onto your micro, your RAMDisk would give you performance that blew away even those speedy hard drives. Instead of putting up with the slow grinding-grinding of the floppy drive while you were working, the RAMDisk would buffer the data the first time it was read from the floppy, then blast it into application memory whenever it was needed. You would wonder just how well it worked when you didn’t hear the drives spinning and grinding as before, but when the results came up, you knew it worked fabulously.

And it wouldn’t take long for the results to appear. Performance was thousands times better. You wouldn’t have to go to lunch when you ran the assembler anymore. It was now fast enough to give you just enough time to grab some coffee. It was that fast.

The MBA’s optional SSD will give you that level of performance boost. While hard drives were a couple order of magnitudes faster than floppies, they were still orders of magnitude slower than RAM. While hard drives have improved in performance, so has RAM. Just as adding more RAM to your computer will give a bigger performance increase than adding a faster processor, substituting that power-draining, mechanical hard drive completely with a solid-state device will give a phenomenal performance gain.

While you might complain about 64GB being miniscule(!), the real caveat is that these flash devices that make up the SSD have a limited lifetime. 300K to 400K writes. That’s not a paltry amount, but it is still something to keep in mind.

So now that I think about it, the MBA has one significant advantage for one particular power-user niche: the developer. It doesn’t have the raw CPU horsepower we crave. It doesn’t have the ability to do gigabit ethernet connections to our networks. It doesn’t have separate communication busses for main and video memory. It doesn’t even have a tablet interface. But it does have a honkin’ 64GB drive with no moving parts.

I guess when I get enough money, I’ll have to plunk down for an MBA after all. After they come out with a Rev. B. Hopefully, they’ll have a 128GB SSD option by then!

How to Install the iPhone 2.2.1 SDK on a PowerPC-based Mac

Update: I forgot to mention that I got help from the great folks at NSCoder Nights in San Francisco when mucking about the installer and Xcode files. Particularly helpful were Bruce Spath and Dan Grover. Thanks again, guys!

Here’s how you can install the iPhone SDK for 2.2.1 on a Mac running at least MOX 10.5.5:

1. Ensure you have at least 6 gigs of disk space available. If you have tried to install the iPhone SDK on the target volume before, it may state an upgrade will be performed instead of an install. Sadly, the only solution I currently have for this situation is to uninstall Xcode using /Library/Developer/3.1/uninstall-devtools.
2. Download the SDK disk image.
3. Mount the image by double-clicking it.
4. Copy the mounted volume to a hard drive.
5. Navigate to iPhone SDK.mpkg/Contents/iPhoneSDK.dist in the copied folder and replace line 340 which should be
start_selected = "isIntel() && hasRightOS() && agreedToSLA()"

with
start_selected = "true"

6. Run the installer, selecting either the default location /Developer or another directory name if you’re looking to preserve your current Xcode installation.
7. After a successful installation, navigate from the installation directory (default of /Developer) to /Platforms/iPhoneSimulator.platform/Developer/Library/Xcode/Specifications/iPhone Simulator Architectures.xcspec, and make the following two changes.

First, replace

{ Type = Architecture;
Identifier = Standard;
Name = "Standard (iPhone Simulator: i386)";
Description = "32-bit iPhone Simulator architectures";
ListInEnum = YES;
SortNumber = 1;
RealArchitectures = ( i386 );
ArchitectureSetting = "ARCHS_STANDARD_32_BIT";
},

with

{
Type = Architecture;
Identifier = Standard;
Name = "Standard (iPhone Simulator: i386)";
Description = "32-bit iPhone Simulator architectures";
ListInEnum = YES;
SortNumber = 1;
RealArchitectures = (
i386,
);
ArchitectureSetting = "ARCHS_OLD_STANDARD_32_BIT";
},
{
Type = Architecture;
Identifier = Standard;
Name = "Standard (iPhone Simulator: ppc)";
Description = "32-bit iPhone Simulator architectures";
ListInEnum = YES;
SortNumber = 1;
RealArchitectures = (
ppc,
);
ArchitectureSetting = "ARCHS_STANDARD_32_BIT";
},

then, replace

{ Type = Architecture;
Identifier = i386;
Name = "Intel";
Description = "32-bit Intel";
PerArchBuildSettingName = "Intel";
ByteOrder = little;
ListInEnum = NO;
SortNumber = 105;
},

with

{
Type = Architecture;
Identifier = i386;
Name = Intel;
Description = "32-bit Intel";
"PerArchBuildSettingName" = Intel;
ByteOrder = little;
ListInEnum = NO;
SortNumber = 105;
},
{
Type = Architecture;
Identifier = ppc;
Name = "Minimal (32-bit PowerPC only)";
Description = "32-bit PowerPC ";
"PerArchBuildSettingName" = PowerPC;
ByteOrder = big;
ListInEnum = No;
SortNumber = 201;
},
{
Type = Architecture;
Identifier = ppc7400;
Name = "PowerPC G4";
Description = "32-bit PowerPC for G4 processor";
ByteOrder = big;
ListInEnum = NO;
SortNumber = 202;
},
{
Type = Architecture;
Identifier = ppc970;
Name = "PowerPC G5 32-bit";
Description = "32-bit PowerPC for G5 processor";
ByteOrder = big;
ListInEnum = NO;
SortNumber = 203;
},

Now go ahead and start Xcode and when you select the “File > New Project…” menu item, you should see a darling iPhone category for projects. Also, run the iPhone simulator in /(Xcode install path)/Platforms/iPhoneSimulator.platform/Developer/Applications/iPhone\\ Simulator.app, it’s really mind-blowing to run it on your desktop, especially one Apple tells you isn’t able to run their iPhone SDK.

By the way, if you don’t feel like going through these steps yourself I’ve put together iPhoneSDKonqueror, an app which will handle these steps for you in a mostly automated manner. You should buy it. It’s only USD$5 and if you appreciate the ability to use your PowerPC Mac to write apps for the iPhone, it’s the right gesture to make to me.