Thursday, June 17, 2010

Human Interface Guidelines and other UI info

Apple's Human Interface Guidelines (HIG) provide a great foundation for anyone not extremely savvy with UI development; and good reference for those who are savvy. They provide basic examples for many types of scenarios involving the use of audio, video, button interaction, alerts and many others.

Apple provides explanations of what they intend the different UI components to be used for and why certain components work better than others when designing for a mobile device instead of a full desktop.

Apple pushes highly polished, intuitive user experiences with most tasks being no more complex than they have to be. This same theme is present in their HIG documentation. The idea they are trying to convey is about fluid and consistent experiences. The good news is they have already figured this out; we just have to become familiar with it.

Here are a few links to some useful UI information and additional tools:

Human Interface Guidelines: www, pdf
iPhone and iPad stencils: www
iPhone UI element for Photoshop: www
iPad UI elements for photoshop: www

Sunday, June 13, 2010

Imitation is the sincerest form of flattery!

By that standard, I believe Apple is about to be very flattered. Apple just sold iPad #2,000,000 recently. By any measure, this is an extraordinary success and demonstrates considerable market demand for such a device. Here’s a quote from one user which offers some insight:

“The iPad makes using a computer less of a commitment and that has important implications for the way I compute.


Coming from a VC, too… Nice. But I digress.

The above, plus other reasons the esteemed readers of this blog can certainly provide make a compelling case for us to study the iP* ecosystem of products Apple has produced from a development perspective. I took some time this weekend to try some iPhone programming, using the simulator provided with the SDK. (It also supports the iPad.) Like most people, I rummaged through the Apple SDK documentation looking for a place to start. I also looked on the web for blogs like this that might offer some basics. There are number of sites that discuss Cocoa, but I didn’t find any that really offered a comprehensive tutorial. This is also complicated by the fact that that XCode, and especially IB have evolved. As usual, this led to me to look at the latest dev books that are available. I bought a book on Objective-C recently:

Programming Objective-C 2.0.

With a language reference in hand I looked for one that is focused on iP* development with a good discussion of XCode and IB. After reading the reviews for many books, I finally decided to buy:

Beginning iPhone 3 Development.

(Sidebar: Technical books are generally available in Kindle format. Given how perishable tech books are, I decided to download the Kindle reader instead of buying the physical book. It’s also a bit less expensive, and of course you get it instantly. The Mac version of the reader is still Beta, but it worked well.)

So far I am happy with the “Beginning iPhone 3” book. It’s a “learn by example” book, which I like for bootstrapping my ability to develop in a new environment. Does it explain everything the way I would like? No, but no single tech book is ever perfect, except for “Oh! Pascal”. Petzold’s “Programming Windows 3.0” was close to perfection, too. Now someone hand me my Geritol…

Most of us seem to have Macbook Pros or Minis. I have an iMac and a MBP. I tried using VNC to connect from my triple head Windows system to the iMac for development purposes, but that didn’t work very well. Apple offers remote management software, but it’s expensive. I bought the MBP to replace my Dell laptop when travelling, which allows me to develop for the iP* products and Windows, since I loaded Parallels. (The Dell will now become a VM host.) The MBP will allow me to use iLife, which is the most compelling reason to own a Mac from my perspective as a user.

If you are like me, you like to have a lot of screen space. This is especially true when using XCode and IB. (The return of the MDI interface! Holy VB 3, Batman!) I thought about buying a KVM, but once you go digital the price goes up and I didn’t want to have another widget on my desk if I could avoid it. My 24” monitor has two inputs: VGA and DVI. It allows me to switch sources, so I have the PC and the MBP connected to it. I also bought a Magic Mouse, since I really like the gestures the touchpad offers on the MBP.

If you own a Magic Mouse, you can improve the way it works (since Apple has yet to get a mouse right) by downloading this:

MagicPrefs

On another note, working with the Mac so much recently has reminded me of why I dislike the Mac UI compared to Windows or Unix window managers. It is truly a PITA when you work with lots of active windows. The main frustration is with the “One Ring To Bind Them” menubar, which always represents the active app. I much prefer the Windows and Unix way of associating the menu with the app window itself. Compared to the Windows 7 task bar, the Mac is a pain even with Expose and Spaces. Of course this may seem irrelevant, since it sounds like a personal preference. I mention it because it demonstrates some of Job’s insight, however. As we all know, the iPhone and iPad pre-iOS4 are essentially single-taskers. Many have thought this a serious flaw, but I think Job’s insight is that a substantial majority of users only work in one app at a time anyway. As developers, we must keep this in mind, since our typical manner of working with many windows represents a minority of users.

A corollary to the above can be found in iAd. Job’s point about the current state of advertising that requires users to leave the app strikes me as being insightful, too. Allowing the user to stay within the app while interacting with the ad certainly has merit. Context sensitive advertising should have an edge over the random variety, but there are exceptions. When I was in the online music business, I noticed that some promotions would always get significant click-through. American Express used to run ads that featured a free MP3 download if you clicked on their ad. People would click on the AmEx ad like tigers on Obsession. But in general, tying ads to the context, and this by all means includes the visual context, is an important consideration.

