Dear Friends and Family: Stay Away from Windows 8

I don’t normally post a lot of tech advice here.  People ask me for it sometimes, and I give it because they ask.  I’m stepping outside of that pattern to say that you should avoid Windows 8.  It is to user interfaces what being kicked in the face is to life experiences.  In case you didn’t major in analogy in school I’ll put it like this: using windows 8 will be painful, unfamiliar, and they have moved all of your cheeses.

Windows 7 was awesome. I upgraded to it the day it was released on all 4 of my family’s computers.  It was that good.  Windows 8 is a major let down with lots of potential confusion.  Windows 8.5 may be better. They may release Windows 8.1 (remembers Windows 3.1?) that fixes some of the major issues Windows 8 has.  But for now, stay away from it.

Reasons for this, you ask? 1) The move to a semi-tablet focused interface means that a lot of things you know about Windows are gone by default.  There is no small, easy to navigate start menu.  2) The start button is gone if you switch to desktop mode.  If you press the Windows key on your keyboard you’ll be faced with the tablet application picker (AKA: Windows Metro).  3) They’re copying Apple and creating a Windows store just like iTunes and the App Store.  This will mean that over time Microsoft will limit what developers can publish and will censor material based on their corporate needs and drive.  This is unacceptable.

If you make change for change’s sake, you’re just annoying users who have become accustomed to a pattern.  If you benefit the user with these changes, then there’s a trade off that hopefully most people will see the value in.  This is not that positive change, this is just making change to pretend you’re innovating to ‘lead the market’.  Bad move, Microsoft, bad move.

<done ranting, sorry>

Windows 8, Internet Explorer 10 and Web Developers

I just got done reading the specs on Internet Explorer 10’s tablet ‘features’ in Windows 8.  This new set of features is incredible on the surface, but as a developer I’m flabbergasted that Microsoft has decided to ignore the de facto standards and now has created yet another touch/tablet interaction model.  I’m not flabbergasted a company would do that, because Apple did it with the iPhone and iPad to create the de facto standard that RIM (disclosure: I work for a subsidiary of RIM) and others have followed.  What this means for developers who are trying to reach the widest possible audience is that their web applications are going to have to choose between:

  1. Lots of branches in their code to handle every possible variation of event detection
  2. Send users away
  3. Attempt to use some open source or home rolled equalization library that tries to mask the differences (this way could lie madness)
  4. Give the users a lesser experience
  5. Create multiple versions of the same thing, each with their own special ‘per device’ sauce (this way also lies madness).

Maybe there’s another option, but I just don’t get why Microsoft has done this to devs.

Today BDConf wrapped up.  It’s targeted primarily towards mobile development and I had a chance to go to their first event in Grapevine, TX in March.  One of the things that they talked about was writing for an ever changing web audience that accesses your site/web application through any number of devices.  However, this sort of added complexity from a major player in the OS department means that one of two or three things is going to happen, and one of them isn’t going to be developer buy in.  I’m convinced that Microsoft is going to have to either adopt some method for giving developers a smaller amount of effort to reach their audience on a Windows 8 tablet, or they’re going to really hurt their end user experience.

I want to create interactive, 3D-space enabled applications with rich interactions that happen to live in a browser, but Microsoft is definitely not reaching out to developers to create a “bold”* new experience in IE10.  They’re not making it easy for end users to have a great, familiar experience.  If you’re switching from an iPad 1 or 2 to a Windows 8 tablet you’re going to get fed up, and move back to the iPad.  If you were to switch from the iPad to the PlayBook you’d be comfortable.  Microsoft has created a barrier to entry, and this is not a good move.  They’re distancing themselves from developers, and they’re distancing their users from rich content.

(update:) Don’t misunderstand me to think that all of what they’ve added to IE10 is a move in the wrong direction, but it’s just not cool that they added a bunch of new HTML5 standards support, and ripped the mobile/tablet market a new hole to support.

* Microsoft employees used the term “bold” numerous times during their announcement presentations today and many people in the media and on twitter noted this.

HTML5 *Is* Ready

