Goodbye Steve

I lost a very close friend of mine a little over week ago. Steve died when he lost control of his car on the way back from a friends birthday celebration. He was cremated on Thursday, I think that’s really when it actually hit me that he was gone – up until that point I’d managed to shut my feelings out so I could get on a do the things I needed to do … get on with work, help Steph with the funeral arrangements. It’s probably not a good idea to stick your head in the sand though, or pretend nothings wrong. I did make a few careless mistakes at work this week, I guess I was a little distracted – but fortunately I work with a group of guys and gals who are quite perceptive and know when something not quite right.

It was only Thursday it really hit me – at the crematorium. It’s a good job we have the Easter weekend, it’s given me a little time to reflect on things … get my head out of the sand and actually admitt to myself something is wrong.

As I write this im struggling to find the words to do him justice, but when I think of him I’m reminded of this passage from the Teachings of Tecumseh, i think he’d have appreciated this:

So live your life that the fear of death can never enter your heart. Trouble no one about his religion; respect yours. Love your life, perfect your life, beautify all things in your life. Seek to make your life long and of service to your people. Prepare a noble death song for the day when you go over the Great Divide. Always give a word or sign of salute when meeting or passing a friend, or even a stranger, if in a lonely place. Show respect to all people, but grovel to none. When you arise in the morning, give thanks for the light, for your life and strength. Give thanks for your food and for the joy of living. If you see no reason for giving thanks, the fault lies in yourself. Touch not the poisonous firewater that makes wise ones to fools and robs the Spirit of its Vision. When your time comes to die be not like those whose hearts are filled with the fear of death, so that when their time comes they weep and pray for a little more time to live their lives over again in a different way. Live your life so that when you sing your death song, you will die like a hero who is going home with no shame to meet the Creator and your family.

rest in peace … old friend.

Microsoft is dead.

I’ve read pretty much all of Paul Graham’s essays. I think he’s a wonderful writer and in the past we have often found ourselves debating his views at our bi-weekly geek bookclub @ Talis. One of his most seminal pieces was Hackers and Painters – which every developer should read. So, as you might imagine, I was more than a little intrigued this morning when my FeedReader listed a new essay by Paul with the contentious title: Microsoft is Dead.

Paul argues that Microsoft is no longer frightening, that the company is no longer seen as a threat, no longer casts the shadow it once did over the entire software industry:

I can sense that. No one is even afraid of Microsoft anymore. They still make a lot of money—so does IBM, for that matter. But they’re not dangerous.

Paul attributes this demise, if that’s the right word for it, to four things:

Firstly , Google. Who Paul believes is the most dangerous company now by far, in both good and bad senses of the word – using www.live.com as an example of how Microsoft is limping behind Google, continuously playing catchup.

Secondly, was the release of Gmail and the introduction of AJAX to the masses. Gmail showed how much you could do with web based software – signalling the death knell of the desktop as more and more applications are delivered over the web. Paul describes how Microsoft themselves might have contributed to the rise of AJAX, something I was previously unaware of:

Ironically, Microsoft unintentionally helped create Ajax. The x in Ajax is from the XMLHttpRequest object, which lets the browser communicate with the server in the background while displaying a page. (Originally the only way to communicate with the server was to ask for a new page.) XMLHttpRequest was created by Microsoft in the late 90s because they needed it for Outlook. What they didn’t realize was that it would be useful to a lot of other people too—in fact, to anyone who wanted to make web apps work like desktop ones.

The third cause is the widespread availability of high speed broadband Internet access – which is key to facilitating the delivery of web based applications to end users – which in turn is key to moving users away from the reliance on desktop based tools and applications.

The final nail in the coffin, Paul argues, came from Apple. The company re-defined itself and offered the world a viable alternative to Windows, in OS X. I know from personal experience that although I don’t have a Mac or a PC running native Linux, I do much of my development work in Linux VM Machines – this is partly due to infrastructure policy on our company laptops … which I should hasten to add … just changed 🙂 So when I get my shiny new laptop I can run Linux on it natively Yippee! ( I’d love it even more if I could have one of those 17″ MacBook’s … pretty please Ian if you do I’ll buy you one of these t-shirts!)