Note to self: don’t wear Calvin Klein products when visiting the Wild Animal Park…

If you are developing a consumer app, I think it would extremely worthwhile to consider integrated ad placement in the app – a UI requirement that is relatively new and worthy of discussion.

Friday, June 11, 2010

WWDC 2010 Wrapup

So it's Friday and I learned a lot. A few highlights from these last few days:

  • iAd looks to be pretty awesome for people who have popular apps but beware the Apple licensing agreements.
  • Iterative software development is not dead - Apple seems to have that dialed in pretty well.
  • The User Experience is much more than art - it encompasses how the user feels about the application when they run it.
  • Learn MVC if you want to develop for Apple - and really do it
  • Build apps as universal apps that will work on iOS. You have to do true, Apple-stlye, MVC to pull that off
It's been a whirlwind and I am strategizing how to get back here next year when I know more.


Wednesday, June 9, 2010

WWDC 2010 - Day 2

This conference is packed. I would estimate of the 5200 official attendees over half are here for the first time and are new developers. In a session the speaker asked how many were doing iPhone development but had never shipped an app and it was the majority of the attendees (including me). I started out day 2 going to a session on game design. They were showing a really cool Diablo like game for the iPhone/iPad that was awesome. The pointed out the graphics power of these devices and it was evident from the demos. They also used the standard UI Kit for many of the controls that you would use in the game (menus etc) and skinned the controls to fit the theme. They made the point over and over again that games had to be responsive and run at 30 fps. The next session was my first experience with the passion and expertise of user interface design. I came away from this session having a much greater appreciation for the work that has to go into an app to really make it special from a UI perspective. I also am still wondering if that is ever really possible with information system UIs? Apple also pointed out that they iterate a lot on their products and they keep iterating until noone can find any shortcomings or issues. There are lessons to be learned there, however, being able to do this for a commercial product is much different (I think) than for a contract information system. Next session was about ScrollView which they started out by saying that last year they covered the basics so this year was going to be the advanced session. I've noticed a real inconsistency in the sessions with the numbering and descriptions. SOme 100 level sessions are way advanced and some 500 level sessions are way too general. I'd like to see a beginner track given the amount of people here that are beginners. The session in the afternoon was on managing mobile devices which showed that in iOS4 they will be allowing web based (intranet) deployment of applications. This is able to be done now through either the app store or by USB directly connecting the device. All of these options are still going to require the Apple developer provisioning. A key take away from this session were thoughts about secure IT issues that many companies may not be considering - the iPhone is a very powerful computer with a lot of data on it and should be treated as such. I went to an iPad development session which again was an advanced deep dive into some of the new iOS4 features.

Great conference - my head was hurting last night from all the information, which is a good thing. They need a bigger venue next year - there are long lines for everything!

Monday, June 7, 2010

WWDC Day 1

I arrived in San Francisco and registered at WWDC at about noon. I missed all the excitement (the keynote) with Steve Jobs not being able to connect during his demo but I can tell you that when several thousand people each with a MacBook, iPhone or iPad all try and connect in that room it is slow. In any case the big news is the next generation iPhone and iOS 4.0 (now called that as iTouch, iPhone and iPad all share the same OS) will be out later this month. I have heard the OS will be a free upgrade.

I attended the Developer Tools State of the Union and the big news from that session is that XCode 4.0 is coming out. I am supposed to be able to download it from the WWDC portal but I am sure 5000 of my friends will be trying to do that as well. I have never seen so many MacBook Pros and the iPad is all over the place. I wish I had the iPad along but I am still packing the Dell Latitude and a MacBook Pro and an iPhone and another device would have put me over the top in the geek factor. XCode 4.0 will have everything in one window. The demos show it acting a lot more like Visual Studio with some neat features I'd like to see in Visual Studio. Tomorrow will be a jammed day so I will update all of you then.

I also figured out how to deploy to my phone. This does require an Apple Developer ID and the $99 payment to generate the info from Apple to allow deployment to the phone. Read more here. It worked fine - now I have my own iPhone flashlight app.

Friday, June 4, 2010

Standford Assignments

iTunes U is missing some of the course work. To get the actual assignments that are referenced in these classes go to...


There are Assignment PDF's you can download. I'm fairly sure they are Winter 2010 Lecture Assignments.

Thursday, June 3, 2010

Go to class.....

There are some great free online iPhone Development CS courses in iTunesU. The most polished I have seen so far is the Standford course for Winter 2010 found here: http://deimos3.apple.com/WebObjects/Core.woa/Feed/itunes.stanford.edu.3124430053.03124430055

UC Davis Extension also has a series that you will find here: http://deimos3.apple.com/WebObjects/Core.woa/Feed/ucdavis-public.3002137116.03002137129

Let me know which other ones you have found that are good.