Sunday, March 15, 2009

iTunes for Ubuntu

Since long I have been finding a replacement for iTunes on Ubuntu, but in vain. I don't want to use CrossOver Office as it's proprietary, and don't want to install the bloated Windows Vista in VirtualBox and waste many GBs of storage just for the sake of one iTunes. Since making the switch to Ubuntu/Kubuntu twins, I haven't missed Windows at all. In fact, now I am realising what I was missing with OEM windows running on my Dell laptop. Nowadays, I feel disgusted even at the thought of going back and installing Windows.

The next thing on my agenda is of-course trying to get iTunes running through Wine, though, I have read pretty many comments about problems in this approach. I am not very positive about it.

That leaves me with the thought - why doesn't Apple come out with an iTunes version for ubuntu (or linux in general)? Especially when Ubuntu has gone mainstream with a bang, with many hardware manufactures (like Dell) shipping their units with Ubuntu. Though I don't know exact figure of ubuntu users, given the life in the ubuntu community and forums, it's easy to guess that there is a sizeable amount in there.

If you are an ubuntu user, and you think on the similar lines, I request you to sign the iTunes for Ubuntu Petition.

There are currently 2000 odd signatures there. It doesn't take time to sign the petition. Every sign will help, so please sign the petition.


Saturday, March 14, 2009

Skype / Ekiga on Ubuntu 8.04 Hardy Heron

As GTalk doesn't support Linux for VoIP communication, I needed some alternative VoIP software, that works well on Ubuntu. There were couple of them Ekiga and Skype.

Ekiga comes pre-installed in Hardy. So I started with Ekiga and registered for a SIP address on ekiga.net. But unfortunately, ekiga failed to communicate with sound hardware on my Dell Vostro 1500 laptop. So I downloaded Skype for Ubuntu. Same story.


So I searched the net, and finally got it working. It turned out that the pulseaudio package was the culprit. Skype and Ekiga both don't work with pulseaudio. They work with esound package. So I decided to remove pulseaudio and install esound instead. Before removing pulseaudio, I disabled PusleAudio Session Management from System->Preferences->Sessions.




And then -

killall pulseaudio
sudo apt-get remove pulseaudio
sudo apt-get install esound

On some setups (probably on intrepid), it might be required to remove a file from /etc/X11/Xsession.d so that the Ubuntu login process doesn’t break.

sudo rm /etc/X11/Xsession.d/70pulseaudio

This is not required on Hardy though; there is no such file in Hardy. I think disabling of PulseAudio Session Management, does the trick instead.

After installing esound, and restarting both skype and Ekiga, though I could hear Ringing, and Sound Outs from Skype, the mic was still not working in test call. Then after playing with the system for sometime I realised that the mic was muted. I had to enable mic boost control from Volumn Control->Edit->Preferences and tick Capture and Capture-1.



And then, when I un-muted the mic, skype worked flawlessly. And after skype, Ekiga also started working when I set Audio In and Audio Out devices to HDA Intel.


Interesting Part

