Google Chrome for Linux on Bright Hub: Series Expanded

I recently posted on a new article series on Google Chrome for Linux that I’ve been developing over on Bright Hub. My exploration has turned out to be more engaging than I anticipated! At the moment, there are six articles in the series:

I anticipate a few more …

It’s also important to share that Google Chrome for Linux does not yet exist as an end-user application. Under the auspices of the Chromium Project, however, there is a significant amount of work underway. And because this work is taking place out in the open (Chromiun is an Open Source Project), now is an excellent time to engage – especially for serious enthusiasts.

Stainless Improving By Leaps and Bounds!

When I first wrote about Stainless, I indicated that it provided impressive features/functionalities for a version 0.1 release. In a subsequent post, I elaborated on Stainless’ strengths and weaknesses. 

Stainless is now at version 0.2.5. And in the space of a few weeks, Mesa Dynamics has addressed a number of the weaknesses I previously noted. Specifically:

  • Download capability – It just works now! Thanks!
  • Offline mode – Via Google Gears. Interestingly, I predicted this might take some time. I am so happy to be wrong!!
The release notes for Stainless provide the details on these and numerous other improvements.
So, what’s left? In order for me to shift to Stainless as my ‘production browser’, I really need:
  • Interaction with Google Notebook – Even via the bookmarklet is fine! 
  • URL Caching/Auto-Completion – As noted previously … 
Even with these production must-haves, Stainless is well worth a look today.

What You Will/Won’t Get with Stainless

Earlier today, I started to evaluate Stainless. In this post, it’s my intention to dig a little deeper by sharing more of what you will and won’t get with Stainless.

What you will get:
  • Private Browsing – On selecting “File \ New Private Browsing Window”, the Stainless browser that appears makes use of WebKit‘s private browsing mode. In this mode, global history, page caching and storing of AutoFill information are disabled. Spawned tabs and windows inherit the private-browsing mode.
  • Single-Point-of-Entry – Obviously you can type in a URL. However, you can also type in a text string (e.g., “Google Chrome”) to initiate a search via Google. In fact, via Stainless’ “Preferences”, you can choose to make use of Google, Yahoo!, Live Search, AOL or Ask.
  • Process Management – I alluded to the multiprocess capability of Stainless in the previous post. I’ve just realized that by selecting “Window \ Process Manager” you can monitor and even terminate processes via a simple GUI. Very nice!
What you (likely) won’t get:
  • Downloading Capability – I tried to download from a few sites … and all attempts FAILED!! I am shocked and amazed. I saw a Page loading error: Frame load interrupted message appear in the status bar each time … This is disappointing and will hopefully be fixed in version 0.2.
  • History – Via Stainless’ “Back” button, there is some notion of history, but that’s it.
  • URL Caching/Auto-Completion – URL caching and auto-completion are unavailable.
  • An Open Source Version – There’s a significant Open Source aspect to Chrome. Based on proprietary technology developed by Mesa Dynamics for their Hypercube personal-widgetsphere offering, Stainless and Open Source seem unlikely to resonate.
  • Cross-Platform Support – Stainless is available for Mac OS X Leopard. Will this offering will be broadened? Unknown.
  • Extensibility – This killer functionality is a core competence of Mozilla Firefox. It appears that Chrome will sport something analogous. Stainless? Unknown?
  • Offline Mode – I’m thinking of something along the lines of Google Gears … but I don’t see it arriving soon … I installed Gears for Safari. Unfortunately, Stainless gives me the impression that I have Gears support, but in reality (during an offline situation) it’s clear that I don’t. Misleading.

Despite the negatives, I expect to continue to make use of Stainless, and encourage you to do the same.

Feel free to chime in with your impressions.

Chrome Today the Stainless Way

Even though I recently whined about the wait for Google Chrome on Mac and Linux platforms, I haven’t spent any effort empowering some other browser with Chrome-like features/functionalities – even though this is possible. And although CrossOver Chromium caught my attention, I wasn’t sufficiently motivated to evaluate it either.

Somewhat surprising then is the fact that I have gravitated rapidly towards a quick-and-dirty evaluation of “Stainless – a multiprocess browser for OS X inspired by Google Chrome.” Inspired is definitely the operative word here as:

