Wednesday, April 13, 2005

My Top 5 Wishes for Google

Google announced its IPO on August 18th, 2004. After a flurry of market buzz the company landed a considerable amount of capital and the founders became billionaires. What's more impressive is the "hippness" of this new Internet darling in its ability to attract some of the best and brightest talent in the software biz as a result of either this great IPO or simply having some very novel approaches to software architecture and design. Google built the best search engine possible before the IPO and now, with all this new talent and capital, what have they accomplished since? Below is a quick paraphrasing of some of the Google press releases since August 18th, 2004:
  • A limited desktop search tool (see Wish #1 below)
  • Acquisition of a satellite mapping company, then later deployment of a mapping site.
  • Improvements to discussion groups.
  • Printed book searching.
  • Photo sharing.
  • TV caption search.
  • Searches from mobile phones.
Interesting as some of these announcements are they all suggest an incremental backfilling of the existing portfolio offering modest changes to the status quo of search technology. In fact, most, if not all of these services have been available on the Internet before (some for many years) with Google offering barely little to differentiate. Granted, this may help float the ad rotation business I can't see a lot of innovation in this technology other than consolidation which, on the Internet, does not create much of a delta. I will admit that I probably have a naive view of Google's business but what I am most concerned about is its technology. Where is the next big thing? What exciting and risky ventures will Google undertake in the IPO afterglow? From my perspective there seems to be a dearth of grand new ideas in the current software market so shouldn't a cash heavy, self proclaimed innovation based company such as Google lead the way? In the seeming absence of new ideas from the Google press releases I took a moment to jot down my own thoughts on some suggested avenues for Google innovation. Below are my top five wishes (plus one extra credit wish):

1. Beat Spotlight. This new search technology from Apple is not only right up Google's alley it is nearly it's raison d'etre. Google desktop search is a stab but falls way short. Specifically, smart folders, easy application integration (not just addin's for new document type indexing but an SDK for quickly adding a simple search bar to apps, a Windows standard control even), and prepackaged addin's for popular app.s like MS Office.

2. Consolidate your services. Why do I have to go to separate search pages to utilize all of Google's services? Excuse me if this already exists (seems so natural that it would) but it would be great if we could embed some "service protocol" marker (other than just "stocks" and "define") in the query so that I can search anything from groups, to news, to maps from the same entryfield (hacking up an URL is not an option especially for end users). This feature shines even more if this "grand unified entryfield" is built into applications using the SDK from #1.

3. Explore collaborative filtering. O.K., time to start flexing those research muscles and make use of the mountain of user data that I'm sure Google is collecting. What we are after is not just a suggestion of a replacement for a misspelled word but actual suggestions of Internet destinations based on a statistical model formed by millions of users typing in search terms then clicking on their destination. I could be going out on a limb but it seems to me that without changing the overall user experience Google could easily track which search words could be connected to which web sites (you know the user has found their site when they stop repeating the search... don't you?). Given the amazing corpus of data at the algorithm's fingertips I'm sure this could produce some very exciting results.

4. Be the common repository. How many people have to write their own "GMail Drive Shell Extension" for the lightbulb to go on? Instead of me saying to my workmate, "hey, I'll send you that file in e-mail" or "I'll post my vacation photos on photo sharing site X so you can see them" why not just say "I'll copy the files to the G: drive"? Of course, "G: drive" is the standard shell extension that gives everyone in the world another drive on their computer for storing / transferring files that uses the Google file system. Toss in a little per-user directory security and you've now got a generalized approach to many problems being solved in many different ways on the Internet.

5. Build the rich client. By this I don't necessarily mean create yet another browser. Why not build the "best of breed" tool for writing robust web based applications? For example, what if I wanted to write Google Maps? What array of tools would I need? Are these tools specifically suited to build this type of app. or am I twisting them someway to get the job done? What sort of hosted services do I need to make this happen? Today, the answers to these questions involve the use of several flavors of technology and service providers which will daunt most web developers. The panacea is to install a single environment that has some knowledge of the Google host, an innate understanding of DHTML, XML, and JavaScript, as well as deployment capability. If such an environment were cheap and easy to acquire one could imagine a great leap in the consumption of Google's services.

Extra Credit (for the innovation "monster"):

6. Be the Standard Application Service. Microsoft has been yammering about this for years. It's hot and cold running software. I no longer want to buy shrink wrap boxes for a fixed price plus some potential upgrade fee down the track with obligatory updates coming from some "other" place that I need to find. Instead I want to pay a nominal fee up front for just the applications that I need with an option to add more applications as I need them. Included in the deal are constant updates and potentially some community features built around the applications. For example, I get a new PC. I log on to Google because I need to design a presentation and don't have any presentation software. I click on PowerPoint (good luck) or the best offering from Open Office. I enter my credit card info and get charged some low amount (say $10) and some great P2G (peer to Google) exchange takes place after which I have the package automatically installed. I "pay as I go" the more I use the application or add others. The application is automatically updated as needed. Like my phone bill I pay my software bill each month. I would prefer this approach to software use (as I believe many others) and it may even be more profitable for software companies in the long run.

