MacWorld Expo: The Mac Mini I Want

I’m getting excited about the upcoming MacWorld Expo. Perhaps more-so than usual, as it’ll either be the last expo or the last expo as we know it. I’ve attended expo’s nearly every year since (roughly) 1988. All the Boston/NYC shows from then ’til the end with the exception of Boston 2004 when they had the nerve to schedule it against my honeymoon. (Then again my honeymoon was four months long so I’ll forgive ‘em.) San Francisco shows 2000, 2002-2006, 2008, and the upcoming 2009. So roughly 24 expo’s. I spoke at three or four expo’s, back when I was more heavily into Home Automation. All fun stuff. I suspect it’s all coming to an end, but that’s how it is.

I’m not sure if Apple will announce anything at the Expo. They might wait until the week after, or like last year announce nearly something every Tuesday all month. I hate that; I have customers waiting to make decisions. People wait when an anticipated announcement is near. I’d rather have them get it done and know no more announcements are coming in the next month or two. (They have good reasons to wait, mostly for inventory management, but I can dream.)

For my own self-interests I’m hoping for an updated Mac Mini that functions better as a small server. The Mini was meant to appeal to PC users looking for a cheap way to switch. I don’t know anyone who has bought a Mini for that purpose. PC switchers are drawn to iMacs and MacBooks. The Mini owners I know bought them as home servers and/or media servers. I have one for that purpose, but it’s growing old and if done right I’d replace it. A few changes would really help this out.

For the Love of God, ditch the laptop hard drive and use a standard 3.5″. Larger and faster storage for the same money, and only six-tenths of an inch additional height. I’ve read rumors they’ll allow swapout of the standard optical drive for another dinky laptop drive. Stupid idea. Go with one real (3.5″) drive and we’ll all be much better off. I suspect this will not happen, but it’s possible.

Everyone knows they’re going with DisplayPort, and I like it. Only downside is lack of easy Composite/S-Video output. This is a real downer for those without HDMI sets or other low-end needs (like public access cable folks who use Mini’s to drive a video signal). This one’s a dream (as NVidia’s chipsets don’t seem to support it), but I’d really like pass-through Composite and S-Video you can get with a dongle like on all non-DisplayPort Macs. External video converters are everywhere, but the quality suffers. Chances of this happening is slim.

Firewire 800. More likely than not they’ll ditch Firewire completely. The end of Firewire is very sad. And very confusing. Add Firewire 800 to the iMac, then pull it out completely from the MacBook. FW800 would make small servers (and MacBooks!) so much better.

eSATA. This one’s dirt cheap on the hardware side. Give us one or two eSATA ports with port multiplier support and I’d be pleased as punch. Apple hasn’t touched eSATA so the likelihood of this debuting on the mini is near zero.

8GB RAM, or more. My current Mini has 1.5GB RAM, half a gig under the limit. Way too low for a large iPhoto library and the small number of other apps I run. RAM is your friend, more-so than processor speed for most uses. Best chances any new Mini will be based on the MacBook, which has a max of 6GB RAM (4GB per Apple, but easy to get to 6GB with serious extra cash). I’ll be ok with that for now, but in 2-3 years I know I’ll want more.

So that’s the Mini I want.

And one more thing… We all know an updated 17″ MacBook Pro is coming. Not sure about Tuesday, but soon. Please take advantage of the extra room inside and add a second hard drive bay. Pretty-please?

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.

iPhone SDK, NDA, and October 17

Once upon a time there was an iPhone. Developers wanted to write code for the iPhone. On October 17, 2007, Apple announced they would indeed provide an SDK. The beta SDK was released a few months later, under a strict but understandable NDA. All was good in the world. SDK went final. The App Store was flooded with applications, several of which weren’t flashlights.

The NDA remains.

If you don’t know what I’m talking about, Google it. In brief: Apple wants me to write iPhone apps, but doesn’t want me to talk to other developers about how to write iPhone apps. I can’t learn, and I can’t share.

October 17, 2008, will be the one year anniversary of the iPhone SDK announcement. I would be thrilled if Apple celebrated that anniversary by dropping the NDA.

If the NDA remains in place, how should the iPhone Developer community celebrate this anniversary?

I’m NOT proposing that on October 17, those developers who wish to share their knowledge simultaneously post information online.

I’m NOT proposing that developers learning the SDK post their questions publicly.

I’m NOT proposing that authors who have eBooks complete but under NDA offer those books for sale.

I’m NOT proposing that developers begin to share code, work on joint open-source projects, release podcasts, or offer video training.

I’m NOT proposing that every iPhone developer simultaneously submit flatulence humor apps to the App Store. Please.

How should we celebrate in keeping with the iPhone SDK NDA stranglehold?

As Marie Antoinette famously suggested, we should eat cake.

[Update: This entry obviously sent shivers up Apple's spine. On October 1st Apple announced the NDA was coming down. It took them until October 23rd to officially do so, but I'm still happy.]

Oxford 936 – RAID5 on the cheap coming soon

This is cool:

Oxford’s 936 chip supports a four-drive RAID5 set, no drivers needed. I don’t know the price, but chances are it should allow for inexpensive RAID5 boxes in the very near future. FW400/800, USB, and eSATA in, supporting SATA drives. I’ll guess we’ll see empty cases in the $200-$300 range.

That’ll make lots of people (including me) very happy.

Must eat memory

