How to handle ‘No previous prototype for function’ warnings in Xcode

When compiling code in Xcode 4 you may be seeing warnings saying ‘No previous prototype for function…’.  This is probably happening if you are using a library that has at least some parts written in C/C++.  This warning may even be appearing in code that previously compiled fine in Xcode 3 without any warnings.  This is because Xcode 4’s default compiler warns about this when Xcode 3’s did not.

Anyway, the warning is simply saying that a function implementation exists but no matching function declaration was found.  If you are used to Objective-C only this is like saying that you have the implemented code in the .m file but you don’t have the function listed in the .h.  It’s easy to fix, just write the method declaration in anywhere before the actual method; you can write it in the .m or .h, it won’t matter as long as it’s before the actual function.

For example, if you have a method such as…

float doSimpleMaths(float a, float b) {
   return (a*a)*(b*b);

Then to get rid of the warning just add in the method declaration before the method…

float doSimpleMaths(float a, float b);
float doSimpleMaths(float a, float b) {
   return (a*a)*(b*b);

Is OS X Lion a bad operating system?

I’ve been using OS X Lion for a while now, and over half a year after its initial release, I continue to have a niggly feeling that it is a bit poor overall. Now, before I go any further I feel I have to preface this post with some clear points. Firstly, I think OS X is currently the best operating system on the market, and I personally love it. Secondly, whilst I appreciate that Windows 7 is a good OS, and that Linux is superb on servers, I believe OS X is far better than either of these when it comes to consumer OSs. Finally, whilst I have issues with OS X that I’m going to describe here, overall I think it is great and I’m not going to stop using it anytime soon. So, hopefully you know that I am writing this article as someone who does indeed love OS X.

So why do I have a bad feeling about Lion? There are several specific issues I have, and also some much larger overall points. Let’s start with some of the specifics, as they are easier to describe. I hope you don’t feel I am being overly picky as I list these issues. I believe they are symptomatic of the larger issues, and so they are useful illustrations.



Exposé is undoubtedly one of the best features of any OS. When it was introduced I was blown away by how easily it made viewing and navigating all the open application windows at once. When Spaces (the ability to have multiple desktops) was introduced later in 10.5 (Leopard) Apple made sure that you could still view and navigate all application windows at once even if you had many spaces. You just activated Spaces, and then hit the Exposé key, and you could see all windows on all Spaces splay out. There were no overlapping windows so you could see the entirety of every single window. You could also navigate to any window you wanted using either the mouse or keys. Both in usability design and aesthetic appeal it was bliss; regardless if you were using one desktop or many. For me, Lion destroys the usability of Exposé. Firstly, if you have multiple Spaces there is now no way whatsoever to see all your open application windows. If you activate Exposé it only applies to the current Space/desktop, and although you can see the other Spaces the windows on them have not moved into the Exposé mode.



Windows are now also grouped by application, and each application’s windows are overlapped. For example, if you have five Safari windows open they will be grouped into one element in Exposé and overlap. In the first screenshot above I have five Safari sites with Wikipedia, Ars Technica, Engadget, Mac Rumors, and AppleInsider. However, in Exposé it is almost impossible to tell how many Safari windows there are nevermind the content of each. In the second screenshot, when activating Exposé from my second Space (Desktop 2), you can barely even tell that there are any Safari windows open at all.

Indeed, this grouping problem applies even if you only have one Space/desktop. The windows of each application group together and overlap, and often you can only see the content of the top window. Selecting a particular window in such a group using the mouse is challenging. Another big problem is that selecting using the keys doesn’t work at all. I believe since Exposé was first available right up until Lion you could always use the cursor keys to navigate the windows and then press space to pick one. In Lion you can’t use keys to navigate through Exposé at all. I actually filed this as a bug report with Apple some time ago, but they haven’t responded to it yet. I find the lack of keyboard navigation extremely vexing. I imagine that this could be a much more severe issue for disabled users.



With Spaces itself there has also been some loss of functionality in Lion. Previously, Spaces allowed you to set up multiple desktops both horizontally or vertically. So you could, for example, have a 2×2 grid, or a single vertical row, or a single horizontal row. I preferred a grid (I used a 2×2 grid), and I found this very useful as every desktop was one switch away (you could move diagonally so you could quickly jump the diagonal on the grid). With Lion Spaces only supports a single horizontal row. By default it also changes the order of desktops based on when they were last used, which I find infuriating as I assign specific tasks to each desktop number (e.g., desktop 1 = web browsing, desktop 2 = mail, desktop 3 = music, etc). Since Lion moves these around by default it completely breaks this mental model. Luckily, you can disable that (it’s the ‘Automatically rearrange spaces…’ checkbox in the Mission Control Preferences).



Launchpad seems to be an attempt to use the iOS app layout for desktop applications. I honestly wonder if anyone uses this. I certainly don’t, and the many non-expert users I know don’t use it either. If anyone is actually using it I would love to hear about it. Interestingly, at some point during development Apple must have realised that nobody uses this feature either as in the early Lion betas its dock icon was locked in place and couldn’t be deleted but this was changed so that in the release version you can just drag it off your dock so that you never have to look at it again.

I don’t know why others don’t use Launchpad, but I certainly have a few reasons why I don’t. Firstly, there are much quicker ways to launch apps. If I use an app frequently then I put it in the dock so it is always on screen and I can quickly launch it from there. If it’s something I use intermittently then I find Spotlight is a far faster and more reliable way to find and launch apps. Spotlight will find the app no matter where it is… typing into and using Spotlight is much quicker for finding a rarely used app than Launchpad because with Launchpad you have to search through many app icons and often have to swipe between Launchpad screens to find the icon you are looking for.

I really do wonder who is using Launchpad… is it just people who haven’t figured out how to use the dock, Spotlight, or any of the many great 3rd-party app launchers (e.g. Quicksilver, Launchbar).


iCal and Address Book

Thanks to the way Lion has given both the iCal and Address Book apps a makeover, I’ve learned a new word… skeumorphic ( The Oxford English Dictionary defines this as ‘a derivative object that retains ornamental design cues to a structure that was necessary in the original’. For example, a physical calendar may have a page for each month and as the month passes you tear off the last month’s page. A computer calendar does not use pages, so if it gives the appearance of having pages when there is no longer a reason to then it can be said to be skeumorphic.

This may be a personal preference thing, but I detest how this has been applied to both iCal and Address Book to an insane degree. iCal has a horrendous fake leather effect, fake stitching and fake bits of torn pages that add absolutely nothing for me and take up space that could be better used for displaying actual content.

I especially dislike how iCal appears when it combines many elements at once. To me, it is a mishmash of modern digital elements and extremely dated physical ones.


Another awful point with all this skeumorphic stuff that Apple is doing is that because it doesn’t actually update its appearance with the activity in the app it actually gives me an uncomfortable, creepy feeling. For example, when you open Address Book it looks like an open book, with 5 pages on the left and 5 pages on the right. If you then scroll through your addresses from A to Z the book doesn’t move or change at all. When viewing the As it looks like you are bang in the middle of a 10 page book, then when viewing the Zs it still looks like you are in the middle of a 10 page book. Since the book never moves, this makes it feel like everything you are doing is sitting on a picture of a book… a static, dead book. It is creepy. If Apple are going to do this skeumorphic insanity then they should at least do it right and make the underlying book metaphor actually behave correctly. By the way, iBooks in iOS suffers this same problem, where it always seems like you are in the middle of the book, even when you are on the last page. Recently, Apple introduced an alternative mode in iBooks where you can now get rid of the underlying book aesthetic. I really hope this is the first signs of a rethink of their approach to skeumorphic stuff in general.



So, I feel the previous examples can be boiled down to one overall point… in Lion Apple seems to have missed expectations on usability. Apple is renowned for making software (and hardware) products that look and feel great. This means focusing on maintaining extremely functional and usable systems; and not compromising on either. Exposé is a great example of this. When it was introduced it looked amazing, was easy to navigate, and provided a lot of functionality. In Lion it is now much harder to navigate (smaller targets for mouse due to overlapping, no keyboard navigation at all), less functional (can’t view all windows at all if you have multiple spaces, and is much harder to view all even on a single space), and (perhaps arguably) less aesthetically appealing due to the grouping and overlapping of windows.

Launchpad is another good example where usability has, in my opinion, not been thought through. I feel this is particularly tragic. When Apple released the iPhone it was clear that they hadn’t simply taken OS X and ported it to a smaller screen. Indeed, in the keynotes they frequently boasted about how they had realised that it just wasn’t appropriate to do that, they said that what works on a large screen doesn’t work on a small screen, and they developed the user interface and all the widgets from the ground up, focusing on making a UI perfectly designed for finger-sized input. Now with Lion they seem to have literally taken the opposite approach. They have just taken the exact iOS homescreen and forced it into Lion as Launchpad, without making any changes whatsover for the larger screen and additional input hardware on laptops and desktops. Moreover, they don’t seem to have asked themselves if emulating the iOS homescreen on a desktop machine was actually a good idea in the first place.

There are many, many other instances of usability problems in Lion. For example, how whenever you open any new window in any app it zooms out from the centre of the screen, taking a short while but essentially wasting time. Previously, animations were only applied when they guided the user as to what was going. For example, when you minimise a window it slides into the dock, guiding the user to where they can later find; or when you double-click a folder in Finder the window zooms out from the folder’s icon, both quickly confirming the window is opening (useful for network folders) and showing where it came from. However, this animation does not contain any such information, it isn’t guiding the user in any way. Such truly superfluous UI niggles are numerous in Lion. However, my overall point is that it looks to me that with Lion Apple has somewhat dropped the ball with usability and functionality.



Lion also seems to be buggy, even after two updates (I’m on 10.7.2). Some of the things I have experienced include:

  • The network failing to reconnect on wake if the machine went to sleep whilst a time-machine backup was in progress (this was fixed in 10.7.2)
  • Wi-Fi spontaneously disconnecting (occurred frequently in 10.7.0, still happens but a lot less often in 10.7.2)
  • Battery life on the same machine is an hour or two less on average when compared to Snow Leopard (I know this isn’t a bug per se, but it is a point I feel should be worked on and improved in future updates)
  • Numerous Safari bugs, such as the Safari UI apparently locking up on a page, or the page randomly scrolling wildly
  • Stock widget not updating
  • Desktop icons overlapping when plugging/unplugging an external display

There are obviously many more. I know every OS has bugs, and every major update typically has a lot of bugs that get fixed over the course of the OS. However, I have used every version of OS X since 10.2 and it seems to me that Lion is suffering significantly more bugs than any release in a long time.


Why does Lion have these problems?

Assuming Lion does have some problems, can we determine why it does, at least at some high-level? I have no information at all to go on here, but I am going to make 3 guesses. Perhaps the answer is one of these, none of these, or a combination of these.


Steve Jobs wasn’t involved much or at all in developing Lion

Jobs was renowned for his laser-like focus on numerous aspects of OS X. I believe that over the years this greatly helped shape OS X into fantastic product. Perhaps Jobs was far less involved in Lion’s development than previous versions, and perhaps OS X suffered from a lack of his input. Although Lion was released whilst Jobs was still alive, he was effectively on medical leave for a year before Lion’s release, and perhaps longer. This may have meant that he just didn’t get the opportunity to contribute as much to the project as he normally would.


Focus on iOS

The iPhone and iPad have outperformed nearly all predictions and sales break expectations and records nearly every quarter. Apple’s iOS (iPhone, iPod, iPad) products have been generating more revenue than their Mac products (MacBooks, Mac Minis, iMacs, etc) for years now. It may be that Apple have pulled a large amount of resources from OS X development and instead focused on iOS and the App Store. Perhaps it is simply that Lion has benefitted from less of Apple’s effort than any previous version of OS X.


Attempt to make OS X like iOS

Jobs himself stated that one of the goals for Lion was about bringing a lot of what they had learned and created for iOS back to the Mac. This is clearly evident in things like Launchpad, which is a direct port, and the skeumorphic iCal and Address Book, which clearly take their UIs from iOS’s Calendar and Address Book apps. Perhaps this was a misdirected goal and Apple would have been better on building the best experience for the laptop/desktop hardware of the Mac, rather than attempting to port elements from an OS designed for finger input.


Is Lion Bad?

So is Lion a bad OS? Personally, I still think OS X is the best OS available today. I’d rather use Lion than the latest versions of Windows or Linux. However, it clearly has some major issues that concern me. Indeed, whilst in every previous update to OS X I felt there was clear and valuable improvements, with Lion I find myself often wishing that I was back using Snow Leopard.

I am still thinking about Lion a lot. I know a lot of what I wrote may come down to personal preference. If you have any thoughts on whether you think Lion is good or bad, and why you think that is the case, I’d love to hear them in the comments.

UDID and UUID alternative for iOS

As of iOS5, Apple no longer want you to use the UDID (Unique Device Identifier) in your iOS apps, and would prefer you to use a UUID instead (I posted about how to get a UUID earlier). However, the disadvantage of this is that a UUID only identifies an installation instance of the app, and does not identify the device. If the app is deleted and reinstalled even on the same device then you will end up with a new UUID and have no way to link them.

There is another alternative. Since all iOS devices (iPhones, iPads and iPods) have at least one network interface they all have at least one MAC address, and this is unique to the device and does not change. Therefore, a MAC address can be used to uniquely identify a device. I’m not sure how Apple will feel about people using this in the future, but for now at least it does provide a way to do exactly what a UDID did before and it is permitted in app store apps.

Here is some code for how to get the MAC address off an iOS device. I originally had another version here but it stopped working after an iOS upgrade so this working version came from here. Make sure you include the imports too…

#import <sys/sysctl.h>
#import <net/if_dl.h>
#import <arpa/inet.h>
#import <net/if.h>

#if !defined(IFT_ETHER)
#define IFT_ETHER 0x6/* Ethernet CSMACD */

@implementation MACAddress

+ (NSString *)MACAddress
int mgmtInfoBase[6];
char *msgBuffer = NULL;
size_t length;
unsigned char macAddress[6];
struct if_msghdr *interfaceMsgStruct;
struct sockaddr_dl *socketStruct;
NSString *errorFlag = NULL;

// Setup the management Information Base (mib)
mgmtInfoBase[0] = CTL_NET; // Request network subsystem
mgmtInfoBase[1] = AF_ROUTE; // Routing table info
mgmtInfoBase[2] = 0;
mgmtInfoBase[3] = AF_LINK; // Request link layer information
mgmtInfoBase[4] = NET_RT_IFLIST; // Request all configured interfaces

// With all configured interfaces requested, get handle index
if ((mgmtInfoBase[5] = if_nametoindex(“en0″)) == 0)
errorFlag = @”if_nametoindex failure”;
// Get the size of the data available (store in len)
if (sysctl(mgmtInfoBase, 6, NULL, &length, NULL, 0) < 0)
errorFlag = @”sysctl mgmtInfoBase failure”;
// Alloc memory based on above call
if ((msgBuffer = malloc(length)) == NULL)
errorFlag = @”buffer allocation failure”;
// Get system information, store in buffer
if (sysctl(mgmtInfoBase, 6, msgBuffer, &length, NULL, 0) < 0)
errorFlag = @”sysctl msgBuffer failure”;

// Befor going any further…
if (errorFlag != NULL)
NSLog(@”Error: %@”, errorFlag);
return errorFlag;

// Map msgbuffer to interface message structure
interfaceMsgStruct = (struct if_msghdr *) msgBuffer;

// Map to link-level socket structure
socketStruct = (struct sockaddr_dl *) (interfaceMsgStruct + 1);

// Copy link layer address data in socket structure to an array
memcpy(&macAddress, socketStruct->sdl_data + socketStruct->sdl_nlen, 6);

// Read from char array into a string object, into traditional Mac address format
NSString *macAddressString = [NSString stringWithFormat:@”%02X:%02X:%02X:%02X:%02X:%02X”,
macAddress[0], macAddress[1], macAddress[2],
macAddress[3], macAddress[4], macAddress[5]];
NSLog(@”Mac Address: %@”, macAddressString);

// Release the buffer memory

return macAddressString;

When is iMessage coming to iChat?

Okay, so iMessage in iOS 5 is brilliant. It’s free, integrates seamlessly with the Messages app, replacing SMS messages with iMessages automatically to save money/text allowance when it detects it is possible, works over multiple devices, and is relatively quick to use to send photos, audio and video.

Other than the fact that it’s free, the feature I love most about it is that it works over multiple devices. I can start a conversation on my iPhone and when I realise the conservation is going to be a long one I can instantly switch to the iPad with its larger keyboard. The full conversation is already there, and the person I’m talking to won’t see any difference and so won’t realise I’ve switched devices. Alternatively, I can start a conversation on my iPad at home and then continue exactly where I left off on my iPhone once I’m out and about.

This seamless switching between devices in the middle of a conversation wasn’t possible before iOS5 (maybe not even possible on any other mobile devices?), and once you use it you realise just how obvious and fundamental it is. However, there is one big drawback in that, so far, there is no client to allow me to use iMessage from my desktop machine. Surely Apple must be planning to integrate it into iChat or make a separate desktop client so that we can seamlessly switch from iPhone/iPad to full keyboard on our laptops/desktops? I hope it is soon, and I’m sure as more and more people get iOS 5 this week and start using iMessage they’ll also realise just how much an OS X iMessage client is needed.

How to turn off repeat SMS notifications in iOS 5 and 6

At some point a long time ago I my iPhone started playing a sound multiple times for the same SMS text message. This got really annoying because my phone would make the SMS sound, I’d look at it and think I’ll deal with it later and put it down, then a minute or two later I’d get another SMS sound, think I had a second message and so look at it again only to find nothing new was there. I understand some people like this behaviour, but for me it was annoying. I was thankful when Apple added the option to change it in Sounds-Messages settings.

However, in iOS5 I found the multiple SMS notifications occurring again and I couldn’t find the setting in sounds anymore. Thankfully, after much searching I found it… so if you have iOS5 and want to have only one notification per SMS you will find the setting as follows…

How to turn off multiple SMS/text notifications in iOS 5

1. Go to the Settings app
2. Select Notifications
3. Select Messages
4. Scroll down and you’ll see the Repeat Alert setting… change it to whatever you prefer.

Universally Unique Identifier in iOS 5

Apple is apparently starting to remove access to the UDID (Unique Device IDentifier) in iOS5. I’m not sure I agree that removing the UDID is completely necessary to protect user privacy, perhaps it’s one step too far, as it can prove useful for many reasons. In any event, the best you can now do for identification purposes is to use a UUID (Universally Unique IDentifier). This has to be on a per-app basis. That is, there is no way to identify the device any longer, but you can identify an app on a device. As long as the user doesn’t completely delete the app, then this identifier will persist between app launches, and at least let you identify the same user using a particular app on a device. Unfortunately, if the user completely deletes and then reinstalls the app then the ID will change, but this is the best anyone can do going forward.

Here is some code for a method that will let you create and use a UUID…

+ (NSString *)localUuid {
   NSString *ident = [[NSUserDefaults standardUserDefaults] objectForKey:@"unique identifier stored for app"];
   if (!ident) {
      CFUUIDRef uuidRef = CFUUIDCreate(NULL);
      CFStringRef uuidStringRef = CFUUIDCreateString(NULL, uuidRef);
      ident = [NSString stringWithString:(NSString *)uuidStringRef];
      [[NSUserDefaults standardUserDefaults] setObject:ident forKey:@"unique identifier stored for app"];
      [[NSUserDefaults standardUserDefaults] synchronize];
   return ident;

Why buy anything other than a Motorola phone if you want Android now?

When Google bought Motorola for $12.5 billion it was clear to me that there would be no good reason for buying an Android phone from anyone other than Google’s Motorola going forward.  Google tried hard to tell its OEM partners and end users that their licensing model would remain the same and that OEMs and customers wouldn’t be affected when it came to choice or quality.  However, to me this seemed like pure marketing rubbish.  With Google now making Android hardware themselves they are in direct competition with their own OEMs.  If there is a major new feature or bug-fix in Android then surely it will appear on the Google/Motorola hardware before any other manufacturer’s hardware, simply because that’s all one company now and so their will be a tight coupling going forward, and because Google are now in a position to ensure their own Android hardware always gets a jumpstart on everyone else’s.  At best Google will trickle new Android versions and functionality to their OEMs only a little behind their own hardware.  At worst, going forward Google may lock certain Android functionality to only be enabled on their own hardware.  Personally, I think if you were shopping for a new Android phone now you’d have to be mad to buy anything other than Google/Motorola hardware.

Until today I couldn’t be absolutely certain that Google would favour their own hardware above others, but some documents released from the ongoing Oracle vs. Google court case make it clear that Google was already behaving in a biased fashion, so going forward it is clear they will now bias releases for themselves.  The documents show that Google internal guidance was to…

Give early access to the software to partners who build and distribute devices to our specification (ie, Motorola and Verizon). They get a non-contractual time to market advantage and in return they align to our standard.

Hmmm, don’t be evil?  I imagine Google’s OEM partners are going to be a little peeved by this, and customers will lose out in loss of quality and choice in Android hardware. The FOSS Patents blog has more details at…

FOSS Patents: Shocker for Android OEMs: Google document proposes giving Motorola time-to-market advantage to build Android “lead devices”.


In reply to iPhone and iPod | Scott Sherwood, where he ponders why the iPod app in iOS is allegedly being renamed to Music in iOS 5.

The first PowerBook came to the market in 1991.  The last was sold in 2006.  Over the 15 years it was available the PowerBook became widely known for first its amazing durability, then its aesthetic design, and its usability.  When Jobs announced Apple were throwing away the PowerBook brand in favour of the new MacBook name I would say the majority of people familiar with the PowerBook thought it foolish to discard the extremely strong PowerBook name for something that sounded weaker and was completely unknown.  Similarly, the iBook name was discarded on the same day.

So, Apple clearly have no problem discarding names when embarking on a new product roadmap or strategy (in the above cases the name changes signified the switch to Intel CPUs).  More recently, Apple have changed the way they refer to the AirPort.  One day my MacBook has an inbuilt AirPort, the next day the same machine simply has Wi-Fi capability.

Returning to the iPhone, even from the beginning it never sat well with me that the iPhone had an app called iPod in the first place.  Having owned numerous iPods over the years I thought of an iPod as a piece of hardware, something that I could hold.  iPod was a piece of hardware, iTunes was an app I used to listen to music.  What on earth was this piece of software called iPod?  When I ran it why didn’t I see the round scroll wheel that was synonymous with the iPod?  This app wasn’t an iPod, when I opened it the software didn’t even look remotely like the iPod UI I was familiar with, why bastardise the iPod name in this way?  Perhaps you feel differently because you never owned an iPod, but I think you have to understand what iPod meant to people before the iPhone existed.  Obviously, the only reason that app is called iPod in every version of iOS up until 5 is because they were trying to leverage the brand name to encourage success of the new device.

For me, the fact that it never made any logical sense, and that as time goes on fewer people equate the name iPod with the physical hardware that they previously used and loved, are reasons enough to make the change.  Many people who own iPhones today have never owned a physical iPod with a scroll wheel, they may not even recognise one if it were shown to them.  Imagine that was you, and you pick up your brand new iPhone and look at the apps and see iPod.  Wouldn’t you think “hey, I bought an iPhone, not an iPod Touch, so why does it say iPod here when I paid for an iPhone?” or “what the hell is iPod?”.  At best it is confusing for this class of user.

So yeah, for me it is obvious that there are several reasons for changing the name of the app: logical, marketing and clarity.  That said, I do share your inquisitiveness as to why now?  Just as the switch from PowerBook to MacBook signified the change away from PowerPC to Intel, I wonder if this change is a side-effect of a larger change in strategy.  I have heard rumours that in the coming years Apple will be diversifying the range of iPhones they offer.  Just as their laptop range is split into three broad categories, so they will split the iPhone into three broad offerings.  When this happens they may drop the iPod Touch altogether, and if you want that functionality you simply buy the lower-end iPhone and ignore the phone capability.

Windows Explorer in Windows 8

Improvements in Windows Explorer – Building Windows 8 – Site Home – MSDN Blogs.

What on earth are Microsoft doing here?  This has to be one of the worst UI designs I have seen in a long time yet the design team seem to be bragging about it.  Setting aside the actual design for a moment, consider what they are saying about the research they have conducted. They find that ‘users overwhelmingly use Explorer for core file management tasks’.  Hardly surprising right?  I think a file manager should be good at precisely one thing… managing files.  It should be focused on that task alone, and make it simple for users to achieve what they want to do, which is primarily going to be creating, copying, moving and deleting files.  However, it doesn’t seem MS share my views and focus.

In the above graph it is revealed that ~55% of commands are actioned via the context menu, ~32% via hotkey, ~11% via command bar, and ~3% via the menu.  For some reason this seems to lead them to a conclusion of “hardly anyone is using the command bar, we made to add more stuff to it to give people more reasons to click on it”.  Why come to that conclusion, do they have more data they aren’t showing us?  Because from those numbers I don’t see how that conclusion can be reached.  My immediate reaction when first seeing the graph was “well yeah, using the context menu is easiest”.  I don’t see anything in that graph that makes me think the command bar needs more functionality.  Indeed, those numbers lead me to question if the menu or command bar are required at all, and if they are they should be simplified to make the one or two tasks they are used for simpler.  Rather than realising that the context menu is the preferred way for many things, and that the command bar could be simpler, what MS are doing here is ignoring the successful context menu, and instead spending their time on complicating the command bar which is only required for 1 in 10 actions.

As an example of what I think is at best a lack of understanding or insight of the data, take the ‘Properties’ action, which is commonly used on Windows to get more information about a file or folder.  At the moment I have no problem at all using this.  When I open a folder and see a bunch of files I locate the one I want, right-click it, and select Properties from the context menu that pops up.  This is all logical, and requires little mouse movement since all the action takes place around the file’s icon.  However, rather than viewing this as a success, MS are saying it is a problem here, and that Properties must appear in the command bar since it is a frequently used action.  So now they want me to open a folder, locate the file, click to select it, move my mouse up to the command bar, locate the Properties button, and click that!  How is this easier?  How does it make more logical sense?  To me it seems this complicates the process by making you have to move the mouse more and also forcing you to bridge between the actions of selecting a file in one area and then moving to a completely different area to activate a function that works upon that file.

The only counterargument that makes sense to me is that they are aiming to essentially have no hidden functionality in the UI… or at least that any functionality that is hidden has an equivalent always visible.  However, I would argue that this is not going to be achieved here because there is only so much space and so instead you should choose what is shown wisely rather than just throwing everything down.  I think having only a few functions would be far better than this confusing mess which is far more likely to simply scare new users away rather than encourage them to investigate…


Let’s just list the functions now in the command bar.  There are now 19 functions on the command bar at once (and at least 33 in the top area of the window)!  They are of varying sizes and are split into 5 areas, one of which (organize) is further split into two.  I don’t know what they do yet, but 7 of the icons have down arrows suggesting that when you click them you will be presented with yet more options.  And this isn’t even all of the command bar!  This is one of four command bar menus.  If the same number of icons are on each area you could be attempting to traverse your way through about 80+ options in the command bar alone!  Oh, and I was only talking about the command bar in the middle there.  There is also the menu bar which has additional functions at the top left, and the navigation(?) bar with more buttons and text.  Really MS?  You really think this is an interface that people are going to be able to sit down and be able to use intuitively?  Please reflect on this, ask yourself how long it will take the average user to become familiar with these functions (if they aren’t scared off immediately), ask yourself if your mom would be able to sit down with this and just get on with it.

Honestly, I yearn for a simple and useable interface from Microsoft, but I’m clearly not going to get it in Windows 8.  Using a computer should be enjoyable, and there is no possible way that navigating through a maze of 80+ functions spread around multiple menus, areas, and differently sized icons is going to provide a pleasurable experience.  I’ve got the fear just imagining trying to use it.