There you have it. I'd be happy if any of these wishes came true and who knows, if they did come true the street may also cast a bit of love Google's way.

Sunday, November 21, 2004

Million Monkey Manifesto

Is the war over? Have we sufficiently codified the method and the medium? Has the software “client” become so ubiquitous and capable that we can finally detach ourselves from the complicated mess of software design and instead focus on using our software to better communicate? I recently read Adam Bosworth’s talk from ISCOCO4 and felt a bit underrepresented. To grossly paraphrase; “it’s the data stupid”. This soliloquy seems to have always echoed throughout the halls of edificial corporate computing but to me, it never really rang true, mostly because I was too busy writing code to manipulate the data to be afforded the luxury of actually thinking about the data. Adam’s comments cause me to pause and consider my livelihood as a software engineer and question its relevancy, or rather, the business model upon which its relevancy is based.

To clarify, the DC Comics version of the battle has Bizzaro, your everyday internet user (hopefully, not be confused with the “tragic commons” but a shaping force none the less) pitted against our archetypical protagonist Superman, the systems architect positioned at your local custodial internet transformation factory. Bizarro doesn’t really care how he gets things done; “… is big crime to make anything perfect in Bizarro World”. Superman seeks order and justice in society. They battle, mostly in the real world, over order and chaos with the result in question being Mosaic, the first highly visible internet browser. This invention could acquire data from the vast entropy of interconnected computers, and, with the aid of some human readable self describing meta data, would render the data in a window on the computer screen however the publisher meant the data to be seen. Simple, ordered, tangible, and linked by reference to related information. Problem solved. Or is it? I mean, Bizarro still seems to burn Superman’s biscuits every now and again.

Let’s attempt to put this in perspective. When we talk about the internet and computing we are talking mostly about the “…need to store information and transmit information outside of human memory and over time and over space.” The previous statement was made by Dr. Holly Pittman, the director of the Center for Ancient Studies at the University of Pennsylvania with the context being the origins of the first written word. What’s most ironic to me is not that we can directly correlate the crux of the modern internet with the origins of the written word but instead, according to Dr. Peter Damerow of the Max Plank Institute for the History of Science, the first Proto-cuneiform writings were “severely restricted” and not really sentences and narrative but more lists and categories. Why? Because the first written texts were auditing records for the purposes of economic administration. Alas, the body corporate has invented written communication and to this day continues to prescribe its attendant faculty on its evolution through the digital medium.

Which brings me to the title of this post. There is a parable that is used to illustrate probability which suggests that given a million monkeys (actually I think the term was “infinite monkeys” but a million has commas and suggests possibility) and a million typewriters that eventually they will produce the works of Shakespeare. In economic terms, if the works of Shakespeare are valuable in the marketplace and monkeys are cheap and typewriters are cheap then I’d say we’ve got a mission statement. To be more concrete, technologies such as SOAP, XML-RPC, DCOM, DCE, IIOP, CORBA, etc.. have been solving corporate problems for a long time because large corporations have the manpower, the capital, and the motivation to solve such problems. Efficiency, clarity, and malleability are collateral damage and not essential to the ultimate goal. This is not interesting to me.

Why did HTML succeed? I propose that it’s success is insignificant and probably would have been sufficiently replaced any one of a number of competing document description languages had the timing been slightly different. The real jewels of the internet crown are TCP/IP, DNS, and the W3 consortium. Without the simple ability to translate a human readable resource identifier using a guaranteed persistent name database into some non-ambiguous network host address and then be routed, in an efficient way, to that host computer you would not be reading this. Before this technology the most popular forms of network communication consisted of tossing all the data into the air (or rather “ether”) and hoping it would land on your coworker’s desk. Either this or you put your data on the corner of your desk and waited patiently for the mail boy to make his rounds of every employee in the company, pick up your data and hand deliver it. Obviously neither were scalable solutions. I suggest that the inventors of the internet were not so much concerned about markup standards like HTML, aggregation standards from T-SQL to RSS, or even standards governing how voice, music, and video could be transmitted but rather they were mostly concerned with solving the scalability problem. This raises the question of what problems are we really trying to solve?
  • Why is it so easy to interact with a web log but so difficult to write your own web logging system? Specifically, Tim Berners-Lee originally spec’d the internet to be both readable and writable yet, to date, it is barely possibile. (WebDAV / DeltaV are trying).

  • Why do the state of the art development tools continue to push Neolithic user interface controls which barely resemble those used in the modern web browser? (automatic layout, arbitrary clipping, and embedded frames come to mind, with thoughts of XUL, XAML, and WHAT to ponder)

  • Why do we easily accept the declarative nature of spreadsheet design as the ultimate modern expression of human-machine interface yet toss the baby out with the bathwater with DHTML or completely imperative systems? (Laszlo and Margaret Burnett seem to be looking into this)

  • If it is all about content and aggregation why do the majority of web designers understand JavaScript? And since when did typing in an “url”, clicking a “combobox”, and selecting a “radiobutton” become rooted in the lingua franca of Amazon-surfing grandmothers across the planet? The inverse (and more interesting question) is how does the way in which shared data is rendered in a browser affect the authoring process and even the content itself?
