Wednesday, December 28, 2005

Flow!

For the last few days, I've been busily coding away at USACO. For those who don't know, it's a place where they train you to do algorithmic programming of the kind that you see at TopCoder and so forth.

They follow a pretty effective technique of dividing their training pages into sections of increasing difficulty. As you finish solving one section, the next one becomes accessible. In about 4 days(I'm not very certain), I've done sections 2.3, 2.4, 2.5 and 3.1, which amounts to about 15 problems. That rate is almost devastating enough to be scary, because I've never coded so fast before. This leads me to conclude that I'm channeling the departed spirit of Edsger Dijkstra...

At any rate, I seem to have achieved what Mihaly Csikszentmihalyi(quite a mouthful, isn't it?) calls flow - a weird sort of state where I lose myself in code and algorithms, time ceases to have any meaning and my productivity increases tenfold. Like Csikszentmihalyi says in his books, it's an incredibly fulfilling state of mind. I'm tempted to say that there's this undercurrent of joy which pervades my being, but that isn't exactly it - it's more like nothing else in the universe matters other than the problem I'm working on and the act of solving it. It's a bit like being in a dream state, where things keep on happening all around you, but you don't seem to care very much, because all your attention is focused on just one thing.

If you haven't figured it out yet, I'm going to be chattering merrily on this subject for the remainder of this post. It's not particularly technical, though the stuff that I was doing was technical. I'll mostly talk about what it felt like. That should be enough to satisfy the people who like that human-interest stuff(as if writing code weren't a uniquely human activity!).

Interestingly enough, as I write this, I'm also chatting with Sagar, trying to explain the logic for a certain problem I was doing last night. The problem is section 2.5's Stringsobits, if anyone wants to know. I gave him the problem statement last night, and he got pretty interested(Sag, good to know the engineer in you still lives!). He tried a brute force algorithm, but of course, the constraints wouldn't allow that, otherwise I would have pulled it off in about 3 minutes...

I figured it out at around 2:30 AM last night. I was practically possessed - I had to solve that problem, and I was on the verge of seeing the pattern for so long that I knew I wouldn't be able to sleep until I had it. When I did see it, I was practically on cloud nine - I would have jumped up and down for joy if it wouldn't have woken people up...Frankly, it was the only problem in section 2.5 that I really found hard, and I wound up that section this morning with the last one I had left(Prime Cryptarithm), which turned out to be incredibly simple.

One of the things that used to happen to me earlier(like about a week ago), was that when I wrote code to solve a particular problem, I couldn't bring myself to like all of it equally. I'm not sure 'like' is the word I want, but it's the closest I can get. There's the stuff that really solves the problem, and the other stuff that's just helping out - I/O, formatting, parsing and all that. During the last few days, that distinction just went away. I became indifferent to the code I wrote, in a sense. Amazingly, the quality of my code skyrocketed, and I got more things right the first time than before. I can look back at my code now and love its elegance, but when I wrote it, I didn't have the same kind of emotional response I used to have. The feeling was a sort of 'smoothness' - the kind of feeling you might get on a boat cutting through the water, with wind ruffling your hair, and no troubles on your mind. In other words, my mind was flowing. No resistance - just ceaseless motion.

And if any fellow computer engineers think that writing code doesn't elicit an emotional response, I recommend they rethink their choice of career.

I've finally decided to stop and relax for a bit. Might as well enjoy this nice feeling of fulfillment in this excellent weather. This is what relaxation should feel like.

For all those people out there who talk about having a sense of proportion, here's a bit of advice - Don't. It's all very well for the little things that don't matter much to you, but for the work that you really care about, throw out any smidgen of an iota of a scintilla of a suggestion of a limit. There ain't no such thing.

In an interesting coincidence, while I was musing about having a sense of proportion, who should come along but Paul Graham, with another masterful essay on procrastination. Relates well to my thoughts on the subject.



PS: I'm not sure if I mentioned this before, but the pigeon nesting outside the kitchen window finally hatched her egg. Junior has grown incredibly fast. He's now at the point where his parents can't sit on him any longer - something they spent an inordinate amount of time doing earlier. I still haven't made up my mind whether they were protecting him from the cold or if they were just too dumb to figure out that you don't sit on the chap that comes out of the egg...

Thursday, December 22, 2005

Brrr - Of cold winters and civil war

The city has gotten rather cold lately. Yesterday was Mumbai's coldest day in over half a century, with temperatures hitting 11 degrees Celsius. By Mumbai standards, that's as good as 11 below zero.

December 21st, 2005 - A day that shall forever live in infamy! After begrudgingly rendering faithful service for the last few weeks, my nose has trechearously chosen this fateful day to declare war on the rest of me. In a bold move, it has besieged my sinuses, squeezing my air supply lines to a trickle. The frontline troops in my throat are fighting valiantly, but suffering grievous losses. Major offensives by elite Nasal Mucus Commandos are met with devastating force, but the situation is still unstable, resulting in a sore throat and blocked sinuses. To top it off, my throat is also the only alternative air supply route, since I have been reduced to breathing somewhat ineffectively through my mouth.

In a happy development, regular infusions of warm dihydrogen monoxide have proved effective in halting the progress of the enemy down my throat. My near-infinite supplies of this weapon have caused widespread consternation among the enemy leadership. Reports from the front indicate that the southern generals have pulled their troops back, and are heading north to join their commander at the Siege of the Sinus Cavities, which promises to be the . The battle being waged there is fierce, with neither side giving quarter. I have given orders that enemy troops are to be mercilessly slaughtered in cold blood, unless they swear blood oaths of lifelong fealty to me. Otherwise, within the confines of my body, the Geneva convention is hereby repealed.

While my brave soldiers fight heroically to hold the Forts of the Ostia, even they need time to rest and regroup. Bombing runs by the Otrivin Airborne Nasal Drop Squad are carried out whenever the fighting gets too rough. As Lord High Supreme Commander by Divine Right, the responsibility falls upon me to balance the costs of this form of attack with the lives of my faithful soldiers.

This choice is hard - a lesser man may be unequal to it. And yet, I must make the decision. Millions of lives may be lost in this War of the Respiratory Passages, but their sacrifice will ensure that the organism lives on.

To all those who must die, your sacrifice will not be in vain. This war will be forgotten.

That's right. It will be forgotten. Not remembered. Not sung about for centuries. It will be banished from the Neuronal Archives as useless information, never to be recalled again. That's the whole point of recovering from a minor sickness. You forget about it. It's not worth remembering.

But these are thoughts for happier times. Right now, I must order another air strike against the rapidly advancing forces of the enemy. Victory will be mine! Onward!

Sunday, December 18, 2005

Diatribe

*Warning - ritual diatribe against MU's stinking system and its consequences follows.*

On Saturday, we suffered through our last exam - Software Engineering was the name of this final torture. Very useful subject, as far as the software industry goes. Unfortunately, it doesn't meld very well with MU's exam-oriented style(hell, nothing that really qualifies as engineering melds properly with it), so the whole thing just degenerated into another contest of memory. Predictable, but no less painful.

So far I've been under the impression that the fellas in charge knew that their system was fundamentally incompatible with the maverick field of computing. Maybe the inertia of this massive system was why they left it the way it is. Now I've begun to wonder if that was an overly charitable conclusion. Maybe they're just too dumb to realize it. Fine. Nuts to them - I'll be out of their organized insanity in another semester. There's no hope of fixing it, any more than there was of fixing the useless mess that they made of the secondary education system. These idiots are incapable of realizing that while memory and knowledge are connected, they are not identical.

Since I've been reading a lot of Joel Spolsky recently, I'll quote him on interviewing:
Just for fun, here is the worst interview question on Earth: "What's the difference between varchar and varchar2 in Oracle 8i?" This is a terrible question. There is no possible, imaginable correlation between people that know that particular piece of useless trivia and people that Fog Creek wants to hire. Who cares what the difference is? You can find out online in about 15 seconds!
The dudes who run our technical education are the kind who think asking questions like that one is a good thing. They can't distinguish between useless trivia and the kind of skill and understanding and knowledge that gets used in engineering or research. There is a place for that kind of trivia - if you work on anything moderately complex, you will eventually end up with a whole lot of little details like this in your head. I know dozens of obscure things(ask any of my bored-to-death pals) about dozens of obscure subjects, but I never sat and studied the damn things! They just stuck in my head as a consequence of a lot of reading.

To intentionally fill your mind with the kind of information that could be looked up in a minute is a slightly odd pastime, but perfectly acceptable. I've done it myself, on occasion. But to force it upon others is positively criminal. And to call it an education on top of that is equivalent to mental genocide. Sort of like those mad priests of the Spanish Inquisition who burnt 'witches' at the stake, and told them they were saving their souls besides.

In any event, there's nothing I can do about it. One strives to minimize contact with these people - argue too long with a fool and you'll become one yourself. Better to learn all the useful stuff on the side, like some of us have done. A lot of people will get away without any real skill, but in the long run, we geeks will have the last laugh. We always do. We did build this world, after all.

I remember this incident last year during CPLAB(Java) practicals. It was the first time I saw how a lot of my classmates wrote code. I knew they were bad, but I had never expected to see what I saw.

Our class was divided into three batches - A, B and C. For CPLAB, A and C had one teacher, and B had another one. Those of us who were in the B batch were considered lucky, since the prof had declared that we could use any language for the project. No prizes for guessing how many of them used VB...Not even 'good' VB - no COM, Web programming, or anything. Just the usual 'draw the interface, create a bunch of recordsets, fire a few queries, and display.' Me and Hrishikesh(Kolhatkar, not Thite) produced a fantastic Java project, but then we belong to the tiny minority that enjoys writing code, unlike most people.

The A and C batches had a more sensible teacher. CPLAB is basically a course in Java, so she declared that all projects had to be in Java. This made several people very unhappy, but it was the smart thing to do. Or so we thought.

It was right at the end of the semester, when the projects were due. The B batch had finished, but A and C were busy working away, struggling to finish. And then I saw how the other side coded. This is the general algorithm:
  1. Figure out what you need to accomplish.
  2. Search through the Java Complete Reference until you find a piece of code that does it.
  3. Type it in, usually with only two fingers. This is where most of the effort was expended.
  4. Struggle to debug it, wondering angrily why it doesn't work properly.
  5. Call for help from me, Hrishikesh or Sagar(who was busy working on his own project and trying to remove a persistent bug that eventually became a feature).
  6. Watch as the unfortunate debugger gapes in horror at the morass of contradictions that unfolds on the screen before them.
  7. Thank the aforementioned debugger who staggers away having rewritten half the code, wondering what possessed him to help out.
Hrishikesh and I ended up helping so many people that we could have started a consultancy and raked in the moolah that day. I kid you not.

To be fair, though, there were a few who were actually trying to understand what they were doing. These people were more fun to help, but it's a headache without the javadocs. People, download the docs, for heaven's sake! You don't have to remember a gazillion obscure function signatures to be a good developer. They're all written down nicely for you. Documentation is your friend. So is Google. Use them, tinker a lot(this is very important) and you'll be coding cool stuff in no time.

For those who still have more than a year of MU engineering left, hang in there. Do the following stuff:
  1. Read Paul Graham and Joel Spolsky.
  2. Write code of your own. Learn another language. Try something really high-level like Python or Ruby.
  3. If you don't understand C pointers, don't despair. Not every mind can handle the weird thought patterns involved.
  4. Learn something about algorithms - you don't have to become an expert, but the mind expansion is well worth it. Try out TopCoder. Learn stuff at USACO.
  5. For God's sake, read something more than your textbooks! You need sources for new metaphors if you want to improve your thinking.
  6. Learn how to write fairly well - the best programmers are also fantastic communicators. You might want to get yourself a blog. It's a great way for blowing off steam too!
And the principle that underlies it all - Have fun doing it! This is the most important thing. If you don't enjoy computing, it might be best to get out early. (Wow, I sound like some guru handing out sage advice!)

Finally, don't pay too much attention to what I write. I'm just ranting most of the time.

Tuesday, December 13, 2005

Polish Justice

Check out this insanely hilarious account of how the Polish police react to a mugging. Now this is what I call motivated service!

Sunday, December 11, 2005

The Church-Turing-Deutsch Principle

I don't know how many of my readers will find this interesting, but I give a thumbs up to Michael Nielsen » Blog Archive » Interesting problems: The Church-Turing-Deutsch Principle. It's about an interesting extension of the Church-Turing thesis by David Deutsch. I like reading this sort of stuff, so if anyone else likes it, leave a comment so I know who else shares my weird tastes...

Now that's what I call an illusion!

Check out this really cool illusion. Beats the pants off any other illusion I've seen!

Friday, December 09, 2005

At the halfway mark

First off, my pal Sagar is losing it.

Oddly enough, this has caused my opinion of him to actually improve. Now if only he'd resume competing at TC...

My sister has begun studying probability. Those who know me realise that I'm mentally preparing myself for the terrible ordeal that will undoubtedly follow. Those who don't should know that my sister has no memory for any mathematical skill I(or anyone else) teach her. Give her six months and she'll forget anything mathematical. Unfortunately, as the mathematically competent older sibling, it devolves upon me to teach her. Some idea of the horror with which I view this task may be formed if one considers that I consider teaching her only a step above robbing graves and eating the contents. Raw.

She can't be that bad, you say? Read on...

A couple of hours back she came and asked me a series of weird questions, ultimately proving that she'd forgotten some really basic algebra, namely, how to solve an equation of the form ax = b. Furthermore, she seemed completely comfortable dealing with a probability value of 6/5, and refused to believe that fractions could be greater than 1 for a few minutes...

For the mathematical pedants among you, in the example, a, x and b are all real numbers.

We had Image Processing yesterday. Fantastic exam - I loved it. People seemed pretty happy about it too. Sagar says he messed it up, but as I said before, he's losing it.

Saw an episode of Coupling earlier this week. Nearly died of laughter. Definitely must watch more of it...

TC had an SRM yesterday, but I was feeling a bit tired for some reason, so I decided not to. My net connection also failed for a few mins before it started, but that had nothing to do with it, though it did impose an air of finality over the decision...

Anyway, it turned out to be the right decision, since the problem set was highly nonstandard, to say the least. I have nothing against hard problem sets, but memoization on a division 2 500 is a little too much! The problem statements weren't exactly models of perfect clarity either. Still, I kinda liked the div 1 250(also div 2 500) and the div 2 1000. They were fun problems, at least in the practice room.

Meanwhile, I seem to be getting some flak from various parties regarding something I said about vacuous bimbos in this post. Apparently I need to clarify something. Here goes:

A quick check at Dictionary.com shows that in fact, the term vacuous bimbo is oxymoronic. Bimbos are vacuous by definition. They also seem to be somewhat overly interested in their own sex appeal, which connects nicely with what I was talking about in the offending paragraph.

Thus, the problem reduces to this: most Engg gals are vacuous, but not vacuous bimbos. Furthermore:
  1. While vacuity is always difficult to tolerate, vacuity coming from a so-called 'bimbo' is somewhat easier to handle, since enduring their empty-headed nonsense isn't as unpleasant. Very painful statement, but one that is sadly true. Has to do with evolutionary mechanisms of ensuring that a person's genes make it to the next generation. Blame the dude who did the whole 'creating the Universe' thing.
  2. See the title at the top of the page? That's right, it actually means something. Focus on the word 'subtlety'. In a supremely ironic gesture, I give you a link to the definition of the word 'subtle'. If you can't see the irony in that, move on to the next point. If you can see the irony in that, pat yourself on the back and move on to the next point.
  3. The point concealed in the little paragraph that started all the trouble was one that's so old and cliched that it increments our little irony counter all by itself. It's the famous one that goes "The system sucks!". In this case, my beef with it is that it allows vacuity to persist beyond an individual's 15th year, and that it does not make proper use of the redeeming qualities that the vacuous do possess.
Frankly, I can't see how one could be pissed off about these commonplace observations about some pretty obvious trends. It's not like they're absolutes that always hold. Absolute generalizations are not something one bandies about casually. Indeed, those who mistake my comments for absolute generalizations are clearly guilty of the sin of vacuity and/or stupidity.

However, I am a generous and forgiving chap who loves taking the wind out of the sails of his adversaries. After all, why blame on malevolence that which could just be incompetence or ignorance?

Therefore, I magnanimously forgive my detractors(*gestures in an expansive flourish whose benevolence seems to encompass all of creation*) and ride triumphantly into the sunset.

*DRUM ROLLS ALONG WITH ASSORTED FANFARE*

Tally ho, chaps!

Monday, December 05, 2005

Can you enhance it?

One of the staples of a Hollywood movie involving law enforcement or something along those lines is a scene involving a bunch of people crowded around a computer monitor, looking at some kind of image - for example, a picture of a car racing away into the distance.

Some guy tells the chap with the keyboard - "Can you enhance/zoom in on this?" - pointing at the license plate.

Now at this point, some weird stuff happens. What we would expect is that the guy will draw a little rectangle around the area and blow it up. Instead, you hear some furious typing sounds, and a large rectangle appears, and shrinks down until it fits perfectly over the thing the first dude pointed out. Then it expands, usually accompanied by more furious typing.

My question is - What the hell is the guy typing? How on earth did he tell this miracle application where the area of interest was? In 99% of the flicks I've seen, there's no sign of a grid or any other form of coordinate system. He isn't even moving it with the keyboard - it just sort of appears at some random point on the screen and then helpfully shrinks down to just the right spot. Weird...

Even more interesting is that no one ever seems to say "Sure I can zoom in, but it's no good, because the camera never captured that detail in the first place. You'd just see a weird blurry hodgepodge of colours." Seriously, I doubt that even a really good interpolation algorithm is going to be able to make sense of the little squiggles that constitute the contents of a license plate.

And of course, there's that thing where they zoom into some tiny reflective surface and see what was going on reflected there...

What kind of magic algorithm do these chaps use to enhance everything?

Oh, and the reason this blog post turned up is because Image Processing is the next exam on Thursday. Off I go now to grok the frequency domain and image enhancement using the Fourier transform.

Sunday, December 04, 2005

Intelligent Design

The sheer idiocy of the 'Intelligent Design' brigade is the ultimate proof of the existence of God. After all, to continue trumpeting such nonsense in the face of overwhelming evidence requires a level of stupidity and self-deception that could only have arisen through divine intervention.

Thursday, December 01, 2005

Write Things: Two papers down and so am I!

Write Things: Two papers down and so am I!

Looks like I'm on a roll - this is yet another trackback. As always, go read the post first. Like most things Mihir, it's good for a laugh. This is a sort of point-by-point reply, so you might wanna keep it open in another window - or tab if you're a more enlightened individual.

2 papers in three days? Ha - our smallest gap between papers is 3 days! *Laughs uproariously*. Of course, that just means that you forget everything on the last day and have to study like crazy all over again.

Muggus: My class has the ultimate muggu - the living tape recorder without a fast-forward button. Knows the contents of every set of notes and most textbooks word for word. Has very little idea what they mean, but seems to survive on word-association alone. I know because he once explained something(branch prediction in the Pentium?) to a group of people, who didn't get a word. When asked to explain better, he proceeded to say the whole thing again, just more slowly...

Eventually I butted in and gave the unfortunate chaps a translation of what he said in simple English. Really simple English. He was quoting from an American author, so naturally the nitwits couldn't understand it. Sheesh. After at least 12 bloody years of education in English, they still can't understand the language. It's enough to make an atheist take up religion, because this sort of stupidity absolutely requires divine intervention...

And then the joke of the century - our muggu comes to me and says "What book did you get that from? Let me know because I haven't understood it either."

I would have told him the truth, but I was too busy ROTFL. Lost it a little more when I realised that there are actually people who consider conversation with me equivalent to reading a sensible textbook. The only guy who uses my kind of language is the one who doesn't know what it means. Go figure...

Scholarly type saying "Ok paper": Ladies(?) and gentlemen, please refer to my previous blog post on how writing a genetic algorithms framework netted me 10 marks without any particular studying on my part.

Well what do you know - I seem to be the real McCoy. And I'm modest, too. :)

*Red Alert - Sensors detect off topic disjointed Trekkie nonsense ahead*

The *real* Dr. McCoy, Star Trek : "Dammit Jim, I'm a doctor, not an engineer!"

More likely : "He's dead, Jim."

Now the Star Trek engineer was Scotty - the miracle worker. The typical conversation between him and Captain Kirk went something like this:

Kirk: "Mr. Scott, how long until you can get our engines operational, supercharge our phaser batteries, recalibrate the transporters, and invent a fancy weapon to defeat the Klingons?"

Scotty: "At least two weeks, sir."

Kirk: "You've got twenty minutes."

Scotty: "Aye sir."

Needless to say, he then proceeds to do all of the above, also cramming in a crawl in the maintenance tubes and some fancy jiggling with the controls of the transporter. Grumbles about it all the way through, and gets drunk on Scotch(a little cliched, eh?) at the end.

Every MU engineer understands this life, because we perform similar miracles at the end of every semester while submitting our term work files, during vivas, and finally during exams.

It seems entirely possible that Scotty is a graduate of MU's engineering program three centuries hence. All the signs seem to point that way. Mind you, I'm still a little wary of anyone who refers to a warp core as 'ma wee bairns'...

*Stand down Red Alert*

Girl saying 'Bad paper' whilst giggling and trying to look cute: We'd appreciate a few more of these around. Engineering is bad enough with all the babes off in less demanding streams. After four years of this crap, you begin to wonder if vacuous airheaded bimbos are more interesting than engineering females, who are often equally vacuous and rarely have the redeeming qualities of the former category. Plus they think they have some engineering skills...

Yeah, gender stereotyping. Mea culpa. Four years of MU engineering does that to you. Besides, it's not like most guys are any better. It's just that you tend to find techies among them more easily. For some reason, most girls in engineering lack true passion for the subject. Possible reason: they're only in engineering because it's the traditional punishment for scoring high marks in the 12th, and they didn't go into medicine.

Interesting definition of a muggu at the end of the post. Reminds me of one of my favourite insults - "Even if we doubled his IQ, he'd still be dumber than a flea with a learning disability."

Wednesday, November 30, 2005

Daily Blogs!: Thinking of the Abstract

Daily Blogs!: Thinking of the Abstract This is a trackback to one of Thite's blogs. It's about an essay he wrote in the tenth standard, about abstractions. Go read it first to grok the context of this post.

This is a pretty good piece of writing for a tenth grader. I don't think I ever came close to writing anything like this back then - just the usual tripe they saddled us with in school. As with many things, whatever little ability I have with the written word seemingly sprang into being like Athena springing fully grown from the head of Zeus. I can't remember ever actually practicing or anything...

This may have had something to do with the fact that I never really wrote anything for the hell of it back then. :)

*BEGIN PEDANTIC SPIEL*

Er, one doesn't think *of* the abstract, but rather *in* the abstract - hence the phrase 'thinking in the abstract' . Inconsistent? Not if you're Spanish - AFAIK they always say pensar en rather than pensar de, which would be the direct English translation...

I suspect the real reason for this confusion is that a fifteen year old Thite didn't appreciate the distinction between the words 'abstract' and 'abstraction'. A little creative substitution will confirm this hypothesis.

*END PEDANTIC SPIEL*

"Where two abstracts meet we find physical existence. One man can alone think of an abstract idea. But then he himself cannot imagine it physically. Add another person with the same idea. Let them debate on it. Let them decide. And physical presence will originate."
I beg to differ. Two people debating on complex numbers will not give them any physical presence, since they aren't properly isomorphic to real world entities. Unless you count their weird quantum-mechanical uses to represent probabilities, which on quantum scales have both magnitude and direction, and are pretty abstract themselves...

What you think is *not* reality - that's independent of your image of the world. It's pretty obvious that you can't hold an exact model of the universe in your head - too much complexity. (Remember H2G2's Total Perspective Vortex?) So you make do with a little approximation, something close enough to get you across the road without being run over.

Q: Why did the chicken cross the road?
A: Because Nadeem was using him as a lame example to support some dumb idea in a blog post.
This business of 'your mind creates reality' pisses me off no end. Consciousness does not manipulate the universe - at least not at the macroscopic level we inhabit. And for those about to invoke quantum mechanics, be warned that a camera(or something similar) can collapse wave functions too. Go figure.

(If you don't get the wave function part, forget it. That bit wasn't addressed to you anyway.)

Stuff like this reminds me of those New Age dopes who go around talking about 'energy' and such stuff. For Einstein's sake people, get it through your heads that energy isn't this glowing thingy that keeps moving all around us. You wanna see that, gawk at a neon light or something. And enough with the 'positive energy' stupidity. The adjectives you can stick before the word 'energy' are words like 'mechanical', 'kinetic', 'electrical', and so forth. Even 'potential', though that's slightly deeper. Physicists and others who get the context can get away with using the term 'potential'. Those who don't should stick to saying 'mechanical potential energy' or 'electrical potential energy'.

Human beings often grab at an idea for the reason expressed in the sentence 'Oooh - shiny!'.

The reason so many people buy the 'energy' crap is because it sounds semi-scientific and has weird(but cool sounding) mystical connotations, with the usual dose of omnipresence that appeals to their theistic inclinations. That's a very devilish meme to fight.

Enough with the ranting now. Here, look at this disclaimer instead.

Disclaimer: Keep in mind that the views expressed in the essay are those of Hrishikesh Thite circa five years ago. Presumably he's older and wiser now. Eh, Thite? :)

The weird ending was probably just an attempt at coming up with a grandiose climax to get more marks. God knows I've written plenty of weird but stylish conclusions with only tenuous connections to the subject at hand. I've probably done it on this blog too, but at least here I preface such specimens with the usual 'incoherent and disconnected rantings' tag, or words to that effect. There's no excuse for doing that in an essay, but dumb tenth graders don't really know any better.

Some teachers don't know any better either. I remember consistently scoring incredible marks in ninth standard English because the teacher apparently appreciated my style. Unfortunately my tenth standard teacher didn't appreciate it that much, being of a more staid school of thought. Sad, but at least she could appreciate really good English. A lot of the people who correct English papers for the SSC board exams aren't even English teachers, or are bad English teachers. My school(which rocked) never had bad teachers(seems so strange now), so I never ran into that problem there, but it's still a fact that they are more crappy English teachers than good ones. In fact, there are occasionally ads in the paper for a certain big coaching class of the slave-driver persuasion, and they write in this really hilarious English. Typical Indian gaffes are literally dripping from their ads. And to top it off, one of their founders apparently teaches English, and there's usually a message from him that takes the cake.

Looks like I've been ranting again. Sigh...

For those who haven't figured it out yet, this entire post was mostly an excuse to avoid studying Advanced Microprocessors. Just a bit of the usual stretch-your-fingers blogging I do occasionally.

Tuesday, November 29, 2005

One down

So that's it for Intelligent Systems. Pretty okay exam, except for the scary first question asking us to design an expert system for software testing. Naturally, most people wrote stuff about all sorts of related things, while dancing around/diverting attention from the main question. Makes you wonder how many of our politicians are engineers...:)

Incredibly, they actually asked us a question on genetic algorithms. I hadn't studied a word about it, but that didn't make a difference, since I wrote a little genetic algorithms framework in Java over a year ago, and then ported it to Python to boot. I have a feeling that I and Hrishikesh were the only people who weren't caught on the wrong foot by it.

Sagar blogs again! It's a miracle...

He actually plans to do it again today. That'll be another miracle.

I'm beginning to wonder if I should produce one blog post after every exam. With the nice long holidays, I shouldn't have any trouble fitting it in with the usual punishing schedule of studies.

Off I go to fight with my sister for a bit...

Monday, November 28, 2005

Something wicked this way comes...

And that thing is the exams. Yep, the moment of truth has arrived - or will in about 10 hours.

Every semester, I'm reminded of one word at exam time - Kralizec, the Typhoon Struggle. In the world of Dune, the Fremen use this word to mean the cataclysmic battle at the end of the universe. It's never really very clear who exactly they expect to fight, but a myth is a myth is a myth...

In any case, comparing Mumbai University Engineering exams to the Typhoon Struggle is like comparing the Battle of the Alamo to a minor roadside altercation. And no, I haven't messed up the order. It's the sort of thing a hell-and-damnation type of preacher cooks up to illustrate the tortures of hell to his unbelieving flock. Abandon all hope, ye who enter here.

Once more unto the breach...

Sunday, November 27, 2005

Charles Babbage on dumbasses

"On two occasions I have been asked[by members of Parliament], 'Pray, Mr. Babbage, if you put into the machine wrong figures, will the right answers come out?' I am not able to rightly apprehend the kind of confusion of ideas that could provoke such a question."
10/10 for the way he describes that weird feeling of incredulity you get when techno-dumbos say something stupid. The ancients always did have a knack for subtlety.

This just came up because I was doing First Order Predicate Logic, and remembered the old 'Falsity implies anything' business. In other words, the right answers may or may not come out. It depends on the calculation you happen to be making. False premises can imply true conclusions, or false ones. That's why you should always be sure of the veracity of your basic assumptions.

Check out these links:
  1. Wikipedia on Babbage.
  2. Computer Stupidities.
Back to studies again...

Yet another uninspired blog post

So the exams are just two days away now - the first paper is Intelligent Systems on Tuesday. While we do have really long intervals between exams(3 and 4 days in each case), it looks like I'm going to have to do some tremendously intensive studying a la standard 8 and 9, when I usually studied about a week before the exams and always did unreasonably well. There was a guy I knew years ago who was always really pissed off about this sort of thing, since he studied as hard as he could and still had his ass kicked by unworthy nuts like me with no preparation at all.

I just hope the old magic is still alive and kicking - I've been so incredibly busy sending off apps that I've barely touched anything. I don't think I've ever been this underprepared for an exam - ever. Thankfully I have all the studying I did for the vivas to fall back on. Hail Mumbai University - at least they had one good idea.

Oh yeah - the apps are all gone now. So that's finally over.

There's a pigeon nesting outside my kitchen window. There's a grill there, on which my mom, who has something of a green thumb, has arranged a number of flowerpots with a pretty incredible variety of plants. Ditto for the living room window, which looks even better. I have a sneaking suspicion that all this new foliage is the reason there seem to be more birds around here nowadays.

Anyway, the aforementioned Mrs. Pigeon has taken up residence in an empty flowerpot. She deposited two eggs(my mom claims there were three) there a few days ago. Unfortunately, the depredations of crows and an eagle have left her with just one egg. Sad.

Just went over to the kitchen to take a look. Mrs. Pigeon was sitting on the eggs, though she seemed somewhat sleepy - her eyes were closed and she didn't notice the first few seconds of my visit. Sleepless nights?

When she did see me(through the window), she did something I'd only read about- she puffed up to almost twice her normal size! I didn't even know pigeons could do that, but she does seem to have received extreme provocation. Woe to any would-be egg eaters - they're going to have to fight one very pissed off mother. I wonder if she would be willing to take on the eagle my mom saw. It probably wouldn't be much of a contest - eagles are bigger, stronger, not to mention bred to kill.

Still, I've given up on trying to figure out the weird powers that mothers have. I'm pretty sure most people have received the "It's going to rain. Take your umbrella along" prediction from their mothers, on a completely cloudless day. Needless to say, we all disregard this advice and are duly soaked.

Hmmm, maybe there's a reason we say Mother Earth and Mother Nature...

Tuesday, November 22, 2005

Of hidebound reptilian humanoids, otherwise known as bureaucrats

Just when you begin to feel better disposed towards the bureaucracy, some specimen of that wretched caste comes along and leaves you with the conviction that the entire race of bureaucrats are the bastard offspring of an unholy ménage à trois involving a human, a reptile of some sort, and some species of dung beetle.

Bureaucrats. Bah humbug.

Sunday, November 20, 2005

News and stuff

What follows is a long-winded, idiosyncratically arranged and rather disjointed set of rantings, descriptions, commentary, and the other sort of useless writing that can usually be found on my blog. I'm not exactly sure why I'm blogging about all this stuff, though. Sometimes it just feels good to have prose flow from your mind, through your fingers into RAM/virtual memory, and eventually onto the Web.

Sagar and Thite had the CAT today. For those who don't know, that's one of the world's deadliest entrance exams, used for getting into the IIMs and other fancy management institutes. Even I find it a bit scary, and I actually cleared the IIT-JEE...Anyway, not being a management type(at least not yet), I didn't have to suffer the tension of competing for about 2000 seats with about 175000 applicants. That's right - 175000. After all, India accounts for about a sixth of the world's population. Big numbers like that are inevitable. They also account for the inertia that prevents things from being changed easily in most walks of life. Add to that a self-satisfied entrenched bureaucracy, and there's enough material to rant about for a year or so. This I choose not to do at the moment.

In any event, Thite and Sagar both had a bit of a shock when they were confronted with 90 questions rather than the usual 150. Why is this bad, you ask? For the simple reason that the CAT isn't meant to be finished in the time they give you - they've built it so that completing everything is impossible. The real key is to do as many as possible in the time you have, so you need not just skill at solving, but skill at choosing too. Thus when you have fewer questions, choice is no longer as big a factor, and because solving these things is so terribly difficult, most people are deprived of their chance to score. Presumably this year they're looking for people with more skill than luck.

Next up, sis and Mom are leaving for Bangalore tonight. My cousin's wedding reception is being held there. I would have gone along, but as I mentioned in a previous post, I'm stuck here. Sana, if you're reading this, a gazillion apologies - I really wanted to make it. The universe is just giving me a raw deal. I say we chuck the current administration out of office, since they don't seem to be doing such a great job anyway. Naturally, I am willing to step in graciously to accept the burden of cosmic power. And I've always wanted to stand on the Empire State, with lightning flashing in the background, and thunder modulating itself into the words "I am the Almighty Silicon God! My will be done!"

It also helps that since my view of God is practically deistic(God, the do-nothing king), I can just sit back and leave the universe to run itself for all eternity. Rather boring, of course, but then this measly universe is hardly worth my divine attention...Perhaps I'll make a few more of them, more suited to my tastes. Might also take Sundays off, a tradition the present incumbent established quite clearly in the book of Genesis :) ...Maybe it's a union rule, and if not, it ought to be.

Ran into an interesting MSDN article by James McCaffrey on generating permutations using these weird things called factoradics. This is getting really interesting, so I think I'll go take a closer look at it, and then write my own Java implementation. Maybe even port it to Python after that - after all, I did use Python to generate permutations even before I learnt anything about the traditional backtracking algorithm. That was rather icky code, too.

Hmmm, this looks like the second time this week I've referred to my earlier code as ugly/icky/incompetent. Reminds me of Paul Graham pointing out the difference between the way coders learn to code, and physicists or mathematicians learn to do physics or maths. The physics guys start out by doing good stuff(i.e - solving problem sets) and eventually get original. On the other hand, coders start original(the aforementioned ugly code) and get good. At least that's what I remember of his comment.

So it isn't that surprising that my early attempts at coding stuff were ugly. It's like trying to prove the Theorem of Pythagoras without knowing much geometry. You might just come up with a proof, but odds are it's gonna be anything but elegant.

Saturday, November 19, 2005

And I rise again!

Just finished off SRM 272 and had a nice healthy rating increase - a cool 70 points from 1266 to 1336! Now after they finish the usual ratings rerun after removing cheaters and all that, I'm hoping that I end up with just one more point. That way I can brag that I am officially '1337'.

PS: If you can't figure that out, try reading the numbers as letters. If you still don't get it, try saying the word out loud. And if you still don't get it, read this article at Wikipedia.

Friday, November 18, 2005

Of binary searches and undefined behaviour

The java.util.Arrays class provides a little binarySearch() function. I was reading through it's documentation, and I came across this interesting line:
If the array contains multiple elements with the specified value, there is no guarantee which one will be found.
If you ask me, this is a painful restriction. Binary search is pretty commonly used, and it's not that difficult to think up a version of binary search that finds either the first or the last of the multiple occurrences. I'm a bit surprised that they didn't do that - it's not a very large piece of code.

Anyway, it turns out that you can use a binary search to pull off something like this, with practically no difference in code size. In fact, it actually seems smaller than the conventional implementation. The difference is presumably that you only check for equality right at the end, when the interval is just one unit in size.

Here's the stuff I hacked up. I had a slightly weirder version up a while ago, but it didn't work for certain inputs. This one seems to be perfect.

// Returns 0-based index of the key if it exists, -1 if it's not in the list.
public static int binarySearch(int[] list, int key)
{
int n = list.length;
int lo = -1, hi = n-1;
while(hi-lo > 1)
{
int mid = (hi+lo)/2;
if(list[mid] < key)
lo = mid;
else hi = mid;
}
return list[hi] == key ? hi: -1;
}

Suggestions and challenge cases are welcome. Feel free to try and break this code.

Side issue: The Blogger edit window goes nuts whenever I try to edit this post. Something about the code is conflicting with the HTML or something. My guess is the way HTML encodes '<' and other signs('&lt' anyone?) . Any ideas?

The Law of Leaky Abstractions - Joel on Software

This article is a must-read. It's about abstractions, how they occasionally slip('break' as Joel puts it) and what that means in actual development.

Condensed version: All non-trivial abstractions are a bit leaky. Thus they save us time working, but not time learning, since at some point the abstraction slips and you have to look below it to figure out what's going on.

There's also an interesting example at the end. I quote:
And when you need to hire a programmer to do mostly VB programming, it's not good enough to hire a VB programmer, because they will get completely stuck in tar every time the VB abstraction leaks.
No wonder I dislike VB. Programming is heavily dependent on creating, understanding and using abstractions. After a few years of this, it's hardly surprising that VB sets off alarms in my head. On some subconscious level, my mind can see the leakiness of the VB abstraction, and it is an ugly leakiness. Far uglier than the C++ string class or the inconsistent query execution times of SQL.

Reading this essay has actually made me able to articulate something that I've been trying to say for a long time. It probably doesn't sound as clear as it is in my head, but that's the essential dilemma of communication, eh? Here goes...

Never completely trust abstractions. Not until you understand the stuff they abstract, and just how and where they leak. And even then, stay on your guard.

Saving the Net: How to Keep the Carriers from Flushing the Net Down the Tubes | Linux Journal

Saving the Net: How to Keep the Carriers from Flushing the Net Down the Tubes | Linux Journal

Definitely one of the finest and most insightful essays I have seen in a long time. Doc Searls does an incredible job of explaining just why network carriers and content industries cannot ever be allowed to control the Internet and its content. Secondly, his characterization of the entire debate as a battle of competing metaphors is so utterly penetrating that I've been left completely speechless. Simply brilliant.

Why is it that legislators always respond to things by adding more laws? Most of the problems with the world's legal systems stem from the fact that there are too many laws, not too few. Government power should always be painfully limited. History shows that eventually they just end up interfering with every aspect of our lives, when it is we who should be breathing down their necks, watching them like hawks, just waiting for an opportunity to toss them out of office. Kill corruption by making it so tremendously difficult that they die of heart attacks for fear of being discovered. Natural selection at its best.

Sadly, no such system has ever been put into practice as far as I know. If it ever is, I recommend basing it on the following principle - aside from the fundamental rights, no law should be valid for more than 10 years. After that, it should be unceremoniously thrown out unless someone can make a clear case for its continued existence at that point in time, at which point it should be rewritten before being passed again.

Why is this good? Because the sheer pain of having to redo the same stuff over and over again will force the lawmakers to pare the law books down to a very small core set of laws that can be effectively dealt with. Naturally, this would require a total revamping of the judicial and legal systems, so I don't foresee it happening in any currently existing society. Perhaps in a post-Singularity society, something like this might be implemented from the time of conception. It might just take posthuman minds to pull it off.

And while they're at it, they might consider simplifying the tax code...

Wednesday, November 16, 2005

Er...

Clogged sinuses. Very annoying.

(Blows nose loudly. No use. Still completely blocked.)

One of the downsides of being me is the useless sinuses you end up with. Once every few weeks, my nose decides to withdraw from full duty and proceeds to cut my air supply in half. Rather considerate, that - leaving me half a nostril free each time. Still bloody annoying.

Still, after 10 years, you get used to it. I've got to be the only guy alive who carries two handkerchiefs - one for the nose, and the other for the sweat that's inevitable in Mumbai's humid climate...

What you don't get used to is those cases that occur once in a blue moon, when your sinuses go AWOL, and your nose effectively retires into private life. On days like this(or nights, more often - for some reason it really comes into its own after dark) the only recourse is to walk around with a hanky, blowing your nose at regular intervals and hoping that it will fix itself. Nose drops help, but you tend to develop a dependence on those - natural resolution of the problem becomes next to impossible.

What bugs me is that I get very irritable when these cases occur. When you're making pathetic attempts to fix your nasal equipment, your Anti-Irritation ShieldTM has a little too much to deal with. It's amazing how much irritating stuff we put up with every day without a second thought. Far more amazing is how people you're very comfortable with - close friends, family - do and say irritating stuff all day long. We just don't notice. Man, can we adapt!

I've always been irritated by people showing pointless/unjustified irritation/anger. This weird response is amplified by the aforementioned state of irritability on my part. I have this urge to snap at people. Thankfully, my iron self-control usually wins out, and I remove myself from potentially annoying situations without killing anyone...The only person I end up snapping at is my sister, but since she snaps at me day and night, for no greater crime than my existence, I see no reason to miss getting in an occasional jab in this thoroughly one-sided contest. *Sigh*, sibling rivalry...

There's a subset of this 'Get annoyed/angry for stupid reasons' group that deserves special mention. These are the insensitive idiots who get annoyed when you're blowing your nose or trying to clear your throat(this is because throat congestion is almost inevitable in the bad cases). The worst of these go so far as to say: "Why don't you just do it once and for all?" in a very condescending voice, like someone who has been doing you a great favour by tolerating you all this time. For these guys, come the Revolution, I shall roast them over a slow fire and say "Why don't you just burn up all at once?"

Enough with that rant. Back to more mundane matters. Pause for a moment while I blow my nose to symbolically end this section of the post, full of venom, bitterness and mucus as it is...

Mom and sis are still in Lucknow at my cousin's wedding. Dad got back at the beginning of the week. Sis and Mom are due on the 18th or so, and then they'll be off again to the reception in Bangalore a couple of days later. This time I was planning to go along for about 5 days, but since I haven't been able to study much with all these grad school applications going out, I've decided to opt out and cram maniacally...Huge disappointment for a lot of people who were expecting to see me there. Huge disappointment for me - I actually enjoy these gatherings, crowded though they are...

Time now to try steam inhalation - maybe that will help unclog my sinuses. On the other hand, there's a small problem with that idea.

Yep. That's right. I can't inhale anymore.

Monday, October 24, 2005

Blogging with Writely

Ladies and gentlemen, this blog post is brought to you courtesy of http://www.writely.com. For those of you too lazy to click on the link, Writely is a web based word processor that allows you to publish stuff online and collaborate on document creation. I had heard about this earlier in the TopCoder forums, because snewman - one of the best red coders at TC - actually works there. It was forgotten all this while, until we heard that snewman was going to be missing the TopCoder Open onsite finals. It turns out that the blogosphere suddenly discovered Writely, and users began to register in droves, forcing snewman to give up on the TCO and scale out their servers. Good thing he did too - they got slashdotted, and we all know what that does to your traffic...

I decided to register since I figured we might find this useful next semester while writing our project report. And naturally, when I noticed that they supported posting to Blogger, I decided to give it a whirl. This is still a slightly experimental service, so let's see how it works out. At the very least, I can give them a bug report.

Minor update - we had our Digital Signal Processing vivas, and things went much better than I expected. The external was one of those chaps who keeps on smiling at you - a few minutes into the viva I noticed that the rest of the viva group(3 other guys) all had equally imbecilic smiles plastered on their faces as well. Thankfully, I was able to resist this, though my control did falter on a few occasions. My finest hour was when he finally asked us what convolution really was. This was something I'd been trying to figure out all semester, so I was able to tell him without too many problems - and his real question turned out to be "Why do you have to fold one of the signals?" This was straight out of the derivation, which apparently only I remembered, plus a couple of properties of linear time-invariant systems...After that, he finished it off with a couple of questions about details that no one really remembers, and that was that. As vivas go, it was pretty good.

The last viva is on Wednesday - Image Processing, to be precise. After that we just have the project presentation the next day, which is mostly a waste of time - I'll be astonished if there's anyone capable of asking perceptive questions - especially after they suffer through the humdrum average projects that appear every year with minor variations.

I think I'll take a nap now. If you're seeing this post, then obviously Writely's interface with Blogger is working, so here goes...

Sunday, October 23, 2005

The Crow at the Window

As I write this, a large specimen of the Corvus splendens persuasion sits outside my window, on the edge of the grill. He seems to be preening his feathers - while this is an activity traditionally associated with birds, I'd never expected to see a crow do it. Watching a crow preen itself is not unlike watching a guy pluck his eyebrows - you're left with a vague impression of ludicrous incongruity. I suppose the harsh caw of the crow and its complete lack of fear of the average urban Homo sapiens sapiens gives it a rather macho aura. Yes, even when it's female.

Disclaimer: I have never seen any guys plucking their eyebrows, but I have it from reliable authority that such individuals apparently do exist. Not that there's anything wrong with it. It just seems weird. Metrosexuality, anyone?

The aforementioned crow seems to have earmarked that particular area of the grill as his own personal fiefdom. He seems to spend most of his day sitting there, presumably enjoying the shade that his less fortunate fellows are busy searching for. My sister claims that he's been coming here for weeks. Apparently his loud disposition didn't find favour with her during her exams about 2 weeks ago.

Just managed to scare him off by waving my hand at him. Clearly he's not accustomed to me being at the window, so he made a run(flight?) for it the second I raised my arm. Otherwise, he strongly resists any attempts made by the rest of my family to evict him from his post.

My mom has strung a clothesline along the grill, and every so often she turns up and hangs some clothes there. Naturally, he's grown so accustomed to her presence that she could probably juggle five smooth stones in his presence and provoke nothing more than a raised eyebrow. Of course, I'm not entirely sure he has eyebrows...Presumably he'd raise a perfectly preened feather.

My dad often comes and takes a look out the window. He doesn't disturb the crow, and the crow doesn't seem to disturb him. They seem to exist in perfect equilibrium.

My sister, of course, is the only one who actively tries to scare him off. Being a perceptive fellow, Sir Crow realizes that she's probably more scared of him than he is of her(N.B: This is a girl who fears butterflies.). Consequently, he treats her every attempt with exquisite disdain. Her terrified shoo's arouse no interest in him, and when she shakes the clothesline, he doesn't even deign to look at her. In short, in his feudal view of the world, she is a mere peasant, unworthy of his regal attention.

While I wrote the last paragraph, he returned, sat still for a bit, jumped to another section of the grill, cawed at something, and left again. He then proceeded to repeat this routine three more times, with minor variations. So this perch is something of a rest stop for him.

As far as Sir Crow is concerned, I seem to be the only unknown factor in this equation. If I poke my hand out the window, he goes into a crouch. Relaxes the second I pull it back in. He still doesn't look at me directly. Fantastic peripheral vision indeed.

In a couple of days, he'll probably have downgraded me to 'Mere Peasant/Harmless Background Object' status. The second bit is owing to my computer's position next to the window. It's probably my imagination, but his last crouch was no longer as tense as the last. This is a smart bird if there ever was one. If there's anything to this reincarnation business, I'm coming back as a crow.

Time for me to get back to Digital Signal Processing. Fourier Transform, here I come...

Oh look, he's back again.

Thursday, October 20, 2005

The Joy of Curmudgeonry

It's very rare that you run into a blog that combines devastating intellectual insight, incredible prose style, and humour of the highest order with such consummate ease as The Joy of Curmudgeonry. I ran into it by sheer accident today, but already it stands proudly at the head of my Firefox LiveBookmarks list.

The author is a British bloke with a razor sharp mind, and an even sharper pen(or should I say, keyboard?). His insightful manner of exposing idiocy and intellectual dishonesty with such supreme disdain for the offending idiot is nothing short of incredible.

As an example, check out this post. Truly fantastic rebuttal to an argument that no sane person should fall for. Of course, that doesn't stop many of them from doing so anyway.

Plumb tuckered out

I'm dead tired. For those who don't know, that's what the title of this post means. It also corresponds to a certain state(that of being terribly fatigued) of a certain entity(yours truly) in reality.

That's right, reality. The place where you're hopefully living. If not, just go on reading. I'm not terribly bothered about your mental state anyway. What I am bothered about is my physical state.

We had vivas today morning. They were pretty okay, as vivas go. Seems the teacher decided to go easy on us. Then we went off to make our last submission, and he just asked us to hand it over, leaving us free to go home.

So why do I feel half-dead? It's not like we had a terribly hectic day.

Provisional theory: Lack of sleep, once again. Last night, in a fit of inspiration(and boredom, brought about by studying a memory-intensive subject) I ended up solving the last SRM's div 1 500. Lots of fun and all that, but the upshot of it was that I ended up sleeping at around 1:15 AM. Painful if you have to get up less than six hours later. Even more painful if you happen to be one of those guys who prefers to sleep for about ten hours.

That's right. I'm one of them. The subset of humanity who would like to spend 41.66% of their lives in slumber, as opposed to the others who are happy with merely 33.33%.

Sagar just dropped a bombshell about our project. Looks like we'll have to waste some more time on pointless work.

The ritual TC update: Did the 250 rather slow this time. Could have been much faster. Had a total rating change of 0 points. That's Z-E-R-O. Doesn't happen very often, but it's better than a rating drop.

Have to get back to the MS apping - but time is short. Life sucks.

We now have a plan of action for getting the project report done. Mostly it involves me working like a dog tonight. Why? The dual curse of being both technically competent and a moderately good writer. Worse, I'll probably have to create a mockup of our project GUI to boot.

Working like a dog? Just how much work do dogs do anyway? It's being human that causes all the problems.

Think I'll take a shower before I start. Maybe that'll freshen me up a bit.

Current MSN tagline: The final straw that turned the camel into a paraplegic.

That's all for this post. Back to work.

PS: In case you're wondering about the new writing style, don't. It's probably not permanent. Just a passing phase born of fatigue and boredom.

Monday, October 17, 2005

Not in the mood to think up a title...

Looks like I haven't blogged for quite a bit. Apologies to people who missed my poor excuse for a blog, but I was busy and bugged, and therefore not very interested in coming up with stuff to post up here. Come to think of it, I'm still busy, and not quite done with being bugged either, so I think I'd better get back to writing useless assignments and journals soon.

Brief update: Two vivas are done, three more coming up, and then a little more work while we finish off our project report. Then I can finally rest for a while...

I might blog in the days to come, but then again, I might not. In short, I'm in a very ambivalent mood. Or not.

Back to work. *Sigh*...

Monday, September 26, 2005

Life...no, literally...

In the last post, I complained about a bit about losing my edge - that weird drive to think about interesting stuff, and code stuff, and so on. Thankfully, it turned out to be a passing phase - the old me returned on Saturday, and life was suddenly a lot better...

About the title of this post - it's inspired by John Conway's incredible Game of Life. Here's the story...

While chilling out after a long day of writing assignments, I decided to use Firefox's cool StumbleUpon extension to find me something interesting to read. I clicked Stumble! and ended up here. This piqued my interest, because Hrishikesh(Kolhatkar, not Thite) had asked me to join him in writing an implementation of the Game, and since I'd always wanted to do this, I had agreed with a pretty fair amount of enthusiasm.

If you've clicked on the link, you can see the little rules at the bottom. They looked extremely simple, and going on to this page convinced me that it was a pretty trivial programming task. Unable to resist, I coded it up, and got it working in less than half an hour - and even that was because of a dumb bug I'd somehow introduced earlier. In fact, it would make a pretty good Div 1 300, or perhaps a Div 2 850, if there've ever been any of those...

Hrishikesh was pretty surprised when he found out - he's offered to rustle up a GUI, so I'll leave that to him for the time being. Perhaps I'll post a code skeleton up at Code Monkeys. It's really pretty simple - nothing fancy at all algorithmically, and that's precisely where the fun begins.

You see, by just following a few really simple rules, and picking an initial pattern, you can make the Game generate nice evolving systems of incredible complexity, considering how little you put in. In fact, the system is so damn fantastic because it's a Universal Turing Machine - which basically means that it can achieve the same level of computation as the machine you're reading this blog on right now...In fancy terms, it can compute any algorithmically computable function...

Life is actually a kind of cellular automaton, which are pretty cool things that I've read about in various places, but never in any real detail. This has piqued my interest, though, so I'll probably follow it up. The last place I remember reading about it was Artifical Life by Danny Hillis. I've been trying to get hold of Stephen Wolfram's A New Kind of Science for a while now...

And now to bed, for about five hours of sleep and a boring day tomorrow. Of course, there is the sponsored TC SRM in the evening, and Verisign India is gonna come into the chat room before the match, so it might be fun after all. Sadly I'm now in div 1, so no chance of winning any money, unless some kind of miracle occurs...

And now I lay me down to sleep...on second thought, forget it - why do I bother with these classical allusions anyway?

Friday, September 23, 2005

So much to do...

If you've read a few of my recent blogs, you know I often begin by complaining about how infrequently I get to blog, and so on...Well, as often happens, it's become old and cliched, so I won't do it this time. Consider it all said and let me get on with it...

Strangely enough, my life seems rather uneventful as far as blogworthy incidents go. The only thing really worth mentioning is that I feel a weird laziness these days - I don't want to code, I don't want to think. To my incredible astonishment, I can actually write assignments and journals with equanimity when in this frame of mind. I wonder if this is how normal MU students feel.

Could it be that four years of tedium have finally gotten to me? Is it because life is so uneventful aside from the pointless college routine? Or is it simply due to getting up at 6 every morning? These and other questions continue to haunt me...Well actually, in this frame of mind, they don't haunt me. That's the whole problem...

In other news, Thite is off to Gandhinagar to attend an Embedded Systems workshop at DA-IICT. Sagar is busy working his posterior off for the next SIMCAT on Sunday. Hrishikesh is coming up with algorithms to solve everything I give him so fast that he should be a red coder by all rights. Funny that's he's still gray...Of course, this may have something to do with the fact that his algorithms are either wrong or his implementations fail miserably - or the fact that he never sees the real complexity of the problem he's facing. Ah well, it takes all types...

Wonder what I'm gonna do in the SRM next week - if this trend affects the competition, I'm gonna lose my blue colour! Have to come out of the rut...

Back to the real world...

PS: Just noticed that the title doesn't seem to have anything to do with the content. Suffice it to say that there's so much work involving assignments, journals, college applications and all that, that I don't feel like complaining about it anymore. If that doesn't convey how bad it is, nothing will.

Sunday, September 11, 2005

Ho hum...

Posting after long intervals seems to have become a habit with me - it's been over 10 days since I last posted here. Here's the lowdown on what happened in the meantime, in no particular order...

Finally finished off Shaping Regions at USACO - I posted about it a while ago, if I remember correctly...What was the problem? Dumbness and no knowledge of the Java Collection classes...All I did was rewrite the code to split rectangles and switch to Vectors(All I really needed to know about java.util.* I learnt at TC...) and it worked after just 2 tries. Of course, I had made 41(!!!!) tries before this, so I was treated to the standard USACO message saying "Congratulations, your solution passed all tests. This is your submission #43 for this problem." Like I said on MSN, there's a thin line between dumbness and perseverance... On the other hand, there's that old Edison saying about 99% perspiration and 1% inspiration...Sagar and Hrishikesh - if you guys wonder how I do div 2 probs so fast(er, usually) - now you know...

Anyway, after that I was on a roll, and destroyed about 6 more problems in about 2 days and moved on to section 2.3(Shaping Regions was in 2.1). Haven't started anything yet...

Forgot to mention - USACO still uses JDK 1.3! WTF!!! I'm sick of casting things when I use collections, and being unable to use the nice little foreach construct...

Missed SRM 262 this Friday - the rains came down in force and sundered my connection to the Internet, leaving me floundering for almost 2 days. Sad...

I've been feeling a little strange since Friday - rather lethargic from a coding perspective. For some reason, I can't summon up the concentration needed to code effectively. It's not that I can't code, but I can' t seem to think properly about the stuff I'm doing. Kinda bugged - maybe I should play a game or something - but there's nothing around...

So maybe it's good that I didn't do the SRM - probably would have lost rating points if I competed in this frame of mind. As it is, someone else lost rating points and I'm now ranked 47th in the country, up one place. Cool...Hopefully I should be back to normal soon.

Got a bit of happy news yesterday - apparently Google isn't gonna be evil - those of us who qualified but missed the Online Round of the GCJ still get t-shirts! Google, you guys rock! If you guys are planning on holding another GICJ here, you can count me in...hopefully by then I'll be yellow or something - maybe I can make it onsite...I'm feeling lucky! (Pun intended...)

Finally, my aunt is arriving from England today, so there's gonna be another one of those nice family get-togethers! (Hmmm, really odd that I enjoy these things - I'm usually rather anti-social...On the other hand, if you can't relax with your family, who can you relax with?) Maybe I can play a bit of King Arthur at my cousin's place to help me get my groove back...

For now, I think I'll go kill some Covenant - Halo, here I come!

Wednesday, August 31, 2005

Yippee!!!

The last post celebrated my first successful division 1 TopCoder match - this one celebrates my breaking into the ranks of the top 50 Indian TopCoders!

Ok, so I'm still ranked 48, but still, it's cause for celebration(while it lasts)! My highest rating yet - looks like all that div 1 practice paid off. Now I'd better start practicing 500 pointers if I want to keep my 1309 rating...Next SRM is in a week, and we have a nice long weekend coming up, so...

Remarks: The div 1 550 was one cool problem! I've got an idea of how to do it, though I haven't worked out all the details yet. That's next up on the agenda, but I'll probably read CLRS for a bit - in that sort of mood right now...

Might just get that GCJ shirt after all...let's wait and see. In any case, there's always next year's TCO, TCCC, GCJ - and maybe GICJ 2(the Indian edition of the Code Jam). Hopefully I'll be good enough to give people a run for their money by then!

And with that, this overly optimistic post comes to an end...

Tuesday, August 30, 2005

Murphy strikes...

Those who've read my last post(or who know me personally) will know that I was pretty fired up about doing the 1st Online Round of the Google Code Jam. After practicing dozens of division 1 problems in the TC practice rooms, I was ready to give it one hell of a whirl. Unfortunately, fate had other ideas...

The event was scheduled for 6:30 AM out here in India, and registrations closed at 6:25. Having done several SRMs at this time, I had a good routine worked out - wake up at 6, turn on the computer, wash up, come back and register, and then compete.

Everything went fine until the "Come back and register" part. The first thing I noticed was that my broadband connection was down. Congratulations Sify, you've done it again. Heaving a sigh, I switched over to dialup, which is at least reliable, though terribly slow in comparison.

Having connected, I fired up the Arena and...everything froze. Even the good old three fingered salute failed to work. Cursing at no one in particular, I rebooted, and repeated the process.

Five exactly similar tries later, my curses were no longer that vague...

And finally, on the last try, I glanced at the clock and knew that it was a lost cause - 6:27...far too late. And once again, it hung...Now thoroughly annoyed, I turned the damn thing off, swore eternal vengeance, and went back to sleep. Was in no mood to go to college after this crap...

I've sent a message to the Code Jam group asking if I've lost the t-shirt. Would be a real shame if I did - at my level, you know you don't have a shot at the onsite event, so it's all about the t-shirt, really...

Let's see what happens - after all, I'm dealing with a company whose motto reads "Don't be evil." Google, don't let fate cheat me out of the t-shirt, please!

And before someone comments to say "Look on the bright side," the only bright side I can see is that I probably should be able to stay on in division 1 for a while now. That practice should hold me in good stead - I hope. I still have issues with advanced recursion problems...

Let's see what happens...Until then, I'll stop racking up a phone bill and go read CLRS...

PS: I have no idea what's going on, but my TC rating is now up to 1242 from 1240(which jumped from 1238)...what are the admins doing anyway? Have they found more cheaters, or what?

Saturday, August 27, 2005

News

Being the overworked individual that I am, I've been neglecting my blog for quite some time. Apparently some of my readers have taken exception to this - or so Swapneel tells me - apparently quite a few people he knows read my blog. I'm not sure what kind of crazy people read my frequent outpourings of nonsense - but as a fellow lunatic, I have to keep them happy...

First bit of news - I officially declare myself as a contender for the title of the world's sleepiest person - courtesy of our college's bad habit of starting up at 8:00 AM, and my bad habit of coding late at night...It's pretty late as I write this, but I'm in a good mood, so I'll type away...

Good mood? Where did that come from, you ask? Two things, basically:
  1. Google Code Jam - I made it through the qualification round! After competing in the next round on Tuesday morning, I'm going to get an official "Google Code Jam 2005, powered by TopCoder" t-shirt. Plus I have a 1600+ rating there, so I get to see my name in yellow...
  2. The last match at TC - I moved up to div 1 one match ago, and competed as a blue coder in today's match a few hours ago. I was a little worried, since my rating was 1214 - right on the borderline. My fears of falling back to green today were unfounded though - even with my ridiculously slow solution of the 250 and a failed 500, I still went up 24 rating points to 1238. Hope this lasts. Practice, practice...
Also got hold of 4 recos from teachers for the MS apps - should manage 2 more on Tuesday. After that I can pick and choose, or whatever...

This weekend I intend to mostly do TC practice and relax - it's been a pretty tiring week. Sleep is obviously very high on my list of priorities...next is practicing for the GCJ - I know I don't have much of a chance of being in the lucky 250 who get selected for the next round - but I'm certainly gonna give it one hell of a shot...

Maybe I'll get around to posting on Code Monkeys. Haven't thought of a topic yet, but since I'm the (unofficial) algorithms guy, I might as well talk about algorithms, and maybe drag in Python too.

Realised one important thing over the last few days, and that is that there are very few things in life that compare to the sheer pleasure of writing code. Purely subjective viewpoint, of course...

Yawn...time to sleep now. Readers, leave comments some time - it's fun to know who reads your stuff...

Friday, August 19, 2005

Just missed...

For those who don't know, I narrowly missed qualifying for the TCO. The cutoff is a rank of 150 in your problem set - and I came along at 155...Looks like I shouldn't have spent so much time testing that 250 after all...

Apparently some cheaters were removed - I had a +1 rating increase from 1185 to 1186 overnight...Sadly there weren't enough of them!

Can't blame the admins, really - even if they suspect someone of cheating, they can't go ahead and disqualify the guy unless they're very sure. After all, it's better to let the guilty go free than punish the innocent...

Upshot: niphoton is the only MU coder to qualify. Our two blues have gone green again, and paradoxically, I'm the only guy whose rating increased...

The Monday SRM is gonna give me a good shot at div 1. The challenge isn't getting there, though, but staying there...

That's it for the TCO experience - on to deeper reflections...

The good thing about the TCO was that we ended up with 5 new practice rooms all at once. Working through them is pretty good practice, and I've learnt a few interesting lessons.

In a timed event like an SRM, usually you don't want to waste time thinking about the *best* way to do a problem - most of the time you can be content with the best thing that quickly comes to mind and works. I'd always thought that I could come up with something pretty quickly, and even though it wouldn't win any prizes for elegance, it would still fetch points...

Misjudgement. After I looked through a few of the solutions in Java by the reds, I realized that I hadn't picked up on the fastest ways of doing the little tasks that usually make up a big algorithm. For example, consider the matter of putting strings in a String[] array into a HashSet:

My code:
  HashSet hs = new HashSet();
for(String s: arr)
hs.add(s);

Red code:
  HashSet hs = new HashSet(Arrays.asList(arr));
That isn't much of a difference, but there's much, much more. Half the time, I don't look hard enough at the constraints and end up solving a slightly more general problem, and doing all sorts of useless checks that I don't need to...

Lesson two - use sentinels more often, especially in problems with grids - you end up saving a lot on boring boundary checks.

Lesson three - really need to work more on recursion...

Lesson four - using continue

Tuesday, August 16, 2005

It's been a while...

Looks like it's been some time since I last posted. In fact I probably wouldn't have blogged today if it weren't for an interesting incident that left me with a bit of free time. Details follow...

It's like this - usually on Independence Day or Republic Day, college is closed on both that day as well as the day after. Since 15th August(Independence Day) was yesterday, we fully expected a holiday today. Then we found out that there had been this circular that said that we did in fact have college on the 16th...Bummer, but what the heck.

So I arrived at college today, and saw the most astonishing sight - at least half of my class was standing around downstairs looking vaguely puzzled. I went over and was informed that people were "unsure" whether we had college or not.

Investigations followed, and eventually it turned out that the offending circular had been sent to the Electronics people - not to us. Somehow we'd gotten the idea that it applied to us...

And so we went back home...so here I am blogging away.

The TopCoder Open Qualification Round is tonight, so I've been practicing for that. I've done a couple of practice sets from previous qualifiers to warm up. Hopefully I'll make it past the qualifiers...I seriously doubt that more progress is possible, given my current skill level. Maybe next year...

There's an old saying - "The man that knows how to use a hammer sees nails everywhere." This is sadly true of me - whenever I learn a useful technique, practically every problem I see seems to use it, even if that isn't true...

In fact, just a few minutes ago I did this interesting 1000 pointer from one of the TCCC 2005 Qualifiers. My latest acquisition is breadth-first search - it's something I hadn't really used until now, and I figured it would come in handy in cases where depth-first search might time out. Naturally, I opened it up and saw a solution using BFS...

Well, not exactly. I first thought of BFS while I quickly typed out some of the preliminary stuff - helper functions, parsing the input, that kind of thing. But just as I was about to start up the BFS, I came up with this weird idea. I spent a stupidly long time on that(it would have been simpler than BFS, for one thing), without seeing that it was obviously flawed.

Eventually I came to my senses and went back to coding the BFS. Finished it off and it worked first time - yay!

Then I open up the match editorial and it turns out that DFS won't time out. Yeesh - what a waste - DFS is so much shorter in implementation than BFS...

And now to lunch...hope the TCO goes off well...

Thursday, August 11, 2005

NetBeans rocks...

There's an old saying which goes something like, "For every door that closes, another opens." Just realized how true it was today. As the last blog post mentioned, I'm down with a viral infection, so no college for me(ok, so this isn't really a bad thing)...Worse still, JCreator - the Java IDE that I usually use - started acting funny today. Every time I try to save something, it pops up this little dialog saying "The given task was completed successfully." Needless to say, no changes are saved...

A reinstall didn't work - that was how I fixed it the last time this happened. Since I wanted to do the practice rooms for SRM 258, I fired up NetBeans - made some changes to my FileEdit config, and got to work.

I was astonished. The last time I'd used it, I hadn't been very familiar with Java - plus my experience in Java IDEs up to that point had been limited to TextPad(which isn't really an IDE, just a text editor with indentation and higlighting...). Back then I wasn't very impressed. Now it feels like a revelation.

I'm seriously contemplating switching over to NetBeans for SRMs, especially because I don't want to run into a JCreator bug in the middle of the TCO qualifiers. Not that I have that much of a chance, but you never know...

Earlier today I was reading up on Cantor's Diagonal Argument after brushing up on Turing's proof of the unsolvability of the Halting Problem. I googled it, and to my astonishment, I found a bunch of pages claiming that the diagonal argument was fallacious - which also kills off Turing's proof and Godel's incompleteness theorem(I'm not perfectly sure about this bit, though)...And more fundamentally, all the stuff that Cantor proved about infinities would be thrown out of the window as well.

They're obviously wrong - but are they serious or joking?

This is why Computer Engineering really sucks - you miss out on all the cool maths that Computer Science people learn. No wonder I'm still green at TC...

NetBeans 4.1 downloaded. Off to install...

Wednesday, August 10, 2005

Down and out...

Ladies and gentlemen, it's that time of year again. Viruses(the biological kind) are roaming the city, preying on unsuspecting victims - in this case, me.

Last night I had one of my occasional sinus attacks. That wasn't too bad - after almost ten years of living with flawed nasal architecture, I've gotten used to it. Unfortunately, I was completely unprepared for what happened the next day...

Getting up at 6 AM four days a week tends to turn you into a very good sleepwalker - most of my early morning routine is performed in a stupor of sorts. I only really wake up after I've had my head under the shower for about five minutes...

Today morning was no different, and I went through the motions as usual, only vaguely aware of my body protesting about something. By the time I was out of the shower, though, I was feeling rather uncomfortable - fogged out is probably the right term. I chalked it up to lack of sleep and went on - for about five minutes. Pretty soon I'd realised that something was wrong. Solution: Come home early from college, after wrapping up the annual bureaucratic chore of getting some stuff verified.

Off I went to the bus stop. I'd just missed the 7:20, so I had to sit and wait for the next one. Ten minutes later, I was heading back home, having discovered that moving was not something I was feeling up to that day...

Got back home and slept for four straight hours. I was feeling a little better when I woke up, but my nose wasn't exactly in midseason form, and my ears were blocked. My throat was even worse - there's nothing more annoying than pain when you swallow. To add insult to injury, I found out I had a fever too, and a mild headache above the eyes...To sum it up, I was pretty miserable.

A few hours later the situation had improved - my white blood cells were clearly kicking ass, and my nose and throat were a lot better. Naturally, I did the only sensible thing - turned on the computer, fired up MusicMatch and pulled up Diaspora by Greg Egan. Popped a Crocin too, and the effects were pretty evident after a while - I had at least some of my energy back.

Unfortunately, this thing seems cyclic - I have a feeling my nose is about to start up again, and my energy levels have dropped once more, even though I've done nothing except maybe walk to the doctor two buildings away...

The diagnosis is viral fever, of course - what else keeps on coming back year after year? Bigger and better too(or maybe just better) - mutations take care of that...

Not sure whether I'll make it to college tomorrow - this stuff is usually real bad in the morning. And the last thing I need is to go to college while sleep deprived and on antibiotics. Plus I don't fancy standing in line either...

Thite says that two of his friends came down with something a while ago too - apparently the thing runs its course in about 3 days, with rest and medication...

An odd thought just crossed my mind. I quote myself, "I haven't been properly sick in years - just out of sorts for a day or so..."

Looks like the fever's coming back up...

Monday, August 08, 2005


My sister showing off her 29 friendship bands. The nonsense scrawled on her forearms is from half a dozen friends who ran out of bands...She's got a few tied around her fingers too... Posted by Picasa

An interesting Sunday...

This Sunday was supposedly the *official* version of Friendship Day, but anyone who's ever been to college in Mumbai knows that this particular event is celebrated at least three times a year...In fact, I didn't really know that there was such a thing as an official Friendship day - somehow I'd come to the conclusion that it was one of those social consensus things that happen every now and then...

Anyway, on an MSN chat on Friday night, Thite suggested a geek meetup on Sunday. This idea went down pretty well with all of us, and we duly turned up at Inorbit mall for pizza at - you guessed it - Pizza Hut...

The aforementioned *we* were Thite, Sagar, Swapneel, Gautam, and yours truly...The last two chaps haven't been mentioned on the blog before - Thite introduced them to us yesterday. And I'm also the latest member of the new Code Monkeys blog! Well met, fellow code monkeys...

Anyway, Gautam ended up leaving early - he had to get to a party organized by his girlfriend's mom - weird...Before he left, though, he fervently entreated me not to fall into the Ruby trap - Thite and Swapneel both do Ruby, and he's the only one who does Python. Since I also use Python frequently(hell, I keep it open during SRMs...), he was hoping to equalize the odds...

Still gonna take a look at Ruby, but since our final year project involves Python(well, Jython actually), I won't be shifting over any time soon. The language seems a little weird after so much C++, Java and Python. Plus I want to learn LISP sometime, and I have Prolog this semester...

Sagar suggested catching a movie, but we decided to give it a miss when we found out that we'd be missing at least 10-15 minutes of it...After a short wait at Barista, we decided to check out MovieTime and see if there were any movies worth seeing. Turned out that The Island was scheduled for 8:30 PM, but since we didn't have that much time, we decided to head back home...or so we thought.

Thite had to stop off at Sagar's house to pick up a book for DCOM. I decided to come along - didn't really have anything better to do.

We were supposed to make a brief stop - what happened was that we ended up watching a small part of Ferris Bueller's Day Off, listening to Sagar's favourite song(it's in Swahili, and IMHO, sucks big time...) and eventually saw two episodes of Coupling. Definitely the most hilarious stuff I've seen in years - just tremendous...Have to remember to grab some of the episodes from Sagar...

We eventually managed to get away, but only after 10 minutes of politely refusing Sagar's mother's near imperial commands to stay for dinner...She actually handed us a bunch of chocolates to make sure we wouldn't *faint* on the way - the sad part is that I'm not quite sure if she was serious or joking...

What I thought of it all
I'm not a very social person by nature...in fact, I find most social occasions tremendously boring. Not that I hate socializing per se - in most cases, I just don't give a damn. Given my usual reaction to these things, I was surprised to note that I rather enjoyed myself. Being the analytical idiot that I am, I couldn't resist figuring out why...

Two words: the company.

99% of the boredom I experience at social events is the people. I don't make small talk very well - I prefer to talk about bigger issues or about tech stuff...Even the little small talk I make inevitably turns into something bigger...Most people can't take this - most of them fall into one or more of the following categories:
  1. They're shallow and so don't care about what I'm saying.
  2. They're shallow and so don't get what I'm saying.
  3. They don't appreciate subtlety, so I turn them off.
  4. They're not techies, so they have no idea what I'm saying.
  5. They're really concrete minded people, and don't like the abstractions I favor.
  6. They're just plain dumb.
Sunday's group was all tech - so we could actually discuss interesting stuff. We ended up making jokes about wireless tech, dumb teachers, families who constantly have to be spoon fed technical stuff, call center horror stories - in short, the kind of stuff that non-tech people("Muggles") can't really appreciate. As you might(or might not) expect, we had a whale of a time...

Of course, if I'd started talking about the non tech stuff that often occupies my thoughts, even they would have crumbled. People who actually get that stuff are much rarer than techies - at least in my circle. The ultimate are the vast majority of my classmates - they don't know any tech stuff aside from what they've been taught, and they don't know much about other things either. Go figure...

The remainder - people who get everything I say - are practically non-existent. Since my thoughts are connected rather weirdly, even tech brings non tech stuff to mind - I often end up pulling information from stuff I've read about history, or mythology, or some language or the other - all the weird stuff that I know and which really bores my friends...

Just noticed an interesting thing - while tech often brings non tech to mind, the converse is very rarely the case. Looks like it's a directed graph :)...

Decided to start doing some Div 1 probs - I'll need them for the TCO qualifiers, and I'm getting tired of div 2. The probs aren't that challenging anymore - leaving aside the occasional silly mistake, it's practically guaranteed that I'll crack at least the easy and medium - and the hard in most cases. Now if only I can go blue and stay blue...

Back to my Intelligent Systems assignment now. Work, work...