Book Review: Google Web Toolkit

Automagically convert Java to JavaScript. 

Thus begins the seemingly curious proposition of the Google Web Toolkit (GWT). 
Of course, it’s about a lot more than that. 
For one thing, GWT addresses a key gap in the rapid delivery of the Asynchronous JavaScript and XML (AJAX) based applications that are driving eyeballs and mindshare to Google’s Web site.
By the time you’ve read Prabhakar Chaganti’s book on the GWT, you’ll be significantly wiser on at least two fronts. You’ll know that:
  1. There’s a broad-and-deep software engineering ecosystem around the GWT that is fueling progress and delivering highly significant results. 
  2. Chaganti is an excellent guide with the ability to negotiate this ecosystem and drive you towards tangible outcomes.

Using a task-oriented approach, the book proceeds as follows:

  • Chapter 1 rapidly places the GWT in context, and gets you started by downloading, installing and working with the samples provided. Available for Apple Mac OS X, Linux and Microsoft Windows, the GWT only requires the Java SDK as an installation prerequisite. The GWT is made available via the Apache Open Source license; this allows for the development of commercial and Open Source applications. 
  • With the Java SDK, the GWT and the Eclipse IDE, the developer has a well-integrated and powerful platform on which to develop applications. After illustrating the development of the obligatory “Hello World!” application at the outset of Chapter 2, attention shifts rapidly to use of Eclipse. Google’s Web-wired DNA is evident in everything they do, and the GWT is no exception. The GWT leverages the Java SDK and Eclipse to the fullest, while closing the gaps in developing AJAX-based applications in a very organized way. By the end of this Chapter, the reader knows how to develop a simple application with both client and server-side components and execute the same in both hosted (i.e., non-deployed) and Web hosted (i.e., executing within a Web-hosted Tomcat servlet container). Made explicit in this latter deployment is GWT’s ability to support a variety of Web browsers – i.e., Apple Safari, Microsoft Internet Explorer, Mozilla Firefox and Opera.
  • The creation of services is the focus of Chapter 3. To quote from this Chapter, and in the GWT context, service “… refers to the code that the client invokes on the server side in order to access the functionality provided by the server.” The author is quick to point out that this is a separate and distinct notion from that used in the context of Web services. True to its billing, this Chapter works the reader through the creation of a service definition interface (a client/server contract that defines the service’s functionality and establishes rules of usage) and service implementation. Particularly important in this Chapter is the creation of an asynchronous service definition interface, as this facilitates remote calls in the background to the server, and capitalizes on the AJAX support in the GWT. With definition and implementation taken care of, the remainder of the chapter focuses on use (i.e., consumption of the service by a client). Conceptual illustrations compliment screenshots to effectively convey this content. 
  • Whereas the previous chapter delivered a prime number service, Chapter 4 introduces no less than six services that really showcase the capabilities of this application paradigm. With ample explanation and illustration live searches, password strength checks, auto form fills, sorting tables, dynamically generated lists and Flickr-style editable labels are each considered. Not only does one recognize these as design patterns that are already in everyday use (e.g., Flickr, Google Docs, Maps and Search, etc.), one also realizes their potential for re-use in one’s own projects. 
  • Chapter 5 introduces five interfaces that are more complex than those presented in the previous chapter. These interfaces are pageable tables, editable tree nodes, log spy (the GWT spin on the UNIX tail utility), sticky notes and jigsaw puzzle. To reiterate, one recognizes these as design patterns already in everyday use, and the potential for re-usability.
  • Browser effects are the subject of Chapter 6. Here the author introduces the JavaScript Native Interface (JSNI) as a vehicle that allows JavaScript libraries (e.g., Moo.Fx and Rico) to be accessed directly from Java classes. A wrapper-based approach, independent of JSNI, is also introduced to leverage the Script.aculo.us effects. Although compelling effects can be achieved, cautionary words are included in this Chapter, as the impact may be diminished by browser-level incompatibilities.
  • By the end of Chapter 7, impressive calendar and weather widgets have been created, and readied for re-use. 
  • In Chapter 8, JUnit is introduced in the context of unit testing. Standalone tests plus test suites are given consideration; this includes tests involving asynchronous services.  
  • Although this is only the second book I’ve ever seen from Packt Publishing (the first I’ve reviewed elsewhere), I’ve become accustomed to expecting bonus content towards the end of the book. Chapter 9, which addresses internationalization and XML support, falls into this bonus category. Of course, it’s no surprise that Google expertise on internationalizations ranks high, and this is evident in GWT support for the same. The author provides an hors d’oeuvre of the possibilities. XML support is of particular personal interest, so I was delighted by the degree of support for creating and parsing XML documents. I share the author’s sentiments with respect to XML support wholeheartedly: I too hope that future releases of the GWT will provide broader and deeper support for XML.  
  • In the final chapter (Chapter 10), attention is given to increasingly automated methods for deploying GWT-based applications. Starting with a manual deployment in Tomcat, then an automated deployment with Ant, and finally an Ant-based deployment from within Eclipse. 
  • A single appendix details how to access and execute the examples provided throughout the book.
