Archive for September, 2008

Why So Serious?

Tuesday, September 30th, 2008

Did you hear about the geek who acciden­tally published his unobfus­cated email address to his personal website? I asked him if he was relieved he didn’t start getting email spam, but he seemed pretty darned pissed that not even the bots cared to visit his webpage.…

Always In Agreement

Monday, September 29th, 2008

Politics brings out the best in some people and the worst in some others. Wait…strike out the first part.

While I person­ally don’t care too much about the US elections, there are times when a little atten­tion cannot be avoided. For instance, when you idly open the Digg homepage and notice that half the stories are about Presi­den­tial candi­dates, you can’t help but start reading some of them.

My first obser­va­tion is this: every news site or forum discussing the election belongs to exactly one of the two camps. A forum that belongs to camp ‘A’ will post wonderful stories about candi­date ‘A’ and try its best in subtle and not-so-subtle ways to mock, deride and expose the mendacity of the other camp. This should not come as a surprise to anyone.

And here’s my next obser­va­tion: a supporter of candi­date ‘A’ will inevitably drift towards a forum that supports his candi­date. There, he will praise his idol and curse the opponent, and he will nod and murmur in agree­ment when others do the same. What is inter­esting is that not many of these people venture into the enemy camp to contra­dict their opponents lies, or clarify their own position. Why? Maybe because they know that few would be willing to change their opinions when provided with better infor­ma­tion — and so they sit with their mates and bask in the warm, fuzzy feeling they get when everyone agrees with them.

What is the point of an election in which a majority of the people stubbornly cling to their opinions without weighing the facts and coming to a conclu­sion ratio­nally? Perhaps the best solution would be to disen­fran­chise everyone having a fixed opinion, and ask the rest to vote.…

Green Lake, Seattle

Monday, September 29th, 2008
The World Is Flat

The World Is Flat

Plastic Money

Sunday, September 28th, 2008

If you are a credit-card user, you might have noticed that it takes a while for your purchase history to be updated on your bank’s website. Still, your avail­able credit goes down even before you walk out of the store.

The reason for this is that there is a two step process for such purchases. The first step is a Reser­va­tion: the merchant tells the bank to reserve a certain amount for the trans­ac­tion. This call is immediate and atomic, and it affects your avail­able credit. Once the reser­va­tion is complete, the merchant can rest assured that the bank will pay him the requested amount in full once the trans­ac­tion is complete. It is the bank that now takes on the respon­si­bility for the payment.

The second step is the Settle­ment: the merchant tells the bank that the trans­ac­tion has been completed success­fully and that payment should be made for the origi­nally requested amount. The general rule is that the settle­ment request can be made once the goods are dispatched, or when the merchant is no longer the respon­sible party for delivery of the goods. The settle­ment request can actually be made several days after the original reser­va­tion, and the actual maximum period varies with the bank.

When it comes to security, this system survives not because it is partic­u­larly safe, but because the banks are willing to assume the risk (and reap the rewards as well). Of course, many customers may have acquired a false sense of security just because they’ve used it for so long. Consider, for example, the three or four digit (“CVV2”) code that is associ­ated with modern credit-cards. On the face of it, it improves security by making a portion of the secret key unavail­able through electronic means. However, this code is completely irrel­e­vant in many cases, because it is not required to autho­rize a trans­ac­tion, and many merchants simply don’t use it. All it does is provide an additional authen­ti­ca­tion mecha­nism if the merchant so wishes. Ironi­cally, this requires the merchant to put in many more strin­gent checks in place to prevent the code from being leaked or stored in the system (which would defeat its primary purpose).

Practical Coding

Sunday, September 28th, 2008

The transi­tion from the academic world to industry requires changes of perspec­tive that are often completely unfore­seen. Sometimes it also requires changes in the way you think and work.

In school and college, software devel­op­ment is rather straight­for­ward. The lifecycle of software is well-understood, and devel­op­ment consists of figuring out the require­ments, settling upon a viable design and writing the code to do the job. However, for practical appli­ca­tions, both ends of this lifecycle termi­nate in virtual black­holes, and in many cases, there is very little direct inter­ac­tion with author­i­ta­tive sources of infor­ma­tion. In effect, this makes it much harder to come up with a software that works consis­tently for all the compo­nents that partic­i­pate in the system.

Another aspect of software devel­op­ment that comes to the fore is the complexity of code. Not only is it practi­cally impos­sible to under­stand all the intri­ca­cies of the software, but a large codebase also makes the process of compi­la­tion and debug­ging a lot slower. This may not seem like a very big deal, but it definitely is: it is much easier to focus on a problem and solve it in a hour than to spend a day doing it, with inter­rup­tions. Also imagine what it would be like to add a printf state­ment to hunt down an error, and then spend fifteen minutes waiting for the code to compile. The best option in this scenario is to figure out the problem using abstract reasoning, rather than practical testing.

The third trick that requires some effort to learn is multi­tasking. Arguably, the degree of multi­tasking is higher on the job, or at least it is more fine-grained. No professor ever asked for project updates more than once during a week, but your boss is likely to want those twice a day. Projects are harder to keep track of when you need to keep juggling between so many all the time.

Perhaps the biggest challenge is that feeling of respon­si­bility that is thrust upon you — getting paid to write software, instead of paying your professor to let you do it. I am tempted to quote Tom Sawyer’s lesson on the distinc­tion between work and fun, but then writing software has always been fun.

Time For Change

Saturday, September 27th, 2008

I know that the title of this post sounds like an election slogan, but that’s not what this is all about. This change is all about domain names and CNAME records, but I won’t say too much about it. The bottom-line is that I decided to host this site on my own server, rather than on a shared webhost, and with that change, I also decided to start the blog afresh. You may rest assured that this had nothing to do with being too lazy to port the old blog to a new location, but you’re not going to believe me are you?

If the site seems to be too slow to load, please leave me a message and I will urge my server to work harder. Don’t worry, it listens to me.