Rich Web Apps archives - Buzz’s Blog: On Web 3.0 and the Semantic Web

Buzz’s Blog: On Web 3.0 and the Semantic Web:

Rich Web Apps

Mar 15 2009   11:37AM GMT

A look at a Web 2.0 App



Posted by: Roger “Buzz” King
Web 2.0, Rich Web Apps, Web3.0, the Semantic Web, evernote, notebooks, note-taking

It’s called Evernote and I am a very heavy user. It guides my every workday.

In earlier blog entries in this series on the Semantic Web and Web 2.0/3.0, we’ve said that the primary goal of Web 2.0 developers is to build web apps that perform like desktop apps. Let’s check this definition against Evernote.

It’s a note taking program, but not your traditional desktop note program. Two paradigms of note-taking have traditionally been very popular: build-a-notebook and file-it-away. The first gives you a virtual notebook, with a cover, a title, and a table of contents. Typically the contents are broken into sections, and the sections into pages. Each page might be straight text or indented outlines. The second approach gives the user a set of conceptual folders (and perhaps subfolders), with each one stuffed with notes that might be text or indented outlines. Both approaches might support “sticky” notes, audio notes, video notes, and/or image notes.

The web application concept is making heavy inroads, though. Two of the build-a-notebook programs I use allow the user to export them as webpages so they can be manipulated remotely. This of course means that the machine hosting the notes must be exposed to the Internet as a web server. More practically, it means that the notes can be shared only within a local area network or a closed intranet of some sort.

But Evernote goes a big step further. It is a true web app, with your notes stored on their server. The monthly fee is very modest, and is based on an upload allowance - a very generous one, unless your notes are packed with big chunk of media. My notes consist almost entirely of text and web pages that I find obf interest. I have their cheapest paid subscription (there is also a free one), and I only use a small fraction of my allowance. As of this moment (and yes, I am writing this on Evernote) I have 1,106 notes.

The model that Evernote uses is a variation of the file-it-away paradigm. There is a desktop client (available for Macs and Microsoft Windows machines) that presents the user with a column of conceptual folders, a listing of all notes in a given folder, and a viewing space for some specific note in the folder currently of interest. There is a sync protocol that keeps all notes up to date on the Evernote server. The web interface to the server isn’t as elegant as the desktop application, and I don’t use it much. You can also keep your notes locally on multiple machines. There is even an iPhone/iPod Touch version of the desktop app; I use it on my iPod Touch. There is also a mobile phone app, but I have not tried it. All of these applications are available to you for the one monthly fee.

I’ve done some experiments, and the syncing protocol works quite well. It creates a special folder in your Evernote desktop app if it finds a conflict it cannot resolve. As a result, I have never lost a single note or been forced to use an older version of any note. I have had, however, to dig things out of conflict folders.

So, why is it a Web 2.0 app? This is where I have to admit that the definition of Web 2.0 is, let’s say, very flexible. Yes, Evernote is fast, and the syncing never slows me down; I can create a note, click the sync button on Evernote on my iMac, and by the time I’ve rolled my chair over to my Vista machine, the new note is there. Web pages can upload far more slowly than straight text, admittedly. One more thing: Evernote allows you to put tags on your notes. And of course, you can search by those tags. Oh, and there is a very convenient web page clipper that I have used on Safari, Internet Explorer, and Firefox; it will tuck a web page away with a couple of clicks.

But in truth, it’s a Web 2.0 app, not because it is a web app whose performance approaches that of a destkop app, but largely because it is such a great blend of a desktop and web application. Rather than building a web-only app as an alternative to a desktop app, and then engineer the thing to be as fast as possible for uploading, downloading, and searching notes, they’ve given us the rapid access rate of a desktop, along with the mobility of a web app, and all the pieces seem to work together just right. It’s a very smart, very modern app.

I keep a heavy fraction of my notes on it, including my to-do lists, and whether I am in my home office, my university office, a university computer lab, Barnes and Noble, or wherever, my notes are always available.

Try it.


Mar 11 2009   8:24PM GMT

Web services: part of the Web 2.0 & Semantic Web picture



Posted by: Roger “Buzz” King
Multimedia, Rich Web Apps, the Semantic Web, Web 2.0, Web 3.0, Web development, rich internet apps, web services

This is the fifth in a series of blogs about the Semantic Web and Web 2.0/3.0. While the sequence of blog posts tell a continuous story, each blog should be fully informative if read out of sequence.

So far, we’ve discussed the Semantic Web, which is an attempt at automating the process of searching the web and integrating the results, and Web 2.0/3.0, which is largely oriented toward making media-intensive web applications highly responsive. (We noted in an earlier blog that Web 3.0 is an extension of Web 2.0, and we will look at this transition in a fugure blog.)

But there’s a third term that is often thrown into the mix: web services. What are they?

A web service is a web application that is not accessed interactively by a human, but rather by a program.

To make use of a website, we load a URL into a browser and visit the site. Once we’re there, we might - even if we don’t realize it - be operating a very sophisticated application, like Amazon. We can search their inventory - which sits inside a very large database - via Amazon’s search form.

But there’s something else you can do with Amazon. We can access their inventory via a web service. Or more precisely, we can build programs that can access their inventory by communicating with programs (called web services) that they have provided. Our programs and their programs talk to each other directly. These services can be used to do things that would usually would be very time-consuming, and in fact, often intractable, if performed with a browser. Their web services also allow third party vendors to post their stock on Amazon, and in return for a fee, let Amazon sell and ship their products. Thus, independent vendors can easily make themselves an extension of Amazon, something that works so smoothly that if we don’t look carefully, we might not realize we are buying something that is not directly marketed by Amazon.