Now, here is the interesting part. After playing around with skype and ekiga for a lot of time, I came to know that I had an uninterruptible process (elisa media player) parented by a python zombie process. I rebooted the system, since there is no other effective way to get rid of these zombies, and elisa was consuming 100% of my CPU2 (at least that's what the system monitor reported).

Ubuntu got stuck during reboot, I am not sure for what reason. So I had to power the system off. When I powered it back up again, I could login and there were no error messages related to pulseaudio. But the UI was totally unresponsive, as if it has hanged. iThen I switched back to command line mode using CTRL-ALT-F5, logged in, removed esound and reinstalled pulseaudio.

sudo apt-get remove esound
sudo apt-get install pulseaudio
sudo reboot


And after reboot, the UI was back to life again. So it was the pulseaudio which caused this freeze. Out of curiosity, I started Skype and made a test call. And to my surprise, both mic and audio playback worked!!! Now this was not expected, as skype initially refused to work with pulseaudio. So did ekiga.

I started the PulseAudio Session Management as well, still Skype and Ekiga worked perfectly.


Conclusion

It seems that, on Hardy, Skype and Ekiga, both work with pulseaudio, and it was probably due to  the zombie process of elisa media player hogging the sound device that caused problems with audio playback and mi, in Skype/Ekiga.

So finally, it seems that, on Ubuntu 8.04 Hardy Heron, you don't need to remove anything or install anything, to get Skype and Ekiga working!!! And this whole post of mine turns out to be a pure waste of time and energy!!!! :(


An Update -

Just in case somebody is interested, there is a very informative post about pulseaudio and how to get it working, on ubuntuforums.org - HOWTO: PulseAudio Fixes & System-wide Equalizer Support


Technorati Tags: , , , , ,

Sunday, March 1, 2009

Setting up Debian APT behind Proxy Server

Setting APT to run behind a proxy server is a pretty easy and quick procedure. Login as root user, and then All you need to do is set http_proxy environment variable in http://username:password@proxy.server.com:port_no/ format.

debian:~# export http_proxy='http://shreyas:myPassword@myproxyserver.co.in:8080/'
debian:~# echo $http_proxy
http://shreyas:myPassword@myproxyserver.co.in:8080/
debian:~# cat /etc/apt/sources.list
#
deb http://ftp.us.debian.org/debian/ etch main
debian:~# apt-get update
Err http://ftp.us.debian.org etch Release.gpg
Could not resolve myproxyserver.co.in
Ign http://ftp.us.debian.org etch Release
Ign http://ftp.us.debian.org etch/main Packages/DiffIndex
Err http://ftp.us.debian.org etch/main Packages
Could not resolve myproxyserver.co.in
Failed to fetch http://ftp.us.debian.org/debian/dists/etch/Release.gpg Could not resolve myproxyserver.co.in
Failed to fetch http://ftp.us.debian.org/debian/dists/etch/main/binary-i386/Packages.gz Could not resolve myproxyserver.co.in
Reading package lists... Done
E: Some index files failed to download, they have been ignored, or old ones used instead.
debian:~#

Here as the proxy server address is fictitious, apt reports an error. But that's not the point really. The point is, if you observe, what apt does with the http_proxy URL is, it separates out the host (in this case, myproxyserver.co.in) from the URL. And how does it do that? Simply by finding '@' sign in the http_proxy URL and then taking the part from '@' to ':'.

This is fine, but only as long as our password is plain alpha-numeric. The moment password contains a special character, like an '@', this whole thing goes for a toss.

debian:~# export http_proxy='http://shreyas:my@Password@myproxyserver.co.in:8080/'
debian:~# echo $http_proxy
http://shreyas:my@Password@myproxyserver.co.in:8080/
debian:~# apt-get update
Err http://ftp.us.debian.org etch Release.gpg
Could not resolve Password@myproxyserver.co.in
Ign http://ftp.us.debian.org etch Release
Ign http://ftp.us.debian.org etch/main Packages/DiffIndex
Err http://ftp.us.debian.org etch/main Packages
Could not resolve Password@myproxyserver.co.in
Failed to fetch http://ftp.us.debian.org/debian/dists/etch/Release.gpg Could not resolve Password@myproxyserver.co.in
Failed to fetch http://ftp.us.debian.org/debian/dists/etch/main/binary-i386/Packages.gz Could not resolve Password@myproxyserver.co.in
Reading package lists... Done
E: Some index files failed to download, they have been ignored, or old ones used instead.
debian:~#

Now if you observe, because of the '@' in password, apt thinks the username is 'shreyas', password is 'my' and the host is 'Password@myproxyserver.co.in'!! Try using escaping the '@' with a '\' and you will still get the same result.

This is the problem I had been facing since last couple of days. Few of the other guys have also reported this problem in other debian and ubuntu forums, and it's around for almost an year now. It has also been filed in Debian Bug Tracking System (BTS) as bug #500560.

Though this might seem as a rare occurrence, passwords with special characters are a norm in password policies of several organizations, as it is with mine. So I had no option but to either say goodbye to Debian, or fix it myself. And given the regard and love I have towards Debian, I had to at least have a go at fixing the bug. Saying goodbye to such a fantastic distro just because of this minor problem would have been very painful.

Bugfix for APT Bug #500560

And the bug is fixed! As I said, what APT used to do was to look for '@' and a ':' just after that to resolve the Host from http_proxy URL.

After the bugfix, now APT supports escape character '\' before '@'s and ':'s, formulates the correct password. For example, if your password contains an '@' character, all you need to do is prefix the '@' with a '\' while exporting the http_proxy environment variable.

debian:~# export http_proxy='http://shreyas:my\@Password@myproxyserver.co.in:8080/'
debian:~# echo $http_proxy
http://shreyas:my\@Password@myproxyserver.co.in:8080/
debian:~#

I have prepared this bugfix patches for both Lenny and Etch distributions. And they are available at my bugfix post.

For ready reference, here are the cross links to the patch files – 

  1. Debian Lenny - Bug #500560 Patch for APT v0.7.20.2

  2. Debian Etch - Bug #500560 Patch for APT v0.6.46.4.1

These patches have been tested on a Debian 'etch' 4.0 r4a distro running on a Dell Vostro 1500 latop (core 2 duo, 2GB).

Please report if you face any issues with the patches.







Sunday, February 1, 2009

Ter’RAFA’ic ….!!!!

Hard to digest this, very heart-breaking, in fact very very heart breaking; but you have to give it to the grit, fitness and most importantly, the finesse of this Spaniard. What a match!

I couldn't watch the 2008 French Open final, but I watched the 2008 Wimbledon final with my eyes wide open, and jaw hanging; wondering how the Mr Perfectionist could let this kid go past him. I didn't believe in Nadal being a better player than Federer. After all Federer was grace personified. He didn't have a powerful serve, but still he could produce aces time and again. He didn't have a very powerful fore-hand or a back-hand. But his back-hand passes, fore-hands flirted with the lines. They were so precise. It was not the power, but the finesse and precision that he had in his game, that always awed me. That's why even when Nadal was powering his game ahead with those booming forehands and power-packed shots, I never thought of him being in the same league as that of Federer.

In the 2008 Wimbledon final, though Nadal did play well, it was Federer's tally of unforced errors, and that very low percentage of those all important first-serve-ins helped Nadal's cause in a great way. If you cannot get your first serve in, then automatically you are stripped off of your ability to produce those aces and lose out on the ability to put your opponent on the backfoot, as the second serves are always the plan-b kind of safer serves, i.e. slower serves. Incidently, you end up dropping way too many of your serves. Secondly, when you keep committing those unforced errors, it's a free lunch for the opponent. You end up losing those crucial points which should essentially have been yours. And this was what was turning out to be the bane of Federer in that epic 2008 Wimbledon final. It was Federer sans his ruthlessness and precision in that match.

After that Wimbledon final, I kept thinking of Nadal's game as display of raw power and fitness rather than finesse. Not any more, after today's 2009 Australian Open final. What we saw today, was an exhibition of pure grit and awesome tennis from a 22 year old. He came into an Australian open final for the first time, and with a brutal 5+ hours of tennis played just a day ago. Federer with all his experience, with his form, and with a rest for two days, obviously came in as favourite. But even after these all odds, the way this golden-retriever tormented Federer with his ability of fetching even dead sure winners out of nowhere, and then producing an impeccable pass right under the nose of Federer at the net, was simply astounding to say the least. The whole time I was wishing and hoping and praying for Federer to win, but those extra-ordinary rallies and Nadal's unbelievable winners which would eventually end those rallies, just shocked and awed me to the hilt. They carried a hallmark of champion with a never-say-die attitude. It was not mere power, it was finesse and elegance written all over his shots. The very qualities that took Roger Federer where he stands today, or rather where he used to stand few months back.

This doesn't mean that Federer didn't play well. In fact, there were flashes of the old Federer with the supreme confidence and finesse and elegance during the start of the third set. He looked to be in control of the game, in control of the court during that time. But then again probably Nadal got into his head somehow, and those unforced errors started creeping in again. Getting into the head of a perfectionist champion, with a super impressive record of 13 Grand Slam championships, and then outperforming him in his own game, is something only a champion can do, I am convinced.

I guess, for this reason, this 2009 Australian Open final truly marks the end of an era of one champion, while one other intimidatingly fit, young champion gets ready to shake the scene, and shock-n-awe everybody.

Best wishes to Rafa from a heart-broken Federer fanboy.

Thursday, October 2, 2008

The Py-t(h)onic

Few weeks ago, out of sheer curiosity, I started to have a look at this new scripting-cum-object-oriented language capable of doing almost everything that C++ can do, and more. And I can't tell how mesmerized I am with this fantastic language. Thank god, I thought about giving Python a go. A whole new world has opened up for me. Because of the virtuosity of Python, now I am feeling very confident and capable of actually leveraging various ideas that I keep thinking about. Previously, with C++ it was a bit difficult because its core set of functionality is limited, and it's a pain to go searching for good third-party libraries for each and every aspect of desired functionality, may it be text processing, regexes, web-development, xml processing, or simply, connecting to - say - a mySQL database. Count the overhead of typing and thinking so much just for some small (maybe a PoC) snippet, and you subtly lose the all-important enthu to get it going.

With Python, it all becomes very much palpable. The language itself comes with tones of important 'batteries' of functionality, already included. You can do almost everything conceivable with Python, in a very small amount of time, and that too in a concise and goody-goody way in all aspects. Because of this, you tend to spend almost all your time on solutioning, rather than wasting it in that unnecessary wrestling-with-finer-aspects of the base language. If you are a C++ programmer, and have developed a huge liking for the language (like I have), and hence are adamant enough to even think about any other language (like I was), I would strongly recommend you to spend some time with Python. You won't regret it.

Here I don't intend to project Python as an alternative for C++ (haah!) as there will always remain a performance penalty in an interpreted language as compared to a compiled language (which happens to be closer to the system). But it also depends upon how many of our ideas are actually performance-centric. If you think a little performance gain (think quad-core) can be squandered in favor of an impressive line-up of features, Python is for you. Few of the features offered by Python are – very clean syntax, loads of functionality already included in the language, strong support for OOP paradigm, better portability. Python offers an all-in-one development platform which can be used to develop everything right from the lower-level database persistence mechanism to the web-based GUI. All this, in a very graceful way. That's one of its biggest advantages.

As you might already be aware, the new C++0x standard is coming up with a host of 'new' features for C++, like lambda functions, tuples, regex processing, multi-threading support etc. But if one has to compare, for Python, this is not new at all, it is already present in there, and is very easy to put to work. That is again one more advantage in using Python – no overhead involved for using heavy-duty functionality, with minimal error handling requirement. For example, if you want to use a dictionary in Python, all you have to do is –

Mydict = {<key1>:<value1>, <key2>:<value2>}

That's it. As simple as that. Now you can access the dictionary like a dynamic array in C/C++.

What is more, you can pack the punch in you code in a very concise manner, by clubbing a lot of functionality together. Take a look at following code –

While most of the code is easy to read and understand, for those finding it difficult to understand, let me state my intention behind writing this small snippet of code. Generally, in the unix world, most of the utilities expose their (powerful) functionality through command-line-arguments. Hence, processing these command-line-arguments is one of the most basic requirements, we can say, for a unix utility. Now neither C nor C++ offer any help in getting this done quickly. So what entails this requirement, is the head-ache of string processing, multilevel switches, and a lot of error handling. If you have worked in such a situation before, I am sure, you would empathize with me.

Now in that context, have a look at the python code snippet above. The program defines couple of functions to handle different command line args. Then it defines a dictionary with the command-line-arg and its corresponding handler as the key-value pair. After that, there is no switch, no string processing, nothing. All it does is, pass the 1st argument as a key to the dictionary, get the corresponding handler function, and call it. If required, pass on the remaining command-line-args (if any) to the handler function. All of this in one single statement! It is not only quick, it is elegant too, as you can see. If you come back to your code even after few months, you won't get lost in the quagmire of huge amount code that has very little to do with the actual intention of writing that program.

It is this utter simplicity and elegance offered by Python, that hooks you to this language.

I can tell you about one practical example at my workplace, where I could leverage Python to do an important job of analyzing a log file, very effectively, and that too very quickly.

I wanted to analyze a log file, generated by a time-profiler class which I had written to keep a watch on performance gain achieved through various tuning activities. The time-profiler utility logged method-name, number of records processed and the time taken for it all. Now since the number of calls were in the range of around 40K, visual analysis was not on the cards. So I had to write an utility which would find out the first five calls taking maximum amount of time and corresponding number of records processed, for a given method-name.

For this, I required to process the command line to understand which method is to be analyzed. Then I needed to read the log file, find out all the logs from the logfile which correspond to the given method-name and store the records-processed and time-taken figures with a one-to-one relationship. After that, one sort operation would be required to get the first five records, with maximum time-taken figures. After this sort, the one-to-one relation between the number-of-records-processed and time-taken shouldn't be lost at any cost.

Had I have implemented this in C++, I would have wasted a lot of time in writing a lot of code dealing with the nitty-gritty's of above mentioned things. Instead, I decided to give Python a try, even though I wasn't very much familiar with Python back then.

I came up with a working utility in almost half an hour doing everything mentioned above!!!

This became possible because, as I have been stating again and again, Python offers an impressive set of inbuilt functions and modules, which can effectively do away with the need to spend time on the basic needs. For example, I needn't spend much time on things like –

  1. Processing the command-line
  2. File reading and string processing to find out which lines belong to given method name
  3. Storing the time-taken and number-of-records-processed as key-value pairs in a dictionary (didn't require any STL manipulation overheads)
  4. Sorting the keys (time-taken) in descending order (didn't require any operator overloading)
  5. A LOT of error handling at every stage

Everything was intuitive and hence I was able to find out references for desired functionality, very quickly. I didn't need to spend a lot of time into reading the manuals to find the right method for the job, then check for type-compatibility (due to dynamic typing, another 'controversial' feature of Python) etc etc

That was when I realized, how productive one can get with this powerful language. Allowing the user to focus on the solution, rather than the underlying language, is the most celebrated feature of Python. And I would strongly suggest you taste (and test) it once.

Monday, August 18, 2008

Biking: A Visit to Torana Killa

How often does it happen that you plan an outing after a grueling week and the outing turns out to be an experience to be treasured for a long long time? Well, that is what I felt after I came back from my half-day bike tour en route Torana Fort, one of the jewels in the Maratha Empire setup by Shivaji Maharaj in his time.

These days i.e. after I got my bike, on every Saturday morning, I go out for a short outing somewhere nearby Pune. I have found that the rejuvenation that you get from such an outing is a perfect medicine to counter the stress that gets to us during the week's time. Especially for a software engineer. To bust the stress we usually splurge our hard-earned currency on things like shopping, movies, eating out etc etc. While I am not saying that these are wastages, I do believe that these things don't always bring with them the peace-of-mind, the happiness that we are seeking in the first place. They stop making any difference after a while. The 'gyan' part aside, all I am trying to say is if we are ready to spend a couple hundred bucks on petrol, there is a pleasant surprise awaiting us. All that you need to do is just feed your bike with enough juice to last for around 100 miles. There are a lot of scenic sites that will leave you spell-bound. The greenery, the fresh air, the silence, the solitude, the history (if you are inclined) of the places, the ghats, the passes, the roads less travelled, the laid-back and completely out of touch villages, the little children along the route and their antiques-due-to-ecstasy seeing a bike (which happens to be yours), the 'wow-factor' in their eyes and a big smile on their face ….. …. …. … it's just amazing. Whatever it is, it's very rejuvenating, and it goes to have a calming effect on you. Anyways, enough gyan.

So, I started for Torana fort on my bike on one fantastic Saturday morning of 9th August 2008. There was a slight and pleasant drizzle, not much wind, completely overcast, no sun. In short, a pleasant monsoon weather, perfect (IMHO) for a long bike ride. For the starters, you need to go to Sinhagad while going to Torana. From Sinhagad, take a right towards Khanapur and from Khanapur, there are two routes to go to Torana. Madhighat-Pabe pass-Pabe-Welhe-Torana Fort is one route. While the other one is to head straight to Panshet Dam and from their go to Welhe using the Kadhave Pass. I used the former route while going, and the later one while coming back.

1 Road leading to Khanapur - Near Sinhagad

After you take a left from Khanapur village, starts a very scenic ghaat called Madhhi-ghaat. It's a kind of dense forest on both sides of the road and the atmosphere is like - as if some big cat might pop-up from any side of the road – you know - just to say hi to you.

2 Madhhi ghaat starts ...

This road takes you to the top of the hill and you can find a spot there from where you can enjoy a breath-taking view of the valley down below. I parked my bike near a turn where I felt like there is a good spot out there. The drizzle was heavy now. I was in a hurry to get there and I was finding stones to hop on, I stepped on one and arrrggghhh … cow-dung (curbed the urge of using the BS word)… was what is was! Fresh at that. For next couple of minutes I cursed the eternity while simultaneously I was trying to get that thing off my floaters. Finally when I came back to 'senses', I found this amazing view into the valley below. Eventually I realized, I was actually standing on top of the hill.

3 A Dream home in a heaven like this would satiate one for a life-time

By now I was really missing my camera. I had to use my cell-phone based 2MP camera to capture this heavenly beauty.

I roamed around the hill for some more views and then started back towards Torana. Along the route, I found the roads to be in drivable but bad condition. Also there were no boards on few of the bifurcations. I lost my way a couple of times because of this and had to come all the way back from some totally unknown village which has only one small bridge as a link to the outside world. Check out the bridge in the picture below –

4 The lifeline for a village - only 1 bike can go in any one direction at a time!

The bridge was so narrow (and in a very bad condition) that only one bike could somehow manage to cross it in either direction at a time. The biker would be in constant fear of the bridge collapsing due to the weight and falling into the stream below.

Then started the Pabe ghaat leading to the Paabe khind. This portion being remote from the hustle-bustle of the Pune city, the traffic on the road was almost non-existent. Hardly a few bikers here and a few there. The area is full of huge mountains, and hence very scenic because of the greenery in the monsoon. So overall, the equation was - small roads, absolute silence except for the bird-chirping, huge mountains, nobody on the roads, zig-zag turns through the ghaats, splendid views on the valley side of the ghaat and the distant greens and mounds and mountains visible due to the height at which you are driving. Truly it's an experience to savor.

5 Huge hills draped in green - very poetic

6 Am I in Europe?

I let the view sink in and slowly reached the top of the hill near the pass – Pabe Pass.

7 Pabe Pass - bears a board indicating routes for the forts in the area

After the Pabe pass, starts the road down-hill to the Pabe village. This latter half of the ghaat is equally scenic and breath-taking as was the first. From Pabe village, there is a bifurcation. For Rajgad fort, you need to take left, while for Torana you should take right. So I took right, and in 15-20mins (because of the good roads and a hitch-hiker cum guide) I reached the base village of the majestic Torana fort – Velhe. As per the local guy who hiked a (free) ride on my bike from Pabe to Velhe, the Torana fort is very dangerous to trek during monsoons because of the very steep and slippery routes and other live dangers like abundance of snakes and scorpions. According to him, summer is the best time around the year for this trek. So I shelved my (non-existent and very weak if existent) plan of parking the bike somewhere and actually doing a trek uphill, till the summer. Interestingly, I hear from my friends, that they don't allow you to stay there on Torana fort in the night as the locals fear there are ghosts up there. Even the regular people from the village always climb down in the evening. This proposition makes the trek and the stay, even more adventurous.

8 The majestic Torana fort as seen from the road to the base-village of Velhe

So with a desire of trekking on the fort in the near future, I started my journey back towards home. While coming back, I decided to take a different route than the one that I took while coming. So rather than going through the Pabe pass, I started for the Kadhave pass which connects Velhe and Panshet dam and the surrounding villages. Again, the Kadhave pass is the route that Shivaji Maharaj took while starting out for a famous attack on Surat to win it and connect it to his empire. So being a historically inclined, it was an added turn-on for me to imagine and live the things, the way people would have lived four centuries ago.

Initially it looked like I am in for a majorly pleasing route back home. Initially I found a weird animal farm which hosted the Imus – some creatures that looked like an ostrich. I was seeing them for the first time in my life.

9 Imu Farm

Then next on my way back, I found a waterfall big and noisy and scary enough to give an adrenaline dose to my fatigued mind and body.

10 Big, very noisy and hence scary waterfall, that I met in the ghats while coming back

The noise, the size, and the force with which water was flowing really made me nervous at the thought of doing what they call as white water rafting. I really love and fancy being part of a team that is in to these kinds of adventure sports. It's really fearful to wrestle with that monstrous a force. It sets my heart pounding. But I subscribe to the school of thought where they say to face your fears and do the things that scares you a lot. That helps in building your guts. That makes you strong. I find this thinking, somewhat similar to the Chinese acupressure technique, in which they ask you to keep pinching that acupressure point in your body that hurts most when pinched. After incessant pinching, that point stops hurting anymore and your associated ailment goes away with it.

Anyway, I took some pics of the waterfall from different angles and again started my reverse journey. From here started my ordeal. Even through the surroundings were scenic and beautiful, I was driving for almost 4-5 hours now and my body had started talking. I was feeling a bit of travel fatigue. To make the matter worse, the road that I was driving on now, had started deteriorating very fast. It reached its pinnacle of being a pain-in-the-ass when the actual ghaat section started. To top it all, I lost my way and went deep into a pathetic road toward a village called Antroli. A board at a bifurcation had been set to show the wrong direction! The damn thing cost me almost half an hour of highly painful driving experience with my lower back going for a toss. I started for Paanshet dam again, this time of the correct route, but still the road condition was not at all good.

11 The pathetic road in the Kadhave Ghaat section

The road was very small, just enough for a couple of bikes to squeeze in somehow. Other surprising thing was, during my whole journey of around 20kms, I didn't meet a single bike, let alone a 4-wheeler, passing in either direction. Not even a passer-by was there treading that route! If your bike starts throwing tantrums mid-way, you are done. You don't have any other option but to beg your bike for mercy. If something happens to you, there is nobody to help you there; absolutely nobody. The place is completely deserted.

So after driving my bike through that scary route for almost an hour or so, at a miserable speed (because of the road conditions), I reached the Kadhave pass.

12 Kadhave Pass

From the other end of the pass, one can have an amazing view of the valley covering the Paanshet and Varasgaon dams and adjoining areas.

13 View of the Valley from the other end of Kadhave Pass

Apart from the view, there is a very little encouragement from here, as you can see that for the next 10-15kms you have to traverse a similar torturous route, which has been killing you till now.

With a lot of frustration and cursing, I somehow completed the punishment and once the route came back to being smooth, my bike was racing towards pune at a blinding speed of around 70-80kmph. I was consistently touching the nineties for small durations. The speed was again bringing back my spirits. The road was smooth, and heads were turning when my bike passed. So it had started getting pleasant again …. I was quickly forgetting the pain in the last leg of my journey and the blowing wind, raining skies, scenic ghaats, and the valleys and mountains laced with a lots of shades of greenery everywhere, were soothing the mind …. I was feeling very relaxed and rejuvenated …

Wednesday, August 6, 2008

Sex and the City

I have become a fan of Sarah Jessica Parker after I saw this movie. I haven't seen any of her other movies. Neither had I seen the original soap which aired on HBO by the same name. So the movie was a complete surprise for me … a pleasant one at that. Everything about this movie clicks. The movie doesn't have a 'strong' storyline viz-a-viz a Bond movie or a Batman movie. It's a story about four New York women, who happen to be close friends, and their intermingled lives; the lead story being that of Carrie Bradshaw (Sarah Jessica Parker) and her boyfriend (or manfriend as she calls him) Mr Big, and what happens in their lives when they decide to marry on Carrie's insistence as she wants to be a smart girl and have home for herself.

One can very much relate to the movie and it appears to be very realistic at many points. One would be when she throws her cellphone into the sea out of anger, and comes back to New York, the movie shows her disgusted about having a new New York extension for her new cell, as opposed to her older one which happens to be a central New York extension. Another would be when the marriage is over in a shocking manner, and she is at her friend's house, when it dawns on her that she no more has any clothes to wear apart from her wedding gown as she had moved into her new apartment (her after-wedding love-nest) and filled the (superb) closet (prepared for her by Big as promised) there with her clothes. Any other director wouldn't have given a damn about these 'trivial' things, but this is where this movie stands out.

Smart, humorous, touching dialogues is yet another reason one remains glued to the movie. The chemistry between Big and Carrie is very graceful. Add to that the scintillating smile of Sarah Jessica and the innocence that exudes from that effortless expression, and it becomes a treat to watch this movie.

The scenes that I liked a lot from the movie are when Carrie and Big are discussing about a possible marriage when Big says that he wants Carrie, and if marriage is the way that will make her happy then he won't mind it either. Or when in the final sequences, she goes to pick her $450 shoes from the apartment closet (because the new owners are due), finds Big standing there, runs into his arms narrating it as love taking over logic, and then explains to him the 'fun' part in their ordeal as – 'all the sorrows and agonies in their life started when they decided to live happily ever after!'

All in all, a fantastic movie. Must watch, especially for those who love watching romantic movies with scintillating dialogues and fantastic chemistry between lead characters.