Monday, December 18, 2006

Going Places

"Cold War cartoon defending the profit motive against anti-capitalist critics." Cartoon in public domain and available at Archive.org. 1948.

Useful Web 2.0 APIs

Here is an interesting collection of 10 useful Web 2.0 APIs.
http://www.linuxworld.com/news/2006/121806-web-20-apis.html

...some stars and planets in scale

from mercury to vv cephei. This is amazing. It puts in perspective two very important things:
1. Physically, we are hugely, hugely insignificant
2. But, mentally, we have been endowed with this awesome capability to discover and appreciate this insignificance

Wow!!!

Friday, December 01, 2006

Software Project Disaster Types

The Codist carried a series of articles that I happened to stumble upon, thanks to reddit. Written by an experienced soul with about quarter of a century in this industry, these articles beautifully categorize software project disasters. Though I have only about half of the author's experience in the number of years, I can certainly relate to all of these at one level or the other. The good thing is also that it is not just an interesting list- there are some good suggestions to avoid them as well.
The six disaster types are:
  • The Train Wreck
  • The Death March
  • The Sisyphus Project
  • The Ten-Foot-Pole
  • The Kitchen Sink
  • The Painless Upgrade
What do they mean? Read it all at
http://codist.biit.com/fiche/thecodist/article/software-project-disaster-types-1-the-train-wreck

Thursday, November 30, 2006

Increasing Self-Discipline

I found this very interesting piece today. It gives you three very very simple tips to increase self discipline:
1. Make a want list
2. Imagine your life as a timeline
3. Visual Inspiration

These steps are simple and may even work.

Monday, November 06, 2006

5 Principles for programming

A friend forwarded me a pretty unconventional article called 5 principles for programming. It starts with a very rare disclaimer: "I didn’t invent any of them, and I don’t always follow them. But since nobody seems to know very much about making good software, it makes sense to try to distill a little wisdom when possible."

The five principles mentioned there are:
1. Fail Fast
2. Write Less Code (and Don’t Repeat Yourself)
3. Computer Programs Are For People
4. Do The Right Thing
5. Reduce State

And finally, the author gives a piece of advice that I think is very valid, especially if you don't have a comp-sci educational background (even for the comp-sci folk, good list to revisit outside the exam-cram-season):

1. Learn a functional programming language
2. Learn how operating systems work
3. Learn how databases work
4. Learn how to read a computer science paper
5. Learn as much math as you can (but which math…)

Go read it.

Tuesday, September 19, 2006

Zawinski's Law (and Tanveer's Law School)

I came across this rather interesting "Law" recently. Zawinski's Law states that “Every program attempts to expand until it can read mail. Those programs which cannot so expand are replaced by ones which can.” Coined by Jamie Zawinski (who called it the “Law of Software Envelopment”) to express his belief that all truly useful programs experience pressure to evolve into toolkits and application platforms (the mailer thing, he says, is just a side effect of that). It is commonly cited, though with widely varying degrees of accuracy.

If most of the apps are anyway destined to be toolkits/platforms/frameworks, then we better bear this in mind while designing them in the first place, even if the application was never intended to be so. Interface centric, Object Oriented, Test Driven development would go a long way in ensuring this. These three paradigms are more about discipline than some cutting edge tech stuff.

Interface Centric: This is one of the most preached, and least practiced paradigm. Design your interfaces BEFORE you design your application. Look at the Fa├žade pattern, for help. This is not difficult, but just a matter of habit.

Object Oriented: Ok. You have read a lot about it since the days you spent programming in your diapers. So, I won't repeat all that. Just keep all the good things you learnt about OO in mind- aim to improve reusability, decrease encumberance and judiciously manage relationships between various programming entities. There is only one way of improving in this area- practice. Make lots of mistakes, get lots of crap from experienced souls and don't commit those mistakes again. And yes, one last thing- pleeeeeease document your OO thoughts. Take your pick on how to do it- UML, design docs, code comments (or a combination of these), but DO IT.

