Prototype It!

23 01 2009

So I saw this post today – it’s by Paul Buchheit a former Googler (he is one of the founders of FriendFeed) and the lead developer of one of my all time favorite software applications – GMail (it was his 20% project at Google) and it’s about the concept of Communicating with code.

Paul writes (in his post) on the concept of  using prototypes  to communicate ideas and concepts. He talks about his work with GMail and how he threw together a prototype in order to show the idea of targeted ads in GMail – targeted ads was not a priority until the prototype showed how useful and interesting it could be. The post ends with a similar exercise that he has done using the Friendfeed API (it’s pretty cool – check it out :-) ) The reason I read this post and decided to blog about it is that it talks about developer communication – a topic that I wrote about in another post .

Communicating ideas through prototypes is a great idea – I have always noticed that people get more excited about something they can play with and try out. In fact this is old news in other industries – the auto industry, for example, spends millions to make concept cars to introduce new ideas to the public and solicit feedback Architects likewise – build scale models of their ideas to present to clients. So why don’t we adopt these ideas ? After all we are always talking about “software architecture” and “software construction” and other civil engineering analogies when we talk of software development ;-)

My experience is that when the term “prototype” comes up in software development projects most people are thinking of mock-ups. This is especially true in the web-development shops where there is a separate team of graphics designers creating HTML and image pictures of the user interface while a separate team of developers get to “build” the application from the pictures :-) I think this is a very limiting thing.Prototypes should not be limited to the user experience or to presenting and communicating new ideas. I like to make prototypes of my technical solutions to software problems. For example, if you are trying out this great new idea you had on caching data – write a prototype application – the absolute simplest application you can use to exercise your idea.  This would provide you with feedback on whether your idea is valid as well as show up gotchas or limitations in your design.  The pragmatic programmers in their seminal book – The Pragmatic Programmer refereed to these applications as “Tracer bullets”.

Sometimes the concepts or ideas themselves are large and need a lot of programming to even build the prototype(tracer bullet). In these cases I still believe one must prototype the concept – so the question remains – how do you do this ?
Well one way would be to take the approach Paul took in building the initial GMail prototype – modify some existing code. I find sitting in front of a blank file makes the task ahead seem even bigger than it is – so I start with a piece of code to modify even if it is something as simple as a “Hello World” application.  Another good place to look is in the open source forums (though this might be a problem if you are working in a  company that does not allow open source software) – usually there is some variation on your concept that you could work with there :-) . A third option is to accumulate code, links and other resources over time that you can use to jump start your coding.

So – Happy Prototyping :-)





Google hunkers down

21 01 2009

So the Google machine is finally slowing down a bit… With the economic recession and slowing revenue growth – Google is no longer the darling tech stock that it once was. The blitzkrieg approach is showing signs of the strain and Google has been taking a long hard look at it’s core business and has started shedding some of it’s fat.

It started out with cutting the famed perks – the free food and fancy services, then it moved to cutting down the contractors and then they let go about a 100 employees.

In addition to the personnel and perks – Google has also started shutting down some of it’s products – here are some that are reaching or have reached their EOL (End of Life)

  1. Google Notebook – some of my friends really liked this one and it was good with the Firefox extension but after Google Docs and now the To-Do list in GMail it started getting less relevant. The main problem for me was – without the extension – it was just another to-do list web-site I had to remember to go to and often I needed the list when I was not anywhere near a net connection (yes – I admit it I don’t have a cell phone with a data plan).
  2. Google Video -  This one is obvious. When they bought You-Tube the writing was on the wall for Google Video and with the incorporation of video search using the universal search interface it was made even less relevant. Google has disabled the uploading of videos but is still allowing the search and viewing of existing videos. The pity is that Google Video did not have file upload limits the way You-Tube does which allowed for the upload and dissemination of some great presentations and learning videos.
  3. Jaiku – This is not going away completely – as I understand it, Googlers are planning to re-factor the code to use the Google App Engine and then release the source code.
  4. Google Catalog Search – It was started as a showcase of OCR technology. Now with Google Book Search incorporating the technology and the Google Search Wiki it’s not as relevant to Google I guess.
  5. Dodgeball – This is again an obvious one. It was a start-up purporting to provide networking and communication services to people in the same geographical areas. Google bought it but never did anything further with it and the founders of the company finally quit Google in disgust.
  6. GrandCentral – This one is still there but it has been inactive for a long while. I think the problem with GrandCentral is the lack of a clear monetization strategy that fits into Google’s business model advertising.  Besides – GTalk has video chat and voice now which might be the direction Google is taking. Recent indications only serve to reinforce this theory.
  7. Lively – This was Google’s foray into the arena of virtual worlds. I am not really a big fan of the virtual worlds concept (I think it’s way too early and limiting – it needs ubiquitous access to virtual reality hardware for the concept to make sense)  so I largely ignored this one. It seemed so did a large number of people so it’s dead. The announcement came last November itself.

All these are good steps and they portray a company that is mature enough to realize that sometimes tough steps need to be taken and pragmatic enough to take them.

Google has had an image as a naive, starry eyed dreamer – these steps will puncture that image. But, then I would rather have Google surviving the hard times at the expense of it’s naive image than it failing because of it. In the end the company makes great software and there are too many people – myself included who use it’s software every day and would miss it if it were to go away.

I can live with a few less Google Products if I can continue to get the ones that I use everyday ;-)





Setting up Ubuntu 8.04 Server on VirtualBox

2 01 2009

Yesterday, I was trying to install Ubuntu 8.04 server on my desktop using VirtualBox to set up a virtual LAMP server to play with.

VirtualBox is a virtualizer software like VM-Ware or Virtual PC. It is supported by Sun and is the the only one which is open source. It’s a pretty slick piece of software and  comes with a set of pre built host environments on which you can install various operating systems.  It has a nice intuitive user interface and pretty full featured.

So, I started off on my installation – picked Ubuntu host environment and assigned 512 MB of RAM and 10GB for the hard drive. Then I pointed it to the Ubuntu 8.04 server install ISO and off I went through the install. The install itself went off without any problems – I chose the LAMP server setup and everything went smoothly. The problem was after the install when I tried to boot up the server – I got the following error -

The kernel requires the following features not present on the CPU

0:6

Unable to boot - please use a kernel appropriate for your CPU

So I Googled around for the error and got some blog posts (oh good so I am not crazy :-) ) that I went through and I thought I’d summarize it here for reference. So here goes -
The Ubuntu 8.04 Server installation comes with a kernel that assumes that Physical Address Extension (PAE) is enabled in the processor. This is a feature in x86 and x86-64 bit processors that allow them to address more that 4GB of physical address space (which makes sense – this is a server install after all…). This feature is not turned on by default in the VirtualBox software’s virtual processor.  The simple solution is to enable this feature in the VirtualBox software – one does that as follows -

  1. Shutdown the Virtual Machine (VM) instance.
  2. Open the settings on the VM through the VM VirtualBox manager
  3. Go to  -> General -> Advanced -> check Enable PAE/NX
  4. Start your VM
  5. Check to ensure that the Virtual Machine boots properly

That’s it – many thanks to the following bloggers and their blog entries :-)

  1. Hype-Free
  2. Blog Foo