With the possible exception of a concluding chapter, page, paragraph or even sentence(!), to provide some sense of closure to the book, I am at a loss to report any omissions, oversights or errors of any consequence. And although it will have to wait for a follow-on contribution of some kind, additional discussion might be given to topics such as Google Gears or even Google Android.
Even though the book I reviewed was a complimentary copy provided by the publisher, I would happily pay for my own copy, and heartily recommend this book to others having interests in the GWT. 
By the way, Packt has an articulated scheme when it comes to Open Source projects:

Packt Open Source Project Royalty Scheme Packt believes in Open Source. When we sell a book written on an Open Source project, we pay a royalty directly to that project. As a result of purchasing one of our Open Source books, Packt will have given some of the money received to the Open Source project.In the long term, we see ourselves and yourselves, as customers and readers of our books, as part of the Open Source ecosystem, providing sustainable revenue for the projects we publish on. Our aim at Packt is to establish publishing royalties as an essential part of the service and support business model that sustains Open Source. 

I cannot suggest that Packt is unique in this approach. Regardless, their approach is certainly welcome.

Jott Announces Local Numbers for Canada!

The following message just arrived in my inbox:

From: “Jott Networks”
Date: February 13, 2008 1:39:32 PM GMT-05:00
To: ian DOT lumb AT gmail DOT com
Subject: Canadian Local Numbers Announced
Reply-To: feedback AT jott DOT comHi everyone,

We are happy to announce that Canadian local numbers are finally here!

As most of you know, we have had a Toronto Jott number (647-724-5814) for some time and have been working on acquiring more local numbers across Canada.

Still confused as to why we are not releasing a toll free number? Jott requires caller ID to know who is sending a Jott to what contact information. In an effort to protect your privacy, most Canadian mobile providers have blocked caller ID information from being passed to toll free numbers. This leaves the alternative of using local access numbers across the country, so that everyone can send Jott messages without having to pay long distance fees.

Below is the list of available Jott numbers in Canada. Find the number in your area code and program it to your speed dial today!

AURORA : +12898020110
CALGARY : +14037751288
EDMONTON : +17806287799
HALIFAX : +19024828120
HAMILTON : +19054819060
KITCHENER : +15199572711
LONDON : +15194898968
MARKHAM : +12898000110
MONTREAL : +15146670329
OTTAWA : +16136861502
QUEBEC CITY : +14189072209
SAINT JOHNS : +17097570047
SHERBROOKE : +18193401636
TORONTO : +16477245365
TORONTO : +14168001067
VANCOUVER : +17787868229
VANCOUVER : +16044841347
VICTORIA : +12509847093
WINDSOR : +15198000031
WINNIPEG : +12042728154

Brought to you by Jott.com – 1-866-JOTT-123
300 East Pike Street, Suite 200
Seattle, WA 98122
Click here to stop receiving emails like this.

This is excellent news!

And just in case this is your first visit to my blog, you can read other Jott-related posts here.

wikiyork: Academic Social Networking via a Wiki

I spent two days earlier this week participating in the TEL(Technology Enhanced Learning)@York 2007 event.

This year, the conference theme was “Partnerships to Enhance Student Engagement“.

Arguably, Rene Suarez’ wikiyork contribution was the most-provocative demonstration of a partnership to enhance student engagement.

wikiyork is:

  • a place to share notes, reading summaries, exam reviews, tests, assignments, opinions, etc…
  • open-source, editable by anyone, viewable by anyone
  • student-controlled (not really…everyone has equal control; everyone is a student and a teacher)
  • free (non-profit and ad-free)

In discussing wikiyork as an enabling platform for peer collaboration in an undergraduate academic setting, one of the concerns raised was the unearned benefit of such ventures to social loafers. In addressing this concern, it may benefit the wikiyork team to reflect upon the basic elements of cooperative teams:

  • Positive interdependence
  • Individual accountability
  • Face-to-face promotive interaction
  • Interpersonal and small group skills
  • Group processing

By recontextualizing these elements for wikiyork, it may be possible to (over time) turn social loafers into social contributors.