Test Driven: So, you have designed your interfaces. You have designed your application around those interfaces. Now what? Write code. Right? Wrong. This is when you should define your test cases and automate them using unit test scripts. Application programming should just be a mode to pass these tests. Some argue that the Test Driven approach gives Development Myopia and people fail to see well into the future. My take on it is, if you use it along with the paradigms I cited above your myopia is prevented. You may or may not use tools like NUnit or JUnit. You may just write your test scripts in shell script or Perl. As long as you have a well maintained test bed that ensures good coverage of your code (there are tools for that too, like Ncover for .NET), you are safe and sound. In practice, the challenge is not in writing the unit tests but maintaining them through changes and across versions. That takes lot of discipline and…nothing else.

But, all this homily is easily forgotten. The only way to ensure that your development automobile doesn't get hijacked (by deadline pressures, for example) is to put it on well designed rails, guarded by controllers and traffic signals. Those rails are called "Processes". Those controllers are called "Reviewers". Those traffic signals are called "Management Checkpoints".

In conclusion, if you have processes that promote Interface Centric, Object Oriented, Test based software development that is guarded by Reviewers and controlled using carefully designed Management Checkpoints, your project may still go to dogs, but the chances are vastly reduced. Vastly.

PS: Please also read two of my earlier posts (linked below) in conjunction with this one to get a good view of what I preach as sound and sane software development practice:
Seven Rules to Guarantee Project Failure
12 Steps to better code

Friday, August 04, 2006

Arabs and Jews: A speech by late King Abdullah of Saudi Arabia

A fascinating essay, and a moving speech. But, it fell on deafest of ears.

http://www.kinghussein.gov.jo/kabd_eng.html

And while we are on that topic, here is an essay on Economist about why America gives unconditional support to Israel.

http://www.economist.com/world/na/displaystory.cfm?story_id=7255198

I guess we should see the middle-eastern crisis and the recent unfortunate events of West Asia in the right context.

Tuesday, August 01, 2006

The Ultimate collection of How-tos

I guess it is pretty well known by now (at least two of my friends knew it already), but somehow managed to skip my attention till today. I came across a web site called wikiHow today. The Welcome box on its homepage says that "wikiHow is a collaborative writing project to build the world's largest how-to manual. With your contributions, we can create a free resource that helps people by offering clear, concise solutions to the problems of everyday life. wikiHow currently contains 9,821 articles written, edited, and maintained primarily by volunteers. Please join us by writing a new page, or editing a page that someone else has started. " (italics are mine)

I loved the first How-To I read on it- How to Eat With Chopsticks.

Thursday, July 27, 2006

Seven Rules to Guarantee Project Failure

I read a lot about Management, especially Project Management. But, only some deserve to be blogged. Like this one by Geoff Choo (the link is to a PDF file). The rules are listed below:

1. Deliver, Deliver and Deliver
2. Planning is for Wimps
3. Whip Your Team to Higher Performance
4. Communication is for Losers
5. The Big-Bang Effect
6. Common Sense Rules!
7. Rub your lcients the Right Way

The above list may not convey much, but the interesting, entertaining and short (just two pages) article has a lot to say. While reading through it, I had several deja-vu moments that made the reading even more interesting. I suggest all Software Developers/ Leaders/ Managers read it, at least once.

Tuesday, July 18, 2006

Anti-terrorist measures in India: Block Blogs

Governments do truckloads of nonsense day in and day out. So much, every well informed citizen of the world knows. But, sometimes they outperform themselves.
After the Mumbai blasts, the Indian government feels an urge to stop blogging sites. Including blogspot.com. Why? Because terrorists use blogs. What? Really? I mean, are you serious? I guess they also use e-mail, so will Mr. Singh's government stop all e-mails? How about Orkut? Afterall, they can create terrorist communities online. Right? What about online chat? That is something the terrorists could use heavily to plot more bomb blasts, so lets stop that. What the heck...lets get rid of computers altogether. Alternatively, get rid of this sick Government.
I understand that it is natural to panic after something as devastating as the 7/11 blasts in Mumbai. The Bush led government in the US panicked similarly after 9/11, and attacked Afghanistan and Iraq apart from making lives of so many others utterly miserable. But, US is a BAD example to follow when it comes to governance and policy making. I can only hope that our Government sees the absurdity in this step and lifts such non-sense sanctions.
Anyway, there are ways and means of circumventing this ban. Please go through the India Uncut blog for more.

Monday, June 19, 2006

The 48 Laws of Power, money and related stuff

