Apples and Tigers
Tiger Tech Talk, Chicago. This was a free, one day, conference held by Apple. The intent was to give developers a preview of the new features and technologies in OS X Tiger, their next os which will be released in the first half of 2005. Wow! A year ago I transitioned from Windows XP to OS X Panther. I fell in love almost immediately. Panther is superior to Windows XP is almost every way. Better graphics, better usability, and much much much more stable. A little over a year later, Tiger will be released. Apple has made progress in leaps and bounds with Tiger.
Perhaps the most impressive new feature will be the Dashboard. Dashboard is invoked by a pressing F12 or some key, at which point a hidden screen will appear on top of the desktop via Expose. If you haven't seen Expose before, find someone with mac and have them show you. It's incredible. Once Dashboard appears there are a bunch of widget that you can run. Dashboard widgets are mini applications, written in HTML, that remain on the dashboard and tie into various applications or resources. The idea being that you can keep these mini apps running out of sight on Dashboard and make them appear only when you need them. Perhaps the most impressive dashboard is opening a new widget that will literally splash onto your screen. The presenter had to show us this mesmerizing ripple effect several times before we were satisfied.
Add Style, Organization, and Efficiency to your Applications Aqua User Interface. This talk made it clear the me that Apple has really thought through it's interface development and had guidelines for 3rd parties to follow when developing for OS X. There were 5 main ingredients:
- Planning
- The major point here was that the best applications often have the smallest feature set. Similar to the Single Responsibility Principle, every application should have one responsibility or solve one problem and avoid the clutter that comes from overloading feature sets. Planning also includes getting users involved so they can help figure out what the problem and solution are exactly.
- First Impression
- In essence, everything should work the first time and the user should be off and running without a hitch.
- Simple download
- Simple Installation
- Easy to use interface.
- Fundamentals
- One menu bar
- Windows that behave like Mac windows should
- ...
- Design for Aqua
- The presenter used a nice analogy. Imagine packing all the interface components (button, text-fields, text, ...) into a sawed-off shotgun and shooting it toward the screen. This is a fair representation of many existing application.
- Components should be grouped together by function
- The menu bar should have the right menus in the right order
- High Performance
- self explanatory
X Code is indeed an advanced IDE. It supports multiple languages, unique WYSYWIG GUI editing, distributed building, dynamic UML generation, ... This was a very popular session and there were lots of people with questions including me. "When will X Code support practices such as Unit Testing and Refactoring?" I asked. Matt Formica, the presenter, responded by saying that he had been to several meetings on the topic. However, there are no immediate plans to include these agile practices in X Code. I pressed on to see what Apple's general feeling was on Unit Testing and Refactoring. Matt told me that a few developers practice agile practices because they like to but that's it. I was disappointed that Apple doesn't take this more seriously. X Code's lack of Unit Testing integration and automated Refactoring is a HUGE shortcoming compared to IDEA and Eclipse modern IDE.
The last session I attended was about Core Image. This is an image processing library that allows developers to perform over 80 filters to images or applications. The details of the filters was over my head but the concept was very sweet. Core Image will allow developers to spice up their application, by adding elegant transitions and eye catching animations. OS X is full of these graphical pleasantries and it truly improves the user experience.
According to the most recent news, Microsoft intends to release Longhorn in the second half of 2006. This date has been pushed back a couple times so far. By the time Longhorn does come out Apple may already have Tiger's successor out. Longhorn had better be like jarred lightning to keep up with OS X.
- Sounds like a good time, dude. Gotta love those Macs! Are you doing any OS X development? --DaveHoover[?]
- Nothing serious. I'm just playing with Cocoa for now. -MicahMartin
- Xcode already supports unit testing indirectly. A number of third parties have packages that provide automated unit testing directly in Xcode. I use OCUnit (www.sente.ch, I believe. If not, Google it). It includes project templates, file templates and is quite easy to use.
- I tried OCUnit for a while. A few weeks ago Tim Hart showed me his framework TestKit for unit testing Cocoa. I've found TestKit easier to use and geared more to the way I work. -MicahMartin
- James Duncan Davidson's UnitKit[?] is really nice, very well documented, and integrates well with XCode. You should have a look at that too.
- I want to second the comment about UnitKit[?] - it is more Cocoa like than JUnit like but it makes sense for ObjC[?] developement. -Daniel Steinberg
- Thanks for sharing the info. I was particularly intrigued with the 5 main ingredients of interface development, and your comments on the overlap with OO principles (SRP) I'd be interested in hearing more about this, and observations of the practices of companies that make great products. -KelleyHarris[?]
- The major point here was that the best applications often have the smallest feature set. Similar to the Single Responsibility Principle, every application should have one responsibility or solve one problem and avoid the clutter that comes from overloading feature sets. Planning also includes getting users involved so they can help figure out what the problem and solution are exactly.
- I would be interested to see how you would apply this reasoning to a program like Photoshop. It seems to me that there are some inherently complex tasks that require an inherently complex program to carry out those tasks. I, for one, would hate to be opening lots of different applications to crop, colour-balance, contrast-enhance, re-size, sharpen, etc a photograph. --ChrisBooth[?]
Add Child Page to ApplesAndTigers