I’m not sure if wikiyork is the first of its kind. Regardless, I applaud the efforts of Rene Suarez and his collaborators, as I believe they’re on to something potentially compelling with wikiyork.

Collaborative, Browser-Based Mind Mapping with MindMeister

I serendipitously happened across MindMeister about thirty minutes ago.

Since then, I’ve created a mind map from scratch, plus imported and exported maps with FreeMind – my incumbent mind-mapping software. (The importing/exporting appears to work very well. This is one of the capabilities of Google Docs & Spreadsheets that makes it a keeper, so kudos to the MindMeister team infor getting this right in a beta version!)

So, based on less-than-an-hour’s experience, I am quite impressed. This is yet another example of a browser-based application that performs as if it’s installed locally – on a powerful laptop/desktop! Although I haven’t been able to confirm this yet, I suspect that MindMeister is based on AJAX – just like Google Docs & Spreadsheets.

As you can read for yourself from more-comprehensive reviews, others are also impressed with MindMeister even though it lacks a number of features/functionalities. For example as a former use of Mindjet MindMapper, and current, frequent user of FreeMind, what I’m missing the most in MindMeister (so far) is the ability to attach notes and hyperlinks to my nodes. I’m sure that capabilities such as these aren’t far away.

In addition to being intuitive and responsive, the online aspect of MindMeister is impressive. Taking another page out of the Google Docs & Spreadsheets’ book, this inherently online element is used to enable collaboration.

And just to close with some wild speculation … MindMeister would make a nice acquisition target for Google. It’d be a complimentary inclusion in their expanding online productivity portfolio. I would also expect it to be an interesting fit with Google’s JotSpot wiki and even Google Notebook.

Jott: An Enabler for Working Moments

During his keynote address at yesterday’s Cisco Networkers event, Rick Moran (Vice President, Market Management) referred to the concept of working moments.

In other words, rather than blocks of time, for many the reality is that they have matters of minutes to get things done.

While listening to Mr. Moran speak, it occurred to me that Jott is a wonderful enabler for those having to survive on working moments.

As a case in point …

While driving to the Cisco event yesterday morning, I thought about an email message that I needed to write and send. Once I had some clarity on the content, I Jott’ed myself. Then when I arrived at the event, I edited my Jott on my BlackBerry, and emailed the completed message.

Once done, my mental self caught up with my physical self – which was already at the event 😉

Jott’s a great enabler for working moments!

Jott: Now Available in Canada!

Early this year I blogged about Jott.

There was, however, one very significant caveat:

Unfortunately, I cannot attest to how well this actually works.

