You are currently browsing posts under the My Research category
May 21st, 2010 §
For the past few months I’ve been sitting on some ideas (for Web applications) that I’ve scribbled here & there. I’m working on a few (not listed here) in my spare time, but realistically I won’t be able to work on all of them. So I thought it will be better to just publicly share some of the ideas for others interested in driving them.
1. Car Pooling – Sometime back I took a taxi cab to work. I got talking to the driver, a friendly guy with crude English. He mentioned something so simple that it made me think on several interrelated issues (environmental, social, economical) for days. “Only one person in each vehicle. That’s what’s wrong with this f**king world.”, he said. As I looked around in the sluggish traffic, I could really see only one person in each vehicle, for miles. It made me jot down a note to think about promoting car pooling and maybe improve the experience somehow. Eventually, a bit of brain-storming brought a question – what’s a good model for online coordination of car pooling, so that more and more people can easily get on-board and the mechanism is effective?
2. Comments Aggregation – Most of the decent user-generated content is built around niche online communities, where users often post some great comments on various topics. Most of these comments (however small or big) go unnoticed and get buried over time. If these comments were available for reading on a wider platform (a dedicated website) to a larger audience, then it can add more value. Each deserving comment becomes an independent post/article, linked back to the original post/article. The app can simply be a bookmarklet to clip thoughtful well-deserving comments and a website to aggregate the clipped comments with a clean uncluttered reader-friendly UI to go with it.
3. Social Goals – An application (probably a Facebook app) where anyone can set one or more goals (e.g. lose x amount weight in y days) for themselves or their friends. The user (person who has to achieve the goal) can then post regular updates on their progress. Their network of friends rank their effort on each update posted. Their network of friends can also send them a gift (virtual or real) at each milestone or when the goal is accomplished. The idea is loosely based on Game theory, as it aims to promote action and behaviour change through group motivation.
4. Feedback for Startups – Startups need early feedback as part of customer development. The idea is to create a website for startups to put-up a survey (small or big) and a special offer (e.g. discounts, coupons, gifts, gift certificate, books etc.) to go with it as an incentive to complete the survey. The longer the survey, the bigger the offer to the user. Users (who meet a set criteria) can then choose to participate in a survey and receive the special offer. Startups on the other hand can get the relevant feedback.
5. Food Photos – More and more people are sharing photos of their food. And there’s something about looking at other peoples (real) food. It’s somehow aesthetically pleasing to the eye. New York Times wrote about the phenomenon – People Who Photograph Food and Display the Pictures Online. The idea is to create a website and curate/aggregate food pictures in real-time from various photo sharing sites and social networks (Twitpic, TweetPhoto, Flickr, Posterous, Blogs). Add a bit of social voting and make it elegant for ‘food porn‘.
6. Integrated Blogging Environment (IBE) – Blogging is more common than ever before. From a bloggers perspective, I find that it still lacks a simple integrated tool to write rich articles quickly. Here’s my wish-list for a blogging tool: Web-based, simple WYSIWYG text editor, inbuilt support for dictionary & spelling suggestions, quicker reference to Wikipedia, inbuilt support for search and embedding of images (Creative Commons licensed) from Google Images and Flickr, auto-post to multiple blogs, auto-post to Twitter & Facebook. How about it?
Most of these abstract ideas have emerged from my own needs and observations. These ideas are open for anyone to use, so feel free to go for it. Drop me a message if you make any progress. Good luck.
June 8th, 2007 §
Test-driven development (TDD), is an evolutionary approach to software development, in which you write a test before you write just enough production code to fulfill that test. The simple goal of TDD is to write clean code that works. Due to this fact, TDD is a method of designing software, not merely a method of testing it. A significant advantage of TDD is that it enables you to take small steps when writing software, and this makes it far more productive than attempting to code in large steps.

