Friday, July 31, 2009

Google Group for My Web Brain discussion

I have created a My Web Brain Google Group for the discussion of the development and operation of the My Web Brain website. The group will discuss features, releases, problems and anything remotely related to the project. Anyone is welcome to contribute or ask whatever they wish. See you there?

Thursday, July 30, 2009

My Web Brain in development, making progress

My Web Brain, my company's upcoming web-based GTD application, is in development and progressing well. Click here for existing blog posts about the project.

The initial application structure is in place and around 50% of the core functionality has been implemented in some form or another.

'implemented' is a relative word, since I am intentionally keeping many functions more simplistic than I eventually envisage in order to release something quickly to the internet community for feedback (and also to prove to myself there are no hidden gotchas in the Google App Engine hosting experience).

The aesthetic and artistic component of the design is a work in progress. I quickly determined I could easily spend too much time tweaking the design prior to having an application to host it, so I created an initial basic design and moved on to functionality. At the moment the design is very simple, which is not necessarily a bad thing.

This development has avoided writing any Javascript or incorporating any AJAX techniques so far. I want to ensure the application is workable in script-less browser environments, such as those encountered by screen-readers and the security conscious.

This is my first major experience with Python and I am enjoying it immensely. As I run into problems whose resolution I believe might be useful to others, I am blogging about them in my personal blog, www.learningtechnicalstuff.com. You can also find other technical information there which probably came to my attention from working on this project.

I am a firm believer in web development through iteration and feedback, so I am keen to release shortly a very early version of My Web Brain to the public Google App Engine *.Appspot servers. Expect this to happen sometime in the next week. This release will be a development release only, and not for general use.

The first litmus test following that release will be when I attempt to use it for my private and professional use, which I am sure will highlight many issues that will help me prioritise the most important features for further development.

If you want to know anything else about the project, please let me know.

Getting Real: A Guide to Web Development

37 Signals is a web development company that produces popular online web applications such as Basecamp, Backpack, Highrise and Ta-Da List. In the past I have been a paying subscriber of Basecamp, a project collaboration tool, and Backpack, a page based collaboration tool, so I have some familiarity with their web applications.

37 Signals impress me for a number of reasons. The company is unashamably opinionated about what makes for a great web application. The conviction they hold in their beliefs shines through in all of their web-based tools, which are uniformly simple, focused and very successful. They even released a book, free on the web or paid in PDF or printed formats, to talk about what they believe is a winning recipe for developing web applications.

The book is called Getting Real and I would encourage any web entrepreneur to read it. It is a collection of very short essays, grouped into 16 chapters which traverse the entire web application life cycle, from conception to end user support.

Just as a teaser, some of the interesting essay titles and tag lines include:
  • Build Less - Underdo your competition
  • Have an Enemy - Pick a Fight
  • Embrace Constraints - Let limitations guide you to creative solutions
  • Be Yourself - Differentiate yourself from bigger companies by being personal and friendly
  • Scale Later - You don't have a scaling problem yet
  • Start with No - Make features work hard to be implemented
  • Avoid Preferences - Decide the little details so your customers don't have to
  • Meetings are Toxic - Don't have meetings
... and so on. Hopefully those titles are intriguing enough that you want to read more.

Writing an entry mentioning this book is not simply blog-filler. I want to the adhere to many of the principles they outline in the book as I continue to develop my current project, My Web Brain (click here for earlier posts). The topics they discuss will provide a productive lens through which to examine and challenge my own approaches. And I will share with you how that goes.

Wednesday, July 8, 2009

Using Google App Engine for MyWebBrain

One thing that I have known for a while about the MyWebBrain project is that I want to use Google App Engine. Google App Engine is a service from Google that allows web application developers to publish applications to a Google managed environment.

There are a number of positives from putting your application in Google's hands. The alternatives are: hosting the web application yourself, using a hosting provider or using another cloud infrastructure such as Amazon EC2 services.