(Sorry about the title. Couldn't think of a better one for this post)

I was reading an interesting article about (or, rather, against) Robert Kiyosaki and I stumbled upon a link in it that pointed to "The 48 Laws of Power", by Robert Greene and Joost Elffers. To say that I loved those laws and the way they were put together would be an understatement. Go and read it all at http://www2.tech.purdue.edu/cgt/courses/cgt411/covey/48_laws_of_power.htm
And yes. Don't forget John Treed's take on Kiyosaki in the article I mentioned at the beginning of the post.
Talking about Kiyosaki, money and all that, I have another blog to refer to: http://theinvestorblog.blogspot.com. Go read it, but if you are from (or in) Indian, I would specially suggest you study his Real Estate Cash Flow Calculator. But, read about it on his website first.
Phew. Those are too many links for one post. So, here I end.

Joel on his first BillG review

BillG, by the way, stands for Bill Gates. Just read Joel's wonderful essay on his first review with Bill Gates.

Tuesday, June 06, 2006

How to get the 'human' operator


I stumbled upon an uber-cool website that renders a nice little service- a cheatsheat to those irritating automated telephone response systems. It tells you the keystrokes or phrases you must use on the telephone to get to the operator directly instead of waiting endlessly on the phone line. Alas, it is helpful only for people in US and UK. I hope it will expand to include other places, like India. Meanwhile, my American and British friends will find it useful.


While you are at it, be sure to read their blog too. One funny post, copy-pasted, from there:

Hello, and welcome to the gethuman psychiatric hot line.
* If you are obsessive-compulsive, please press 1 repeatedly.
* If you are co-dependent, please ask someone to press 2.
* If you have multiple personalities, please press 3, 4, 5 and 6.
* If you are paranoid-delusional, we know who you are and what you want. Just stay on the line so we can trace the call.
* If you are schizophrenic, listen carefully and a little voice will tell you which number to press.
* If you are manic-depressive, it doesn't matter which number you press. No one will answer.

Wednesday, May 31, 2006

How to build the best paper airplane in the world

Yesterday, while just browsing through reddit, I found an interesting piece about making a fantastic paper plane. The link is http://www.zurqui.co.cr/crinfocus/paper/air-bld1.html

Go try it out. I will try it myself sometime.

While we are on the subject of airplanes, here is an amazing video I found. It is a radio controlled plane flown with superb skill, to say the very least.

Tuesday, May 23, 2006

Sapir-Whorf hypothesis: My thoughts and comments

I encountered the Sapir-Whorf hypothesis when a friend forwarded an article about it some time ago. In short, it asserts that "thought is constrained by language"- a very interesting and 'thought' provoking idea.

Researchers and practitioners of systems theory, especially the kinds of John Warfield, George Chandy (of OPMS fame) and yours truly, believe that language is more than mere words and sentences- somewhat like that cliche "the whole is bigger than the sum of the parts". The various parts of speech in a sentence, what the specific words mean to the audience, how the sentence was presented, by whom and the context in which the sentence was used are all equally important. You just CANNOT look at any portion of communication in isolation. Ok. How does all this relate to the Sapir-Whorf hypothesis? It relates because, further to my discussion couple of sentences ago, language is not just a group of words. If it were so, you could mug up a French dictionary and talk like a native Parisian. We all know that we can't. Still, how does this relate to the hypothesis I started this article with? Elsewhere (I can't recall where), I read some people's conclusion of the hypothesis that "we can't understand ideas that we do not have words for". I disagree. And quite strongly so. Let me try a pseudo-mathematical/ logical proof:

1. Lets assume that I am Einstein and this is early 20th century

2. Lets assume that we really can't understand what we don't have words for.

3. Can I come up with the theory of relativity? Think about it. I don't have a word for the theory yet.

4. Well, I do come up with the theory AND THEN invent word or words to describe the theory.

5. Because I can do (and Einstein, like so many others before and after him, has done this) the above, assumption 2 MUST be wrong.

Anyways, language is more than just vocabulary, which is just a cog in the communication machinery. And how this cog works 'with' the rest of the machinery is important to understand anything. Lets return to the original Sapir-Whorf hypothesis. Can language really limit our thought? Let us see how these two things are related. Think of language and thought as a dyad (put simply, dyad is any two unit combination towards something meaningful- refer to works of Charles Sanders Peirce). We can depict the dyad as in Fig 1 below:

Fig 1: The Language<==>Thought Dyad

How are they related? Language contributes to building mental models and mental models contribute to linguistic models depicted as sentences in a language. Hence, limitation of one can (and will) seriously inhibit the other. No rocket science in there.

Ah...mental models. What are they? They are, put very simply, the way our brains structure information to make "sense" of it. It makes models of everything it perceives, including sentences. Its model of a sentence includes lot more than mere array of words- context, prior experiences, notions, assumptions and a myriad other components come to play. Roughly, it is akin to how a computer operating system converts a binary executable to low level constructs the processor understands. Thus, the network of mental models is (loosely) an operating system of the human brain. We even have a word for it- mind. If brain is a biological entity consisting of neurons and other physical components, the mind could be thought of as a meta-model of various mental models, and their interactions.

Lets return to our dyad of Language<=>Thought from Fig 1, and our assertion that one's limitation affects the other adversely. How does the mind get out of this negative loop? It uses another faculty that probably only humans possess- Imagination. Along with Language and Thoughts, Imagination forms a "Triad" (sets of three ideas that are applied collectively and integratively) shown in Fig 2 below. A Golden triad, in fact.

Fig 2: The golden Triad

Together, they give rise to many marvels of human intelligence like Creativity, Problem Solving, Decision Making, Learning etc. The power of such Triadic constructs has long been established since Peirce.

Ok. Once again, how does all this related to the Sapir-Whorf hypothesis? The above discussion was aimed primarily to put forth my idea that

1. Language is lot more than just words

2. There is a specific relationship between language and thought

3. Mental models are a crucial mechanism of human intelligence and thought process

4. A meta-model of mental models serves as one way to think of 'mind'

From which, I derive that the limiting "language" the hypothesis talks about is words and mental models, and not just linguistics. Even using a common language, some people understand things others have difficulty in grasping- only because of the way the two groups prepare their mental models.

In conclusion,

1. If we could change our conventional communication style to use prose+pictures effectively, we will come quite close to depicting, communicating and working with mental models effectively

2. Such a style will help communication processes rise a tad (yes, just a tad but that makes hell of a difference in the real world) above pure linguistic dependencies in communication

3. While Sapir-Whorf hypothesis is worth its weight in gold, people who have mastered the art and science of systems thinking coupled with prose+picture style of communication are at a significant advantage

One of the best and most effective of methods of working with mental models (in isolation as well as in groups) are Warfield's graphical modeling techniques (like Interpretive Structural Modeling, Field Representation etc.) and George Chandy's extension of these models into meta models in his One Page Management System.

"How IBM Conned My Execs Out Of Millions"

The title of this post is the title of an interesting story I read at Kuro5hin. I quote from the introduction to this article: "This is a first-person account of how IBM was able to con my execs out of millions of dollars. Gullible management tries to swim with the shark and gets chewed to pieces. Witness the exec-level FUD sales techniques and the $325/hr subcontractor labor bait and switch."
Read the full story, and some interesting comments on it, here: http://www.kuro5hin.org/story/2005/9/27/95759/4240

One of the most read-worthy comments comes from a certain Leonard Lee, a Senior Consultant with IBM. He was on the project described in the article. Make sure you read his point of view as well. Another one comes from a Kuro5shin user "LeglessMarine". He speaks of a similar experience.

Tuesday, March 07, 2006

Sabeer Bhatia's new project

Sabeer Bhatia, co-founder of hotmail who made $400 million from its sale to MS, is on a new venture these days- a blogbar. Read some details on this Indian Express site.
Anyways, it is a toolbar (called Blogeverywhere - no, the link is not working as of today) that does two things:

1. Better Hotmail experience: Provides option for offline viewing of mail, faster mail access etc. What I don't understand is what additional value does it add over Outlook Express? Any ideas? Apart from revving up Hotmail, Blogeverywhere’s application software will help you access blogs and retrieve real site syndication (RSS) feeds faster.

