Jul 12
Updated to wordpress 3.0
icon1 Krishnamurthy Koduvayur Viswanathan | icon2 general | icon4 07 12th, 2010| icon32 Comments »

I have been wanting to update my blogging software from its original archaic version that I installed over a year ago. Yesterday I finally decided that I cannot wait any longer because the old version of the wordpress software was not letting me link images from external hosting services like picasa. So I bit the bullet and did the whole updating process. I did the manual update because my ancient version did not even support the automatic update.

So I took a backup of the database, a manual backup of the entire blog directory using ftp, and just followed the instructions. True to the word, it updated the web-app and the MySQL database in a matter of seconds. I really like this new interface, but I am still looking for desktop publishing applications that can simplify the blog post process easier for me because I hate to have to muck with the HTML code myself. So, I am going to experiment with a couple of publishing applications for a while.

Jul 9
Poaching an egg
icon1 Krishnamurthy Koduvayur Viswanathan | icon2 cooking | icon4 07 9th, 2010| icon31 Comment »

Do you remember this scene from Julie and Julia? After watching it, I felt that poaching an egg requires some kind of black magic, and that it is extremely difficult for you to poach an egg without an egg poacher. I checked out a book by Jamie Oliver, and his advice was similar to that of Julia Child (as in the video). A google search gives you a tonne of conflicting advise. Finally, I found a way that has always worked for me:

  • Take lots of water in a saucepan and bring it to a light boil. Add a teaspoon of salt, and a teaspoon of the secret ingredient: vinegar. Vinegar helps the egg white to cook as soon as the egg is dropped into the water. This is what helps you avoid the disastrous “scrambled egg soup”.

adding-vinegar

  • Now reduce the flame a little so that the water is not boiling hard. When the water is relatively calm, use a spoon to twirl the water in the pan so as to create a mini-whirlpool.

image092.jpg

  • Gently crack an egg, taking care not to break the yolk; and drop it into the center of the whirlpool. Drop the egg from close to the surface of the water.

image093.jpg

  • That’s it. Waiting and watching: the only two things you need to do. No need to push the egg-white around. You will notice that the egg starts to cook immediately as it falls into the water, and it starts to congeal around the yolk. Cooking time varies between 90 seconds to three minutes depending on how well done you want it to be.

image100.jpg

  • Use a slotted spoon to gently scoop the cooked egg from the pan. Serve it on some good toasted bread (for those in Baltimore, try the raisin pumpernickel from Atwaters)

image103.jpg

Jun 18
Sunday Brunch
icon1 Krishnamurthy Koduvayur Viswanathan | icon2 cooking | icon4 06 18th, 2010| icon31 Comment »

As a graduate Indian student in the US, my weekend meals are a not a deterministic phenomenon. Cooking turns on weekdays are a regular thing on the schedule, but one meal I always enjoy, and hence look forward to, is the Sunday morning breakfast/brunch (depending on the time of waking up). Moreover, the whole act of cooking together in the morning is an entertaining prospect in itself.

We are big fans of cooking eggs for breakfast. And why not? The number of really good breakfast dishes you can make with eggs, and other commonly available ingredients is just plain delightful. I think half the fun in cooking eggs is sometimes not knowing till the end, how it is going to turn out. I revel in the suspense of whether this is going to turn out to be an omelette or part-scrambled.

The uncertainty at all times is due to the unpredictable nature of some of the frying pans we use.A good quality frying pan always lets you cleanly slide your cooked eggs on to the plate. I just love it when that happens. But if your frying pan is old, then it may be a bit of an effort taking the eggs off the pan, and you may not get everything in one piece.

eggsAnyway, enough said about the dynamics of eggs and pans. Lets cook breakfast for two.First up, the eggs. You will need six eggs (6 whites and 3 yolks for those who are inclined). Add some salt and black pepper powder and beat them up till they are real nice and fluffy. Add a little milk if you wish.


mushroomsNext, take a couple of button mushrooms. Chop them up into bite size pieces.




mushrooms-and-ginger-garlic-pasteFire up your frying pan now, and add some extra virgin olive oil (any cooking oil in your kitchen will do). Throw in the mushrooms and sauté till they are slightly brown.Remember that mushrooms cook really quickly; so you don’t want to overcook them. Add a teaspoon of ginger and garlic paste, and continue to sauté.




spinachAdd some chopped spinach to the pan, if you have any, and continue to sauté till the spinach seems to be cooked (this does not take more than a few minutes). She taught me to do the following: use a pair of ordinary kitchen scissors to chop the spinach right over the pan for small quantities. It is quick, easy and clean.




