From my side of the Mac Developer Roundtable

Last week I was asked to participate in the Mac Developer Roundtable podcast, hosted by Steve “Scotty” Scott. I’m unquestionably the new kid on the program. This was my first podcast ever, and the other guests are far more experienced in Cocoa programming than little old me. Everyone was very nice, and I had a great time.

I should say I’m writing this prior to the episode’s release but I’m assuming Scotty will do his usual excellent job editing, hopefully even raising my IQ a few points. I also hope the GSM buzz from my end of the line isn’t distracting. The phone in question was in another room and wasn’t audible to me during recording, but I heard it later on. Very frustrating as I’d done everything to keep noise down including buying a pop filter and turning off the HVAC system (I already had decent audio equipment for other purposes). Alysa somehow managed to keep Ariella (our almost-two-year-old) quiet, which was amazing.

My secret hope in participating was to motivate myself to improve the frequency of both my Cocoa coding and blogging. Only time will tell about the latter, but the former has paid off. I have two new (small) iPhone app projects in the works. The more complicated is time-sensitive in nature so I’m working towards releasing it first. I’d actually completed an iPhone app mid-July, but at the last moment decided against releasing it. That’s an interesting story really, but for another day. I do regret my decision to pull back on that app. The app wouldn’t have made the world a better place, but I suspect I’d be a better coder if I’d continued in forward motion.

One comment I remember making during the show is how Apple makes it difficult for newbies to ObjC/Cocoa to get from Point A to Point C. One possibility is that’s intentional, to weed out those not cut out for quality Mac programming. Either way it’s clear that Apple does not apply their highly regarded ease of use talents to the coding process.

Today I ran into two issues. First was an error with iPhone Provisioning Profiles. My app wouldn’t install onto my iPhone (in development/debug mode), with XCode spitting out a 15507 error saying my profile wasn’t on my phone. Which it was (I’d installed other self-written apps previously, and even did so again to confirm all was still happy). I combined several suggestions provided by the googleverse, deleted and re-installed profiles, changed various project options, and suddenly all was happy in the world. Provisioning profiles (part of the signing process) are key to iPhone development, yet the whole process is far removed from anything Mac users would consider sensible. I don’t mean it’s too technical; it’s just wrong.

Second, I wanted to configure XCode’s built-in Source Code Management (Subversion) functionality. I’d used this with other folks’ projects before, but had never configured my own (instead doing ad-hoc version control myself). I searched for Subversion within Developer Tools Library. The top item was a link to an ADC page on configuring Subversion – using XCode 1.5. I’m using 3.1.2. More than a few differences. So I was left to figure things out on my own. Not necessarily a bad thing, but not how I’d hoped to spend my time. Only while writing this post did I find the more recent documentation further down the results list. Why would Apple include such old info within 3.1′s documentation? The old page doesn’t even provide a link to newer info.

Neither of the above are earth-shattering of course. I really am enjoying using XCode, ObjC, and Cocoa. Just two minor yet preventable issues that got in the way of my intent to code. I’ve been coding on Macs off and on since 1986 so I’ve seen plenty of odd stuff (like creating QTVR images in MPW!). This just seems inconsistent with why I use a Mac.

I said I’d blog more. I’ll try to complain less.

Apple TV, what it could be

I recently bought an Apple TV. I’ve had a Mac Mini connected to our TV for 2+ years, but it never got the use I was hoping. The Apple TV is quickly becoming a big hit in our house due to its ease of use. It’s a great little device, especially considering it’s just a “hobby” for Apple.

I have several suggested improvements for the next generation of hardware and/or software. I have no expectation Apple will either see or pay attention. I’ll also not attempt to turn the Apple TV into something Apple clearly doesn’t want it to be. So no push to support every codec under the sun, no tuner/recorder, no blu-ray player, etc. Might be nice but a waste of time to suggest.

This has been in my drafts folder for a while. It’s way too long as-is, so I’m getting it out there.

Software Changes