2. You can comment on any website/ webpage. There are two buttons: read and write. Clicking on the 'Read' button will let you view what others have posted about a particular site while clicking on the 'Write' button helps you write your own comments. Sabeer says that this will help in democratization of web. I think this is a decent idea. But, how many people will be inclined to read 'about' the site rather than the site itself remains to be seen. I mean, why do you visit a site? To view it, right? How many times would you want to read what others think of it? How many times did you have that inclination? Personally, I can think of a few instances but they were few and far between. Having said that, people have a strange way of throwing surprises so I won't be surprised if general 'junta' love this idea.

Financial Times has some details: Bhatia has invested $5 million from his personal fortune to develop blogeverywhere over the past two years. The idea was initially conceived by Shiraz Kanga, an Indian former software developer with Cisco Systems.

I think, I still like Voifi. VoiFi (Beta), is an instant messaging (IM) service and a peer-to-peer telephony software that also offers calls for Re 1 from any part of the world to India. This is like Skype or Yahoo! with entertainment added in.

Thursday, February 16, 2006

Rida and Rayan: Their Blog

A blogger has two young children. He dotes on them. He loves the experience of watching them play and grow. So, what is the best he could do to ensure that the wonderful days spent with them during their early years are not lost? How can the experiences be 'stored' for the future? Blog them, of course.
Rida and Rayan (my daughter and son, respectively) are the best things to happen to me in my life. Nothing comes even remotely close. Anything that I feel should be remembered about them goes into a blog. I will post prose and photographs on it, so it should be interesting.
Now, the challenge is to keep that blog going.

Wednesday, January 25, 2006

O yuva yuva

If these guys mean even 10% of what they say, they have my undying support and sincere devotion.
http://economictimes.indiatimes.com/articleshow/msid-1384411,curpg-1.cms

I guess we should encourage such initiatives and prevent corruption of core-values from destroying them and their revolutionary ideas. The party has a website at http://paritrana.org

Please share (in the comments section) your views.

Jai Hind.

Tuesday, January 24, 2006

You and Your Research, by Richard Hamming

Richard Hamming was a great Mathematician and Computer Scientist. There is something about great people that makes them great. The following talk that he delivered at Bellcore in 1986 encapsulates many of those attributes. Fundamentally, he suggests that you ask yourself three questions:

1. What are the most important problems in your field?
2. Are you working on one of them?
3. Why not?

In other words, his question is "What's the best thing you could be working on, and why aren't you?" It is such a slap-in-the-face question, that most of the people would shy away from it. And for good reason- the other alternative is so much tougher. The rest realize that the other alternative is more fruitful, so what if it is tough? The latter are the achievers, the ambitious, the courageous, the famous and the uber-rich. Every famous scientist, businessman, politician has done just that- identified the most important problems in their field and worked on some of them 'diligently'. To me, the appeal of his talk is that it applies to Nobel Prize winning scientists as well as to more ordinary folks who want to excel in their careers.

Read it. I strongly recommend you read it all (it is pretty big) no matter over how many days:

http://www.paulgraham.com/hamming.html

Thanks Richard for sharing such valuable stuff (I hope he gets my thanks in heaven), and thanks Paul for sharing it with all of us.

Please teach traffic rules to Police

Hyderabad is a funny place. I mean, it is nice and all, but when it comes to traffic...it is a lesson in chaos- or how to create it. The following happened last Sunday, when I was going to meet a friend.
Congress Plenary was in full swing and there were khaki men all over the city, more so on the roads leading to the venue. I was happily driving away in my Hyundai Santro on Banjara Hills road no. 3. The traffic was a bit slow, but smoothly moving and I was on the left-most lane. I wanted to get into the middle lane. My indicator went winking and I was about to turn the wheel when a cop standing on the side motioned me to a stop. He came hurriedly to me:

Constable: Saab. Right turn do kilometer ke baad hai ("Sir, the right turn is after two kilometers").
Me: Jaanta hoon. Main tho sirf lane badal raha tha ("I know. I was just changing lanes")
Constable, turning away: Indicator daal ke logon ko confuse nakko karo saab ("Don't confuse people by blinking your indicator")
Me:*#$*^&

Will someone please kick this guy's ass and put him in a driving school where they actually "teach"? I mean, here is a traffic cop asking me not to confuse people by indicating that I want to change lanes. Ass hole of the alpha kind (pardon my french).