Archive for the ‘Web Technology’ Category

Software is all about Context

Monday, February 22nd, 2010

Context is a very important factor in software development. Knowing the conditions under which your software will be used is an integral part of crafting a positive experience for your users. Many companies take this to heart and create truly engaging software that really connects with its users, but the vast majority miss the mark. While I’m sure I’d have no trouble pointing out a myriad of context-related issues in software made by Average Joe Developer, today’s focus will be on showing that even the top names in software aren’t perfect.

Exhibit A: The iPhone’s Clock.app

Let me tell you a story. A few weeks ago, the fiancée and I were scheduled to meet with a potential wedding venue early Saturday morning. Given that it was a bit out of the way and we tend to oversleep, we thought we’d be smart and set an alarm using the iPhone’s default clock app.

So Friday night, we set an alarm thinking it would wake us up Saturday morning. It did not; it turns out the alarm we set was for weekdays only! While this was entirely our fault, I’m still going to call Apple out on not taking context fully into account: when we set the alarm, why didn’t the app warn us that the alarm wouldn’t go off the next morning? I would imagine it’s very rare that anyone sets an alarm more than a day in advance. It’s much more likely that when someone sets an alarm at night, they expect it to wake them up the next day. This is a case where a neat feature is actually an annoyance because context isn’t handled as well as it could be.

Exhibit B: Google Maps

Continuing our story, while I was frantically trying to get ready I was loading Google Maps to get directions to our appointment. After punching in the address and asking it to route us there, Google Maps told me the trip would take over 9 hours. I freaked out! We don’t have 9 hours, we have 30 minutes; is this the right address? Did we accidentally book an appointment at a venue 9 hours out of Ottawa?

Actually, it turns out I had Google Maps set to give walking directions. Again, my fault, but again, where were the developers on this one? Did they really think I wanted to walk over 9 hours to get somewhere? Why not recognize that I was probably looking for driving directions and put a message at the top of the screen asking if that’s what I meant?

(For the curious, this story did have a happy ending: we made it there a slight 15 minutes late, and this was the venue we eventually chose for our wedding.)

Exhibit C: Firefox’s Spell-Check

Firefox is an incredible piece of software. It is currently the browser of choice for about one quarter of all internet users, and in many ways helped to revolutionize the web browser market. But one area where it hasn’t really advanced as far as it could have is its built-in spell checker. I don’t have a fancy story for this one; the data speaks for itself. Here is a list of words that show up as spelling errors in Firefox 3.6:

Some of the internet’s most popular websites:

  • YouTube
  • Facebook
  • Myspace
  • Flickr

Well-known web technologies:

  • Skype
  • Silverlight
  • Webkit
  • Wordpress, CMS
  • PHP, CSS (it gets HTML)

Very common computer words:

  • Inbox
  • USB

Extremely successful desktop software:

  • Photoshop
  • PowerPoint

Apple products:

  • iPod, iPhone, iPad
  • Macbook
  • iMac
  • OSX (it gets Linux and UNIX)

These are all very common words in internet parlance, and it’s ridiculous that they are highlighted as possible spelling errors. Why not add them to the dictionary? A simple white-list that could be crowd-sourced to the community seems right up Firefox’s alley; I wouldn’t be at all surprised to see this addressed in a future release.

What can we learn from this?

My main take-away here is that context is a big factor in software development, and one of the hardest to get right. Even the big guns have room for improvement, which means the rest of us likely do as well.

The Present and Future of Flash

Monday, February 8th, 2010

Adobe Flash is at an interesting point in its existence. For about a decade, it was the only way to get rich, dynamic content onto the web. If it was the year 2001 and you wanted a really sleek UI, or video, or any kind of animation, Flash was your best bet — it was pretty much a monopoly. Then things started to change:

  • DHTML started to take over some of the really basic use-cases for dynamic events like rollovers and showing/hiding content.
  • AJAX made truly dynamic content easier for the non-flash world.
  • The mobile web started to take off, with most devices not capable of supporting Flash.
  • Microsoft released Silverlight, a competitor to Flash in the rich interface space.
  • Apple started releasing wildly popular devices that intentionally avoided supporting Flash.
  • Browsers started implementing support for HTML5 and CSS3, which are slowly being adopted by designs that would historically require Flash.