… the Mac version of Chrome will use a WebCore-rendered bitmap to pass between the browser and rendering processes. The strategy we use in Hypercube (and now Stainless) is far less ambitious, but a whole lot easier to do and, thus, available today for your downloading pleasure (for Leopard only, sorry).

And what a pleasure it is!
Honestly, based on the recent LifeHacker post, I expected a whole lot less than what Stainless actually delivers today – in version 0.1!

Based on about 30-minutes experience, Stainless:
  • Performs well – It loads Web pages quickly. And as “ps -alx | grep -i stainless” indicates, Stainless really is a multiprocess browser for OS X. For me, this alone makes Stainless worth the effort.
  • Supports AJAX – I’m writing this blog post using Google Docs via Stainless. Stainless worked fine on my initial tests with other Google productivity apps – I tested Google Spreadsheets and GMail. I therefore have some level of comfort in proclaiming it as supporting AJAX. Nice!
I’m sure I’ll have more to say soon … In the meantime, though, even at this early stage Stainless is definitely worth a serious look.

Synced-Data Applications: The Bastard Child of Convergence

At the Search Engine Strategies Conference in August 2006, in an informal conversation, Google CEO Eric Schmidt stated:

What’s interesting [now] is that there is an emergent new model, and you all are here because you are part of that new model. I don’t think people have really understood how big this opportunity really is. It starts with the premise that the data services and architecture should be on servers. We call it cloud computing – they should be in a “cloud” somewhere. And that if you have the right kind of browser or the right kind of access, it doesn’t matter whether you have a PC or a Mac or a mobile phone or a BlackBerry or what have you – or new devices still to be developed – you can get access to the cloud. There are a number of companies that have benefited from that. Obviously, Google, Yahoo!, eBay, Amazon come to mind. The computation and the data and so forth are in the servers.

My interpretation of cloud computing is summarized in the following figure.


Yesterday, I introduced the concept of Synced-Data Applications (SDAs). SDAs are summarized in the following figure.


SDAs owe their existence to the convergence of the cloud and the desktop/handheld.

Is Desktop Software Dead?

When was the last time you were impressed by desktop software?

Really impressed?

After seeing (in chronological order) Steve Jobs, Al Gore and Tim Bray make use of Apple Keynote, I absolutely had to give it a try. And impressed I was – and to some extent, still am. For me, this revelation happened about a year ago. I cannot recall the previous instance – i.e., the time I was truly impressed by desktop software.

Although I may be premature, I can’t help but ask: Is desktop software dead?
A few data points:
  • Wikipedia states: “There is no page titled “desktop software”.” What?! I suppose you could argue I’m hedging my bets by choosing an obscure phrase (not!), but seriously, it is remarkable that there is no Wikipedia entry for “desktop software”!
  • Microsoft, easily the leading purveyor of desktop software, is apparently in trouble. Although Gartner’s recent observations target Microsoft Windows Vista, this indirectly spells trouble for all Windows applications as they rely heavily on the platform provided by Vista.
  • There’s an innovation’s hiatus. And that’s diplomatically generous! Who really cares about the feature/functionality improvements in, e.g., Microsoft Office? When was the last time a whole new desktop software category appeared? Even in the Apple Keynote example I shared above, I was impressed by Apple’s spin on presentation software. Although Keynote required me to unlearn habits developed through years of use Microsoft PowerPoint, I was under no delusions of having entered some new genre of desktop software.
  • Thin is in! The bloatware that is modern desktop software is crumbling under its own weight. It must be nothing short of embarrassing to see this proven on a daily basis by the likes of Google Docs. Hardware vendors must be crying in their beers as well, as for years consumers have been forced to upgrade their desktops to accommodate the latest revs of their favorite desktop OS and apps. And of course, this became a negatively reinforcing cycle, as the hardware upgrades masked the inefficiencies inherent in the bloated desktop software. Thin is in! And thin, these days, doesn’t necessarily translate to a penalty in performance.
  • Desktop software is reaching out to the network. Despite efforts like Microsoft Office Online, the lacklustre results speak for themselves. It’s 2008, and Microsoft is still playing catch up with upstarts like Google. Even desktop software behemoth Adobe has shown better signs of getting it (network-wise) with recent entres such as Adobe Air. (And of course, with the arrival of Google Gears, providers of networked software are reaching out to the desktop.)

