Google Web Toolkit Open Sourced

Google have released the latest version of the Google Web Toolkit under the Apache 2.0 License. The Google Web Toolkit is a toolkit for creating “AJAX” web applications by creating a Java application, then “compiling” it to JavaScript and HTML.

I've always been quite interested in the toolkit, but “compiling” Java to JavaScript always seemed like a novel but messy idea to me. However, after to listening to two podcast episodes by its creators, I've become more interested.

It seems that the choice of the Java language is purely based on the tools available to create applications with that particular language. The GWT is for creating cross-browser JavaScript and HTML user interfaces without having to worry about browser quirks, using existing powerful development tools. You can use any server-side language to generate the JavaScript & HTML once you know what needs generating, so GWT could easily be used in conjunction with PHP, Python et. al.

Something I particularly like is the philosophy of not forcing you down any particular design path, but supporting as many as possible. For example, if you happen to be using the Model View Controller design pattern, GWT would be brilliant for creating the “view” part, and you could use something else for the Model and Controller parts. Or you could not use Model View Controller at all. Also, you don't have to use the whole toolkit, you can use just parts of it, the components are designed to work independently of one another.

I'm still not sure that “AJAX” web applications are the best solution for software as a service in the long term, but they're certainly the best technology currently widely supported, even if you have to deal with browser quirks to ensure compatibility.

Arthur Francis Benjamin Guinness

Laura just pointed me towards this Wikipedia entry which names an Arthur Francis Benjamin Guinness (1937 – 1992), known as Benjamin, who was chairman of Guinness from the 60s. As far as I can tell, he was the great great great grandson of the original Arthur Guinness who purchased the first brewery in 1759 and was a member of the House of Lords and the 3rd Earl of Iveagh.

People who know me will know that my particular love/obsession with the black stuff makes this quite a weird coincidence!

Novell to drop Hula

I'm very sad to hear that Novell will be dropping Hula and withdrawing the lead developers. They claim there is no market for the product, but I know that a lot of people (including me) have been looking forward to a first official release for a long time. Perhaps this is just a result of their recent cosy relationship with Microsoft.

The Hula Project is (was) an email and calendaring server with Googlesque web interfaces which was set to rival Microsoft Exchange. I was particularly interested in the CalDAV support for calendaring and LDAP address books. The problem was that it has been in development for so long and other projects have sort of filled the void.

I'm sad that the Hula Project has lost it's commercial sponsor and I now can't help but feel that it was given away in the first place because it was considered to be of no commercial value. But I hope that this is only the beginning. I hope that the open source community can now adopt this project and it will live again, perhaps under a different name.

GPL Java and Other Bloggings

Some interesting technology related blog posts I've seen recently…

GPL Java

Jonathan Schwartz (Sun) and Bob Sutor (IBM) both mention the news that Sun has chosen the GPL to open source Java with. Good news!

Me and Sam spent the afternoon trying to write an algorithm to calculate a winning hand in Gin Rummy using Java which wasn't much fun. I'm becoming a fan of Eclipse though.

Google has the ultimate answer

Jake Stride points out that Google has the answer to life, the universe and everything. Shame they don't have the question! Or, perhaps they did, until I visited that URI, at which point the universe was instantly replaced with something even more complicated.

network clients != thin clients

Jonathan Schwartz clarifies why he said “I don't believe in thin clients.” He goes on to explain that web applications don't run on thin clients because web browsers do too much to be considered thin clients. What's important is network clients, not that they're necessarily “thin”.

Open Standards vs. Open Source

In one of the slides from Bob Sutor's talk at the University of Texas, he mentions Open Standards vs. Open Source. He explains Open Standards as an open blueprint which can be developed and maintained in a transparent way and is freely implementable. Open source is a transparently developed implementation, possibly of open standards.

This is interesting because I strongly believe that open standards are even more important than open source. You don't have to believe in open source to implement an open standard, but open standards are crucial. Even if you implement an open standard in a proprietary way, you can still interoperate with an open source implementation of that standard.

An Entity Relationship Conundrum

Déjà Vu

I have a habit of choosing projects which are tricky to implement as relational databases, which is probably why database design has become one of my least favourite topics in computer engineering. Apologies for boring the hell out of you all but I needed somewhere to write this down…

The Project

Our database design project is a database used to track personal book collections, to track the ownership of books and manage the lending of books between individuals. Simple.

