Anything that comes to mind!
The people doing research under him, refer to Prof. CVJ as Jaws. The name very aptly reminds me of the movie. As a kid, I was scared by it. As a full grown adult, CVJ still gives me the chills.
But there I was, standing outside his ridiculously cold office hoping to get his audience. He is primarily interested in Computer Vision and Machine learning but had taken a course on programming for us M.Tech students. To this day, I shudder to think how much he made us bleed on that one course. However, I needed extra credits to pass in time and I was hoping he could give me a project that would fetch me the extra credits.
Nothing too complicated I hoped. Looking back, I can’t imagine why I ever thought so!
The project CVJ had to offer blew my mind. He was working on this grand project called Indian language OCR. As part of a massive project akin to Google Book Search, the Govt. of India was on a mission to digitize huge number of books in Indian languages. IIIT-H was part of the project to scan those books. However the real value of such an exercise is to be able to search through the text, for which it is important to extract the text from the scanned images. Hence an Indian language OCR.
There is just one problem - Its impossible to have an Indian Language OCR
This is because there were way too many Indian languages all doing their own thing (and the thing included a different script – and hence different unicode ranges and different fonts, a different grammar etc.).
There were other people who were trying their hand at this problem. Most of them have come to the conclusion that they were better off creating OCRs for specific languages (eg, ISI Kolkata was working on a Bengali OCR and IIT Madras was working on a Tamil OCR)
I don’t think CVJ ever stopped to consider any of these things. He had an entire team of people working on this problem for several years. They had painstakingly built a system that with some human inputs could do as a multi-language OCR.
The multi-language OCR did a average job of most languages. As he explained, if an OCR was right 90% of the time (which means that it got 9 out of 10 characters right), its still not good enough. Heck, discounting the spaces, I had written 2150 characters and 441 words by the end of this sentence (all in one page). That means the given OCR would have made 215 mistakes already.
A typist could do an order of magnitude better job on this than the program, which then simply was not good enough.
Hence, he needed me to improve the performance of the OCR, by building a multi-language spell checker on top of the multi-language OCR!!!
The spell checker was to validate the words suggested by the OCR and where ever necessary correct them.
I would have preferred to be hit by a 100 tonne truck!
Imagine that it’s a bright and sunny day. You wake up feeling good and eager to get back to work. You reach office; look up your emails and BAM!
You got steam rolled, your work - a train wreck!
The reason you felt good in the morning was because you had spent a huge amount of blood, sweat and tears to create that elegant solution to that massively difficult problem. It was a problem unvanquished by other stalwarts. No one had any idea really how to go about it.
You however were sure there was a way out. You harangued the problem to death, until a solution was obvious. It was a piece of art, so elegant, so sparse and yet so robust! You had every right to feel proud as you sent out the code with a mail that explained it to the rest of the people. That was yesterday…
Today, you are standing in disbelief. Some one sitting high up on a mountain smote down your magnum opus with a careless flick. He took like 10 minutes to write a small and brutal mail that rejects your work as incompetent!
Two weeks down the line, you feel your head would explode! Some cretin has implemented something that looks like an uncanny copy of what you had done earlier. Infact it’s an imperfect copy, a subset if you will. This time that same guy sitting in the mountain has accepted this as a good piece of work. This johnny-come-lately is running away with your work!!!
Now stop imagining. How often do you think this happens?
Looks like something similar happened to Con Kolivas .
He is an Australian doctor who is a long time contributor to the Linux kernel. He was interested in making Linux do better on personal computers. He realised that one of the problems was that Linux projects were sponsored by large corporations interested in huge servers. This meant that code was optimized for servers at the expense of desktop performance. One major bottleneck was process-scheduling algorithms, and he spent tonnes of energy to work on this problem and build a scheduler called Staircase deadline (SD).Unfortunately, Linus was not so impressed with Con’s work.
Some days down the line, Ingo Molnar another kernel hacker wrote Completely Fair Scheduler (CFS) which takes a lot of ideas from SD and Linus accepted that as a good fix.
In the world of linux kernel, what Linus says, goes! Linus of course had his reasons .
Not every one agrees with Linus’ arguments though.
Hurt and defeated, Con has decided to quit working on kernel enhancements. He gave a detailed interview explaining what is wrong with the current state of affairs.
Supposedly, some time back, something similar happened on the device manager front, when udev pushed out devfs and Richard Gooch, the developer for devfs stopped contributing to the kernel forever.
This is of course not to say that such things happen only in the confused world of open-source. While in the open-source world, its out it the open, I guess it happens every where.
It happened to me as well. Not so long ago, we had a problem of substantial complexity. It took me 4 months to come up with a solution that I knew worked. Early prototype results were very promising. In my case, the big guys not just wrote off my solution, they proposed a solution of their own.
This solution was a subset of my solution. My solution was rejected as overly complex. Infact they decreased the complexity of the problem by decreasing the scope of the problem.
Some of the most interesting parts of my solution were trimmed off for something that’s better understood in our team. This brought down the performance but became more maintainable.
To add insult to injury, I was asked to implement the same (you don’t expect big shots to do the spade work, do you?). For close to a week, I fumed, but to no avail.
I eventually went ahead and implemented the solution against my better insticts. The solution did not rebound on us, but today needs several enhancements to support the things we left out then.
I sometimes wonder what went wrong.
I think, it was mix of all of these. The mess hurt for a while, but I moved on. I can’t afford to stop working over ego issues. However, I am still looking to understand how to avoid recurreces of such incidents.
ps: I hope Con Kolivas goes back to hacking, as does Gooch!
ps2: Shameless plug - my website!