Friday, June 17, 2005

My First Hardware Hack

Some people hack their Mac. Or Playstation, or XBox. I never hacked any hardware and I don't enjoy soldering: I'm more of a software person. But tonight I did my first 'hardware hack'.

A couple of weeks ago I splashed water all over my laptop. I completely disassembled it and let it dry for a couple of weeks. And - hurrah - my laptop was unscathed, or so I thought. The PC-Card socket didn't work anymore, nor did my Wifi PC-card. As a replacement, I ordered an Intel 2200BG mini-PCI Wifi card, because my laptop (Toshiba A30) has a mini-PCI slot with built-in antenna.

When I put the card in the socket, connected the antenna and installed the drivers, it didn't work. The hardware switch on the side of the laptop did not help. Through Google I learned about pin 11 and 13: I put tape on those pins and yes!, it worked. A tiny piece of plastic just saved me €185. Toshiba sells their own mini-PCI card for €215, while the Intel card costs €29. And I thought software had good profit margins...

Sunday, June 12, 2005

Backbase Community / Essential web page features

In response to my previous post, Ryan Brooks outlined his thoughts on Backbase. This is very useful feedback. One of the main points of his post was the need for more community. I could not agree more. As with most software, RIA/AJAX software becomes more useful once more people are using it. And especially at this moment there are an awful lot of frameworks popping up: just look at Michael Mahemoff's list of frameworks, which only mentions the open-source frameworks at this moment. So we need some critical mass, fast!

Community Edition

Luckily many thousands of people have downloaded the Backbase Community Edition in the first couple of days. Our servers are still alive, but we'll have to pay a hefty bandwidth fee at the end of the month. A fee we're happy to pay: the more downloads, the better. We're also happy to see users from all over the world: the US still has the biggest share, but our software is also especially popular in China. So we will continue to distribute the Community Edition to as many developers as possible.

Discussion forum

A couple of days after launching the Community Edition we opened up the Discussion Forum, and we're preparing some other initiatives. We're thinking about a code exchange, a best practices wiki, a mailing list, faq database, technical articles with code samples, tutorials, user groups, developer conferences, etc. Of course, this won't all happen overnight, but we will focus on steady improvement. Let us know which of these features will help you most, so we can fine tune our planning.

Essential web page features

A second topic of Ryan's article was focused web page features that you should get for free when you use AJAX (compared with Flash or Java applets). He discussed indexing by search engines, back- and forward buttons, permalinks and bookmarking. I'd like to add 'View Source' to this list.

Search Engines

Search Engine Optimization is indeed an area that requires some attention with AJAX applications that use a Single Page Interface (SPI), because there is a risk the search engine only finds the first page. On Backbase.com we're using a dual publishing model to avoid this problem: we use the same content files to publish both a rich single-page version and a plain multi-page version, which is indexed by bots. This requires some automation in the publishing process. As an alternative, the Backbase Tags allow you to use regular 'a href' links to load files with XMLHttpRequest: these links are also indexed by search engine spiders. In both scenarios, the search engine indexes 'pages' that are supposed to be part of an SPI. Therefore, some server-side logic is needed to convert these links to deeplinks that load the correct 'state' within the SPI. This topic will be covered in a 6-page technical article to be published in 1 or 2 weeks on the Backbase DevNet.

Backbase About Us page

Back-button and permalinks

This brings us to another topic Ryan mentioned: deep linking (with permalinks) and bookmarking. As I wrote in my previous post, we have some deeplinking support in Backbase.com. We are using URL parameters for this: for example, /devnet is rewritten as index.php?section=main_developers, which is parsed client-side: as a result, the Deck with ID 'main_developers' is selected. For people who haven't worked with Backbase: a Deck is a user interface concept similar to a stack of cards of which only the first one is visible. By selecting a card in a Deck, it is moved to the top, and becomes visible. This is what happens when the ID 'main_developers' is selected. The downside of using URL parameters is that the entire page is reloaded if we set a new parameter. An alternative is to use the pound sign (#), of which Tiddly Wiki makes good use: http://www.tiddlywiki.com/#UsingThisSite. At Backbase we are currently using the pound sign for Back/Forward support in Firefox: we could use a hidden frame for this, but this only works in Firefox when you are retrieving real pages from the server. In Internet Explorer you can retrieve 'virtual' pages by using the DOM, which is obviously faster. So maybe we could give users an option: either fast Back/Forward without permalinks, or somewhat slower Back/Forward with permalinks. If we build in this option, we should be able to support all scenarios.

"View Source"