Slowly but surely, alternatives to Flash have been picking up speed, and things beyond Adobe’s control have prevented Flash from penetrating certain markets (mobile in particular). What does this mean for Flash as a technology?

Flash isn’t going away anytime soon…

This isn’t one of those posts about how HTML5 or the iPad or global warming is going to spell the end of Flash. Flash is a major player in many areas of the web, most of which won’t change anytime soon. In particular:

Games — There are tons of online Flash games. This is a huge market that Flash has absolutely dominated since day one, and none of the technologies mentioned above can compete with Flash on this level of interactivity.

Video — Like it or not, HTML5 is not yet strong enough to handle cross-browser, web-based video. Even when it is (and it will be sooner than you think) Flash will still be used well into the future because it’s the only solution for legacy browsers, and the vast majority of users don’t update their browsers as often as they should.

On top of that, Adobe has created an entire ecosystem of software and a vibrant community for designing, building, and publishing Flash-based applications. Plenty of people are heavily invested in these tools, and no amount of evangalism is going to convince them that their problems could be better solved by today’s Flash-alternative du jour.

…but Flash will start having a reduced role on the web in general.

It would be unrealistic to pretend that these new technologies aren’t eating into Flash’s market share. For one, even in the most complex cases, some projects are choosing Silverlight over Flash. Not the majority (not even close) but more than none, and Microsoft is a powerful competitor that can compete with Adobe on the development tools and community levels.

Secondly, HTML5 and CSS3 can do some pretty neat things. For cases such as modern, dynamic navigation and simple logo animation, it will soon make much more sense to use features supported by the browser than a heavyweight proprietary plug-in; especially if all you need is a quick piece of eye candy.

Finally, there are the problems caused by Apple. I can think of three:

No iPad/iPhone Support — The longer this keeps up (and I don’t see it changing anytime soon), the more likely it is that someone will create a cool, interesting way to do fancy, Flash-like things in an iFriendly format. And then a general-mobile format. And then a web format. The last thing Flash needs right now is for some brilliant start-up to shake things up even further.

Macbooks are getting popular — Adobe claims that Flash runs on every platform ever, but as Chris Rawson astutely points out in this excellent article, that’s been easy to say while most of the world has been running Windows. With Apple’s laptops gaining popularity, people are starting to realize that Flash doesn’t run as well in OSX. The more Macbooks Apple sells, the more Adobe’s claims of market domination will start to dissolve.

No iPad/iPhone Support: take two — I want this website to be viewable on the iPhone, the iPad, and whatever whimsical hardware Apple comes up with next. That alone means I’m not going to use Flash in my blog’s design, ever. I’m admittedly in a minority here, but I wouldn’t be surprised if today’s kids getting into web design are also going to want to show off their cool, new, standards-compliant sites on their cool, new, iApproved devices. This sort of trend will slowly but surely push Flash out of the cool-new-site space.

Getting along with OSX is something that Adobe is going to have to work towards to keep Flash competitive, especially as new markets evolve out Apple’s hardware.

I’m not anti-Flash.

I’ve been using Flex Builder to build cutting-edge Flash applications for years, and I still believe there are many cases where Flash is a legitimate choice for creating a rich internet experience; there just aren’t as many as there used to be, and this combination of new, exciting technologies and pressure from Apple are making for some exciting times in the world of web design.

2010 is shaping up to be a wild ride for Flash and its competitors, and I can’t wait to see where it takes us. What are your predictions?

The iPad Dilemma

Wednesday, February 3rd, 2010

Up until very recently, I was seriously considering getting a Macbook. I have a desktop PC that covers my day-to-day tasks, but I want something I can use from my couch, and in particular I’ve started to really miss OSX (I used an iBook as my primary machine up until more recently than I’m willing to admit).

Then Apple releases the iPad, which promises to do everything I was planning to use my Macbook for at nearly 1/3 the price. Now what? Do I keep eying the Macbook or start counting the days until the iPad hits stores? I’m completely torn.