Some positives are:
  1. You do not need to worry about your server side infrastructure
  2. Google's infrastructure scales a lot better. In so much as they can, the available APIs force you to use that scalable infrastructure.
  3. Only pay for bandwidth, CPU and storage when your website is successful. And not a lot even then. You get a lot of resources without spending a cent, and therefore by the time you need to pay you know your website is being successful.
  4. Plug in to a excellent application infrastructure. Google takes care or your monitoring, logging , data storage (using an Object Relational Model) and even authentication/log in system (if you wish, you can roll your own). Google provides a neat web application framework of their own as well, but you can use Django if that is your thing.
  5. The downloadable SDK is excellent, automatically updates and is a pretty impressive attempt to provide a local environment to mimic the production environment.
Some possible negatives:
  1. You do not have control of your infrastructure. But all I want my infrastructure to do is work and I would trust Google's infrastructure over my own or a hosting server account anywhere.
  2. Google App Engine applications need to 'play fair' with the environment and are restricted to limited request timeouts of 30 seconds. I'm pretty sure if you did anything that might undermine other applications in whatever datacenter(s) your application is being hosted from, your application would be penalised.
  3. The available API reflects the limitation above, and still requires some maturation. There are some things you could do on your own server that Google has not (and may never) release the APIs to achieve. Managing files, or opening sockets, for example, are not allowed. Some of these restrictions reflect 'play safe' rules, others to limit possible abuses (such as using the service to send spam), and others I am sure simply have not been completed yet.
On balance, assuming the Google App Engine can implement the functionality you want, it seems like a very good service. Currently I am a one-man band; If I can pass off my infrastructure and server-side concerns and focus on writing a good application I am sure I will make much better progress.

Why does Google provide this service at such a low cost? Google says it is trying to promote innovation on the net by providing an application hosting service with a low barrier to entry. It certainly has. Perhaps:
  • Google is trying to monetise their spare datacenter capacity (which would otherwise be wasted), or
  • Reuse the software environment (with many additional limitations) that their own staff need to use to write applications for their complex infrastructure. What better way to test it than throw it open to the world?
It is hard to predict Google making tremendous amounts of money for Google App Engine. I have no insight into the mind of Google but while they are prepared to offer a good deal, I am quite prepared to take it.

MyWebBrain will therefore live on Google App Engine. Let me know if you have any comments or thoughts on Google App Engine or anything else related to hosting (in the cloud especially).

A Name for the GTD Project: My Web Brain

In a previous post I talked about my new project: creating a new GTD web application. I guess it needs a name. I can be indecisive about names, and I have sat on the fence about this one for a while.

One name I considered was 'Mental Appliance' and www.mentalappliance.com. While this describes more or less exactly what I wanted to do I thought the domain name was a bit of a mouthful. Also, it makes perfect sense to me, but maybe others from different backgrounds would struggle.


It is the right time to ask - how important is the name? The only thing relevant that I have read lately is from the Getting Real book from the smart people at 37 Signals. In Chapter 13 they talk about using a simple, catchy, and non-ultradescriptive name. And not worrying about whether the right domain name is free.

That was one piece of reading that convinced me to move away from 'Mental Appliance'. For a start:
  1. It is not catchy; and
  2. I kept mispelling it myself whenever I typed fast. I do not want to build a usability flaw right into the name!
So I went back to the drawing board.

I have now settled (I think) on 'My Web Brain' at www.mywebbrain.com. This does not sound as impressively technical to me but I think it is name which will more easily lend an understanding about what the web application is about:

  1. It is personal - I am not building an artificially intelligent 'Skynet' here. This is something that is to be useful for the user, and not necessarily a social networking collective (ah.. but the possibilities...). It is a tool for personal use.
  2. It is on the web. This might at first glance seem obvious but now anything and everything is on the internet it is probably useful to differentiate it from the users' other (somewhat more capable, for the moment) brain. It also implies the service is 'in the cloud' and available anywhere you can connect to the internet.
  3. It is a tool that thinks - a brain. Obviously 'thinking' is meant pretty loosely and shallowly, but the application is designed to supplement or assist the brain in doing its normal function, namely capturing and remembering thoughts and planned actions.
Right now, especially after thinking it through above, I quite like the name. If you have any suggestions, please let me know. Or if you have any comments about the art of naming a web application.