An area that is getting more an more attention lately is 'View Source', which was one of the key factors in the rapid growth of the World Wide Web. Steve Yen makes the link to AJAX in this blog post, and there are probably many other relevant articles. Even the Macromedia guys now offer this feature, although developers have to specifically build this into their Flash applications, while it is a default feature of web applications. I think a potential problem with 'View Source' and AJAX is the large amount of JavaScript used. Also, in good AJAX applications the JavaScript code is encoded to limit the download size. So although you can view the source, it's pretty tough to make sense of it. The benefit of Backbase is that it is completely tag-based, so there is no need to look at JavaScript code. Looking at the source code of a Backbase application, you just look at Tags and you can quickly decipher the complete application. Give it a try with the deep-linking example in the previous paragraph: if you go to Backbase.com, do a View Source, then you find an <b:deck> tag, of which one of the <s:buffer> tags has the ID 'main_developers'. You can follow this link, etcetera.

wrapping up

So all in all this became a pretty long post: basically I just wanted to say we're growing the community, and all input and ideas are welcome. At the same time we take compatibility with the essential web page features very serious.

Wednesday, June 08, 2005

Practice what you preach AJAX

Backbase's first websites were plain HTML. People asked us why we weren't using our own technology on our website. Good question. It should be possible to build a very nice website using our AJAX/RIA toolkit: AJAX shouldn't be just for web applications.

But people are never satisfied :-). A couple of months ago we redid our website using our own technology. And now some people say it looks like a Flash site and that it's an example of where AJAX should not go. So maybe it's good to tell a bit more about our considerations.

By the way: we are not against Flash, but people frequently make the comparison between Flash and AJAX as the main Rich Internet Application (RIA) technology options.

We wanted the site:
  • to be a technology showcase with a wow-factor
  • to load faster and be more responsive than a Flash site
  • to be usable and efficient
  • to have both a web-feel and an application-feel
  • to work like a typical website (e.g. back-button support)

a usable showcase

We thought: if we use our software on our own website, why not make it into a showcase. If people arrive on our home page they should clearly see the difference with 'regular' web sites. At the same time it shouldn't be a demo for the sake of being a demo: people come to our site to learn about our software, about our company, they want to download software, etc. This should be as easy as on other websites, if not easier. Of course, we also want to show that AJAX is faster and more responsive than other technologies such as Flash and Java, and our site should be a prime example.

information architecture

In general we tried to make the site more flexible, and less page oriented. For example, for almost all forms we are using in-browser pop-up windows. To display commonly used information we've used 'drawers', or basically tabs that fold out when you click on them: we use it for demos, downloads, and contact information. At the same time we have a fairly hierachical information structure: almost every piece of content is living somewhere in this structure. We have also tried to highlight clearly where the user is in the hierarchical structure. These hierarchical pieces of information are also available through deep linking, e.g. www.backbase.com/go/products_overview.php.

the wow-factor

To create the wow-factor, we decided to use many graphics and many animations. Both make the site more polished and more Flash-like, but graphics increase the download size and animation can be annoying. So we compromised a bit on the quality of the graphics and used very high compression. And for animation, we took a good look at operating systems such as MacOS X and Windows XP, and tried to design useful animations. These animations typically give feedback to the user about what is happening on the screen: for example, the main menu opens with a transition so people can see what's happening.

web-feel or application-feel?

Some GUI toolkits are only capable of creating desktop-like interfaces, which is not ideal for a content-rich website. You can also create application-like interfaces with Backbase (we will launch a desktop-like forum, and a desktop-demo soon), but it's just one of the options. Some desktop features can be useful though. For example: we've included pop-up windows on our site, and a tree view for the tertiary navigation in the documentation section. But for the rest we've focused on a web-feeling, for example by having 1 scroll bar to scroll the entire 'page'. In desktop applications you typically scroll only 1 panel (similar to using frames).

utility

People expect certain basic functionality when they are using a web page. They want to be able to create bookmarks, or forward a link to a friend. People who use an old browser, screen reader, or a mobile browser expect to get access to the content. The back- and forward buttons should work. This site should be indexed by search engines, such as Google. We needed some tricks, but we now got most of this working, although bookmarks are still not easy enough: we have to improve this.

performance

One objective which is not so difficult to achieve is to create a better performing site than comparable Flash sites. First of all the initial download time: incremental loading ensures that you don't have to load all files at once, you just load it when you need it. Of course, the images make our home page fairly large, but still significantly smaller than many Flash sites. Then responsiveness: the Backbase engine is optimized for performance so this should work pretty fine. Downloading additional information is quick because you only load the new information, and not an entire new page.

does it work?

Based on the feedback we get it appears that the majority of people enjoy using our site. Nevertheless, many people are sceptical at first, and are only convinced when they've tested all aspects of the site. This makes us extremely sensitive to problems and criticism, because we want to convince people that AJAX-powered sites can be both more usable and more fun. So if you have feedback: webteam at backbase.com, and we usually respond quickly.

PS. I'm planning to write some more about the technology behind Backbase.com, so if you have requests, let me know...