Our initial E-R diagram looks like this:

initial E-R

The Problem

Looking at our E-R diagram the lecturer immediately pointed out that the circular relationship towards the left of the diagram was going to be problematic when implemented in Microsoft Access (yeah, I know, but we have to use the tools we're given) and we need to get rid of it.

This simplified section of the diagram shows the problem area:

the problem

I argued that this was the best solution I could come up with using normalisation. A book can have both an owner and a loanee (who are both users) and I could not find an alternative method which would not involve duplicate data.

The text book solution

In “The Relational Database” by John Carter this type of relationship is called a ternary relationship. The book states these types of relationships can always be and should always be turned into multiple binary relationships, even if this involves adding an extra entity.

The example given in the book is a lecturer who recommends text books for courses they lecture on:

Text book example

My interpretation of the solution given in the text book is to replace the “recommends” relationship with a relationship type “recommends”. This relationship type is then changed into an entity type, “recommendation” because it is more natural to think of entity types having attributes than relationship types having attributes. You then replace the ternary relationship with three binary relationships, all with the new “recommendation” entity. So you end up with something like this:

Text book solution

I don't really understand this solution, because there seems to be no easy way to tell which courses a lecturer lectures on, having removed that link. This information can only be inferred if a lecturer has actually made a text recommendation, and may require a subquery. Sam thinks that the solution to this might be to have an entry in the recommendations table which has a lecturer, a course, but no text. I'm not sure.

The real problem?

OK, so that is possibly a solution, but I'm not sure what I can call the extra entity to make it make semantic sense. Receipt? Posession? Even then, there is an added complication…

In the text book example, a lecturer recommends a text for a course. But in our case, a user loans a book to another user. The user has two roles in the system, that of owner and loanee. I can't think of a way of solving this problem without duplicating data.

Where to look for better solutions

There is a section in the text book called “Cardinality and optionality”. I don't know what they are, should I read that section?

I'm wondering if this is a limitation of relational databases which is solved in object oriented databases.

I'm hoping there is very obvious and clean solution that I've missed and I'm just being a dumb ass!

Parakey

An article on IEEE spectrum talks about Blake Ross and Joe Hewitt's project called Parakey.

Details are very sketchy at the moment but it sounds like Parakey is aiming to address some problems very close to my heart. It sounds like Free Software designed to replace (or supplement) your operating system with a unified interface where your desktop meets the web. Importantly it appears to offer a solution to the “offline problem” and other important Post-PC concepts. The interesting bits are on page 3. I look forward to hearing more about this project.

The Birth of "Web Science"

The Web Science Research Initiative was launched on Thursday by MIT and the University of Southampton. It aims to establish a new multidisciplinary field of science to study both the social and technological issues surrounding the development of the World Wide Web and other web-like information structures.

The new publication, Foundations and Trends in Web Science could make interesting reading for those interested in the past and future of the web, as an object of scientific study.

First Experience of X10

I've finally got around to plugging in the X10 home automation kit that arrived in the post last week, courtesy of the lemon.

I ordered the basics:

  • CM12U – Serial X10 Computer Interface
  • LW10U – X10 Wall Dimmer
  • LM12U – X10 Lamp Module

So far I've plugged the computer interface into a PC, plugged a 20W desk lamp into the lamp module and tried controlling the lamp using bundled Windows software. There was a horrible buzzing sound coming from the lamp module, the lamp only just managed to light up very dimly and playing with the “dim” feature resulted in a precarious display of flashing which I thought was going to blow the bulb! I wonder if these problems would be solved by using a different lamp rated higher than 20W, but I'm not really sure what's causing them.

The equipment completely failed successfully transmit a signal from upstairs to downstairs, possibly struggling to cross between different rings on the house mains.

So far I'm very unimpressed, but I need to learn more about the X10 kit and the way houses are wired in the UK before I make my mind up.

I'm interested to know how much power is wasted by an X10 receiver or transceiver when on standby.

SVG Circuit Diagrams with Inkscape

I've been looking for an excuse to play with Inkscape for a while now and Sam suggested I use it to do a circuit diagram we needed to draw.

I found a whole collection of SVG electrical symbols from Wikimedia which made my life a lot easier.

svg circuit diagram

My mind wanders….
Imagine if you added a kind of electronic logic meta data to the XML element which surrounded a group of shapes which represented a component. With some clever scripting you could actually simulate the circuit once you'd drawn it…