Read on and leave a comment
or return to our portfolio.

Posts in the ‘Web development’ category

19 Nov 2005

by Noel

Rich Web Clients: The Revenge

Earlier this month Matt posted a provocative article on rich internet applications. Here’s a taster:

Ajax is a dangerous and immature technology. It is, in fact, a hack—a kludget—to provide rich-client functionality in the browser.

And here’s my equally blistering riposte.

Hear that sound? It’s the CEO of Oddpost, which was one of the first Ajax apps, and which sold for a reported US$30 million to Yahoo. He’s crying himself to sleep ’cause Matt said his technology sucked. My point is not (just) to lampoon Matt, but to point that Ajax does work, and is worth a lot of cabbages. Clearly a lot of people are using it so it can’t be that hard.

Matt says “Ajax (as currently exemplified by Javascript and XML over HTTP) is certainly only version 0.5”. Now I don’t think that is entirely fair. There a many toolkits and libraries that make developing Ajax applications easier and more robust. Debugging support isn’t so bad either. As for type checking…well I’m giving that one to Matt. At least for now.

So in conclusion I argue that’s Matt case is not proved. In your face Matt! Tune in next time when we kiss and make up. Or Matt gives me a black eye. :-)

Posted in Web development | Comments Off on Rich Web Clients: The Revenge

27 Oct 2005

by Noel

SISCWeb Petstore

Ben Simon implements the Java Petstore in Scheme using the excellent SISCWeb framework, which runs in the equally excellentSISC Scheme implementation. Well worth a look, particularly thewriteup which explains some of the advantages Scheme brings to web development.

Posted in Web development | Comments Off on SISCWeb Petstore

15 Sep 2005

by Noel

The Birmingham Course: OpenLaszlo to the Rescue!

We needed to deliver a prototype on-line exam quickly. Despite their simple appearance, on-line exams can have some complex interaction modes that are annoying to deal with in a client/server model.OpenLaszlo provided an excellent framework for quickly going from idea to solution.

 

The Birmingham Course approached us with the idea of
placing online a mock exam for their MRCPsych course. While the time constraints were tight, we thought there was an interesting opportunity in the project, and enjoyed the enthusiasm that The Birmingham Course brought to the table.

I would have liked to do some paper prototyping, and work through the issues that might arise before starting. However, we also wanted students currently enrolled in the course to trial an on-line version of the mock exam. This left us in a bit of a pickle: can you, in one-and-one-half weeks, go from concept to implementation for an on-line examination, and get it right? (I live far enough away from Birmingham that I didn’t have the ability to take a day or two and go up there to meet with the client.)

The mock exam had no data gathering requirements, nor were there any concerns with authentication and identifying users. Therefore, some of the trickier aspects of web-based application development were not concerns. However, we still needed to deliver 133 True/False questions, and 30 multiple-choice questions in a stateful way, so students could easily “go back” and change their answers, as well as get their end-of-exam score.

While there may be AJAX gurus out there who think this would be a piece of cake, I do almost all of this development work in Scheme, and have no particular expertise in HTML/CSS/Javascript interaction on twelve different browser platforms (that’s why I run with a team). I certainly don’t have a lot of patience for developing code in an unstructured and unsupportive environment. Put another way, I think the browser makes a lousy run-time environment; I want my compiler to check for obvious problems up front, and I want my runtime environment to be rich enough that I can go about debugging a running application. Your typical AJAX app fails on these counts far too readily for me to think that any AJAX code I develop in a hurry will be reliable. (I’d like to point out that I’ve never even given AJAX enough of my time to decide if my biases and opinions are right; I’ve only read code and stories from others, and I don’t like what I see.)

Enter OpenLaszlo. It has a compiler, that tells me when I make silly mistakes. It has a rich run-time environment, which includes an interactive debugging REPL. I can create a window as easily as saying

<canvas><window>Hi there!</window></canvas>

It uses JavaScript 1.5 as it’s scripting language, and has a really sweet little constraint engine built in. The upcoming 3.1 release has some very swish enhancements on the way as well.

I was able to quickly prototype ideas for the customer, push them to the WWW, and let them interact with the application. While it is possible to do all kinds of RPC from OpenLaszlo, I chose to employ another really nice feature of the environment: SOLO application deployment. If you’re willing to give up some (not all) connectivity with remote hosts, OpenLaszlo apps can be compiled to a single, static Flash file. This means that any user with Flash 6 or better can interact with a very rich net-based app, and get a very desktop-like experience.