I restarted my MBP for the first time in a week. It’s amazing how much faster things run when my usual set of (roughly) 12 apps aren’t open. I’m maxed out on RAM though, just 2GB in this first-generation MacBook Pro.

The current model supports 4GB, but I’m hoping the next generation supports 8GB. If so, I’m all over it, with a 17″ high-res matte screen.

I was happy to see that ScreenFlow, which I mentioned in an earlier blog, won an Apple Design Award at WWDC. Well deserved.

iPhone 3G Upgrade? – The App Store Question

★ The iPhone 3G Upgrade Question

For the rest of us who lack such common sense and are considering upgrading — yours truly included — it’s not a sure thing. The only significant differences between the iPhone 3G and the original iPhone are the 3G networking and GPS. That’s it. (Daring Fireball link & quote)

This has been going through my head, and is the common response whenever I’m asked if I’ll be in the lines for the new iPhone. I’m not even convinced there will be lines akin to last June 29. Nutty people like myself A) have a really good iPhone already, and B) know Apple will have plenty to sell on day two.

3G would be nice, but I haven’t missed it. I use my phone mostly for email. Despite the hype, email will rarely benefit from 3G. It’s just (mostly) text. Sure attachments will come in quicker but no big deal.

Most serious iPhone web browsing I do is within WiFi range. AT&T hasn’t added 3G to my local towers yet, so useless when elsewhere in town. Tethering would be great, but no tethering allowed.

I have a Garmin Nuvi 360 which is a great GPS unit. Thus far no traditional GPS direction software is on the iPhone 3G. We don’t know if the GPS chip is good enough, and some signs point to Apple refusing to even allow such software.

All the above is based on the existing iPhone software. The 2.0 iPhone OS upgrade is minor from a user application standpoint, and all iPhone users get it for free.

The key is the App Store. Will there be a killer app for 3G or GPS?

If someone creates a great app that, for me, demands 3G and/or GPS the scale may shift the other way.

3G I’m not so sure. The 3G Mystery App would demand high-speed access and would demand I use it when away from WiFi. That’s a possibility.

GPS intrigues me. Shortly before the iPhone 3G keynote I was telling a friend how I didn’t care if the new model had GPS or not. My Nuvi is great, and I don’t see the iPhone (a more generalized device) topping its capabilities. Frequently updated maps would be nice, but Garmin could do that too. The current pseudo-GPS tells me where I am, kinda-sorta. But I hadn’t considered what else a GPS might provide beyond getting me around town.

The first hint came from Apple itself, when I saw the iPhone beta OS included geotagging for photos. Hmmmm. Now the camera itself is just a tiny thing, and the pseudo-GPS I already have is good enough for how I’ll use it. I’d rather see true GPS on my DSLR. But I get the point. iPhone GPS isn’t about driving. It’s all about the apps I haven’t seen yet.

I really think the App Store, or more accurately the developers behind it, is the key to the iPhone’s leap to the next level of success.

So my current plan is to avoid the mall on July 11th, but keep a keen eye on the App Store.

WWDC: Phil Schiller introduces the Barenaked Ladies

Lots to say about WWDC08 (for starters, I wasn’t confused with the other Mitch Cohen this year). But I was able to get a decent video of Phil Schiller introducing the Barenaked Ladies at the WWDC party tonight. Well the audio stinks, as it was taken on my little digital camera. I thought this would be a good opportunity to join the digital revolution and post my first YouTube video. Edited and uploaded directly from iMovie ’08.If anyone wants a copy better than what YouTube provides, leave a comment or drop a note.Turns out they’re huge Apple/Mac fans. I hope others post video from their show as they were lots of fun. One amusing thought. When I figured out who was playing (not pre-announced, but they taped the setlist to the stage so easy to Google) my first thought was “Wow, they got a real band for this little party.” Then I realized – Apple is the number one seller of music in the country. They could likely get anyone they wanted with little effort.[Update - seems YouTube wants to bump my 16:9 movie up to 4:3. Something to look at later.]

Header files are stupid

I’ve been meaning to get this off my chest for years. Header files are stupid.

I view header files as abstractions of programming code. In Cocoa, they not only tell the compiler what lives in a class file, but also tells Interface Builder what objects and messages it can use. Plus they let a human quickly determine what a class does. So it serves a tremendously important purpose.

But they’re still stupid. They shouldn’t need to exist. My problem is a conflict with my general theory of duplication – nothing should ever be typed twice. If data exists in one form, and it is needed in another form, that’s work a computer should do. Not a human.

If I have a class file I, even in my lowly state of knowledge, can create a corresponding header file. This isn’t an exercise of the mind, it’s menial duplication. Copy/paste with finesse.

Thinking in the opposite direction, if I have a header file, I can create the template of the class file. Not the code guts of course, but the raw objects and methods.

So why do I need to do this? Why can’t the computer? In my travels I’m certain to run across situations that might not fit the 100% bidirectional header<->class correlation. So fine, provide some manual override if needed.

Interface Builder gets a partial pass on this complaint. It can write a basic class file structure from within, based on the GUI. But only once; after that you’re supposed to do all editing in XCode (although I have successfully merged code from successive rewrites). One step in the right direction.

So in my ideal world, the header<->class<->IB relationship would be automated and semi-transparent to the programmer. Create anything anywhere, and all the other stuff should just populate. IB would be a bit more complicated but I think it could be done. But header<->class is an abstraction relationship which humans shouldn’t be bothered with.

I fully expect to re-read this when I’m smarter and be thoroughly embarrassed.