Flickr Badge

Tuesday, December 25, 2007

My hack at PipesCamp HackDay

One of the coolest parts of PipesCamp on Sunday was the HackDay part of it. Okay, it wasn't a whole day, more like about three hours, but it was still fun. You can find my pipe here: MTC Mashup.

You can type a bus number in the input box on the top and it displays (or tries to display :P) the places visited by the bus on a map.

Check it out!

The raw data comes from the Chennai MTC website (Yes, they have a website). There is a section that gives the stages visited for the bus number that you enter in a form. However, the output is quite a messy bit of HTML, quite a pain to parse through. Luckily, Rabin Vincent has taken this data and put out a much cleaner bus query interface over it.

So, Rabin's site provides the raw data for the pipe. Given a bus number, we construct an appropriate URL and query Rabin's site for the bus route, then parse the HTML to extract out a list of stages that the bus goes through.

Now that we have the list of stages, the next step is to figure out the latitude and longitude of these places. For that, we used Yahoo's Geocode service. This service takes a string address and returns the latitude and longitude of the place. Once we have the lat/long coordinates of each of the stages, we send it out on a yahoo map.

Now for the hiccups:

The biggest by far is ambiguity while searching. For example, the MTC site refers to the Central Station stop simply as "Central" which when passed to the Geocoding API gets confused because a lot of things match this. At the other extreme, a bus stop like "P. Orr & Sons" does not get any hits on the Geocoding API. So, sometimes the lat/long positions can be all over the map depending on whether the Geocoding API returned the right place or not.

An obvious solution is to create a small web service that takes the names as specified on the MTC site and return the correct lat/long for that stop. So we know that Central refers to central station, and we can return the position of that stop accurately.

The other thing that I could not figure out was how to get the data on other maps. By default Y! Pipes uses Y! Maps (Worldwide) which does not have good resolution for Indian cities. However, there is a India specific Y! Maps, which has good detail for Indian cities. How do I get Pipes to output to the Y! India maps instead of the global Y! Maps? I couldn't figure that one out.

Right at the end, labsji took my mashup, downloaded the KML data and imported it into Google Earth, so that the whole route was superimposed on Google Earth and it automatically ran an animated tour between the stops.

In the end it was a fun experiment, and something I would not have done without PipesCamp. When I first started this hack, I though it would be impossible, but Y! Pipes allowed me to create the whole mashup in a few hours as a total newbie. That's pretty cool if you ask me.

Friday, December 21, 2007

PipesCamp on Sunday

Hot on the heels of the AWS meet comes PipesCamp to discuess Y! Pipes.

PipesCamp is on the 23rd of December (thats the coming Sunday) from 10am to 5pm at Hotel Shan Royal, 85, Poonamallee High Road, Near Koyambedu Circle, hennai, India. (The wiki has more details, including the map to the venue)

Y! Pipes is interesting because it is an attempt to do programming visually. I remember Bosky's talk at DCamp about End-User Programming, and this is an interesting attempt by Yahoo to bring feed manipulation programming to the mainstream. With RSS becoming more popular, and mashups seemingly the in thing these days, it should be pretty interesting to see what happens at PipesCamp.

Saturday, December 15, 2007

Amazon Web Services Meet: Jinesh Varia Videos Uploaded

Videos from the Amazon Web Services Meet in Chennai are now available online. Get 'em here -
  1. Part 1: Intro to AWS and Amazon S3
  2. Part 2: Amazon EC2 and Amazon SQS

The best part? Around the 2:00 minute mark in Part 1 he says that of the Indian cities, the highest intensity work seems to be done in Chennai :)

Thursday, December 13, 2007

Amazon Web Services meet in Chennai today

Jinesh Varia, evangelist for Amazon Web Services is in Chennai today, so labsji has organised an Amazon Web Services meet. The meet will be held at the Rails Factory office in Jafferkhanpet, Ashok Nagar. It starts at 5:00 PM, but you can come earlier and hang around if you want.

The rough agenda is
5:00: Welcome and Introduction
5:05 - 5:45 : Speed Geeking, networking and demos - over snacks.
5:50 - 6:30: Presentation by Jinesh Varia, and Question and Answer session.
6:31 - 7:15: Suggestions, Feedback, and Wishlist for AWS by AWS users and wannabe.
7:16 - 7:30: Discussion on next AWS Chennai meetup, closing.
and the address to the venue is
RailsFactory, 9/55, Karikalan Street,
Jafferkhanpet, Ashok Nagar,
Chennai, TN, India -600083
[ ~1.2 Km from Ashok Pillar, 200 meters from Kasi Theatre junction.]
(Google map here)

For more info, check out the AWS Chennai wiki.

Saturday, December 01, 2007

MindTree tries out an unconference

Since I'm maintaining the India Unconferences and Events group on upcoming, I often spend a bit of time looking for events to add. While doing that today, I came across Osmosis. Apparently, Osmosis is MindTree's annual technology festival, and its coming up in December this year - with a difference.

This year, the event is going to be held as an unconference, and they are opening it up to external participation. Which means (if I understand correctly) that anyone can attend.

Open space technology (closely related to unconferences) has often been applied in corporate environments, so it will be interesting to see how this works out.

One thing that caught my attention was this line from the site

Osmosis final day will be an ‘unconference’ where MindTree Minds will decide the topics to be discussed. In the true spirit of an unconference, MindTree Minds will decide, organize and lead the discussions on the final day of Osmosis.

Now, I'm not sure who a "MindTree Mind" is. Does it mean a general participant? Or it is a select group of people? If it is a select group of people who will decide the topics etc then it might just defeat the purpose.

Anyway, if anyone attends, I would be interested in knowing how everything went. The website is and the event takes place on Saturday, 15th December 2007. Check it out and let us know what happened.

Monday, November 26, 2007 2008 Nominations Open

Nominations for Proto 2008 are open. If you are a startup in India and would like to present at the event, head over to the website and nominate yourself. The next Proto will take place on the 18th and 19th of January 2008.

Friday, November 16, 2007

Ahmedabad Ultimate Frisbee Tournament 2007

Check out this cool YouTube video from the Ahmedabad Ultimate Frisbee Tournament 2007. Ultimate in Ahmedabad is organized by IndiCorps where they coach underprivileged youth to play Ultimate Frisbee. Check out the Ahmedabad Ultimate website for more information.

Tuesday, November 13, 2007

BarCamp Kerala

Mani Karthik has a post on BarCamp Kerala on Daily SEO Blog
This is exciting news! The first and foremost BarCamp is going to be held in Kerala, this November 24th. It’s probably going to be hosted at the Technopark Auditorium, Trivandrum, (actually the venue is not decided yet.)
It's pretty exciting to see BarCamps coming up all over the country. If you are in Trivandrum, think about dropping in - and then blogging about it afterwards :) The homepage for the event is here: BarCamp Kerala

Monday, November 12, 2007

Updates on Co-working space in Chennai

I had previously asked about co-working spaces in Chennai back in July. Since then, there has been some progress on this with a bunch of people opening up spaces for co-working.

Rajat, one of the guys behind Review Saurus has opened up his office for co-working. Vamsee and Bhaskar are already in the process of moving into the office with their co-workers. Rajat's office is located in Adyar.

Balaji has an office (house actually) that he would like to open up for co-working. The house has an Internet connection. For more details, you can leave him a comment on his blog.

In the comments to the previous post, Bhaskar mentions that the new STPI office is likely to have co-working space on one of the floors. In Bangalore they get cubicles, Internet, cafeteria, conference rooms and all that for Rs.5000 a month per seat, so we can expect something similar in Chennai as well.

Also in the comments to the previous post, G.Padmanabhan says that he is starting a co-working space in Nungambakkam with 6 seats. You get a cubicle, broadband Internet and access to conference rooms, printer and fax, admin services and so on. Send an email to gp [at] indelect [dot] com or call him at 94440 26983 for more details.

Kiruba is also opening up his new office space at Virugambakkam for co-working. For more details, you can get his email address and phone number via his blog.

Saturday, November 03, 2007

Cricinfo XML feed of live scores

Did you know that Cricinfo publishes an RSS feed containing live scores of matches in progrss? I had no idea either until I came across this python script on bangpypers that uses the feed to display live scores on the desktop. Very interesting.

Thursday, November 01, 2007

Chennai OpenCoffee Club Announcements

A couple of announcements. First, the November meet of the Chennai OpenCoffee Club is coming up this Sunday. The venue will be Amethyst as usual. Here are the details

