Flickr Badge

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 Proto.in 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 :( - http://www.flickr.com/photo_zoom.gne?id=937911412&size=l

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.

Conclusion

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 - http://www.opencoffeeclub.org/

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.

When?

3pm on Sunday, 5th August

Where?

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

How?

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 siddharta@gmail.com.

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.

Link

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:
words.extend(line.split())
return words

def createProbabilityHash(words):
numWords = len(words)
wordCount = {}
for word in words:
if wordCount.has_key(word):
wordCount[word] += 1
else:
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].append(word)
else:
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.