I’ve adopted TDD in several mid-size projects in the past 3-4 years, and I’ve come to realize that it works incredibly well alongside traditional black-box or white-box testing. From my experience with it all, I’ve realized that there are three golden rules of TDD:
1. Don’t build what you can’t test: Imagine building a million-dollar software architecture involving several man-hours, only to realize that it cannot be put in production because it cannot be tested due to technical or infrastructure constraints. Large projects are prone to this quite often. However, smaller projects are no exception either. Let’s say, I have to build a simple printer queue manager. I have access to the API, the programming environment etc., but I don’t have access to a variety of printer hardware to test the utility on. The risk of failure increases in such cases, and there’s hardly any mitigation strategy in place.
2. Write a test before writing the code: The core aspect of TDD revolves around writing a test case for a piece of code before writing that piece of code. In TDD each new feature begins with writing a test. This test must fail since it is written before the feature is implemented. But by focusing on writing only the code necessary to pass the test, designs can be cleaner and clearer. Running such tests gives a rapid confirmation of correct behaviour as the code evolves.
3. Test as you build: TDD constantly repeats the steps of adding test cases that fail (no code written yet), passing them with unit testing (code written), and refactoring (code improved). Receiving the expected test results at each stage reinforces the programmer’s mental model of the code, boosts confidence and increases productivity.
While it is true that more code is required with TDD than without TDD because of the additional unit test code, but the total code implementation time is typically shorter, simple because you only write enough code to pass the test.
Overall, TDD can save considerable amount of time, efforts and money, for any development team.
February 6th, 2007 §
In 1963, meteorologist Edward Lorenz asked the question: Does the flap of a butterfly’s wings in Brazil set off a tornado in Texas? Postulating the so called “Butterfly Effect“, the idea that the flapping of fragile wings could start a chain reaction in the atmosphere. Today, Lorenz’s Butterfly Effect theory can be applied to information technology infrastructures – changes to one element of a system can cause subsequently larger and more complex changes to other elements of the system.

In today’s world of the Internet the question might be rephrased: Can a single e-mail from Brazil set off a torrent of action in Texas? Sociologists postulate that what a few influential leaders think and say can spread and grow and bring about big changes in the thinking of large numbers of people. The Internet offers a compelling new place to look for this phenomenon by studying very large groups and especially, seeing how groups change over time.
Social networking mechanism’s on the Internet, like Usenet, forums, blogs, wiki’s, communities etc., all influence the propagation of the Butterfly Effect. Cornell researchers say that one way to find the influential people would be to identify those who have the most links to others, or the ones who can reach the largest number of others with the fewest “hops” through other people. However, due to the “small world phenomenon” — the fact that everyone is on average “six degrees of separation” from everyone else — so counting the number of hops between people doesn’t help. It’s better to look for people who have many different short paths connecting them.
Cornell News: Key points in social networks
October 16th, 2005 §
Once you know where knowledge resides, you simply point to it and add instructions on how to get there.
The whole knowledge building cycle is a critical aspect of knowledge management. In this context, blogs/wikis help convert tacit knowledge (in the mind), which generally amounts to upto 95% of all knowledge, to explicit knowledge (codified).
September 2nd, 2005 §
Here’s an excerpt from a very interesting article I read on Knowledge Management Systems by Alan Ward.
In his book “Future Shockâ€, Alvin Toffler notes that if you were to take the time that human beings have been in existence (about 50,000 years) and divide this time into 62-year average lifetimes, you would get 800 lifetimes. Of those 800 lifetimes:
- 650 of them have been in caves.
- It is only in the last 70 lifetimes that humans have been able to communicate across generations.
- It is only in the last 6 that there has been the printed word.
- It is only in the last 4 that we have been able to measure time with any accuracy.
- It is only in the last 2 that there has been the electric motor.
- Most of the technology that we are so familiar with has been brought into existence in our lifetime.
No wonder our people are feeling “change wearyâ€. It is our observation that despite this rate of change, with respect to organisational shifts, people are more “change wary†than “change weary†and this is because in the majority of cases they are not allowed or encouraged to play an active role in determining how the work that they do will need to change to accommodate shifts in organisational objectives. Too often we see poorly thought through change management initiatives that have been inadequately prepared and resourced inflicted on the workforce rather than engaging them early in the process to determine what needs to change to most effectively deliver the shifting organisational goals.
Considering the extent of human interaction throughout the ages, a natural initial response to any sort of group discussion is a feeling of apprehension due to a lack of collective and widespread ideology. It is often hard for individuals to submerge in a creative and thought-provoking discussion with an open and shrewd state of mind. However, through innate introspection and reciprocal trust, human beings can communicate more effectively and tactically, so as to accomplish any common objective.
Essentially a blog or a wiki are new age forms of Knowledge Management Systems.