eggsinthepanAfter doing this for a couple of minutes, add the eggs to the pan. Hold the handle of the pan and shake it a little so that the veggies and the eggs are spread evenly and form a uniform coat.




mozzarellaLet it cook for a minute or so, and then add a few pieces of mozzarella cheese into the pan. Any kind of cheese that mixes/melts easily will do. We like trying out different varieties of cheese. The last time it was goat cheese. The mexican three cheese blend that you get in the grocery store is also great for adding to eggs.




cooking-eggsNow reduce the heat to low flame, cover the pan and let it cook for a couple of minutes till the eggs are a lot less runny. You still want to keep them a bit runny in the end – don’t overcook.




blenderIn the meantime, lets make some smoothie. Nothing better than something healthy to drink along with your eggs. Take some oatmeal in a bowl, add double the quantity of water, and cook it in the microwave for 3 minutes. Take a blender, add the cooked oatmeal, a bunch of blueberries (any berries of your choice will work),a banana cut into pieces, and a generous quantity of yoghurt.Blend for a couple of seconds.

Then add some milk and some maple syrup to taste (honey works just as well). Continue to blend till you get a smooth consistency. Pour into glasses. Meanwhile, keep checking on the eggs once in a while.




cutting-eggsWe like them when they are still a wee bit runny. Lob off a piece of butter on top of your omelette and let it melt. Use a table knife (or wooden spatula) to cut it into slices while still in the pan.




breakfastFinally, toast a few slices of some really good bread from your local bakery. For those in Baltimore, she highly recommends (and I endorse) the sunflower flaxseed bread from Atwaters. Enjoy your meal!

Jun 4
Can’t connect to MySQL server on ‘server’
icon1 Krishnamurthy Koduvayur Viswanathan | icon2 development, programming | icon4 06 4th, 2010| icon3No Comments »

Its been a long time since I wrote anything here. So, I thought let me resume by sharing a little piece of information I gathered the other day. So, I have been using MySQL to manage some data related to my research. I have installations on multiple machines that I use, and recently I had to install it on another ubuntu machine. I did the following:

<code>sudo apt-get install php5 mysql-server apache2 phpmyadmin</code>

It worked fine, but then, my python script that runs on another machine began to complain that it could not connect to my MySQL server:

 Can’t connect to MySQL server on ‘server’

Now that was just ridiculous because this has never happened before. So I trolled and trolled till I found what I was looking for:

http://www.webmasterworld.com/forum10/6141.htm

So, turns out that there is this tiny piece of configuration information in your /etc/mysql/my.cnf file that says:

bind-address = 127.0.0.1

which essentially means that all connections coming in from anywhere other than the local machine will not be entertained. Remove or comment that line and restart your server. Things start working!

Sep 27
Rick Riordan at the National Book Festival
icon1 Krishnamurthy Koduvayur Viswanathan | icon2 books, general | icon4 09 27th, 2009| icon32 Comments »

I was at the National Book Festival yesterday in Washington DC where several authors including Rick Riordan, John Grisham, Jodi Picoult and the like did book signings and talked to their fans. The event by itself was sort of poorly managed because the management probably did not expect a crowd on such a big scale (the Smithsonian metro station was closed in the afternoon due to too much crowd!).

But all that apart, people who went with the intention of meeting their favourite authors had a successful day, and that was perhaps the only worthy reason to go to the festival because the book festival did not have any book stalls (other than a jam packed Borders tent selling only very specific books).

Anyway, so I wen’t to catch a glimpse of  Rick Riordan since I am an insane Percy Jackson fan.I got to the pavilion atleast 15 minutes in advance while the previous author was still speaking. After some pushing and jostling I finally edged into the tent and escaped the rain outside. There was hardly any place to stand but I positioned myself so that I could operate my camera.

His talk was quite funny in general and he gave his eager fans a glimpse of what is in store for them in the upcoming months:

1. There will a second Camp Half Blood series of books (yes you heard it right!) coming up soon. I forget if he mentioned when it will be out, but he mentioned that there will be more of Percy and Annabeth to come although Percy will not be the main character in the new series and there will be a new generation of demigods. The new series will probably be based on the next big prophecy that we encountered in “the last olympian”.

2. May next year is going to be about Riordan’s next novel that is based on Egyptian mythology. Now that is something that sounds really exciting. Riordan even read the first few lines from this upcoming book that he says is currently with his editor now!

3. Finally he talked about the Lightning Thief movie that is set to release in February next year. He mentioned that the role of Chiron will be played by Pierce Brosnan and that of Medusa will be played by Uma Thurman. Now that is some interesting cast.