The figure below attempts to graphically represent some of the data points I’ve ranted about above.

In addition to providing a summary, the figure suggests:

  • An opportunity for networked, Open Source software. AFAIK, that upper-right quadrant is completely open. I haven’t done an exhaustive search, so any input would be appreciated.
  • A new battle ground. Going forward, the battle will be less about commercial versus Open Source software. The battle will be more about desktop versus networked software.

So: Is desktop software dead?

Feel free to chime in!

To Do for Microsoft: Create a Wikipedia entry for “desktop software”.

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.

Injury Time: Remembrance of Things Just Passed …

What happened?

I strained my lower back. Badly. It was the result of two careless acts: 
  1. Lifting a heavy prop awkwardly at our annual Mardi Gras event. I felt a twinge of pain, and suspect that this predisposed my back towards injury.
  2. Attempting to leave a leg-press machine before completely releasing the 220 lbs of weight that I, back included, was still supporting. 
The pivotal incident (involving the leg-press machine) happened last Wednesday at the University’s athletic complex. Of course, I finished my hamstring curls and rowed for 20 minutes before calling it a day. Doh! 
And yes, I knew then that I was in deep trouble. 
Contrary to my spouse’s advice, I hauled my sorry self off to the University the next day, because I had things that must be done. Doh! With a notable, curvaceous list (upwards to the left), and walking speed 10-20% my normal, I can honestly state that I got a deeper appreciation of what it means to be differently abled. People rushing past me, icy walkways, plus doors stiff to open, were all-of-a-sudden on my radar. 
I barely made it through that Thursday.
I started my formal convalescence (aka. sensible acknowledgement of my predicament) on Friday morning. 

What did I do?
I convalesced. At this point, I had no choice! I took muscle relaxant and installed myself upon a heating pad. Save for attending to primal bodily functions, and attempting to do a few exercises I learned in physio that last time I strained my lower back, I remained in a sub-horizontal state through the entire weekend. I had to pass on a friend’s birthday party and a ski day 😦  
But, I:

I fretted. About work – not being there, work piling up, etc. And about my exercise routine – that picked me up, and then knocked me down! I communed with my family – when they weren’t making up for my shortfalls – and with our pets (three cats and an obnoxiously vocal husky).


What did I learn?
How good people are to me. From walking the dog to driving Miss Daisy (our teenage princess to/from dance/work/friends/etc.) to countless other things I normally do, my family filled the gaps and still had some energy left over for me in my supine state. When I did hobble into the office, I received all kinds of moral and physical support from my co-workers.
In addition to valuing my health, which I’ve been consistently better at for about the past seven months, I need to be careful – especially during acts of weekend heroism (aka. attempts at being handy) and/or exercise (technique and form do matter – ouch!).
I need to allocate more time for reading. All kinds of reading. Because I really don’t watch TV, except for NFL football, there’s nothing I can do there. Reducing the amount of time I spend handling email is about the only place I believe I can claw back from. In the 4-Hour Work Week, Timothy Ferriss presents some provocative suggestions on this front; I’d better re-read that! 
The BlackBerry is a wonderfully powerful platform that suits me when I am highly mobile, but also when I’m highly immobile – like flat on my back, literally! It’s also the only device my back can actually handle me moving around with at the moment – my laptop in an over-the-shoulder case is a non-starter for me in my current condition.

Why did I share this?
So that I have something to refer back to (sorry), when I’m getting careless!  

Book Reviews: Coming Soon!

Packt Publishing has kindly sent me the following books to review:

Please stay tuned as I expect to share my feedback here on my blog over the next few weeks …

Ten Tips for iPhone Competitors

