Monday, August 31, 2009

Dual-booting Thunderbird

I've a Windows-Linux dual boot setup. I've retained my Windows installation mainly for my mother who keeps resisting the transition to Linux (by 'Linux', I do definitely mean 'GNU/Linux'). Anyway, after Outlook Express choked on her mailbox (full of funny photos and PowerPoint presentations, baby snaps and all those valuable info emails), I have succeeded in porting her to Mozilla Thunderbird. Hoorray!

Anyway, that's not the purpose of this post. I've been using POP to fetch my email (both from Yahoo and GMail) with Thunderbird. I'd like to use my email system from both Windows and Linux. So, I've been using a handy Thunderbird setup for the past few years. So, I thought of documenting it in case anybody finds it useful.

This page says - 'Mozilla applications store your personal settings, added extensions and themes, and user data such as bookmarks, passwords, cookies and mail in a "profile"'.

So, the trick in having your mail accessible from both operating systems is to have Thuderbird installed in both, and make them share a common profile folder. Simple, isn't it?

To begin with, you need to set up a 'profile' for you. You can use the 'profile manager' for this purpose. Obviously, the profile folder must be on a FAT32 or NTFS partition that's accessible from both Windows and Linux. So, make sure you have such a partition and that it's mounted automatically on boot by Linux (put it in /etc/fstab).

Now, let's go through the steps to set up Thunderbird on Linux.

1. Boot in to Linux

2. Make sure you exit Thunderbird completely

4. Start the Thunderbird profile manager by executing: thunderbird -ProfileManager

5. Click on 'Create Profile' to create a new user profile for you.



6. Enter a profile name and choose your profile folder (better create a new folder on a shared partition) and click 'Finish'.


7. You may now choose to select the new profile and select 'Don't ask at startup' option.

8. You can checkout the profile settings by opening ~/.thunderbird/profiles.ini. Mine looks like this:
[General]
StartWithLastProfile=1

[Profile0]
Name=Syam
IsRelative=0
Path=/mnt/f/Thunderbird/profile
Default=1

I guess all entries are quite self-explanatory.

Now to configure your Windows installation of Thunderbird:

9. Reboot in to Windows

10. Make sure Thunderbird is not running

11. Edit %AppData%\Thunderbird\profiles.ini

12. Create an entry similar to your Linux profiles.ini

13. Make sure the 'Path=' line points to the same folder that you selected for the Linux version. Use '\' (back-slash) for the path (it's Windows!).

14. Close the file and start Thunderbird. Everything should work fine now.


IMPORTANT
* It's preferable if you have same versions of Thunderbird (at least comparable) running on both systems. Otherwise, every time you switch back and forth, you might see messages like this:



PS: In case you already have a working profile in one OS, you can simply copy that profile folder to a shared location, and then edit your profiles.ini files to point to that location. More info on profiles is available here.


Sunday, August 23, 2009

Kaminey


Just got back home from 'Kaminey'. I was tempted to give it a go after I heard Rajeev Masand on CNN-IBN had given it a 4/5 rating, and called it a 'MUFT-WATCH' (the protagonist in this movie has a speech impairment - he says F for S!). I say, IT IS NOT!

The good
It's different. The regular 'judwa bhai' formulae of Bollywood are not found here. So, regular viewers of Bollywood junk might quite like this one (I guess that's where the "awesome" reviews come from!)
The casting and acting is great. Every single actor has done his/her job rather neatly. Shahid Kapoor and Priyanka Chopra have done really well. Even the other less important roles have been done pretty well. I liked the actor who played the drug lord 'Tashi'.
The dialogues are very refined and provoke laughter without trying too hard. I couldn't notice and gangster slang (bc/mc) that's so typical of Hindi movies these days.
The film is technically superb too - the visuals are very appealing, and the background score is nice too.

The bad
The story! I have to disagree with Rajeev Masand here. It's way too predictable. There's not a single awesome twist in the whole movie. If you have had your fair share of Hollywood thriller flicks, you can expect every turn (no sharp ones there) this story takes. The ending of the movie is very much like that of Enemy of the State (1998), albeit without the twins!

