Wednesday, December 24, 2008

Sending bulk emails using Outlook and C#

I have always derived pleasure writing programs that solve real world problems. This is one such problem that I was able to solve. With the holiday season on, you might want to send greetings to your numerous business contacts. If you have several contacts that you want to send personalized messages to, then you very well can imagine how much time and effort that will take.
So this is what I set out to do: create an application that would send out emails to several contacts, with a personalized greeting line, but similar message body. Also, depending on the type of contact, you might want to send a different message. E.g. if it is a close colleague of yours, then you might want to send a more personalized mail rather than a one liner. Since these are personalized emails, these need to be sent from your actual email id rather than an SMTP server on your dev machine. Also, I needed this application to work for someone else who runs only MS Office on his machine. So I decided to use Microsoft Office Outlook 2007 for this task.
The first thing to do was to decide the fomat in which I would store all the configuration information that would be used by the application: So I created two different text files, mail1.txt and mail2.txt each with a separate email message:

Hello {0}
Mail body

Where {0} is a placeholder that will be replaced by the receiver name. mail1.txt and mail2.txt have the same structure except for the mail body depending on the requirement.
Next, I needed to create a list of names and the corresponding email IDs to which the mails are to be sent. Also, I needed a flag that will indicate the type of message that is to be sent, i.e. mail1 or mail2. I created a comma separated file with the following format:

<Receiver’s name>, <email id>, <mail body to be sent, i.e. 1 or 2>

I wrote a console application in C# that uses the Microsoft Office 2007 Primary Interop assemblies to automate sending emails to all these contacts specified. The emails get sent using the default account configured in your Outlook. The code looks something like the following. Please note that this is a quick hack which actually works and that I have not really done a lot of error handling or exception management on this because I know the conditions under which this will be used.

Microsoft.Office.Interop.Outlook.Application app = null;
Microsoft.Office.Interop.Outlook._NameSpace ns = null;
Microsoft.Office.Interop.Outlook.PostItem item = null;
Microsoft.Office.Interop.Outlook.MAPIFolder inboxFolder = null;
Microsoft.Office.Interop.Outlook.MAPIFolder subFolder = null;
Microsoft.Office.Interop.Outlook.MailItem memo = null;
Microsoft.Office.Interop.Outlook.MAPIFolder sentFolder = null;
StreamReader addressReader = null;
StreamReader contentsReader = null;
StreamWriter logWriter = null;

try
{
addressReader = new StreamReader(ConfigurationManager.AppSettings["addresses"]);
String currentLine = String.Empty;
String[] currentReceiver = null;
String messageBodyFile = String.Empty;
logWriter = new StreamWriter(Path.Combine(Environment.CurrentDirectory, "Log.txt"), false);
while (!addressReader.EndOfStream)
{
currentLine = addressReader.ReadLine();
currentReceiver = currentLine.Split(',');
switch (currentReceiver[2])
{
case "1":
messageBodyFile = ConfigurationManager.AppSettings["contentsFile1"];
break;

case "2":
messageBodyFile = ConfigurationManager.AppSettings["contentsFile2"];
break;

default:
Console.WriteLine("Could not send email to ", currentReceiver[0]);
logWriter.WriteLine("Could not send email to ", currentReceiver[0]);
currentReceiver[1] = String.Empty;
break;
}

#region EmailInit

app = new Microsoft.Office.Interop.Outlook.Application();
ns = app.GetNamespace("MAPI");
ns.Logon(null, null, false, false);
sentFolder = ns.GetDefaultFolder(OlDefaultFolders.olFolderSentMail);
memo = (Microsoft.Office.Interop.Outlook.MailItem)app.CreateItem(OlItemType.olMailItem);

#endregion

contentsReader = new StreamReader(messageBodyFile);
memo.To = currentReceiver[1].Trim();
memo.Subject = ConfigurationManager.AppSettings["mailSubject"].Trim();
memo.Body = String.Format(contentsReader.ReadToEnd(), currentReceiver[0]);
memo.BodyFormat = OlBodyFormat.olFormatHTML;
memo.Send();
Console.WriteLine("{0}: Sent email with body {1} to {2}:{3}", DateTime.Now, currentReceiver[2], currentReceiver[0], currentReceiver[1]);
logWriter.WriteLine("{0}: Sent email with body {1} to {2}:{3}", DateTime.Now, currentReceiver[2], currentReceiver[0], currentReceiver[1]);
contentsReader.Close();
contentsReader.Dispose();
}
}

catch (System.Exception ex)
{
Console.WriteLine(ex.ToString());
EventLog.WriteEntry("Email Automation", ex.Message, EventLogEntryType.Error);
}

finally
{
ns = null;
app = null;
inboxFolder = null;
addressReader.Close();
addressReader.Dispose();
logWriter.Close();
logWriter.Dispose();
}

Saturday, November 29, 2008

What now?

So, I vented my anger by writing a blog-post about the latest terror attacks. Apparently the NSG has flushed out the scum from the Taj hotel. Things are going back to normal. I have not watched the news since the evening of the ill fated day (EST). One of the questions I asked a couple of questions in that post was:

