Author Archive
1 Oct, 2008
The Game of Business
Posted by Bhavin Turakhia | (3) Comments
I delivered a presentation titled the Game of Business at the Proto.in conference in 2008 and subsequently at IIT Kanpur’s Megabucks event.
Visit our wiki at http://wiki.directi.com/x/BwCK to view the video of this presentation and download the slides. At Directi, we believe that Business is like a game. This presentation covers principles that embrace this philosophy and that continue to be instrumental to the success of Directi.
I finally managed to obtain a copy of the video of the presentation and hence am posting this entry quite late. I believe this is by far one of the best presentations I have delivered in terms of value and the importance I personally attribute of the concepts I expound in the presentation to the success of our company.
Comments / feedback are solicited and welcome ![]()
24 Sep, 2008
Time and Resources Analysis of a Recruitment Exercise
Posted by Bhavin Turakhia | (0) Comments
I got around to thinking about the amount of effort that goes behind a recruitment exercise at Directi and I thought to pen down an article which details out a recruitment scenario and the effort / resources involved. The purpose to pen this down was to get an idea of the time, cost and people involvement per candidate. This in turn will enable us to -
- Set expectations in terms of targets of the number of interviews one can conduct per week
- Determine direct cost of an interview process
- Determine the opportunity cost of an interview process
- Improvise our recruitment process and make it more efficient
The article turned out to be a 1600+ word count multi-page article which I have posted on our Directi Wiki under the Recruitment University
Anyone involved in recruitment should read it. The article is available at - http://wiki.directi.com/x/TwDK
PS: If you wish to apply for a job at Directi, visit our careers portal at http://careers.directi.com
11 Sep, 2008
Availability of Developers by City (Mumbai, Bangalore, Delhi etc) and Technology (Java, C++, C#, AIR, WPF etc)
Posted by Bhavin Turakhia | (11) Comments
An alltime favorite question amongst journalists who interview me as a “young entrepreneur” has been - “Tell us about some of the challenges you faced while growing Directi?” and my patent answer has always been that the only challenge we have faced and continue to face is finding good talent. In our bid for finding talent we are now expanding into other cities over the next few months.
In order to determine tech labor availability across the common metro cities in India I compiled a statistical comparison of the count of resumes available on common jobsites for common software development skillsets in the various cities in India, and the findings are very interesting. This blog post compiles these findings. If you are a tech company in India - these findings can help you make technology decisions concerning city selection and platform selection.
The findings
Below are findings from the comparison of the count of resumes of software developers with 0-4 yrs of experience from various cities in India as compiled from a jobsite -
1. Findings by City
- Bangalore has 2.5 times the number of Java resumes of Mumbai
- In terms of total resumes from each city the ranking is in the following order - Bangalore, Hyderabad, NCR, Chennai, Delhi, Pune, and lastly Mumbai
- As an example, here is the citywise count of Resumes that contained the keyword Java
- Bangalore - 123,205
- Hyderabad- 114,561
- NCR - 85,347
- Chennai - 82459
- Pune - 54,086
- Delhi - 53,256
- Mumbai - 43,672
- Every city in India has more available developers than Mumbai with the South taking the lead
- NCR has almost twice the number of developers as Delhi
2. Findings by Technology
- The total count of Resumes of developers with 0-4 yrs experience that contain the below keywords across all 7 cities was -
- C++ - 635,575
- Java - 556,586
- C# - 190,872
- Javascript - 162,343
- Ajax - 41,219
- Flex - 8,668
- Python - 3,429
- Ruby - 2,099
- WPF - 779
- Silverlight - 255
- As you can see Java and C++ are the predominant keywords in Software Developer Resumes
- Flex beats Python and Ruby
- Ajax and Javascript beat Flex/WPF/Silverlight by several magnitudes as keywords appearing in resumes
The results above remain similar in terms of ratio, for Resumes with 4+ yrs of experience.
Click here to download the raw excel sheets for all cities and technologies >>
The methodology
I had my team conduct independent searches for each permutation and combination of the following -
- Keywords - Java, C#, C++, Javascript, Flex, Silverlight, WPF, Ajax, Actionscript, Ruby, Python
- Cities - Mumbai, Pune, Bangalore, Delhi, NCR (Noida/Gurgaon), Chennai, Hyderabad
- Experience - 0 to 4 yrs , 4+ yrs
- Function - Software Development (or equivalent)
- Jobsites - Naukri, Timejobs, Monster
- Date - 3rd June 2008
The above totals upto a whopping 462 searches :). I then tabulated the count of Resumes for each search and put it in multiple excel spreadsheets. You can download the spreadsheets to crunch the numbers yourself.
Based on the above data, Directi and .pw clearly need a presence in the south. The data also demonstrates the lack of penetration of RIA, especially Flex/Silverlight/AIR/WPF, amongst Indian developers.
Hopefully this data can help others make similar decisions. Meanwhile lookout Bangalore/NCR - we are in the process of making an appearance shortly
PS: Interested in joining Directi? - check our openings at http://careers.directi.com
4 Sep, 2008
Ethics in journalism and the Metcalfe law
Posted by Bhavin Turakhia | (2) Comments
I, alongwith my team, have spent the last two full days in fire-fighting, false and inaccurate, libelous and defamatory claims against Directi by a certain Garth Bruen at Knujon and Jart Armin and James Mcquad at Hostexploit, compounded multifold thanks to the Network effect of the Internet.
For the full story check out our post on the Directi blog - Our official response to inaccurate reports which falsely implicate the Directi Group
In short, Knujon and HostExploit published two independent online reports incorrectly linking Directi to certain miscreants responsible for fraudulent activities on the Internet. Their research was entirely flawed and their reports filled with factual inaccuracies.
Within record time, these posts were picked up by over 15 other news sites and reported as if accurate with additional conclusions left to the imagination of the respective journalists. What shocked me personally is neither the original posters (Garth / Jart / James) nor any of the journalists responsible for the follow-up aftermath extended a basic common courtesy of contacting us for comments, let alone for validating any of the claims. The whole episode has caused considerable irreversible damage to our reputation, ended up wasting significant resources within our organization, and left several misconceptions in the minds of thousands of readers worldwide concerning abuse on the Internet.
Journalism has existed way before the Internet, and a common ethical code of responsible reporting is assumed in this profession. With the Internet however the responsibility is significantly compounded, given the fact that any published story is now re-published multiple times, blogged about, indexed, archived, forwarded, shared, favorited, bookmarked, dugg, twitterred within moments of publication, repeatedly, by netizens worldwide, and all this information continues to exist in the cyberspace, google cache, browser cache, proxies, web archives, offline stores and many other sources - ad infinitum.
Anyone making any public claims / statements on the Internet now has significant power, and, in the words of Peter Parker - “With great power comes great responsibility”. I can only hope that the various reporters / news agencies who we have been in touch with, learn from this experience, and do not, in their haste to churn out the next sensational news story, ignore the fundamental tenets of responsible and ethical reporting.
31 Aug, 2008
A modified Nonce implementation
Posted by Bhavin Turakhia | (7) Comments
Nonce refers to random single-use (hence the name) tokens used to hash information before sending it from a client to a server to avoid having to send sensitive data in cleartext. It is typically used to send authentication information such as passwords over HTTP. In this post I describe a slightly modified implementation of using nonce.
Our goal is to make an authenticated call from the client to the server. This requires the call to contain username and password information. We wish to avoid the overhead associated with HTTPS and at the same time, ensure that the password is not sent in cleartext.
Algorithm
- Client requests the server for a nonce token and the current time of the server
- Server generates a random nonce token (servertoken) - numerical or alphanumerical and returns the same to the client with its currenttime (servercurrenttime)
- Client creates a hash of servertoken + password + servercurrenttime
- Client sends servertoken, servercurrenttime, hash to the server
- Server checks if its system time is within a 10 second range of the servercurrenttime it received. Server may need to take into account timezone differences between the client and server locations
- Server then runs the same hash algorithm using the password it has in its store, and the servertoken and servercurrenttime received from the client
- If the hash matches the hash received from the client, then the call is permitted
The above process ensures the following -
- The password is not sent in cleartext
- Anyone intercepting the communication can get the following - clienttoken, servertoken, hash. However they cannot obtain the password. Nor can they use the hash to repeat the same call after the expiry of the 10 second window. The window maybe suitably adjusted.
In another implementation the random token can be generated by the client instead of the server. The server only provides the servercurrenttime.
In another implementation the server can store the servertoken in a cache with a 10 second expiry. When the client sends the hash, the server checks if the servertoken exists. This would eliminate the need for using servercurrenttime. The servertokens could be stored in a simple memcache server.
Care should be taken that the hashing algorithm generates significantly distinct hash values for minor modifications in the token / password / currenttime.
It maybe argued that the random token is not required and that the currenttime is sufficient by itself to generate a hash. However a random salt appended with currenttime is likely more secure since it adds an element of randomness.
4 Aug, 2008
I recommend reading…
Posted by Bhavin Turakhia | (17) Comments
I have been planning to begin blogging about the books I read, atleast the good ones. I have always been an avid reader and used to devour 2-3 books every month in the days before Directi. Nowadays I do not have the luxury of time, but manage to read one book a month (thanks to my ever-increasing travel schedule and the fact that I am never going to be able to sleep on planes until the A380s with the wider fully flatbeds begin flying to NYC and SFO - which may not be too faraway considering that Emirates has ordered 50 of them
).
Back to the topic at hand - I strongly recommend the below two books which I read in the last few weeks -
Smart and Gets Things Done: Joel Spolsky’s Concise Guide to Finding the Best Technical Talent (Hardcover) - Short and informative guide to recruiting tech talent. I read it cover to cover and enjoyed it thoroughly. While the book focuses on recruiting tech talent, most of the principles apply to any recruitment exercise. I would strongly recommend this to anyone involved in recruiting from functional heads to hiring managers
The Go-Giver: A Little Story About a Powerful Business Idea (Hardcover) - An amazing business parable with a simple, yet profound lesson on how building a successful business is about focusing on giving and not getting - an obviously simple fact, that all of us forget while living in what we have been trained to [wrongly] believe is a dog-eats-dog world. (Directians: We are buying 200 copies of this one so you can get yours from the library pretty soon)