4th November, 3:00 PM at Amethyst (Map)

Second, we have opened up the Chennai OpenCoffee Website so that anyone can now join. It used to be that you had to attend a meetup before you could join, but now that we've had a few meetups, we thought its time to open it up. So if you are interested in joining, head over to the website.

Wednesday, October 31, 2007

3:11 PM

3:11 PM : You've seen photos where you photograph the same objects at different times right? 3:11 PM does the opposite. To participate, take a photo at 3:11:00 on the 3rd of November from wherever in Chennai you are and upload it to a flickr group (the website has the details). Once all participants have uploaded their photos, you will be able to see Chennai through one instant, what everyone is doing in different places at the same time.

Microsoft gets into web analytics

Adi just passed me a link to Project Gatineau, Microsoft's answer to Google Analytics. Project Gatineau is currently in invite only beta.

Just like how Google Analytics has tight integration with Google's AdWords, Project Gatineau has tight integration with Microsoft's AdCenter. Looks like the fight for the search engine marketing space is heating up.

Tuesday, October 30, 2007

Looking for Django developers?

Check out Djangogigs is a new website for matching Django developers with Django jobs. If you are looking out for some Django work, add yourself to the site.

Tuesday, October 23, 2007

OpenCoffee Club @ Mumbai

The OpenCoffee Club meme spreads some more. Mumbai is having its first OCC meetup on November 4th. More information here. You might want to attend if you are in Mumbai at that time.

Django Screencasts

A few people have been asking for introductory Python + Django material, so I thought I'd just link up to the two intro screencasts that I did for Django.

Learn Django: Create a Wiki in 20 minutes

This is a beginners screencast that assumes no previous knowledge of Django. We illustrate the basics of creating a web app in Django by developing a simple wiki application.

Learn Django: Extending the wiki with wikiwords and search

Following on where the first screencast left off, this screencast introduces some more django features such as template inheritance, filters and newforms library.

Friday, October 19, 2007

Obviously I've managed to fool a lot of people

I had nothing much to do yesterday so I actually started looking at the facebook apps that I had installed. One of the apps on facebook is My Personality, which basically gives you one of those personality tests (this one is the Big Five test) and then ranks you on five axes. The app rated me on what would be the equivalent of "individualistic lazy daydreaming introvert" which is a pretty accurate description of who I am.

Another feature of this app is that you can get your friends to rate you. And can you believe it, they all rated the opposite.

The two offenders are Conscientiousness and Extraversion. While my Extraversion rating was 23% (highly introverted), the friend rating was 67% (extroverted). Something wrong there? The test rating for Conscientiousness even more mismatched. My rating was 15% (i.e lazy procrastinator) while the friend rating was 96% (always gets stuff done)!!

Obviously I've managed to fool a lot of people.

Tuesday, October 16, 2007

Want to upgrade your Silver Catalyst trial license?

If you've been following my agile tools blog, you would have known that Silver Catalyst v1.5 was released a few days ago. You would also have known that the free version of Silver Catalyst comes with a three team member license. This is perfect for use with small teams and for evaluation purposes.

But wouldn't it be cool to use the tool on a real project with the actual team? I know a lot of people would love that.

So I'm doing an experiment. Till the end of this month, I'm giving away a free upgrade of the trial license than can be used by fifty team members. This will probably cover your entire team, so you can use it on a real, live project. It is a license with no time limits and no feature limits. The only thing is that it's still a trial license so it won't be eligible for 'official' support. Not that it matters, because you can shoot me an email anytime nevertheless.

How do you get this upgraded license?

Download the latest version of Silver Catalyst, use it and then review it on your blog with a link back to the Silver Catalyst homepage. The latest version of Silver Catalyst is 1.5.1 released today, so if you've got an older version, you might want to download the latest one. There are no conditions on the review. It can be positive, negative, whatever. Just keep it unbiased and write what you really think about Silver Catalyst.

Then email me at with the URL of your blog post and I'll reply with the upgraded license.

Sounds simple? It is. I'm looking forward to reading the reviews!

Monday, October 15, 2007

Introduction to Agile: Agile Chennai 2007 Presentation

This is the intro to agile presentation from Agile Chennai 2007. It was done jointly by Bala and myself, although Bala did most of it. I just spoke for five minutes at the end of slide 83 about how agile is not a set of techniques.

Sunday, September 30, 2007


Originally uploaded by Siddhi
The Singaporean band Astreal performing during Baybeats 2003

Wednesday, September 19, 2007

Using python to teach kids programming

Horst Jens uses Python to teach kids how to program at Profikids in Vienna. In the following screencast, we see one of the kids, Leo, program a simple GUI button box. The screencast is in German, but it has English subtitles. Check it out below -

Get the Flash Player to see this movie.

This video originally comes from here at ShowMeDo from the Python category.

Monday, September 17, 2007

Design of Programmer Spaces - My DCamp Presentation

We spend a lot of time on improving productivity through better languages, tools and processes. How often do we look at the environment in which the team works? Cubicles are probably the worst environment for programmers because they are poor when you want peace and quiet to work alone and poor when you want to work collaboratively as a pair or group. In this talk we'll look at some environmental factors that impact teams and how we can design better programmer spaces.


There is a narration for the slides available in the comments section here

DCamp Photos

Sagaro, Arpit and I just got back from attending DCamp in Bangalore.

I'll post about the sessions later. For now, here are some photos from Allagappan's flickr stream, more photos from Muthu's flickr stream and a description of the sessions by Saurabh Minni.

Wednesday, September 12, 2007

Keeping track of unconference/community/tech events in India

It's getting harder and harder to keep track of unconference, community and tech events that are happening these days. In the next 30 days alone you have DCamp, Agile Workshop at Indore,, Agile Chennai 2007, Yahoo Open Hack Day, SearchCamp and Barcamp Mumbai.

And these are only events that I'm aware of. Add in any other events that might be happening plus regular events like the OpenCoffee Club in various cities and its just too much to remember.

So what I've done is to create a group on upcoming.

Check out the group here.

If there are any events that you are following that are not on upcoming, add it to upcoming and then add it to the group. Anyone who is subscribing to the group RSS feed will get an event notification.

Similarly, if you want to track events that are happening, join the group and subscribe to the group RSS feed and you will be notified of any new events that get added to the group.

Tuesday, September 11, 2007

Django screencast: Template inheritance, filters and newforms

Following up on my first Django screencast, I've put up the second screencast in the Learn Django series. Like the first one, its hosted on and you can view the screencast here.

The second screencast extends the wiki application we built in the first part by adding a menu, support for auto-linking of wikiwords and a feature to search through the database. In the process, you'll learn about some cool Django features such as template inheritance, custom filter libraries and Django newforms. Django newforms in particular is a very cool form handling library that can really cut down on boilerplate form generation and validation code.

Interested? Check out the screencast.

Thursday, August 30, 2007

Y Combinator in Python

The little schemer

I just finished reading The Little Schemer. What an awesome book! I love the Q&A format of this book and can't wait to read the next book in the series, The Seasoned Schemer.

Chapter 9 and 10 (the last two chapters) were really good. Chapter 10 is about writing a small scheme interpreter. But its Chapter 9 that I want to discuss in this blog post because Chapter 9 introduces the Y Combinator.

I've tried to understand it in the past and failed (the wikipedia page is completely unintelligible) , but this book explains it in a brilliant way. In fact it derives the Y combinator from the ground up, making sure each step is easy to understand.

As an exercise, I tried to write it in Python. This is how it came out:
def Y(le):
    def _anon(cc):
        return le(lambda x: cc(cc)(x))
    return _anon(_anon)
If you don't know the Y combinator already, that probably looks quite cryptic.

To give a simplified explanation, the Y combinator is a function that takes one function as input and creates a recursive version as an output. Maybe an example will illustrate the point better:
def _1(factorial):
    def _fn(n):
        if n == 0: return 1
            return n*factorial(n-1)
    return _fn
Take a look this function. The function name is _1. The function body has something that looks like a recursive factorial implementation, except that it never calls itself (remember, the function name is _1). Instead, it recurses on "factorial" which is a parameter of the function _1.

Basically, the "factorial" parameter is a function, so the meaning of _1 is:
  • If n is zero, return one
  • else, take the factorial parameter, and call that function with parameter n-1, and after that returns, multiply with n and return the value
Exploring a bit more:
def error(n): raise Exception