Since I am travelling currently, I will upload pictures soon.

Jun 30
Using multiple applications with ASPNETDB
icon1 Krishnamurthy Koduvayur Viswanathan | icon2 development | icon4 06 30th, 2009| icon3No Comments »

As a web developer, I have used ASPNETDB several times to manage the membership and role information for my applications. It has been a while since I have done software development in ASP.NET. So when I try things now, I realize there are several small things that I knew at my fingertips back then, come with a little more effort right now. I hooked up a new application to use the ASPNETDB, and tried to create a new login. I got the error that the username already exists.

This was surprising, because it was a new application. I realized that the application was actually pointing to the same instance of ASPNETDB on my DB server. I knew that there was some way of isolating multiple applications in the same membership database. After a bit of research I recalled out to do it:

In the web.config file, look for the following section:

<membership>
<providers>
<clear/>
<add name=”AspNetSqlMembershipProvider”
type=”System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”
connectionStringName=”ApplicationServices”
enablePasswordRetrieval=”false”
enablePasswordReset=”true”
requiresQuestionAndAnswer=”false”
requiresUniqueEmail=”false”
passwordFormat=”Hashed”
maxInvalidPasswordAttempts=”5″
minRequiredPasswordLength=”6″
minRequiredNonalphanumericCharacters=”0″
passwordAttemptWindow=”10″
passwordStrengthRegularExpression=”"
applicationName=”/”
/>
</providers>
</membership>


Change the value of the applicationName attribute inside the providers element to then name of your application, and you are good to go!

Jun 6
Free Internet?
icon1 Krishnamurthy Koduvayur Viswanathan | icon2 general | icon4 06 6th, 2009| icon3No Comments »

This is a short post from the Greater Rochester International Airport as I wait for my flight. No other service at an airport makes me happier than free internet. The first time I saw this was when my flight to Memphis was delayed by a couple of hours and I was stuck waiting at Charlotte Douglas Int’l airport. I saw an unusually high number of people using their laptops and somehow got the feeling that there might be internet connectivity. I booted up my machine and to my pleasant surprise, I was right. I was able to establish a secure connection to my school network and get some work done while I waited. For internet savvy people like us, there isn’t really much you can do if you are stuck waiting at an airport, and a free connection just saves your day.

But I was wondering what is it that allows an airport to host a free wifi connection. Large and prestigious airports like the O’Hare Int’l airport at Chicago do not have a free wifi connection. What is it that prevents them from doing so? What is the business model followed at the lesser known airports that lets them provide this service to travellers?

Mar 16
Shuffle shuffle
icon1 Krishnamurthy Koduvayur Viswanathan | icon2 programming | icon4 03 16th, 2009| icon3No Comments »

Several weeks ago, I found myself thinking, how I could shuffle a list/array given to me in a random order. This is a typically commonplace thing to do in several applications: online card games, your favourite music player etc.

The interesting thing about this problem is how some naive approaches, even though easy to code and efficient enough, do not achieve the desired randomness.

Lets define the problem: You have an input array which has elements in positions 1 through n. The objective is to produce a random permutation of the array. By a random permutation, we mean to say that each permutation of the array is equally likely. So a truly randomized algorithm will generate each permutation with a probability of 1/n!

The first approach that comes to mind is the naive approach of generating a random number between 1 and n for each element in the array and placing the element at the position indicated by the random number. This could be accomplished by using another auxillary array and placing elements into the new positions generated. The pseudocode could look something like the following:

NaiveShuffle(A[1...n], B[1....n])            //randomly permutes the elements in array A
for i from 1 to n
random <- RandomNumber(1,n)
B[random] <- A[i]
for i from 1 to n
A[i] <- B[i]

The above approach is very crude in the sense it uses an auxillary array and also parses through the array twice instead of just once. Still, the worst case running time of the above algorithm is O(n).

Random(1, n) generates a random number 1 and n (both inclusive). We assume that the random number generator generates truly random numbers in the interval specified. Also, we assume some kind of collision resolution mechanism. We are assuming that this method returns a random number in O(1) time.

All that said, a O(n) algorithm is not bad at all for this purpose. There is only one problem, this algorithm is WRONG! (hah…fat chance, didn’t we name it a naive algorithm?). Why is that? This is because in every iteration, we generate n possible choices. Since there are n such iterations, the total number of permutations generated is n.n.n.n…….n times = n^n

The  total number of permutations possible while shuffling an array is n!. Since n^n is not exactly divisible by n!, there have to be some permutations which appear more frequently than the others (basic pigeonhole principle). Thus this naive algorithm does not generate truly random permutations.