Network sharing: Allow local computer users to share (play) media stored on the Apple TV. Basically, make it act like iTunes and iPhoto already does. This should follow standard restrictions on protected content, again just like any computer. This should also allow one Apple TV to share the content of another Apple TV. We’re having so much fun, getting a second may be tempting someday – but only if all content were accessible at all times.

Podcast improvements: I’m having a blast with video podcasts. First, we need better searching. The current Apple TV search is titles only, while an iTunes search is much more thorough. Also, allow subscribing to podcasts directly on the Apple TV. (General theme: do as much as possible through the Apple TV interface, not requiring constant access to the host computer’s iTunes.)

More codec support: I’m not suggesting XviD, WMV, etc. I think the Apple TV should support every codec available on the Mac desktop using QuickTime. This would allow users to play DV files, videos made on digicams, etc, without going through lengthy conversions. Some of these are better kept on the host computer to save space; the intention here is to save conversion time. Some large codecs might require more CPU power, or a hardwired ethernet connection, but most should be fine.

Also, for conversion, some simple batch-convert process for video. We can batch-convert music to MP3/AAC in iTunes, why not video? I know there are third-party solutions to this, but it should really be integrated. NEVER MIND – Advanced->Create Apple TV Version. I haven’t tried this yet; curious if it’s the same as Quicktime’s Export to Apple TV (a very high quality/large file size conversion with no options).

Manually set the poster frame: This is a lame one, but I’d like it. Pause a movie on your favorite frame, then set the poster frame. Also, manually add chapter markers the same way. These should be synced back to the host computer.

Sync while playing: The Apple TV can’t seem to sync with the host computer while playing video. That’s silly.

The ability to play more HD formats, specifically 720p/30 and 1080i/p (24 and 30). Most large (and more smaller) HD TVs are 1080p now. All my home video is shot 1080i/30 (or 1080i/60 if you count fields). It’s a shame I need to scale that down to 960 x 540. There might be a hardware component to this as 1080p video stutters even on somewhat modern computers.

Ditch the stupid .m4v format. I don’t get this one, although it has little to do with the Apple TV itself. .mov is a great container. Why the new format? Was it to say Apple was producing an open format? Try changing some tags in a large .m4v file. Takes forever. A .mov? Barely noticeable. Yes I can use .mov fine, but the quick exports from iMovie, Compressor, etc, all go to .m4v. Plus .mov can have multiple audio tracks, closed-caption tracks, etc.

Support multiple tracks of .mov files. Following from the above, allow the user to choose which audio track to play when watching a movie. When I RIP DVD’s for flights I include the main audio and any commentary tracks, all in the same file. In Quicktime Player I just select which I want to hear. The same should be possible on the Apple TV. (And imagine how many more movies Apple would sell if they included director/actor commentary tracks?)

Multiple users. This is a big one, and an easy one. We have three people in our house – why would we want the same set of favorites, or the same playlists, or the same YouTube account? I’m not suggesting a completely separate library (although some might want this). My wife doesn’t need to see my WWDC videos in her listing, and our daughter doesn’t want to see anything other than Sesame Street and Curious George.

EXIF/IPTC tags while watching photos. While watching photos, we’ll sometimes wonder when the photo was taken. How about a popup of basic data? (And oh, by the way, iPhoto should embed this info into photos instead of storing the data elsewhere. Major multi-year pet peeve here.)

Be a wireless access point (and for some a repeater). My Apple TV is on Ethernet. Why can’t it be another access point for my home LAN? For those using the Apple TV on WiFi, making the Apple TV be a repeater might be nice, although throughput would drop in half so mixed feelings here.

Hardware changes

Apple will inevitably ship a new hardware version of the Apple TV, unless they kill it off of course. I’ll assume the device will have a better CPU and graphics card to support 1080p, etc. So that’s a given.

Gigabit ethernet and 802.11n WiFi. Obvious – move those video files faster.

