« February 2006 | Main | April 2006 »
March 21, 2006
The 'I lied' method of explaining technical concepts
One of the most effective ways of explaining a complex technical issue to somebody is to use the 'I lied' (IL) method.
We have all encountered the IL method in one form or another during our formal education. It's basic form is simple and here's how you do it:
- Initially, present a simplified version of the concept, glossing over any intricate concepts and (especially) implementation details. Lie by omission or commission, either by not revealing the whole truth or by stating the opposite of a key technical point.
- Say 'Wait a minute. I lied' and explain what the lie was and how to convert it to the truth. In doing so, construct a more technically sophisticated explanation of the concept.
- Rinse. Repeat.
The constantly changing set of assumptions underlying the concept at hand leaves students intrigued and eager to learn more about it, which can never be a bad thing. More importantly though, this pedagogical technique takes advantage of the way in which our brains are wired--to notice change. Given a changing scene with a uniform background, our perceptual system is wired to tune out the background once it has been processed initially. Subsequently, the perceptual system notices only incremental changes in the scene--be they visual, auditory or otherwise--and deems them the foreground. The foreground tends to contain the interesting things in our environment--food, a potential mate or a distress call.
The above line of thinking can be extended to the conceptual realm as well. With the IL technique, a teacher starts out by building a simple, but complete, mental model of a concept--one that has a small set of axioms. In successive iterations, certain axioms are negated and replaced, perhaps repeatedly, either by more sophisticated ones or by different ones entirely. If these axioms are central to understanding the concept, our perceptual system will track them across changes and deem them as the 'foreground', i.e. important to understanding the concept. If you're wondering why the perceptual system works this way, you are not alone. One of the fundamental problems AI researchers grapple with today is figuring out how our perceptual system picks out the salient elements in a scene. For example, given the sentence "His Acura skidded through curtains of rainwater and passed by a dog trying to shelter itself by a fire hydrant", why do we pick out that the skid has something to do with the rain rather than with the dog?
When applying this pedagogical technique effectively, a teacher will choose to negate and replace the foreground axioms essential to understanding a technical concept. When this technique is done right, students can gain a powerful grasp of the essentials of any technical concept. Of course, the teacher too must learn to identify which are the foreground axioms essential to understanding a concept, something that gets better with practice. A good teacher ought to be able to figure them out--some say that is indeed the essence of intelligence.
Posted by Vishy at 04:19 PM | Comments (0)
March 17, 2006
Kiss me--I am Indian
Happy St. Patrick's Day. Kiss me--I am Indian (Don't forget to turn your face to the left and ignore the pesky blue wheel in the center.)Posted by Vishy at 11:14 PM | Comments (0)
Vishy's Indian English Dictionary: bandicoot
bandicoot./BAN·di·KOOT/. A rodent similar to the rat, but much larger. I've seen bandicoots running around in drains that I've mistaken for small dogs. Much like their cousins in New York City, they root through garbage at night and make eerie rustling sounds when they run through grass or dried leaves. The etymology of this word seems to be traceable to the Telugu pandi + kokku (lit. pig-rat). In my mind though the word usually evokes the odd image of a bandit-raccoon. I dread to think of how an ordinary Indian bandicoot would take to the, ahem, hormonally enhanced food in the United States. It might just turn out to be Winston Smith's worst nightmare, or some homeless person's sustenance for a week. As it turns out, bandicoot is also used to refer to an entirely unrelated and supposedly cuter marsupial in the outback Down Under.
Posted by Vishy at 10:41 PM | Comments (0)
March 16, 2006
Bubble 1.0, Boom 2.0
In case you haven't woken up to smell the coffee, it's a very exciting time to be a programmer, especially of the Web variety, right about now. Startups are mushrooming around Silicon Valley and other places, in ways reminiscent of the late 90s tech bubble. That bubble was built around a lot of exuberance of dubious rationality, just because people wanted to believe in whatever they were investing in--if only due to cognitive dissonance ('so what if they don't seem to have a real business plan? Everyone else seems to be eagerly throwing money at them, so I should too'). Venture capital funding has been booming as well, and this time around investments are being made in ideas that are technically deeper and more fundamental than pets.com.
So what is the biggest contributor to the latest tech boom, Web or otherwise? Many cite the highly reduced cost of setting up a company these days. Bootstrapping software components that would hitherto take months to build are now freely available online because of the open source software movement. With the spread of broadband, these components can actually be downloaded off the Web by the general public, rather than being restricted to a privileged set of hackers at corporate and educational research institutions. This leaves Web developers free to spend more of their time dreaming up creative things to build rather than worry about how to get to a point where they can build them.
In addition to fundamental software components being more freely available these days, the computing technologies that support them have also come a lot further along. Java has finally matured into a fast, enterprise-grade platform with a lot of traction in the corporate and open-source communities. Other frameworks like PHP that were at best nascent at the time of Bubble 1.0 have become the stuff from which most small to medium sized websites are created. The endless river of Java frameworks streaming out of the open source community seems positively awful when one is wading in it; yet, the experience of having been knee-deep in a mire of configuration files and assorted JMumboJumbo has sharpened the design and esthetic skills of many programmers to a point where they are themselves creating easier languages and frameworks.
We're finally at a stage when the tech industry is realizing that programmer time is a lot more precious than machine time. Contemporary computers have become powerful enough that increased reliance on dynamic languages, which are relatively free of tedious compile-debug-deploy cycles, is not a major issue anymore. Development frameworks like Ruby on Rails take respect for programmer time to the next level by automating a lot of mechanical configuration work. Techniques like test-driven or prototype-driven development have been codified, which means that future generations of programmers will be raised in that tradition, rather than learning it by being knocked around and figuring it out for themselves. It's already a technologically exciting time to be a programmer, but indications are it will only get better, no matter how long the current boom lasts!
Posted by Vishy at 09:01 PM | Comments (0)
March 13, 2006
Perl, according to Larry Wall himself
I started off liking programming because I could usually make the computer do cool things like animate a shape or play a neat tune. However, Perl was the first language in which I had fun writing code for its own sake. I really liked Perl's natural language antecedents and the TMTOWDTI philosophy; I continue to be fascinated by Perl and other languages inspired by Perl, such as Ruby. Perl may have originally stood for Practical Extraction and Reporting Language but it can do so much more. In fact, I am a bit scared by how much critical infrastructure at large companies depends on Perl, especially considering a quip I noticed in the main Perl manual page today, from Larry Wall himself:Perl actually stands for Pathologically Eclectic Rubbish Lister, but don't tell anyone I said that.
Posted by Vishy at 10:25 PM | Comments (1)
March 08, 2006
Vishy's Useless Factoid of the Day: How did the word ghetto come about?
I was just at a little reunion of alumni of my high school in India. It was a motley, multicultural crowd of people whose lives have continued to be at least as interesting as when they were in my school. It was in a conversation with this group that I heard of the origin of the word ghetto.
Ghetto was an island in Venice where the city's Jews were segregated. Apparently there was a fountain on the island that spouted a powerful spray of water, which goes by the word jetto (jet) in Italian. The Venetian dialect of Italian tended to harden j- sounds to g- (as in glamour), which resulted in jetto changing to ghetto.
So the next time someone applies the adjective 'ghetto' to you or one of your posessions, ask them if they really think you look Italian.
Posted by Vishy at 12:47 AM | Comments (0)

