Flickr Badge
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.
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
Proto.in
You can find my Proto.in live feed at my pownce stream.
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
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.
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.
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.
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.
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.
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.
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
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.
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.
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
Django code coverage for doctests
As a followup to my post on code coverage for your Django code, Eddy Mulyono shows how you can get code coverage working with Django when you use doctest for unit testing. Check it out here.
Subscribe to:
Posts (Atom)