A desktop (3.5″) hard drive!!! This is my biggest complaint about the first generation Apple TV, and the Mac Mini as well. Why on earth did Apple see it necessary to use a 2.5″ laptop drive in a non-portable device? They saved roughly six-tenths of an inch of space (height) on the device. Hip hip hooray. But they lost a ton of storage space – for a device where storage is key. Many 3.5″ drives are plenty quiet (I’ve had a Tivo for eight years, never heard anyone complain). A quick check at my favorite drive vendor shows 160GB laptop drives roughly the same price as a 500GB desktop drive. Apple is using desktop drives in the Time Capsule, and I’ve never heard anyone complain it’s too large. A perfect example of form obliterating function.

Bluetooth – to support more devices, remotes, etc. See theoretical changes below for more rationale.

External hard drive support – I think this is possible, but unlikely from Apple. They like closed devices. I disagree with their decisions here but accept them as part of the big picture.

Theoretical changes

SDK. Apple has the iPhone SDK, and it’s a huge success. The Apple TV is running OS X too. A real SDK (combined with the better processor and GPU likely coming anyway) could turn the Apple TV into a competitive gaming platform. I don’t play games myself so I don’t care, but it would make the device very popular. Integration with the App Store, etc. Apple would limit SDK functionality (muck like the iPhone), here to prevent the Apple TV from becoming too much like a computer and competing with their own Macs. That’s ok.

Through that SDK they could open the Apple TV to other content providers. (Whoa, is that the third rail I sense?) I don’t see Apple’s content being all things to all people. Access to NetFlix, Hulu, more photo/video sites, etc, is necessary. Apple has conquered music. They haven’t conquered video, and they won’t. Apple has not positioned the Apple TV as a loss-leader to content (like game consoles do). Open it up to the wider world, and Apple will own this market.

Give the remote an accelerometer. Just like the iPhone (and just like the Wii from what I understand). Would be fun for gamers, and probably useful for something. Otherwise the current remote is fine. Simplicity is Apple’s forté, and most do-everything remotes are horrid.

Subscription video service. Ok, this isn’t really a software feature. I think Apple did the right thing by avoiding subscription music. Video is another beast. Netflix’s video subscription is proving popular, at least among the tech crowd. Already multiple hardware boxes support it. If Apple could get the studios on board they could have a great offering.

Ok, I’m done.

Psystar, Shmystar Redux

A few months back I predicted a quick death to Psystar. They instead chose to fight goliath in court, which is indeed interesting to watch.

I’ve never understood why Apple treats their OS licenses as new products. If you buy a retail box of Leopard, you’re getting a new license for Leopard. Therein is Apple’s difficulty. It’s honestly hard for Apple to justify selling a new software product and not allowing it to be used on non-Apple hardware. Apple has proven it’s generally good for the consumer to have a single-vendor experience, but that’s a different story.

I understand the desire to use OS X on non-Apple hardware. I’ve considered it myself, specifically for low-end (home media) server solutions. The Mac Mini has no PCI expandability, and the MacPro and XServe are too much machine for the job. I have seven external firewire drives on my Mini – a eSATA RAID 6 box would be far better. Again, I digress.

Apple should make the OS included with the hardware as the only way to get a new OS license. That license to use the software would be inseparable from the hardware. All future upgrades would be that – license upgrades.

When you upgrade your Adobe CS2 to CS3, you don’t have the right to use the CS2 on another computer. You’re essentially adding the right to use CS3 to your existing right to use CS2 on the same computer. From a software publisher’s point of view this is the right way to go, and it’s fair to the user. If a user wants to use the second product on another computer, Adobe is quite justified in charging full price again. Apple would be justified in charging for a new license as well – this time for a new computer/OS bundle.

Apple’s products are the combined force of hardware and software. If the had a single license that covered both new Mac hardware and the included OS, there is no harm done to the user. Millions of iPhones have been sold this way, and I haven’t heard any complainers.

Upgrades would be as stated above – licenses to use a new version of the OS on hardware which was already licensed for an earlier version of the OS.

This would (in theory) allow for Apple to license other manufacturers to include the Mac OS, since the software license wouldn’t specify Apple-only hardware. Psystar could (in theory) bargain with Apple for the right to include the Mac OS with their hardware, and Apple wouldn’t need to change their licensing one little bit. This would never happen in real life. It would, however, be a much cleaner solution.