First let’s get a few things out of the way. I don’t want the 3G version of the iPad. I have enough monthly bills already, and my iPhone covers all my 3G needs. I’m also not the kind of person that needs much space, so the low-end iPad suits me just fine. And I don’t want a Macbook Pro; a regular Macbook is easily enough power for me, though I would probably take the ram upgrade for an extra $100. With that in mind, we’re looking at $500 for the iPad vs $1200 for the Macbook.

I want something I can use while sitting on my couch, and all it has to support is writing blog posts and your standard email/browsing activities. Both machines are perfectly capable of performing these tasks, and I’m already fluent in both OSX variants from owning an iBook and an iPhone.

Now for the interesting part: the advantages each device offers.

Advantages of the iPad:

  • It’s significantly less expensive, as we’ve already discussed.
  • You can turn it sideways. That may sound ridiculous, but I much prefer web browsing on a screen with more height than width.
  • I love the form factor. Watching the video on Apple’s website… It doesn’t look like he’s holding a tablet and running a browser; it looks like he’s holding a browser. This level of UX is absolutely a step above anything else on the market, Macbook included.
  • It has substantially more novelty, and all kinds of potential that we don’t know about yet.

Advantages of the Macbook:

  • It’s a well-established line. You know exactly what you’re getting, and how awesome it is.
  • Multitasking. I’d like to be able to have a browser open at the same time as Twitter and an IM client.
  • The platform is more open. I like using browsers other than Safari, running commands in Terminal, and hacking together useful AppleScripts.
  • What if I want to do some iPhone development? I’d need a Macbook, unless Apple releases some sort of iPhone-specific XCode for iPad (and who’s to say they won’t?)

It’s a mess. There are so many differences, but the advantages of each individual device are so appealing that I can’t make up my mind. Worst of all, I’ll probably regret either decision — if I go with the Macbook, I’ll sigh longingly every time I see an iPad; if I go with the iPad, I’ll curse every time it can’t do something that the Macbook can. I’m still undecided, and that’s not likely to change anytime soon.

What’s your take?

Should I go with the iPad or the Macbook? Are you in a similar position?

An Excellent Use-Case for Google Wave

Friday, January 29th, 2010

Yes, another post about being engaged (it’s kind of this week’s theme). I promise this will be the last one, at least for a while; there are just a lot of interesting thoughts coming out of planning a wedding. We’ll resume our regular totally-non-marital posts at one per week on Monday.

I’ve been meaning to write up a good post regarding my take on Google Wave pretty much since I launched this blog in October ‘09. The trouble was, I could never find a really good use-case that demonstrated how powerful and useful Wave is — until now. So without further ado:

I don’t understand how people planned weddings before there was Google Wave.

My fiancée and I are both the type to do a lot of research and planning before a big financial decision. So when it came to booking a venue, with so many different options and associated costs, we both dove right in. The only problem was that we had a really hard time staying in sync; we would both research the same venue or lose track of contact information for a place we really liked — it was a disaster. We tried ad-hoc discussions in person (this didn’t work; human memory is far too fallible) and a mess of emails (I had to scrub my inbox with a sponge after that one) but we found we were still stepping on each others’ toes. Then it dawned on me:

What we really needed was a wiki.

We needed someplace where we could both see and add and edit information, highlight important dates or phone numbers, and easily compare venues to one another. Nothing huge (a CRM would have been way overkill), just a light-weight wiki that would be approachable for my not-very-geeky soulmate.

So I fired up Google Wave and spent a couple of minutes explaining it to her. Now we have a wave for wedding venues, where each wavelet (that’s what the posts in a wave are called) is about one venue. When either of us comes across a cool-looking venue, we can quickly scan the wave to see if it’s already there, and if it isn’t we can add it and fill in some quick details. If we want to contact them, we highlight the contact info, and if we make an appointment to visit a venue, we highlight the date as well; this way even at a quick glance we can quickly see when our appointments are and if there are any left to make. If either of us have comments about a venue, we can reply to its wavelet; this takes care of the usual meta-discussion in an informal but persisted way (the indent makes it easy to ignore when skimming).