Lets try something else. We generate a random priority between 1 and n^3 the Random(1, n^3)  routine, and assign a it to each element in the array. Then sort the array based on these weights.

e.g. if the original array is A<1,2,3,4> and we generate priorities randomly as P<34,56,8,77>, then when we sort array A based on the increasing order of the priorities assigned using array P, then we get the shuffled array as <3, 1, 2, 4>.

We used the interval [1, n^3] to generate priorities so as to reduce collisions. I will not delve into the correctness of this algorithm. The running time of this shuffling by sorting algorithm depends on which sorting algorithm we use. Typically it is Big-Theta(n lg n).

Another approach to solve this problem, is to shuffle by swapping:
Shuffle[1...n]
for i from 2 to n
temp = Generate(x from 1 to i)
swap(i,temp)

Notice that the interval for generating random numbers keeps decreasing. For the first iteration, there are n choices. For the 2nd iteration, there are (n-1) choices and so on.

Hence the total number of choices generated by this algorithm is: n(n-1)(n-2)…..3.2.1 = n!

which is exactly equal to the total number of possible permutations. Moreover, since we iterate over the array only once, this algorithm runs in O(n) time.

Jan 17
The White Tiger: Aravind Adiga
icon1 Krishnamurthy Koduvayur Viswanathan | icon2 books | icon4 01 17th, 2009| icon31 Comment »

TheWhiteTigerCoverThis novel, published in the year 2008 won the Man Booker Prize in the same year. I bought the book out of instinct, although I haven’t had a very pleasant experience with a couple of other books that have won the same prize. Many people said that the books that won this award were difficult to read and not well accessible. One of my friends gave me a very bad review of the book, but I had no choice but to read it since I had already bought it. I approached the book without any pre-concieved  expectations and I was pleasantly surprised. While I did not bother asking my friend why she did not like the book, there are several reasons why I would recommend the book to any reader.
First of all, the book is an effortless read, and the story flows at a good pace. The story is narrated in first person by Balram Halwai, who is the protagonist. It is his account of his rise from lowly origins in a village in rural India amidst crushing poverty where even the basic amenities of life are hard to come by; to his current position as a successful entrepreneur in a big city. But the story is not one of inspiration as one would imagine from such an account. Instead it is a story full of intrigue, corruption and crime, but narrated with an innocent and brutally honest tone that makes you chuckle throughout. The story takes a swipe at the corrupt political system of the country and how the people are forced to play along with it if they want to survive. What moves you while reading this story is how the honest and hardworking village boy is transformed into a shrewd, scheming man who does not hesitate to take the law into his own hands.
Adiga has done a masterful job in this darkly comic debut novel of his with a sharp observation and sardonic voice.

Jan 15
Unaccustomed Earth: Jhumpa Lahiri
icon1 Krishnamurthy Koduvayur Viswanathan | icon2 books | icon4 01 15th, 2009| icon3No Comments »

UnaccustomedEarth Edited Cover pageThis is Jhumpa Lahiri’s third piece of work (after Interpreter of Maladies and The Namesake). Sticking to her theme, this is also a set of short stories, based on the lives of expatriate Bengali parents and their american-raised children. I used to really want happy endings from books and stories I read. Jhumpa Lahiri is not someone who would give me that. Her stories are colorful, full of real characters that you would come to love; her writing is superlative and flows with an effortless pace; but the stories end abruptly at a crucial emotional juncture when the characters are at some kind of an emotional high point. I am always left wanting for more, but I end up accepting the stories for what they are.
One thing I noticed in her first two works is her brilliant descriptions of food and cooking, so much so that I used to be amazed at her culinary knowledge. I was looking forward to the same, but found that missing in Unaccustomed Earth.
There are two parts in the book: the first one has 4 stories, and the 2nd part has 3 stories. I did not realize till the middle of the last story that the 3 stories in the 2nd part are actually related: based on the same two protagonists. Each story in the trilogy are spaced apart by a number of years .You could call me dim for not figuring this out earlier, but these stories are just like the previous ones, and each one could be read without any bearing on the previous ones, and none of them give any direct indication of a connection, except for the names of the characters (which could have been anything in any of the stories without affecting the plot). The first two parts are narrated by the two individual characters, based around their separate lives. The third story is narrated by the author, linking the two characters together finally. Being a fan of different narrative styles, I loved this.
Finally, Jhumpa proves that she can write not only about life in the US, but also Europe, where a considerable portion of the final story is based.
Brilliant piece of writing. Highly recommended reading.

« Previous Entries Next Entries »