The way a web service works is by the provider of the service (such as Amazon) making the interface to the software that implements the service publicly accessible over the Internet. Such an interface is called an Application Programming Interface, or API. This way, anyone who wants to write a program that will access the service over the web knows exactly how to write their program to talk to the web service. These programs that access web services are called “client” applications.

There is a wide class of web services available on the Internet, and many of them provide APIs that allow programmers to write software that can access vast databases of such things as news and real estate information. Many web services also are available via a website, for users who want to use the service interactively. And many client applications are really just doing the same thing a browser might do when accessing a website, except that the client is likely to be a far more specialized application and it runs as a desktop application on your machine. More importantly, that client program might be able to things that your browser cannot do.

For example, there is a web service called MusicBrainz; it provides information about music, not the music itself. It can be accessed via an API. There is also a website, MusicBrainz.org, where you can search the database interactively. The API might be accessed by a CD player application; it can communicate with MusicBrainz (without you knowing it) to download information about whatever CD you happen to be listening to on your desktop. It might enable your CD player to tell you the artist’s name and variations of that name, the release date, the catalog number, etc.

Since part of the idea is that we don’t have to directly interact with web services by using a browser, their explosive growth has been very quiet. Many websites are powered by input they get by using web service APIs. These second-hand websites are often called “portals”, and many portals integrate information from a number of sources and give you access to information that would otherwise be very tedious to find on your own. Web services are thus a critical building block for many of the multimedia, highly interactive websites that constitute much of the Web 2.0 effort.

In fact, they underscore the difficulty in making a sharp distinction between the Semantic Web and Web 2.0/3.0. This is because both of them depend highly on automating the movement of information around the Internet. A Web 2.0 website (often called a web application because it provides fast access to complex information, in particular, sound, images, and/or video) cannot answer your search request quickly unless it has ongoing, rapid access to underlying streams of information on the web. But this capability, of providing us with information integrated from multiple websites, is actually a cornerstone of the emerging Semantic Web.

The difference is that the Semantic Web will (hopefully) someday put a tremendous amount of smarts into web services, and allow us to locate, transform, and integrate information in extremely complex ways. The Semantic Web, in this sense, can be viewed as an extremely aggressive extent of the Web 2.0/3.0 effort.

So there we have it. Web services, in their hidden way, are rapidly evolving the web into something incredibly powerful.


Feb 17 2009   11:22PM GMT

The difference between Web 2 and the Semantic Web



Posted by: Roger “Buzz” King
Web 3.0, Web 2.0, Rich Web Apps, Web development frameworks, Web development, Ajax, XML Schema, XQuery

The purpose of this blog is to discuss cutting edge technology that relates to Web 2.0 and the Semantic Web. What do these terms mean?

Let’s start with the definition of a third term. A Web Application is a website that provides some sort of substantive functionality other than simply filtering and presenting information. Evernote is a fantastic web app that stores your notes on a server, and allows you to create, group, and annotate your notes. Some folks say that a web app makes it clear that there is an application at the other end of your browser, and not just a bunch of static data. This is admittedly a pretty soft definition, but it’s reasonable. Another way to look at it is that a web app provides what would otherwise be a desktop application, but makes it accessible from a server so that users do not have to install and maintain an application.

So what’s Web 2.0? It refers to web development frameworks and tools that can be used to create highly responsive websites and web applications. AJAX does this, and the conical example people give is Google Maps. AJAX allows data to be retrieved asynchronously while a prior page is being displayed and manipulated by a user, and minimizes the amount of a web page that must be replaced with the next refresh.

A somewhat newer approach is embodied in Adobe Flex and Microsoft Silverlight technologies; in these cases, a web app is sped up by running more of the application’s logic inside a browser plugin (Adobe Flash or Microsoft Silverlight), rather than making the client machine (which runs the user’s browser) continuously talk to the web server. The overall challenge is to make web pages highly dynamic (meaning the data comes from a database and is not hard-coded in the web page) while giving the user response times that approach those of a desktop application running on a dedicated or near-dedicated machine. While this is intractable at this point, it’s a good thing to hold up as a goal.

The term Semantic Web does not narrowly refer to technology that speeds up response rates. Rather, it refers to a still emerging body of software tools whose overall goal is to automate the collection and integration of information gleaned from websites. The idea is to free the Google/Yahoo user from painfully interactive, highly repetitive keyword searches where we continue to hone our queries until we seem to be finding the right stuff.

Semantic Web technology includes namespaces, which try to put more smarts in websites by having data tagged with widely shared, standardized sets of tags. And things like XML Schema and XQuery can be employed to leverage namespace technology to support high-volume, set-oriented queries of data stored on web servers. These are very similar to the sorts of queries that can today be coded in SQL and run on single database servers running database management systems like Oracle, SQL Server, DB2, MySQL, and PostgreSQL. Essentially, XML-based technology takes the ability of a relational database schema to help us interpret data, and extends it to the entire web.

We will look at XQuery and XML Schema in future entries of this blog.

By the way, some folks are already talking about Web 3.0, which in many ways draws from both Web 2.0 and Semantic Web technology. We’ll look at this in a future blog, but a key focus is on making web apps highly multimedia.