"What can we as citizens of a civilized society do to protect our interests? The cause of these terror attacks are varied in various places, but it is innocent people walking on the street who bear the brunt (and the people who go out to fight for us)"

And I have been thinking about this on and off. I have asked this question to several people. I am just plain baffled by the lack of responses or ideas. Varish said that it is time for the political system of the country to start acting tough. Really? Is this the time for the gov to start acting? The government should have acted way too long ago. Anyway, that is not even the point.

We all have conceded at some point that the government of ours is not doing much other than condemning the attacks and making vain platitudes. The dirty politicians will even turn this to their advantage so that they can gain political mileage for the upcoming general elections.

All right! Enough trash talk. We know that the government is not doing what it is supposed to. So I ask the question again. What do WE do? We are the educated elite of the country. We cast those votes. We elect those representatives. Is there something we can do to help? I feel we are totally lost on that question.

I suggested doing a signature campaign amongst the student and young professional networks in and out of India. We could send those signatures with a message to our respected Prime Minister. My good friend asked me whats the point behind a signature campaign? I said, "we need to make sure that the government understands that the educated elite of the country, both in India and abroad needs to see some real action now, and not just empty promises."

Then he asked me a question to which I did not really have an answer: "Doesn't the government already know that it has to battle terrorism?" . Just that any Indian government does not have the guts to take the right steps which are against their own self serving motives. And even we the people are to blame. Everytime there is an attack on teh city, we say that Mumbai is unbreakable. We are the most resilient city in the world. Hell we don't want to be resilient! Why is it that all these pains and agonies are forgotten a couple of days after the bloodstains have been washed? The sacrifices of the security forces and the pains of the people disappear into oblivion and we settle down into our old routine. This continues till the time there is another attack. Oh yes, don't be fooled into thinking that they are done.

So I was set into thinking what would the damn signature campaign achieve? It would probably serve the purpose to make it clear to the government that we are pissed off. But doesn't the gov already know that? Like Jayu said "they cannot be that detached from public sentiment". So how do we make them do it? In an ideal democracy (oh and we are very proud of the fact that we are a democracy) the people are able to hold the gov accountable for their actions and inactions. Why can't we do that in India?

"Electoral power is supposed to be the form of public control over its govt in a democracy. Here it gets sold for free sarees and rice during election time. The educated middle class has a very small say in the overall process."

So this is my sincere message to everyone reading this post. This general election, PLEASE GO AND VOTE. Cast a responsible vote. Our only goal should be to cast aside all our feelings of mutual distrust and communal agendas and questions of religion and reservation, and elect a government that would actually ensure that our people don't get slaughtered on their own street.

The only other weapons that we have are the RTI and the PIL. But only the legislature has the right to ammend the constitution. The courts can only direct the legislature to do something. So let us wield the only real weapon we have. The right to vote. Let the current government understand that they have to prove a point to us, and that we are watching. And let them consider this a threat: we will not vote for you if we do not see results.

Note to all the readers: If you have any ideas, post a comment.

Thursday, November 27, 2008

What is the solution to all this mess?

As I write this, my city burns. Terror attacks in several locations in Mumbai....it is all over the news. I don't think the country has witnessed such carnage in a long time. Yes, I say long time because India has sort of gotten used to the idea of terror attacks now. Mumbai itself has been the target of several such attacks. Barely a couple of months go by when you hear about another one of these bomb blasts on TV. Few things make me feel more helpless than a terror attack. And as I write this, I am sitting several thousands of miles away from my city.

But there was something very different about what happened today/yesterday (depending on which part of the world you live in). All this while the terrorists were hidden; they planted bombs clandestinely and ran away. This time, they had the guts to walk into my city, fire at people, lob grenades, hold people hostage and gut some of the main spots in the city. What is noticeable is that these terrorists have targetted places that are frequented by westerners. Colaba is an area that has a good density of foreign tourists and the Taj hotel (where one of the bloody gunbattles are being fought) plays hosts to several foreign tourists and business delegates. This is not just an attack on India. This is an attack on all the good people of the world who want peace.

There were reports of these terrorists dragging people out of the hotel and asking for their passports to look for people from the US, UK and the like. I don't know if this is confirmed news (it was definitely aired on one of the news channels broadcasting the events, so I took it at face value).

A few questions strike me:

1. Why is it that we are not able to prevent such blatant attacks on our home? Is our intelligence system so bad that we had no clue?

2. What do these terrorists want? Perhaps we could make a deal with them if we are too scared to go out and settle scores (atleast that seems to be the case to me a lot of times, and a lot of people will agree)

3. What can we as citizens of a civilized society do to protect our interests? The cause of these terror attacks are varied in various places, but it is innocent people walking on the street who bear the brunt (and the people who go out to fight for us)