The end-product of a one-week mad dash can be seen online; I was quite pleased with it. I know I made some choices that were less than optimal, but the code can be refactored and improved in a future iteration of the project. I was also happy working with OpenLaszlo as a development tool—putting together GUIs was no more complex than writing a webpage, the event model and constraint system are both well-behaved and useful, and being able to deliver a static Flash document as an application means I don’t have to worry about a timeouts on client/server interactions, nor do I have to wonder if IE4/IE5/IE6/Opera/Firefox/Mozilla/Safari is going to choke on my particular choice of HTML, CSS, and Javascript idioms. If you’re some kind of “purist” who abhors Flash, then… I can’t help you. But it’s widely deployed, and much better behaved than a gaggle of browsers.

Food for thought. Point is, I liked it. And the customer loved it; the app behaved just the way they wanted. I don’t know what else I can say.

Posted in Javascript, Web development | Comments Off on The Birmingham Course: OpenLaszlo to the Rescue!

12 Sep 2005

by Noel

Firefox 1.5 Beta 1

Firefox 1.5 beta 1 is out. I’ve been tracking Deer Park (the pre-beta releases of Firefox) for a while now so I’m excited to see this new release. I’m particularly enthusiastic about the canvas support as I’m having fun playing around with vector graphics. The Firefox canvas is much more complete, though slower, than Apple’s buggy implementation in Safari. The other new features don’t excite me as much, as the web applications I develop run on the general Internet. If you have a closed environment they will be more useful. In such an environment, XULRunner becomes very interesting.

Posted in Web development | Comments Off on Firefox 1.5 Beta 1

18 Aug 2005

by Noel

A little OpenLaszlo lovin’

No doubt I’ll be playing with this technology more in the future, so I thought I’d introduce it now.

OpenLaszlo, released unto the world by Laszlo Systems, is an interesting combination of languages and ideas. It is an XML-based language for specifying the layout and behavior of rich internet applications. For example, I wrote a tabbed slideshow for photographs that you can find on my personal weblog, here….

 

No doubt I’ll be playing with this technology more in the future, so I thought I’d introduce it now.

OpenLaszlo, released unto the world by Laszlo Systems, is an interesting combination of languages and ideas. It is an XML-based language for specifying the layout and behavior of rich internet applications. For example, I wrote a tabbed slideshow for photographs that you can find on my personal weblog, here. I think it would be difficult to write in JavaScript and CSS. Consider:

  1. When you open a slide, audio begins playing.
  2. When you switch slides, the current audio stops, and new audio is started.
  3. I can layer objects (and remove them) over the photo content quickly and easily, when and where I want them.

I imagine this is all possible in JavaScript/DHTML, but… I don’t know how. And, I don’t feel I need to; the OpenLaszlo crew has provided a powerful platform for me to work from—a compiler, GUI toolkit, RPC mechanisms, and more. It seems to me that the whole JavaScript/CSS/AJAX thing is nothing more but a poor reinvention of the technology that OpenLaszlo provides. Granted, for full RPC-functionality, OpenLaszlo currently requires a servlet container, whereas AJAX-apps just need a browser with a JavaScript engine. However, you don’t get much support from the compiler or run-time for debugging AJAX applications, whereas OpenLaszlo apps have a compiler and run-time debugger. That’s worth installing a server to me. (It was a double-click operation on my Mac.)

If I forgo the OpenLaszlo server, I can statically compile my applications; although RPC is no longer available, I can still do HTTP POSTs, and that’s enough to do something RESTful. But, instead of a webpage, I can create a very rich, interactive GUI-based environment that can be delivered to any browser that is Flash-capable. I hear Macromedia has pretty good penetration, and generally things Just Work within that environment, regardless of whether you are on Windows or Mac, IE or Firefox, etc.

So, I think it’s a cool technology. I’ve been poking at the edges of it on-and-off for a few weeks now, and will follow up with some more about what I’ve been doing with it. My tutorial builder/photo slideshow demo just met a need I had; I think OpenLaszlo is capable of much, much more.

Posted in Javascript, Web development | Comments Off on A little OpenLaszlo lovin’

2 Aug 2005

by Noel

Bug Fixes for IE 7

I see via Ditchnet.org that IE 7 Beta 1 is out, and support for CSS 2.1 is in the works. For comparison, see what Deer Park Alpha 2 (the next version of Firefox) includes. It looks like IE 7 is going to be a good browser for 2004, and an ok browser for today. This is still good news for web developers, because IE 6 is a terrible browser for today.

Posted in Web development | Comments Off on Bug Fixes for IE 7

2 Aug 2005