The iPhone’s out!In no specific order, here are ten tips for competitors:

  1. Reaffirm your position. In the best-case scenario, this requires you to provide evidence or facts that your business is great. RIM provided a text-book example by boasting better-than-anticipated profits, a stock split and a new product offering the day before the iPhone was released. Nice work. Excellent timing.
  2. Ride the marketing tsunami. You have the market’s ear, so it’s an excellent opportunity to be heard. Take advantage of it. Again, RIM’s day-before triple play provides an excellent illustration.
  3. Flaunt the imperfection. Apple likes to make a big splash. And although the iPhone will offer a lot on day one, it doesn’t have it all. This presents an excellent opportunity to showcase the iPhone gaps addressed by your offering. For example, Helio will tell you that the iPhone doesn’t provide a chat functionality whereas their Ocean does.
  4. Be open. In many ways, Apple’s offerings are more proprietary than Microsoft’s. From anti-trust suits to informal banter, Microsoft gets beaten up on this on a daily basis. Despite a number of objections relating to the highly closed nature of the iPod, Apple gets off relatively easy. This may be an angle to exploit, but it’ll take some work. And Apple may have just made this a more difficult angle to exploit. How? They’ve made it clear that AJAX-enabled Safari is their platform for third-party iPhone developers. Based on JavaScript and XML, AJAX is about as open as it gets.
  5. Engage in coopetition. In some cases, it makes sense to juxtapose cooperation and competition. This results in coopetition, and examples of it abound. Although I wouldn’t expect Apple to be too receptive to a competitor’s advances at this time, it may still be possible to engage in a little gorilla coopetition. For example, iPhone competitors like RIM could offer feature/functionality enhancements to their desktop offering for Apple Mac OS X computers.
  6. Partner. Relative to Apple, RIM is small fry. (Forgive the hyperbole, I’m trying to make a point!) Through partnerships, however, RIM could reduce to topple the size imbalance. For example, a RIM-Google partnership could be interesting. With many of Google’s offerings already available natively for the BlackBerry, there’s an established starting point.
  7. Wire continuous improvement into your DNA. In other words, avoid the big splash. As captured by a recent item in Information Week, this is the Google way:

    Google Apps, which includes Google Docs & Spreadsheets, Gmail, Google Talk, Google Calendar, and Google Start Page, received several other improvements Monday. This is in keeping with Google’s strategy of incremental product improvements, said Chandra, who noted that Google Apps had seen some 30 new features and updates in the four months since it was introduced.

    The Google way works, in part, because the Internet, Web, etc., have been wired into Google’s DNA from the outset. So, although the continuous improvement sentiment has wide applicability, adaptation is likely required to ensure effective execution. In some ways, Dell’s just-in-time approach to inventory offers an analogous potential for continuous improvement in the production of computer hardware.

  8. Leverage the marketing tsunami. Arguably, the iPhone introduction is taking Apple into new markets with a new product. apple_markets_products001.pngOf course, Apple has to some extent limited their exposure by making the iPhone a convergence play – Phone + iPod + Internet. This means they have both product and market experience they can readily tap. iPhone competitors can also leverage the tsunami from established products and markets to new ones. Perhaps more importantly, the presence of the tsunami that Apple has established means that others can progress systematically from an established situation to a new one. apple_markets_products002.pngFor example, a competitor could progress from an established product and market to a new market with the same product. Alternatively, the trajectory could be from an established situation to a new product for an established market. Such lower risk entrays have been primed by the iPhone tsunami, and iPhone competitors can progress towards new products for new markets incrementally.
  9. Balance awareness with distraction. This one is tough! You need to be aware of the iPhone, and all that that embodies, while at the same time not be distracted from your focus. By staying close to your customers, while being sensitive to the broader market that the iPhone and other products will drive, you will have the best prospects for ensuring success. In terms of something a little more concrete … Listen. If customers complain the your desktop software needs improvement, or that it takes too many clicks to navigate with your Web browser, listen. Listen and then address these issues as opportunities, one by one.
  10. Leverage your community. In the case of Apple, the community is so polarized that it’s been described as religion in the past. Although I haven’t studied it in a lot of detail, the Apple community appears to be a consequence of the cool and innovative way that Apple allows you to “Think different”. Engage with your community. Even though there are so many ways to do this, I don’t see enough vendors doing this.

Agree? Disagree? More tips? Please chime in.