The situation in India is unique, as compared to other countries that face the threat of terrorism. We have several internal problems and have a very troubled history, marred by communal conflicts. The scars of such conflicts are magnified by terrorist masterminds who turn troubled youth into blood-thirsty monsters. In the very early days of terrorism, terrorists used to be foreigners (I will not name the country, but we all know who I am talking about). As time progressed, terrorists started to come from interiors of the country. These are dissatisfied youth, who have been affected by communal clashes, who are brainwashed by the big terrorist organizations, trained by them and sent back into our country to cause misery to innocent people.

The solution has to be two pronged:

1. Deal with the external elements who propagate the terrorist ideas and fund such endeavors. This can only be done when like minded countries cooperate with each other to end global terrorism. This is because all global terrorism is interlinked and is funded and propagated by the same set of big organizations.

2. Deal with the internal elements. Bust the sleeper cells. Throw out the hidden extremists. Enforce the rule of law so that the gullible youth is not misguided by these scumbags.

All this has to be implemented around a framework that is designed to prevent such future occurences. A working intelligence system (do we really have one?), a proper disaster management system, adequate security measures at hot spots. I know people say that it is difficult to police a country of billions. But this is the price we pay if we don't. After the serial train blasts, we installed faulty metal detectors at some stations (the ones on the entrance of CST station barely worked), and assign 2 police constables at each major station. Did that work? We never thought that the outside of the station could be vulnerable too. Perhaps we thought that these terrorists are gonna keep planting train bombs. Do we even have trained people who are capable enough to design solutions to handle these problems? All this infrastructure has to be put into place.

The last thing I want to see is these stupid political parties trying to gain mileage out of this mess by pointing fingers at each other.  I will be very very pissed off if a party calls a Mumbai bandh or a Maharastra bandh (or any such extension) to gain public attention. Such measures gain nothing and simply cause more distress to the already troubled people. I want to see some action. I need these terrorists killed. I don't want empty promises. Are you listening? Oh and if there is something I could do........let me know. Right now I am limited to watching the news, writing pissed off emails and angry blog posts.

Wednesday, October 08, 2008

Touchy feely gcc

I am writing code in C after several years. Needless to say, I am woefully out of touch and don't remember the most basic of things. Add to that, I am writing code using a simple text editor and compiling it using gcc on commandline. Every time I see a funny error, it takes me a while to actually understand what is wrong. A really good IDE with awesome intellisense really does spoil you!

So I got this funny little compilation error which left me stumped:

/tmp/cckI2FzP.o:(.eh_frame+0x11): undefined reference to `__gxx_personality_v0'
collect2: ld returned 1 exit status


I googled and found that this error is normally related to C++, but I was writing code in plain old C. So what was wrong? I found later that I had named my code file as List.C instead of List.c. After renaming it to List.c, all was well.

Turns out that filename extensions in linux are case sensitive (wonder why I did not run into that problem all these years),  and that C is a commonly used extension for C++

Tuesday, September 02, 2008

How I met Rafael Nadal

So I was out in NYC on the second day of my trip. We did not have much planned. I wanted to go to Rockefeller Center and my friends agreed kinda for the want of a better plan. So we got out of the subway station, and we saw this Brazilian carnival happening. You know what to expect in such a place. It was full of life and lots of people; brimming full of food, music drinks, and some other good things.
After a while I got very thirsty and wanted to get out of the place cos it was too crowded. Then we went over to Rockefeller Center and later the St. Patrick’s cathedral and did the regular tourist stuff (you know…clicking pics and all that). Most of the people were already tired and they were sitting on the cathedral stairs outside. One of my friends suddenly said, “Hey, Rafael Nadal just walked along the street).
“What?”. I did not want to believe that, but I just found myself saying “Lets go” and I started running across the street. I heard my friend say that he was wearing a yellow tshirt. My mind was a whirl. It could easily have been a mistake. But NYC is currently hosting the US Open and I did not want to miss a glimpse of the world’s top seeded tennis player. I spotted the man in question from across the street but the crossing was difficult due to the traffic. I had to wait for the walk signal to come on, an then I ran again. He looked slightly taller than what I expected and the hair looked shorter and straigher from behind. Nevertheless I kept running and went ahead past him. I heard that unmistakable voice speaking fluent Spanish. I forgot to mention, he was walking with a couple of other guys (and they were all walking very fast, as if they were in a hurry).
I turned around and looked at him. I was still not sure and I just stood there while he walked past. I saw someone else approach him and shake his hand while he continued to race along the road. I was reluctant to approach him since he seemed in such a hurry and I told my friends that he wont stop for us. But two of my friends were insistent and they went and they stopped him and requested for a picture. I did not see much, but I just happened to notice Nadal turn around and pose for the photograph. I ran ahead to bask in the moment.

Nadal

I was meeting my favourite tennis star of the time. Ironically the guy who clicked the photograph was the one who was most crazy about Nadal. (Thanks for clicking the picture Sanatan). After the picture was clicked, we yelled a “Thanks Rafa” chorus and we knew that our day was made.

Wednesday, August 27, 2008

Back to school

Ok. I am back after a long hiatus. Today marks the completion of 3 weeks since I landed in the USA. I have come here to pursue a Masters' Degree in Computer Science. I could not think of anything to write about because most of my recent posts have been about books I have read. The last book I read was "Pillars of the Earth" by Ken Follet, and unfortunately I did not get enough time to complete it before my flight to the US. And for some reason, I did not even carry the book with me (maybe it was the size of the book). So, its been 3 weeks since I read anything creative and hence no posts. Life in the US is not very different from what it was back home. I still feel like I am here on an extended nightout at a friend's house.

The past 3 weeks were spent in setting up my new house, shopping, eating, sleeping, shopping, opening bank accounts, roaming around campus, shopping, waiting for my new laptop to get delivered, and other miscellaneous things not worth writing about. This makes me feel that I have done absolutely nothing productive in the past 3 weeks. Oh yes, I have this big obsession about productivity and using my time effectively (but I end up wasting most of my time anyway and then fret about it in posts like these).

One noticeable difference between life in Bombay and life here in the US is that I do not have to use public transport as extensively as I had to while in India. My university runs a shuttle service which takes me to most nearby places, and not just to and fro. That having said, it is quite difficult to go even relative far off places without a car. Bombay suburban transport system rocks. Yes, I said Bombay and not Mumbai. You would be surprised....people here do not know Mumbai, and I like calling it by the old name. It got a classy zing to it.

As it is apparent, I am suffering from a writer's block. Suggest me of something to write about.

Tuesday, July 22, 2008

To God belongs the East and the West

My Name is Red (Benim Adım Kırmızı) is a turkish novel by Orhan Pamuk, a Nobel laureate. It won the International IMPAC Dublin Literary Award in 2003, as well as the French Prix du meilleur livre étranger and Italian Premio Grinzane Cavour awards in 2002. The book in consideration in this article is the English translation by Erdağ M. Göknar. There have been questions about the English translation not being as good as the Turkish version and the word order being quite difficult. But honestly, I did not know that the book I was reading was actually an English translation and not an original English work.

My Name is RedThe story is based in 16th century Istanbul, a year before the thousandth anniversary (calculated in lunar years) of Hegira (the migration of Muhammad and his followers to the city of Medina). The Ottoman Sultan Murat III has commissioned an illustrated manuscript to display his power to the Venetian Doge. This manuscript is to be made utilizing the “controversial” aspects and techniques of the Frankish masters, namely portraiture and perspectives. Due to this reason, the Head Illuminator of the Sultan is bypassed and the work is commissioned to Enishte Effendi, who co-ordinates Master miniaturists Stork, Olive, Butterfly and Elegant. It is rumored that the paintings are blasphemous and an affront to Islam and The Prophet. Subsequently, the master guilder Elegant working on the manuscript is murdered. The book follows the path of a murder mystery where the identity of the murderer is revealed at the end. Pamuk’s knowledge of Islamic miniatures is mind-blowing. He goes on to narrate several stories from Islamic lore, stories of great miniaturists and their history, going back to Behzad and the Chinese influences brought by the Mongols. The book discusses and debates about various topics, the most prominent of these are:

·        Form and style,

·        The relationship of art to society, religion and God, and

·        The artistic, cultural and political differences between the Ottomans and the Venetians.

The first thing that strikes you while reading this novel is that the story is narrated in several different voices which recur throughout the story. No two consecutive chapters are narrated by the same narrator and all speak in the first person. There are a couple of rather unusual narrators: a gold coin, a tree, a dog, Satan, and even Death itself. I later figured that these narrators are in fact the central themes of the illustrations appearing in the secret manuscript in question in the book. One of the central points about traditional miniatures, I learned, is that they always appear as illustrations of a story, and never as independent paintings. Pamuk has adopted this style in his narration of the story: by describing the protagonists as part of an old manuscript, supporting the story. The characters are aware that they are characters in a story and address the reader with irony.

The setting of the story in late sixteenth century Istanbul is detailed; the plot is engaging (albeit a bit slow moving in certain places) with several interesting characters. Indeed there are too many themes in the book (art, religion, Allah, love, lust, jealousy, hatred, intrigue, murder) and I cannot do justice to all of them in this short article. If you are interested in Islamic art, Ottoman miniatures or medieval Istanbul, then pick up this book. But be warned, this is not an easy or quick read.

Friday, June 27, 2008

So it goes….

Slaughterhouse Five : Kurt Vonnegut
This book is widely regarded as one of the best anti war novels of all times. It begins as a memoir and is based around the Allied bombings of Dresden in World War II. The author Kurt Vonnegut is a minor character in the story as the narrator and is quite funny. Both Billy Pilgrim and Kurt Vonnegut are portrayed as prisoners of war in Germany.

SlaughterHouseFiveCoverThe book has an unusual narrative style which is quite nonlinear in time since the protagonist Billy Pilgrim is "unstuck in time" i.e. he experiences different periods of his life in seemingly random order and he has no idea which part of his life he will visit next. As a result of this queer condition, Billy experiences his own death several times and he switches back and forth between prisoner camp in Germany and his life as an affluent optometrist in Ilium, NY, and sometimes his stay on the planet Tralfamadore. One of the important events in Billy's life is when he gets abduced by aliens from the planet Tralfamadore. The Tralfamadorians teach Billy about the concept of time as the fourth dimension, fate, and death's lack of discrimination. To the Tralfamadorians, who can see in four dimensions, everything always exists and has always existed. Everyone is alive and has always been alive. They see time as we might see the Rocky Mountains, stretching endlessly on both ends. So if all events are predecided, then "what about free will?" asks Billy. The Tralfamadorian responds: "I've visited thirty-one inhabited planets in the universe... Only on Earth is there any talk of free will". This lends to the belief that human beings do what they do because they must.

The book opens with the narrator's account of his own relation with the Dresden bombings and his reasons for writing the book. Although there is no reason to believe that this account is also not fictional. Thus, the real story begins with chapter 2. I found this form of writing unusual (although amusing) which they say, is common to postmodern meta-fiction. Throughout the story, the author pokes fun at the concept of war, portraying the characters in sarcastically humorous light. Vonnegut says that the soldiers dying in these wars are young men barely out of high school. That is the reason he portrays these soldiers as scared young men instead of heroes of war. This is so that his book does not encourage more wars in which children would be sent to die (quite like the so called Childrens' Crusades).

All in all, a very entertaining and funny book. Quite an easy read.

Sunday, June 22, 2008

In a hole in the ground there lived a hobbit

The Hobbit by J.R.R Tolkien was nominated for the Carnegie Medal and awarded a prize from the New York Herald Tribune for best juvenile fiction of the year (1938). Also, The Hobbit has been recognized as "Most Important 20th-Century Novel (for Older Readers)" in the Children's Books of the Century poll in Books for Keeps.

hobbit cover I should probably have read this book before reading Lord of the Rings since quite a few characters in the epic tale have been introduced in The Hobbit: most notably the titular protagonist Bilbo Baggins, Gandalf the wizard, Gollum aka Smeagol. Also noteworthy is a side character Gloin, who is said to be the father of Gimli- Elf Friend (Fellowship of the Rings). Two other noteworthy characters are the dwarves Balin and Ori. Recall that the Fellowship of the Rings discovers Balin's tomb in Mazarbul in the Mines of Moria and the Book of Mazarbul written by Ori. The story also accounts how Bilbo Baggins gains the possession of the One Ring. The ring, along with the character of Gollum, sets the tone for the much known sequel.

The tale is based around a typical comfort loving, homely hobbit Bilbo Baggins who finds himself on an adventure with thirteen dwarves also accompanied by Gandalf, an itinerant wizard who disappears in the middle of the story later to reappear at key moments (typical Gandalf). Gandalf is out on his own business but incidentally assisting the dwarves on their quest. The team of the thirteen dwarves and the "burglar" Bilbo have set out to reclaim an ancient treasure of Thror the Dwarf King under the mountain which is now guarded by a ferrocious dragon Smaug. Their journey takes them over strange and dangerous lands which lands them into mortal peril more than once. The story is in the form of an episodic quest and the prose is interspersed with poetry and songs that are typical to Tolkien's works.

The publishers of the Hobbit requested for a sequel which eventally resulted in the epic Lord of the Rings. Tolkien rewrote some of the parts of the Hobbit in order to facilitate a smooth transition into the darker themes of the Lord of the Rings. Tolkien wrote The Hobbit as a story for children, and The Lord of the Rings for the same audience who had subsequently grown up since its publication. The Lord of the Rings was written in less humorous tones deals with more philosophical and darker themes: while the Hobbit has its share of death and danger, it is about the quest for a lost treasure. Even though many of the encounters are dangerous or threatening, the general tone is light-hearted. On the other hand, LOTR is about the war between good and evil: it is the war for middle earth. One can scarcely underestimate the gravity of that situation.

All said, I am quite amazed at the detailed work of Tolkien who has gone to extraordinary lengths to bring his fictional world to life. Middle Earth has a very well documented history: wars and legends, legacies left by kings, generations and genealogies, maps, ancient lands, wild characters, magical objects, runes, languages, lores, music, poetry; and all this changing through the times as characters change and their places are taken up by new generations. The chronology almost reads like a history textbook.

A live-action film version was announced on 18 December 2007, to be co-produced by MGM and New Line Cinema, and produced by Lord of the Rings director Peter Jackson. A date of 2011 has been proposed for its release.

 Far over misty mountains cold
To dungeons deep and caverns old
We must away, ere break of day,
To find our long-forgotten gold.

Monday, May 26, 2008

The Enchantress of Florence: Salman Rushdie

Enchantress of Florence

I was told to be wary before picking up a Rushdie book because Rushdie’s works are normally considered very heavy, with challenging prose and long sentences. My friends told me to read one only if I was okay with spending a lot of time with the book. I remembered seeing Rushdie's interview on television several weeks ago when he spoke of his latest novel. He was talking about Jodha being an imaginary character in Mughal history. At that time I did understand the relevance of his statements. I thought it was probably because of the ongoing controversy about Jodhaa-Akbar: the movie.

Half of the story is based in the time of "Akbar the Greatest", in the city of victory – Sikri, while the other half is based in Renaissance Florence - the time of Niccolo Machiavelli. The story is about a lost Mughal princess: an enchantress who is the common thread between these different worlds. Magic and enchantments have a special place in this story and they have been treated very differently from other books based on magic. This is not fantasy fiction. It is historical fiction; in spite of the heavy concentration of enchantments throughout the story. The characters we meet include the Navratnas in akbar's court: Abul Fazl, Birbal, Tansen and the others. Then there is Salim, Badauni and the like.

The character of Queen Jodha is particularly enigmatic because of the magical character ascribed to her. Rushdie does not explain Jodha's character; he leaves it to the reader's imagination. She could either be a product of collective schizophrenia at the insistence of the Emperor’s will; or as a product of the amazing creative powers of the Emperor: The Shelter of the World, the Invincible.

Truly, the character of Akbar is grand. I always admired Akbar as a great king; the grand unifier of Hindoostan, but never before had I imagined his character as he has been shown in this book. From Rushdie's descriptions, you can truly feel the awesome power vested in this man. He is the omnipotent emperor: the man who has the power to do absolutely anything in the world. He can conquer the world; He can bring the perfect woman of his dreams to life from a mere fantasy.

In the other part of the world we have Nicollo Machiavelli and his two friends growing up as young boys in Florence. There are glimpses of Girolamo Savonarola's weepers, whose doctrines are put to end in a blazing fire quite like the "bonfire of vanities”, practised by him and his followers. Only in this case it was Savonarola and his followers who were roasted in the fire. The story traces the fall of the Medici, the creation of the republic, the return of the Medici, the troubled times of Europe, Popes indulging in warmongering etc.

Rushdie's command over the English language is staggering. The prose is convoluted at times, which is quite a characteristic of his writing, but this is certainly not at the expense of readability. Although I took a little more time on this book than others of the same length, I did not quite realize it till I finished the book and sat down to write a review.

A celebration of creative writing. Recommended reading.

Monday, May 05, 2008

Styles on the Login.aspx page

I have been playing around with the ASP.NET login controls lately. After getting the membership and role management framework to work on my website (which is quite a task in itself), I set to figure out some other small things. In this case, I wanted to apply custom styles to the login control on my Login.aspx page.

Doing this is as simple as assigning a class to the CssClass attribute of the Login control and to any sub-controls whose appearance you want to modify.

<body class="Body">

<form id="form1" runat="server">

<div>

<asp:Login ID="Login1" runat="server" CssClass="TextBox">

<LoginButtonStyle CssClass="Button" />

</asp:Login>

</div>

</form>

</body>

</html>

Now I should mention that these classes are contained in a .css file inside my App_Themes/Default/Styles folder.

So in the <head> section of the page, I added the following:

<link rel="stylesheet" type="text/css" href="../App_Themes/Default/Styles/LoginStyles.css" />

Simple enough eh? Wrong!

No matter what I tried, no matter how much I played with the path to the css file, the styles simply won’t be rendered on my page. The same styles get applied if you use them in a <style /> element in the page itself. I was flummoxed.

The thing to note here is that the authorization section in my website is configured as:

<authorization>

<deny users="?"/>

</authorization>

This means that unauthenticated users will not be able to access the website resources: which includes style sheets and/or images on the website!!

So, in order to get this to work, I had to move the stylesheets for the login page and the related images to a separate folder called “AllowAll” and make the following additions to my web.config file:

<location path="AllowAll">

<system.web>

<authorization>

<allow users="*"/>

</authorization>

</system.web>

</location>

Basically this section means that all users (*) should be allowed access inside the “AllowAll” folder, regardless of whether they are authenticated or not.

Then I simply changed the path to my stylesheet on the login.aspx page:

<link rel="stylesheet" type="text/css" href="AllowAll/LoginStyles.css" />

And that did the trick. Woof…so much for authorization!!



Thursday, April 24, 2008

Book Review #3

The Scarlet Pimpernel: Baroness Emmuska Orczy

TheScarletPimpernelCoverThis is an adventure novel set in the reign of terror that followed the French Revolution. The novel is based in the year 1792: the year of grace when French aristocrats are being slaughtered at the gullotine in the name of liberté égalité fraternité.

A league of brave englishmen led by an elusive and heroic leader - The Scarlet Pimpernel, travel in disguise to France, plot a series of daring rescues to save their condemned fellow Frenchmen from daily executions. The identity of the Scarlet Pimpernel is a closely guarded secret and is unknown even to those people whom he rescues. The league, and especially their leader gain legendary status in the elite English society and equal amount of notoriety amongst the French revolutionists.

The book is based around one such rescue plot and is cleverly woven as a cat and mouse chase between the plotters and the French authorities. There is a nice love story which has been interwoven into the fabric of the story without making it seem too obtrusive or distracting. The love story adds to the plot without making it maudlin. The novel is very typically British in terms of the characters and the environs: beautiful women, gallant men, curtsies, bows, formal parties, fashion, high society et. al.

An enjoyable suspense novel although quite predictable at times. Recommended reading.

Black Friday - Hussain Zaidi

BlackFridayCoverA meticulously researched book based on the Bombay serial blasts of 1992. I had not watched the movie, so was not well versed with the plot. The first few pages that described the actual blasts really scared me. Real good work done by the author who collated all the information from thousands of pages of CBI dossiers, courtroom accounts, interviews with real people etc. Since the blasts were a contemporary event during our lifetime, I found this to be an important book with respect to the history of the city. A chilling account of how a set of gangsters (and not terrorists) could mastermind and execute the sinister plot that killed and maimed scores of innocent people.

This is probably the most controversial case in the history of Indian law enforcement, and hence I don't think we can take every plot in the book at face value; but the book does give a pretty decent picture of the overall framework of the planning for the blast, the execution, the investigation, the court verdicts, and some related events like the Sanjay Dutt case, a couple of gang-wars etc. worth a one time read.

Tuesday, April 22, 2008

Answers to India Quiz

1. Naxalbari in northern West Bengal lent its name to the Naxalite movement (http://en.wikipedia.org/wiki/Naxalism )

2. Potti Sriramulu's fast led to the creation of Andhra Pradesh: the first state that was created on the basis of linguistic lines (http://en.wikipedia.org/wiki/Potti_Sriramulu). (One point each for the personality and the state)

3. Madhavrao Sadashivrao Golwalkar (1906-1973), popularly known as Guruji, was the second "Sarasanghachalak" of the RSS. (http://en.wikipedia.org/wiki/Madhav_Sadashiv_Golwalkar )

4. Sheikh Mohammad Abdullah (father of Farooq Abdullah and grandfather of Omar Abdullah) (http://en.wikipedia.org/wiki/Sheikh_Abdullah )

5. Vengalil Krishnan Krishna Menon (http://en.wikipedia.org/wiki/Krishna_Menon )

6. Dr. B.R. Ambedkar: Friday, the 25th November, 1949: Constituent Assembly of India (http://parliamentofindia.nic.in/ls/debates/vol11p11.htm )

7. Jayprakash (JP) Narayan (http://en.wikipedia.org/wiki/Jayprakash_Narayan )

Monday, April 14, 2008

India Quiz



  1. X is a small village in West Bengal. In March 1976, X saw the beginning of a series of demonstrations by local peasants against landlords who had evicted tenants and/or hoarded grain. The demonstrations grew more militant, leading to skirmishes with the police, killing of a constable, retaliatory firing on the crowds. Eventually the peasants decided to take to arms, and soon landlords were being beheaded.




X soon came to enjoy an iconic status among Indian revolutionaries. The village gave its name to the region and, in time, to anyone who would use arms to fight the Indian state on behalf of the oppressed. Thus the place X gave birth to a movement which still plagues the hinterland of several Indian states. Name the movement. Bonus point for guessing the name of X.








  1. X began his last fast at Chennai in Oct 1952 demanding for a separate state. He died in Dec 1952 which led to a huge uproar amongst his followers. The people went into a wild frenzy destroying public property. The disturbance assumed a major scale and continued for 3-4 days. Finally the then Prime Minister Jawaharlal Nehru announced the creation of a separate state Y.








The creation of state Y catalyzed the creation of several other Indian states based on linguistic lines. Name the state Y and the person X.








  1. Identify this man who was the force behind the formation of the organizations that now comprise the "Sangh Parivar", which celebrated 2006-07 as its centenary year.





This man was the mentor and teacher to generations of extremists who have carried forward his struggle for a Hindu nation. Identify him.








  1. This man, also known as Sher-e-Kashmir was the leader of the National Conference, Kashmir's largest political party of the time. He is perhaps the most important political figure in the history of modern Jammu & Kashmir. He was jailed in the year 1953 on the charges of corruption and separatism, but was released after 11 years.





He was later exiled from Kashmir in 1971 for 18 years. Later, after coming to an accord with Prime Minister Indira Gandhi, he went on to become the Chief Minister of J&K which he held until his death. Identify him.








  1. This man, an old friend of Nehru, was educated at the London School of Economics, was also the first editor Penguin's prestigious non-fiction imprint, Pelican Books. He served as the Indian High Commissioner at London, a cabinet minister without a portfolio, a representative of India at the UN and at disarmament meetings in Geneva, but most importantly as one of the most controversial Defense Ministers of the country.





He came under a lot of heat after India's staggering defeat at the Sino-Indian war of 1962 and was forced to resign from office for the country's apparent lack of military preparedness. Identify the man in the picture with Nehru.








  1. The following is an excerpt of a speech in November 1949 by X. This part of the speech is concerned with the place of popular protest in a democracy:




We must abandon the method of civil disobedience, non-cooperation and satyagraha. Under an autocratic regime, there might be some justification for them, but not now, when constitutional methods of redress were available. Satyagraha and the like are nothing but the grammar of anarchy and the sooner they are abandoned, the better for us”.


Identify the speaker.





  1. X was, a renowned social worker, dedicated his life to Vinoba Bhave's Sarvodaya movement. He later led the students of Bihar in a popular protest against the misrule and corruption in the government which went on to assume massive proportions in several states.





He asked Indira Gandhi to resign from the position of PM when she was found to be guilty of violating electoral laws. Instead, Indira clamped down an emergency and X was one of the leaders who was detained as a political prisoner

Monday, April 07, 2008

More Books…

Here are a few words about a couple of books I read in the past several weeks:

Interpreter of Maladies: Jhumpa Lahiri

InterpreterOfMaladiesCoverThis a collection of 9 short stories. If there is one connecting emotion between all the stories, then it is nostalgia. Most stories are about Indian Americans who are caught between their native culture that is their own, and the new world they live in. These stories reminded me of the quaint short stores book I studied for my ICSE. All stories have an emotional appeal, and I never thought I would like stories such as these where there is no conceivable end to most, but the quality of story-telling is of the highest order. And oh boy, the descriptions of food in the stories are so good that you are moved to the point of hunger.

Animal Farm: George Orwell

AnimalFarmCoverAnother one of those overhyped acclaimed literary classics.Was ranked 31 in the TIME magazine's list of 100 best novels since 1923. Was okay.......one time read maybe for the sake of it.......or maybe I was not able to truly appreciate the depth of satire in the book. Said to resemble the Russian revolution and thereafter the rise of Stalin......this book is based on how the animals in a farm overthrow their owner and take over the farm.

The Namesake: Jhumpa Lahiri

TheNamesakeCoverI was really put of by Indian authors till I came across Lahiri. I really love the style of her writing. This is her first complete novel which is based on the life of an Indian born and brought up in the US. The story is based on events in Calcutta, Boston and New York, revolving around the lives of people caught between two different cultures.

Even though there is no proper ending to the story (which is somewhat a characteristic of most of her work till now), the book is an entertaining read till the very last page. Her narrative style is pure brilliance, and once again, her knowledge of the culinary arts is astounding. The descriptions of food are so amazing that I do not recommend you to read this on an empty stomach :)

All in all, a good work of fiction. Recommended reading, if only for the sake of a stellar demonstration of creative writing.

Sunday, January 06, 2008

Creating a new virtual server

I already have a virtual hard disk with Windows Server 2003 installed that runs on Microsoft’s Virtual PC 2007. One major issue with my current OS image is the lack of support for USB drivers and sound drivers. Despite repeated efforts, the sound drivers on VPC simply fail to work. I tried googling, but I could not find anything useful.

no sound

And since it’s a virtual machine, there are no specific drivers that I could install to get this thing to work. I found something called Virtual Machine Additions in MS VPC, which I assumed would be something similar to VMWare Tools.

vm additionsThe funny thing is that there is no indication of any change, during or after the installation of VM Additions. The sound just would not work.
I had enough of MS VPC, and I decided to do a fresh installation, this time on VMWare. The other major reason for doing this is that I really want a fresh and lean server VM where I can install all the stuff I want; and doing this on the already bloated VHD wasn’t a good idea.
One problem though: I do not have a CD of the Windows 2003 Server; but instead I have the whole setup in the form of a folder hierarchy.

windows 2003 installation folder

What I needed now is an ISO image of the setup that I can use to boot up my virtual machine. Whats more, I needed a bootable CD. I thought I could do this using Nero 7. Ah, but Murphy’s law: the installation of Nero 7 on my machine is from the CD that came free with my SONY DVD writer, and Nero did not provide me a copy of Nero Burning ROM in the disc. So I could not create a bootable ISO. So I looked for a free software that will serve my purpose. I found CDBurnerXP. I found this to be a neat tool which gave me an option of creating ISO images and bootable discs.

Now, before I could create a bootable ISO, I needed a boot image which I downloaded after performing a google search (don’t remember where I got it from, but there are many available online and links to these are provided by the numerous guides). This boot image that I used was called boot.ima, which was a small file 2 KB in size.
To specify that you want to create a bootable disc, click on disc-> boot options:

bootable disc

Click on “make disc bootable”. Select the path to the boot image. Set the emulation type to none. Keep the Load segment as it is, and set the sector count to 4. Select “Disable ISO version number extension(;1)”, and click OK. Click file -> save compilation as ISO file, and create ISO.
That’s all I needed. I created a new virtual machine with VMware, and made it point to the ISO file I just created so that it could boot up from the ISO.

vmware cd boot

That’s it; I fired up the VM, and it booted from the ISO. I continued with the OS installation as usual. After that was done, I logged into the OS as admin, and what do I see? The sound doesn’t work. I installed VMWare tools and it showed that audio is enabled, but the OS in my VM was simply not able to play any sounds except for the system sounds. This time I opened device manager and chose the option of automatically installing drivers from Windows updates, and it downloaded the required drivers. After a reboot, when I started the machine again, I heard the sweet sound of windows startup.