by Noel

Two Databases Worth A Look

If MonetDB is half as good as claimed it will be a big improvement over current databases. Certainly worth a look.

Also worth a look is Sedna, a XML database with a Scheme API.

Posted in Web development | Comments Off on Two Databases Worth A Look

7 Jul 2005

by Noel

Tags and the Post-Google World of Implicit Feedback

Go to Yahoo and you’ll see a riot of news stories, links to services such as Yahoo Messenger, and right at the bottom of the page… a link to the service that launched the company, the Yahoo Directory. It is laughable now to think that a human maintained directory could keep pace with an powerful search engines and exponentially growing web, but for a long time Yahoo’s directory was the web’s best way to find information.

Early search engines considered only the text of a web page when searching. They could find all the pages that contained the words you were looking for, but they could not tell you which ones were important, leaving you to sift through the hundreds or thousands of results. In this situation going to Yahoo’s directory was a short-cut to finding the most important pages on any topic. It might take you six or seven clicks to drill down through the hierarchy but you’d get there in the end.

Then along came Google. Enter some keywords and Google will give you the all pages that match those keywords, ordered by importance. In most cases, Google is sufficient. The key innovation in Google is that recognises that people indicate the pages they consider important by linking to them. Google uses that information to rank pages via the PageRank algorithm. With millions of web pages individual variations don’t count for much, and what you end up with is the pages generally considered best.

There is a big idea behind the PageRank algorithm, which is that people implicitly tell you what is important to them. The Yahoo model was to explicitly ask people what is important to them. This doesn’t scale. Implicit measures scale better, and in fact perform better as size grows, as noise in the measurements cancels out.

Fast-forward to today. One of the hottest things on the web at the moment are services like del.icio.us that asks people to tag pages or assign ratings to them. This is another example of explicit feedback. You don’t have to look long at the most popular tags on del.icio.us to see that the demographics are skewed heavily towards the geek end. Now explicit feedback is great if you can get it, but while you can expect obsessive-compulsive geeks like myself to meticulously organise their links, but you can’t expect the man-on-the-street to do the same. What is needed is implicit feedback.

For services like del.icio.us that aggregating pages on a common theme, there are a number of algorithms that will apply PageRank in a topic-sensitive manner (for example, the aptly named topic-sensitive PageRank). For services that maintain rating of pages, there has been quite a lot of work on implicit ratings, collated in this excellent recent survey. Several studies show that reading time is correlated with interest. If you run a web site, this is one statistic you can easily gather, and one that the Attention.XML
spec includes. If you write web browsers there are bunch of other measurements you can gather, such as scrolling and bookmarking. Of course for most of us these measurements are out of reach!

Explicit measures have one advantage: they are much easier to get started with. If I rate a blog post as “good”, the meaning is unambiguous. If I spend 30 seconds reading it you need some sort of model to convert that into a rating, and to build that model you need a fair amount of data, knowledge of machine learning techniques (we can help), and probably some beefy hardware to handle large numbers of users. For small services this may be too much, but for large services it is the way forward.

Posted in Web development | Comments Off on Tags and the Post-Google World of Implicit Feedback

17 Jun 2005

by Noel

The Canvas: Why It’s Important

In Safari 1.3 Apple introduced a new canvas tag along with Javascript extensions that enable 2D vector graphics to be drawn directly onto a web page. This extension has since been incorporated in aWhatWG specification and Mozilla have followed up with an implementation that’s available in the latest Firefox 1.1 preview release. We have two demos up here and here. This essentially enables a lot of the power of Flash from within a normal web page.

Apple’s motivation to was to enable Dashboard, but as we discussedearlier the potential for this technology extends much further. Existing web technologies such as CSS, the DOM, and Javascript allow highly interactive applications, as GMail and Google Maps have shown. However there are still some limitations: the developer cannot create custom widgets or draw complex graphics in the web-browser. The canvas solves this problem. Now that Firefox is implementing the canvas it makes it viable to release cross-platform graphic rich applications. This is a whole class of applications that so far the web hasn’t been able to touch. Think about Adobe Illustrator running within your web browser. This is one to watch!

Posted in Web development | Comments Off on The Canvas: Why It’s Important

25 May 2005

by Noel

How Did They Do That?

Xyle looks like a nifty tool for working out how a CSS design was created. It only works on Safari, so for most people the Web Developer plugin for Firefox will be more useful. Xyle does have a few features that WD doesn’t, so if you have Safari and the $15 I’d say it’s worth it.

Posted in Web development | Comments Off on How Did They Do That?