I live in Canada, and the public beta only supports US-based cell phones -(

I am delighted to report that the US-only restriction no longer applies, as Jott is now available to Canadian-based cell phones!

All you have to do is call 647 724 5814.

(For those that don’t know, 647 is a Toronto-based exchange that handles the overflow from the original 416 exchange. This may also mean that long-distance charges are applicable.)

I’m running through some basic tests and am impressed by what I’ve experienced so far.

Since Canadian-based DICtabrain is apparently dead, this makes Jott’s arrival on the Canadian scene even more compelling.

[Thanks to Shree from Jott for letting all of us know!]

DICtabrain: “Voice Powered Ideas”

In a recent post, I blogged:

… Jott goes a lot farther than my low-tech solution:

  • You call their toll-free number
  • You leave a message – your reminder, to-do, idea, etc.
  • Jott transcribes your message, and delivers the corresponding text to your phone and email

“Obscenely simple … incredibly clever” (Christopher Null, Yahoo! Tech). I couldn’t agree more!

Unfortunately, I cannot attest to how well this actually works.

I live in Canada, and the public beta only supports US-based cell phones -(

Fortunately, there’s great news for us Canucks as DICtabrain is developing a similar solution 🙂

Although I expect to have more to blog about soon, it’s worth noting that DICtabrain:

  • Makes an explicit connection to blogging
  • Is looking for alpha-trial participants
  • Has their own blog

Some may be nonplussed by services like DICtabrain’s or Jott’s.

As DICtabrain’s James Woods blogs:

Some people will never understand the benefits of voice powered writing while others seem to be waiting for it with baited breath.

I think the reason for this disconnect is the creative process itself.

Some people need to internalize their creative process by working things through inside their heads.

Others need to externalize it. And its for the externalizers that frameworks like GTD and solutions like DICtabrain’s make complete and total sense. In DICtabrain’s words: “Good ideas are only valuable if they can be remember[ed] and then actioned.

With Jott and DICtabrain appearing on the scene with similar solutions within the past 3-4 months, it’s clear that there’s something interesting happening.

Perhaps Jott and DICtabrain have glommed onto a disruptive innovation.

What are they disrupting?

How about the dictaphone + analog/digital voice recorders + voicemail + technology for action management methods.

Collectively!

That’s an impressive disruption, and one of the reasons why companies like DICtabrain and Jott are likely to draw attention from the likes of:

  • Traditional dictaphone companies – ??
  • Consumer electronics companies – Apple, Sony, etc.
  • Telcos/Networking companies – Cisco, Nortel, Skype, etc.
  • Software companies – Google, Microsoft, Nuance, etc.
  • And others

With unified messaging a key deliverable of enterprise-class traditional PBX and VoIP solutions, injecting the DICtabrain or Jott solution into the mix could be quite interesting. For example when you have robust IP connectivity, you have the networked equivalent of Nuance’s Dragon NaturallySpeaking in Skype + (DICtabrain or Jott) … and potentially more!

To re-quote Christopher Null, Yahoo! Tech: “Obscenely simple … incredibly clever”.

Let me close (again) with a small dose of realism:

I haven’t been particularly impressed by speech-to-text conversion in the past. This will be the gating factor for me.

Jott: “Think it. Jott it. Do it.”

Have you ever left yourself voicemail?

I have. I’ve left myself reminders, to-dos, tried to capture ideas, etc.

Most often, I’ve done this when I’m driving somewhere. I use my cell phone to make a call to my voicemail because I can’t (easily) write or use my Blackberry.

That’s the basic premise behind Jott.

However, there is one significant difference. Jott closes the loop. In their words: “Think it. Jott it. Do it.”

The loop-closing “Do it.” is one of the reasons why Jott is currying favor with the GTD crowd.

And of course, Jott goes a lot farther than my low-tech solution:

  • You call their toll-free number
  • You leave a message – your reminder, to-do, idea, etc.
  • Jott transcribes your message, and delivers the corresponding text to your phone and email

“Obscenely simple … incredibly clever” (Christopher Null, Yahoo! Tech). I couldn’t agree more!

Unfortunately, I cannot attest to how well this actually works.

I live in Canada, and the public beta only supports US-based cell phones 😦

To be more precise:

I’m outside of the United States, can I use Jott.com?

You can if you are using your cell phone, and the Caller-ID comes through to our systems. However, significant charges may apply to this phone call, so check your Carrier’s Terms and Conditions. Jott.com is not responsible for charges associated with phone calls, internet access, text messages, and the like.

That’s from the Jott FAQ. Regardless, it didn’t work for me 😦

I haven’t been particularly impressed by speech-to-text conversion in the past. This will be the gating factor for me. Because I can’t do my own assessment, I was interested in Jott’s FAQ on this:

Why are my jotts not transcribed perfectly?

We use a combination of machine and human transcription to convert your voice to text. The quality of this transcription is affected by many factors, including recording quality, noise, accents, pronunciation, etc. At times, the quality of the recording will be so bad that we will simply label it inaudible. You are free to click on the speaker icon at our web site to easily listen to your recording.

We encourage you when leaving jotts to speak clearly and normally, understanding that the quality of the recording will affect the quality of the transcription.

Given that personal transcription programs (like Dragon NaturallySpeaking) require substantial training to be effective, this entry in Jott’s FAQ is certainly a reasonable one.

Jott has more to offer. For example, there is Jottcasting. One scenario they describe is simultaneous delivery of a message to a recipient’s phone and email.

What I really like about Jott is its elegant simplicity.

I expect Jott to be an excellent acquisition target for the likes of Google …

And for those who like to have everything integrated, Jott would have much more value if it was a part of some existing solution like Google Office (GMail + Google Docs & Spreasheets).

I look forward to seeing Jott develop (e.g., by tracking their Web site and blog) – and especially to Canadian service 🙂

The Service Oriented Architecture (SOA): The Key to Recontextualizing the Knowledge Worker for the Conceptual Age

Consider the following snippet from Cloninger’s book:

In his book A Whole New Mind, author and business consultant Daniel Pink proposes that we are transitioning from the information age into the “conceptual age” … According to Pink, three forces – abundance, Asia and automation – are currently displacing the knowledge worker. In time, mere software skills will become increasingly less valuable than the conceptual ability to recognize what works and what doesn’t.

As a knowledge worker, I’m concerned about being displaced.

And even though I’m at the earliest of stages of internalizing Pink’s message allow me to suggest, that if Pink is correct, this shift underscores the value of the Service Oriented Architecture (SOA).

Thomas Erl defines a SOA as follows:

Contemporary SOA represents an open, extensible, federated, composable architecture that promotes service-orientation and is comprised of autonomous, QoS-capable, vendor diverse, interoperable, discoverable, and potentially reusable services, implemented as Web services.

SOA can establish an abstraction of business logic and technology, resulting in a loose coupling between these domains.

SOA is an evolution of past platforms, preserving successful characteristics of traditional architectures, and bringing with it distinct principles that foster service-orientation in support of a service-oriented enterprise.

SOA is ideally standardized throughout an enterprise, but achieving this state requires a planned transition and the support of a still evolving technology set.

With the exception of the explicit reference to Web Services, Erl emphasizes SOAs from a conceptual perspective.

Taking Pink and Erl together then, it is more important to possess the conceptual ability to understand what works and what doesn’t from a SOA perspective, than the software skills to actually implement a SOA solution.

Also at this early stage, it’s interesting to speculate on Pink’s three forces and SOAs:

  • Abundance – SOAs are experiencing significant uptake. Why? SOA-based solutions address needs. These needs and corresponding adoption of SOAs have resulted in an abundance force.
  • Asia – As the World Wide Web leveled the playing field for document-oriented interactions, SOAs are doing the same for the programmatic-oriented second generation Web (Web 2.0). Such a service-oriented paradigm means that the burgeoning development community in Asia (the Asian force) is as likely to contribute to SOAs as anyone elsewhere on the planet.
  • Automation – As is evident from Erl’s definition (above), automation is a key benefit of a SOA. However, it’s automation that allows for business processes to be completely re-engineered, not merely accelerated. This results in an automation force.

Even though highly speculative at this point, it’s fairly clear that the three forces driving Pink’s predicted shift into the conceptual age are not entirely at odds with Erl’s notion of a SOA.

Thus understanding SOAs via books, courses, etc., would appear prudent for all of us to-be-displaced knowledge workers.

Note-to-self: Read Dan Pink’s A Whole New Mind.

Genetic Aesthetics: Generative Software Meets Genetic Algorithms

I’m still reading Cloninger’s book, and just read a section on Generative Software (GS) – software used by contemporary designers to “… automate an increasingly large portion of the creative process.” As implied by the name, GS can produce a tremendous amount of output. It’s then up to the designer to be creatively stimulated as they sift through the GS output.

As I was reading Cloninger’s description, I couldn’t help but make my own connections with Genetic Algorithms (GAs). I’ve seen GAs applied in the physical sciences. For example, GAs can be used to generate models to fit data. The scientist provides an ancestor (a starting model), and then variations are derived through genetic processes such as mutation. Only the models with appropriate levels of fitness survive subsequent generations. Ultimately, what results is the best (i.e., most fit) model that explains the data according to the GA process.

In an analogous way, this is also what happens with the output from GS. Of course, in the GS case, it is the designer her/himself who determines what survives according to their own criteria.

The GS-GA connection is even stronger than my own association may cause you to believe.

In interviewing Joshua Davis for his book, Cloninger states:

At one point, you talked about creating software that would parse through the output of your generative software and select the iterations you were most likely to choose.

Davis responds:

That’s something [programmer] Branden Hall and I worked on called Genetic Aesthetic. It uses a neural network and genetic algorithms to create a “hot or not” situation. It says, “Rate this composition I generated on a scale from 1 to 10.” If I give it a 1, it says, “This isn’t beautiful. I should look at what kind of numbers were generated in this iteration and record those as unfavorable.” You have to train the software. Because the process is based on variables and numbers, over a very short period of time it’s able to learn what numbers are unsatisfactory and what numbers are satisfactory to that individual human critic. It changes per individual.

That certainly makes the GS-GA connection explicit and poetic, Genetic Aesthetic – I like that!

I’ve never worked with GAs. However, I did lead a project at KelResearch where our objective was to classify hydrometeors (i.e., raindrops, snowflakes, etc.). The hydrometeors were observed in situ by a sensor deployed on the wing of an airplane. Data was collected as the plane flew through winter storms. (Many of these campaigns were spearheaded by Prof. R. E. Stewart.) What we attempted to do was automate the classification of the hydrometeors on the basis of their shape. More specifically, we attempted to estimate the fractal dimension of each observed hydrometeor in the hopes of providing at automated classification scheme. Although this was feasible in principle, the resolution offered by the sensor made this impractical. Nonetheless, it was a interesting opportunity for me to personally explore the natural Genetic Aesthetics afforded by Canadian winter storms!