So far, this is working incredibly well. We’re both completely in sync all the time, and it’s easy to find key information by quickly looking in one place. We’re already starting to add new waves for other things we’ll both want input on, like the photographer, the DJ and the cake. I have no idea how else we could be doing this as efficiently as we are; Wave is suddenly crucial to our planning process.

What went right?

I’d like to touch briefly on why this has worked out so much better than my previous experiences with Wave. I think one of the big problems with Wave is that information tends to get scattered — it’s easy to lose something in a mountain of replies, and the inability to hide or mass-delete old content causes a lot of unnecessary and frustrating sifting. What I did differently this time was enforce some basic rules about how the wave should be structured: one venue per wavelet, replies are allowed for discussion if required. This way there’s no checking to see if that golf course with the gorgeous gazebo is nested somewhere in a chain of replies, or deciding what depth to add that maple farm that four different people have recommended. They’re both easy decisions, and sticking to these informal rules really pays off in terms of keeping the wave easy to read and update.

Have you found a good use for Wave?

I’m curious to know what other creative uses people have found for Wave. If you’ve got something good, please share!

Why I don’t hate Internet Explorer 8 (not that I’d ever use it)

Monday, January 18th, 2010

This week’s entry is a double feature about Internet Explorer. Part 1 examined why IE4 was awesome. Read on for part 2, where I’ll admit that I’m grateful for IE8.

Let me start by saying that in general, I find Internet Explorer appalling. The fact that so many people have been supporting an insecure, slow, feature-weak, standards-deviant browser with serious rendering problems and an awful user interface for so many years afflicts my soul with such utter disdain for Microsoft’s line of browsers that I automatically regard every new incantation thereof as an affront to both the web and mankind as a species.

Now that that’s out of my system, I don’t entirely hate Internet Explorer 8. I wouldn’t use it, not with so many better alternatives just waiting to be explored*, but it does offer one massive improvement over its predecessors that I’m very pleased with: IE8 has fantastic CSS 2.1 support.

I’m not making this up.

Check out the standards support table on this page, specifically the secion about CSS 2.1. Look at the massive difference between IE6/IE7 and IE8. Even Firefox 3 and Opera 10 can’t claim the same level of compliance. IE8 isn’t just a competitor when it comes to supporting CSS 2.1, it’s a role model.

This is a big deal.

For the first time ever, web developers can finally count on using standardized CSS to create a modern web experience without having to worry about “how to handle Internet Explorer”. Granted there is still the matter of older versions of IE, but with Windows 7 repairing a lot of the damage done by Vista, more and more users are upgrading to a new OS, and with that, a new browser. Writing cross-browser CSS is becoming easier than ever before.

Of course, many people will argue that simply supporting CSS 2.1 isn’t good enough (and they’re right). Internet Explorer is still way behind its competitors when it comes to newer standards such as HTML 5 and CSS 3. But what if this is just the beginning? Internet Explorer 9 is already well into development, and if Microsoft can turn the hobbled CSS implementations found in IE6 and IE7 into what is now in IE8, who’s to say they won’t be able to step up support for CSS 3 and/or HTML 5 in IE9? In as little as a year or two from now, Internet Explorer may be a legitimate browser for cutting-edge web experiences.

Share some thoughts!

What do you think of IE8? What about Internet Explorer in general?


* For the curious, the browsers linked in that phrase are the ones that were selected to show up in Windows 7’s “browser ballot” in Europe due to antitrust charges brought by the EU against Microsoft’s bundling of Internet Explorer with Windows. Computer World offers a great summary and FAQ on the matter.

IE4 was the Best Version of Internet Explorer Ever

Monday, January 18th, 2010

This week’s entry is a double feature about Internet Explorer. Read on for part 1, which examines why IE4 was awesome, then check out part 2, where I’ll admit that I’m grateful for IE8.

