Friday, April 18, 2008

App Engine part2

Google wants to host your applications. This is great, but some ISP and businesses like Amazon.com or salesforce.com also offer such run without hassle services. So big deal? Yes, absolutely!
Using App Engine gives the developer access to the same building blocs as the ones used by Google to create there own applications. This means scalable serving infrastructure, Google accounts and authentication, Goggle file system (GFS) and the massively distributed Google data-persistence solution known as “BigTable”.

In the words of our Google friends,this is what we get:
1.Scalable Serving Infrastructure
2.Python Runtime
3.App Engine SDK
4.Web-based Administration Console
5.Datastore.

Scalable Serving Infrastructure
It's a distributed low overhead system for running your code. This means your application on the whole is fault tolerant. It also means that resources for your application is scaled in response to demand and load. Why should you care? Because application development is shifting from a Desktop to a “Webtop” environment. If your application is to tap into this huge pool of users, you will need some serious hardware. That's were Scalability becomes a big deal. But event if your needs a more modest, within a corporate Intranet or even a Extranet, not having to manage a pool of machines, the purchase additional hardware as demand increases, and schedule maintenance around system availability in an ever changing technological world is worth it.

Python runtime and libraries
If you have not heard of Python you are probably not a software developer. But that's alright :-)
According to the official site ( http://www.python.org ) “Python is a dynamic object-oriented programming language...”. Suffice it to say NASA uses Python and so should you :-)
More seriously, the usage of python is great news for people that value good programming.

Software Development Kit (SDK)
You can download the preview release here
If you know Django you'll fill right at home. Finally pythonistas have the tools from which the long awaited python killerapp can emerge.

Web-based Administration Console
The array of programs needed to configure and keep in sync a major web application is greatly simplified thanks to a uniformed web-based administration console. You can set the administrators and grant users access to your application. You can event run multiple versions of your application, very useful to test changes. You get tools for login analysis, to manage domain names.
The Administration Console lets you create a new application, invite other people to help develop your application. All this is don with minimal fuss. Just access the web Console and upload new versions of your code. In absolute conformity to the K.I.S.S (keep it small and simple) principle, view access data and error logs, and analyze traffic, browse your application's datastore and manage indexes.

Scalable Datastore.
The concept of a relational Database does not scale well in a massively distributed system. The same power used by Google to make Google map/earth a reality is made available to your application through the scalable Datastore. The Datastore does not use a relational, hierarchical tree. Instead, it uses “BigTable” which is a horizontally distributed scalable system. It spans thousands of machines and is fault tolerant. It uses a language similar to SQL, called GQL Query. (Notice though that datastore does not provide “table joints” because it is not efficient in a distributed system“.
The App Engine datastore is not a relational database, but its interface has many of the same features of traditional databases. This implies a different way of designing and managing data, but to take advantage of the ability to scale automatically, you don't really have to concern your self with these details. App Engine is still in preview the preview phase. Already work in on the way to allow easy data transfer to and from Google's storage. Read more here http://code.google.com/appengine/docs/datastore/overview.html

There is more.
App Engine gives us some nifty modules that make it easy to send email, make HTTP requests, Authenticate with Google Accounts. One very interesting feature of this system is it's flexibility. You do get some preloaded framework such as a mini version of django, and web template markup such as yaml. But the most exiting thing is that App Engine can be extended by any framework of your choice (twister, Quixote, full fledge Django ...)

2008 may very well be the year of Python... In part3 and part4 we'll see some actual code.
Happy coding.
..::Part1 || Part3::..

The art of business in Singapore

original posting Antananarivo 2001

A direct 8 hour flight, with Air Madagascar, brought us to our business destination Singapore. This was before “911” and travel was both enjoyable and easy. No visas, just one security check at the airport. Everything done with speed and minimum hassle.

5:30am, a jovial taxi driver volunteered historical and touristic information on our way to the hotel. Figuring that we were not tourist (the suit and tie kind of gave us away), he switched to business information, pointing places of interest for us “IT people” as he called us.
Before we reached our hotel, the taxi driver made a stop over by a licensed local money changer. Mustapha has the best rates he said. Having only this stranger's word as proof, we exchanged some money, just enough until the next day. As it turned out Mustapha has indeed the best rates in Singapore and unlike banks, no service charge.

Beyond the travel brochures this is what we can say. There is a culture of excellence in Singapore. People know their products. They can skip their sales script and maintain a meaningful discussion. During our stay, we witnessed this pattern over and over again. People tend to go beyond professional competence. They reach out to you, build rapport, communicate. They go out of their way to make business simple and accessible. They strive for speed and rapid quality response. In doing so they are able to promote an important asset they cherish ... Their nation.

Back at home, the new start-up I worked for struggled with growing pains. We decided to extract some lessons from our fruitful and enlightening trip. We figured there were three major items we witnessed.

First, People were absolutely confident in their ability to be of service in their respective field. People radiated self-confidence. Its the kind of self-confidence that only comes from being an expert in what they do and experience with people. Like us, they value competence, hard work, and education (formal or other wise). But more importantly they did not hesitate to inquire learn and continually improve themselves.

Second, everyone was a salesperson (officially or not) . Most people we met possessed the uncanny ability to build rapport and hone in on things that matter to us. It was as if everybody somehow had the salesperson gene. Not the pest that tries to relieve you of your hard earned money, but the one that genuinely know he has a solution for you. To sell, to promote, not necessarily for themselves but as a friendly service, naturally.

Finally, we could not help but notice how everything was done to make doing business as simple as possible. From our landing at Changi airport, all the way to the bank, and back at our offices, things were in a constant uncomplicated flow.

We figured that was our target to improve and grow our business. We needed to train our people, streamline our products and speedup our business process.
We started with a review of our staffs competences. Did everybody have a clear understanding of their job? What were the measurable outcome? Did everybody have a correct level of familiarity with our business and products? What about the door man? Could he explain in two or three sentences what was done inside the building?

Competence = Experience * ( Training + Practice )

This formula rigorously applied to the technical staff, but everybody ought to be capable of demonstrating the products, explain our services, promote our firm and make appropriate referrals to the people in charge of various facets of our business.
Therefore we put in place some training formulas for all the staff. One hour here, one hour there, and later some real seminars to boost familiarity and identity with our products and services.
This made it possible to put in place a system to make doing business with us simple and convivial. Speedy service, responsive communication, easy payments.

Clients are no longer just buying a product from us. They're also coming back because of the experience they get. Our products were simple to use, easy to maintain and upgrade. Our people are accessible, helpful and have a complete knowledge of our offerings.

Thursday, April 17, 2008

App Engine Part1

Google Power?

The challenges to create and deploy a web application is a major issue as the need for speed and unbridled creativity asserts itself in our day to day online activities.

Focus on your core activity, let Google do the rest. App Engine is an infrastructure to expose Google 's scalable system to your web application. It lets you run your web applications on Google's infrastructure. This is more than simple web hosting. It makes applications easy to build, to maintain, and easy to scale. You don't have to worry about your traffic and data storage, it will expand as needs grows.
There are no servers to maintain: You just upload your application, and it's ready to serve your users. You can serve your application using a free domain name on the appspot.com domain, or use Google Apps to serve it from your own domain. You can share your application with the world, or limit access to members of your organization.

We've reached the limits of the “jack of all trade” web bravado. In a classical web setting, one would typically have a foundation such as a Lamp [Linux, Apache, MySQL, PHP] (or equivalent proprietary framework). It is used despite its flaws and inconveniences with various success. However, with the shift from desktop to “webtop”, just getting the job done is no longer enough. Tools should help the creative process, speed the passage from conception to sales this is what both developers and users want.
In a typical business setting, a team, or even a sole developer, must manage issues such as authentication, production code, tools to update data and monitor logs. Applications must be upgraded, code maintained, machines must be serviced. Any serious project is directly confronted with questions pertaining to hardware. This implies a choice of machines, and or a hosting service (ISP, in-house servers ...), and of course some type of data persistence solution (MySQL, ORACLE ...).

Several layers of complications and added workload burdens software developers, web designers, and the end user.
And all this cost money. Behind all the technical jargon and sales pitch, what really is at stake is money. How much is having the proper tool worth to you. Inadequate, ill-fitting software products were once considered to be normal and a natural cost of doing modern business. This feeling of could be better is no longer necessary, and as the word “recession” sinks in, most managers will be attentive to that.

App Engine addresses these issues by making it “easy to use, easy to scale, and free to get started” (up to 500Mb for a maximum of 3 applications). Google runs and servers your code and takes care of your application's life cycle (Log files, runtime Database, status and activity data ...).
All you have to do is create those things of value for your clients and users.

Sounds too good to be true? Is there a catch?
Find out in Part 2

Sunday, April 13, 2008

Vintana or the art of Project forecast and tasks estimations

Originally posted 2002 (Antananarivo, Madagascar.)

Back in 1999, the firm I worked for embarked on a national effort to help reverse the effect of soil erosion by participating in various earth-friendly activities. On one such occasion, the whole staff was “volunteered” to help plant trees. It started out as a PR and social endeavor but it turned out to also be beneficial for all of us.

Trees were planted, the firm got its 5mins of fame in the lime light (being in the news two days in a row), the staff got some exercise. But most of all, our programming team learned invaluable lessons that transformed the way we approached tasks and boosted our ability to estimate programming tasks.
On a chilly Friday morning, we were greeted by the lead organizer from a homegrown green NGO. Truck loads of tree bags were waiting for us behind him. After the usual introductions, and having explained what was expected of us, he divided his “captive audience” in groups of five and asked each individual member to plant three trees each. The members of a group would then be assigned a starting point on different portions of the field. This was done in such a way that faster people were not hampered by slower people. An hour later, the same organizer reassessed our speed to adjusts for the fact that by then some of us would have slowed down either by fatigue or distraction. He later explained that since each one of us in our own way would have developed a system to stream line our planting effort, he also adapted his target surface to cover for the day. Some people were shifted to other portions of the field to cover. He then declared that the initial field to cover would be reduced by 20% and would take two days to complete. It took exactly that time to do the job and by Saturday evening 5pm we were done.

The following Monday morning, the development team assembled to discuss the share experience. It quickly transpired that we were all to some degree enthused by our new “discovery”. Project estimations can be accurate. Teams can be organized to produce a harmonious flow of work. Personal velocity can be a useful benchmark to help evaluate the time and effort necessary to perform a job.

This was a fundamental time for our startup firm. Suddenly afflicted by a deluge of interests from the local business operators, we were in dire need of ideas to scale up our operations. We needed to estimate projects more accurately, and this key event had ignited a self-introspection process that would eventually result in what we named Vintana.

Vintana is “the art of Project forecast and tasks estimations”.

In the following weeks I shall talk about the creative process that lead to the notion of Vintana. At issue are facts such as the need for accurate Project estimations. This will lead to the question of harmonious flow of work within a Teams and how to achieve that. Finally I will talk about a controversial issue in the programming community: Personal velocity. You will see how to avoid the potential negative misuse that it can engender, and understand why it is a necessary benchmark.

Friday, April 6, 2007

Solipsis : VR = Virtualy Real ?

The Metaverse came to me in the form of a computer game package:
"Specter VR". Besides the diskettes the box included a special edition of Neil Stephenson's "Snow Crash".

The game was addictive. The book just blew my mind :-)

Thus began an intermittent quest for the real thing. As technology evolved so did my hopes.

Recently, I stumbled on a project called Solipsis. A server-less, peer2peer skeleton of the Metaverse... If your imagination functions correctly it is an endless realm of possibilities. If your are just seeking for some form of eye candy, however, its a desolate lonely expanse of "nothingness" . But the potential is there to connect people and custom build tools around what they do. The rest is up to you, and that is "Snow Crash", only for real.

While investigating the possibilities of this new find, it occurred to me that I had been mistake all these years! The Metaverse is not about virtual reality, it is about virtual worlds! Real, concrete (albeit intangible) worlds.
What makes it real is not the 3d graphics or immersion per say, but rather one's presence in that world. VR is about "Tele-presence". And the best indication of this presence is one's ability to exert his or her will in that environment and collect some tangible benefit in our world.

But solipsis has a serious flaw. It tries to be a full package and do everything. it would make an awesome lib or twister plugin. Instead its an desolated 2D emptiness.