I think to a great extent Paul is actually right. But I personally wouldn’t count Microsoft out of the running. Microsoft is still a company that is capable of innovating great things. Just take a look at what’s coming out of their research labs in terms of PhotoSynth and DeepFish – to understand that they are looking to push the envelope in certain areas. Unfortunatly it does appear that these days they are reacting to innovations made by their competitors – www.live.com , and maps.live.com are great examples of two Microsoft products that are essentially late alternatives to Google Web Search, and Google Earth. Instead of leading the way, Microsoft is being forced to change it’s traditional business because others, like Google, are changing the industry around it.

I think Paul is absolutely right when he attributes part of their downfall, as it were, to their complacency as a Monopoly:

I’m glad Microsoft is dead. They were like Nero or Commodus—evil in the way only inherited power can make you. Because remember, the Microsoft monopoly didn’t begin with Microsoft. They got it from IBM. The software business was overhung by a monopoly from about the mid-1950s to about 2005. For practically its whole existence, that is. One of the reasons “Web 2.0” has such an air of euphoria about it is the feeling, conscious or not, that this era of monopoly may finally be over.

It’s been a well known fact for years that Microsoft is propped up by the profit it generates from two product lines … Microsoft Windows, and Microsoft Office. Hell even the XBOX is still making a loss for the company. It’s no accident then, that Google, have released browser based Office applications, in the form of docs.google.com. This service allows people to write and share documents and spreadsheets for free, combined with gmail and several other apps. Google are now positioning themselves as a service provider offering enhanced versions of this service for small businesses for $50 per user, per year. This will no doubt force Microsoft to change – perhaps even releasing a browser based SOA version of its Office Suite. It’s going to be interesting to see how this competition between these two giants pans out. I’m not saying that being the first in this kind of race is always the best, but if you get into a position where your forcing both the industry and your competition to react to you then thats got to be a good thing.

Take the time to read Paul’s essay. It’s not very long, but it does make some excellent points.

Yahoo! alpha (beta) Search – released

Looks like Yahoo! has taken a page from Google’s SearchMash experiment. I’ve been using SearchMash as my default homepage in firefox for a while now – because I can get an aggregated view of search results on a single page instead of having to navigate to different pages for different types of content.

Yahoo! ‘s new offering called “alpha” ( which is currently in beta 😉 ) neatly organises results from the Web, Flickr, YouTube, Wikipedia and Yahoo Answers, as well as other sponsored results. In fact at first glance it looks, well, almost identical to SearchMash actually. Yahoo! have stuck with a traditional paging control to page through search results, whereas SearchMash does away with the paging metaphor and instead gets more results which are added to the bottom of the page.

Yahoo! alpha integration with both YouTube and Flickr is very nice. Even though the layout of the two search engines is almost identical, I think Yahoo! makes better use of the screen, content doesn’t feel as cluttered as SearchMash can at times.

I like Yahoo! alpha. I love the fact that I can customise the layout and move the portlets around to my own liking … and I can share my layout with others. There’s no doubt in my mind that Yahoo! have taken a great idea that Google was experimenting with, and have improved upon it.

It will be interesting to see how Google respond to this? I’d hope it would be by releasing a long overdue update to SearchMash, to show all of us who have been providing feedback if and how they have taken that on board.

Information Software and the Graphical Interface

I came across a very interesting paper by Bret Victor a couple of week ago- “Magic Ink: Information Software and the Graphical Interface“. Here’s an extract from the abstract :

The ubiquity of frustrating, unhelpful software interfaces has motivated decades of research into “Human-Computer Interaction.” In this paper, I suggest that the long-standing focus on “interaction” may be misguided. For a majority subset of software, called “information software,” I argue that interactivity is actually a curse for users and a crutch for designers, and users’ goals can be better satisfied through other means.

The paper echoes some of the views Alan Cooper discussed in The inmates are running the asylum – another text that I think anyone interested in HCI / User Interface Design / Interaction Design should definitely read!

The author goes to great lengths to try demonstrate why information software design should be seen as the design of context sensitive information graphics. He goes to great length to explain and demonstrate what he feels is the importance of information graphic design:

A well-designed information graphic can almost compel the viewer to ask and answer questions, make comparisons, and draw conclusions. It does so by exploiting the capabilities of the human eye: instantaneous and effortless movement, high bandwidth and capacity for parallel processing, intrinsic pattern recognition and correlation, a macro/micro duality that can skim a whole page or focus on the tiniest detail. Meanwhile, a graphic sidesteps human shortcomings: the one-dimensional, uncontrollable auditory system, the relatively sluggish motor system, the mind’s limited capacity to comprehend hidden mechanisms. A graphic presents no mechanisms to comprehend or manipulate—it plugs directly into the mind’s spatial reasoning centers.

On the face of it this sounds reasonable – a picture speaks a thousand words. How we present information to our users has to be the most important question software designers should be asking themselves. So why don’t they? Well I wrote a piece offering my views on that question a while ago: programmers are generally bad at user interface design. So as you might imagine I find myself agreeing with what Bret writes here:

Compared to excellent ink-and-paper designs, most current software communicates deplorably. This is a problem of surface, but not a superficial problem. The main cause, I believe, is that many software designers feel they are designing a machine. Their foremost concern is behavior—what the software does. They start by asking: What functions must the software perform? What commands must it accept? What parameters can be adjusted? (In the case of websites: What pages must there be? How are they linked together? What are the dynamic features?) These designers start by specifying functionality, but the essence of information software is the presentation.

I believe there is a great deal of merit in the argument that Bret makes, and the examples he uses such as his BART project are indeed compelling. However its important to note that they are relatively small software projects. BART is a small desktop widget that provides train schedules so you can plan journeys around the San Francisco bay area. It’s a great example of providing users with information that is important to them and providing interactions that are intuitive but not distracting. It feels even more compelling when he compares his widget to the official bay area trip planning tool – which presents information to user in html tables full of text.

Unfortunatly highly graphical user interfaces aren’t normally very accessible to people with disabilities, for example visual impairments. When I look at the BART widget, as a user I love it, its simple presents a wealth of information that I can take in, in a glance – but that’s because I don’t have any disabilities. If I take a screenshot of it, then using photoshop turn it into a grey scale image – its suddenly much harder to use. It’s one of the reasons many DDA standards require that you cannot use colour alone to signify meaning. I could go all the way and ask how a blind user might use the widget. The answer is, they wouldn’t be able to. There’s a wider question of course of whether they’d want to or need to use it 😉 .

The accessibility issue aside, I think software designers should reflect on what Bret has written, and others before him, like Alan Cooper. I know I struggle with some of the ideas he’s presenting here, but I can’t help but feel that too many software projects descend far too quickly into the delivery of “functionality”, without any significant effort or thought placed into whether the software is presenting the user with the information he/she wants as effectively, and efficiently as possible from the point of view of the user. Far too often the very interactions and flows through an application can be a product of the framework the developers have chosen to use, for example JSF – forces certain patterns of behaviour that the user in turn is forced to adopt by proxy.

I’m not sure if there’s a right or wrong answer, but Bret’s paper has given me plenty of food for thought, you should definitly read it!

Google Notebook – New and Improved

The Official Google blog today announced the release of the new, updated multi lingual version of Google Notebook. Put simply it’s a free service that provides a very easy way to save and organise research and thoughts as you browse. It’s provides very similar functionality to the snipit service that I have discussed previously on this blog.

Users can make their Google Notebook public and share the notes they’ve taken with others. As a result, the time and effort put into their research can be harnessed by the online community as a whole. Each note has a heading or title and you can drag and drop notes in order to organise them within a notebook. The interface, like most Google products, is intuitive and easy to use. I’ve installed the FireFox extension for Google Notebook which build support for clipping content and create notes directly into the browser.

Have to admit, I really like it.

Enemy Territory Quake Wars – Training Videos

Here’s a couple of training videos that explain how the GDF and Strogg forces and their respective character classes function in the Enemy Territory QuakeWars – a title I’m eagerly anticipating and judging from the videos the game looks incredibly impressive.

GDF Training Video

 

Strogg Training Video

 

The video’s are a bit old but certainly give you a pretty good insight into the gameplay. I’m really looking forward to this release.

When We Two Parted

When we two parted
In silence and tears,
Half broken-hearted,
To sever for years,
Pale grew thy cheek and cold,
Colder thy kiss;
Truly that hour foretold
Sorrow to this.

The dew of the morning
Sank chill on my brow -
It felt like the warning
Of what I feel now.
Thy vows are all broken,
And light is thy fame:
I hear thy name spoken,
And share in its shame.