In what has to be one of the weirdest declarations of 1990’s Netscape4 vs. IE4 thinking the W3C’s Philippe Le Hegaret has suggested that we not deplay HTML5 yet in web projects.  I’m pretty sure that if we wait until all the web browsers are ready for HTML5 we’ll get the go-ahead in 2036, about the time I’m ready to retire.  Some poor blokes will still be on IE6 with more malware and viruses than Windows ME can deal with and the W3C will be telling us that we should still step into the HTML5 pool with gingerness.  Forget about HTML5 as a stable standard since we have things like HTML5Boilerplate, and JavaScript patches as well as things like Google Chrome Frame.

The idea is not that we should try to implement every fringe, unverified hack and standard, but we’ve been working with bleeding edge HTML4.1/ECMAscript and de facto browser standards for over a decade.  If that’s not clear to the W3C then I’m pretty sure they’re not prepared for 2011 when every major browser vendor will announce that they’re HTML5 ready.  Will there be interoperability issues?  Certainly.  Will there be hacks to get around them?  There already are!

HTML5 is a great concept and I think it will be the de facto standard moving forward from 2011 further.  I’m going to be updating all of my blogs to use HTML5 as time allows.  HTML5 will save money (working on a blog post for that) for companies that deplay the markup, ISPs who have to have provide bandwidth, and save time for end users who do almost nothing but upgrade their browsers to HTML5 ready versions and get the benefit.

One of the problems that made the HTML4/Netscape 4/IE4 wars so difficult was that bandwidth was scarce and unless AOL shipped yet another CD to your house with IE (5 or 6) on it, upgrading could take so long that your grandma’s call on the dial-up connection could be blocked.  However, with DSL and various other broadband mechanisms in place on top of auto-updating browsers the cost of the upgrade is minimal at best.  HTML5 is not the future, it’s the present.  Google pushed Google Wave as HTML5 goodness May 27th 2009 as a presently capable, functional application.  That means that very large corporations reaching millions of users have been using HTML5, even if it required a sub-set of browsers, for a hear and a half.  That means that my iPhone, my BlackBerry, my Droid and an array of other devices running Webkit and my desktop browser are all generally HTML5 capable.

I believe we can use HTML5, even if we don’t get to use it every single day for every possible feature it could provide if cross-browser perfection were achieved.  It’s ready.

IE7 ClearType Gripe

I fully understand why Internet Explorer 7 uses clear type. Some people’s eyes work better with ClearType. It is simply an accessibility nightmare in my humble opinion. Actually, the problem is not in the ClearType – which works better on some displays than others – but it is in the Internet Explorer ‘Advanced Options’ dialog. If you’re a glutton for punishment take a glance at it [click on the screenshot below for a larger version].

As a designer please use consistent text to give users the simplicity of vocabulary.  If all of the options use enable or disable rather than both, this will help.  Worse is the ClearType option which says, “Use…”  that’s neither enable or disable and it makes the scanning of the text even more frustrating because its even more words your brain has to parse as you scan over the text.  If you design interfaces – please consider being consistent.  I have some software I need to update to take this into account, but please – all new software should be written with greatest usability in mind, and all older software should really be updated.

The Advanced Options Tab in Internet Explorer 7

The Advanced Options Tab in Internet Explorer 7

They Got it Right: TripIt Invite

I just got an invite from TripIt.com. Well, it was through TripIt.com, from my buddy Dave. When the invitation arrived it not only had a link, but it had a username (my email address) and password already in the email. Wow. The cost to click the link and join their social network was much smaller than sites where I know I’m going to be skating around forms for half an hour to get setup *cough* hotmail *cough*.

TripIt.com got it right. Now I just have to look for opportunities to use this same style, which I find QUITE inviting.

Write It Like You Want to Experience It

I dabble in the world of philosophy at times and one of the philosophical movements that I don’t participate in, but find interesting is existentialism. Experience is all that there is doesn’t suit me, but in the world of software development experience is all that there is.

  1. Does your software do what it says it can do?
  2. Does your software do that in a way that is simple?
  3. Does your software do it in a visually attractive way?
  4. Does your software do it in a way that is memorable?

For some folks these questions aren’t critical, but they help. I personally love to use certain pieces of software because they deliver on the promised goods, they’re simple, they’re attractive and most of all I remember them when I’m talking with others about software they may want to purchase. It isn’t grassroot software advertising that makes software catch on, its software that is designed well that brings about grassroot advertising.

The Double Save