16 Jul, 2008
MySQL vs Postgres
Posted by Bhavin Turakhia | (2) Comments
In my perpetual comparison between MySQL and Postgres I am beginning to lean towards MySQL offlate. There are many reasons, but a short list that is currently relevant to us is here -
- MySQL supports multiple backend storage engines providing more flexibility of choice. For instance one can choose MyISAM for tables where transactions and ACID compliance does not matter, and gain a performance advantage. Or one can use a Memory storage engine for temporary in-memory tables
- InnoDB supports optional MVCC, thus providing best of both worlds
- MySQL supports native replication and shared nothing clusters
- MySQL has better integration with memcached
- MySQL uses multi-threading as opposed to process-forking, making it less heavy
- More people are using MySQL than Postgres - eg Facebook, Youtube etc
- MySQL is now owned by Sun, and despite their recent lay-offs they are a company I respect
There are many other reasons, but currently these are the ones that are relevant to the products we are working on.
15 Jul, 2008
Just Do It
Posted by Bhavin Turakhia | (4) Comments
No. This is not some Nike Propaganda
Last night I saw a show - “The New Inventor” on the Australia Network channel, a channel that in the past I have only flipped through en route from “Star World” to “AXN”. One of the inventors being profiled on the show made a statement, one that I have heard in the past, but one so profound that it deserves its own blog post.
I paraphrase his statement below -
When you have an idea or a vision, it can have three possible outcomes -
- You give it all you’ve got and you suceed
- or, You give it all you’ve got and fail
- or, You ignore it and spend a lifetime wondering “What If?” !!!
The first outcome is the happy path. The second outcome involves a temporary downside accompanied by lessons that will serve you for a lifetime. The last outcome involves a lifetime of doubt.
19 Jun, 2008
TechCamp Event: Mary and Tom Poppendieck in Mumbai
Posted by Bhavin Turakhia | (0) Comments
I havent had a chance to post about this before but we have started an initiative called TechCamp, wherein we plan to organize regular technology events, codefests, workshops, activity sessions, training sessions and much more. Given my constant bickering about the dearth of geek events in India, we decided to go ahead and do something about it. The events we organize under the TechCamp banner are open to public, and 100% techie.
Our second TechCamp event is organized in conjunction with ASCI on 28th June in Mumbai. Mary and Tom Poppendieck the proponents of Lean Software Development, and reknowned authors the award-winning book “Lean Software Development: An Agile Toolkit” will be conducting a workshop on Lean Software Development atHotel Sea Princess.
Find out details at the TechCamp Wiki and sign up for the TechCamp Mailing list to be notified of future events. Feel free to invite friends and colleagues. Given the limited seating you will need to submit a position paper to attend.
29 May, 2008
Starting off with RIA
Posted by Bhavin Turakhia | (4) Comments
As one of the many companies working with RIA, I would like to share some of our processes we have begun using in percolating RIA within our organization -
Select a RIA technology
There are several RIA technologies available to choose from. On the web you have Ajax/Flex/Silverlight. For the desktop you have AIR/WPF (though it is kind of a misnomer to classify AIR/WPF as Rich Internet Applications)
Given that Silverlight is just taking its first breath, and that the Silverlight player is not currently available on a large number of Desktops, I would currently recommend Ajax/Flex for a web app. Between the two there are various pros and cons. Flex has an advantage of being ubiquitously standardized, so you will not require to bother with browser compatibility issues in your Flex App. On the other hand there are various readymade toolkits available for Ajax/Javascript that abstract browser compatibility issues and provide a plethora of ready made components.
Standardize on an Ajax Toolkit
For Javascript/Ajax try and use existing libraries and toolkits rather than reinventing the wheel. jQuery and YUI look to be the most promising. Both toolkits offer rich and dynamic controls. Currently jQuery seems to be more popular. It is a good to standardize on one and we are currently leaning towards jQuery within Directi. For a detailed comparison check the bookmark I posted on our Wiki - Comparision of jQuery, YUI, Scriptaculous + Prototype, Mochikit and Dojo. jQuery also has a number of interesting books available.
Be prepared to change the way you think
Conventional HTTP applications have always been request-response-pagerefresh based, to the extent that as developers our thinking patterns are molded by the request-response-pagerefresh cycle. RIA turns this approach on its head, not very dissimilar from the event-driven programming models that existed in the desktop apps world.
If you wish to successfully build rich applications, be ready to shed your older conventions and notions and begin thinking in a different manner.
Encourage Self-Learning within the team
A few weeks ago I wrote an article on what I call the Flexi-Learning model that lists a few of the strategies that we have been adopting within Directi as a part of our training and knowledge sharing processes. Pursuant to that I have added a list of RIA books within our wiki on the Software Engineering Textbooks page. Use similar strategies within your respective teams to percolate information.
Browse as many examples as you can
The biggest hurdle with RIA adoption as I see it is that UI possibilities increase significantly. Given the myriad possibilities for representing a workflow within the browser canvas, the biggest challenge is to be able to come up with a creative way to provide a rich user experience. To me the first step is to figure out the various possibilities. While reading books can give you some guidance - another important step is to view as many examples as you can find. The jQuery website, Flex.org, Silverlight website, YUI website and other such websites have several sample applications, walkthroughs and demos that will not only serve as great catalysts for ideation, but also entertain you, blow your mind, excite you and encourage you to participate