They name thee before me,
A knell to mine ear;
A shudder comes o'er me -
Why wert thou so dear?
They know not I knew thee,
Who knew thee too well: -
Long, long shall I rue thee
Too deeply to tell.

In secret we met -
In silence I grieve
That thy heart could forget,
Thy spirit deceive.
If I should meet thee
After long years,
How should I greet thee? -
With silence and tears.

Lord George Gordon Byron

Firefox Extensions/Add-Ons

A few people have asked me what FireFox add-ons I use, particularly to aid development work. Here’s a list of the FireFox extensions/Add-On’s I have installed – not all of them are development oriented but I find them all very useful.

  • Download Statusbar
    Allows you to view and manage downloads from a tidy statusbar, without that pesky download window getting in the way of your browsing
  • Fangs
    This extension creates a textual representation of a web page similar to how the page would be read by a modern screen reader. I find this useful for doing some cursory validation of accessibility.
  • Firebug
    Firebug integrates with Firefox to put a wealth of development tools at your fingertips while you browse. You can edit, debug, and monitor CSS, HTML, and JavaScript live in any web page.
  • FireFTP
    FireFTP is a free, secure, cross-platform FTP client for Mozilla Firefox which provides easy and intuitive access to FTP servers. Along with transferring your files quickly and efficiently, FireFTP also includes more advanced features such as: directory comparison, syncing directories while navigating, SSL encryption, file hashing, and much more!
  • GreaseMonkey
    Allows you to customize the way a webpage displays using small bits of JavaScript. It’s also a cool way of adding functionality to web pages based on come criteria. To get an idea of what you can do with Greasemonkey have a loog at this little demonstration by one of my colleagues Richard Wallis who creates a greasemonkey script that uses our platform API’s to add a Libraries panel to amazon pages.
  • IE Tab
    This is an awesome add on. It basically embeds Internet Explorer into Mozilla/Firefox tabs. This is a great tool for web developers, since you can easily see how your webpage displayed in IE with just one click and then switch back to Firefox.
  • JSView
    All browsers include a “View Source” option, but none of them offer the ability to view the source code of external files. Most websites store their javascripts and style sheets in external files and then link to them within a web page’s source code. Previously if you wanted to view the source code of an external javascript/css you would have to manually look through the source code to find the url and then type that into your browser. With this nifty little plugin you can download/view all the externally referenced resources.
  • Live HTTP Headers
    This allows you to view the Http headers of a page while browsing. Comes in very useful when you want to check or validate the response headers that your application is sending out.
  • Quick Locale Switcher
    Allows you to quickly change and apply a different locale from the tools menu. Its very useful if your doing anything with multi lingual support.
  • RDF Viewer
    We’re doing a lot of work building applications that use RDF. This tool can be quite useful when inspecting RDF Documents.
  • View Formatted Source
    When you use the normal view page source option in firefox, it will render the source exactly how the server outputted it. The problem with this is often contain snippets of code generated by different components and the source is actually very difficult to read through. This little add-on formats the source and provides syntax highlighting and some neat code folding as well as optional CSS support.
  • Web Developer
    A Must-have add-on, allows you to perform standards based validation on pages, tinker with browser setting, the list if far too long to mention. If your doing any form of web development this should be a requisite!
  • XPather
    Quite a feature rich XPath generator, editor, inspector and extractor. I sometimes struggle with figuring out the xpath to a particular element or node in a file, this makes it very easy! It has a few quirks though.
  • Yellow Pipe Lynx Viewer
    RightLynx displays a Lynx view of a web page via right-click or Tool menu. With just one click and without leaving the page (RightLynx opens in a new, small window), preview the page you are on with a Lynx Viewer. You can see what what a page will look like when viewed with Lynx, a text-mode web browser. It is also presumably, how search engines see your site. In addition, it can help determine if web pages are accessible to the vision impaired.

Google Tech Talk: Change your mind, change your brain – The inner conditions for authentic happiness

This is one of the most original and engaging talks I’ve seen over at Google. The talk is given by Matthieu Ricard a gifted scientist turned buddhist monk. The talk focuses on the question “if happiness is an inner state, influenced by external conditions but not dependent on them, how can we achieve it?”.