f = _1(error) # passing function "error" as the parameter
f(0)   # prints 1
f(1)   # Exception
The above function f is passing error as a parameter to _1. So if n is zero, it returns 1. Otherwise, it goes to the else part and calls the function that we passed as parameter, in this case error, which raises an exception.

In order for this to be recursive, we don't want it to call error, we want it to call the same function again. What if we passed the same function as a parameter? So in the else part, instead of calling error, it would call itself. Something like this
f = _1(_1(error))
f(0)   # prints 1
f(1)   # prints 1
f(2)   # Exception

f = _1(_1(_1(_1(error))))
f(0)   # prints 1
f(1)   # prints 1
f(2)   # prints 2
f(3)   # prints 6
f(4)   # Exception
Hmm, in each case, the recursion finally stops with an exception when it encounters the error function. A truly recursive version would be like
f = _1(_1(_1(_1(_1...... forever
Well, that is basically what the Y combinator does. Using some function passing magic, it converts _1 into the forever recursive version. How?? Well thats the magic!! Its a bit complicated to explain here. Get the book and read Chapter 9. But it works! Check this out:
f = Y(_1)
f(0)   # prints 1
f(1)   # prints 1
f(5)   # prints 120
f(10)   # prints 3628800
Amazing isn't it? And the even more amazing thing is that it is not specific to factorial. See this
def _2(length):
    def _fn(alist):
        if not alist: return 0
            return 1 + length(alist[1:])
    return _fn

f = Y(_2) # calculate length of a list
f([])   # prints 0
f([1,2,3,4,5])   # prints 5
Woohoo!! On a roll now..
def _3(reverse):
    def _fn(alist):
        if not alist: return []
            return reverse(alist[1:]) + [alist[0]]
    return _fn

f = Y(_3) # reverse a list
f([])   # prints []
f([1,2,3])   # prints [3,2,1]
You can take any recursive function, and rewrite it in the above style and the Y combinator will make a recursive version of it. How cool is that?

This post is a part of the selected archive.

Monday, August 27, 2007

Mylapore Photos

I went on a Mylapore heritage walk organised by Namma Mylapore on Saturday morning. Namma Mylapore is a group of volunteers that aim to make Mylapore better. The heritage walk is one of the things they do. Apart from that, they also try to clean the roads and other such projects. They meet at 5pm on the first Sunday of every month at the South steps of the Mylapore tank. More volunteers welcome!

Some of the photos from the walk are up on flickr:

Wednesday, August 22, 2007

Event Badge Generator released under MIT License

The event badge generator python script has been released under the MIT License: More info, Download

If you attended, you would have noticed the cool preprinted badges for all the attendees. (If not, check out the pics here and here) We had almost 400 people, and no way was I going to manually create each badge, type and place all the text, reduce the size if it didn't fit, split names into two lines if required and all that. So I ended up creating a python script to take a badge template and a list of names and create badges for each one.

I was talking about this script at the lightning talks at BCB4, when Brad Allen from the Dallas Python User Group mentioned how it might be useful for other events as well (mainly with reference to PyCon). Therefore, the script has now been released under an MIT license.

As it stands now, there are some hardcoded variables here and there and some work needs to be done. If you are a python coder, you can probably find your way around and change what you want to change. Sometime in the future I'll parametrise it so that it is relatively easy for non-python coders to use it as well. Eventually, I'm hoping it reaches a stage where it can be used by non-tech event managers.

For now though, it can only be used by those who can read and write basic python. If you are interested in using it or playing around with it, check out the project wiki page.

Monday, August 20, 2007

Some Post-event Blog Posts

A couple of events happened this weekend.

On Saturday, SkillsCamp Pune took place. Freeman has a post-event blog post.

On Sunday, the Bangalore OpenCoffee Club meetup was held. Ramjee has the post-event blog post for this event.

Looks like both the events went off pretty well. Good stuff. Waiting for photos and videos ;)

Tuesday, August 14, 2007

The problem with voted content: Homogenisation

A couple of things occurred the past week which made me think about voted content. The first was Dharmesh Shah lamenting the loss of reddit and the second was an idea floated on the bangalore barcamp mailing list of having an event where all the talks are voted on by the audience.

Why do I think an audience voted event is a bad idea? Tyranny of the majority. Tyranny of the majority is a term applied to pure democracies where the majority can constantly out-vote the minority and therefore impose their view on the entire population (which is why there are no purely democratic countries, but lets not go there).

Lets take a simple example to see how this works. Say we have an event and 100 people turn up. 60 of them want to attend startup sessions. 40 want to attend photography sessions. There are ten speaking slots. Common sense dictates that having 6 startup sessions and 4 photography sessions is a "fair" distribution for the given audience.

But what happens when topics are put to vote? In every slot, the startup crowd can out-vote the photography crowd. Therefore when put to vote, the most likely outcome will be 10 startup sessions and no photography sessions.

But it doesn't end there. The next time the event comes up, the audience will be reinforced by those who liked it the first time around. Therefore in the second edition, there will be more startup enthusiasts in the crowd and fewer photography buffs. Over time, this positive feedback cycle will reinforce itself until the crowd and the topics become homogeneous.

This is exactly what happened to reddit for example. Topics that appealed to the majority go to the front page. As users visit the site, those who like the topics on the front page tend to stay, while those who don't will leave. Those who stay cause more such articles to get to the front page, which in turn attracts people who like those topics. A vicious positive feedback loop occurs as the crowd and the topics become homogeneous, eventually driving out minority interests.

The cool thing about a barcamp is that there is a great deal of variety in the topics. Therefore, even if you are in the minority, there is a good chance that you will find someone with your interests at the event. The biking collective was a good example of this. Such a session would never have survived a voting round. But the barcamp format meant that it was possible for those interested in the topic to meet up and have a session.

That is why I feel that efforts must be taken to preserve diversity.

Having said that, there is merit in voted sessions. Voted sessions avoid the situation where people talk about stuff that no one wants to hear about. But it makes more sense if voted sessions are just one of the tracks in the barcamp, not the whole event.

Monday, August 13, 2007

Organising your own OpenCoffee Club

Bangalore OpenCoffee Club Meetup

Following on from the Chennai OpenCoffee Club, Vaibhav and Ramjee are organising an OpenCoffee Club in Bangalore. OpenCoffee Club is is a place for people involved in the startup ecosystem to meet in an informal setting.

Read more about the Bangalore OpenCoffee Club and if you are interested in attending, join the bangalore opencoffee google group.

Organising your own OpenCoffee Club Meetup

Starting your own opencoffee meetup is very simple. Here is what we did:
  • Decide on a time and place. The place should allow a small crowd to have noisy discussions as they roam around the place. Make it easily accessible. We chose 3pm Sunday mainly because there is less traffic — otherwise it is a pain driving through rush hour.
  • Next you need to announce the meetup. We
    • Posted about it in our blogs. Kiruba picked it up and posted it in his blog
    • Sent a mail to the python, ruby and linux user groups
  • For other cities, the local Barcamp, MoMo, LUG and other such groups are good places to announce the event
  • Finally you need to turn up at the give time and place and let the event happen. We had a quick introduction at the beginning then broke for food/coffee and let the individual discussions happen.
Thats pretty much it. The cool thing about OpenCoffee Club meetups is that there is very little organising overhead, which makes it easy to organise and attend.

Friday, August 10, 2007

Lightning Talks at BCB4

We decided to have a session of lightning talks at the Python hall at BCB4. A lightning talk is a quick 5 minute talk. Usually there are a number of lightning talks one after another. The idea of the lightning talk is to give a quick introduction to a topic that might be new for the audience, with the discussions taken after the session.

It went of pretty well, one of the more fun sessions. It's really nice to see ideas bouncing off every five minutes, and with Kausik keeping strict time, the session flow was good.

After seeing it work nicely at the Python hall, I converted my Speed Geeking session into a lightning talk session. The reason was that there were about 20 people in the audience, which is too small for a speed geek, but good for lightning talks.

In this post I'll summarise the topics from the two lightning talk sessions. Click the links for more information on the topic.
  • Code like a Pythonista: Brad Allen from the Dallas Python User Group talked about David Goodger's tutorial, Code like a Pythonista.
  • Printing badges with Python: This was my session on how I used a python script to create attendee badges for If you attended Proto, you would have seen those badges. They were generated using a Python script.
  • Restructured Text: Restructured Text is another variant of text markup languages like Textile and Markdown. It is the standard markup language used in docstrings in Python.
  • Sudoku Solver: Anand had a talk on writing a sudoku solver. Very nice little program that uses a backtracking algorithm to solve sudoku puzzles.
  • pygoogle: pygoogle is a python interface to the Google web search API. This session showed how you can use it for search engine optimization.
  • Demonstation of a quick web app written using the lightweight framework. powers sites like Reddit and Open Library.
  • Wicket and JTrac: Peter Thomas gave a talk on his open source project, JTrac, which uses the Apache Wicket framework.
  • Agile Software Development: Agile software development explained in a few minutes!
  • Second Life: An intro to Second Life, with an emphasis on the Second Life economy.
  • Creative Commons: An intro to the CC philosophy.
  • ShowMeDo: ShowMeDo is a site for the sharing of technical material through the medium of screencasting.
  • Tempostand: Tempostand is a platform for independent artists to share their music under a Creative Commons license
Two sessions of thirty minutes each for a total of one hour of lightning talks. That one hour threw up these twelve topics. Good ideas and technologies to investigate in more detail. If you are going to be taking a session at an unconference, try out the lightning talk format.

Tanjong Rhu

Tanjong Rhu
Originally uploaded by Siddhi
Taken on Singapore National Day, August 9, 2006. This apartment complex is located opposite the stadium. I was just looking around and saw the beautiful sight of the moon rising over the apartments.

Thursday, August 09, 2007

Google Uses Crowdsourcing To Create Maps In India

Brady Forrest over at O'Reilly Radar has a post on how Google is using Crowdsourcing to create maps in India.

Google has been sending GPS kits to India that enable locals to make more detailed maps of their area. After the data has been uploaded and then verified against other participant's data it becomes a part of the map.

He quotes a speech by Michael T Jones, CTO of Google Earth, who in a talk said:

Now, everything you see here was created by people in Hyderabad. We have a pilot program running in India. We've done about 50 cities now, in their completeness, with driving directions and everything - completely done by having locals use some software we haven't released publicly to draw their city on top of our photo imagery.

Pretty interesting stuff. Read the whole post for more information.

How well are VC firms doing? Not too well.

Matt Marshall over at Venture Beat analyzes how well VC firms are doing, and the answer: not too well. According to the post, the average VC firm only gives a 2.7 percent annual compounded return over five years which is pretty dismal. Whats more, the median VC firm is losing money, and the average is only pulled up by good numbers at the upper end.

Another analysis by Dan Primack looks at returns post-bubble and finds that the median VC return is -2.6 percent year on year. Dan concludes that the vast majority of VC funds raised since 2001 have underperformed a typical savings account.

Saturday, August 04, 2007

SkillsCamp Pune

SkillsCamp Pune is coming up on the 18th of August. The aim of SkillsCamp is to create an open courseware focusing on technical topics. Think of it as MIT OpenCourseWare for software development. The idea is that each session will be a 15 minute workshop which will be recorded and then put online or on a DVD. It's an unconference, so participants can take a session on any topic that they want. Expect tech stuff like python, rails and so on to be recorded.

The organisation team for SkillsCamp is being led by Freeman Murray. I first met him at BCB3 when he was wearing a very nice creative commons t-shirt and then again at and BCB4. At BCB4 he recorded a videocast while I showed him ShowMeDo, which aims to do something similar to SkillsCamp via screencasts.

It's interesting to see these initiatives for bringing in sharing of technical knowledge, especially because there is a serious shortage of good training material for a lot of newer technologies. Personally, I am a huge fan of screencasts as a wonderful medium for capturing and distributing this knowledge.

Wednesday, August 01, 2007

Review of BarCamp Bangalore 4

So BarCamp Bangalore 4 has come and gone. It was interesting as always. Lots of interesting people and things going on. I already wrote a post about Anand and the Open Library project and I'll be writing a few more detailed posts about the other stuff that I found interesting at BCB4. In this post however, I want to concentrate on the event itself.

Also, on the topic of BCB4 reviews, some other posts from across the blogosphere - To start off, the event was huge. Around 600 people turned up I believe. Now whether that is a good thing or not is something that we'll discuss in the last section of this post.

Another interesting innovation was the introduction of collectives. A collective is a group getting together to discuss a common topic. This was in response to the last time when a complaint was that if someone was interested in one topic it was hard to know where all it was happening. This time you could just head out to the collective venue and sit through all the collective sessions.

Now to dissect the event ;) I'll start out with the broader principles and finally come to the minor areas.

The law of two feet

To start off, one thing I liked the large number of parallel sessions. This is an area where a number of people complain - too many parallel sessions - but according to me, there needs to be way more sessions than you can possibly attend. This is because a crucial cornerstone of an unconference, borrowed from open space technology, is the law of two feet. Harrison Owen, the creator of Open Space says this about the law:

This law says that every individual has two feet, and must be prepared to use them. Responsibility for a successful outcome in any Open Space Event resides with exactly one person -- each participant.

The basic principle is that if you are not getting anything out of a session, use your two feet to move to a better session. The law can only be useful if there are enough sessions to choose from. So for the law to be successful, you need to have a lot of stuff going on. By "stuff going on," I don't mean formal sessions only. Hallway discussions and informal or ad-hoc sessions also count.

One of the things that I really enjoyed this barcamp, and thought was an improvement over last time, was the amount of stuff happening in parallel. I was able to extensively use the law of two feet to good effect and ended up in a number of good sessions.

Small groups in a circle

Another thing that I took away from Owen's writings on open space technology was the role of the circle. I've seen this validated time and time again — the best discussions happen with a small number of people facing each other in a circle. Take a look at this photo from the social tech session. I can't display it here since it is all rights reserved :( -

Studies have shown that the design of an interaction space has a profound effect on the types of interactions that go on there. Put people in a classroom and there is a clear divide between the presenter and the audience. The result is that you will likely get a presentation plus Q&A format, with a mostly passive audience. Put people in a small circle and you will get a completely different set of interactions.

Again for first timers, it often seems that the thing to do is to sit passively in the sessions. This often leads to confusion when a lot of interesting discussions are happening in the hallway.

I thought the classrooms at IIM are too big. I liked the rooms at Thoughtworks from BCB2. Probably the right size for having a session.

Whenever they start is the right time. When it is over, it is over.

These are two more principles of open space. Basically what it means is that a group will start when it needs to. The discussion will run its course. And then the session will end. "Run its course" could mean 5 minutes, half an hour, one hour, whatever. As long as participants are interested, the discussion is on. When the energy drops, the discussion is over and the session is closed.

The conclusion to draw from that is that it is impossible to fix an exact start and end time on a session. Some sessions start late because you are waiting for people. Some start early because there are interested people around.

I am reminded of Prayank's hands-on tutorial on flex (a detailed post on this will come later), a very nice session that was conducted in the middle of the lunch session when everyone was out eating. But there were a few people interested and the room was free, so the session was held then.

Again, sessions finish when they finish. Some discussions go on for a while. It can be a killer to cut the session short due to time constraints. Some sessions only go on for 15-20 minutes. It makes sense to move on rather than to fill the time.

I thought that the idea of encouraging sessions outside the rooms were brilliant in this regard. When the session is held on the garden or in the hallway or in coffee day, there are no time constraints and the sessions follow the principles automatically.

The paper wiki

The paper wiki just didnt work properly this time. One of the by-products of having a collectives system is that each collective had its own schedule. This is great if you plan to sit in one collective, but it was confusing if you wanted to move from room to room and wanted to see what was going on at a particular time across collectives. In the end I just went to the rooms to see what was happening instead of relying on the paper wiki. This was kind of messy and definitely one area to look at.

For instance there were a lot of corridor sessions scheduled for post lunch, 3pm on Sunday - Bikers, Photo, Speed Geeking, Python, Functional programming, and virtually nothing for 4pm. Session coordinators didn't realise this situation because there was no centralised paper wiki where you could see the timings across collectives properly.

I liked the paper wiki at BCB2. Very straightforward and everyone knew at what time a session was happening.

Dissecting the hallway discussion

The interesting thing about a hallway discussion (or any session outside the classroom for that matter) is that it follows these principles automatically. No one needs to tell anyone anything, it just happens like it is just the natural state of things. Hallway discussions are by nature limited to 10-15 people due to practical constraints. The participants are almost always in a circle facing each other. Those not interested almost always move on, and interested people join in. It is almost always participatory. And hallway discussions just start on their own and end when its over.

Amazing isn't it? Can we replicate these in planned sessions? I say yes. Hold the session outside the rooms — in the corridor, garden or coffee day or anywhere outside — and it will automatically follow the principles.

Getting the first-timer oriented

The thing about a barcamp is that it can be extremely disorienting to a first timer. Almost everything is structured in a way that is counter-intuitive to previous experience. The large number of parallel sessions, sessions that start late or early, sessions that end late or early — it can all be very disorienting.

A good paper wiki can be critical here. I also think if there are a large number of first timers, it probably makes sense to have an introductory session on 'navigating through a barcamp.'

Other minor points

An issue was that many uninterested people came along. This might be true, but it could also be a case of first timers not knowing how to get the best out of an unconference. The main thing is to get interested people into the event. I think pitching the event to the mainstream is a bad idea. Whoever is interested should come. If that is 50 people then that's okay. If that turns out to be large, then that's okay too. But it should happen organically. There need not be a deliberate focus on doing a big event. BCB is popular enough that it doesn't need to focus on publicity.

One more point that irked a lot of people was companies that did repeat sessions in the rooms because 'they didnt get enough of a response the first time.' Guys, the idea in a barcamp is to share and learn, not to use a captive audience as a focus group. I have no problems with companies showing a demo of their product. These sessions can sometimes be pretty interesting. But to do it again in the room is probably not correct. If you really, really want to do a repeat, use the corridors. Especially if there was not enough response the first time. If there was a great response then maybe its okay, but even then I'd suggest a corridor for the session.

Many complained about sessions overflowing their time. This is the problem with rooms. It's hard to apply the "when its over, its over" principle because the next session has to start. This was hardly an issue with the corridor discussions because there is always more corridor space.


Okay, this post is big enough already. What did I like? I liked the stuff happening in parallel and the hallway discussions. I thought the session rooms were too big and the paper wiki was very confusing. On the whole I was mostly in the hallway discussions, so it was a very good barcamp for me, though I can see how those who tried to decipher the paper wiki and plan the sessions to attend would have had a tough time.

Monday, July 30, 2007

Anand Chitipothu, Open Library Project and Structured Wikis

Aaron Swartz recently announced that he was working on the Open Library project. The project is an ambitious attempt to catalog all books ever written using collaborative editing. Think of it as a wikipedia for books.

The whole project was developed by a small team of 8 people. Look at the list and you'll come across Anand Chitipothu. I had the opportunity to meet Anand again at BarCamp Bangalore 4 and we had a discussion about the project.

Anand has been spending most of the year working on the Infogami codebase. Although Infogami has not seen an update in ages and is pretty much dead, Anand has been working with Aaron behind the scenes in completely revamping the codebase. The Open Library project is built on this new Infogami codebase.

One of the cool things is that pages in the Open Library are not just a collection of unstructured text. You can actually store and edit structured data.

For example, a book edition (like this one) is made up of a number of fields. When you edit the page, you don't get one page to edit like you do in wikipedia. Instead you get specific input areas for each field. Click on this link for an example.

How does Infogami know what fields are required for a book edition? Simple. That metadata is stored in another page. The metadata for a book edition is here, for example.

So while the Open Library project uses Infogami to store information about books, the codebase can actually support storing any kind of structured data.

My take is that this kind of structured wiki will get a lot more popular in the next few years, especially in the field of enterprise applications. There are some other players trying to promote enterprise apps over a wiki — Jotspot (now part of Google) and TWiki come to mind — and Infogami looks to be another interesting application in this area.

What kind of enterprise app could be built over a wiki?

Here is a quick example: Take a resume manager. A lot of companies have built custom applications to store resume data in a structured format and later query the data when they have openings. Often, an app like this is a straightforward store and query style application. Enter some data - name, employment history, skill set etc and then query it out again later. Once in a while you may need to update a resume or do something else.

Building such an app is relatively straightforward, but a whole lot of work does into doing common things like the user interface, talking to the database and so on.

To build such an app over a structured wiki is simply a matter of defining a resume object and its fields and you are done. The wiki already implements the code for the UI and talking to the database and providing interfaces to add, edit and search the data, so you don't need to do that work yourself. Most of the wikis also have simple permission control mechanisms. Building such an app on top of a wiki would take a maximum of ten minutes.

Even better: If you need to run some custom queries and are willing to code a bit, you can plug a bit of code into the database interface and have the results show up on the page. Many wikis allow you to do that by writing macros that can be inserted into pages.

Using a wiki platform with custom macros can allow you to build these kind of applications in no time at all.

I can imagine a wide variety of applications for such structured wikis. To be honest, using wiki based applications in the enterprise is still very cutting edge, and enterprises are not the most enterprising when it comes to trying out new stuff (how ironic). For the early adopter crowd though, rapid application development on top of a wiki platform is something to keep an eye on.

Friday, July 27, 2007

Co-working space in Chennai?

A co-working or co-office space in Chennai would be very cool.

Basically, the idea is that more than one company works in the same office. In co-working, which is geared towards individuals, each individual gets a table and a place to sit. In co-office, each company gets a workroom that can hold about 5 people, desks, computers. Office infrastructure such as a reception, coffee machine, printers, xerox, conference rooms are shared between all the companies. Maintenance is also taken care of by the space provider.

The rent and expenses are shared between all the companies. So an office space that can accommodate 4 companies will typically have a rent that is around 1/4 to 1/3 what it would cost to rent your own office.

These kind of spaces have big advantages for startup companies in particular.

One, the cost of office space is vastly reduced, so they can have an office at a much cheaper rent. The second big advantage is that they are in an environment with other startups, so during coffee breaks people are likely to run into other startup folks. The third big advantage is that these spaces are rented out on a monthly basis, so there is no need to take out a long term contract with up front advance and deposits.

If anyone knows of such a space in Chennai, drop in a comment to this post.

Thursday, July 26, 2007

Chennai OpenCoffee Club

So a few of us are trying to get the startups in Chennai together. Towards that end, we decided to have a bunch of meetings in OpenCoffee format -

Here's the blurb:

The Chennai OpenCoffee Club is a place for people involved in the startup ecosystem to meet in an informal setting. Anyone involved with startups - entrepreneurs, developers, lawyers, investors - is invited to come and join the conversation.


3pm on Sunday, 5th August


New no. 147, G.N.Chetty Road,
Landmark: Opp Murugan Idli Shop.


Anyone interested can drop in at the above place and time. If possible, send me an email with an rsvp so that I can gauge the approximate size of the gathering. Send the mail to

Wednesday, July 25, 2007

My first ShowMeDo video

ShowMeDo is a website started by Ian Ozsvald and Kyran Dale. The idea is to have a collection of technical screencasts on a variety of subjects. I just got my first screencast hosted at ShowMeDo. It is a re-recorded version of my earlier screencast on doing a wiki in Django, this time with a voice over. Have a look here.

Tuesday, July 24, 2007

Post Proto roundup

I have a lot of thoughts to put down after attending Proto. About the event as such, it went off really well. Apart from a small hiccup during the first two hours, the event was smooth and the feedback has been very positive. I had an opportunity to meet a number of interesting startups. It's great to see so many startups here. I really do feel the startup ecosystem growing every month.

Alok Mittal makes a good point in this interview when he says that many of the companies need help with marketing. But isn't that what the VCs are there for? To help companies plug holes in their execution? If a company has everything in place and is doing great, then they usually don't need outside investment. So almost by definition, if someone is at an event like this, they realise that there are some areas where there is a deficiency and that they would like to fix it.

Was Rahman from Dolphin Advisory had another good point when he said that VCs tend to look at companies through a fixed narrow lens. This is so true, and you can read more about it in this very interesting post.

I can relate to that post very well because the company I worked in previously went through two rounds of VC funding. After the second round, all the talk was about scale. How can we scale this, how can we scale that. Suddenly we hired a ton of people (relatively speaking). Never mind that there was no management structure in place. Never mind that things were going out of control. I asked that we grow my project team slowly because adding too many new people to the project was being disruptive, but the team was grown anyway. In a few months, the team went from 4 experienced people to 11 mostly freshers. I later heard that the board wanted to "scale" the development. But adding so many at one go is not scaling, it is disruptive. I don't think the board understood that. When I asked to pause hiring for a while, I heard that the board was questioning why we had slowed on hiring and that they had funded us to scale, not to sit on the money. I'll leave you to figure out how the story ends.

So Was has an excellent point when he says that the Silicon Valley model is not the only model around. There are other ways to develop and grow a business. In some cases, going for VC funds is absolutely the right thing to do. There are times when you need a lot of money to execute on a plan, and at these times raising money through VCs makes a lot of sense. But often there is no pressing requirement for huge funding, in which case you need to think hard about whether going the VC route is the right thing to do.

Saturday, July 21, 2007

Saturday, July 14, 2007

Django Code Coverage Followup

teenage mutant ninja hero coders builds on my post on code coverage with django and shows how you can get the same effect by creating an alternate test runner. This way, you can get code coverage without having to muck around in the django source.

Pretty cool. I'll have to try this out.


Wednesday, July 11, 2007

My pownce micro-review

So I got myself a pownce account thanks to an invite from Harish. My stream is here.

All this while I've stayed out of the twitter-tumblr-jaiku microblogging thing, but pownce was written in python+django, so hey, had to check it out.

Having checked it out, here is my micro review - Its pretty neat. I like the fact that it has private messaging, plus messaging within groups. Makes more sense than forcing all posts to be public like twitter. Pretty straightforward to get going, though others say that the twitter interface is simpler (haven't seen it myself). There is a desktop version too, but it requires Adobe AIR (Apollo), which sucks because no way am I going to install AIR just to use pownce. Plus there is no mobile integration.

It's still pretty new though, so I expect most of these things would be sorted out. At the moment, creating an account is by invitation only. I've got 3 more invites to give out, so if you want one, put in a comment.

Tuesday, July 10, 2007

Generating sentences using Markov chains

So, a bunch of us - Aswin, Kausik, Moyeen, Sagaro - got together at Aswin's house on Sunday to have a python codekata. We did an intro to Python session, and we wrote a program to generate sentences using Markov chains.

I really like this program. Not only is it interesting to write and run but it makes for a very nice language intro. I'll be doing this session again as a workshop at Bangalore BarCamp 4 at the end of this month.

The final version of the program is given below. The example below uses sample text from Alice in Wonderland, downloaded from Project Gutenberg. Remember that this is the final version — In the actual kata, a number of variations were written before arriving here.
import random

def getLines(filename):
return [line[0:-1] for line in open(filename).readlines()]

def getWords(lines):
words = []
for line in lines:
return words

def createProbabilityHash(words):
numWords = len(words)
wordCount = {}
for word in words:
if wordCount.has_key(word):
wordCount[word] += 1
wordCount[word] = 1

for word in wordCount.keys():
wordCount[word] /= 1.0 * numWords
return wordCount

def getRandomWord(wordCount):
randomValue = random.random()
cumulative = 0.0
for word in wordCount:
cumulative += wordCount[word]
if cumulative > randomValue:
return word

# replace with a large text sample. Here we are using Alice in Wonderland
# from Project Gutenberg
words = getWords(getLines("alice.txt"))

wordMap = {}
previous = (words[0], words[1])
for word in words[2:]:
if wordMap.has_key(previous):
wordMap[previous] = [word]
previous = (previous[1], word)

for word in wordMap.keys():
probabilityHash = createProbabilityHash(wordMap[word])
wordMap[word] = probabilityHash

previous = ("The", "next") # The starting words
numWords = 100 # The number of words to print

print previous[0], previous[1],
for i in range(numWords):
word = getRandomWord(wordMap[previous])
print word,
if word.endswith("."):
print "\n"
previous = (previous[1], word)

Friday, July 06, 2007

Agile software development in South East Asia

There is a new mailing list for discussing agile development in south east asia. If you're from around there, do join in.

This is pretty cool, because when I was in Singapore, I missed the lack of an agile user group. I remember thinking pretty often about whether we were the only company doing agile or what?

This is even more strange because FDD was first used in the UOB project in Singapore (You can read more about that here). Unfortunately, agile didn't spread outside to other companies in Singapore.

So its nice to now see some sort of user group coming up. It only means that there are more people out there doing agile.

If you're a software developer from the region, then you really ought to check it out.

Thursday, July 05, 2007

Silver Catalyst v1.2 Released

I've just completed v1.2 of Silver Catalyst. This version allows you to integrate Silver Catalyst with a Wiki. Read more about the release here.

This version is the third release in the last month and a half, so we're iterating pretty rapidly, which means lots of new goodness coming up ever so often.

Oh, and there is a new homepage design as well. Check it out.

Thursday, June 21, 2007

Marc Andreessen

Marc Andreessen started a new blog recently. If you are a startup company, this is one blog that you must read. Yes, it's that good. Read it now.

Wednesday, June 20, 2007


Originally uploaded by Siddhi
A langur, the most common monkey in India.

Taken at the Pench Tiger Reserve, Madhya Pradesh (Central India)

Tuesday, June 19, 2007

Bangalore Roof Top Film Festival

Bangalore is about to get it's own roof top film festival next month. Nice to see the idea spreading. It's kind of funny how most good ideas happen by accident. The initial idea was to watch the cricket world cup on the terrace. Great work by Sagaro in getting it the RTFF concept started.

Which reminds me.. when is the next RTFF in Chennai? And more importantly, what is the venue [let me guess on that one ;)]?

Now that Sagaro is officially still alive, I'm pretty sure that the next RTFF won't be far away.

Friday, June 15, 2007

Chennai Ultimate Frisbee

Some of us will be meeting up at the beach tomorrow morning to play Ultimate Frisbee. The group was started by Manu and his friends at ISB. We played for about half an hour last week. It was super tiring, especially on the beach. This time I'm bringing lots of water.

If you are interested, join the group and reply to this thread.

Date: 16 June
Time: 5.20 am
Place: Besant Nagar Beach

Erlang demo video

Harish Mallipedi has a very nice post pointing to an interesting erlang demo video.
This is probably the only time I have seen someone demo their programming language by making phone calls to each other. It is fun! Watch it.
Check it out!

Wednesday, June 13, 2007

Silver Catalyst v1.1 Released

If you were wondering why there were no blog posts for a while, you now know. Been really busy over the last ten days getting a new version of Silver Catalyst ready.

The new version was released today. The big addition is support for multi-lingual scripts. You can now create tasks and team members in languages apart from English.

Take a look at a screenshot to see an example.

The new version can be downloaded from the download page. Follow the upgrade instructions on that page to upgrade.

Saturday, June 02, 2007

Deploying web applications

A couple of recent developments have once again brought web app deployment to the forefront.

First, ThoughtWorks announced that Mingle will run on JRuby. The reason of course is because it makes it much easier to deploy the application. Most enterprises have a J2EE system already installed and configured. By using JRuby, ThoughtWorks can package the application in a war file which can be deployed onto the existing infrastructure.

Second, David started a google group to discuss a standard ruby on rails stack. From what I've heard, deploying a rails app is complicated. Which is one of the reasons why ThoughtWorks went the JRuby way.

What about Django? The standard Django deployment scenario is Apache - mod_python - MySQL/Postgres. Since most of the components are fairly standard and usually already installed, there is no real issue in deployment.

If you have anything non-standard though deployment can quickly become a problem. That really sucks.

Look at desktop apps. You install it and then click a shortcut and it runs. Imagine if you had to copy files all over the place and edit arcane configuration files in order to get a desktop app to run. You wouldn't stand for it! But this is exactly how the web app scenario is.

With the growing popularity of writing a web app for personal and team applications, where the application will be installed by a person or team on one of their own machines, deployment will become a big issue.

I bring this up because the agile tool I wrote had exactly this problem. It's for use by teams and I want teams to be able to set it up without mucking about with complicated deployment and configuration issues.

Luckily, if you are programming in Python, there is a solution to the deployment mess: Simply package everything you require — the python interpreter, a python webserver, an embedded database, django code, your application code — into an executable. Then your web app behaves just like a desktop application. That is exactly what I did with my tool. You can install and run it by running the installer and then clicking the shortcut icon in the start menu — just like a desktop application. Isn't that nice?

For a more detailed explanation on how this was done, check out my post on the other blog: Deploying a Django app on the desktop.

Tuesday, May 29, 2007

Wednesday, May 23, 2007

Advertising to the new consumer

Russell Buckley has a nice post pointing to a new Microsoft video about a "break up" between the old advertisers and the new consumers.

Old advertising was all about bombarding the consumer with messages, but what the new consumer wants is to have a dialog. Now, this is not news if you have read the Cluetrain Manifesto or any of the stuff that followed it, but it probably is news for a lot of traditional advertisers.

The new advertiser will be talking to their customers via blogs, message boards and social networks, especially if their target market hangs out online.

Sunday, May 13, 2007

Silver Catalyst 1.0 has been released!

Some links to get started
Another thing: This release of Silver Catalyst is beta license compatible. So if you helped out during the beta test and got a license at the end of it, you can use the same license with this release and it will work. Thats US$1,568 in value. Just to say thanks for beta testing the tool.

Tuesday, May 08, 2007 2007 SE

So the Summer Edition of is coming up in July. Like the first edition of, we will be selecting a bunch of startups to come down and present their prototypes to an audience of VCs and other folks.

First, nominations have opened, so if you are a startup looking for funding, customers or partners, then head over to the nomination page and nominate yourself. You can nominate yourself again, even if you nominated the last time around, as long as you weren't selected last time.

Secondly, we are looking seriously at the feedback we got from the first edition of Proto. As the first event of its kind, there were a number of things that happened well, but I'll be the first to admit that there were a number of things that could have been better.

This is a good time for me to say that the Proto blog for the second edition is up, so take a look.

One of the things we have been rethinking is the entry fee for the event. This time around we are going to charge Rs.10,000 for startups instead of the Rs.5,000 last time. In exchange, we hope to bring in more value for the startups this time. How? I'll post more about that in the days leading up to the event.

And thats the point really. The focus is in making sure that startups get good value for what they paid for. There has been a lot of brouhaha about the meaning of non profit, and whether we are making loads of cash and retiring to the Bahamas etc. Just to clarify, while I wish I was retired in the Bahamas, I am unfortunately still in Chennai. I'll just point to Vijay's reply (see comment #16). I don't really want to spend any more time on this topic because its kind of lame.

Coming back to the startups. Our main focus is in ensuring that the startups are happy. Which means satisfying what they want. Startups basically come to Proto for three things - funding, customers and partners. So we need to bring to them some investors and a high quality audience. If there are 200 people in the audience, we would like it to be 200 people who would like to do business with the startups, rather than 200 spectators.

We fell short on this on two counts last time around. First, the audience was mostly spectators. Second, the audience preferred to stay in the main hall through the event. We had hoped that a majority of the audience would go to the networking hall and meet with the companies, but they mostly decided to stay in the main hall instead.

This was pretty much a surprise to us all, because all the pre-event debate was about what to do if the whole audience hogs the networking hall after a good presentation and no one remains to see the next presenter.

We are thinking about how we can tweak the format this time to encourage the audience and the startups to mix.

One of the options is to have half an hour breaks after every few presentations. This would allow everyone to mix around without having the guilty feeling that you are missing something in the main hall. Obviously if we go this route, then either we have to go to two days of presentations, or cut down on the number of companies presenting. There is no way we can finish on time otherwise.

Another idea that is doing the rounds is having stalls for each company. That would act as a point of contact between the audience and the startups, and generally allow for more interaction. The issue then is of finding enough space to setup twenty or twenty five stalls.

If anyone has more ideas, post them here.

Coming back to the entry fees for startups. Some have said the entry fees are really high (and are getting higher this time..). We've debated this within ourselves a lot.

DEMO, on which we have modeled Proto, charges a startup US$18,500 as an entry fee. That's seven and a half lakhs when converted to Indian Rupees. Read that number again - seven and a half lakhs. For the first Proto, we charged Rs.5,000 and this time it will be Rs.10,000.

The same goes for the audience fee. It costs US$2995 to attend DEMO. It costs US$2495 to attend Techcrunch20. We charged Rs.500 (US$12.50).

Sure the numbers are not directly comparable, and the value provided for your money is different, but it still puts in perspective that Proto is very very affordable compared to equivalent events.

There is of course a lot more to write about, but this post is big enough, so other stuff will have to wait till later. Any comments welcome.

Friday, May 04, 2007

Mobile Monday Chennai

Some updates on Mobile Monday. It's coming up this Sunday, 6th May at the TeNeT hall in IIT Madras.

Time: 10 AM


TeNeT - ADI Seminar Hall,
CSD Block, 3rd Floor,
IIT Madras.

Check out the wiki for the speaker and attendee lists:

Do you buy comics?

If you do, then Fantagraphics Books is giving a 20% discount on all their books.

Unlike other discounts, this one is different and rather unique. To avail of the discount, you have to add their user to your network in one of the popular social networking sites: MySpace, Flickr, Orkut, Bebo,, Yahoo 360 or AIM Pages. Once you add them to your network, just mention your nickname and the website and you get 20% off all books purchased.

I took the opportunity to order Volume 1 and 2 of Usagi Yojimbo, Like a Velvet Glove Case in Iron, a couple of new issues of Mome and BĂȘte Noire #1.

Tuesday, April 24, 2007

Upgrade to new blogger

I upgraded to the new blogger interface yesterday, which means that I finally have access to labels. Over the week I'll be labeling most of the 300+ posts in the archives. If you are reading this via a feed, it may happen that a whole bunch of old posts lands up in your feedreader. If that happens you can just ignore it as its only the labeling going on.

Monday, April 23, 2007

Chennai Air Show Photographs

I've uploaded a bunch of photographs from the Chennai Air Show that happened at Marina Beach yesterday. The photos are here:

Sunday, April 22, 2007

Code coverage for your Django code

One of the things that I like about Django is that it allows you to run unit tests on the code with relative ease. So I have a bunch of unit tests now, and I was looking to expand it. For that I first needed to know which parts of the code had good coverage and which parts had no coverage. I needed to integrate code coverage with the unit testing framework. In the end, it involved modifying a few files. This is what I did:
  1. First, I downloaded Ned Batchelder's module.
  2. Next, get this script to colorize the coverage output. I saved it as
  3. Put both files somewhere on the python path. I put it at Python24\Lib\site-packages
  4. Now we need to modify the django unit test runner to include coverage. Head over to your django\test directory and edit the file
  5. At the top, add the following line:
    import os, coverage, coverage_color
  6. Scroll down to the run_tests function. You will see a line like this:
    destroy_test_db(old_name, verbosity)
  7. Modify it to read like this:
    if not os.path.exists(settings.COVERAGE_DIR):
    for module_string in settings.COVERAGE_MODULES:
    module = __import__(module_string, globals(), locals(), [""])
    f,s,m,mf = coverage.analysis(module)
    fp = file(os.path.join(settings.COVERAGE_DIR, module_string + ".html"), "wb")
    coverage_color.colorize_file(f, outstream=fp, not_covered=mf)
    destroy_test_db(old_name, verbosity)
  8. What that does is to record the coverage when running the tests. It then creates a directory for putting the HTML output, creates the colorized version of the source and dumps it into the output directory. At the end of everything, it cleans up the coverage data
  9. We now need to configure the COVERAGE_DIR and COVERAGE_MODULES settings. Open your Django file and add the following lines:
    COVERAGE_DIR = "scripts/build/coverage" # Where the HTML output should go
    COVERAGE_MODULES = ["apps.catalyst.views", "apps.catalyst.models"] # The modules that you want colorized
  10. Save and run your Django unit tests. After running, you will have a html file for each module in the specified directory with the colorized coverage output
Check out the output: The lines in red were not executed by any of the unit tests. Looks like there is a function that I'm not testing at all!

Monday, April 09, 2007

Indian Roller

Indian Roller
Originally uploaded by Siddhi.
This bird is the Indian Roller. You can find more at

Taken in the Pench Tiger Reserve, Madhya Pradesh (Central India)

Sunday, April 08, 2007

Mobile Monday Chennai

Update: See here for the latest update.

Varun Krishnan is organising the first Mobile Monday event in Chennai. Mobile Monday is something like Barcamp in the sense that its a tech gathering, except that the event is only 3 hours long and the topics revolve around mobility.

Mobile Monday, as its name states, is supposed to be on a Monday, usually after work. The upcoming Chennai event, however, will be on a Sunday (some people call this Mobile Monday on a Sunday or MMS). Mobile Monday is also supposed to be once a month, usually the first Monday of the month. The Chennai edition will be once a quarter instead. If there is demand, the frequency will be increased.

So here are the details

Date: April 22nd, Sunday (2 weeks from today) Update: The date has been changed to sometime in May
Time: 10am to 1pm
Venue: Mobile Worx office

The schedule is three tech talks, 20 minutes each and three product demos, 20 minutes each followed by lunch.

I've signed up for a talk on Location Based Services. I'll be talking about a couple of projects that I did while I was in Singapore.

If you are interested in giving a talk, head over to the Speakers wiki page and add your name there.

Tuesday, April 03, 2007

Barcamp Bangalore 3 Roundup

I was in Bangalore on Saturday and Sunday attending the third Barcamp to be held there. Here are bits from the event that I found interesting. This is a long post, you have been warned :) Note that the following is not in chronological order.

Python Conference

I met a few guys from the BangPypers groups - Anush, Anand, Kushal, Swaroop and Sidu. Apart from the Python conversations, I also asked if anyone knew what was happening on the planned Python conference. No one had much information, so I'm not really sure whats happening. Is the Bangalore python conference going to happen?

The Knowledge Foundation

The Knowledge Foundation is the name of the group that is behind various unconferences (plus in Chennai. We had a discussion on how to spread the unconference movement to other cities and other non-tech settings. While Barcamps have been a big success in India, there has not been much activity outside of a few tech events like Barcamps and Mobile Mondays. TKF has been working on that in Chennai where apart from Barcamp we've had Blogcamp, Wikicamp, and Rooftop Film Festival (that reminds me - I have to upload the RTFF photos tomorrow). Coming up are another edition of Proto, Mobile Monday and Shoot. Quite a few people were enthusiastic about having small gatherings on other such topics. It would be great to see more unconferences on a whole range of topics in various cities.

Silver Catalyst

I talked to a few thoughtworkers about Silver Catalyst - Amir, Sidu and Vivek. Amir had recorded my session and had also interviewed me at the second barcamp bangalore back in December. I also met Umesh and a couple of other guys who had also attended my session in the previous barcamp. It was interesting to see how the tool had progressed in the three months between the barcamps.

Sidu took some time out to point me towards Mingle, which is a tool developed by the new Studios division of Thoughtworks, scheduled to release in June. I wanted to discuss Silver Catalyst a bit more with Vivek, but I lost him in the crowd somewhere.

Organisational Culture

There were three sessions that I thought touched on the same topic of culture from different angles. The first was by Savita Kini on Products vs Services in Indian companies. The second was by Satish about whether soft skills training was required. The third was by Shourya on the Bambi code jam initiative at GE.

Savita pointed out a number of challenges and opportunities facing Indian companies. Shourya made a good point in the discussion asking why we think that products are superior to services. Some of the points raised were profit margin and scalability. I'm with Shourya here that I'm not convinced that products are always better than service. Profit margin depends on the product. The XBox for instance is sold at a loss. Mobile phones have very thin profit margins. Scalability is also not a great reason as it all depends on the market. If you put out a product in a small market, there may not be much scope for scalability.

In the end, I think the biggest reason that product companies are not as prevalent is because of the organisational culture. Large companies are by nature risk averse. Since there are a lot of profitable service companies, we tend to follow them and not take the risk of doing something new. One of the cool thinks about Barcamps is that it gets a lot of product startups together.

That ties in with the second talk about soft skills training in IT companies. Soft skills are certainly required. The problem arises when the training is imposed rather than sought. Sukumar made a good point that knowledge can never be given, it can only be taken. I dont think a one day training can build teams for instance.

Satish had a good point which, to me, got to the heart of the matter. Fishermen work in teams because they know that if they don't, all of them will have trouble with dinner. The result of success and failure is right in front of them. They don't need to take a training class to realise that. The problem in large organisations is that there is a disconnect between the work and the outcome. Developers who do the work cannot see the outcome of their work, either in the form of customer satisfaction or bottom line impact. Thus they associate with the closest outcome that they can see - the salary - and start working for the money instead of the company.

A startup culture is like the fisherman team. Everyone is aware of pretty much everything and they know the outcome of their work. The question is can we get a startup like culture in a medium or big company?

Which brings us to the third talk by Shourya on Bambi, a codejam initiative taken in GE. He explained how he got the idea from the Yahoo Hackday in the first Barcamp Bangalore, and implemented it in the form of a codejam at GE. He explained how there was trouble convincing the management about holding it. Finally when it was held, it produced one IP plus a number of other cool, but not so useful projects. The second time around, the management actually asked for it to be held and it was held with some changes in the format.

A codejam, 20% time to work on your own project and other such initiatives are 'cool' initiatives. The problem is that they do not have direct ROI consequences. However, the actual dynamics are a lot more complex. Such initiatives for instance may (or may not) help attract smarter programmers, or reduce attrition, or build up a specific company culture. It may fail if the current programmers are not the type to take part in such events. So the success depends on both the current culture as well as the future culture.

Another problem is that some companies don't really believe in it. Someone was talking about 20% time in their company and how you can work on what you want provided you finish the main work. Since work pretty much takes the whole time, plus a bit more, this is as good as maintaining the status quo. The point of 20% in Google is that you can spend that time even if you are working on something else. They are okay with the fact that the main work will take a bit more time. So that again points to a difference in company culture.

So how can these forces be resolved in managing the current culture or creating a new culture? Thats the big question, but the discussions were interesting.


There was a discussion on the venue for Proto. A lot of people from Bangalore wanted the next edition of Proto to be held in Bangalore. This was a completely ad-hoc session held under the trees (an ideal unconference session!). [Off-topic digression: When a projector is involved there is a clear speaker/audience divide. Get everyone sitting in a circle and it becomes a discussion with everyone pitching in their views.] Back on-topic, there was a good discussion where it was decided to have the next edition in Chennai with interested people from Bangalore joining the team, and the session after that will be in Bangalore.

Barcamp Bangalore 2 DVDs

Amir from Thoughtworks had recorded a lot of sessions from Barcamp Bangalore 2. It came to 8 DVDs in all after editing. Kesav brought his set of DVDs for us to make a copy. The problem was that it takes a long time to copy all eight. Finally, Kushal volunteered to make copies for us. Thanks Kushal!

Quake deathmatch

A few of us had a Quake deathmatch using OpenQuake on Saturday evening. Jace, Shreyas, myself and a couple of other guys were there. It's been many years since I played Quake so it was great fun. For some inexplicable reason OpenQuake would sometimes stop reading the horizontal axis of the mouse. The mouse would work fine in the menus, but in the game I could only look up and down and couldn't turn left and right. Quiting and rejoining the server fixed the problem, but the frag count went back to zero. It happened thrice in all. Highly frustrating. Absolutely no idea what caused it.


A dinner was organised at the end of Saturday. I didn't attend it because I went to meet a few guys at the Forum. At the dinner were ex-thoughtworker and AI hacker :) Ravi Mohan, Bharat Guruprakash, Manoj Govindan, Rajesh Babu and myself. A number of interesting topics were discussed like machine learning, silver catalyst, the ongoing drama at the scrumdevelopment group that has been tragically comical, work at thoughtworks and subex, thoughts on the CSM, agile in India, applying agile to embedded systems, PhD, research, entrepreneurs, dungeons and dragons, board games and so on.

We had to catch our train on Sunday night. Ramesh Babu joined Sukumar and me for the evening. He had hosted Syed, Kiruba and Sukumar on Saturday night. Kiruba and Syed had a dinner appointment so we split up at the station. They returned 5 minutes before the train was scheduled to leave, running and sweating, and then the train left half an hour late :)


I met Mahesh Shantaram at lunch on Sunday. Mahesh is a documentary photographer based in Bangalore. He has some very nice photographs that you can see online here. Amogh had a session on conservation with stories based on his photographs. He goes into the forest every weekend to take photographs. We later caught up with him at Cafe Coffee Day after the event was over to have a discussion about the Shoot event thats coming up and also if we could join up with him on a trip sometime.


A few quick words about the sessions that I attended.

Motvik showed a demo of their WWIGO product. They showed how to use a mobile phone as a webcam and transmit data via bluetooth to the laptop where it was streamed over skype to another person. Inactiv explained their Activ Mobs service, a group SMS service for groups of friends. There was a presentation about Bigswerve by Raj Bala. What they do is to go through the comments at various websites and generate a network based on comment patterns. Comment patterns an example of implicit networks where the network is not formally defined and a comment automatically implies a level of engagement with the site. A few thoughtworkers gave a presentation of Continuous Integration and Cruisecontrol.rb. Sowmya Karmali had a session explaining the Mifos project. Marek Tuszynski had an event on How to organise an open event. Marek was the organiser for AsiaSource and a few other events. I think it started early or I messed up the timing because I really wanted to attend but when I went there the session was just wrapping up. There was a nice session on usability by Hari and Ram.