The Editing: It's non-linear. But that alone doesn't make it any good. It's no Quentin Tarantino stuff (remember Pulp Fiction and Kill Bill). Some scene cuts are just way too silly (Priyanka Chopra suddenly wielding a machine gun!) and makes you honestly say 'what the heck!'.

The ugly
There's nothing ugly. This is not a bad movie. Just that it's highly over-rated.

As a movie, it's only average, you might call it a good Hindi movie, though!

--------


PS: As always, Priyanka Chopra is sooo sexy. I just hope she doesn't lose any more weight!

Tuesday, August 18, 2009

And the moral of the story is...

കവിയുടെ ആശയം ഗ്രഹിച്ച് കാവ്യം രസിക്കാന്‍ കഴിയുന്നവനാണ് 'സഹൃദയന്‍' - ശബ്ദതാരാവലി

എല്ലാ കഥകള്‍ക്കും ഒരു ഗുണപാഠമുണ്ടോ? പണ്ട് സ്കൂളില്‍ പഠിപ്പിച്ചിരുന്ന മിക്ക കഥകള്‍ക്കും ഒരു positive moral lesson ഉണ്ടായിരുന്നതായി തോന്നുന്നു. ഒരു പക്ഷേ ആ കഥകള്‍ പാഠപുസ്തകത്തില്‍ ഉള്‍പ്പെടുത്തേണ്ടുന്നതിനായ ഒരു അനിവാര്യതയായിരിക്കാം. പരീക്ഷകളില്‍, 'കഥ മെനയാനുള്ള' ചോദ്യങ്ങള്‍ക്ക് കഥയുടെ അവസാനം ഒരു ഗുണപാഠം (moral of the story) കൂടി എഴുതിയാല്‍ കൂടുതല്‍ മാര്‍ക്കുകിട്ടും എന്ന് അദ്ധ്യാപകര്‍ പറഞ്ഞുതന്നിരുന്നു. ഒരു കഥക്ക് ഒരു inference ആവശ്യമാണ് എന്ന് ഇത് സൂചിപ്പിക്കുന്നു.

ഞാന്‍ ഈയടുത്തായി കുറേ വായിക്കാന്‍ തുടങ്ങി. മലയാളം ക്ലാസ്സിക്കുകളായിരുന്നു ഏറെയും. പോരാതെ, ഒരുപാടു സിനിമകള്‍ കാണുന്ന കൂട്ടത്തിലാണ് ഞാന്‍. ഇപ്പോള്‍ എനിക്കൊരു സംശയം. എന്താണ് വായനക്കാരനില്‍ നിന്നും എഴുത്തുകാരന്‍ (*കാരന്‍ / *കാരി) പ്രതീക്ഷിക്കുന്നത്? അല്ലെങ്കില്‍ ഒരു കഥ വായിച്ചു കഴിയുമ്പോള്‍, അതില്‍ നിന്ന് ഒരു പാഠം ഉള്‍ക്കൊള്ളണമെന്നോ, ഒരു നിഗമനത്തില്‍ എത്തിച്ചേരണമെന്നോ ഉണ്ടോ? ഇല്ല എന്നെനിക്കിപ്പോള്‍ തോന്നുന്നു.

ഉദാഹരണത്തിന്, ഈയടുത്തിറങ്ങിയ ശ്യാമപ്രസാദിന്റെ 'ഒരേ കടല്‍' എന്ന ചിത്രം. 'ഇന്നിടത്തു തുടങ്ങി ഇന്നിടത്തവസാനിക്കുന്നു' എന്നുപറയാനാകാത്ത, പക്ഷേ മനോഹരമായ കഥ. പ്രത്യേകിച്ച് നിഗമനങ്ങളോ, എന്തിന് ഒരു പരിസമാപ്തിയോ ഇല്ലാതെ കഥ നിര്‍ത്തിയിരിക്കുന്നു. ഇനിയെന്ത് എന്ന വിഷമിപ്പിക്കുന്ന ചോദ്യം മാത്രം ബാക്കി. എനിക്ക് പരിചയമുള്ള പലര്‍ക്കും ഇത്തരം സിനിമകള്‍ ഇഷ്ടമല്ല. ക്ലൈമാക്സില്‍ എന്തെങ്കിലും കൊണ്ട് ശുഭമായോ ട്രാജഡിയായോ കഥ തീരണം. അതായത് കഥക്ക് ഒരവസാനം വേണം. ഇതുപോലെയുള്ള ഞാന്‍ കണ്ട മറ്റൊരു ചിത്രമാണ് 'The Graduate (1967)'.