I just finished proving my residency as a Colorado state citizen for some continued education. I needed to do this so that I didn’t have to pay out-of-state tuition fees of over $1000.00. While the staff at the Community College were trying to change my status to resident they went through all sorts of heck with generic error messages that didn’t help and java dialogs asking them if they wanted to try again until either their computer crashed, their computer became outdated, or the miraculous happened and things actually saved as they were supposed to (I am not making up the number 48 when I say they had to try 48 times to get things to save).

What really concerned me though was that the staff had been trained to get things to work by saving the information twice. You see the first save worked, but the second save refreshed the information from the database. Whomever coded the sorry Java/Oracle/Pergatory application was too lazy to write the code correctly and failed to understand the need to refresh tainted data. If people use your software please don’t train them to double save. It just isn’t worth keeping your code around if you work that way.

The ‘Less is…’ Controversy

Within the last couple years I have gotten more into design methodology, planning methodology and the evaluation of code quality verses quantity. I read several blogs that attempt to broach this subject: lesscode.org and 37signals‘ blog. They’ve had a disagreement recently, which is fine, its none of my business… I don’t care. However, Jason’s post that I read about 2 minutes ago reminded me of something: Steve Wozniac. Steve was the keynote speaker at the Gnomedex several years back and that speech was presented as an MP3 on IT Conversations. What really grabbed me about his talk was not just the funny stories, which were sometimes hilarious, but also the that he took the limitations of his components to be a challenge of their optimization. If I can only have X then how can I make X as fast as possible? This is the mindset that all hardware designers, coders and product developers should have (unless the device is SUPPOSED to be slow 🙂 ).

Learn how to write already faster code. For example read books on speed optimization so that when you code you automatically use the loop type that is quickest for the language in your scenario (that means you need to know what type of loop is fastest in what scenario). I know in PHP that various appending operators for text strings are faster (‘,’ is faster than ‘.’), using single quotes instead of double quotes makes the page get processed faster because double quotes are always parsed for PHP variables. I recommend that you learn your language, know why C++ uses character arrays instead of string objects on a more basic level. In fact, learn why Java does that as well… if you’re using Java. But learn it and know it, you’ll be glad you did, and so will your employer if you have one. And if you’re self employed… this should be old news for you.

Search Engine Optimization Verses Usability

Recently a client of mine hired a search engine optimization (SEO) company to help get their site optimized for search engines. What blows me away is that sometimes practices that may help in ranking a little bit blow the crud out of usability. One recommendation the company made was to use images and have ‘alt’ attributes to help increase ranking. However, the client’s site is already heavy on the graphics and so if they add more images they will actually increase the download time so much that users will need a personal vacation to the water cooler, a trip to the bahamas or maybe could serve a life sentence in San Quentin before the thing loads up.

If you want to get good search engine ranking, do yourself a favor, hire a designer who knows symantic markup, get a nice design that folks might just link to for the appearance, and keep it clean. Write good content that the search engines will eat up, people will link to, and that informs actual readers of valuable information. None of what I’m writing here is new, revolutionary or a secret, however, SEO firms insist on magical markup and stupid hacks. Wake up folks!

Can Vs. Should

Recently a support request for WordPress came up on the wp-hackers email list I subscribe to that reminded me of one of the big delimas of programming (and frankly much of life): If you can do something, should you do it? There is a big, and valuable, movement in web design called contingency design. This design approach says, “Given Murphy’s Law of things going wrong, what can we do to prevent that from happening?” In general this is a good principle. However, it is not a law. You need to find areas that are useful for your time, things that help where 90% of the people will need it. In programming misconfigured machines can cause ‘bugs’ that are really just the result of a misconfiguration. In design it is possible to spend extra hours working on things that do not help the end user because only 1 person in 10,000 will ever do what it is you’re working on and they don’t need to do it.

This is basically an issue of prioritization and evaluation of what is vital and what is extraneous. Sometimes in interface design choices are made that make the development process quick, however, the end user is not thought of. In this case usability is so bad users might not use the feature at all. In other cases users might misconfigure the software simply because the interface is poor. Make priority judgments based on:

  • Quality
  • Cost
  • Time

Note:Thanks David O’Hara for showing me this ‘triangle of evaluation’
Realize that you usually can’t have something that is of the the utmost quality in a very small amount of time, or that if you design something that takes more time to develop because of quality needs, the cost will go up.

Just because you can do something doesn’t mean you should do something.