In the prosaic words* of someone I respect a great deal who commented recently on the state of the internet and computing, “pretty much everything that’s believed is bullshit”.

In closing I should return to the relevancy of software engineering and consider that when proposing a new state of the art that perhaps we are defined by tragedy. Some may pick the stock market collapse and choose to build more robust information systems. Some may take the nasty oppressiveness and historical revision of the totalitarian state by building efficient centralized information cross indexing systems (along with a dash of capitalistic ad placement). For my tragedy I choose the destruction of the Library of Alexandria. This library contained the collected works of Euclid, Ptolemy, Aristotle, Sophocles, and Pythagoras to name a few. Because information could only be recorded by well educated scribes and because the printing press was centuries away when the library burned down almost all the information was lost forever. Some say that only about ten percent of the ancient works survived which then became the foundation for modern philosophy, geometry, and medicine. I sometimes try to imagine how much time we are making up. Recently, a set of server-based tools has become popular in easing the pain of web log creation. The title chosen for this tool is Moveable Type. I understand where they’re coming from. The effect is not lost.

Thursday, September 30, 2004

My new life in the blogsphere, a meta-blog entry

I never used to write journals as a kid. It is fun to force this new habbit onto myself. Rarely do we get to change fundamental aspects of lives as we grow older. I am looking forward to new blog entries soon.

Tuesday, August 10, 2004

The Unstoppable Force meets the Unsolvable Problem

Back in the days I remember running installs of Outlook from within the MS firewall with the shared enthusiasm of all MS employees at the time that what we were witnessing yet another market niche conquest, this time in the e-mail and PIM space. Or at least we had enthusiasm for the stock price which would almost certainly rise after the fact. However, those early versions had a few minor glitches, as you would expect, the most notable to me being the annoying tendancy for the entire Outlook UI to freeze during certain operations.
  • Click on an e-mail header with preview window open, freeze.
  • Click to view the file menu, freeze.
  • From options, test connection to server, freeze.
(don't worry, the UI will be back soon, really... promise... ok, you may want to go get a muffin or something while I figure out why the communication link as gone awry)

Why do I bring this up now? Because we can still witness the SAME behavior in Outlook 2003.

I love working on UI, when I get the chance. It seems that so much UI is relegated to the bastions of common control designers and the oft under-represented "front end" team members in leiu of the meaty "middle-ware" IP these days that maybe some coherency has been lost. Maybe I'm quibling. Maybe I'm a nattering nabob of negativity. Maybe not. Take two steps back, maybe there is a lot of complexity in loosely coupled systems. Maybe we should be thankful the system works at all. I refuse to accept this. I mean, how many DECADES have we been writing e-mail clients?

I suppose it would be anathema to play the CHI, human factors, and usability cards. Ship dates, rounded edges, anti-aliasing, and shading will trump. This is the game for the time being or until just the right person harbours just the right amount of disgust over such issues and brings forward the charge, "can we use software to improve the interface to this machine?". I guess the bigger question is, "will this sell one more copy of our already commoditized application?".

So before this revolution of sweeping common sense can take place, I will just make some simple pleas to those lucky "front-end" guys in the hope that, between schedule chasing, between arbitrary choices in coding technique, in a small moment of clarity, we can take a few points to heart:
  1. Let it go. If you can measure the time inside a function with a wristwatch please move it out of the main thread.
  2. Watch your steps. A pleasant surprise in the Indigo design is the notion of explicit boundaries. What this suggests to me is that, in practice, transparency of remoted function calls is a great benefit but has the drawback of unexpected side-effects such as unanticipated long blocking. Please be weary of the calls you make.
  3. Talk to me. It never ceases to amaze me how perceived performance of an application can increase by magnitudes through the display of simple "Working..." progress messages. Perhaps this suggests that the user feels better when they believe they are in control. Please, in the worst case, when you absolutely have to block, at least display some progress message to the effect.

Back to the meaty middle-ware...

Saturday, June 19, 2004


This is a test. Can people learn anything from free information?