ഇന്നലെ ജുംപാ ലഹിരിയുടെ 'Interpreter of Maladies' വായിച്ച് തീര്‍ത്തു. 9 ചെറുകഥകളുടെ ഒരു സമാഹാരം. അവ വായിച്ചു കഴിഞ്ഞപ്പോഴാണ് ഈ ചോദ്യം മനസ്സില്‍ തോന്നിയത്. കഥകളെല്ലാം വളരെ നന്ന്. ചിന്തിപ്പിക്കുകയും, അല്പം ഉദ്വേഗം ജനിപ്പിക്കുകയും, പുഞ്ചിരിപ്പിക്കുകയും കൂടി ചെയ്യുന്ന കഥകള്‍. പക്ഷേ, നേരത്തേ പറഞ്ഞതുപോലെ പ്രത്യേകിച്ച് ഒരു inference ഒന്നും ഒന്നില്‍ നിന്നും കിട്ടില്ല. അതിന്റെ ആവശ്യമില്ല എന്ന് ഞാന്‍ മനസ്സിലാക്കുന്നു. ഈ പറഞ്ഞ കാര്യങ്ങള്‍ തന്നെയേ എഴുത്തുകാരിയും ഉദ്ദേശിച്ചിട്ടുള്ളൂ എന്ന് തോന്നുന്നു.

വായനക്കാരനെ കഥയിലൂടെ, ബന്ധം മുറിയാതെ, താല്പര്യം പോകാതെ കൊണ്ടുപോകുക എന്നത് മാത്രമാണ് കഥയുടെ ആത്യന്തികമായ ലക്ഷ്യം എന്നിപ്പോള്‍ തോന്നുന്നു. എഴുത്തുകാരന്റെ സാമൂഹിക പ്രതിബദ്ധതയും മറ്റുമൊക്കെ അതിനു ശേഷം മാത്രം. എന്നിരിക്കുലും, പ്രേക്ഷകന്റെ ആസ്വദിക്കാനുള്ള കഴിവിനെ ഉയര്‍ത്തുന്ന (എന്താണ് ഉയര്‍ച്ചയുടെ മാനദണ്ഡമെന്ന് ചോദിച്ചാല്‍ കൃത്യമായ ഉത്തരമില്ല) കൃതികള്‍ക്ക് മാത്രമേ ഞാന്‍ വിലകൊടുക്കുന്നുള്ളൂ.. അതുകൊണ്ടുതന്നെ, 'മ'-പ്രസിദ്ധീകരണങ്ങളോടും, മെഗാ സീരിയലുകളോടും, ദിലീപ്/മണി സിനിമകളോടും മതിപ്പില്ല.

-------

ഇപ്പോള്‍ ഓ.വി. വിജയന്‍ ('കടല്‍തീരത്ത്' അസാദ്ധ്യം!), എസ്.കെ പൊറ്റെക്കാട്ട്, ജുംപാ ലഹിരി, അരുന്ധതി റോയ്, സേതു എന്നിവര്‍ എന്റെ പ്രിയപ്പെട്ട എഴുത്തുകാര്‍. ടി.പദ്മനാഭന്റെ എഴുത്തിനേക്കുറിച്ച് കേട്ടപ്പോഴുണ്ടായ മതിപ്പ് വായിച്ചപ്പോല്‍ പോയി. കാക്കനാടനാണ് പുതിയ പരീക്ഷണം. കാവിലമ്മ അനുഗ്രഹിക്കട്ടെ.

Life Expectancy

I booked a train ticket for my mother using IRCTC. I was quite (pleasantly) surprised to find the age printed in 3 digits in the Electronic Reservation Slip:



I find the zero-padding a bit geeky. The Right Way, IMO, would've been just printing it in 2 or 3 digits depending on the value.

------