I found an old CD at work the other day; it was an install disk for Internet Explorer 4 SP1 for Windows NT and 95, still in its original packaging. I was quick to grab it, thinking about how great it will be to make fun of what an awful browser it must’ve been (I actually never used Windows NT or 95 or even 98.. I was raised Apple until 2000). So I pulled up Wikipedia and started reading, expecting to find plenty of things to laugh at, only to realize that what I was holding in my hand was actually a remarkable software artifact. IE4 wasn’t just great, it was legendary.

IE4 was the first wildly successful version of Internet Explorer. When it was released in fall of 1997, Netscape Navigator was the default “everyone uses it” browser. Internet Explorer, as a franchise, was the underdog. In merely a year and a half, IE4 had attained over 60% market share — it was the first version of IE to capture the majority of browser users, starting the first-ever browser war and a dynasty of sheer dominance for the Internet Explorer brand that peaked at just over 95% market share and is still running today, 11 years later.

IE4 pioneered the Trident rendering engine, which has been used in every version of IE since (and a few other places). It was bundled with the first official version of Outlook Express, and also included a chat client, a VoIP client (which supported video chat), a stripped-down web development platform, and RealPlayer (which was actually popular back then). There was even an optional download package that added an Active Desktop feature, which was essentially a precursor to the widgets found in Windows Vista/7.

IE4 also made significant UI improvements to the Internet Explorer line, moving from the bevelled-button motif that was popular at the time to the toolbar we still see in browsers today (see this pre-IE4 screenshot, then this one of IE4 — both courtesy of this wonderful IE archive site — and note the difference in the toolbar).

In short, this was one kick-ass cut of software. Can you imagine what it would be like if all of Microsoft’s output was this revolutionary? Where would browsing be today if every version of IE raised the bar this high?

Does Chrome Frame do more harm than good?

Wednesday, October 7th, 2009

There’s been a bit of buzz around the web lately after Google proposed a solution to the IE6 problem in Chrome Frame. While it seems like a great idea up front, there’s actually quite a bit of controversy behind whether or not this is a valid solution. Read on for a quick summary of anything you might have missed, followed by my own take on the matter and a chance to share yours.

Let’s get you caught up

Internet Explorer 6 is a browser that was created for Windows XP and released in 2001. Due to the massive popularity of XP and the widespread adoption of the Internet Explorer name going into this millennium, it’s still used today by a non-ignorable portion of web users. This is a problem for web developers, because it’s often necessary to bend over backwards in order to get new and exciting web products to perform reasonably in a browser that is about half as old as the world wide web itself.

While developing Wave, Google had to come up with a solution for IE6, and decided to do something novel by creating a plug-in for Internet Explorer which replaces the entire web page with an instance of Google Chrome, a very modern browser capable of rendering the latest-and-greatest the web has to offer. This “Chrome Frame” is then used to render the intended page, all completely transparent to the user who is still using and looking at Internet Explorer.

Now obviously this was met with a bit of backlash from Microsoft, who was none too happy seeing Google inject its Chrome rendering engine into Redmond’s (in)famous browser. They pointed out that this makes IE less secure, which Google obviously disagrees with, and some blogs noted (correctly) that Chrome Frame breaks accessibility features in IE which is kind of a big deal. Further supporting Microsoft was Mozilla (!) who referred to the Chrome Frame solution as “browser soup”.

Of course there are many proponents of Chrome Frame as well; it is a very convenient way to handle the growing discrepancy between IE6 and the modern web, and in some cases that benefit alone will outweigh the issues described above. There’s an article about how Chrome Frame will affect the corporate world which has sparked some very interesting discussion in the comments (which are now more enlightening than the article itself) — I highly recommend taking a look.

My thoughts on the matter

I think an underrated aspect of this debate is that this is about users, and what they expect from a browser. It’s not a technical problem, and it shouldn’t be met with a technical solution. Google is essentially offering a patch that will encourage users to continue browsing the web with a broken browser. What Google should do is inform users of the problems with IE6 and explain the benefits of a new browser with a very strong recommendation to upgrade. This will result in more educated users using better browsers, which is far more valuable to Google and the web as a whole than more users still clinging to IE6.

What’s your take?

There are a lot of different ways to look at this issue. Share your perspective and leave a comment!