It'd be utterly ungrateful if I didn't mention the nice tool I used to grab the above screenshot. It's called Shutter. It's one amazing tool (despite being GNOME!) for quickly creating screenshots. Almost everything you need to do with the grabbed image (adding arrows and text, masking sensitive info etc. etc.) can be done within the same application! Isn't that wonderful? Just that the UI is not all that intuitive :-(


PS:
A quick piece of info you already knew: the following C code prints the value with zero padding:
printf("%03d\n", 54);

With cout/C++, the same effect can be achieved with the ugly:
cout << setfill('0') << setw(3) << 54 << endl;

This formatting convenience of printf is perhaps the only 'C' thing I prefer over C++!

Monday, August 17, 2009

Cotton Candy!

Shot inside a vendors' compartment of a local train in Chennai:



Yummy!

Tuesday, August 11, 2009

Scheduling KTorrent


I just read a post titled Schedule your torrents in Ubuntu on Planet SMC. It uses the sleep command (not specific to Ubuntu) to delay the execution of the torrent client (Deluge).

I've been using another method to schedule KTorrent for the past couple of years. I'll post it here, in case anybody finds it useful.

There are three things to be done for 'autonomous' KTorrent (or perhaps any other client):
  1. Start the client program (KTorrent) at a particular time

  2. Make the program start downloading

  3. Exit the program gracefully


The first problem can be addressed by the 'sleep' method, or using cron. I prefer the latter since I wish to start the downloader everyday. Here's how to do it.

The command: crontab -e lets you edit your cron jobs. The vi-like editor allows you to specify the date/time and the command to be executed.

For example, the following entry in crontab will execute the 'cp' command at 2:10AM everyday:
10 2 * * * cp /var/log/messages /mnt/backup

You can use the same to start KTorrent, but with a small change:
10 2 * * * export DISPLAY=:0 && ktorrent

The 'export' thing is required to start any GUI application using cron.
Refer 'man 5 crontab' for more details on the crontab format.

Now comes the second part. It's not a problem if your client will immediately start all download jobs when it's started. But KTorrent doesn't do that. If you've manually paused a task, it won't start it automatically on start-up. So, how do I tell KTorrent to start downloading (in case it hasn't already)? Enter inter-process communication with The Wonderful D-Bus!

Using D-Bus, you can ask KTorrent to start all tasks. Here's the command that does the trick:
qdbus org.ktorrent.ktorrent /core startAll

If the above command doesn't work for you, try:
qdbus org.ktorrent.ktorrent /KTorrent startAll

(I've been using the latter, but since a recent system update, the D-Bus interface seems to have changed, and only the former works. You can do: qdbus org.ktorrent.ktorrent to see the functionality it exposes.)

So, to begin downloading, you first start ktorrent, wait for a few seconds (for it to come up and be live), then use the D-Bus command to make sure it's really downloading.


The third step (exiting KTorrent gracefully) is also done with D-Bus. All KDE applications (Hoorray KDE!) expose some common basic functionality via D-Bus. Exiting the application is one of them:
qdbus org.ktorrent.ktorrent /MainApplication quit

If you wish, you can stop all tasks before you ask KTorrent to quit. Figuring out how to do that is left as an exercise to the reader ;-)

To bring everything together, I use a script file which I execute at 2:10AM (yes, I too have BSNL DataOne connection) using crontab. The script starts KTorrent, waits for a few seconds (using sleep command) and then uses the DBus command to start all jobs. Another script is executed at 7:58AM that stops all tasks and after a few seconds, asks KTorrent to quit. Not bad, huh?

Important: Make sure your desktop environment (KDE/GNOME) is running before cron tries to start KTorrent. It won't work otherwise.

If you're planning to run qdbus directly from crontab (as opposed to putting everything in a script file and then running that from crontab), then you'll need export DISPLAY=:0 for the qdbus command also.

-----------------------------------


In fact, there's more to my automation setup. My BIOS has an option to start the computer at a particular time of day. So I need not keep my PC ON when I go to sleep. My PC wakes up at 1:50AM; grub loads Fedora 11; GDM comes up; it's set-up for 'timed login' after 30 seconds; KDE loads; cron fires at 2:10AM and viola!
I could even schedule a system shutdown after 8:00AM to make it fully autonomous. But wouldn't that be too much?
;-)