<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7343912</id><updated>2012-02-03T12:58:28.866+05:30</updated><category term='linux'/><category term='virtualization'/><category term='embedded'/><category term='meego'/><category term='finance'/><category term='tamil'/><category term='pencil arts'/><category term='news'/><category term='trips'/><category term='security'/><category term='galaxy s'/><category term='64bit'/><category term='techy'/><category term='scribbles'/><category term='eeebox'/><category term='gps'/><category term='myapps'/><category term='pravs world'/><category term='wdtv'/><category term='outlook'/><category term='bluetooth'/><category term='android'/><category term='python'/><category term='helper'/><category term='spam'/><category term='license'/><category term='video'/><category term='winmo'/><category term='developer'/><category term='network'/><category term='review'/><category term='gmail'/><category term='avr'/><category term='science'/><category term='car'/><title type='text'>Gerald Naveen</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default?start-index=101&amp;max-results=100'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>123</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7343912.post-4921636001568228931</id><published>2011-03-12T10:50:00.007+05:30</published><updated>2011-03-12T11:33:12.575+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='developer'/><category scheme='http://www.blogger.com/atom/ns#' term='myapps'/><category scheme='http://www.blogger.com/atom/ns#' term='galaxy s'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>MyApp: Calendar Widget for Android 2.2 (Froyo)</title><content type='html'>I had been looking for a decent home screen widget for the calendar(s) on my Samsung Galaxy S (currently on Froyo). Could not find one that is free, so wrote one.&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-7vSWZ6TQ9iQ/TXsIGt1PCfI/AAAAAAAABLo/7T2jv8rMzE8/s1600/snap20110302_193245.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 240px; height: 400px;" src="http://3.bp.blogspot.com/-7vSWZ6TQ9iQ/TXsIGt1PCfI/AAAAAAAABLo/7T2jv8rMzE8/s400/snap20110302_193245.png" alt="" id="BLOGGER_PHOTO_ID_5583065074530978290" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Features:&lt;/span&gt;&lt;br /&gt;* Includes events from all your calendars on the phone (personal, corporate etc., etc).&lt;br /&gt;* Support for recurring events.&lt;br /&gt;* Separate section for today's events and later events.&lt;br /&gt;* Auto refresh in every 2 minutes (No, it doesn't wake up the phone, if sleeping -- so don't worry about battery).&lt;br /&gt;* Occupies 3 (rows) x4 (columns) cells in home screen.&lt;br /&gt;* Shows up to 6 events at a time.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Note:&lt;/span&gt;&lt;br /&gt;* Apparently Google has deprecated the Calendar ContentProvider  post Froyo. So this widget may not work post Froyo (including 2.2.1, I  suppose). I only have a 2.2 phone and the emulators don't support Calendar (deprecated) -- so no idea.&lt;br /&gt;* Tested only on Samsung Galaxy S on Froyo.&lt;br /&gt;&lt;br /&gt;When I get a firmware update to Gingerbread to my SGS next month (hopefully!), I shall try to port this to Gingerbread as well, if possible.&lt;br /&gt;&lt;br /&gt;Download the .apk installer &lt;a href="https://sites.google.com/site/geraldnaveen/android/calendarwidget/GeraldCalendarWidget.apk"&gt;here&lt;/a&gt; or point your phone to this QR code to download directly&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://qrcode.kaywa.com/img.php?s=6&amp;amp;d=https%3A%2F%2Fsites.google.com%2Fsite%2Fgeraldnaveen%2Fandroid%2Fcalendarwidget%2FGeraldCalendarWidget.apk%3Fattredirects%3D0%26d%3D1"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 180px; height: 180px;" src="http://qrcode.kaywa.com/img.php?s=6&amp;amp;d=https%3A%2F%2Fsites.google.com%2Fsite%2Fgeraldnaveen%2Fandroid%2Fcalendarwidget%2FGeraldCalendarWidget.apk%3Fattredirects%3D0%26d%3D1" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Developed and built using Eclipse Indigo on Ubuntu.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-4921636001568228931?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/4921636001568228931/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2011/03/myapp-calendar-widget-for-android-22.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/4921636001568228931'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/4921636001568228931'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2011/03/myapp-calendar-widget-for-android-22.html' title='MyApp: Calendar Widget for Android 2.2 (Froyo)'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-7vSWZ6TQ9iQ/TXsIGt1PCfI/AAAAAAAABLo/7T2jv8rMzE8/s72-c/snap20110302_193245.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-5653969268822333612</id><published>2011-02-21T14:59:00.002+05:30</published><updated>2011-02-21T15:06:33.623+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='developer'/><category scheme='http://www.blogger.com/atom/ns#' term='galaxy s'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Debugging Android apps remotely via Wifi</title><content type='html'>&lt;div style="text-align: justify;"&gt;Android has tonnes of cool features and this is just one of them. Now I don't need to search for my USB cable to start developing/debugging the apps. Also, poor Samsung, my WinXP BSODs whenever I plug out my phone from adb debugging. This was irritating and that's when I came across this useful tweak.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Requirements:&lt;/span&gt;&lt;br /&gt;+ You need a root'ed Android phone. (I suppose, to start/stop services..)&lt;br /&gt;+ You need a terminal emulator software on the phone (preferrably). Android market gives it free.&lt;br /&gt;+ You should already have a working debugging setup from your PC to the phone via USB (I mean all those SDK's, tools, ADT plugin installed).&lt;br /&gt;&lt;br /&gt;Connect your phone via Wifi into a n/w that provides access to, from your PC.&lt;br /&gt;&lt;br /&gt;On the phone: (either via a 'terminal emulator' OR via 'remote ssh' OR via 'adb shell on USB')&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;$ su&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# setprop service.adb.tcp.port 6666&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# stop adbd&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# start adbd&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;All set, now the adbd knows it is suppose to listen on TCP instead of USB.&lt;br /&gt;&lt;br /&gt;Disconnect the USB if connected.&lt;br /&gt;&lt;br /&gt;On the PC: (example on Windows)&lt;br /&gt;C:\&gt;adb devices&lt;br /&gt;&lt;br /&gt;if this shows your device connected, run&lt;br /&gt;c:\&gt;adb disconnect&lt;br /&gt;&lt;br /&gt;Then,&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;c:\&gt;adb connect mobile_ip_address:6666&lt;/span&gt;&lt;br /&gt;Connected to device mobile_ip_address:6666&lt;br /&gt;[not to mention, you can use any port other than 6666, but use the same in both places.]&lt;br /&gt;&lt;br /&gt;c:\&gt;adb devices&lt;br /&gt;[this should list your device.]&lt;br /&gt;&lt;br /&gt;All set. Use Eclipse and debug just like you would on a USB connected device.&lt;br /&gt;&lt;br /&gt;Note: This change goes off once you restart your phone. You can automate this in a number of ways.. left to you.&lt;br /&gt;&lt;br /&gt;Seeing my apps getting deployed wirelessly onto my phone and debugging and watching those variables remotely is really cool!! :)&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-5653969268822333612?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/5653969268822333612/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2011/02/debugging-android-apps-remotely-via.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/5653969268822333612'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/5653969268822333612'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2011/02/debugging-android-apps-remotely-via.html' title='Debugging Android apps remotely via Wifi'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-3447286014394892670</id><published>2010-12-19T19:03:00.007+05:30</published><updated>2010-12-19T20:30:55.186+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='wdtv'/><category scheme='http://www.blogger.com/atom/ns#' term='network'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>Custom device driver for Linksys USB Wifi on WDTV Live</title><content type='html'>&lt;div style="text-align: justify;"&gt;There is lot of specifics involved, so before I go any further, let me clarify the title more. This post is about using the Cisco (Linksys) USB Wifi G Adaptor WUSB54GC on your WDTV Live for network connectivity. If you need to do this on your WDTV live, you would need to have sufficient understanding of Linux and shell scripting. Also, you need to have Wifi network and with appropriate network shares available via SMB or FTP and understand how you configure stuff.&lt;br /&gt;&lt;br /&gt;WDTV Live has wireless network support, however it doesn't work on all USB Wifi network adaptors or chipsets. There is a defined list of USB Wifi adaptors that are compatible -- again this depends on which firmware you use. The stock firmware support (from western digital) might be different from the unofficial firmwares like wdlxtv. I use wdlxtv unofficial firmware but that doesn't support my linksys Wifi adaptor as well. I had bought this wifi dongle before WDTV live, so didn't want to buy another one. The result of trying to make this work on my WDTV is this post.&lt;br /&gt;&lt;br /&gt;Apparently, the particular linksys adaptor that I'm talking about (take a look &lt;a href="http://geraldnaveen.blogspot.com/2010/03/cisco-linksys-wifi-client.html"&gt;here&lt;/a&gt; if you want to know what I'm talking about) is based on Ralink Chipset 3070; in fact there are many other wifi dongles that are based on the same chipset. At least the unofficial firmware supports ralink 3070 chipset, however, it doesn't matter unless the device driver was built to support that particular device. ie., the device driver should have been compatible with the given vendor id and device id. This is where my device didn't work in spite of it being 3070 chipset.&lt;br /&gt;&lt;br /&gt;I had to then setup a total cross-platform toolchain for WDTV Live by downloading the appropriate kernel source from Western Digital website. WD has provided beautiful support for building stuff for WDTV live. The source code of device driver for Ralink 3070 chipset is available from Ralink's website. I tampered the source a bit to accommodate this Linksys device too (Vendor Id: 1737, Device Id: 0077), cross-compiled the device driver for WDTV Live on my desktop Linux. Viola, my driver got loaded for that device.&lt;br /&gt;&lt;br /&gt;This device driver was built for the kernel 'Linux WDTVLIVE 2.6.22.19-19-4'. Make sure this matches your kernel version too (this should be in line with the WDTV Live official firmware version 1.02.21).&lt;br /&gt;&lt;br /&gt;Also, if you have this USB dongle, you should see an entry like this when you do 'lsusb' on your WDTV Live:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Bus 001 Device 003: ID 1737:0077 Linksys&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;INSTRUCTIONS:&lt;/span&gt;&lt;br /&gt;1. Download this &lt;a href="https://sites.google.com/site/geraldnaveen/scripts/public/linksys_WUSB54GC_wdtvlive_1.02.21.zip"&gt;zip file&lt;/a&gt; that contains (rt3070sta.ko, net.mounts, RT2870STA.dat, resolv.conf, wpa_supplicant.conf).&lt;br /&gt;2. Create a folder named 'wireless' in the root of a pendrive and extract the contents to that folder.&lt;br /&gt;3. Move/copy net.mounts from that folder to the root of your pendrive.&lt;br /&gt;4. Edit the files net.mounts, RT2870STA.dat, resolv.conf, wpa_supplicant.conf and customize with your Wifi's SSID and WPA PSK as necessary. You can use wpa_passphrase on a desktop linux to create a encoded PSK and copy that to these files.&lt;br /&gt;5. More customization is required in net.mounts script as per your network to mount the right share on startup. I use ftpfs, as that seems more robust than smbfs on WDTV live.&lt;br /&gt;6. Plug-in this pen drive to your WDTV live along with your Linksys Wifi dongle and reboot, your WDTV Live should join your network and mount your network share seamlessly.&lt;br /&gt;&lt;br /&gt;I've this setup successfully working for almost 3 months now. Every time I start my WDTV live it joins the wifi network in around 30-45 seconds and the network shares are instantly available. You also don't have to worry about network interruptions, WDTV Live takes care of remounting the shares if the ftpfs breaks for some reason (note the 'xmount' in the script).&lt;br /&gt;&lt;br /&gt;Here is the net.mounts script that I use at home (with specifics removed):&lt;pre name="code" class="python:nocontrols"&gt;#&lt;br /&gt;# Original Author: Gerald Naveen A (http://geraldnaveen.blogspot.com)&lt;br /&gt;#&lt;br /&gt;# WDTV Live! net.mounts to use my custom built device driver for WUSB54GC&lt;br /&gt;# on WDTV Live firmwares. This script uses the wpa_supplicant to configure&lt;br /&gt;# WPA based authentication.&lt;br /&gt;#&lt;br /&gt;# Refer : http://geraldnaveen.blogspot.com/2010/12/custom-device-driver-for-linksys-usb.html&lt;br /&gt;# for more info.&lt;br /&gt;#&lt;br /&gt;# COPY THIS FILE TO THE ROOT FOLDER OF YOUR USB DRIVE ON WDTV LIVE!&lt;br /&gt;#&lt;br /&gt;# License:&lt;br /&gt;# You are free to modify/distribute/use for commercial/non-commercial/&lt;br /&gt;# personal applications. Any modification to this code needn't be published.&lt;br /&gt;# However, any publication of this code or the derivative of this code, should&lt;br /&gt;# include the original author and this license text.&lt;br /&gt;#&lt;br /&gt;logger -t GERALD "$0 starting..."&lt;br /&gt;if [ -f /tmp/gerald ]; then&lt;br /&gt; # make sure this script doesn't run more than once. Sometimes, net.mounts&lt;br /&gt; # gets called multiple times.&lt;br /&gt; logger -t GERALD "$0 already ran." &lt;br /&gt;else &lt;br /&gt; touch /tmp/gerald&lt;br /&gt; config_tool -c DISABLE_ETHERNET_ON_STANDBY=NO&lt;br /&gt; config_tool -c USB_POWER_OFF=NO&lt;br /&gt;&lt;br /&gt; # NOTE: change below line to cp from your USB wireless device&lt;br /&gt; cp /tmp/mnt/64BA-4243/wireless/* /tmp/&lt;br /&gt; cp /tmp/resolv.conf /etc/resolv.conf&lt;br /&gt;&lt;br /&gt; WIFI_DEV=ra0&lt;br /&gt; insmod /tmp/rt3070sta.ko&lt;br /&gt; ifconfig $WIFI_DEV up&lt;br /&gt; sleep 5 ; # let the radio come up before scanning&lt;br /&gt; #discover the current channel number&lt;br /&gt; CHANNEL_NUMBER=`iwlist $WIFI_DEV scan | grep YOUR_WIFI_SSID -A 2 | grep Channel | cut -d\( -f 2 | cut -d\  -f 2 | cut -d\) -f 1`&lt;br /&gt; logger -t GERALD "Configuring $WIFI_DEV to Channel $CHANNEL_NUMBER"&lt;br /&gt; iwconfig $WIFI_DEV channel $CHANNEL_NUMBER&lt;br /&gt;&lt;br /&gt; wpa_supplicant -i$WIFI_DEV -c/tmp/wpa_supplicant.conf -B&lt;br /&gt; # DHCP client has some issue and is inconsistent.&lt;br /&gt; #udhcpc -i $WIFI_DEV&lt;br /&gt; logger -t GERALD "Configuring IP Address for $WIFI_DEV"&lt;br /&gt; ifconfig $WIFI_DEV STATIC_IP_ADDRESS_OF_WDTV_LIVE netmask 255.255.255.0&lt;br /&gt; route add default gw YOUR_NW_DEFAULT_GW_IP&lt;br /&gt;&lt;br /&gt; sleep 15 ; # let the n/w settle before mount&lt;br /&gt; logger -t GERALD "Pinging NAS via LAN..."&lt;br /&gt; ping -c 1 -W 2 NAS_IP_ADDR_HSPEED | grep -q "bytes from"&lt;br /&gt; if [ $? -eq 0 ] ; then&lt;br /&gt;  logger -t GERALD "Ping successful for NAS via LAN. Now xmounting..."&lt;br /&gt;  xmount "ftp://NAS_IP_ADDR_HSPEED" NAS_1Gbps ftpfs "-o user=movies:password"&lt;br /&gt;  logger -t GERALD "xmount done for NAS."&lt;br /&gt; else&lt;br /&gt;  # could not reach NAS via high speed n/w.&lt;br /&gt;  # try to reach via Wifi.&lt;br /&gt;  logger -t GERALD "Pinging NAS via Wifi..."&lt;br /&gt;  ping -c 1 -W 2 NAS_IP_ADDR | grep -q "bytes from"&lt;br /&gt;  if [ $? -eq 0 ] ; then&lt;br /&gt;   logger -t GERALD "Ping successful for NAS via Wifi. Now xmounting..."&lt;br /&gt;   xmount "ftp://NAS_IP_ADDR" NAS_Wifi ftpfs "-o user=movies:password"&lt;br /&gt;   logger -t GERALD "xmount done for NAS."&lt;br /&gt;  fi&lt;br /&gt; fi &lt;br /&gt;fi ; # if already ran&lt;br /&gt;logger -t GERALD "$0 complete."&lt;/pre&gt;&lt;br /&gt;In case you find issues, check /tmp/messages.txt file on your WDTV Live for the relevant log messages to troubleshoot.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-3447286014394892670?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/3447286014394892670/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2010/12/custom-device-driver-for-linksys-usb.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/3447286014394892670'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/3447286014394892670'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2010/12/custom-device-driver-for-linksys-usb.html' title='Custom device driver for Linksys USB Wifi on WDTV Live'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-2039911213947520479</id><published>2010-12-06T18:14:00.007+05:30</published><updated>2010-12-06T18:45:44.262+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='galaxy s'/><title type='text'>Video cable for Samsung Galaxy S</title><content type='html'>&lt;div style="text-align: justify;"&gt;Disclaimer: Although this should just apply for any other SGS, this has been tested only on SGS Vibrant, India model.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;If you didn't know how this cable looks, here it is. Note the 4 terminal stereo plug (stereo plug normally has only 3 terminals).&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_CWrtfw9yct0/TPzbOOGbswI/AAAAAAAAAw8/FKnWCva_HxY/s1600/rca1.JPG"&gt;&lt;img style="cursor: pointer; width: 267px; height: 240px;" src="http://2.bp.blogspot.com/_CWrtfw9yct0/TPzbOOGbswI/AAAAAAAAAw8/FKnWCva_HxY/s400/rca1.JPG" alt="" id="BLOGGER_PHOTO_ID_5547549878363337474" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Although one can build a cable from scratch, it is usually cheaper or  same to get a read-made cable like this, instead of trying to build our  own cable with just the plugs. Ok, so what is there to be done if I get  the ready-made cable -- the reason is that, all cables aren't compatible  with SGS video output. This post anyway has all the info to build your  own cable, if you are interested.&lt;br /&gt;&lt;br /&gt;The common confusion that prevails in the forums is that some cables work and some don't; so how do we buy the right cable. The answer is that, you don't have to worry as long as the terminals are exactly these (ie., 4 pin stereo on one end, RCA on the other end). I had bought one such cable from ebay India for just Rs. 100. You can search for "Camcorder RCA cable" and you might end up on one such item.&lt;br /&gt;&lt;br /&gt;If you get a camcorder cable, it most likely won't work. If it doesn't work in the normal configuration (ie., Yellow to Video, Red/White to Audio), try connecting the White to Video, and Yellow/Red to Audio. This should just work.&lt;br /&gt;&lt;br /&gt;Why?&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_CWrtfw9yct0/TPzeKu262mI/AAAAAAAAAxE/UuEY6F1deGc/s1600/rca_terminals.JPG"&gt;&lt;img style="cursor: pointer; width: 274px; height: 147px;" src="http://3.bp.blogspot.com/_CWrtfw9yct0/TPzeKu262mI/AAAAAAAAAxE/UuEY6F1deGc/s400/rca_terminals.JPG" alt="" id="BLOGGER_PHOTO_ID_5547553116972046946" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;This is how a 4-terminal stereo plug looks. Lets name the terminals as T1..T4 as in figure. The camcorder cables send T4 to Video, but the SGS sends out video on T2. On Camcorder cables, T2 is the Left/Mono Audio (White) -- thus swapping that for Video works.&lt;br /&gt;&lt;br /&gt;T1 is the Ground. As long as the ground is not changed, you should be able to convert any cable to be compatible with SGS video out. T1 usually gets in contact with the case/body of the device, so I would think it would be always ground on any such cables for consumer devices.  I also don't see any reason for a cable to insert the video terminal between the two audio terminals. Going by these rules, it is most likely that, it is either T4 (T2, T3 are audio) or T2 (T3, T4 are audio) which is the video terminal.&lt;br /&gt;&lt;br /&gt;If you have a multimeter, just connect this cable to your phone, turn on Video out on settings and measure the DC voltage (0-20V range) on each of the RCA plugs (make sure the phone isn't playing any audio). Only the video plug will sense a voltage of ~1.5V at this point. This should identify the video plug safely without having to try out various plugs on the TV directly.&lt;br /&gt;&lt;br /&gt;To summarize, so you can build one if required. The SGS video output pin out is:&lt;br /&gt;&lt;br /&gt;T1: Ground&lt;br /&gt;T2: Video&lt;br /&gt;T3: Left/Mono&lt;br /&gt;T4: Right&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-2039911213947520479?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/2039911213947520479/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2010/12/video-cable-for-samsung-galaxy-s.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/2039911213947520479'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/2039911213947520479'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2010/12/video-cable-for-samsung-galaxy-s.html' title='Video cable for Samsung Galaxy S'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_CWrtfw9yct0/TPzbOOGbswI/AAAAAAAAAw8/FKnWCva_HxY/s72-c/rca1.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-7139516456268023672</id><published>2010-11-29T12:12:00.001+05:30</published><updated>2010-11-29T12:15:00.750+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='pravs world'/><title type='text'>Getting over problems</title><content type='html'>Courtesy: &lt;a href="http://www.pravsworld.com/content/inspiration/55/getting-over-problems"&gt;Pravs World&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If you can't get through the mountain, Go around it. If you can't go around it, Go over it.&lt;br /&gt;&lt;br /&gt;If you can't go over it, sit down and ask yourself, if getting to the other side is all that important? If it is, set about digging a tunnel.&lt;br /&gt;&lt;br /&gt;For every problem, there are many solutions. Whatever the problems in life are, you have to find ways to get over it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-7139516456268023672?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/7139516456268023672/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2010/11/getting-over-problems.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/7139516456268023672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/7139516456268023672'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2010/11/getting-over-problems.html' title='Getting over problems'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-6543447452311326194</id><published>2010-11-13T12:51:00.013+05:30</published><updated>2010-11-27T10:19:57.959+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='myapps'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>MyApp: Spb Wallet to KeePass convertor</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;a href="http://spb.com/products/wallet/"&gt;Spb Wallet&lt;/a&gt; is one of the best wallet applications that I've used across various mobile platforms. However, it isn't available on all mobile platforms and it isn't free either. Once I moved on to Android, I hit a road-block because Spb Wallet isn't available for Android (yet). I'm sure you would understand how painful it is to not have a wallet app, once you are used to.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://keepass.info/"&gt;KeePass&lt;/a&gt; is the alternate. KeePass is an open-source software for password management. To be fair, KeePass isn't as great as Spb Wallet, but does its job. Being open-source, it is available on almost all platforms including desktops.&lt;br /&gt;&lt;br /&gt;The pain here is the conversion. I have tonnes of data on Spb Wallet that manually entering them on KeePass is a no-go. Unfortunately, and mostly intentionally, Spb Wallet doesn't export to any well known format for import into KeePass. There weren't any handy tools to convert either. Thankfully Spb Wallet had a text export and KeePass had many import options. But it isn't directly compatible, because Spb Wallet doesn't have any proper structure to the exported TXT file and the grammar is quite ambiguous. KeePass has a well defined XML structure for import (found it by doing a sample XML export from KeePass).  I wrote this python script to convert the Spb Wallet TXT export file into the XML format that KeePass can understand. In reality, Spb Wallet has more "specific" fields than KeePass, so there isn't always a direct mapping. Any non-mappable field (Account Number for example) will be appended in the notes section of KeePass so no information is lost.&lt;br /&gt;&lt;br /&gt;This script is a simple parser that understands and converts the Spb Wallet TXT export file. It maintains the internal state of parsing and learns dynamically about what the current token is -- some times even looking ahead into the file to resolve ambiguities.&lt;br /&gt;&lt;br /&gt;This script is probably not so robust on errors. But this did the job for my Wallet export which is reasonably big.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;If you find any bug on this script that you want me to fix, report here. I *MAY* fix it for you.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Here is the source:&lt;pre name="code" class="python:nocontrols"&gt;#&lt;br /&gt;# Code to Convert Spb Wallet TXT export file to KeePass XML import file.&lt;br /&gt;#&lt;br /&gt;# Original Author: Gerald Naveen A (http://geraldnaveen.blogspot.com)&lt;br /&gt;#&lt;br /&gt;# License:&lt;br /&gt;# You are free to modify/distribute/use for commercial/non-commercial/&lt;br /&gt;# personal applications. Any modification to this code needn't be published. &lt;br /&gt;# However, any publication of this code or the derivative of this code, should &lt;br /&gt;# include the original author and this license text.&lt;br /&gt;#&lt;br /&gt;import sys&lt;br /&gt;&lt;br /&gt;def mywrite(f, str):&lt;br /&gt;f.write("{0}\n".format(str));&lt;br /&gt;def main():&lt;br /&gt;print "\nSpb Wallet to KeePass Convertor v 1.0 by Gerald Naveen\n";&lt;br /&gt;print "Report bugs at http://geraldnaveen.blogspot.com/2010/11/myapp-spb-wallet-to-keepass-convertor.html\n";&lt;br /&gt;if len(sys.argv) &amp;lt; 3:&lt;br /&gt; print "Usage: spb_wallet_to_keepass.py &amp;lt;spb_txt_export_file&gt; &amp;lt;keepass_xml_import_file&gt;";&lt;br /&gt; print "\nWhere,\nspb_txt_export_file: path to the TXT file exported from Spb Wallet.";&lt;br /&gt; print "keepass_txt_import_file: path to the output XML file, that shall be imported into KeePass.";&lt;br /&gt; return;&lt;br /&gt;try:&lt;br /&gt; ifile = open (sys.argv[1], 'r');&lt;br /&gt;except:&lt;br /&gt; print "Could not open input file", sys.argv[1];&lt;br /&gt; return;&lt;br /&gt;&lt;br /&gt;try:&lt;br /&gt; ofile = open (sys.argv[2], 'w');&lt;br /&gt;except:&lt;br /&gt; print "Could not open output file", sys.argv[2];&lt;br /&gt; return;&lt;br /&gt;&lt;br /&gt;FOLDER_NAME_TOKEN=1;&lt;br /&gt;ENTRY_NAME_TOKEN=FOLDER_NAME_TOKEN+1;&lt;br /&gt;BEFORE_NOTES_TOKEN=ENTRY_NAME_TOKEN+1;&lt;br /&gt;NOTES_TOKEN=BEFORE_NOTES_TOKEN+1;&lt;br /&gt;INVALID_VALUE='invalid';&lt;br /&gt;&lt;br /&gt;next_token=ENTRY_NAME_TOKEN;&lt;br /&gt;folder_name = INVALID_VALUE;&lt;br /&gt;entry_name = INVALID_VALUE;&lt;br /&gt;user_name = INVALID_VALUE;&lt;br /&gt;password = INVALID_VALUE;&lt;br /&gt;url = INVALID_VALUE;&lt;br /&gt;notes = INVALID_VALUE;&lt;br /&gt;valid_entry = False;&lt;br /&gt;&lt;br /&gt;mywrite(ofile, '&amp;lt;?xml version="1.0" encoding="utf-8" standalone="yes"?&gt;');&lt;br /&gt;mywrite(ofile, '&amp;lt;pwlist&gt;');&lt;br /&gt;try:&lt;br /&gt; for line in ifile:&lt;br /&gt;  line = line.strip('\r\n');&lt;br /&gt;  if len(line) == 0:&lt;br /&gt;   # empty line&lt;br /&gt;   if valid_entry == False:&lt;br /&gt;    # entry name found after folder name&lt;br /&gt;    folder_name = entry_name;&lt;br /&gt;    entry_name = INVALID_VALUE;&lt;br /&gt;   else:&lt;br /&gt;    # found the last line of the entry..dump&lt;br /&gt;    mywrite(ofile, '&amp;lt;pwentry&gt;');&lt;br /&gt;    if folder_name != INVALID_VALUE:&lt;br /&gt;     mywrite(ofile, '&amp;lt;group&gt;{0}&amp;lt;/group&gt;'.format(folder_name));&lt;br /&gt;    mywrite(ofile, '&amp;lt;title&gt;{0}&amp;lt;/title&gt;'.format(entry_name));    &lt;br /&gt;    if user_name != INVALID_VALUE:&lt;br /&gt;     mywrite(ofile, '&amp;lt;username&gt;{0}&amp;lt;/username&gt;'.format(user_name));&lt;br /&gt;    if password != INVALID_VALUE:&lt;br /&gt;     mywrite(ofile, '&amp;lt;password&gt;{0}&amp;lt;/password&gt;'.format(password));&lt;br /&gt;    if url != INVALID_VALUE:&lt;br /&gt;     mywrite(ofile, '&amp;lt;url&gt;{0}&amp;lt;/url&gt;'.format(url));&lt;br /&gt;    if notes != INVALID_VALUE:&lt;br /&gt;     notes=notes.replace('\n', '&amp;amp;#xD;&amp;amp;#xA;');&lt;br /&gt;     mywrite(ofile, '&amp;lt;notes&gt;{0}&amp;lt;/notes&gt;'.format(notes));&lt;br /&gt;    mywrite(ofile, '&amp;lt;/pwentry&gt;');&lt;br /&gt;    user_name = INVALID_VALUE;&lt;br /&gt;    password = INVALID_VALUE;&lt;br /&gt;    url = INVALID_VALUE;&lt;br /&gt;    notes = INVALID_VALUE;&lt;br /&gt;   valid_entry = False;&lt;br /&gt;   next_token=ENTRY_NAME_TOKEN;&lt;br /&gt;  else:&lt;br /&gt;   if next_token == ENTRY_NAME_TOKEN:&lt;br /&gt;    entry_name = line;&lt;br /&gt;    next_token = BEFORE_NOTES_TOKEN;&lt;br /&gt;   else:&lt;br /&gt;    valid_entry = True;&lt;br /&gt;    if next_token == BEFORE_NOTES_TOKEN:&lt;br /&gt;     if line.startswith('User Name:'):&lt;br /&gt;      user_name = line[len('User Name:'):].strip(' ');&lt;br /&gt;     elif line.startswith('Password:'):&lt;br /&gt;      password = line[len('Password:'):].strip(' ');&lt;br /&gt;     elif line.startswith('Web Site:'):&lt;br /&gt;      url = line[len('Web Site:'):].strip(' ');&lt;br /&gt;     elif line.startswith('Notes:'):&lt;br /&gt;      if notes == INVALID_VALUE:&lt;br /&gt;       notes = line[len('Notes:'):].strip(' ');&lt;br /&gt;      else:&lt;br /&gt;       notes += '\n' + line[len('Notes:'):].strip(' ');&lt;br /&gt;      next_token = NOTES_TOKEN;&lt;br /&gt;     else:&lt;br /&gt;      # any unknown params should go as notes.&lt;br /&gt;      if notes == INVALID_VALUE:&lt;br /&gt;       notes = line;&lt;br /&gt;      else:&lt;br /&gt;       notes += '\n' + line;&lt;br /&gt;    elif next_token == NOTES_TOKEN:&lt;br /&gt;     # any thing from the notes section.&lt;br /&gt;     notes += '\n' + line;&lt;br /&gt;except:&lt;br /&gt;  print "Unknown error occured while processing the input file.";&lt;br /&gt;mywrite(ofile, '&amp;lt;/pwlist&gt;');    &lt;br /&gt;ifile.close();&lt;br /&gt;ofile.close();&lt;br /&gt;print "Success. Now import {0} in KeePass as KeePass XML".format(sys.argv[2]);&lt;br /&gt;if __name__ == "__main__":&lt;br /&gt;   main()&lt;br /&gt;&lt;/pre&gt;Download &lt;a href="https://sites.google.com/site/geraldnaveen/python/spb_wallet_to_keepass.py"&gt;spb_wallet_to_keepass.py&lt;/a&gt;&lt;br /&gt;&lt;br&gt;Update [26-Nov-2010]: &lt;br&gt;&lt;br /&gt;If the script ran successfully, but the output XML file didn't work on import, it could most likely be a CRLF issue. Try this in such cases:&lt;br&gt;&lt;br /&gt;Lets assume your file is test.txt.&lt;br&gt;&lt;br /&gt;1. Open test.txt in Notepad&lt;br /&gt;2. "Save as" another file, say test2.txt (Note: select Utf8 as Encoding).&lt;br /&gt;3. Use test2.txt as input&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-6543447452311326194?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/6543447452311326194/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2010/11/myapp-spb-wallet-to-keepass-convertor.html#comment-form' title='22 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/6543447452311326194'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/6543447452311326194'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2010/11/myapp-spb-wallet-to-keepass-convertor.html' title='MyApp: Spb Wallet to KeePass convertor'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><thr:total>22</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-84602389051528205</id><published>2010-10-11T18:29:00.004+05:30</published><updated>2010-10-11T19:21:58.762+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='network'/><category scheme='http://www.blogger.com/atom/ns#' term='review'/><title type='text'>Asus RT-N16 --  my new home Wifi router</title><content type='html'>This is a long pending post. I had bought this router for my home a month back and never got to write about it.&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;Picture first:&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_CWrtfw9yct0/TLMSlc9rQqI/AAAAAAAAAwI/zOHjPCFXq88/s1600/asus_rtn16_router.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 319px;" src="http://2.bp.blogspot.com/_CWrtfw9yct0/TLMSlc9rQqI/AAAAAAAAAwI/zOHjPCFXq88/s400/asus_rtn16_router.jpg" alt="" id="BLOGGER_PHOTO_ID_5526781602353070754" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I had been looking for a Wifi router at my home before I could narrow down on this. Here were  my requirements:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Good range:&lt;/span&gt; The current wifi router that came with my Internet connection can barely cover 25% of my house. I needed something that can cover every corner of my duplex flat. Otherwise the exercise is of little use.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Thirdparty-firmware:&lt;/span&gt; I was mainly eying at dd-wrt for the firmware. It *has* to be &lt;a href="http://www.dd-wrt.com/site/index"&gt;dd-wrt&lt;/a&gt; compatible so I can play around with the firmware and add services to it. dd-wrt has multiple versions of the firmware based on the flash size available. Most routers these days have &lt;=4MB flash (some of them only 2MB). Those will need to run mini or micro versions of dd-wrt which have limited capabilities and extensions. I was looking at a router with at least 8MB flash, so the mega version of dd-wrt fits. &lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;802.11n:&lt;/span&gt; I wanted 802.11n draft support. I was actually more inclined towards simultaneous dual-band vs just dual-band. Also, I was fine with 2.4GHz 'n' if 5.8GHz 'n' isn't available.  &lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;USB mass storage: &lt;/span&gt;I wanted the router to also be my NAS. So I can just attach a USB HDD to the router and can access it anywhere else in the house. Currently my EEEBox does this for me, but that's one more device to run.    &lt;/li&gt;&lt;/ol&gt;Selecting a good range was the difficult task because there is no benchmark that fits all for this. When some one says *good* it is relative and not absolute. That doesn't help me in anyways to select mine. As it was an important factor me, I had to overshoot my expectation and get a really good one.  &lt;br /&gt;&lt;br /&gt;Eventually, I narrowed down on 2 routers:  &lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://reviews.cnet.com/routers/linksys-wrt610n-simultaneous-dual/4505-3319_7-33132573.html"&gt;Cisco Linksys WRT610N&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Asus RT-N16  &lt;/li&gt;&lt;/ol&gt;Both seem to claim very good range. WRT610N has 3 internal antennas, whereas the RT-N16 has 3 external antennas. Anytime, the external ones are more powerful. The Cisco one looks really cool though. No, but range was more important. Both are of similar price range (~10K INR). Both have USB support. Both are supported by dd-wrt.  The biggest differentiating factor between these two that helped me decide, is the hardware. RT-N16 has an awesome processor at 533MHz, 128MB of RAM and more importantly 32MB of flash. The Cisco one has just 8MB flash. 32MB flash is too good that I don't have to worry about space while enhancing the router for other tasks. The powerful processor should also come in handy to support multiple operations in parallel. There are more comparisons on the specifications, but that's too much to be here.&lt;br /&gt;&lt;br /&gt;Went ahead and bought RT-N16.  Even though I didn't intend to use the official firmware, the Asus official firmware for RT-N16 is pretty good (except for the NAS part). In fact the official firmware supports 1TB disks and NTFS file system. Even the dd-wrt doesn't have proper support for NTFS (yes, ntfs-3g driver is available, but is still error-prone on large partitions, that I had to move to ext3 for my NAS).  Any time a journal'ed file system  like ext3 is better for NAS. Anyways, in 2 days, I upgraded the firmware to the unofficial dd-wrt. It's very handy, specially as it exposes the whole Linux underneath. The extra flash memory can be mounted via JFFS2 file system and that's the place to make wonders. &lt;br /&gt;&lt;br /&gt;This router has served all my purposes. It has terrific range that my earlier mobile (ASUS P320) which is the weakest Wifi client I have, connects from the farthest point within the house. Before I could wink, I already have 8 wifi devices at home -- enjoying the n/w all around my house. It's an useful luxury!&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-84602389051528205?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/84602389051528205/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2010/10/asus-rt-n16-my-new-home-wifi-router.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/84602389051528205'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/84602389051528205'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2010/10/asus-rt-n16-my-new-home-wifi-router.html' title='Asus RT-N16 --  my new home Wifi router'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_CWrtfw9yct0/TLMSlc9rQqI/AAAAAAAAAwI/zOHjPCFXq88/s72-c/asus_rtn16_router.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-1322766233306418387</id><published>2010-09-19T10:52:00.003+05:30</published><updated>2010-09-19T11:35:11.139+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='wdtv'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>Installing WDTV Live Unofficial Firmware</title><content type='html'>&lt;div style="text-align: justify;"&gt;As of this writing, the latest stable official firmware version for WDTV Live is 1.02.21.&lt;br /&gt;&lt;br /&gt;There is also an unofficial firmware for WDTV Live that opens up the whole linux underneath along with several other services. The unofficial firmware 0.4.2.2 is based on the official firmware 1.02.21 and is around 80MB while the official firmware is just around 32MB. The difference in size includes a whole bunch of additional services like SMB  server, FTP,  telnet, dropbear (ssh), torrents, apache etc., to name a few. But not to worry much, the unofficial firmware provides total control to us to configure not to start any of these services that aren't of interest to us.&lt;br /&gt;&lt;br /&gt;The unofficial firmware can be downloaded from &lt;a href="http://wdtvhd.com/index.php?showtopic=19072"&gt;WDTV Forums&lt;/a&gt;. (you need a registered account, its free).&lt;br /&gt;&lt;br /&gt;Upgrading to the unofficial firmware isn't really a big deal; I am writing about this only to complete the context for a lot more posts that I intend to write over the unofficial firmware (I've already done quite a bit of things on this, including building a custom device driver for WDTV Live, modifying their scripts etc). With little bit of caution, one can safely upgrade to the unofficial firmware. Most importantly, the unofficial firmware is totally safe in terms of the functionality (I mean the media player functionality..) because, the unofficial firmware hasn't re-written the complete functionality -- rather it is just an extension to the existing firmware. Someone smart out there, has just unpacked the &lt;a href="http://en.wikipedia.org/wiki/Cramfs"&gt;cramfs&lt;/a&gt; image of the official firmware and customized/extended the scripts, added more apps etc., and made it a full-fledged linux box that can do much more than just media playing. I felt very comfortable going ahead with the upgrade when I read about this. Not just theory, but I upgraded the same day I unboxed my WDTV Live; ever since I've been running on the unofficial firmware without any issues -- playing heavy full-HD with DolbyDigital / DTS. It is also possible revert back to the official firmware in case it didn't workout for you, nevertheless.&lt;br /&gt;&lt;br /&gt;Tip: WDTV doesn't upgrade to a firmware, if the new firmware's version is not greater than the current firmware version. So, if you are already on official 1.02.21 (like I was), you cannot theoretically upgrade to the unofficial firmware (in spite of it being very different). Fortunately, the version of the new firmware is read from a separate .ver file that comes with the firmware update pack, which can be easily tweaked around. This tip is also important specially when you want to downgrade your firmware or revert to the official firmware. &lt;br /&gt;&lt;br /&gt;The firmware has generally 2 files : wdtvlive.ver, wdtvlive.bin. The .ver file has the version of the firmware and the also points to the wdtvelive.bin. It looks something like this:&lt;br /&gt;&lt;br /&gt;VERSION='1.02.21'&lt;br /&gt;LOCATION='wdtvlive.bin'&lt;br /&gt;&lt;br /&gt;Sometimes you might need to play around with the version string as pointed out earlier. Put these two files (.ver, .bin) in the root directory of your USB drive attached to the WDTV and start it. Once started, WDTV should show you a menu item for 'Firmware upgrade'. It's straight-forward from there on.&lt;br /&gt;&lt;br /&gt;IMPORTANT: The upgrade itself doesn't take very long, but make sure the power doesn't go off during the upgrade. If possible, run the player on UPS during the upgrade.  However,  the first boot after the "unofficial" firmware upgrade takes pretty long (actually many minutes) and there won't be any video signal to your TV during that time --  so don't panic (until later :P) that you had bricked your device.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-1322766233306418387?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/1322766233306418387/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2010/09/installing-wdtv-live-unofficial.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/1322766233306418387'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/1322766233306418387'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2010/09/installing-wdtv-live-unofficial.html' title='Installing WDTV Live Unofficial Firmware'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-724423301910429603</id><published>2010-09-03T13:33:00.001+05:30</published><updated>2010-09-03T13:35:44.943+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='pravs world'/><title type='text'>Jump for Challenges</title><content type='html'>&lt;p&gt;Courtesy: &lt;a href="http://pravstalk.com/jump-for-challenges/"&gt;Pravs World&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Instead of avoiding challenges, jump into them.&lt;br /&gt;Beat the heck out of them. Enjoy the game.&lt;br /&gt;If your challenges are too large, do not give up.&lt;/p&gt; &lt;p&gt;Failing makes you tired. Instead, reorganize.&lt;br /&gt;Find more determination, more knowledge and more help.&lt;br /&gt;And then, Just go for it!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-724423301910429603?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/724423301910429603/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2010/09/jump-for-challenges.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/724423301910429603'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/724423301910429603'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2010/09/jump-for-challenges.html' title='Jump for Challenges'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-821120089692722557</id><published>2010-08-29T19:47:00.004+05:30</published><updated>2010-08-29T20:42:30.463+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='wdtv'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='review'/><title type='text'>WDTV Live - HD Media Player</title><content type='html'>&lt;a href="http://www.wdtvlive.com/"&gt;WDTV Live!&lt;/a&gt; is the new entry into my home.&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;It is a full-HD (High-definition, 1080p) Media Player that can play most Video/Audio formats and codecs available today. &lt;a href="http://geraldnaveen.blogspot.com/2010/02/asus-eeebox-b202.html"&gt;My EEEBox&lt;/a&gt; was in this place earlier to me but EEEBox (B202) struggles to play anything more than 720p video (some frames in even 720p video also stutter if there is too much of a change from the previous frame). I really couldn't enjoy the half/full-HD videos using that. Also, I had to control my EEEBox from my mobile phone via VNC -- this did the job, but wasn't as comfortable as a TV remote. So decided to buy this player.&lt;br /&gt;&lt;br /&gt;The choice was between &lt;a href="http://www.xtreamer.net/"&gt;XStreamer&lt;/a&gt; and WDTV Live! but I was convinced that I should go with WDTV Live for my needs (Why? is a different topic altogether, that I'm not touching right now).&lt;br /&gt;&lt;br /&gt;This is how it looks:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_CWrtfw9yct0/THp1O6u2VPI/AAAAAAAAAvs/NmLkjmZYji0/s1600/wdtv.JPG"&gt;&lt;img style="cursor: pointer; width: 300px; height: 300px;" src="http://2.bp.blogspot.com/_CWrtfw9yct0/THp1O6u2VPI/AAAAAAAAAvs/NmLkjmZYji0/s400/wdtv.JPG" alt="" id="BLOGGER_PHOTO_ID_5510845993185596658" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Although small, this is a real monster. I did realize its power only after I played the full-HD (high data rate) version of Avatar (11 GB for 2 hours of video with DTS audio). It flawlessly played the full-HD movie without any glitch, while my EEEBox would hardly render a frame of it. It is connected to my home-theatre receiver via the optical digital audio connectivity (&lt;a href="http://en.wikipedia.org/wiki/S/PDIF"&gt;S/PDIF&lt;/a&gt;). It transmits the digital audio via the optical interface and the home theatre plays it well (&lt;a href="http://en.wikipedia.org/wiki/Dolby_Digital"&gt;Dolby-digital&lt;/a&gt; or &lt;a href="http://www.blogger.com/en.wikipedia.org/wiki/DTS_%28sound_system%29"&gt;DTS&lt;/a&gt;). Watching Avatar full-HD with DTS sound was a new experience at home! For those who don't have a home theatre or that doesn't support Dolby Digital or DTS, WDTV Live has a down-mixing support that converts high-end audio to Stereo.&lt;br /&gt;&lt;br /&gt;WDTV Live uses the &lt;span style="visibility: visible;" id="main"&gt;&lt;span style="visibility: visible;" id="search"&gt;Sigma 8655 chipset, which gives it all its power. &lt;/span&gt;&lt;/span&gt;&lt;span style="visibility: visible;" id="main"&gt;&lt;span style="visibility: visible;" id="search"&gt;Btw,  the most interesting thing is that it runs on Linux, but for you to  enjoy a Linux node, you need to mod it to the unofficial firmware that  exposes telnet. From then on, it's a whole linux box that one can play  around with. &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="visibility: visible;" id="main"&gt;&lt;span style="visibility: visible;" id="search"&gt;&lt;br /&gt;It can play media from a USB storage attached to it (no, it doesn't have built-in storage) or from a network.  It supports Wired Ethernet and some fixed set of Wifi adaptors. I currently have a Linksys Wifi-adaptor, but that's not supported :(. Due to the lack of Wifi, I had to do some network-bridging to transparently connect my WDTV to my home network, so other devices also can access my WDTV and vice-versa (eg., I can remote-login into my WDTV's linux from my laptop). Media via network was the key thing to me. However, it supports only SMB (samba) based network shares (the unofficial firmwares do support other types; I'm already playing via a FTP share from my NAS).&lt;br /&gt;&lt;br /&gt;The remote looks a bit less responsive to me. The UI looks really cool. A cold boot takes around 20-25 seconds (official firmware) and a warm boot takes less than 5 seconds (actually only the UI goes down when the device is powered off via remote).&lt;br /&gt;&lt;br /&gt;This device has redefined my TV experience at home! Although I had Dolby Digital/DTS setup earlier, lack of full-HD was definitely a setback. Ah, that's past :)&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-821120089692722557?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/821120089692722557/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2010/08/wdtv-live-hd-media-player.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/821120089692722557'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/821120089692722557'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2010/08/wdtv-live-hd-media-player.html' title='WDTV Live - HD Media Player'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_CWrtfw9yct0/THp1O6u2VPI/AAAAAAAAAvs/NmLkjmZYji0/s72-c/wdtv.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-2799723508497056311</id><published>2010-08-15T18:59:00.004+05:30</published><updated>2010-08-15T19:06:56.767+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='scribbles'/><title type='text'>Heavy rain in Bangalore</title><content type='html'>&lt;div style="text-align: justify;"&gt;Heavy rain lashed eastern Bangalore today noon. I was driving on the Marathahalli outer ring road then. Visibility was terribly low. My car's wiper could barely manage even at its full speed swing. I could barely see anything beyond 50 meters. Every car was crawling at 30kmph while the normal speed would be around 70-80kmph (the speed limit is 60kmph btw).&lt;br /&gt;&lt;br /&gt;See the photoes. It was shot near Kadubeesanahalli junction, Marathahalli Outer Ring Road, Bangalore (15-Aug-2010, 2.10 pm.).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_CWrtfw9yct0/TGftGiMeTCI/AAAAAAAAAvM/R8ZSKlQMChQ/s1600/IMG015.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 300px;" src="http://2.bp.blogspot.com/_CWrtfw9yct0/TGftGiMeTCI/AAAAAAAAAvM/R8ZSKlQMChQ/s400/IMG015.jpg" alt="" id="BLOGGER_PHOTO_ID_5505629765997841442" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_CWrtfw9yct0/TGftGeyU_vI/AAAAAAAAAvE/O_-nF0UFUu4/s1600/IMG016.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 300px;" src="http://3.bp.blogspot.com/_CWrtfw9yct0/TGftGeyU_vI/AAAAAAAAAvE/O_-nF0UFUu4/s400/IMG016.jpg" alt="" id="BLOGGER_PHOTO_ID_5505629765082873586" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It was fun!! I've never driven earlier in such a heavy rain. It lasted at least 20 minutes like this.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-2799723508497056311?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/2799723508497056311/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2010/08/heavy-rain-in-bangalore.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/2799723508497056311'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/2799723508497056311'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2010/08/heavy-rain-in-bangalore.html' title='Heavy rain in Bangalore'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_CWrtfw9yct0/TGftGiMeTCI/AAAAAAAAAvM/R8ZSKlQMChQ/s72-c/IMG015.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-1853479543540010077</id><published>2010-07-22T20:55:00.009+05:30</published><updated>2010-07-24T20:38:08.803+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='eeebox'/><category scheme='http://www.blogger.com/atom/ns#' term='meego'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>Dual boot Meego with Windows XP</title><content type='html'>&lt;div style="text-align: justify;"&gt;After quite a bit of hesitation, last week I managed to install Meego onto my hard disk on EEEBox along with Windows XP. The success stories on getting dual boot on Meego aren't many (in fact none that was satisfactory to let me confidently try). Anyways, it was a pain to boot the live version on USB and reconfigure every time.&lt;br /&gt;&lt;br /&gt;This wasn't smooth. There were at least 2 times when I thought I just lost one or more Windows partitions!! I wasn't sure how good is Meego's installer's partition manager, so did all the partitioning on Windows.&lt;br /&gt;&lt;br /&gt;/boot          -- primary partition; better to keep this primary (ext3)&lt;br /&gt;/home        -- logical partition (ext3)&lt;br /&gt;/                  -- logical partition (btrfs) - recommended by Meego for /&lt;br /&gt;swap           -- logical partition (swap)&lt;br /&gt;&lt;br /&gt;Obviously, formatting was done during the Meego installation. The first time I started the install and configured all the mount points, filesystems etc., and let the installer to proceed. The installer failed half-way while formatting my / partition! Not sure if that's related to btrfs or whatever. But it failed and the installer exited. Huh! The first thing I did then was to boot into Windows and check my data (and they were in tact). Although I was actually hopeless to retry, the second try just worked! This time, I didn't have to format /boot, /home, swap as they were already formatted in the previous try - not sure if that means anything here.&lt;br /&gt;&lt;br /&gt;Okie, the Meego install was super-fast. Takes less than 5 minutes. I believe they just copy the live image as-is to the disk and just do some post configuration. The post configuration has the boot loader part. It detected my Windows and asked about the default option etc., Sadly there is no option to configure the boot loader timeout. I purposely let Meego as my default boot, so I can fix the boot loader if some thing goes wrong (it helped). Renamed the "Other" option to "Windows" and completed the install.&lt;br /&gt;&lt;br /&gt;When EEEBox restarted, I couldn't have even a glimpse of the boot loader. Meego was quickly on its way. I had read about this timeout issue earlier in other forums. The boot loader does not wait enough by default. The boot loader config file is in /boot/extlinux/extlinux.conf. Edit the file as root and fix the 'timeout' configuration to 100 (means 10 seconds). Also comment the "menu hidden" line by prefixing with #.&lt;br /&gt;&lt;br /&gt;timeout 100&lt;br /&gt;#menu hidden&lt;br /&gt;&lt;br /&gt;I didn't know that a shocker was waiting. I rebooted the EEEBox and tried entering into Windows, just to see the notorious error : "NTLDR missing". I was quite scared if Meego just blew up my Windows partition. Thankfully, I vaguely remembered that during the boot loader configuration (in install), I noticed that my Windows partition was identified as /dev/sda2. I had doubted that right at that time, but I hoped Meego would do it right. Actually my Windows was on /dev/sda1 (and most Windows installations would be). But the extlinux.conf file doesn't have any mention of /dev/sda2; for that matter even "sda2". The Windows boot is done by chain.c32 and the boot partition is an argument to this image.&lt;br /&gt;&lt;br /&gt;# this is how the conf file looked&lt;br /&gt;kernel chain.c32&lt;br /&gt;append boot 2&lt;br /&gt;&lt;br /&gt;Here, the boot parameter means /dev/sdx2. As it doesn't say the disk id, it looks to me if Meego can detect only other OSes on the same disk as where Meego is installed. Hmm..&lt;br /&gt;&lt;br /&gt;Changed the config to 'append boot 1' and got into Windows successfully. Sigh!&lt;br /&gt;&lt;br /&gt;Though there were hickups, Meego didn't make any damage beyond repair - Happy about that at least. Now Meego automatically logs into my home Wifi without any additional config. Installed gcc, cpp, kernel-headers, kernel-source etc., It has been a week since then; never got back to it :D&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-1853479543540010077?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/1853479543540010077/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2010/07/dual-boot-meego-with-windows-xp.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/1853479543540010077'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/1853479543540010077'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2010/07/dual-boot-meego-with-windows-xp.html' title='Dual boot Meego with Windows XP'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-173699758772390088</id><published>2010-07-22T11:43:00.000+05:30</published><updated>2010-07-22T11:46:04.132+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='pravs world'/><title type='text'>Keep Moving In Life</title><content type='html'>Courtesy: &lt;a href="http://www.pravsworld.com/content/inspiration/13/keep-moving-in-life"&gt;Pravs World&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;He who is silent is forgotten.&lt;br /&gt;He who does not advance falls back.&lt;br /&gt;He who stops is distanced, crushed.&lt;br /&gt;He who ceases to grow becomes smaller.&lt;br /&gt;He who leaves off, gives up.&lt;br /&gt;&lt;br /&gt;When you decide to stand still in life,&lt;br /&gt;you mark the beginning of your end.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-173699758772390088?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/173699758772390088/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2010/07/keep-moving-in-life.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/173699758772390088'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/173699758772390088'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2010/07/keep-moving-in-life.html' title='Keep Moving In Life'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-2853519147062242983</id><published>2010-07-05T20:45:00.009+05:30</published><updated>2010-07-24T20:37:49.292+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='techy'/><category scheme='http://www.blogger.com/atom/ns#' term='eeebox'/><category scheme='http://www.blogger.com/atom/ns#' term='meego'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>Meego on my Asus EEEBox</title><content type='html'>I've been planning to do this for a while, at last managed to do it this weekend -- installing Meego on my &lt;a href="http://geraldnaveen.blogspot.com/2010/02/asus-eeebox-b202.html"&gt;Asus EEEBox&lt;/a&gt;.&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;a href="http://meego.com/"&gt;Meego&lt;/a&gt; is primarily a Linux platform for the handhelds. While Meego is under rapid development for the smartphone sector, the Netbook version 1.0 of Meego has been out for a while (more than a month). The interesting thing about Meego is that it supports two hardware architectures: ARM and IA32 (the x86). As you might have guessed, ARM is mainly for the smartphones and x86 is for the notebooks -- primarily targeting the Intel's Atom processor series. In fact, x86 Meego is supported only on Intel's Atom and Core 2. My EEEBox is Atom N270, so didn't have any issues with it.&lt;br /&gt;&lt;br /&gt;As any other modern linux distros, Meego needn't be installed, but could be run live from USB (or whatever). One can download the image file from &lt;a href="http://meego.com/downloads/releases"&gt;Meego's official website&lt;/a&gt; (Note: there are two versions for Notebooks, one with Google Chrome browser and the other without Chrome -- due to the need for a separate EULA from Google). The image file is a standard img file and can be burnt on to a USB stick. One can use &lt;a href="https://launchpad.net/win32-image-writer/+download"&gt;win32diskimager&lt;/a&gt; on Windows or use the well-known 'dd' (dd bs=4096 if=imgfile of=usbdevice) on Linux.&lt;br /&gt;&lt;br /&gt;Note: Burning the image file onto USB disk, will messup with the existing file system on the USB disk; so be ready to lose those files, if it wasn't obvious.&lt;br /&gt;&lt;br /&gt;Once the USB image is burnt, it was flawless. Here are some screenshots (you are seeing my TV, as my EEEBox is connected to my TV):&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Boot loader:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_CWrtfw9yct0/TDH41LUk8eI/AAAAAAAAAtg/iXfM7fq4stM/s1600/P1010015.JPG"&gt;&lt;img style="cursor: pointer; width: 400px; height: 300px;" src="http://4.bp.blogspot.com/_CWrtfw9yct0/TDH41LUk8eI/AAAAAAAAAtg/iXfM7fq4stM/s400/P1010015.JPG" alt="" id="BLOGGER_PHOTO_ID_5490443013197197794" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Boot splash screen:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_CWrtfw9yct0/TDH5compvuI/AAAAAAAAAtw/pKwfGWRyeyk/s1600/P1010016.JPG"&gt;&lt;img style="cursor: pointer; width: 400px; height: 300px;" src="http://3.bp.blogspot.com/_CWrtfw9yct0/TDH5compvuI/AAAAAAAAAtw/pKwfGWRyeyk/s400/P1010016.JPG" alt="" id="BLOGGER_PHOTO_ID_5490443691072536290" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;From the time, I selected 'Boot Meego' at the boot loader, it did not take more than 15-18 seconds to boot and get to the Home screen. It was impressive. For a handheld, I guess this is a big plus. A quick boot and a bunch of features at the finger tip, makes sense. Unless you know it already to be a Linux variant, it is  difficult to predict by its appearance.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The Home screen:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_CWrtfw9yct0/TDH52eWxJ7I/AAAAAAAAAt4/fMHOOcEzcyQ/s1600/P1010017.JPG"&gt;&lt;img style="cursor: pointer; width: 400px; height: 300px;" src="http://2.bp.blogspot.com/_CWrtfw9yct0/TDH52eWxJ7I/AAAAAAAAAt4/fMHOOcEzcyQ/s400/P1010017.JPG" alt="" id="BLOGGER_PHOTO_ID_5490444134998157234" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Actually once I opened a bunch of applications, this home screen has more items. It acts like a task bar to switch between various running apps. All my devices were detected and Meego had its drivers: Display, Audio, Ethernet, Wifi. The first thing I wanted was to bring it on to my Wifi network and run VNC so I can play with it remotely. My EEEBox is just a computing node with no input devices (so I had to borrow it from my desktop for a while). Setting up Wifi was easy as any other OS. It detected all the wifi networks. Key-in the password as necessary and it just connects!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Wifi Configuration:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_CWrtfw9yct0/TDH6fslnPfI/AAAAAAAAAuA/thndNPssKj4/s1600/P1010019.JPG"&gt;&lt;img style="cursor: pointer; width: 400px; height: 300px;" src="http://1.bp.blogspot.com/_CWrtfw9yct0/TDH6fslnPfI/AAAAAAAAAuA/thndNPssKj4/s400/P1010019.JPG" alt="" id="BLOGGER_PHOTO_ID_5490444843193155058" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Once connected, I was so excited to play around with the network stuff. With Google Chrome browser handy, it wasn't any different than any other OS. I wanted to try out a video from youtube, to test the graphics capabilities. I was only stunned. I even ran the video in full screen and it was hassle free. See for yourself.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_CWrtfw9yct0/TDH6gUSiLRI/AAAAAAAAAuI/rZFVElRucq0/s1600/P1010020.JPG"&gt;&lt;img style="cursor: pointer; width: 400px; height: 300px;" src="http://3.bp.blogspot.com/_CWrtfw9yct0/TDH6gUSiLRI/AAAAAAAAAuI/rZFVElRucq0/s400/P1010020.JPG" alt="" id="BLOGGER_PHOTO_ID_5490444853850549522" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_CWrtfw9yct0/TDH6h1ZIloI/AAAAAAAAAuQ/W-ClDnA0Wb4/s1600/P1010021.JPG"&gt;&lt;img style="cursor: pointer; width: 400px; height: 300px;" src="http://3.bp.blogspot.com/_CWrtfw9yct0/TDH6h1ZIloI/AAAAAAAAAuQ/W-ClDnA0Wb4/s400/P1010021.JPG" alt="" id="BLOGGER_PHOTO_ID_5490444879916471938" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I am seriously considering to use Meego when I need to use my EEEBox as a media center PC -- which is what I do most times with it connected to my TV. Primarily because it is much faster to load and light-weight. Presumably, given that it is a Linux variant, it may not be difficult to port any non-UI services to Meego (the UI framework is specific to Meego, I could see that right at first look -- in Meego terms it is called UX, User eXperience). Btw, I did install the VNC server (vino) on Meego and was able to control it from my network. There is a Linux Shell available in the menus, which is a native linux shell opening up the beast behind. 'rpm' is the package manager. It was fun!&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-2853519147062242983?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/2853519147062242983/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2010/07/meego-on-my-asus-eeebox.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/2853519147062242983'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/2853519147062242983'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2010/07/meego-on-my-asus-eeebox.html' title='Meego on my Asus EEEBox'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_CWrtfw9yct0/TDH41LUk8eI/AAAAAAAAAtg/iXfM7fq4stM/s72-c/P1010015.JPG' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-3226148482080569220</id><published>2010-05-19T18:18:00.002+05:30</published><updated>2010-05-19T18:31:31.425+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='review'/><title type='text'>Logitech Harmony 525</title><content type='html'>&lt;div style="text-align: justify;"&gt;I bought this cool gadget last week. It should ideally be part of every household that has more than 2 remotes -- but due to the technical complexities involved in configuring it for their devices, it is not actually meant for every one. But for those with little techy background, this is a bliss.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;This is how it looks&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_CWrtfw9yct0/S_PeMJcaE5I/AAAAAAAAAsc/dRGdZWmFIgs/s1600/logitech-525.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 308px;" src="http://4.bp.blogspot.com/_CWrtfw9yct0/S_PeMJcaE5I/AAAAAAAAAsc/dRGdZWmFIgs/s400/logitech-525.jpg" alt="" id="BLOGGER_PHOTO_ID_5472962272460149650" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This is basically an universal remote, which can be used as a single replacement for all the remotes in your drawing room. What is unique about this product is that it can be configured for an activity instead of a device. To be more clear, the functionality of the remote is not based on which device you choose to operate on; instead it is based on which activity that you want to operate on. For example, in a typical home with a TV, home theatre (HT) and a set top box (STB) for digital TV, when you watch TV, you need to change volume on the HT, change channel on the STB, program guide on the STB etc., etc., Basically there are a number of actions that you would perform while watching TV and each belong to its own appliance.&lt;br /&gt;&lt;br /&gt;After proper configuration, this is what my remote does when I say 'Watch TV' (on a single button press)&lt;br /&gt;1. Powers on my TV, Home Theatre (HT), Tata Sky Plus - SetTopBox (STB)&lt;br /&gt;2. Waits for 3 seconds (for the devices to load)&lt;br /&gt;3. Sets the TV's input to Component1&lt;br /&gt;4. Sets the HT's input to AUX&lt;br /&gt;5. Changes the channel in the STB to 'NatGeo' (to avoid the irritating ad-channel at the start on tata sky).&lt;br /&gt;&lt;br /&gt;all at a single click. Now when I change volume, it sends out the volume up/down to the HT and when I change channels it sends out the channel up/down to the STB. This is what I called 'activity-based' against 'device-based'. Pretty useful and cool.&lt;br /&gt;&lt;br /&gt;There are few things that I don't like about it: I hate their configuration mode. It should have been better. You need to have internet connection to configure your remote at home (horrible). Every page in the configuration wizard sends out HTTP requests via the internet to their servers (even worse) -- this makes it too slow. And the justification they provide is: the remote configuration is available at any place at all times!! WTH!!&lt;br /&gt;&lt;br /&gt;For configuration, the remote needs to be connected to your comp via USB..Hmmm, soon a wall clock might have a USB port to sync with your outlook calendar! I hate the fact that there is no way to alter any configuration of the remote, without a comp (and yuck, an internet connection too). Some times this makes me postpone a configuration that I would love to have then. Also, the remote's LCD display is always ON; that makes me feel the power is wasted all the time -- I'm surprised why isn't there a power button for the remote itself! No wonder it runs on 4 AAA batteries. Not sure how long it runs.&lt;br /&gt;&lt;br /&gt;Anyways, while configuring the devices it controls, they have a huge collection of devices for you to choose from. The software identifies the correct device for you based on various inputs (make/model/type etc); sometimes it asks you to press one or more keys from the original remote and compares it against their database to disambiguate. This was impressive to watch. I had to get used to 'thinking in harmony' before I got comfortable. I should say it wasn't a easy thing to get started immediately -- but given the task, not sure if this could have been any simpler.&lt;br /&gt;&lt;br /&gt;But once configured, it rocks! I'm starting to forget that there are 3 devices involved while I watch TV -- there it wins, silently!&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-3226148482080569220?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/3226148482080569220/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2010/05/logitech-harmony-525.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/3226148482080569220'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/3226148482080569220'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2010/05/logitech-harmony-525.html' title='Logitech Harmony 525'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_CWrtfw9yct0/S_PeMJcaE5I/AAAAAAAAAsc/dRGdZWmFIgs/s72-c/logitech-525.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-5418958286856300713</id><published>2010-05-17T11:58:00.001+05:30</published><updated>2010-05-17T12:02:06.656+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='pravs world'/><title type='text'>Never Give Up On Anything</title><content type='html'>&lt;div style="text-align: justify;"&gt;Courtesy: &lt;a href="http://www.pravsworld.com/content/inspiration/394/never-give-up-on-anything"&gt;Pravs World&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Its Madness -&lt;br /&gt;To hate all roses, because you got scratched by one thorn.&lt;br /&gt;To give up all your dreams, because one did not come true.&lt;br /&gt;To lose faith in prayers, because one was not answered.&lt;br /&gt;&lt;br /&gt;To give up on your efforts, because one of them failed.&lt;br /&gt;To condemn all your friends, because one of them betrayed.&lt;br /&gt;Not to believe in love, because someone was unfaithful.&lt;br /&gt;&lt;br /&gt;Remember that, another chance may come up.&lt;br /&gt;A new friend, A new love, A new life.&lt;br /&gt;&lt;br /&gt;Never give up on anything!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-5418958286856300713?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/5418958286856300713/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2010/05/never-give-up-on-anything.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/5418958286856300713'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/5418958286856300713'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2010/05/never-give-up-on-anything.html' title='Never Give Up On Anything'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-3283285347462452909</id><published>2010-05-02T20:47:00.002+05:30</published><updated>2010-05-02T20:52:28.436+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='video'/><category scheme='http://www.blogger.com/atom/ns#' term='tamil'/><title type='text'>Jakkuboys</title><content type='html'>&lt;div style="text-align: justify;"&gt;A funny play, describing an IT office :) In tamil though; subtitles still can't bring the original effect!&lt;br /&gt;&lt;br /&gt;&lt;object width="400" height="300"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=10913103&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1"&gt;&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=10913103&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;p&gt;&lt;a href="http://vimeo.com/10913103"&gt;Jakkuboys - The Movie&lt;/a&gt; from &lt;a href="http://vimeo.com/user2820247"&gt;Scube Productions&lt;/a&gt; on &lt;a href="http://vimeo.com/"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-3283285347462452909?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/3283285347462452909/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2010/05/jakkuboys.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/3283285347462452909'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/3283285347462452909'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2010/05/jakkuboys.html' title='Jakkuboys'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-355492162205386612</id><published>2010-04-28T12:20:00.003+05:30</published><updated>2010-04-28T12:26:25.802+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='security'/><title type='text'>Digital shredding</title><content type='html'>&lt;div style="text-align: justify;"&gt;Everyone who runs a business or those who are concerned about their confidential documents, make sure they shred their documents when they realize that they no longer need it. Shredding old bank documents, telephone bills etc., are common things. There is a strong need for this, undoubtedly.&lt;br /&gt;&lt;br /&gt;In this revolutionary digital world, we should also realize the bigger danger that we have. Many do not know or realize that deleting a file from a comp, does not really delete the file's contents. Based on the size of the file, the fragmentation on the physical storage, the amount of free space left, the number of files written later to the disk (etc., etc.,), a portion or even the whole file may not get over-written at all -- thus facilitating the recovery of the file. The odds of recovery is higher on magnetic disks (unfortunately, the typical HDD medium so far) -- it seems to have a (fairly) non-zero success rate even on an over-written file. This is why the digital shredders usually write various unique patterns over and over again to completely shred the file from recovery.&lt;br /&gt;&lt;br /&gt;To quote just one example, it is a common practice, to write down username and passwords on desktop temporarily and deleting it after use -- well it's not over then. It is a bitter truth that someone who gets hold of your hard disk today can retrieve quite some "deleted" confidential data. The odds of losing a disk is pretty high when it is a laptop or when it is a portable hard drive -- these devices aren't uncommon anyways.&lt;br /&gt;&lt;br /&gt;There are so many free file shredders available to choose from. Most of them integrate an option to the Explorer's right click menu on the file, so it is easy to use. You can even choose the shredding algorithm to use based on the size of the file and the extent of confidentiality. The stronger the algorithm, the slower it is in shredding. I use this &lt;a href="http://www.fileshredder.org/"&gt;File Shredder&lt;/a&gt;, but that's just one among many.&lt;br /&gt;&lt;br /&gt;In the digital world, it is so risky that when the damage occurs it is faster than we could react. If you are thinking about shredding your files when you sense a danger, you might most likely fail to do so successfully. It would rather be a good idea to shred (instead of just deleting) the files as when you are done with it. It should come as a practice so we leave less footprint of confidential information overall.&lt;br /&gt;&lt;br /&gt;But beware, you can't ever recover the file if you accidentally shred it!! everything comes at a price, ain't it?&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-355492162205386612?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/355492162205386612/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2010/04/digital-shredding.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/355492162205386612'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/355492162205386612'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2010/04/digital-shredding.html' title='Digital shredding'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-3451114186880966929</id><published>2010-04-01T12:08:00.004+05:30</published><updated>2010-04-01T12:18:21.990+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='winmo'/><title type='text'>Microsoft Windows Mobile  - an interesting bug</title><content type='html'>&lt;div style="text-align: justify;"&gt;Bugs aren't rare; that too on Windows.&lt;br /&gt;&lt;br /&gt;But this bug on my Windows Mobile phone, was a bit too much. See this snapshot:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_CWrtfw9yct0/S7RAj0PNZfI/AAAAAAAAArk/Qfnac7-9OGU/s1600/sshot000.JPG"&gt;&lt;img style="cursor: pointer; width: 240px; height: 320px;" src="http://3.bp.blogspot.com/_CWrtfw9yct0/S7RAj0PNZfI/AAAAAAAAArk/Qfnac7-9OGU/s400/sshot000.JPG" alt="" id="BLOGGER_PHOTO_ID_5455056032714548722" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The SIM card was very much present in the phone. That isn't the strange part here -- but note the signal-strength meter and the EDGE-support symbol at the top. While WinMo had connected to my service provider and registered itself successfully, some WinMo component still thought that the SIM card was missing! To add to it, I was even able to make/receive calls and the status was still adamant that it was 'missing'.&lt;br /&gt;&lt;br /&gt;The well known Microsoft fix worked finally...yes, 'restart'.&lt;br /&gt;&lt;br /&gt;btw, this isn't an april-fool hoax ;)&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-3451114186880966929?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/3451114186880966929/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2010/04/microsoft-windows-mobile-interesting.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/3451114186880966929'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/3451114186880966929'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2010/04/microsoft-windows-mobile-interesting.html' title='Microsoft Windows Mobile  - an interesting bug'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_CWrtfw9yct0/S7RAj0PNZfI/AAAAAAAAArk/Qfnac7-9OGU/s72-c/sshot000.JPG' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-8909410253508666779</id><published>2010-03-25T11:14:00.002+05:30</published><updated>2010-03-25T11:22:44.341+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='network'/><category scheme='http://www.blogger.com/atom/ns#' term='review'/><title type='text'>Cisco (linksys) wifi client</title><content type='html'>I recommend reading my earlier post on &lt;a href="http://geraldnaveen.blogspot.com/2010/03/my-home-network.html"&gt;my home network&lt;/a&gt; before reading this one.&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;I need to agree that my use case was a bit uncommon, but the impact was a bit too much. The first thing that I had to do after installing the Cisco Wireless Client (called CWC from now on) was to uninstall it. This is why:&lt;br /&gt;&lt;br /&gt;I bought a USB wifi dongle from Cisco (was a linksys product) to use it on my EEEBox.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_CWrtfw9yct0/S6OcBzU6GYI/AAAAAAAAArc/6iQBgk4r47c/s1600-h/wifiadap.JPG"&gt;&lt;img style="cursor: pointer; width: 225px; height: 224px;" src="http://3.bp.blogspot.com/_CWrtfw9yct0/S6OcBzU6GYI/AAAAAAAAArc/6iQBgk4r47c/s400/wifiadap.JPG" alt="" id="BLOGGER_PHOTO_ID_5450371528820136322" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;As explained in my earlier post, the idea was to use this wifi dongle as an end-point for internet/intranet access in my home. I connected from my laptop to my EEEBox via VNC over the existing wifi connection. The dongle's box insists on installing the software first before I plug in the hardware into the comp -- possibly for simplicity and to avoid user errors. I remotely mounted the CD (remember? EEEBox doesn't have a CD drive) and started the install. As I started, I was starting to think about how this software is going to handle an existing wifi card which doesn't belong to Cisco. The software didn't show any sign of detecting such a card. At this point, I was calling that as 'seamless' integration!! but that thought didn't last so long. The installation proceeds and reaches the end and my VNC viewer closes!! I was a bit shocked with this behavior, but was hoping that the new wifi client will initialize and get back, and I should soon see my EEEBox back on my wifi network -- but it never happened. As I have static mapping (MAC-&gt;IP) on my DHCP server, I knew the IP that it would get every time. Clearly it had gone for a toss!! Then I rebooted the EEEBox using the hardware button on the case and watch the display on my TV. I realized there was an issue (Note: I haven't plugged in my cisco wifi dongle yet). The CWC started up but it was not able to connect to the network -- and the reason: authentication failure. CWC had only picked up my SSID from Windows but not any other credentials (WEP key in my case). This is half-baked migration. If it was not possible to read such credentials from Windows client, it should have at least warned me that it couldn't do so or have asked me for the credentials again! Ok, I forgave and reconfigured the settings on CWC and got it connected to my network. As I thought, I was all done but just plug in the USB dongle, I had a surprise waiting. The moment I connected the USB dongle, the CWC detects the new interface, installs the required drivers and brings it active. BUT, disables the old wireless connection!!! This sucks! defeats my whole purpose. I later realized that CWC doesn't allow two wifi connections (for that matter, any two network connections) at the same time -- at least that software that I got with this dongle didn't! Simplicity at the cost of functionality? I didn't have to think again, just uninstalled CWC instantly. Thankfully, this time, the software did what I expected. It didn't uninstall my wifi dongle drivers, but only the client software. So, one reboot, the Windows wireless client takes over, with both my wifi network interfaces active! Sigh!! Windows resurrected me from something else, for the first time ;)&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-8909410253508666779?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/8909410253508666779/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2010/03/cisco-linksys-wifi-client.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/8909410253508666779'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/8909410253508666779'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2010/03/cisco-linksys-wifi-client.html' title='Cisco (linksys) wifi client'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_CWrtfw9yct0/S6OcBzU6GYI/AAAAAAAAArc/6iQBgk4r47c/s72-c/wifiadap.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-14672433200940793</id><published>2010-03-18T20:57:00.004+05:30</published><updated>2010-03-18T21:42:59.960+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='techy'/><category scheme='http://www.blogger.com/atom/ns#' term='network'/><title type='text'>My Home Network</title><content type='html'>&lt;div style="text-align: justify;"&gt;With more and more devices coming in to our homes, building a wifi network is mandatory these days. But with the devices spread across the whole house, a single wifi network isn't enough anymore. I had the same issue. I have built a cost-effective wifi network through out my home, so all my devices have wifi network all the time available to access my local n/w as well as the Internet.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Constraints:&lt;/span&gt;&lt;br /&gt;1. Should cover a wider area than a single router could cover.&lt;br /&gt;2. Cost effective.&lt;br /&gt;3. Lower power consumption.&lt;br /&gt;&lt;br /&gt;Here is how my home network looks:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_CWrtfw9yct0/S6JGbF7q5MI/AAAAAAAAArU/SYyRsl1HsIo/s1600-h/homenw.JPG"&gt;&lt;img style="cursor: pointer; width: 400px; height: 239px;" src="http://3.bp.blogspot.com/_CWrtfw9yct0/S6JGbF7q5MI/AAAAAAAAArU/SYyRsl1HsIo/s400/homenw.JPG" alt="" id="BLOGGER_PHOTO_ID_5449995930334586050" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;There are two wifi networks (ie different SSIDs) in my home; the source being geographically spread out across my home, covers the whole house. The lines shown in red belong to one wifi network (SSID) and the lines in blue belong to the other one. Almost all wifi devices have a configuration to switch to the other wifi network when the connectivity drops on one connection. With that handy, switching between these two networks isn't a big deal for me.&lt;br /&gt;&lt;br /&gt;The easy means to expand the range of a router is to buy another router and configure the two routers in WDS (&lt;a href="http://en.wikipedia.org/wiki/Wireless_Distribution_System"&gt;Wireless Distribution System&lt;/a&gt;). This lets them share a common SSID and make it look like a wide range wifi. However, due to lack of standardization (yet) on WDS, it is not guaranteed that two routers from different vendors would correctly work on WDS. Given that I already had one router (given by my service provider) of unknown brand, I would have to buy two routers from the same company. That would add up to my cost and power consumption (I would still need to run my ADSL modem, or get one router with ADSL modem). With my &lt;a href="http://geraldnaveen.blogspot.com/2010/02/asus-eeebox-b202.html"&gt;EEEBox&lt;/a&gt; coming in, and managing to stay online all the time, I decided to make my EEEBox act as a wifi router for me. EEEBox is not multihomed by default, and comes with only one wifi adaptor (that has an external antenna with a good range). The idea was to get a USB wifi dongle on EEEBox and let it allow adhoc connections to it and route the packets via the builtin wifi card to my other router as required. This works pretty well. Now I don't need to power on a separate another device (router) and that too at the cost of just a USB wifi dongle. I got a wifi dongle from Cisco. Btw, the Cisco wireless connection software has issues with multiple wifi network cards!! I installed the wifi dongle's driver/software from a remote machine (remember? EEEBox doesn't have IO devices) via VNC and boom!!! I lost the connectivity on the other card too, leaving me with no idea of what was going on then -- I had to plug in the keyboard/mouse from my other comp and fix this issue finally. More on it later.&lt;br /&gt;&lt;br /&gt;When I watch videos via YouTube application on my Windows Mobile phone, it is awesome to think off that my mobile connects to my EEEBox which understands youtube is a non-local address and forwards it to my other wireless router (in a different room), which sends it out to the Internet. All these happen seamlessly to provide continuous video. No, I don't watch videos all the time, but that's the best way to stress-test a network. I get around 16Mbps bandwidth between my two wireless networks -- fair enough.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-14672433200940793?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/14672433200940793/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2010/03/my-home-network.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/14672433200940793'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/14672433200940793'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2010/03/my-home-network.html' title='My Home Network'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_CWrtfw9yct0/S6JGbF7q5MI/AAAAAAAAArU/SYyRsl1HsIo/s72-c/homenw.JPG' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-6347820618390782108</id><published>2010-02-26T18:58:00.006+05:30</published><updated>2010-07-24T20:38:29.044+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='eeebox'/><category scheme='http://www.blogger.com/atom/ns#' term='review'/><title type='text'>Asus EEEBox B202</title><content type='html'>&lt;div style="text-align: justify;"&gt;I have to blog about this awesome machine. There are a bunch of factors that together add glory to this box. There is nothing extra-ordinary about this configuration, but the key factors are the form-factor, power consumption and the price (now).&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;Any web search would get you this configuration, but still here it is:&lt;br /&gt;&lt;br /&gt; * CPU Intel Atom N270 with Hyperthreading&lt;br /&gt; * Memory 1GB&lt;br /&gt; * 160 GB SATA 2.5" HDD&lt;br /&gt; * Integrated graphics with DVI output&lt;br /&gt; * LAN 10/100/1000 Mbps&lt;br /&gt; * Wireless WLAN: 802.11 b/g/n&lt;br /&gt; * Card Reader SD/SDHC/MS/MS Pro/MMC&lt;br /&gt; * Audio chip Realtek ALC662 Azalia CODEC&lt;br /&gt; * Front I/O port USB x 2, Card Reader x 1, Headphone-out jack (WO/SPDIF) x 1, MIC x 1&lt;br /&gt; * Rear I/O port USB x 2, GigaLan x 1, Line-Out (L/R) with S/PDIF x 1&lt;br /&gt;&lt;br /&gt;Doesn't sound great? Read more:&lt;br /&gt;&lt;br /&gt;Now, all this with a maximum power consumption of just 20W (did you read maximum?). This is awesome, and fits very well for a dedicated server that doesn't need a terminal. It consumes only around 1 unit (kwh) per 2 days while running for 24 hours at full load. And it's ultra silent.&lt;br /&gt;&lt;br /&gt;Next, is the form-factor. Its sleek, neatly finished and its dimension is 22.2 * 17.8 * 2.69 cm and weighs just a kg. You just need to see it to believe it, so see it:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_CWrtfw9yct0/S4fVMWl3V8I/AAAAAAAAApc/MTe8jx3XEKc/s1600-h/glamour.jpg"&gt;&lt;img style="cursor: pointer; width: 337px; height: 400px;" src="http://2.bp.blogspot.com/_CWrtfw9yct0/S4fVMWl3V8I/AAAAAAAAApc/MTe8jx3XEKc/s400/glamour.jpg" alt="" id="BLOGGER_PHOTO_ID_5442553082900076482" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now the price!! I should mention that B202 isn't a recent invention from Asus, but has been here in India for more than a year now. But the prices weren't attractive then (I guess the launch price was around 18K!!). Now one can buy B202 for as low as 10K on ebay India (I bought for 9K with a 10% discount paypal gift voucher). I believe the reason for this price reduction is likely that Asus is clearing off its inventory and is all ramped up for the next models; B206 etc., B206 has HDMI support, but I couldn't get it online in India. I originally wanted to assemble a  low end machine with Atom N270 but when saw B202's price, I didn't think again.&lt;br /&gt;&lt;br /&gt;If you are gamer, this isn't for you!! The graphics controller is the integrated graphics controller and is not that powerful. But it is more than decent for normal  desktop applications at full HD resolution and video usage at half HD. It drives my LG 32" LCD TV at full HD resolution  (1920x1080) without issues via DVI (mind you, I'm NOT talking about full HD "videos"). I was told that this  struggles playing full HD videos -- I haven't tried. But it plays half-HD without issues, I'm ok with this. Getting a full HD video itself is a bigger pain, so I don't bother. Look at the full HD resolution on my TV:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_CWrtfw9yct0/S4fXDwNXA5I/AAAAAAAAApk/Z7gzHCFpGi4/s1600-h/IMG055.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 300px;" src="http://4.bp.blogspot.com/_CWrtfw9yct0/S4fXDwNXA5I/AAAAAAAAApk/Z7gzHCFpGi4/s400/IMG055.jpg" alt="" id="BLOGGER_PHOTO_ID_5442555134181049234" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;One funny thing worth mentioning: Asus distributes the drivers in a CD for a comp that doesn't have a CD drive :) Not to blame them, there is no such cheap media available. So, you might have to do some initial gimmicks before you can start using it (yes, the BIOS does support boot from USB).&lt;br /&gt;&lt;br /&gt;So all setup, eeebox is running, I see the desktop; what do you do now? There are bunch of things for which I use my eeebox. It's worth discussing how technology helps. Stay tuned...&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-6347820618390782108?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/6347820618390782108/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2010/02/asus-eeebox-b202.html#comment-form' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/6347820618390782108'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/6347820618390782108'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2010/02/asus-eeebox-b202.html' title='Asus EEEBox B202'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_CWrtfw9yct0/S4fVMWl3V8I/AAAAAAAAApc/MTe8jx3XEKc/s72-c/glamour.jpg' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-2411365205827351889</id><published>2010-02-22T18:40:00.002+05:30</published><updated>2010-02-22T18:47:38.054+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='network'/><title type='text'>Remotely access your servers without a static IP</title><content type='html'>&lt;div style="text-align: justify;"&gt;This is a very common problem that many of us face. We might have 24 hours internet service at home, but it is not quite straight forward to access our home PCs remotely from office or elsewhere, simply because their IP address is a DHCP one (at least in India, we need to pay for a static IP address).&lt;br /&gt;&lt;br /&gt;I used to ignore this issue earlier, as I never wanted to run a server 24 hours at home. Recently I started networking a bunch of devices at home. With more and more devices coming up, specially a file server or a download server, it is becoming important that I have access to them remotely wherever I'm.&lt;br /&gt;&lt;br /&gt;As mentioned earlier, the only issue here is the changing IP address for the server (to keep it simple and focused, I have excluded my router configurations from discussion). I had almost completed a custom solution for this: a simple python script running on my server periodically, which would discover my server's public IP and will post a tweet (content with the encoded IP address) to my secret twitter account whenever the IP address changes. I can remotely watch this tweet and decode it to find my server's IP address. This is pretty neat; except for the small fact that the script needs to be constantly running and polling for IP changes.&lt;br /&gt;&lt;br /&gt;Last weekend, when I was fine tuning security on my wireless network at home, I stumbled upon this feature called 'Dynamic DNS' - and that's exactly doing this job in a more efficient way. Dynamic DNS is a means by which any host can ask the DNS server to modify a DNS record. There are at least 2 well known Dynamic DNS service providers : &lt;a href="http://www.dyndns.org"&gt;www.dyndns.org&lt;/a&gt;, &lt;a href="http://www.tzo.com"&gt;www.tzo.com&lt;/a&gt;. Note that this requires Dynamic DNS support from the router (thankfully my router has). Once configured, the router by itself communicates with the dynamic dns server and notifies the change in its IP address. This is much more efficient and reliable as the router by itself handles the change. I used dyndns.org, and it works great. Whatsmore, you can create a dynamic host in dyndns.org something like 'myhomeserver.dyndns.org' (only if it is still available), and map it to your account (your router uses this same username/password to update the dynamic entry for that host). Now you can just remember this hostname, and it dynamically maps to the IP address that your router reported last to the DynDNS server. dyndns.org also has options to the control TTL values of the DNS entries. This shall be used to ensure that your remote client doesn't cache the DNS response for very long, as the IP could potentially be stale by then.&lt;br /&gt;&lt;br /&gt;No doubt, this service is useful.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-2411365205827351889?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/2411365205827351889/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2010/02/remotely-access-your-servers-without.html#comment-form' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/2411365205827351889'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/2411365205827351889'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2010/02/remotely-access-your-servers-without.html' title='Remotely access your servers without a static IP'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-4704344862027554535</id><published>2010-01-18T20:38:00.004+05:30</published><updated>2010-01-18T20:55:04.125+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='pencil arts'/><title type='text'>My pencil arts - #6 - Einstein</title><content type='html'>First and last are scanned ones. The second one is a photo.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_CWrtfw9yct0/S1R717462EI/AAAAAAAAAoI/QLkzr5FxyeI/s1600-h/EinsteinOutline.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 392px;" src="http://4.bp.blogspot.com/_CWrtfw9yct0/S1R717462EI/AAAAAAAAAoI/QLkzr5FxyeI/s400/EinsteinOutline.jpg" alt="" id="BLOGGER_PHOTO_ID_5428099617428002882" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_CWrtfw9yct0/S1R71sFQMaI/AAAAAAAAAoA/M7m23eYpLnY/s1600-h/EinsteinInProg.jpg"&gt;&lt;img style="cursor: pointer; width: 391px; height: 400px;" src="http://1.bp.blogspot.com/_CWrtfw9yct0/S1R71sFQMaI/AAAAAAAAAoA/M7m23eYpLnY/s400/EinsteinInProg.jpg" alt="" id="BLOGGER_PHOTO_ID_5428099613184766370" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_CWrtfw9yct0/S1R70_SAl6I/AAAAAAAAAn4/vM7QJjX26Ds/s1600-h/EinsteinComplete_Scan.jpg"&gt;&lt;img style="cursor: pointer; width: 374px; height: 400px;" src="http://2.bp.blogspot.com/_CWrtfw9yct0/S1R70_SAl6I/AAAAAAAAAn4/vM7QJjX26Ds/s400/EinsteinComplete_Scan.jpg" alt="" id="BLOGGER_PHOTO_ID_5428099601158674338" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-4704344862027554535?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/4704344862027554535/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2010/01/my-pencil-arts-6-einstein.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/4704344862027554535'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/4704344862027554535'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2010/01/my-pencil-arts-6-einstein.html' title='My pencil arts - #6 - Einstein'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_CWrtfw9yct0/S1R717462EI/AAAAAAAAAoI/QLkzr5FxyeI/s72-c/EinsteinOutline.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-3438514778092038278</id><published>2010-01-13T18:52:00.002+05:30</published><updated>2010-01-13T18:56:19.679+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='security'/><title type='text'>Privacy is more and more a concern</title><content type='html'>&lt;div style="text-align: justify;"&gt;I was really taken aback when I read this news this week that the &lt;a href="http://news.yahoo.com/s/nf/20100111/tc_nf/71028"&gt;Facebook CEO says&lt;/a&gt; "Privacy is no longer a concern" and that "sharing information online is the new social norm"! I'm shocked and I'm not sure if he really thought of anything more than running his own business successfully. I think the reality is "social networking is the new norm and privacy is becoming a concern more and more. Facebook/Orkut should ensure privacy of the information".&lt;br /&gt;&lt;br /&gt;That said, I do not under-estimate the complexity of the problem they have on hand. It is not as easy as it sounds (if it did). Bringing up literacy on -- privacy of confidential information, the way the data leaks, do's and dont's, is more than difficult in reality. The fundamental problem as I said earlier in one of my posts is that, the users are mostly common men. No one can blame them; there are many such cases in real life. I still drive my car without knowing how a Common-Rail-Diesel-Engine (CRDI) works -- but there I never had/have to. Hmm, that's not the case with the Internet.&lt;br /&gt;&lt;br /&gt;I see so many issues around with more and more social networking platforms coming up with more and more vulnerabilities. Sure, the social networking sites provide a means to collaborate and share info; but how many of us ensure that the info we share reaches "only" the people we intend to share with!! and that's where the problem is. There is so much private info shared all over these sites, that I bet, you can unlock one (out of say 200) of your friends' mailbox using 'forgot password' feature just by visiting their profile. We can't blame the email providers, as if they go any stricter than this, the actual user doesn't remember them too to recover his own password! Still, the email providers are forced to come up with more and more security options. If this is the case with a mailbox, imagine banking!! omg! Don't be surprised if you are asked with a security question like 'who is the best friend of your father-in-law's second sister's husband?' ;)&lt;br /&gt;&lt;br /&gt;People are so happy to have more and more online friends. The "count" is all that counts. What they don't think about is that, people whom they don't know are also going to be treated equally with their best friends in terms of sharing info. Sure, the websites offer granularity and options to group friends and control the privacy settings. But how many know it / use it? Not many. Apparently, the ones who are consciously handling the privacy settings are the ones who share the least already! And all this does not happen consecutively for someone to remember. I might add 5 friends this week and I might end up sharing a confidential information after 6 months. I may not remember that I had those totally "online" (and possibly virtual) friends, but they now have the info that I don't want them to know. In spite of the websites (like facebook/orkut) warning the users, it is difficult to enforce this. Users are mostly in a hurry to share and go read what others have shared. At some point, the users only look for an easy way to get rid of that popup and get back to business -- unfortunately defeating the whole idea of those warnings!! but that's reality. Sometimes I feel really odd when I see the privacy setting for 'friends of friends' -- this doesn't make sense to me at all. In spite of you being extra careful on sharing info, this might just screw up the entire deal. To me, a friend of my friend should belong to 'Everyone'. In security, one should consider the worst case as default.&lt;br /&gt;&lt;br /&gt;I've read and also realized that there is a lot of encroachment happening into the privacy of the individuals without they knowing about it. It seems there is a concept catching up called 'virtual friends' wherein, bots (computer programs) try to create friendships with unknown people. There was also a study that says many people have the tendency to accept unknown online friends. I can tell you that recently the number of friend requests that I get on both orkut/facebook have increased and believe me, I don't know most of them. With more and more real people having funny names on their profiles, it is obviously getting easier for bots to deceive us. I might have rejected some real friend requests because they sounded abnormal. Maybe someone (or many) somewhere is making the grounds; silently gathering info; or waiting to.&lt;br /&gt;&lt;br /&gt;and someone out there says privacy is no longer a concern!! hmmm...&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-3438514778092038278?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/3438514778092038278/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2010/01/privacy-is-more-and-more-concern.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/3438514778092038278'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/3438514778092038278'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2010/01/privacy-is-more-and-more-concern.html' title='Privacy is more and more a concern'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-6778176851782845433</id><published>2010-01-05T21:00:00.003+05:30</published><updated>2010-01-05T21:27:53.610+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='video'/><category scheme='http://www.blogger.com/atom/ns#' term='techy'/><title type='text'>Various video interfaces and their qualities</title><content type='html'>&lt;div style="text-align: justify;"&gt;There are so many types of video interfaces (ie., cables) that we come across every other day and not everyone understands what they are. It is essential to understand them, so we can use the best option that we have. There is definitely differences in the video quality and because these standards have evolved over time, not all video devices (be it a TV or a video player) have all available options. This has enforced the recent device manufacturers to support a variety of video interfaces, thus they ensure backward compatibility with the other end (a TV or a player). Unfortunately this has brought in confusion to the common people when they just look at the back of their new LCD TVs. Those olden days TV would just have one RF cable input, nothing else!! Gone are those days! Now, if you look at a modern TV, there are whole bunch of outputs (yes, including that RF cable input), and it isn't easy to choose the right cable to use for your need unless you understand what it means. Thanks to all those unique swanky colors, that lets us easily identify them on two devices.&lt;br /&gt;&lt;br /&gt;It so happens that if both your devices (player/TV) are recent ones, you will have many choices. At that point, it becomes important to use the right one. Here are the various cables in the increasing order of their quality:&lt;br /&gt;&lt;br /&gt;1. RF coaxial cable: This is the old one, that used to run from the Antenna on the terrace. This has the least quality. The TV Tuners for computer are exactly meant to decode this input. Carries both audio and video.&lt;br /&gt;&lt;br /&gt;2. Composite (RCA): This is the most popular yellow plug thingy. Composite cable offers more quality than the coaxial ones. This is so very popular that, people still use this for video signals even when they have better options. That said, even today, this is still the most available option (in India). Many lower end DVD players/TVs only support till Composite. Carries only Video.&lt;br /&gt;&lt;br /&gt;3. S-Video: The name apparently derives from the phrase 'Separated-Video'. In S-Video, the video signal is mainly separated into two parts: Chrominance (color) and Luminance (light intensity) signals. This offers much better clarity while solving some shortcomes in the composite signal. S-Video cable appears as a single cable, but has multiple terminals within it. Quality better than Composite. Not so commonly seen/used on TVs/players. Carries only Video.&lt;br /&gt;&lt;br /&gt;4. Component: As it's name indicates, component video carries various components of the video separately. It is an enhancement over S-Video, by splitting the video signal into Chrominance (color) and 2 Luminance (light intensity) signals. And the luminance signal carries the subtraction of luminance and the Chrominance (Y). The signal is carried via 3 cables (Green, Blue and Red). The component video input/output is usually marked with Y, PB/CB, PR/CR. The second and third channels are actually B-Y, and R-Y respectively. This subtraction method reduces the bandwidth requirement and offers much more clarity than any earlier ones. This is becoming increasingly available these days (my Tata Sky Plus STB has component out). The clarity is apparent (against Composite/S-Video) when the size of the display is bigger and when the source of the signal is digital (note: Component signal is not digital, it is analog; I'm talking about the source of the signal, say MPEG2/4 as in DTHs). There is also a RGB Component video, which carries the R, G and B signals separately in 3 cables; but unless qualified with RGB, a Component video means the normal one. Quality better than all the above. Carries only Video.&lt;br /&gt;&lt;br /&gt;5. DVI: Acronym for Digital Visual Interface / Digital Video Interconnect. Provides really high bandwidth to transfer high quality video including full-HD (1080p @ 1920x1080). DVI uses a single high quality cable with a number of internal lines. DVI has a quality much superior than that of component video too. DVI does not carry audio signal -- usually a preferred interface for computer to high resolution LCD monitors.&lt;br /&gt;&lt;br /&gt;6. HDMI: Acronym for High Definition Multimedia Interface. There are various revisions on this video standard and this is the state-of-the-art video interface standard as of today. Unlike DVI, HDMI carries both video and audio. The video quality is just the same as DVI, and it also has provision to carry signals for 8 audio channels!! In addition it also carries a commanding control line (called CEC - Consumer Electronics Control) which allows the HDMI devices to communicate and command  each other. To quote an example, when I turn off my LCD TV, it automatically turns off my Home Theatre (yes, both are connected by HDMI). HDMI-CEC is  usually called in different names by different TV/Home theatre manufacturers. For eg., LG calls this SIMPLINK. This is a really high-bandwidth interface and requires a good quality cable for best results -- the cable is pretty costly; as of this writing a good HDMI cable of 3m length costed me Rs.800 in Bangalore. An interesting note is that: DVI and HDMI are compatible with each other at signal levels too, so it is pretty easy to get converters between them -- obviously HDMI-to-DVI will result in loss of information on audio, CEC on the receiving end.&lt;br /&gt;&lt;br /&gt;The bottom line is: If you ever have a means to connect via HDMI, just do it! else, follow this ordering by quality and choose the right one. In my home, I have my home theatre connected to my TV via HDMI (I can watch full HD movies with Dolby Digital audio, with just that one cable running between them) and my Tata Sky Plus STB connected to my TV via Component.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-6778176851782845433?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/6778176851782845433/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2010/01/various-video-interfaces-and-their.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/6778176851782845433'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/6778176851782845433'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2010/01/various-video-interfaces-and-their.html' title='Various video interfaces and their qualities'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-7875306868788097473</id><published>2010-01-03T13:50:00.006+05:30</published><updated>2010-01-03T14:05:17.459+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='review'/><title type='text'>Avatar 3D @ Fame Lido</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://hollywoodbranding.files.wordpress.com/2009/10/avatar_promo_artwork.jpg"&gt;&lt;img style="cursor: pointer; width: 208px; height: 150px;" src="http://hollywoodbranding.files.wordpress.com/2009/10/avatar_promo_artwork.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;div style="text-align: justify;"&gt;I watched Avatar 3D at Fame Lido, Ulsoor, Bangalore. I took enough time before I went ahead to watch this film, so that I can get enough feedback on the 3D experience from the people who have already watched it. This was essential in Bangalore, because this is the first 3D film screened in commercial screens. Someone had reported bad experience on INOX, Jayanagar; There were lots of negative criticism on Fame Lido Shankarnag (MG Road, Bangalore) -- these were useful and I avoided these two. If not positive review on Fame Lido, at least I didn't read any negative comment on this one - so went ahead.&lt;br /&gt;&lt;br /&gt;At the end of the movie, I realized there were various factors involved that affected my movie experience yesterday. So I would have to rate in three different ways:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Avatar 3D:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It was an awesome experience. This is first time I saw a full length 3D movie with 3D effects. The creativity on the various creatures, plants, trees, sceneries was jaw-dropping!!  The concept slightly reminded me of The Matrix though. I believe, James Cameroon has consciously stayed away from making funny 3D effects, but concentrated more on making a real 3D film. 3D has been utilized as a tool to make the audience perceive the depth and details of the frame than anything else. I liked that. At some point, we get so involved in that 3D mode; removing the 3D glasses would show you how dumb the movie looks otherwise!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Fame Lido:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The theatre is located in Lido Mall, Ulsoor, Bangalore (near Trinity Circle). Due to the rail bridge construction for namma-metro, finding the mall and getting into the parking entrance is not easy for the first time. What's more? The Box office is on the ground floor and the screens are in 2nd and 4th floors. No indication or whatsoever. I went to the 4th floor directly (thanks to those notices inside the lift), just to learn that I had to collect the tickets at the ground floor. The automatic ticket kiosk was the only rescue. There are just 2 lifts of medium size, no escalator. If you reach the theatre just on time, you are going to be in soup. Parking is very very limited and a big mess. Specially if you reach there on a time when a previous show ends (which is usually the case), you may or may not get a lot. I was fortunate to reach there for the first show. But,  it took me at least 20 mins to get out of the parking space. The ticket cost, snacks were all costly to the standards of other high class theatres in Bangalore, but I'm not convinced on the quality front. There was always a long queue in the snacks counter; the restrooms were like caves (albeit clean). The mall is still not complete and there is almost nothing other than the Fame Cinemas and a Coffee Day. I would never go there again, unless there is a compelling reason. There is a fundamental problem with the space and infrastructure, which I'm worried they can't resolve.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Avatar 3D @ Fame Lido:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The experience of watching a 3D movie, definitely changes based on the theatre. I've not watched Avatar 3D in any other theatre, so can't really compare against anything. But overall the experience was not disappointing. I could sense the 3rd D; the sound quality was good. The 3D glasses weren't of great quality, bit heavy; my nose bone was paining for a while after the film. The biggest issue in Fame Lido (Screen 3) was that the screen was small. When you look at the screen, it does not cover your complete view. This definitely makes a negative impact on a 3D movie -- lacking a complete 3D effect. That said, the quality of projection was good (unlike Fame Lido Shankarnag -- as per comments on the net). Ignoring everything outside the movie hall, the overall movie experience was not bad; but not a first choice theatre for Avatar 3D!&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-7875306868788097473?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/7875306868788097473/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2010/01/avatar-3d-fame-lido.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/7875306868788097473'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/7875306868788097473'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2010/01/avatar-3d-fame-lido.html' title='Avatar 3D @ Fame Lido'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-127337081207525499</id><published>2009-12-30T19:17:00.003+05:30</published><updated>2009-12-30T20:27:22.297+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='review'/><title type='text'>Tata Sky Plus -- Television redefined</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;a href="http://www.tataskyplus.com"&gt;Tata Sky Plus&lt;/a&gt; (TSP) isn't anything new that I'm trying to introduce to the crowd, but its extra-ordinary power pushed me to write about it. Even, I knew about Tata Sky Plus right from the time it was launched; knew about the features and felt amazed. But believe me, you need to experience it to appreciate it even further. The flexibility it offers is a real big leap in the realm of television broadcasts.&lt;br /&gt;&lt;br /&gt;My &lt;a href="http://geraldnaveen.blogspot.com/2009/06/fronttech-tv-tuner.html"&gt;USB TV tuner card&lt;/a&gt; had somewhat similar features (along with my &lt;a href="http://geraldnaveen.blogspot.com/2009/06/tvprogramguide-my-application-for-tv.html"&gt;TVProgramGuide &lt;/a&gt;application), but TSP is even better.&lt;br /&gt;&lt;br /&gt;The crown of TSP is the ability to pause, rewind, record "live" TV. I know, some might feel that these are unnecessary features or luxury, but I've used it already many times in these 2 days (not because I have it, but because I needed it). It turns out that it is pretty common that we miss some critical scenes while we watch a TV, and ignore an inner urge to rewind it (because there is no way). We just live with it; but we don't have to, if 'we've TSP. I knew earlier that TSP allows the viewers to record one channel, while watching the other channel (yes, it has dual tuners built-in), but I didn't know that it would even allow you to record 2 different channels simultaneously while you watch one of the earlier recorded programmes - this is awesome. It requires a good amount of processing power. With a 160GB hard disk built into the DVR STB, TSP has all its space and power to do wonders -- it's a real multi-processing machine!!&lt;br /&gt;&lt;br /&gt;There are many other good features in TSP too that are common across all DTH providers. I've only blogged about what's so special.&lt;br /&gt;&lt;br /&gt;With their easy to use UI (I believe so), they have integrated all the features very well. Their user guide was a simple 15 page guide, with cool guidance. That said, the features it offers is a little beyond the understanding of a common man. e.g., a non-techy person "may" not be able to understand and enjoy all the features.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-127337081207525499?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/127337081207525499/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/12/tata-sky-plus-television-redefined.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/127337081207525499'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/127337081207525499'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/12/tata-sky-plus-television-redefined.html' title='Tata Sky Plus -- Television redefined'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-2917643300797812668</id><published>2009-12-21T18:51:00.001+05:30</published><updated>2009-12-21T18:53:04.447+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='scribbles'/><title type='text'>The high beam non-sense</title><content type='html'>&lt;div style="text-align: justify;"&gt;I am getting to feel that the high-beam non-sense has tremendously increased on the roads in India in the recent times. With more people starting to ride on roads, with more and more powerful bikes and cars coming up, this has really become a PITA.&lt;br /&gt;&lt;br /&gt;I wonder if (those) people even know that there are ways to control their beams. Maybe people like that extra indicator glowing on their dashboard, without bothering to worry about what it means. Not just cars, these days bikes' beams are also too bright to withstand. I hate these bike manufacturers for providing such big domes and reflectors -- specially the pulsars, unicorn etc., I can really feel that pain in my retina and like everyone else I would struggle to see through. No need to mention the consequences on the ride.&lt;br /&gt;&lt;br /&gt;The other day, I started from office in a bad mood (as usual). Was driving my car on the service road in Outer ring road, Bangalore. There was an opposing car with high beams (nothing uncommon). It was really too bright, and with the scarce lighting on the service road, I could only see those two head lights in the whole world around me. Being frustrated already, I didn't want to ignore this. I thought I would at least let him know how it feels. So I just put my headlights on high-beam and drove towards him :) I was happy that he would have learnt a lesson by now; but interestingly, as our cars cross each other, this guy stops his car and scolds me for my high beam and leaves. Hmmm. feeling totally helpless when you are frustrated? priceless!!&lt;br /&gt;&lt;br /&gt;Nothing is going to change, until this is seriously considered a traffic violation.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-2917643300797812668?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/2917643300797812668/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/12/high-beam-non-sense.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/2917643300797812668'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/2917643300797812668'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/12/high-beam-non-sense.html' title='The high beam non-sense'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-5314492966739871713</id><published>2009-11-16T17:11:00.001+05:30</published><updated>2009-11-16T17:11:42.677+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='scribbles'/><title type='text'>wassup...</title><content type='html'>&lt;div style="text-align: justify;"&gt;I never thought I would run into such a long pause (2 months) in my blog. The reason is very simple : I had too much to write about, and I really didn't want to write all that. I have been (and am) conscious of the fact that I don't want to dump in too much personal info into this blog -- and that's why this silence :) People who know me personally might know how much my life has changed.. okay, this is why I didn't want to write!! shhhh.&lt;br /&gt;&lt;br /&gt;I will definitely come back with a lots of useful info, that I came across during the past 2 months...lots to write. stay tuned, this blog is still alive!&lt;br /&gt;&lt;br /&gt;Expect few more weeks of silence from my side!&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-5314492966739871713?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/5314492966739871713/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/11/wassup.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/5314492966739871713'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/5314492966739871713'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/11/wassup.html' title='wassup...'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-1195498348632774205</id><published>2009-09-08T17:38:00.002+05:30</published><updated>2009-09-08T17:45:39.192+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='car'/><category scheme='http://www.blogger.com/atom/ns#' term='trips'/><title type='text'>Road route update on NH7 between Bangalore and Madurai</title><content type='html'>&lt;div style="text-align: justify;"&gt;This is a status update on the condition of NH7 between Bangalore and Madurai as on end of August 2009. This is an info that every one looks out for before setting out on travel (on their own).&lt;br /&gt;&lt;br /&gt;When compared to &lt;a href="http://geraldnaveen.blogspot.com/2008/12/road-route-from-bangalore-to-madurai.html"&gt;my previous ride on the same route last year&lt;/a&gt; (Dec 2008), the road conditions have improved a lot ie., a longer stretch has now been upgraded to 4 lanes and partially complete work have now been fully done.&lt;br /&gt;&lt;br /&gt;Bangalore -&gt; Hosur ==&gt; Well, I don't see any useful improvement on this route. There is lot of bridges being constructed until Electronic city and the traffic is a paid anyways. Not a big stretch, so acceptable.&lt;br /&gt;&lt;br /&gt;Hosur -&gt; Krishnagiri ==&gt; Bliss. You will soon forget the kind of trouble that Bangalore-&gt;Hosur route gave you. But heavy vehicles occupying both the lanes and trying to overtake each other at 20kmph is unavoidable. Just sit on the horn for sometime until they leave way for you.&lt;br /&gt;&lt;br /&gt;Krishnagiri -&gt; Salem ==&gt; Toll gate at Krishnagiri!! Pay the toll and enjoy the ride; the roads are still so good. 100-120kmph easily almost all the time. Dharmapuri enroute goes unnoticed in the quality of roads now. Note: Watch for few one ways/under construction lanes. Yes, I remember few, but are very few.&lt;br /&gt;&lt;br /&gt;Salem -&gt; Namakkal ==&gt; Toll gate at Thoppur (just before Salem). Remember to take the Salem by-pass and remember that even the by-pass might look like a city; so never get into the city and think you are on the by-pass.. confused enough? This stretch has improved a lot since my previous ride. I didn't see any issue and was very pleasant. &lt;span style="font-weight: bold;"&gt;From this point, always be cautious about one ways; you might get redirected once in a while.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Namakkal -&gt; Karur ==&gt; I remember a toll gate somewhere around here. Not sure of the exact location. It was just opening on the day I traveled. I can't tell you the joy I had when I was stopped at the toll gate and was let go without paying anything, saying 'it is opening only from midnight Sir!' :) Good roads, but watch out for one/two redirections.&lt;br /&gt;&lt;br /&gt;Karur -&gt; Dindigul ==&gt; This stretch isn't complete yet. The roads are coming up, so you get to ride on one side of the road most times. Specially when you are on the wrong lane (driving on the right side of the highway), make sure to switch on your head lights and put it on "high-beam". Some drivers on high-ways literally sleep!! There was one more toll gate coming up, but this isn't going to open up for now, given the condition of the roads. Use this stretch to relax and do not try to maintain the speeds you did sometime back.&lt;br /&gt;&lt;br /&gt;Dindigul -&gt; Madurai ==&gt; This stretch is around 60kms. I am surprised to see that this stretch is gone from nothing to near complete in the last one year. This route is almost totally done till Cholavandhan (~15-20kms away from Madurai). After this point, there is literally no space to get a 4 lane highway into Madurai. I don't see any work happening towards Madurai. So, if you are going to the Madurai city (or not going via Virudhunagar), you need to bite this bullet. This is road is the same old road between Madurai and Dindigul; it's pretty narrow and on peek times, there is almost no way to overtake. Better be patient; dangerous curves.&lt;br /&gt;&lt;br /&gt;That said, I think there is a by-pass from Madurai towards Virudhunagar,Trinelveli that starts right after Cholavandhan. There is no traffic allowed in, at the moment but that might be the idea. Coming on NH7, and going through Madurai towards Trinelveli, Kanyakumari would make no sense, given the traffic. And if you are going towards Trichy,Chennai from Dindigul via Madurai, may God save you!! (the ideal route is Dindigul-&gt;Trichy-&gt;Chennai). If you are reaching Rameshwaram via Madurai, you have a whole city to go through. There is not much that can be done here. The by-pass is way too long to consider.&lt;br /&gt;&lt;br /&gt;All in all, Bangalore -&gt; Madurai stretch on NH7 is becoming better and better !!&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-1195498348632774205?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/1195498348632774205/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/09/road-route-update-on-nh7-between.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/1195498348632774205'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/1195498348632774205'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/09/road-route-update-on-nh7-between.html' title='Road route update on NH7 between Bangalore and Madurai'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-2685972232858106604</id><published>2009-09-04T16:33:00.001+05:30</published><updated>2009-09-04T16:34:38.891+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='pravs world'/><title type='text'>Dream Big</title><content type='html'>&lt;p&gt;Courtesy: &lt;a href="http://pravstalk.com/dream-big/"&gt;Pravs World&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;If there was ever a time to dare, to make a difference,&lt;br /&gt;to embark on something worth doing, It is Now!&lt;/p&gt; &lt;p&gt;Not for any grand cause, necessarily.., but for something that tugs at your heart,&lt;br /&gt;Something that’s your inspiration, something that’s your dream.&lt;/p&gt; &lt;p&gt;You owe it to yourself to make your days here count.&lt;br /&gt;Have fun, dig deep, stretch, Dream Big.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-2685972232858106604?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/2685972232858106604/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/09/dream-big.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/2685972232858106604'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/2685972232858106604'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/09/dream-big.html' title='Dream Big'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-334689880218683882</id><published>2009-08-29T18:20:00.002+05:30</published><updated>2009-08-29T18:32:51.654+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='winmo'/><category scheme='http://www.blogger.com/atom/ns#' term='myapps'/><title type='text'>Caller Location Info v 0.3 for WinMo</title><content type='html'>&lt;div style="text-align: justify;"&gt; Licensed under &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://geraldnaveen.blogspot.com/2009/01/geraldapp-license.html"&gt;&lt;img style="border: 0px none ; cursor: pointer; width: 100px; height: 25px; position: relative; top: 10px;" src="http://sites.google.com/site/geraldnaveen/images/gerald_app.bmp" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Here is the next version of my Caller Location Info app for Windows Mobile (for India).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Release-notes:&lt;/span&gt;&lt;br /&gt;1. Includes a bunch of new additions to the mobile numbering. At least 250-300 new numbers added.&lt;br /&gt;2. Includes 2 new service providers - Tata Docomo and Loop Mobile.&lt;br /&gt;3. No changes to the STD list.&lt;br /&gt;4. No bug fixes (no known bugs actually :D)&lt;br /&gt;&lt;br /&gt;The installation instructions and other properties remain the same. See the &lt;a href="http://geraldnaveen.blogspot.com/2009/01/caller-location-info-v-01-for-winmo.html"&gt;earlier post&lt;/a&gt; for that.&lt;br /&gt;&lt;br /&gt;Download the &lt;a href="http://sites.google.com/site/geraldnaveen/winmo/callerinfo/GeraldCallerLocation.v0.3.CAB"&gt;CAB installer&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Enjoy!&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-334689880218683882?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/334689880218683882/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/08/caller-location-info-v-03-for-winmo.html#comment-form' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/334689880218683882'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/334689880218683882'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/08/caller-location-info-v-03-for-winmo.html' title='Caller Location Info v 0.3 for WinMo'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-403474050527297732</id><published>2009-08-27T11:09:00.003+05:30</published><updated>2011-09-08T13:37:01.707+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='car'/><category scheme='http://www.blogger.com/atom/ns#' term='trips'/><title type='text'>Car tyre pressure for long drives</title><content type='html'>&lt;div style="text-align: justify;"&gt;I recently went for a long drive (450kms) at a single stretch. I had the usual question of 'how much air pressure do I inflate in my car's tyres?'. This is the first time I was going all alone for such a long distance, so I decided to understand a bit more about air pressure and do the right thing.&lt;br /&gt;&lt;br /&gt;In the Internet, there was no good summary of what is the right thing. I read a number of forums and articles, before I believed I understood. Let me explain a few basics of air pressure so you understand better. It is a well known fact these two external factors affect the tyre pressure:&lt;br /&gt;&lt;br /&gt;1. Car's running time: If the car is on the move, the air pressure increases (possibly due to the collision between the air molecules, as they spin at a good speed). So it is generally advised not to fill up air after driving for quite some distance (&amp;gt;2km?) -- because by the time one reaches the petrol bunk the air pressure would have gone up by few psi's (a unit of measurement of tyre's air pressure). If there is no other means, then it is advised to leave the car at rest for appropriate amount of time before filling up air (this is mostly impractical). OR fill up few psi's (2?) more than what you intend, to account for the expansion.&lt;br /&gt;&lt;br /&gt;2. Ambient temperature: This is straight forward. Air expands on heating -- thus the pressure inside the tyre is proportional to the temperature. So it is advised to fill up air in the morning or in the evening when the temperature has cooled down a bit. This is the right thing because, the recommended air pressure is always the "minimum" air pressure that is recommended for the tyres for that load. This is why the values change from car to car even if the tyre properties are the same. The maximum pressure a tyre can withstand is usually embossed on the tyre itself (usually in the range of 44 psi, in India).&lt;br /&gt;&lt;br /&gt;Based on all these facts, during a long drive, it makes sense to expect the tyre pressure to increase heavily. As a result a common misconception is to fill up few psi's less than the recommended. Unfortunately, there is a logical explanation that supports the common misconception -- I had a similar opinion earlier. However it turns out that this is "wrong". At reduced air pressure, the area of the tread that is in contact with the road increases -- this gives better comfort, but poorer handling of the vehicle. Due to the increase in the area of contact, the heat generated at the tread increases -- at a long run, this leads to a faster wear and tear of the tyre tread and poor control. An already worn out tyre might even burst at high speeds -- not to mention what happens to the driver.&lt;br /&gt;&lt;br /&gt;To add to it, when I reached home (after 450kms) and measured my tyre pressure again (if you don't have a tool, get one for long drives), 2 psi had vanished from all my tyres!!! Now, this also means that on a long drive, due to the pressure on tyre (bumps and jumps), the air had also leaked gradually (all 4 tyres of mine are brand new and also have nozzle caps, nothing to suspect on the tyres). Watch out, so you don't go below the recommended pressure mid way of your drive.&lt;br /&gt;&lt;br /&gt;Usually the recommended air pressure is much lesser than the max pressure the tyre can withstand (for eg., for my car, the max tyre pressure is 44 psi, and the recommended is around 30 psi) -- so on a long drive it is advised to inflate the tyre to a few psi's more than the recommended, for the reasons mentioned above. I had inflated to 34 psi for this drive.&lt;br /&gt;&lt;br /&gt;Understand, inflate and have a safe drive!!&lt;br /&gt;&lt;br /&gt;Disclaimer: That said, I am not responsible if there is any unexpected event due to the increased pressure. Use your own conscience to validate the info above.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-403474050527297732?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/403474050527297732/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/08/car-tyre-pressure-for-long-drives.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/403474050527297732'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/403474050527297732'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/08/car-tyre-pressure-for-long-drives.html' title='Car tyre pressure for long drives'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-614081344110525966</id><published>2009-08-12T17:17:00.006+05:30</published><updated>2009-08-12T17:28:42.428+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='security'/><title type='text'>Dangerous Windows Explorer options</title><content type='html'>&lt;div style="text-align: justify;"&gt;If you are a Windows user and in Windows Explorer if you do not have the file extensions visible (option: Hide file extensions for known types) and also have the habit of viewing the files in any mode other than 'details' mode (Thumbnails, Tiles, Icons, List), then you need to be definitely be aware of this vulnerability awaiting you.&lt;br /&gt;&lt;br /&gt;Last week, I plugged in one of my pen drives into my friends comp and noticed that there was an extra folder (in the name 'New Folder'). I was sure I didn't create that, but was just curios as to how it got created. The apparent reaction was to click on the folder to see what files it has. I click on it, but nothing happens, the folder doesn't open. This is when I realized the possible trap.&lt;br /&gt;&lt;br /&gt;After analysing, it turned out that my friend's comp was already infected with a virus; and I guess the virus automatically copies itself to any removable media attached to the comp. It spreads itself onto removable drives and creates autorun.inf to get control on the next comp where the pen drive is inserted (as explained by &lt;a href="http://geraldnaveen.blogspot.com/2009/02/inside-infected-laptop.html"&gt;my earlier post&lt;/a&gt;). When that explains why the 'new folder' was created, it was still unclear as to what was inside it. Later, I figured out that, that Windows Explorer was configured (by default) to not show file extensions, and that the view mode was also tiles mode -- so some otherwise-apparent things have gone missing and before we could realize, the damage is done. It turned out that, the 'New Folder' was not a folder/directory, but an application with the application icon set exactly the same as a normal Windows Folder icon. See it for yourself.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_CWrtfw9yct0/SoKr37kpinI/AAAAAAAAAY4/lO72K5KUcL4/s1600-h/hack1.JPG"&gt;&lt;img style="cursor: pointer; width: 400px; height: 325px;" src="http://1.bp.blogspot.com/_CWrtfw9yct0/SoKr37kpinI/AAAAAAAAAY4/lO72K5KUcL4/s400/hack1.JPG" alt="" id="BLOGGER_PHOTO_ID_5369042683151616626" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In this scenario, MyFolder is an application, while MyFolder2 is a real folder -- Can you spot any difference?? Absolutely not. An immediate reaction for anyone would be to open the new folder, but end up executing the application!! This is a real danger.&lt;br /&gt;&lt;br /&gt;Then I disabled the 'Hide extensions for known filetypes' and changed the view to details mode; Now you should spot the difference:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_CWrtfw9yct0/SoKtI9acg6I/AAAAAAAAAZI/3LeR1uocR4Y/s1600-h/hack3.JPG"&gt;&lt;img style="cursor: pointer; width: 400px; height: 325px;" src="http://4.bp.blogspot.com/_CWrtfw9yct0/SoKtI9acg6I/AAAAAAAAAZI/3LeR1uocR4Y/s400/hack3.JPG" alt="" id="BLOGGER_PHOTO_ID_5369044075215094690" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The application in the picture was created by me on my dev setup for testing; it is totally harmless. Apparently when any application has its icon set the same as 'Windows Folder', McAfee jumps in and tags it as a 'W32/Generic.worm.b' virus. Even my test application was caught promptly -- not bad.&lt;br /&gt;&lt;br /&gt;So please be aware of this and think twice before clicking on anything from a removable drive (even if it is a folder). If the computer was not infected earlier, all it requires is a click to get infected (and as I had mentioned in &lt;a href="http://geraldnaveen.blogspot.com/2009/02/inside-infected-laptop.html"&gt;my previous post&lt;/a&gt;, do not let autorun kick in anytime you insert a removable drive). It is a good practice to show the extensions all the time (unfortunately, Windows Explorer hides it by default :( ). The other good practice is to create 'system restore points' regularly, so you can get back to a clean state if required (this shall not be 100% effective for all cases).&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-614081344110525966?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/614081344110525966/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/08/dangerous-windows-explorer-options.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/614081344110525966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/614081344110525966'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/08/dangerous-windows-explorer-options.html' title='Dangerous Windows Explorer options'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_CWrtfw9yct0/SoKr37kpinI/AAAAAAAAAY4/lO72K5KUcL4/s72-c/hack1.JPG' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-841255991851045350</id><published>2009-08-05T16:32:00.004+05:30</published><updated>2009-08-05T16:38:54.771+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='spam'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><title type='text'>Spam or not?</title><content type='html'>&lt;div style="text-align: justify;"&gt;Whenever I receive any "interesting" spam, I have the habit of investigating and tracking down the sender and trying to analyze the motivation of the sender. This email caught my attention in the same way.&lt;br /&gt;&lt;br /&gt;See the email for yourself.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_CWrtfw9yct0/Snlm6QWHXoI/AAAAAAAAAYA/eaEBrVSLnKg/s1600-h/bg1.JPG"&gt;&lt;img style="cursor: pointer; width: 400px; height: 129px;" src="http://4.bp.blogspot.com/_CWrtfw9yct0/Snlm6QWHXoI/AAAAAAAAAYA/eaEBrVSLnKg/s400/bg1.JPG" alt="" id="BLOGGER_PHOTO_ID_5366433581994827394" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Yes, that is all it had. My initial reaction was that, the hacker sender was a amateur so he didn't know how to make the mail look legitimate -- but not for so long, when I discover that this email was totally legitimate and was indeed sent by Standard Chartered Bank - SCB (Unless!! : read the epilogue of this post).&lt;br /&gt;&lt;br /&gt;Ok, let's go through the email. The email is poorly formatted (maybe spam?). The only useful content is the 'Click here' link and it points to something like http://pop4.mailserv.in/sc/lt.php?id= eh8IBgAGA19XRAwETAA6XweWkKK (more and more like spam). I clicked on this link, and I was taken to a page that looked exactly like SCB's site; it didn't take me long, before I figured out that the page was actually the real SCB inet banking login page, and not a fake one!! I verified the SSL certificates and they are valid, trusted and belong to SCB (Thanks to the further confirmation from Firefox that it said I had visited this site more than 100 times earlier -- 100 is just an illustration, don't try to guess anything). At this point, I had no answer. If that was a spam, why would I be redirected to the bank's page; and if it was not a spam, why would a bank send such a suspicious email and redirect to a login page through a third-part link??!!! Instead of speculating, I thought I would analyze the technical aspects of this email first.&lt;br /&gt;&lt;br /&gt;Given that the link didn't point directly to the bank's site (but to mailserv.in), I first verified if sc.com (see the from address of the email) belongs to SCB. It turned out that sc.com is legitimate and registered against SCB's head office in Hong Kong. Now that sc.com is valid, I verified the email headers to check if the email was indeed sent from 'sc.com' domain. The email had come from an MX from cleanmail.in and the return path is to sc.mailserv.in. Now, it makes sense why the link was pointing back to mailserv.in. At this moment, I thought it was a spam originating from mailserv.in. But when I digged out more details, I was shocked. mailserv.in belongs to a legitimate email service provider registered in Mumbai. When I went through their customer lists, I started to believe that this email is legitimate -- all of its customers are well known institutions in India including a handful of banks (Interestingly, SCB is not listed as one of them). But a list of customers of this grade, made me believe that an email from mailserv.in would not be a spam.&lt;br /&gt;&lt;br /&gt;One last thing I still wanted was, to take a look at how the redirection from pop4.mailserv.in to SCB's inetbanking site happens -- just to ensure if there is any injection of any XSS stuff. I did a wget on the given URL, pop4.mailserv.in just returns an HTTP error code 302 (meaning Moved Temporarily) and redirects to the SCB's legitimate page. This was a clean redirection and this solves the last question, and the sender has no "hacking" benefit out of this.&lt;br /&gt;&lt;br /&gt;After all this, I finally believed that this mail was legitimate and not a spam. I am really depressed with the kind of security implications that such an email would cause. If a legitimate institution can send a spam-like email, why wouldn't it be easy for a spammer to send a legitimate-like email and deceive the user??!!&lt;br /&gt;&lt;br /&gt;I still "wish" this to be a spam (I just can't believe a bank would do this!!); If it was a spam, the only benefit for the sender that I can "speculate" is: Maybe the sender is tracking the number of users who actually click on this link and navigate. Maybe the sender would send a number of such legitimate messages, and then suddenly a phishing email, so the user doesn't realize the difference and gets trapped. I can't think of anything else.&lt;br /&gt;&lt;br /&gt;Any other thoughts?&lt;br /&gt;&lt;br /&gt;If you enjoyed reading this analysis, you might also be interested in my analysis of &lt;a href="http://geraldnaveen.blogspot.com/2009/03/interesting-spam-and-analysis.html"&gt;another interesting spam&lt;/a&gt; I received.&lt;br /&gt;&lt;br /&gt;Disclaimer: I've no confirmation from SCB that it is legitimate email. So it could still be a spam. Use your own conscience and decide it for yourself.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-841255991851045350?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/841255991851045350/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/08/spam-or-not.html#comment-form' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/841255991851045350'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/841255991851045350'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/08/spam-or-not.html' title='Spam or not?'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_CWrtfw9yct0/Snlm6QWHXoI/AAAAAAAAAYA/eaEBrVSLnKg/s72-c/bg1.JPG' height='72' width='72'/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-5156814942803270991</id><published>2009-07-31T17:01:00.002+05:30</published><updated>2009-07-31T17:10:09.925+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='video'/><category scheme='http://www.blogger.com/atom/ns#' term='techy'/><category scheme='http://www.blogger.com/atom/ns#' term='winmo'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>Booting Linux live from mobile phone</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:85%;"&gt;== If you had landed here thinking this is about booting Linux on your mobile phone, "NO". This is about booting Linux on a comp/laptop from a mobile phone ==&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;The concept of booting and using Linux without having to install it on hard disk (aka Live CD) has been there for years (at least 10?). Thanks to &lt;a href="http://www.knoppix.net/"&gt;Knoppix&lt;/a&gt; -- the pioneer in this approach. This later evolved to booting a live CD from media other than just CDs, like pen drives etc., With the later BIOS, supporting USB devices in the boot list, this had become pretty handy. I was a big fan of &lt;a href="http://www.damnsmalllinux.org/"&gt;Damn Small Linux&lt;/a&gt; (DSL), which is really a damn small linux (with just a 50MB foot print) and goes almost invisible on your pen drive. I used to happily carry around DSL on my pen drive 2-3 years back.&lt;br /&gt;&lt;br /&gt;But hold on. Why do I need to carry a bootable linux on my pen drive?? Anyways I need a comp to boot it; and the comp would anyway have an OS installed. Then why? True, but it is handy. I primarily see this useful for 2 purposes:&lt;br /&gt;&lt;br /&gt;1. To use it as a recovery tool if something terribly goes wrong with my comp -- I do backup my master-boot-record (MBR) and the partition table (pretty easy to backup/restore from linux) etc., so I can recover my PC if something goes wrong at that level. This is also useful to analyze any comp for that matter if that fails to boot.&lt;br /&gt;&lt;br /&gt;2. I can carry a set of applications along with me. If I have a comp infront of me, I would like to have a C/C++ compiler on it, maybe python interpreter and sometimes Office suite (MS office or open office). I cannot expect this everywhere I need it. Well, my own personal comp in my home town (one of the powerful ones I had during my Engineering with 64MB RAM and 500MHz processor :D) now barely has anything useful in it. It does not have most of the applications that I would need for today; and some times it does not even boot when I need it to :) No photoshop, python, games etc., Carrying a linux satisfies all (at least, most of) these requirements.&lt;br /&gt;&lt;br /&gt;This being so useful, the major setback is the necessity to carry around that pen drive all the time; this drawback supersedes and suppresses all its advantages, and I mostly did not have my pen drive with me when I needed it ; And at some point, I forgot which of my 'n' pen-drives had the Linux live installed -- and that was the end to my use of this approach.&lt;br /&gt;&lt;br /&gt;Recently, this thought struck my mind -- Why shouldn't I use my mobile phone as a pen drive, as I carry it all the time. And now that I have a Windows Mobile phone, I was really interested to see my "Windows" phone striving hard to help me in booting Linux on my comp :). But, I wasn't sure if that would work, without having to have a dedicated memory card. I was very clear that this is useful only if I can use the memory card for any other use on my mobile, like earlier. I tried various flavors including &lt;a href="http://fedoraproject.org"&gt;Fedora&lt;/a&gt;, DSL and Knoppix. My first choice was DSL -- it being so small, but that failed to boot off any pen drive on my laptop and my desktop (Gave up! maybe it does not support a variety of hardware?). Fedora 11 was the next choice. I used this &lt;a href="https://fedorahosted.org/liveusb-creator/"&gt;live USB Creator&lt;/a&gt;, but that failed to boot too -- I didn't spend much time on it. I thought I would try out the legend Knoppix and it just worked effortlessly. The only important thing to notice in this project is, that we need to boot Linux off a FAT16 drive. The knoppix live CD comes with the isolinux boot loader that operates off an ISO -- but that wouldn't help us here. Thankfully, &lt;a href="http://syslinux.zytor.com/wiki/index.php/The_Syslinux_Project"&gt;syslinux&lt;/a&gt; is a boot loader that does this job for us.&lt;br /&gt;&lt;br /&gt;So, here is what you need to do if you need to boot Linux from your pendrive or Windows Mobile or any other mobile that supports Mass-storage mode.&lt;br /&gt;&lt;br /&gt;On Windows: (TRY AT YOUR OWN RISK!!!)&lt;br /&gt;&lt;br /&gt;1. Download &lt;a href="http://www.kernel.org/pub/dist/knoppix/KNOPPIX_V5.1.1CD-2007-01-04-EN.iso"&gt;Knoppix Live CD ISO image&lt;/a&gt;.&lt;br /&gt;2. Download &lt;a href="http://www.kernel.org/pub/linux/utils/boot/syslinux/syslinux-3.82.zip"&gt;syslinux&lt;/a&gt;.&lt;br /&gt;3. If mobile, put your Mobile in USB Mass-storage mode and connect it to your PC (else connect your pendrive to your PC).&lt;br /&gt;4. Extract the Knoppix ISO to a folder say C:\MyFolder (Many software could do this including WinZip, 7Z etc.,)&lt;br /&gt;5. Copy all the files from the C:\MyFolder\boot folder to C:\MyFolder\ (ie., bring the files inside boot folder to the parent directory).&lt;br /&gt;6. Rename C:\MyFolder\isolinux.cfg to C:\MyFolder\syslinux.cfg (thankfully the config files are similar between isolinux and syslinux).&lt;br /&gt;7. Delete the isolinux.bin file from C:\MyFolder\ (we don't need this).&lt;br /&gt;8. Now copy all the files from C:\MyFolder to your mass-storage folder (say G:). Note: Directory structure should be such that all files in the C:\MyFolder should be in the root directory of your mass-storage drive.&lt;br /&gt;9. IMPORTANT: Be very careful at this step. If you give a wrong drive letter, you may spoil your computer from booting. Open up a command prompt. CD to the folder where you have syslinux and run 'win32\syslinux.exe -ma G:' (I assume G: is your mass-storage drive).&lt;br /&gt;&lt;br /&gt;You are all set. Make sure you have USB removable device / USB HDD in the boot list (with priority ahead of your HDD) of your computer. If all done well, connect your mobile/pendrive to your comp and reboot; you should see Knoppix booting off it.&lt;br /&gt;&lt;br /&gt;Here is my Lenovo T400 Laptop booting Knoppix from my Windows Mobile ASUS P320: (The video is little long, please feel free to forward if you feel bored; but I want to provide even granular details for the interested, so didn't strip it down).&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/1xpd7pT_Rlw&amp;hl=en&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/1xpd7pT_Rlw&amp;hl=en&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Have fun!&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-5156814942803270991?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/5156814942803270991/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/07/booting-linux-live-from-mobile-phone.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/5156814942803270991'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/5156814942803270991'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/07/booting-linux-live-from-mobile-phone.html' title='Booting Linux live from mobile phone'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-8235372385169759332</id><published>2009-07-24T19:19:00.005+05:30</published><updated>2009-07-24T19:32:46.556+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='winmo'/><title type='text'>Windows Mobile Mass-storage drains battery</title><content type='html'>&lt;div style="text-align: justify;"&gt;I recently discovered that my Windows Mobile (ASUS P320) phone drains battery if the USB connection setting is set to 'Mass storage'. In fact it terribly drains; almost half its usual time. It drains battery even if the phone is not connected over USB to any host and even if the phone is in sleep mode. Horrible and unexpected!!&lt;br /&gt;&lt;br /&gt;So, in case you have a Windows Mobile phone and suffer with pretty poor battery performance (less than 1.5 days) check if you had changed the USB setting to 'mass-storage' (Start-&gt;Settings-&gt;Connections-&gt;USB). Set it to 'activesync turbo mode'. Change to mass-storage only when required and change it back. It is quite likely that this problem is specific to Windows Mobile 6.1, but I would not be surprised if this issue exists in other versions.&lt;br /&gt;&lt;br /&gt;Also, many people complain about WinMo phones switching off much earlier than the battery  becoming totally empty. It is important to understand that phone switching off itself on low battery is for your own benefit; if a WinMo runs totally out of battery, it is as good as a hard reset (you lose everything in your phone memory including applications (on phone mem), messages, contacts etc.,). Ideally it switches off  when charge in the battery goes below 10% and you can still boot it back again in emergency (it tries to switch off again); I've even made calls at those times. Also, even if the phone is switched off, it still uses battery to keep the memory contents alive; so the remaining 6-10% is reserved to preserve your data until you get to a charger. So it is better not to force boot. I think, usually there is also a  small internal backup battery, to support changing of phone batteries without losing data, but that's not going to last long.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-8235372385169759332?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/8235372385169759332/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/07/windows-mobile-mass-storage-drains.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/8235372385169759332'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/8235372385169759332'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/07/windows-mobile-mass-storage-drains.html' title='Windows Mobile Mass-storage drains battery'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-8745231834200454995</id><published>2009-07-16T16:21:00.006+05:30</published><updated>2009-07-16T16:33:30.618+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='developer'/><category scheme='http://www.blogger.com/atom/ns#' term='myapps'/><title type='text'>TVProgramGuide -- developer's view - #2</title><content type='html'>&lt;div style="text-align: justify;"&gt;This is a follow up of my previous post on &lt;a href="http://geraldnaveen.blogspot.com/2009/07/tvprogramguide-developers-view.html"&gt;developer's view on my TVProgramGuide application&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;There were 2 APIs identified : InitIR and GetIRCode&lt;br /&gt;&lt;br /&gt;The next step is to identify the return types, calling convention, parameter list and types of these two. Let me explain how I discovered them for one of those APIs (GetIRcode - the difficult one) by reverse-engineering their disassembly.&lt;br /&gt;&lt;br /&gt;Disassembly of ThatDll!GetIRCode&lt;pre name="code" class="cpp:nocontrols"&gt;&lt;br /&gt;10001190 83ec0c          sub     esp,0Ch&lt;br /&gt;10001193 8d442400        lea     eax,[esp]&lt;br /&gt;10001197 53              push    ebx&lt;br /&gt;10001198 8d4c2408        lea     ecx,[esp+8]&lt;br /&gt;1000119c 33db            xor     ebx,ebx&lt;br /&gt;1000119e 50              push    eax&lt;br /&gt;1000119f 51              push    ecx&lt;br /&gt;100011a0 c6442410c0      mov     byte ptr [esp+10h],0C0h&lt;br /&gt;100011a5 c644241102      mov     byte ptr [esp+11h],2&lt;br /&gt;100011aa 885c2412        mov     byte ptr [esp+12h],bl&lt;br /&gt;100011ae 885c2413        mov     byte ptr [esp+13h],bl&lt;br /&gt;100011b2 885c2414        mov     byte ptr [esp+14h],bl&lt;br /&gt;100011b6 885c2415        mov     byte ptr [esp+15h],bl&lt;br /&gt;100011ba c644241601      mov     byte ptr [esp+16h],1&lt;br /&gt;100011bf 885c2417        mov     byte ptr [esp+17h],bl&lt;br /&gt;100011c3 c744240c08000000 mov     dword ptr [esp+0Ch],8&lt;br /&gt;100011cb e870ffffff      call    ThatDll!SendVendorCmd (10001140)&lt;br /&gt;100011d0 3bc3            cmp     eax,ebx&lt;br /&gt;100011d2 5b              pop     ebx&lt;br /&gt;100011d3 8b542410        mov     edx,dword ptr [esp+10h]&lt;br /&gt;100011d7 750c            jne     ThatDll!GetIRCode+0x55 (100011e5)&lt;br /&gt;100011d9 8a4c2404        mov     cl,byte ptr [esp+4]&lt;br /&gt;100011dd 880a            mov     byte ptr [edx],cl&lt;br /&gt;100011df 83c40c          add     esp,0Ch&lt;br /&gt;100011e2 c20400          ret     4&lt;br /&gt;100011e5 c602ff          mov     byte ptr [edx],0FFh&lt;br /&gt;100011e8 83c40c          add     esp,0Ch&lt;br /&gt;100011eb c20400          ret     4&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Calling convention:&lt;/span&gt;&lt;br /&gt;An easy technique to identify the calling convention is to look for the 'ret' statement @25,28 (I would also advise to double check with the caller's next instruction disassembly to make sure he doesn't play with the stack pointer). In stdcall calling convention the callee is supposed to free the stack space for arguments. I think here we are debating only over stdcall and cdecl calling conventions. So, if the 'ret' statement has any value given as operand (no. of bytes to free up on stack), then the calling convention should be 'stdcall'. In most cases, DLLs are stdcalls -- and this observation ensures that for this dll.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Return type (and out params):&lt;/span&gt;&lt;br /&gt;In this case, we had already discovered that the technical return type is an int (and was returning 0x0 on keypress and 0xff on no keypress). However, we are still lacking the keycode when a key was pressed. If you look at the epilogue of the function, there are two branchings (clearly two rets @25,28). Please note the "mov byte ptr [edx],0FFh" @26. This looks like an error case, when SendVendorCmd failed (@21). A close look at the diassembly (@18,21) reveals that this code flow occurs when the return value of SendVendorCmd is non-zero (!=ebx); it should also be noted that the return value of GetIRCode is the same as the return value of SendVendorCmd (note that there is no change in eax after the call to SendVendorCmd). If you look at the success path(@22,23), an out parameter of SendVendorCmd (@[esp+4]) is copied on to the address in edx (note the byte ptr mov -- the out param value is so an unsigned char).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Argument list and types:&lt;/span&gt;&lt;br /&gt;We are almost done. The only missing piece is to figure out what is edx pointing to. This is a crucial and challenging part. Please bear with me. The statement 'mov edx, dword ptr[esp+10h]'@20, means that the address of the parameter is on the stack. The return statement denotes a 4 byte cleanup on the stack; so it is likely that the fucntion takes only one parameter and that is a pointer to a byte (unsigned char*). However, it is not clear if the [esp+10h] belongs to the local stack variable in this function or is really a argument pushed by the caller -- use of ebp might have been much clearer, but we don't have a choice here. Looking at the disassembly of SendVendorCmd (ret 8) tells me that it uses 8 bytes on stack for arguments. So after the call to SendVendorCmd, the esp will be less by 8 bytes. Now if you carefully account for all the push and pop instructions in this function before [esp+10h]@20, you would find out that the [esp+10h] is indeed pointing to [esp_0+4h] if esp_0 is the esp at the time of entry of the function. [esp+4h] at the entry point clearly skips the return address and lands on the first argument to the function.&lt;br /&gt;&lt;br /&gt;And hence the function is 'int (__stdcall *ThatDll!GetIRCode)(unsigned char*)'&lt;br /&gt;&lt;br /&gt;I believe I don't have to mention about the InitIR API. But that was pretty simple; the prototype turned out to be 'void (__stdcall *InitIR)(void)' :D.&lt;br /&gt;&lt;br /&gt;Now, how to I use ths info to dynamically hook onto the existing TV tuner application is the only critical missing part. Stay tuned!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-8745231834200454995?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/8745231834200454995/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/07/tvprogramguide-developers-view-2.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/8745231834200454995'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/8745231834200454995'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/07/tvprogramguide-developers-view-2.html' title='TVProgramGuide -- developer&apos;s view - #2'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-5097931143483281974</id><published>2009-07-12T19:32:00.004+05:30</published><updated>2009-07-12T19:49:17.364+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='developer'/><category scheme='http://www.blogger.com/atom/ns#' term='myapps'/><title type='text'>TVProgramGuide -- developer's view</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:85%;"&gt;=== this post is for educational purposes only. please do not apply these concepts to hack into or do illegal stuff ===&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;As promised earlier, here is my post on what's behind my &lt;a href="http://geraldnaveen.blogspot.com/2009/06/tvprogramguide-my-application-for-tv.html"&gt;TVProgramGuide&lt;/a&gt; application.&lt;br /&gt;&lt;br /&gt;For the ones who do not have the background on the topic and for the ones who did not read my &lt;a href="http://geraldnaveen.blogspot.com/2009/06/tvprogramguide-my-application-for-tv.html"&gt;post&lt;/a&gt; on my application -- I had a TV tuner hardware and an application that works with it. I could use my TV tuner remote to control the TV. Now I need to find a way to hook into this design and capture the TV remote key presses, so I can use it in my own applications (important: without affecting the TV app's functionality). I'm keen in mentioning only the critical and difficult portions of this app.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The whole issue can be split into multiple major issues:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1. Finding out the DLL and the APIs that the current app uses to read the remote key presses.&lt;br /&gt;2. Reverse-engineer the APIs and find out their calling convention, return types and parameter lists (and types) -- you would definitely need if you are going to hook into the APIs.&lt;br /&gt;3. Find a means to hook/patch the functionality to allow both the TV app and my app to capture the strokes -- multiple options available. Read on.&lt;br /&gt;4. Decipher the codes to match the real keys on remote -- if 1-3 are complete, this shouldn't be difficult.&lt;br /&gt;&lt;br /&gt;Let me talk about each one of them in detail.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Finding out the DLL and APIs:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The TV application and the tuner hardware are from different vendors. This have me the hope that there might mostly like be a dll which provides the set of APIs to talk between the two. Using dependency-walker I found the list of modules that the TV tuner application was depending on. I filtered a set of non-system DLLs that got installed along with the TV tuner application.  Then listed down the "exports" table from each of those DLLs and looked for any reasonably named API that relates to this. In one of those DLLs (I'm not disclosing the name of the DLL to keep this hack anonymous), there was an API named 'GetIRCode' -- having known that remotes work on Infra-Red (IR), this was suspicious. There were other APIs named 'InitIR', 'GetOneButtonStatus' etc., which seemed more and more closer towards the functionality I was looking at. I was almost sure.&lt;br /&gt;&lt;br /&gt;Here's the export table of that identified DLL :&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_CWrtfw9yct0/Slnthxpr9xI/AAAAAAAAAXg/kQtaxCHBf50/s1600-h/dll_exports.JPG"&gt;&lt;img style="cursor: pointer; width: 364px; height: 111px;" src="http://2.bp.blogspot.com/_CWrtfw9yct0/Slnthxpr9xI/AAAAAAAAAXg/kQtaxCHBf50/s400/dll_exports.JPG" alt="" id="BLOGGER_PHOTO_ID_5357574396253566738" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;To make sure if these are indeed the APIs that I was looking for: I attached the debugger (windbg) to the TV tuner application and added breakpoints to all APIs in that DLL. As the application starts, I got a breakpoint hit in Dll!InitIR. Makes sense. Then, I could see breakpoints continuously being hit on Dll!GetIRCode (yes, continuously). I just realized that there was no callback mechanism, and the application continuously polls for keypresses by calling GetIRCode (ahem!, waste of CPU). But is it really what I think? Just to make sure that this API was doing something useful on a key press, I looked at the return code of GetIRCode after each invocation. It returned 0xff (likely a -1 in signed byte) most times. I set a conditional breakpoint on the return statement of this function to break if the return value is != 0xff (ie., break if register eax != 0xff). I realized from my testing that, whenever I pressed a key on my TV remote, this break point was hit and the return value was 0 -- hmmm, almost there, but where is the key code??? hack isn't that easy :). A good news was that, during the runtime (when I tested with remote key presses), the TV tuner application did not call any other API on this DLL.&lt;br /&gt;&lt;br /&gt;So, at the end of this step, I have discovered the DLL and two APIs that I might need to hook into. And also that GetIRCode returns 0 once after a key was pressed (note: I still do not know how to identify the key, just hoping that this API would help) -- no idea about the calling convention, return types, the parameters I need to pass in to these APIs and their types. Way to go!!&lt;br /&gt;&lt;br /&gt;Step 2 for reverse-engineering those APIs for calling convention, parameter list/types is a long topic, stay tuned!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-5097931143483281974?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/5097931143483281974/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/07/tvprogramguide-developers-view.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/5097931143483281974'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/5097931143483281974'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/07/tvprogramguide-developers-view.html' title='TVProgramGuide -- developer&apos;s view'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_CWrtfw9yct0/Slnthxpr9xI/AAAAAAAAAXg/kQtaxCHBf50/s72-c/dll_exports.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-5289425190214364304</id><published>2009-06-28T17:54:00.008+05:30</published><updated>2009-06-28T21:34:30.929+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='techy'/><category scheme='http://www.blogger.com/atom/ns#' term='developer'/><title type='text'>A data alignment issue -- example</title><content type='html'>&lt;div style="text-align: justify;"&gt;===  the examples assume a 32bit compilation ===&lt;br /&gt;&lt;br /&gt;Understanding what data alignment is and realizing the need for data alignment is a different topic by itself; I'm not going to write about it as there are lots of them around.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Issue: The first member of a struct need not me located at the starting (offset 0) of the struct instance (yes, assuming there are no virtual functions).&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Unfortunately, in most cases, this happens to be true; however the point here is that it needn't be. I've personally seen this behavior recently which led me to write this (albeit on a 64bit compiler).&lt;br /&gt;&lt;br /&gt;Consider the struct definition,&lt;pre name="code" class="cpp:nocontrols"&gt;//&lt;br /&gt;typedef struct _A {&lt;br /&gt;    int b;&lt;br /&gt;} A;&lt;br /&gt;//&lt;/pre&gt;the sizeof(A) will be 4. This is trivial. Now consider this struct,&lt;pre name="code" class="cpp:nocontrols"&gt;//&lt;br /&gt;typedef struct _A2 {&lt;br /&gt;    char a;&lt;br /&gt;    int b;&lt;br /&gt;} A2;&lt;br /&gt;//&lt;/pre&gt;A2 has one char in addition. Some people might expect the sizeof(A2) to be 5 -- but in reality the sizeof(A2) would be 8 due to the data alignment requirement. So where is the extra 3 bytes (called padding) gone? let's examine the offsets of the individual data members to figure out the gap.&lt;br /&gt;&lt;br /&gt;Assuming a2 is an instance of A2,&lt;br /&gt;&lt;br /&gt;offset of A2::a =&gt; (char*) &amp;amp;a2.a - (char*) &amp;a2; // offset of a2.a from the starting of a2 =&gt; 0&lt;br /&gt;offset of A2::b =&gt; (char*) &amp;amp;a2.b - (char*) &amp;a2; // offset of a2.b from the starting of a2 =&gt; 4&lt;br /&gt;&lt;br /&gt;Clearly a2.a starts from the zeroth byte, and a2.b starts at the fourth byte. The layout of the struct is as follows {a2.a|*|*|*|a2.b|a2.b|a2.b|a2.b} where * represents the padding bytes and each | represents a byte boundary.&lt;br /&gt;&lt;br /&gt;It is important to note that, C/C++ standards do not allow the compiler to change the ordering of the struct's members in its memory representation (please let me know if someone feels this is wrong). However, if you think a while, you would realize that without any change to the ordering of the members, the padding can be moved around while still fulfilling the data alignment requirement.&lt;br /&gt;&lt;br /&gt;For eg., the memory layout of A2 could also have been {*|a2.a|*|*|a2.b|a2.b|a2.b|a2.b} where * represents the padding bytes and each | represents a byte boundary. This is perfectly valid and easily invalidates the assumption about the address of first member of the struct -- because the offset of a2.a is now 1 instead of 0.&lt;br /&gt;&lt;br /&gt;ok, but why would someone rely on this assumption??! Pbly not directly; it does not make sense to use a2, where a2.a is to be used. However, in nested structures, this might go unnoticed. Consider this scenario,&lt;pre name="code" class="cpp:nocontrols"&gt;//&lt;br /&gt;typedef struct _A3 {&lt;br /&gt;    char a;&lt;br /&gt;    void *ptr; // assume that by design, ptr points to A4 or A5&lt;br /&gt;} A3;&lt;br /&gt;&lt;br /&gt;typedef struct _A4 {&lt;br /&gt;    char c;&lt;br /&gt;} A4;&lt;br /&gt;&lt;br /&gt;typedef struct _A5 {&lt;br /&gt;    char c;&lt;br /&gt;    int n;&lt;br /&gt;} A5;&lt;br /&gt;&lt;br /&gt;void print_members(A3 *pa3)&lt;br /&gt;{&lt;br /&gt;    // assume by design:in most cases pa3-&gt;ptr points to a A4 instance.&lt;br /&gt;    // and given that both A4 and A5 have the common first member&lt;br /&gt;    // it might be tempting to write a code like following.&lt;br /&gt;    A4* pa4 = (A4*) pa3-&gt;ptr;&lt;br /&gt;    printf("%c ", (char) pa3-&gt;a);&lt;br /&gt;    printf("%c ", (char) pa4-&gt;c); // here the code is trying to print A4::c or A5::c&lt;br /&gt;    if(IS_A5(pa3-&gt;ptr))&lt;br /&gt;        printf("%d ", (int) ((A5*)pa3-&gt;ptr)-&gt;n);&lt;br /&gt;}&lt;br /&gt;//&lt;/pre&gt;The code at line 23 may or may not work as intended, based on the result of data alignment for the struct A5. This is a perfect disguise of this untrue assumption. So, Beware!!&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-5289425190214364304?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/5289425190214364304/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/06/data-alignment-issue-example.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/5289425190214364304'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/5289425190214364304'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/06/data-alignment-issue-example.html' title='A data alignment issue -- example'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-3003180677865756152</id><published>2009-06-23T19:46:00.006+05:30</published><updated>2009-07-12T19:48:10.837+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='video'/><category scheme='http://www.blogger.com/atom/ns#' term='techy'/><category scheme='http://www.blogger.com/atom/ns#' term='myapps'/><title type='text'>TVProgramGuide - my application for tv tuners</title><content type='html'>&lt;div style="text-align: justify;"&gt;This is about an application that I've recently developed, that can show real-time TV programme guide lines on the fly over a TV tuner video.&lt;br /&gt;&lt;br /&gt;It is really interesting to see how subtle things can make a big difference in the way we carry out every day life. This idea struck my mind few weeks back, when I landed at entertainment.oneindia.in accidentally while trying to find out what movies are played for the day. The idea was to integrate this info about TV programmes into the existing TV tuner application, so I can fetch them whenever I need them. When I was first thinking about this idea, I didn't really expect it to be soo useful -- today I just can't watch TV without the aid of this app.&lt;br /&gt;&lt;br /&gt;The idea sounds interesting but it is as vague as a patent. I spent the first week thinking about the feasibilty of this application, and about how to integrate this app into the TV system. I was pretty clear that this app is going to be of no-use if I cannot provide a means to use this application wirelessly (yes, using the TV remote). If I have to come to the comp, and use the mouse to find out 'what's coming up next?', I would rather visit the website in my browser and know about it. It is as simple as having a bookmark in my browser.&lt;br /&gt;&lt;br /&gt;But I wasn't sure if I can hook into the TV remote, and get its signals. Even if I can, I should also ensure that my hooking does not affect the normal functioning of the TV tuner application, that is already using the TV remote and reacting to the signals. As specified in my &lt;a href="http://geraldnaveen.blogspot.com/2009/06/fronttech-tv-tuner.html"&gt;earlier post on my TV tuner&lt;/a&gt;, the tuner's hardware (Trident) and the TV tuner application (Honestech) seem to be from different vendors -- this gave me the hope that there should be an interface available somewhere (although unpublished) using which the existing TV tuner app is receiving the TV remote key presses. I will definitely be writing a separate &lt;a href="http://geraldnaveen.blogspot.com/2009/07/tvprogramguide-developers-view.html"&gt;post&lt;/a&gt; on the technical details of how and what disassembling I had to do; but for now, it is that I've managed to discover the undocumented APIs that are used internally, and the appropriate DLLs and managed to hook into them seamlessly so the TV tuner application has no idea that I'm hooked in.&lt;br /&gt;&lt;br /&gt;This hooking was done in C/C++. The remaining task was to download the TV programmes from their website (note: oneindia does not have the list for all channels. So I had to do a generic design to support any website; with abstract classes and interfaces, this isn't a problem anyway). For any non-system programming I prefer python (if not UI related) and C# if it has an associated UI. I admire the power of the modules/class libraries that these platforms provide; awesome! .Net comes handy with Http classes (System.Net.HttpWebRequest) to handle the HTTP requests/responses for downloading the programmes. And I used RegEx (System.Text.RegularExpressions.RegEx) to parse the HTML output and extract the program schedule. With a number of choices for sharing info (remote key press) between the C/C++ hook and the C# interface, I chose the simplest one: The windows registry. I intend to post a &lt;a href="http://geraldnaveen.blogspot.com/2009/07/tvprogramguide-developers-view.html"&gt;developer post&lt;/a&gt; on this later, but that's the overall technology behind this app.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Important features:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1. Automatically shows the 'now playing' programme on every channel change. The 'now playing' item is picked based on the current channel no. and the current time. This window shows up for 10 seconds and auto-hides. Very useful when we glance through the channels.&lt;br /&gt;2. Channel change is detected by monitoring the remote key presses including numbers, up, down, recall etc., Interesting part was that channels can be changed by a sequence of key presses eg., key 1 followed by key 2 followed by key 3 in a short interval, is not 3 different channel changes, but a single change to channel no. 123. It had to be handled differently.&lt;br /&gt;3. A special mode can be entered by a special key combination (that does nothing to the tuner app) in the TV remote. In this mode, the app overlays the 'coming up next 5' programmes list over the video. This info does not auto-hide. It can be closed by the Mute key on TV remote.&lt;br /&gt;4. Seamless integration, so TV tuner works just well as before.&lt;br /&gt;&lt;br /&gt;Here is the video showing my application in action as I watch TV on my comp:&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/xuUlSXpJDxM&amp;amp;hl=en&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/xuUlSXpJDxM&amp;amp;hl=en&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Overall, I'm very happy with this app; one of my applications that I use the most. I'm hopeful to publish this app soon, after I make some generalizations (currently channel associations are hard-coded and not all channels are supported).&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-3003180677865756152?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/3003180677865756152/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/06/tvprogramguide-my-application-for-tv.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/3003180677865756152'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/3003180677865756152'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/06/tvprogramguide-my-application-for-tv.html' title='TVProgramGuide - my application for tv tuners'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-595340306075041778</id><published>2009-06-10T15:10:00.003+05:30</published><updated>2009-06-11T10:16:49.053+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='review'/><title type='text'>Fronttech TV tuner</title><content type='html'>&lt;div style="text-align: justify;"&gt;After contemplating on this for quite sometime, I finally decided to buy a TV tuner. I don't intend (or I should say don't want) to spend too much time on TV. I was fairly confident that I was not going to buy a TV for sure; and if at all I go for something that would be a TV tuner card for my existing LCD monitor.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;Then, the question was whether to go for a internal TV tuner, USB TV tuner or an external TV tuner. For those who aren't aware, there are 2 types of external TV tuner -- one that drives a CRT and the other that drives a LCD. So be sure to buy the correct one incase you have a LCD monitor. However, I didn't choose this because: I don't want to keep changing the cables to the monitor everytime I need to switch between TV and comp (my monitor does not have dual input); and I might want to parallely work while watching TV (or atleast check my stock prices, email, orkut). These being the problems on external ones, I was firmly confident that the internal/USB ones will have lot more "features" than the external ones like recording, PiP (Picture in Picture), scheduler etc., and given that it was software controlled, I was hopeful to try my hands on it by writing some code for it (I had no idea about what to do with it, but just felt an opportunity).&lt;br /&gt;&lt;br /&gt;After throwing out the external solution, I had to choose between the internal one or the USB one -- both satisfy my criteria of software control. I chose USB as it looks safer to me anytime than a PCI interface -- I'm hopeful that a heavy spike on my cable wire, would cause less damage to my comp over the USB port. It also provides the convinience of moving the TV between my comp and laptop. Also, the internal ones might have difficulty with remote due to line-of-sight issues (not sure, if they even provide a remote for internal ones).&lt;br /&gt;&lt;br /&gt;Anyways, after all this I finally zeroed on Fronttech USB TV Tuner (to be frank, I didn't really spend time on analyzing the brand to buy; Fronttech was easily available in the nearby shops and so I just went for it). I had bought it a month back and believe me, I have no regrets today. I think Fronttech is anyway just selling it as its own brand but it is not. The hardware driver identifies itself as 'Trident Analog Video' to Windows and the TV tuner software is from Honestech. Possibly, Fronttech takes care of marketting, sales, service/support.&lt;br /&gt;&lt;br /&gt;It is so handy, fits in your palm. This is how it looks (Photo from &lt;a href="http://www.frontechonline.com/0613.html"&gt;Fronttech&lt;/a&gt;).&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_CWrtfw9yct0/Si-ACioIpsI/AAAAAAAAAV4/hfEk12SQQes/s1600-h/0613.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 214px;" src="http://4.bp.blogspot.com/_CWrtfw9yct0/Si-ACioIpsI/AAAAAAAAAV4/hfEk12SQQes/s400/0613.jpg" alt="" id="BLOGGER_PHOTO_ID_5345632063855306434" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It comes with the following key features:&lt;br /&gt;1. Real-time recording (at a click of a button on remote)&lt;br /&gt;2. Recording scheduler (I can just schedule a recording and forget about it; watch it later).&lt;br /&gt;3. Time-shifting (as they call it -- more later)&lt;br /&gt;4. Supports NTSC and PAL&lt;br /&gt;&lt;br /&gt;Unfortunately, PiP is not available, and I later learned that it is not available in any TV tuners (at least in the ones available here in India). As it requires support from the hardware level (tuning in, two frequencies at the same time), I cannot do any magic with software to emulate PiP. Ok forget it.&lt;br /&gt;&lt;br /&gt;Recording is awesome, with no lag in the TV playback in real-time. There are options to select the resolution of recording along with the video encoding that is to be used.&lt;br /&gt;&lt;br /&gt;I should definitely mention about the time-shifting. An easier way to describe the time-shifting is 'pause your live TV' slogan that many digital TV ads boast about. Yes, this feature allows you to pause a live TV and continue from there. This is technically feasible (just like anyother digital TV solution) by continuously recording the TV channel in the background. One very good thing about this TV tuner is (IMHO), I can enable time-shifting only when I need it; this prevents the application from continuously thrashing my hard disk when I really don't need to pause/playback (I believe Tata Sky Plus does continuous recording).&lt;br /&gt;&lt;br /&gt;Another "strange" thing I discovered was (at least I didn't know this earlier): The auto-scan option for channel tuning is not as smart as the ones in the real TV. ie., it does not scan the complete set of frequency (at every possible increments) and infer if a clear signal is available at that signal. Apparently, on hooking to their application, I figured out that they have a constant pre-defined set of frequencies to be tuned for a given country (I even remember a function in one of their DLLs, GetFreqencyTableForCountryName). Ok how does it matter to me? It does. They have some 360 channel frequencies pre-defined for Indian Cable TV networks, but not all of them have a clear signal or channel transmitted. The tuner application is not smart enough to discover the absence of the channel and skip bookmarking the channel. So at the end of an auto-scan you will have 360 channels bookmarked, with only around 100 having meaningful video output and scattered all over. Grrr.. There is also no way to tune a single channel. ie., you cannot say, switch to channel 1 and start tuning the band to associate a different channel to channel 1 -- because the channel number by itself defines the frequency to be used, and channel no. 1 will always be pointing to the same frequency. Thankfully, they have the option to name the channels and associate channel shifting to work only on the favored channels instead of just blindly going through all channels. I was a bit uncomfortable here, but after a month, now I'm used to it.&lt;br /&gt;&lt;br /&gt;Important: Do remember to backup your "channel.she" file from their installation folder once you configure your TV tuner and named all those channels etc., It is useful to restore the channel list in case you need to reinstall the application or you lose it (I lost it once -- how, is a different lengthy story!!).&lt;br /&gt;&lt;br /&gt;Except for these few glitches, over all I'm very satisfied with the quality of its work with some stunning features.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-595340306075041778?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/595340306075041778/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/06/fronttech-tv-tuner.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/595340306075041778'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/595340306075041778'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/06/fronttech-tv-tuner.html' title='Fronttech TV tuner'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_CWrtfw9yct0/Si-ACioIpsI/AAAAAAAAAV4/hfEk12SQQes/s72-c/0613.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-6500166313478609723</id><published>2009-06-09T11:21:00.001+05:30</published><updated>2009-06-09T11:23:09.178+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='pravs world'/><title type='text'>Focus On Yourself</title><content type='html'>&lt;p&gt;Courtesy: &lt;a href="http://pravstalk.com/focus-on-yourself/"&gt;Pravs World&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Some of us waste our time waiting for people to live up to our expectations.&lt;br /&gt;We are so concerned about what others are doing that we don’t do anything ourselves.&lt;/p&gt; &lt;p&gt;Its not so important what others are upto; compared to what you are doing.&lt;br /&gt;Focus on what you do, your work; Not on others.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-6500166313478609723?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/6500166313478609723/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/06/focus-on-yourself.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/6500166313478609723'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/6500166313478609723'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/06/focus-on-yourself.html' title='Focus On Yourself'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-3566747671868817305</id><published>2009-06-04T14:05:00.002+05:30</published><updated>2009-06-04T14:10:01.151+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='techy'/><title type='text'>MOTAS - The Mystery Of Time And Space</title><content type='html'>&lt;div style="text-align: justify;"&gt;For those who have played and enjoyed 'Crimson Room' and 'Viridian Room' and still want to quench your thirst for such game, this should be a hurray!!&lt;br /&gt;&lt;br /&gt;As described in their website, &lt;a href="http://www.albartus.com/motas/"&gt;MOTAS&lt;/a&gt; is an online graphic adventure game in which the adventurer has to solve riddles and puzzles, find and use objects, escape from locked rooms, find hidden passages and be a detective and examine everything to unlock the doors of the mystery of time and space.&lt;br /&gt;&lt;br /&gt;With 20 levels, this game has lots of fun and thrill. Unlike 'Crimson Room', this game needs a little bit of technical exposure (in multiple levels, you have to boot a computer and get some data out of it). You also need to understand 'time travel' and apply the same in the game heuristics. With little help from the online community, it should be lots of fun in completing all the levels (I believe few, very few problems in the game are very difficult to solve/guess).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.albartus.com/motas/"&gt;Click here to play&lt;/a&gt; and Enjoy!&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-3566747671868817305?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/3566747671868817305/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/06/motas-mystery-of-time-and-space.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/3566747671868817305'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/3566747671868817305'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/06/motas-mystery-of-time-and-space.html' title='MOTAS - The Mystery Of Time And Space'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-8080078406989205349</id><published>2009-05-30T20:45:00.002+05:30</published><updated>2009-05-30T20:48:46.324+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='pencil arts'/><title type='text'>My pencil arts - #5 - Lady</title><content type='html'>First 2 are photographed, while the last one is scanned one.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_CWrtfw9yct0/SiFOIEy3jcI/AAAAAAAAAVA/HadXl1OOiqE/s1600-h/Outline.jpg"&gt;&lt;img style="cursor: pointer; width: 359px; height: 400px;" src="http://3.bp.blogspot.com/_CWrtfw9yct0/SiFOIEy3jcI/AAAAAAAAAVA/HadXl1OOiqE/s400/Outline.jpg" alt="" id="BLOGGER_PHOTO_ID_5341636533671136706" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_CWrtfw9yct0/SiFOHwj5q2I/AAAAAAAAAU4/LfP0KVMDivA/s1600-h/InProgress.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 400px;" src="http://4.bp.blogspot.com/_CWrtfw9yct0/SiFOHwj5q2I/AAAAAAAAAU4/LfP0KVMDivA/s400/InProgress.jpg" alt="" id="BLOGGER_PHOTO_ID_5341636528239651682" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_CWrtfw9yct0/SiFOHTHtbnI/AAAAAAAAAUw/zQtbHlD4Nwk/s1600-h/Complete.JPG"&gt;&lt;img style="cursor: pointer; width: 399px; height: 400px;" src="http://2.bp.blogspot.com/_CWrtfw9yct0/SiFOHTHtbnI/AAAAAAAAAUw/zQtbHlD4Nwk/s400/Complete.JPG" alt="" id="BLOGGER_PHOTO_ID_5341636520336780914" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-8080078406989205349?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/8080078406989205349/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/05/my-pencil-arts-5-lady.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/8080078406989205349'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/8080078406989205349'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/05/my-pencil-arts-5-lady.html' title='My pencil arts - #5 - Lady'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_CWrtfw9yct0/SiFOIEy3jcI/AAAAAAAAAVA/HadXl1OOiqE/s72-c/Outline.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-5699248863526295497</id><published>2009-05-17T19:33:00.008+05:30</published><updated>2009-05-23T13:33:55.912+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='developer'/><category scheme='http://www.blogger.com/atom/ns#' term='64bit'/><title type='text'>32bit/64bit programming -- an interesting problem #2</title><content type='html'>&lt;div style="text-align: justify;"&gt;...continued&lt;br /&gt;&lt;br /&gt;I was recently looking at the source of an open-source library. The library is supported on all popular platforms in both 32bit and 64bit. When providing a library for 32bit and 64bit platforms a new problem kicks in. ie., to make sure that the applications using this library uses the correct version of the library. ie., a 32bit application should use the 32bit version of the library and a 64bit application should use the 64bit version of the library. Obviously, it is not possible to cross link the binaries of 32bit and 64bit, and so the linker would fail if the application tried to do so. But, the difficult problem here is to restrict the application from using the wrong header files of the library. ie., a 64 bit application can inadvertantly include the 32bit headers of the library and link against the 64bit version of the library -- and it is quite possible that this will succeed even without a warning (although there are cases where this would not work).&lt;br /&gt;&lt;br /&gt;Consider this function:&lt;br /&gt;&lt;pre name="code" class="cpp:nocontrols:nogutter"&gt;//&lt;br /&gt;void __cdecl messup(struct my_struct *);&lt;br /&gt;//&lt;/pre&gt;A 64bit translation unit that calls this function after #including a 32bit header for this function would just link fine with a 64bit library for the same function. The 32bit version of my_struct and 64bit version of my_struct shall possibly be defined differently by the library due to the data-alignment requirement between 32bit and 64bit for performance reasons (padded with extra bytes?). Thus the application assumes a different structure while the library expects a different structure. This might lead to crash. Aah!&lt;br /&gt;&lt;br /&gt;Now that's bad. So what does it finally mean? It does mean that appropriate headers are equally important as the appropriate binaries, but unfortunately lacking the support to enforce from the building tools. To take this problem one step further, given the various data models within 64bit platforms, it is not just the platform that matters, but it is the data model.&lt;br /&gt;&lt;br /&gt;To redefine the problem again in its final form: An application that is being built on a X data model should include the headers and libraries that were built for the X data model.&lt;br /&gt;&lt;br /&gt;There could potentially be many ways to solve this problem. A quick answer would be to have a common header file for all data models but have ifdef'ed code for each data model in the same file. This has few drawbacks (in my opinion): declarations for all data models need to be in the same file (clutter? maintenance?); it might be very difficult (possible?) to determine the data model in the pre-processor phase, so the right set of declarations go in for compilation (afaik, there does not seem to be a pre-processor directive for the data models and depending on the pre-processor directives for the platform might be too many to handle; what about unknown platforms?).&lt;br /&gt;&lt;br /&gt;I was actually impressed by another option that this library I talked about, had used. Actually among the 32bit and 64bit platforms, the predominant data models (LP64, LLP64, ILP32) only differ in the size of long and pointer. This library while generating its own headers (during its build time) puts in the size of the long and pointer, into the header file as it was inferred during the library's compilation. This provides an easier and reliable way of identification of the data model later for which the header was built for.&lt;br /&gt;&lt;br /&gt;The header file generation code would be something as simple as this:&lt;pre name="code" class="cpp:nocontrols:nogutter"&gt;//&lt;br /&gt;fprintf(header_file, "#define MYLIB_SIZEOF_LONG %d", (int) sizeof(long));&lt;br /&gt;fprintf(header_file, "#define MYLIB_SIZEOF_PTR %d", (int) sizeof(void*));&lt;br /&gt;//&lt;/pre&gt;Now that we have a means to carry forward the metadata  of the data model of the library onto the headers, how do we prevent the compilation in an inappropriate data model. The idea used was simple, and should be self-explanatory. The library also added the following code to their header file:&lt;pre name="code" class="cpp:nocontrols:nogutter"&gt;//&lt;br /&gt;static char _somearray_[sizeof(long) == MYLIB_SIZEOF_LONG ? 1 : -1];&lt;br /&gt;static char _somearray2_[sizeof(void*) == MYLIB_SIZEOF_PTR ? 1 : -1];&lt;br /&gt;//&lt;/pre&gt;If it isn't obvious, these lines declare an array of size -1 (which is illegal for compilation) incase if the sizes of long and pointer of the application didn't match with the one in the headers. Cool! that's what we need.&lt;br /&gt;&lt;br /&gt;I feel that there are 2 tradeoffs I see with this approach:&lt;br /&gt;&lt;br /&gt;1. Though the misuse is prevented, the error message isn't friendly. When you use a wrong header file, you get a message saying 'invalid array size' or 'invalid array subscript' or 'an array should have at least one element' etc., One might have to refer to Google to figure out the issue.&lt;br /&gt;&lt;br /&gt;2. Two more names are added to the namespace (and 2 bytes) to the current translation unit. Usage of underscores and uncommon names might almost avoid a possibility of a name collision, but still :) I would think of a single struct having one member for each enforcement rule, so there is only 1 symbol added to the global namespace.&lt;br /&gt;&lt;br /&gt;Any other solution?? &lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-5699248863526295497?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/5699248863526295497/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/05/64bit-programming-interesting-issue-2.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/5699248863526295497'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/5699248863526295497'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/05/64bit-programming-interesting-issue-2.html' title='32bit/64bit programming -- an interesting problem #2'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-4786314602472386019</id><published>2009-05-14T20:43:00.006+05:30</published><updated>2009-05-17T20:00:41.002+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='developer'/><category scheme='http://www.blogger.com/atom/ns#' term='64bit'/><title type='text'>32bit/64bit programming -- an interesting problem</title><content type='html'>&lt;div style="text-align: justify;"&gt;After being bored of my electronics posts myself, just wanted to write something back in computer science.&lt;br /&gt;&lt;br /&gt;Now that 64bit computers have become much common and 64bit programming is becoming a necessity, it has become a need to qualify the word programming with either 32bit or 64bit -- basically because they aren't just totally the same. There have been yesteryear days where we had to qualify 16bit vs 32bit. When I interviewed people in those times, I use to ask them the 'sizeof an integer?' and give them credit if someone asks me back if I was asking about a 16bit compiler or a 32bit compiler (at least if they ask me if it was Turbo C++ or VC++ :)) and a negative mark if the answer was 2 bytes. Slowly the trend changed, 32bit programming started dominating (ie., people had no need/exposure towards 16bit programming at all) and everyone started answering 4 bytes always and I stopped asking that question. Now it's time for the question again :)  (btw, I don't claim that the 2byte to 4byte is the only difference between 16bit and 32bit; this was suppose to be a basic question to start with).&lt;br /&gt;&lt;br /&gt;64bit programming is complicated in its own ways, primarily because of the inconsistencies in the data models. With a number of data models existing for 64bit (thank God at least only 2 are predominant), it makes it even more complicated. While Linux, Solaris, Mac (and more) are all lined up for a common data model (LP64), Microsoft is as usual onto it's own unique data model (LLP64). Although it is only Microsoft, given the dominance of Microsoft in the OS market, that is good enough to be a compatibility requirement. It is my personal opinion that Microsoft has a point here -- LLP64 invites less changes on 32bit code to become 64bit compatible.  And I'm pretty sure this compatibility is going to help MS more than anybody else. Understanding the appropriate data models (and the one that is being used) is important if you are programming on a 64bit platform and it becomes even more important if you want to write code that's compatible with both 32bit and 64bit platforms.&lt;br /&gt;&lt;br /&gt;Recently I came across an interesting problem to be thought of, specially if you are writing a library that should be source-wise compatible on both 32bit and 64bit platforms. The problem, discussion and the solution being pretty long, I would talk about it in my &lt;a href="http://geraldnaveen.blogspot.com/2009/05/64bit-programming-interesting-issue-2.html"&gt;next post&lt;/a&gt;....stay tuned.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-4786314602472386019?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/4786314602472386019/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/05/32bit64bit-programming-interesting.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/4786314602472386019'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/4786314602472386019'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/05/32bit64bit-programming-interesting.html' title='32bit/64bit programming -- an interesting problem'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-4726606731098487315</id><published>2009-05-13T19:53:00.005+05:30</published><updated>2009-05-13T20:00:55.919+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='video'/><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='avr'/><title type='text'>LCD Digital Clock</title><content type='html'>&lt;div style="text-align: justify;"&gt;This clock is pretty similar in terms of effort to my previous &lt;a href="http://geraldnaveen.blogspot.com/2009/05/digital-clock.html"&gt;seven-seg LED based digital clock&lt;/a&gt; -- but the outcome is just not comparable. See for yourself.&lt;br /&gt;&lt;br /&gt;The only difference between this from my previous clock, is that the display logic now drives the standard 16x2 alpha numeric LCD instead of multiplexing around those 4 seven segment LEDs (infact I don't have to do multiplexing now, so it is even simpler with only one timer as opposed to the earlier clock with 2 timers). I'm not going to talk about the driver code for the 16x2 alphanumeric LCD for two reasons. First, it is pretty complicated to be put in here and would not really fit the audience. Second, this info is available all around the web, it is just the matter of coding the protocol between the uC and the LCD chip.&lt;br /&gt;&lt;br /&gt;Here is the LCD clock in action:&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/abkbopBKUfc&amp;amp;hl=en&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/abkbopBKUfc&amp;amp;hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-4726606731098487315?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/4726606731098487315/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/05/lcd-digital-clock.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/4726606731098487315'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/4726606731098487315'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/05/lcd-digital-clock.html' title='LCD Digital Clock'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-7301395602845459810</id><published>2009-05-10T19:23:00.011+05:30</published><updated>2009-05-11T22:06:44.753+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='video'/><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='avr'/><title type='text'>Digital Clock</title><content type='html'>&lt;div style="text-align: justify;"&gt;I have finally managed to build my own digital clock. This is basically 4 seven segment LEDs put together and driven by my micro-controller (an ATMega8).&lt;br /&gt;&lt;br /&gt;I had been working on this for few weeks now. The difficult part about making this clock was multiplexing 4 seven segment LEDs. Soldering 4 LEDs to suit the multiplexing circuit was a nightmare. Having a printed circuit on a PCB would be the right way to go; but without it, it is clumsy to build clumsier to debug. I spent a considerable amount of time to get this soldering done -- as it has to be really firm, accurate all within a limited space. Me, not being an experienced guy, it was tough for me. See it for yourself.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_CWrtfw9yct0/SgbrfWTPvOI/AAAAAAAAATw/NrbLtKLEicc/s1600-h/7SegWiring_front.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 200px;" src="http://1.bp.blogspot.com/_CWrtfw9yct0/SgbrfWTPvOI/AAAAAAAAATw/NrbLtKLEicc/s400/7SegWiring_front.jpg" alt="" id="BLOGGER_PHOTO_ID_5334209732461706466" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_CWrtfw9yct0/SgbrfYL7TcI/AAAAAAAAAT4/H6WxFEZmkSs/s1600-h/7SegWiring_back.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 269px;" src="http://1.bp.blogspot.com/_CWrtfw9yct0/SgbrfYL7TcI/AAAAAAAAAT4/H6WxFEZmkSs/s400/7SegWiring_back.jpg" alt="" id="BLOGGER_PHOTO_ID_5334209732967878082" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Other than this there are only two more hurdles to the problem:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1. Timing a second -- this is the crucial part of the project, although not that difficult. Will explain shortly.&lt;br /&gt;&lt;br /&gt;2. Multiplexing 4 seven segments -- previously I had done only two; Also to make that dot (separator between hour and minute digits) to blink every second.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Timing a second:&lt;/span&gt;&lt;br /&gt;Usually I clock the uC to run at 1MHz, this time I had clocked it to run at 2MHz (though it wasn't necessary, I thought it might be useful to have precise control and more power to drive 4 seven-segs along with running the clock.).&lt;br /&gt;&lt;br /&gt;Anyways, I used a 16-bit counter to measure a second. This counter gets incremented on every cycle. ie., on a 2MHz clock, this counter would get incremented 2 million times a second. This was a bit too much for timing, so I configured the prescaler to bring down the clock for the timer by 1/8th (smallest possible) which is 256KHz (2 ^ 18). Incidentally, it is possible to program the uC to notify you on every overflow of this 16bit counter instead of you checking for an overflow everytime. So the overflow routine would get called for every 2 ^ 16 increments of the counter. With the current clock configuration, the overflow routine should get notified 4 times a second -- this seems good enough to time a second. So for every 4th call on this routine, it increments the seconds counter. The rest is obvious.&lt;br /&gt;&lt;br /&gt;Here is the code for the overflow routine:&lt;pre name="code" class="cpp:nocontrols"&gt;&lt;br /&gt;// g_* are global variables.&lt;br /&gt;ISR(TIMER1_OVF_vect)&lt;br /&gt;{&lt;br /&gt;  static int t = 0; // no. of times overflow has happened.&lt;br /&gt;&lt;br /&gt;  t++;&lt;br /&gt;  g_dot_point = (t/2); // dot point stays on for half a second and off for half.&lt;br /&gt;&lt;br /&gt;  if(4 &gt;= t) {&lt;br /&gt;      t = 0;&lt;br /&gt;   &lt;br /&gt;      g_ss++; // increment the seconds&lt;br /&gt;      if(g_ss &gt; 59)  { &lt;br /&gt;          g_ss = 0; g_mm++;&lt;br /&gt;      }&lt;br /&gt;      if(g_mm &gt; 59) {&lt;br /&gt;          g_mm = 0; g_hh++;&lt;br /&gt;      }&lt;br /&gt;      if(g_hh &gt; 23) g_hh = 0;&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;span style="font-weight: bold;"&gt;Multiplexing the 4 seven-segs:&lt;/span&gt;&lt;br /&gt;If you do not know how multiplexing displays work and if you have not read my &lt;a href="http://geraldnaveen.blogspot.com/2009/03/multiplexing-two-7segment-leds.html"&gt;earlier post&lt;/a&gt;, please consider reading it.&lt;br /&gt;&lt;br /&gt;This is pretty similar to my earlier multiplexing code -- just an extension. Now there are 8 data pins (one extra now for dot point) and 4 control lines one per 7segment. The multiplexing is done on the overflow interrupt of a different timer (as 4Hz of timer1 is too slow to multiplex 4 seven-segs). The following code should be self-explanatory.&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="cpp:nocontrols"&gt;&lt;br /&gt;ISR(TIMER0_OVF_vect)&lt;br /&gt;{&lt;br /&gt;  static int n = 0; // decides which digit to update now.(right to left, 0 -&gt; 3)&lt;br /&gt;  static int tp[4] = {1, 10, 100, 1000};&lt;br /&gt;&lt;br /&gt;  int cur_time = g_hh*100 + g_mm;&lt;br /&gt;&lt;br /&gt;  PORTC = 0;&lt;br /&gt;&lt;br /&gt;  seg7_write_digit_dot( (cur_time / tp[n]) % 10, // manipulate the appropriate digit&lt;br /&gt;                        (g_dot_point &amp;amp;&amp;amp; n == 2)); // 3rd digit -&gt; print dot if req.&lt;br /&gt;&lt;br /&gt;  PORTC = 1 &lt;&lt; n; // select the right digit by sending the correct control line.      &lt;br /&gt;  &lt;br /&gt;  n++; // next digit on next overflow.         &lt;br /&gt;  if(n &gt;= 4) n = 0; &lt;br /&gt;} &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;One missing piece in this project is the means to configure the time. The amount of benefit that gives did not excite me for the amount of work required to do that. It was kind of boring stuff. So I have now configured the clock to always start at 13.25 (that is the time I was testing this today), so I can just choose to start the clock at the right time, and then on it just runs fine. Anyways, I can reprogram the clock to whatever time I want to start with. :) &lt;br /&gt;&lt;br /&gt;Here is the digital clock in action: &lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/aMzp-Yyq3v8&amp;hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/aMzp-Yyq3v8&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-7301395602845459810?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/7301395602845459810/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/05/digital-clock.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/7301395602845459810'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/7301395602845459810'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/05/digital-clock.html' title='Digital Clock'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_CWrtfw9yct0/SgbrfWTPvOI/AAAAAAAAATw/NrbLtKLEicc/s72-c/7SegWiring_front.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-818613892892197621</id><published>2009-05-06T11:29:00.001+05:30</published><updated>2009-05-06T11:31:13.499+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='pravs world'/><title type='text'>Who do you trust?</title><content type='html'>Courtesy: &lt;a href="http://pravstalk.com/who-do-you-trust/"&gt;Pravs World&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In life just don’t trust people, who change their feelings with time…&lt;br /&gt;&lt;br /&gt;Instead trust those people whose feelings remain the same, even when the time changes…&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-818613892892197621?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/818613892892197621/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/05/who-do-you-trust.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/818613892892197621'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/818613892892197621'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/05/who-do-you-trust.html' title='Who do you trust?'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-816611875486394909</id><published>2009-05-02T20:44:00.005+05:30</published><updated>2009-05-02T21:14:36.020+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='techy'/><title type='text'>Firefox textbox cursor issue</title><content type='html'>&lt;div style="text-align: justify;"&gt;I recently ran across this issue with Firefox (3.0.9).&lt;br /&gt;&lt;br /&gt;The problem was with the cursor positioning as I type in any textbox in any website in Firefox. The cursor does not always move as we type, but sometimes moves to the next position (like normally). See how the text gets garbled as I was typing 'download firefox' in a Google search box in Firefox.&lt;br /&gt;&lt;br /&gt;&lt;object width="525" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/M5kICCYLoVg&amp;amp;hl=en&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/M5kICCYLoVg&amp;amp;hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="525" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;This started happening all of a sudden and I had no idea what was the problem. I was initially casual, thinking it was a bug in Firefox and restarted Firefox (with Save and Quit option). When firefox restarted and restored all the tabs, the problem was not gone. I got a bit worried then. I was worried if this was a side-effect of a phishing attack. I checked with other browsers and things were fine; I was at least happy that my computer was not compromised; if at all it was, it was only Firefox. I enabled network watch in Firebug, and tried watching for all outgoing URLs specially from pages where I enter passwords (of course, by giving wrong passwords) but no sign of any malfunction. I also have greasemonkey enabled, so I was worried if any greasemoney script got installed without my knowledge; but no, there were no other scripts other than the ones I have for my own use. Now it was starting to get beyond me; and that's when I remembered I did not "really" shutdown firefox, but only hibernated (save and quit). My only hope was that, there could be some webpage which triggered a bug (possibly in adobe flash player or jvm?) which gets reproduced every time I restore the same set of tabs, thus leaving the restart having no effect on the issue. So I did a clean shutdown of firefox (quit without save) and started fresh; Voila! it's gone now. It never happened again; as of this moment I assume it is just a bug and my data was not compromised! :)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-816611875486394909?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/816611875486394909/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/05/firefox-textbox-cursor-issue.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/816611875486394909'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/816611875486394909'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/05/firefox-textbox-cursor-issue.html' title='Firefox textbox cursor issue'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-8866278108543913665</id><published>2009-04-27T12:36:00.003+05:30</published><updated>2009-04-27T12:42:52.244+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='video'/><category scheme='http://www.blogger.com/atom/ns#' term='winmo'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><title type='text'>Remote surveillance on your mobile phone</title><content type='html'>&lt;div style="text-align: justify;"&gt;I assume that you have read my previous post on '&lt;a href="http://geraldnaveen.blogspot.com/2009/04/streaming-webcam-using-vlc.html"&gt;streaming webcam using VLC&lt;/a&gt;' that describes how to use VLC to stream your webcam's video over the network.&lt;br /&gt;&lt;br /&gt;This opens up a new and simple means for surveillance. The idea becomes more interesting and useful based on the network that we choose and where the video is viewed from. To me, if I were to view the video from some other comp, the usability decreases a lot -- unless you are streaming video from home and want to have an eye from your office comp over the Internet; yes, but there are cheaper and better ways to do the same.&lt;br /&gt;&lt;br /&gt;I was keen in trying to perform surveillance on a mobile phone and was pretty much fascinated when I could do it. It is really awesome to watch a place in real-time from a remote place and that too wirelessly on a mobile. Now that we know how to stream the video over a network, the only missing link is to figure out a way to establish a network between your mobile phone and your comp.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;There are multiple ways to do it:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1. Bluetooth PAN (Personal Area Network): This is the simplest, cheapest and comes at no running cost. Modern bluetooth devices provide upto 100m range, but remember you might have to check with your phone's capability also. I would NOT prefer this as this might tend to disconnect and there is no easy way to reconnect remotely. But it works. I sometimes use it to have an eye on my office cube (for no reason :) ) when I'm just around it.&lt;br /&gt;&lt;br /&gt;2. Internet: This is cheaper to establish but has a running cost (specially the data charges on the mobile side are usually hefty). Given that we are aiming at transferring video (atleast QVGA), the bandwidth usage will cost a lot of money; the speed of the network might also be an issue (although a high speed EDGE service on the mobile side might be enough). However, this gives the maximum possible range of surveillance. Literally, from anywhere in the world.&lt;br /&gt;&lt;br /&gt;3. Wi-fi: This option is similar to option 1, but much more reliable than a bluetooth PAN. Automatic recovery from signal failures is a plus. I prefer this the most, because my office is fully equipped with Wi-fi. In fact, our other offices (including the ones overseas) are all interconnected, so I can really watch my cube (where I broadcast) from my mobile wirelessly from any of my offices. It's really cool (at least for the first few times). Wi-fi drains battery much faster than bluetooth (as of this writing) though -- so may not be suitable for continuous surveillance.&lt;br /&gt;&lt;br /&gt;4. Combination: A combination of these options shall also be applied. E.g., I can choose Internet (broadband) on the broadcasting side, and use Wi-fi (maybe in office?) on the mobile side.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;How to view on the mobile:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I'm only going to talk about Windows Mobile here (although I believe the same software is available for Symbian phones too). All you need is a video player for streaming video. Based on the platform you have, you can find one. Note that you need to get a player that supports the protocol and codec you used while streaming.&lt;br /&gt;&lt;br /&gt;For Windows Mobile, users can choose to use the free &lt;a href="http://en.wikipedia.org/wiki/The_Core_Pocket_Media_Player"&gt;TCPMP&lt;/a&gt; (The Core Pocket Media Player) or the professional edition of the same called as the &lt;a href="http://www.coreplayer.com/"&gt;CorePlayer&lt;/a&gt;. I personally believe that the CorePlayer is the best for playing streaming video.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-8866278108543913665?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/8866278108543913665/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/04/remote-surveillance-on-your-mobile.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/8866278108543913665'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/8866278108543913665'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/04/remote-surveillance-on-your-mobile.html' title='Remote surveillance on your mobile phone'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-255804637175229973</id><published>2009-04-26T11:25:00.006+05:30</published><updated>2009-04-27T14:19:10.630+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='video'/><category scheme='http://www.blogger.com/atom/ns#' term='techy'/><title type='text'>Streaming webcam using VLC</title><content type='html'>&lt;div style="text-align: justify;"&gt;VLC is definitely more than just a video player. It has lot of interesting features and extensions which are not explored by all. By enabling one of its various input interfaces, it is even possible to program against your VLC player -- I had written a clip-list application quite sometime back that automatically directs vlc player to play only portions of a given video (maybe a post later).&lt;br /&gt;&lt;br /&gt;I'm not really interested in streaming my webcam but this was actually useful for me for a &lt;a href="http://geraldnaveen.blogspot.com/2009/04/remote-surveillance-on-your-mobile.html"&gt;different reason&lt;/a&gt;. I actually started writing a post on that, and felt that this topic is worth a post by itself -- some people might just want to stream webcam.&lt;br /&gt;&lt;br /&gt;It's pretty simple.&lt;br /&gt;&lt;/div&gt;&lt;ol style="text-align: justify;"&gt;&lt;li&gt;Start VLC (all my instructions/snapshots will be as of vlc 0.9.6). &lt;/li&gt;&lt;li&gt;Before proceeding further, let us open the VLC's console, so we know if there is any error during the process. To open the console, Menu: Tools -&gt; Add Interface -&gt; Console. VLC will throw log messages into this console.&lt;/li&gt;&lt;li&gt;Menu: Media-&gt;Stream (or ctrl -S)&lt;/li&gt;&lt;li&gt;Choose the 'Capture Device' tab (btw, you can stream a video/audio file/DVD using the appropriate tabs)&lt;/li&gt;&lt;li&gt;Under the 'Video device name' drop down choose your camera (you can even stream your desktop by choosing it in 'Capture Mode').&lt;/li&gt;&lt;li&gt;Click on Stream. A new window pops up. This is where you provide the streaming options.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_CWrtfw9yct0/SfQITyFgjmI/AAAAAAAAATg/XFUYCZBtK-o/s1600-h/vlc1.JPG"&gt;&lt;img style="cursor: pointer; width: 400px; height: 397px;" src="http://2.bp.blogspot.com/_CWrtfw9yct0/SfQITyFgjmI/AAAAAAAAATg/XFUYCZBtK-o/s400/vlc1.JPG" alt="" id="BLOGGER_PHOTO_ID_5328893395041554018" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;A simple method is to stream over HTTP -- this specially helps to get across firewalls/networks without glitch. Provide the IP address of the interface in which you want to stream your video. Eg., if you have a multi-homed computer, you might want to bind it only to your private network and not your internet IP. Choose an appropriate port of your choice. Even 80 would do.&lt;/li&gt;&lt;li&gt;Under Profile, choose Windows (wmv/asf) -- If you understand, you can opt to choose the right profile as you see fit.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_CWrtfw9yct0/SfQITiFsQAI/AAAAAAAAATY/hLAFSMV1Rjc/s1600-h/vlc2.JPG"&gt;&lt;img style="cursor: pointer; width: 365px; height: 400px;" src="http://1.bp.blogspot.com/_CWrtfw9yct0/SfQITiFsQAI/AAAAAAAAATY/hLAFSMV1Rjc/s400/vlc2.JPG" alt="" id="BLOGGER_PHOTO_ID_5328893390747353090" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Now click on stream and your video should start streaming. If everything was fine, you should see a 'creating httpd' message in the console without any other relevant error messages following it (sometimes you might not have an appropriate encoder or the port binding might fail etc.,). Also the VLC player UI's status pane should show 'Streaming'.&lt;/li&gt;&lt;/ol&gt;&lt;div style="text-align: justify;"&gt;That's it. Now to view the streaming video on any other machine in the network,&lt;br /&gt;&lt;/div&gt;&lt;ol style="text-align: justify;"&gt;&lt;li&gt;open VLC on any other machine&lt;/li&gt;&lt;li&gt;Menu: open Network (or control - N)&lt;/li&gt;&lt;li&gt;Select HTTP in protocol and the IP address of the machine where you are streaming. The port number stays disabled for me (Workaround: change the protocol to RTP, change the port and change the protocol back to HTTP :) )&lt;/li&gt;&lt;li&gt;Click on Play.&lt;/li&gt;&lt;/ol&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_CWrtfw9yct0/SfQKjaxaWrI/AAAAAAAAATo/x3nAT-2C7hg/s1600-h/vlc3.JPG"&gt;&lt;img style="cursor: pointer; width: 400px; height: 397px;" src="http://2.bp.blogspot.com/_CWrtfw9yct0/SfQKjaxaWrI/AAAAAAAAATo/x3nAT-2C7hg/s400/vlc3.JPG" alt="" id="BLOGGER_PHOTO_ID_5328895862684408498" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-255804637175229973?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/255804637175229973/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/04/streaming-webcam-using-vlc.html#comment-form' title='14 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/255804637175229973'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/255804637175229973'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/04/streaming-webcam-using-vlc.html' title='Streaming webcam using VLC'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_CWrtfw9yct0/SfQITyFgjmI/AAAAAAAAATg/XFUYCZBtK-o/s72-c/vlc1.JPG' height='72' width='72'/><thr:total>14</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-1547395693406511586</id><published>2009-04-18T12:36:00.007+05:30</published><updated>2009-04-18T13:59:35.923+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='scribbles'/><title type='text'>I wish I were a doctor</title><content type='html'>&lt;div style="text-align: justify;"&gt;I'm an engineer by education and profession; all along I've been happy and so satisfied about it; but not any more.&lt;br /&gt;&lt;br /&gt;Engineering explains most of the things that happen around you every day. As I remember&lt;br /&gt;&lt;ul&gt;&lt;li&gt;'newton's 3rd law' while walking; &lt;/li&gt;&lt;li&gt;'doppler's frequency shift' from the horn of a speeding car/bike; &lt;/li&gt;&lt;li&gt;'raleigh's scattering' looking at the orange sky; &lt;/li&gt;&lt;li&gt;'frequency spectrum' while on a traffic signal pondering about why red is stop and green is go; &lt;/li&gt;&lt;li&gt;'acetic acid' when the bearer serves me vinegar for the fried rice;&lt;/li&gt;&lt;li&gt;'potential difference' when a crow casually sits on a metallic electric wire;&lt;/li&gt;&lt;/ul&gt;(and more ...)&lt;br /&gt;&lt;br /&gt;....I've always enjoyed my education (as if I were Neo looking at The Matrix :P). No doubt that I still enjoy my education, but there is rather something else that is much more important to understand than all these --- yes, that's our human body.&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-style: italic;"&gt;=== what follows is my own understanding of a disease; do not rely on  the information here if you are looking for some critical information on this disease. &lt;/span&gt;&lt;/span&gt;===&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I was totally devastated when I got to know about this disease (not sure if I can call it a disease) called 'Guillain-Barré Syndrome'; commonly referred as GB syndrome. It is mentioned that  this disease is very uncommon and the chances of this disease is just 1 or 2 in 1,00,000. What took me to surprise was the complication of the disease; I never had imagined such a problem was possible. In simple terms, GB-syn is a situation wherein our body's immune system starts destroying our own nerve cells! OMG!!! Apparently there seems to be a generic term for this kind of complication -- &lt;a href="http://en.wikipedia.org/wiki/Autoimmune"&gt;autoimmunity&lt;/a&gt;. As time proceeds, the disease gets worse, wherein there are too many antibodies generated to act against our own self. A friend of mine is affected by this disease and hence I know about this; the disease progresses at very fast pace -- to given an example, my friend suspected some abnormality on 1st day and went to the doctor; on 2nd day he felt so weak but managed to go the doctor with his friend; on 3rd day he was paralyzed literally and could not move :( The disease is so complicated and the attack is so acute that lack of an immediate medical intervention might even result to death.&lt;br /&gt;&lt;br /&gt;In spite of understanding so many things around us, there are things within us which we don't understand and those can put us to stop. To me, if I don't have any idea of how my body works, I don't have to be proud of knowing how a computer works!! after all nothing is more crucial than our lives. Now that it is too late for me to realize or react, I can only wish I were a doctor, to have understood at least a portion of my body!!&lt;br /&gt;&lt;br /&gt;One thing is clear that happiness/sadness is subjective and relative. Someone who has GB-syndrome would really not worry about this economic slowdown or losing job or about a huge homeloan on a declining real-estate; there are always worse things in this world; so be happy for what you have and enjoy your days!!&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-1547395693406511586?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/1547395693406511586/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/04/i-wish-i-were-doctor.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/1547395693406511586'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/1547395693406511586'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/04/i-wish-i-were-doctor.html' title='I wish I were a doctor'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-6846552632466703632</id><published>2009-04-09T09:17:00.005+05:30</published><updated>2009-04-09T09:40:54.249+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='video'/><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><title type='text'>Building a serial port logic convertor</title><content type='html'>As mentioned in my &lt;a href="http://geraldnaveen.blogspot.com/2009/04/computer-and-micro-controller.html"&gt;previous post&lt;/a&gt;, it is not possible to directly connect the serial port pins to the uC's pins due to the difference in logic levels. Let me talk about what is the difference and how we can build a serial port logic convertor (note: i'm just posting the summary of all the information I collected, so it is all available in one place for someone else).&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Serial port (RS232) logic levels:&lt;/span&gt;&lt;br /&gt;In a serial port, a logic level of 1 is denoted by any voltage between -3V to -25V and a logic level of 0 is denoted by any voltage between +3V to +25V. While, for a uC, logic level of 0 is 0V to +0.8V and logic level of 1 is 2.2V to +5V.&lt;br /&gt;&lt;br /&gt;Now, there are two problems to be solved:&lt;ol&gt;&lt;li&gt;The serial port's have a wide operating voltage -- the worst case being 50V&lt;/li&gt;&lt;li&gt;The logic levels are totally different and incompatible with uCs (TTL).&lt;/li&gt;&lt;/ol&gt;I came across a naive seral port logic convertor which just makes use of a voltage regulator (LM7805) to bring down the voltage to required levels -- but I believe the fundamental assumption there is that, the serial ports work on a voltage above 5V, but this isn't necessarily true according to the standards. That said, it seems that most serial ports work off an unwritten standard with a operating voltage of -12V for logic 1 and +12V for logic 0. But devising a circuit on this assumption is probably going to hit us sooner or later.&lt;br /&gt;&lt;br /&gt;A common elegant solution is to make use of a MAX232 IC that does the job for us. I got a MAX232 in PDIP 16 pins (8 + 8). The IC can drive 2 serial port I/O and make them available at TTL. The connections are fairly simple. The following is the schematic that I took from their &lt;a href="http://www.datasheetcatalog.org/datasheet/texasinstruments/max232.pdf"&gt;datasheet&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_CWrtfw9yct0/Sd1yX0azHQI/AAAAAAAAAS4/V58LHdKdShI/s1600-h/max232_circuit.JPG"&gt;&lt;img style="cursor: pointer; width: 400px; height: 257px;" src="http://2.bp.blogspot.com/_CWrtfw9yct0/Sd1yX0azHQI/AAAAAAAAAS4/V58LHdKdShI/s400/max232_circuit.JPG" alt="" id="BLOGGER_PHOTO_ID_5322536088155397378" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;PIN configurations for a stand&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;ard serial port:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;PIN2 -- output pin of serial port (should go into the input pin of MAX232 -- output should be read), &lt;/li&gt;&lt;li&gt;PIN3 -- input pin of serial port (should go into the output pin of MAX232 -- input should be sent),&lt;/li&gt;&lt;li&gt;PIN5 -- ground&lt;/li&gt;&lt;/ul&gt;I managed to build my own serial port convertor on a general purpose PCB. This is how it looks after it was soldered.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_CWrtfw9yct0/Sd1ytw7H88I/AAAAAAAAATA/ho5LugTDC2I/s1600-h/SerialToTTLConvertor_Top.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 340px;" src="http://2.bp.blogspot.com/_CWrtfw9yct0/Sd1ytw7H88I/AAAAAAAAATA/ho5LugTDC2I/s400/SerialToTTLConvertor_Top.jpg" alt="" id="BLOGGER_PHOTO_ID_5322536465174361026" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Under the board (the nasty soldering):&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_CWrtfw9yct0/Sd1yuDuMaII/AAAAAAAAATI/PryJ6o-d2Bw/s1600-h/SerialToTTLConvertor_solder.jpg"&gt;&lt;img style="cursor: pointer; width: 283px; height: 400px;" src="http://4.bp.blogspot.com/_CWrtfw9yct0/Sd1yuDuMaII/AAAAAAAAATI/PryJ6o-d2Bw/s400/SerialToTTLConvertor_solder.jpg" alt="" id="BLOGGER_PHOTO_ID_5322536470220400770" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Before I integrate this convertor with my uC and fiddle around, I should make sure this works. Otherwise, it might become very difficult to isolate the problem if I made a software error later. The approach is pretty simple, just short-circuit the output and input PINs on the uC side in the convertor, thus creating a loopback serial convertor. Basically, this circuit will just send back whatever comes in -- in software terms, an echo server.&lt;br /&gt;&lt;br /&gt;The circuit can be tested by connecting the circuit to the computer's serial port and then using HyperTerminal in windows to connect the COM port in which it is connected. It is important to choose 'Hardware control' as None. Now if everything goes well, just start typing on the hyperterminal and you should see what you are typing. That proves that the serial port logic convertor works fine (by looping back).&lt;br /&gt;&lt;br /&gt;Here is the working circuit in action:&lt;br /&gt;&lt;object width="500" height="404"&gt;&lt;param name="movie" value="http://www.youtube.com/v/5SeHVexaZaU&amp;amp;hl=en&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/5SeHVexaZaU&amp;amp;hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="500" height="404"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-6846552632466703632?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/6846552632466703632/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/04/building-serial-port-logic-convertor.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/6846552632466703632'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/6846552632466703632'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/04/building-serial-port-logic-convertor.html' title='Building a serial port logic convertor'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_CWrtfw9yct0/Sd1yX0azHQI/AAAAAAAAAS4/V58LHdKdShI/s72-c/max232_circuit.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-6549951494166642332</id><published>2009-04-05T12:52:00.006+05:30</published><updated>2009-04-05T13:01:50.729+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><title type='text'>Computer and micro-controller communication</title><content type='html'>&lt;div style="text-align: justify;"&gt;After my digital thermometer, I thought it is worthwhile to integrate my micro controller (uC) projects to my computer. There are tonnes of advantages that I see by doing this. While working uCs, specially as being a computer programmer, I found it difficult to achieve a number of stuff. Most basic things like input / output aren't readily available (note that I'm not blaming the uCs here; after all we are not writing software here, but building hardware) -- this makes it very difficult to debug or build prototypes. These days I use LEDs (and different blink rates) to debug various scenarios. But imagine how I would have debugged my first LED blink project :)  -- there was simply no way. Not just debugging, allowing uC to talk to the computer (when required) opens up a whole new world of communication. There are so many features that become readily available, like&lt;br /&gt;&lt;ul&gt;&lt;li&gt;keyboard - I can configure my uC parameters at runtime from my keyboard? &lt;/li&gt;&lt;li&gt;monitor - I can send some debug output or runtime logs to my comp and record it?, you know much work I did to show just 2 digits in hardware.&lt;/li&gt;&lt;li&gt;processing power - not sure how useful it is but if I need I can make use of the huge processing power a comp has.&lt;/li&gt;&lt;li&gt;internet - this is very interesting. maybe my uC doesn't need internet but how about controlling my uC from the internet ?? maybe, controlling my room's lights from office ? office -&gt; internet -&gt; webserver on my home comp -&gt; uC -&gt; light; I think this opens up a lot of new opportunities.&lt;/li&gt;&lt;/ul&gt;Let's see how it evolves :) I have no idea about how I'm going to utilize, but I'm convinced that given my programming knowledge on computers, it is quite a useful thing to have. Technologies becomes more and more powerful only when they interact.&lt;br /&gt;&lt;br /&gt;Now that we are convinced that a computer interface is useful, it is time think about the choices. The possible options are serial port, parallel port, USB, bluetooth, infra-red. Bluetooth and infra-red need hardware counterpart on both sides (on the computer and uC hardware), so that isn't practical for me now. USB seems a option, but that also requires a USB protocol handler on the uC side (there are some free open source USB drivers available for AVR uC's but they would occupy considerable code space -- and with just 8KB available for programming, I would rethink). Serial and parallel ports are the simplest options. Over these two I prefer serial port for two reasons.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Serial port requires fewer number of lines for transmission/reception (technically only 2 lines for data(tx/rx), but additional lines for vcc,gnd etc., add up to 4-5 lines, still much better than parallel port).&lt;/li&gt;&lt;li&gt;ATMega8 has builtin support for handling USART - the standard serial transmission protocol. This makes it handy for us to talk over serial port between the computer and the uC.&lt;/li&gt;&lt;/ol&gt;So I chose serial port as the preferred communication interface. This does not mean that I can just connect a few wires from serial port of the computer to my uC -- because the logic levels are different between the serial port and the uC. I need a convertor for these logic levels before I can communicate. How? stay tuned.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-6549951494166642332?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/6549951494166642332/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/04/computer-and-micro-controller.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/6549951494166642332'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/6549951494166642332'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/04/computer-and-micro-controller.html' title='Computer and micro-controller communication'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-7571469055245303088</id><published>2009-03-30T19:54:00.007+05:30</published><updated>2009-03-30T20:09:22.195+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='avr'/><title type='text'>Digital Thermometer</title><content type='html'>This is where I was heading to. With the &lt;a href="http://geraldnaveen.blogspot.com/2009/03/multiplexing-two-7segment-leds.html"&gt;last module&lt;/a&gt;, I was ready with 2 digit 7segment LED which could be used to show the current ambient temperature.&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;The only remaining part is to integrate the temperature sensor into the system, read, decode, and display the reading. I used the LM35 temperature sensor which is quite simple and handy to use (at the size of a transistor). LM35 is a centigrade temperature sensor and has 3 terminals -- VCC, Vout and GND. Connect VCC and GND with a 5V across, and you can calculate the current ambient temperature based on the potential available at Vout. Based on the datasheet of LM35, Vout is set to (0mV + 10 mV/degree). So a 100mV at Vout means a 10 degree centigrade temperature sensed.&lt;br /&gt;&lt;br /&gt;Now, the remaining task is to make the micro controller (I use ATMega8) read this reading. uC deals only with digital data. This being an analog data, it has to ideally be fed through a Analog-to-Digital-Convertor (ADC). Incidentially, ATMega8 has an inbuilt ADC (with 6 channels in PDIP package). For the ADC to decode the analog data properly, the ARef (Pin 21 in PDIP) terminal has to be set to a reference voltage. To give an example, if the reference voltage is 5V, one unit in a 10bit ADC is defined as (5/1024) volt ie., ~5mV. So for every 5mV from the analog input (in our case, LM35), the reading from ADC goes up by 1 unit.&lt;br /&gt;&lt;br /&gt;In my case, the ARef is set to 4.85V. Hence one ADC unit is (4.85/1024) volt ie., 4.736 mV. As discussed earlier LM35 outputs 10mV per degree Centigrade; so my temperature reading is (adc_reading * 4.736 / 10) or (adc_reading * 0.4736) deg. Centigrade.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Hardware:&lt;/span&gt;&lt;br /&gt;The hardware part is just connecting the LM35 to my previous module. The output of LM35 is connected to ADC channel-2 (PIN 25 in PDIP) -- as channel 0,1 are shared with PORTC's 0-1 bits which I have been using as control bits for selecting the 7segment digit in TDM mode.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Software:&lt;/span&gt;&lt;br /&gt;After enabling ADC channel-2, the ADC's current value is read and the temperature is calculated using the above derived formula. The value is stored in a global volatile variable which is displayed in the 7segs as in my previous module. The temperature is read every 2 seconds (just arbitrary).&lt;br /&gt;&lt;br /&gt;Here is the code:&lt;pre name="code" class="cpp:nocontrols"&gt;&lt;br /&gt;// Author : Gerald Naveen A (ageraldnaveen at gmail dot com)&lt;br /&gt;&lt;br /&gt;#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;#include &amp;lt;avr/interrupt.h&amp;gt;&lt;br /&gt;&lt;br /&gt;#define F_CPU 1000000&lt;br /&gt;&lt;br /&gt;#include &amp;lt;util/delay.h&amp;gt;&lt;br /&gt;&lt;br /&gt;static volatile uint16_t g_temp_c = 99;&lt;br /&gt;&lt;br /&gt;// insert TDM based seven segment code here... interrupt handling etc.,&lt;br /&gt;// didn't want to bloat the codespace while publishing.&lt;br /&gt;&lt;br /&gt;void initialize_adc()&lt;br /&gt;{&lt;br /&gt; ADMUX = (1 &amp;lt;&amp;lt; REFS0);&lt;br /&gt; ADCSRA = (1 &amp;lt;&amp;lt; ADEN) | 7; // enable &amp;&amp; prescaler /128&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;uint16_t read_adc_channel(unsigned int ch)&lt;br /&gt;{&lt;br /&gt; uint16_t result;&lt;br /&gt;&lt;br /&gt; ADMUX |= (ch &amp; 0x07); // enable ADC channel 7&lt;br /&gt; &lt;br /&gt; ADCSRA |= (1 &amp;lt;&amp;lt; ADSC); // start conversion&lt;br /&gt;&lt;br /&gt; while(!(ADCSRA &amp; (1 &amp;lt;&amp;lt; ADIF))); // wait for conversion to complete&lt;br /&gt;&lt;br /&gt; result = ADC; // read the result&lt;br /&gt;&lt;br /&gt; ADCSRA |= (1 &amp;lt;&amp;lt; ADIF); // signal done to ADC&lt;br /&gt;&lt;br /&gt; return result;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;int main()&lt;br /&gt;{&lt;br /&gt; sei();&lt;br /&gt;&lt;br /&gt; initialize_adc();&lt;br /&gt; // initialize timer etc., as my previous module&lt;br /&gt;&lt;br /&gt; while(1) {&lt;br /&gt;  // reading from channel 2&lt;br /&gt;  uint16_t val = (uint16_t) read_adc_channel(2) * 0.4736;&lt;br /&gt;  if(val &amp;lt; 100) // just to avoid noise, have a upper limit (100 too big?)&lt;br /&gt;   g_temp_c = val; // send it for display&lt;br /&gt;    &lt;br /&gt;  _delay_ms(2000);&lt;br /&gt; }&lt;br /&gt; return 0;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;Here is a snapshot of my setup showing the temperature inside my refrigerator :) I could not shoot a meaningful video, as the project shows an almost constant number. The temperature was actually showing 8 degrees when I opened the fridge after putting my project inside for around 5 minutes; when I opened the door and while I was trying to place the breadboard upright for the digits to be visible and clicked, the temperature had shot up by a few degrees due to the door being open :D&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_CWrtfw9yct0/SdDWXdqZIpI/AAAAAAAAASY/UpNgM0iRVOg/s1600-h/DigitalThermometer.JPG"&gt;&lt;img style="cursor: pointer; width: 600px; height: 450px;" src="http://1.bp.blogspot.com/_CWrtfw9yct0/SdDWXdqZIpI/AAAAAAAAASY/UpNgM0iRVOg/s400/DigitalThermometer.JPG" alt="" id="BLOGGER_PHOTO_ID_5318986858512327314" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-7571469055245303088?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/7571469055245303088/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/03/digital-thermometer.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/7571469055245303088'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/7571469055245303088'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/03/digital-thermometer.html' title='Digital Thermometer'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_CWrtfw9yct0/SdDWXdqZIpI/AAAAAAAAASY/UpNgM0iRVOg/s72-c/DigitalThermometer.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-5519451679226828433</id><published>2009-03-30T12:56:00.001+05:30</published><updated>2009-03-30T12:59:17.543+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='pravs world'/><title type='text'>We Must Be Silent</title><content type='html'>&lt;strong&gt;&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;&lt;/strong&gt;Courtesy: &lt;a href="http://pravstalk.com/we-must-be-silent/"&gt;Pravs World&lt;br /&gt;&lt;br /&gt;&lt;/a&gt;Before we can lead, we must serve.&lt;br /&gt;&lt;br /&gt;Before we can serve, we must prepare.&lt;br /&gt;&lt;br /&gt;Before we can prepare, we must learn.&lt;br /&gt;&lt;br /&gt;Before we can learn, we must listen.&lt;br /&gt;&lt;br /&gt;Before we can listen, we must be silent.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-5519451679226828433?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/5519451679226828433/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/03/we-must-be-silent.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/5519451679226828433'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/5519451679226828433'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/03/we-must-be-silent.html' title='We Must Be Silent'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-3414065762250819443</id><published>2009-03-29T18:16:00.001+05:30</published><updated>2009-03-29T18:18:03.023+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='pravs world'/><title type='text'>So Live Today!</title><content type='html'>Courtesy: &lt;a href="http://pravstalk.com/so-live-today/"&gt;Pravs World&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;There are two eternities&lt;br /&gt;that can really break you down.&lt;br /&gt;&lt;br /&gt;Yesterday and Tomorrow.&lt;br /&gt;One is gone and the other doesn’t exist.&lt;br /&gt;So Live Today!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-3414065762250819443?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/3414065762250819443/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/03/so-live-today.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/3414065762250819443'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/3414065762250819443'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/03/so-live-today.html' title='So Live Today!'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-3882154780470479004</id><published>2009-03-27T18:56:00.005+05:30</published><updated>2009-03-27T19:22:45.959+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='video'/><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='avr'/><title type='text'>Multiplexing two 7segment LEDs</title><content type='html'>&lt;div style="text-align: justify;"&gt;This is a follow up on my previous post on &lt;a href="http://geraldnaveen.blogspot.com/2009/03/7segment-led-display.html"&gt;7segment LED display&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;When it comes to displaying 2 digits, there are at least 2 choices. The simplest choice is: In addition to the existing 7bits for the first digit, add 7 more data bits and let them drive the second digit. The obvious drawback with this approach is the need for large number of data lines. With increase in the number of digits, you need 7bits for each additional digit. At some point the idea does not scale and goes impractical.&lt;br /&gt;&lt;br /&gt;The second choice is to use Time Division Multiplexing (TDM). In this approach the same data bus (7bit always) is used to show the digits across all the 7segment LEDs. A separate control signal is added (1 bit per digit -- simple appraoch; ideally 'log (base 2) n' control lines are enough for n digits). The control signal is used as 'chip-select' to select the appropriate digit and the data at the data bus at that moment is used to light up that segment appropriately. An important caveat in TDM is that, the 7Seg LEDs will not retain the digit when the control transfers to the next segment (obvious?). As a result only one 7seg will be lit at any point in time. Thanks to the persistence-of-vision property of the human eye, by switching the control between the LEDs at a fast pace, it is possible to "virtually" light up more than one 7seg at the same time. And that's the idea behind this project.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Hardware:&lt;/span&gt;&lt;br /&gt;The 7bit data bus control the digit to be displayed (as in my previous post with single 7seg). Additionally, 2 control lines, each connected to the common anode of each of the 7seg select the digits by supplying the positive voltage(+5V). It is actually a good idea to connect the control signals to the base of a transistor and use the transistor as a switching device to turn on/off the positive voltage to the LED -- I don't have transistor at the moment; given that the 7seg does not draw too much current, it was safe to drive them directly from the uC's output pins. I would not recommend this though.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Software:&lt;/span&gt;&lt;br /&gt;The software part is little complicated. The idea of the program is to display 2 digits of a running counter. The counter has to be incremented at a slow pace (once per second?) so human eye can follow the counter. However, the 7segs have to be refreshed at a very high rate otherwise we would see flickering of digits (remember only one of them is lit at any moment). To implement this, it is possible to run a loop with few ms sleep interval and keep refreshing the digits; and increment the counter only after every 100 iterations (so in effect the counter is incremented only after a second or so). This is naive and may not scale when there is more functionality than just incrementing the counter. So the ideal method is to make use of timer interrupts. ATMega8 has 3 timers. I have made use of timer0. Once enabled, whenever the counter belonging to the timer (in this case TCNT0) overflows beyond its size (in this case 8 bit), the uC invokes the appropriate interrupt handler. In the interrupt handler, I've written code to update one digit at every invocation.&lt;br /&gt;&lt;br /&gt;Here is the code:&lt;br /&gt;&lt;pre name="code" class="cpp:nocontrols"&gt;&lt;br /&gt;/* Author: Gerald Naveen A (ageraldnaveen at gmail dot com) */  &lt;br /&gt;&lt;br /&gt;// Write the digit on PORTD (0-7 bits)&lt;br /&gt;// Select the digit on PORTC (0-1 bits)&lt;br /&gt;#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;#include &amp;lt;avr/interrupt.h&amp;gt;&lt;br /&gt;&lt;br /&gt;#define F_CPU 1000000 // 1MHz&lt;br /&gt;#include &amp;lt;util/delay.h&amp;gt;&lt;br /&gt;&lt;br /&gt;//my implementation that wraps writing a digit to 7seg&lt;br /&gt;//implements seg7_write_digit&lt;br /&gt;#include &amp;lt;gerald/7seg.h&amp;gt;&lt;br /&gt;&lt;br /&gt;// volatile makes sense&lt;br /&gt;volatile int g_cur_val = 0;&lt;br /&gt;&lt;br /&gt;void initialize_timer0()&lt;br /&gt;{&lt;br /&gt; TCCR0 |= (1 &amp;lt;&amp;lt; CS01); // configure the prescaler for timer0&lt;br /&gt; TIMSK |= (1 &amp;lt;&amp;lt; TOIE0); // enable timer0 interrupt&lt;br /&gt; TCNT0 = 0; // initialize timer0 counter to 0&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// the TIMER0 overflow interrupt handler&lt;br /&gt;ISR(TIMER0_OVF_vect)&lt;br /&gt;{&lt;br /&gt; static int n = 0; // decides which digit to update now.&lt;br /&gt;&lt;br /&gt; if(!n) {&lt;br /&gt;  // make sure you disable the control signal before changing&lt;br /&gt;  // the data bits. otherwise you can notice small leakage of &lt;br /&gt;  // data onto other digit.&lt;br /&gt;  PORTC = 0;&lt;br /&gt;  seg7_write_digit(g_cur_val % 10); // output ones&lt;br /&gt;  PORTC = 0x1;&lt;br /&gt; } &lt;br /&gt; else {&lt;br /&gt;  PORTC = 0;&lt;br /&gt;  seg7_write_digit((g_cur_val/10) % 10); // output tens&lt;br /&gt;  PORTC = 0x2;&lt;br /&gt; }&lt;br /&gt; n = !n; // toggle the digit selection&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;int main()&lt;br /&gt;{&lt;br /&gt; DDRD = 0x7F;&lt;br /&gt; DDRC = 0x03;&lt;br /&gt; PORTD = 0xFF;&lt;br /&gt; PORTC = 0; // disable control signals by default&lt;br /&gt;&lt;br /&gt; sei(); // enable global interrupts&lt;br /&gt;&lt;br /&gt; initialize_timer0(); &lt;br /&gt;&lt;br /&gt; while(1)&lt;br /&gt; {&lt;br /&gt;  g_cur_val++; // just keep incrementing the counter&lt;br /&gt;  _delay_ms(100);&lt;br /&gt; }&lt;br /&gt; return 0;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;Here is the project in action:&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/3-HslTAdJy4&amp;hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/3-HslTAdJy4&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-3882154780470479004?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/3882154780470479004/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/03/multiplexing-two-7segment-leds.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/3882154780470479004'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/3882154780470479004'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/03/multiplexing-two-7segment-leds.html' title='Multiplexing two 7segment LEDs'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-3237863682566250024</id><published>2009-03-23T20:18:00.005+05:30</published><updated>2009-03-23T20:38:16.082+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='video'/><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='avr'/><title type='text'>7Segment LED Display</title><content type='html'>&lt;div style="text-align: justify;"&gt;After getting the micro controller (uC) work, now it is time to start building small modules for later use in bigger projects. 7Segment LED is one of the common ways of output when the data is numerical.&lt;br /&gt;&lt;br /&gt;I have a common anode 7Segment LED (Red). The 7Seg has seven segments each having to be separately lit up by grounding the appropriate cathode for that segment (actually not necessarily ground, any potential lesser than anode by ~1.5-5V). So, to control 7 segments (using a simple enough circuit), we need to have 7 bits of info, each driving one segment. As the segments are controlled through the cathode, the uC has to sink current from the 7Seg to light up a segment. This is achieved by outputting a logical 0 at the corresponding bit in the uC's output port.&lt;br /&gt;&lt;br /&gt;The ideal thing is to connect each of those 7 cathodes to their corresponding output pins through a current limiting resistor of 330ohms. For ease of use and testing, I've positioned the resistor between the 5V supply and the anode. This is much simpler for the proof of concept and easy to wire on the breadboard. The drawback of this approach however is that, the current gets split into each of the lit segments, as a result the brightness of the segments vary based on the number of segments lit (1 being the brightest and 8 being the dimmest). I don't really care at this moment, given that I know the reason.&lt;br /&gt;&lt;br /&gt;That's all the about the hardware side. The software needs to output the correct bits at the output port to display a digit on the 7Seg. Each digit is displayed by lighting 2 or more segments in the 7Seg. I've created a static mapping between the digits (0-9) and their corresponding segments-to-be-lit. Now, based on the number to be shown, the software outputs the bits and the digits appear on the 7seg. To keep it appealing, I've made the program to display the last digit of a running counter (as usual, a sleep between the increments to keep it visible to the eye).&lt;br /&gt;&lt;br /&gt;Here is the code:&lt;br /&gt;&lt;pre name="code" class="cpp:nocontrols"&gt;&lt;br /&gt;/* Author: Gerald Naveen A (ageraldnaveen at gmail dot com) */&lt;br /&gt;&lt;br /&gt;#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;&lt;br /&gt;#define F_CPU 1000000 // 1MHz&lt;br /&gt;#include &amp;lt;util/delay.h&amp;gt;&lt;br /&gt;#define G_SEGA (1 &amp;lt;&amp;lt; 0)&lt;br /&gt;#define G_SEGB (1 &amp;lt;&amp;lt; 1)&lt;br /&gt;#define G_SEGC (1 &amp;lt;&amp;lt; 2)&lt;br /&gt;#define G_SEGD (1 &amp;lt;&amp;lt; 3)&lt;br /&gt;#define G_SEGE (1 &amp;lt;&amp;lt; 4)&lt;br /&gt;#define G_SEGF (1 &amp;lt;&amp;lt; 5)&lt;br /&gt;#define G_SEGG (1 &amp;lt;&amp;lt; 6)&lt;br /&gt;&lt;br /&gt;uint8_t seg7_map[10]= { &lt;br /&gt; G_SEGA | G_SEGB | G_SEGC | G_SEGD | G_SEGE | G_SEGF, // 0&lt;br /&gt; G_SEGB | G_SEGC, // 1&lt;br /&gt; G_SEGA | G_SEGB | G_SEGG | G_SEGE | G_SEGD, // 2&lt;br /&gt; G_SEGA | G_SEGB | G_SEGG | G_SEGC | G_SEGD, // 3&lt;br /&gt; G_SEGF | G_SEGG | G_SEGB | G_SEGC, // 4&lt;br /&gt; G_SEGA | G_SEGF | G_SEGG | G_SEGC | G_SEGD, // 5&lt;br /&gt; G_SEGA | G_SEGF | G_SEGG | G_SEGC | G_SEGD | G_SEGE, // 6&lt;br /&gt; G_SEGA | G_SEGB | G_SEGC, // 7&lt;br /&gt; G_SEGA | G_SEGB | G_SEGC | G_SEGD | G_SEGE | G_SEGF | G_SEGG, // 8&lt;br /&gt; G_SEGA | G_SEGB | G_SEGC | G_SEGD | G_SEGF | G_SEGG // 9&lt;br /&gt; };&lt;br /&gt;&lt;br /&gt;void seg7_write_digit(uint8_t d)&lt;br /&gt;{&lt;br /&gt; if(d &amp;gt; 9)&lt;br /&gt;  d = d % 10;&lt;br /&gt;&lt;br /&gt; PORTD = 0xFF ^ (seg7_map[d] &amp; 0xFF); // output logical 0 to light that segment&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;int main()&lt;br /&gt;{&lt;br /&gt; DDRD = 0xFF;&lt;br /&gt; int i = 0;&lt;br /&gt; while(1)&lt;br /&gt; {&lt;br /&gt;  seg7_write_digit(i++);&lt;br /&gt;  _delay_ms(400);&lt;br /&gt; }&lt;br /&gt; return 0;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;Here is the circuit in action:&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/OZX42JAz328&amp;amp;hl=en&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/OZX42JAz328&amp;amp;hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;This code I wrote is useful to drive one 7Seg LED; the next job is to drive more than one 7Seg LED -- yes it is different. See you then.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-3237863682566250024?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/3237863682566250024/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/03/7segment-led-display.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/3237863682566250024'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/3237863682566250024'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/03/7segment-led-display.html' title='7Segment LED Display'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-8589076484565009792</id><published>2009-03-21T21:17:00.010+05:30</published><updated>2009-03-23T20:38:36.099+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='video'/><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='avr'/><title type='text'>Hello AVR!</title><content type='html'>&lt;div style="text-align: justify;"&gt;Finally, my first AVR micro-controller based project is ON! I always had a great passion for embedded electronics, but never had a chance and guidance to improve. This is a first step towards that -- thanks to the Internet for a handful of articles.&lt;br /&gt;&lt;br /&gt;After a week's struggle to setup the whole environment, I managed to successfully flash my first program into my ATMega8 micro-controller and use it to drive 2 LEDs. The power of the ATMega8 is just amazing; with very little power consumption, the features it provides for embedded applications is just too good (In a 28pin PDIP packaging, it has around 23 I/O pins, 6 channel ADC, Pulse Width Modulation, Programmable USART, ISP, 3 Timers and clocking at 8-16MHz).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Why the struggle: &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This shouldn't have been a struggle, if I wasn't unlucky to get a faulty ATMega8. This is my first AVR project and I had bought tonnes of electronic goods starting from multimeter, soldering iron to AVR ISP programmer, ATMega8, crystals, resistors, capacitors, inductors, LEDs....(I've actually bought more stuff which I'm yet to use). After setting up the circuit as required, connecting the micro controller (uC) to the ISP programmer and the programmer to the computer, I was not able to flash my controller at all and that was the problem :( I struggled struggled and struggled to debug every portion of this chain; tried a different ISP programmer (built my own serial ISP programmer) but no use; after achieving no success, the final and the only option was to suspect my ATMega8 uC -- the hero of this project. Anyone would think why it took me so long to suspect this; True. But I did suspect this earlier, however I wished this wasn't the issue because I didn't have a spare one with me and I cannot get this in the nearby electronics shops. Finally I had to personally go to SP road in Bangalore (Bangalore's version of the Chennai's ritchie street) and get a ATMega8. Sigh!!! All said and done, it is finally working :D&lt;br /&gt;&lt;br /&gt;This is pretty much a 'Hello World' nothing else. The uC just drives the 2 LEDs I have connected over PORTC through the 330ohm current limiting resistors. To keep it a bit fancy, I made the 2 LEDs to represent the last 2 bits of a running integer counter. So basically the LEDs glow in the following pattern as the integer keeps incrementing -- 00, 01, 10, 11. A 500ms delay between the increments, to keep it visible to the eye.&lt;br /&gt;&lt;br /&gt;The code would look something like this (I use the &lt;a href="http://winavr.sourceforge.net/"&gt;WinAVR&lt;/a&gt; cross compiler).&lt;br /&gt;&lt;pre name="code" class="cpp:nocontrols"&gt;&lt;br /&gt;#include &amp;lt;avr&amp;#47;io.h&amp;gt;&lt;br /&gt;#include &amp;lt;util&amp;#47;delay.h&amp;gt;&lt;br /&gt;&lt;br /&gt;int main()&lt;br /&gt;{&lt;br /&gt; DDRC = 0xFF; // Enable output on PORT C&lt;br /&gt; uint8_t c = 1;&lt;br /&gt; while(1) {&lt;br /&gt;  PORTC = c++; // output the integer on PORT C, whose 0-1bits drive the LEDs&lt;br /&gt;  _delay_ms(500);&lt;br /&gt; }&lt;br /&gt; return 0;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;Here is the Hello AVR! in action:&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/4x9pb2Fx0r0&amp;amp;hl=en&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/4x9pb2Fx0r0&amp;amp;hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-8589076484565009792?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/8589076484565009792/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/03/hello-avr.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/8589076484565009792'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/8589076484565009792'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/03/hello-avr.html' title='Hello AVR!'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-1239984373558025109</id><published>2009-03-20T12:12:00.003+05:30</published><updated>2009-03-20T21:23:39.854+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='scribbles'/><title type='text'>New forms of telemarketing</title><content type='html'>&lt;div style="text-align: justify;"&gt;Thanks to the NDNC (&lt;a href="http://ndncregistry.gov.in/"&gt;National Do Not Call registry&lt;/a&gt;) in India that the telemarketing's nuisance has become really tolerable. There have been days where I would come out of a meeting just to attend a call from an automatic advertisement system. These days I hardly get any message/calls. Great move! This isn't the news, but...&lt;br /&gt;&lt;br /&gt;I am starting to realize 2 new trends in telemarketing to get away with the NDNC regulation.&lt;br /&gt;&lt;br /&gt;1. When I call the service provider (bank, phone etc.,) for some query, they make sure they advertise at least one product to me. They make use of the customers like me who wouldn't just disconnect the call once the query is answered, but would finish the call completely (including a 'same to you' for a 'have a nice day' from the executive). One good thing about this approach is that, they have become much more pleasing than before -- that's the way to make you listen to their advertisement at the end. That's technically not violating NDNC!!&lt;br /&gt;&lt;br /&gt;2. First one is rather acceptable; as this happens only when "I" call them up. The second type is totally ridiculous. These people create a website (or a page in their existing website) to ask them to call us for more info. These days I see a number of websites which have the option of 'Register for a callback for more info' kinds. As earlier, the companies get hold of a database of phone numbers and names. I "guess" that they also have a separate team which would just generate fake requests at the website with those info from their database. Now they are free to call us, claiming that we asked for the call. To make it so formal and legal, they also send an automated SMS which says something like 'Recently you had asked for more info on xxx. Thanks for your interst in xxx. Within 24 hours, our service representative will call you back'. Clever??!! I really got pissed off when I got such a message last week and without surprise they also called me the next day. I finally confirmed from him that the case was registered with a wrong email id but with correct name and mobile number. When I claimed that I never raised any request, he didn't seem surprised; but was rather more interested in still explaining me the product -- this says it all, that it is a practice, not an accident. He claims it coolly that any of my relatives could have registered for me -- I could only LOL!!!&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-1239984373558025109?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/1239984373558025109/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/03/new-forms-of-telemarketing.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/1239984373558025109'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/1239984373558025109'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/03/new-forms-of-telemarketing.html' title='New forms of telemarketing'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-318229266669779632</id><published>2009-03-11T14:32:00.005+05:30</published><updated>2009-03-11T19:18:10.341+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='developer'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Capturing an image from a webcam using Python</title><content type='html'>It is amazingly simple to do this. All you need is the VideoCapture library for python and Python Imaging Library (PIL).&lt;br /&gt;&lt;br /&gt;The VideoCapture library wraps the interactions between Python and the webcam or any other camera (not sure if this works against other imaging devices like scanners). It is a very simple-to-use library. You can download the VideoCapture library from &lt;a href="http://videocapture.sourceforge.net/VideoCapture-0.9-2.zip"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Python Imaging Library (PIL) is the standard python library for image manipulations. The VideoCapture library returns the captured image as an Image object as represented by PIL so it can be used across many other modules of python just like any other image. Download PIL &lt;a href="http://www.pythonware.com/products/pil/index.htm"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The following is a simple example app. It captures an image from the webcam and converts it into grayscale and shows it to the user.&lt;br /&gt;&lt;pre name="code" class="python:nocontrols"&gt;&lt;br /&gt;import VideoCapture as VC&lt;br /&gt;from PIL import Image&lt;br /&gt;from PIL import ImageOps&lt;br /&gt;import time&lt;br /&gt;&lt;br /&gt;def capture_image():&lt;br /&gt;  cam = VC.Device() # initialize the webcam&lt;br /&gt;  img = cam.getImage() # in my testing the first getImage stays black.&lt;br /&gt;  time.sleep(1) # give sometime for the device to come up&lt;br /&gt;  img = cam.getImage() # capture the current image&lt;br /&gt;  del cam # no longer need the cam. uninitialize&lt;br /&gt;  return img&lt;br /&gt;&lt;br /&gt;if __name__=="__main__":  &lt;br /&gt;  img = capture_image()&lt;br /&gt;&lt;br /&gt;  # use ImageOps to convert to grayscale.&lt;br /&gt;  # show() saves the image to disk and opens the image.&lt;br /&gt;  # you can also take a look at Image.save() method to write image to disk.&lt;br /&gt;  ImageOps.grayscale(img).show()&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Simple, isn't it?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-318229266669779632?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/318229266669779632/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/03/capturing-image-from-webcam-using.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/318229266669779632'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/318229266669779632'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/03/capturing-image-from-webcam-using.html' title='Capturing an image from a webcam using Python'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-7043501055110931229</id><published>2009-03-09T12:59:00.004+05:30</published><updated>2009-03-09T13:06:01.325+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='video'/><category scheme='http://www.blogger.com/atom/ns#' term='finance'/><title type='text'>The Crisis of Credit Visualized</title><content type='html'>Just came across an excellent video explaining the credit crunch. &lt;br /&gt;&lt;br /&gt;&lt;object width="600" height="338"&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=3261363&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" /&gt;&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=3261363&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="600" height="338"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;a href="http://vimeo.com/3261363"&gt;The Crisis of Credit Visualized&lt;/a&gt; from &lt;a href="http://vimeo.com/jonathanjarvis"&gt;Jonathan Jarvis&lt;/a&gt; on &lt;a href="http://vimeo.com"&gt;Vimeo&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-7043501055110931229?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/7043501055110931229/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/03/crisis-of-credit-visualized.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/7043501055110931229'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/7043501055110931229'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/03/crisis-of-credit-visualized.html' title='The Crisis of Credit Visualized'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-3382174687804304951</id><published>2009-03-08T18:43:00.003+05:30</published><updated>2009-03-08T18:48:35.115+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='techy'/><category scheme='http://www.blogger.com/atom/ns#' term='winmo'/><title type='text'>Using Vodafone Live! on your computer</title><content type='html'>=== The specific services I talk about here, are applicable only to India; but the concepts apply to anywhere in the world ===&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;This post is the continuation of my previous post on &lt;a href="http://geraldnaveen.blogspot.com/2009/03/using-mobiles-gprsedge-for-internet.html"&gt;sharing your mobile's GPRS/EDGE connection on a computer&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Vodafone Live! and other similar services (Airtel Live!?) do not allow the use of the mobile's internet service on a computer. Generally these types of services are called as WAP Internet package (or something similar, but with a WAP tag in there description).&lt;br /&gt;&lt;br /&gt;&lt;span&gt;There are two restrictions that are common here:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1. They cannot reach any of the Internet servers "directly". ie., you need to always connect through a proxy server which supports most common protocols. This provides the service provider an easier management to restrict the users from accessing certain services that are not allowed under this package (something like VoIP?)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Solution: &lt;/span&gt;This is a straight-forward solution. Once you share the connection with your computer as I explained in my earlier post, you need to configure your browser to use your service-provider's proxy server at the right port (you should have used this info already to configure Internet connection in your mobile phone). You can try ping'ing the proxy server from a command prompt on your computer and you should see replies. You can also notice clearly that you will not be able to ping any other webservers/public IP other than your service provider's proxy server -- clearly indicating the idea behind the use of proxy server.&lt;br /&gt;&lt;br /&gt;2. They do not allow any device other than a mobile to use the Internet service. This infact is difficult to ascertain. This is because of the lack of support in the underlying protocols. Most protocols do not carry (actually they aren't meant to) the user related information. The only information that the service provider is able to rely on is the user-agent attribute in the HTTP header in every HTTP request. The idea behind this attribute was to allow the webservers to format the output based on the user's device profile so it can fit well on the user's device. Generally the user-agent information carries the browser's name, operating system information. Given that most of our requests are going to be HTTP(S) based (while browsing), this is enough for the service provider to restrict the use of internet on the computer.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Solution:&lt;/span&gt; With a few experiments with wget, I could figure out that the user-agent indeed was used to restrict the usage. wget was able to retrieve the pages successfully on my computer while sharing my Vodafone Live! connection from my mobile. With wget configured to use the user-agent as-is that firefox 3.0 uses, I could get 'access denied' even when requested from wget. After playing around a while with various user-agents I finally figured out that it was indeed the OS part of the user-agent that they care and not the browser itself. Even though Firefox 3.0 does not exist on a mobile platform (yet!), they do allow the use of firefox 3.0 in the user-agent if I make sure I tweak the OS part of it. That having proven the concept now, how do we make the browsers work with the phone; after all wget cannot be used to browse. Thankfully, the great Firefox supports a config variable that allows the user to override the user-agent (I'm not sure about other browsers; I'm fairly confident MS Internet Explorer does not support). To configure, just type 'about:config' in the firefox browser URL and add a new String config variable with the name 'general.useragent.override' (this does not exist already) and set its value to whatever you want (basically it should be devoid of Windows NT etc.,) and you are all set. Just start browsing (don't forget to set your proxy server appropriately if required).&lt;br /&gt;&lt;br /&gt;It should look something like this:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_CWrtfw9yct0/SbPFDSm0PHI/AAAAAAAAAR4/oZK5kQAWHVQ/s1600-h/useragent_override.JPG"&gt;&lt;img style="cursor: pointer; width: 400px; height: 114px;" src="http://3.bp.blogspot.com/_CWrtfw9yct0/SbPFDSm0PHI/AAAAAAAAAR4/oZK5kQAWHVQ/s400/useragent_override.JPG" alt="" id="BLOGGER_PHOTO_ID_5310805045924871282" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I would suggset not to leave the user-agent with an arbitrary value all the time. When you are not accessing Internet over your phone, delete (Reset) that config variable so that the actual user-agent is sent.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-3382174687804304951?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/3382174687804304951/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/03/using-vodafone-live-on-your-computer.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/3382174687804304951'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/3382174687804304951'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/03/using-vodafone-live-on-your-computer.html' title='Using Vodafone Live! on your computer'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_CWrtfw9yct0/SbPFDSm0PHI/AAAAAAAAAR4/oZK5kQAWHVQ/s72-c/useragent_override.JPG' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-3997519175273210627</id><published>2009-03-05T18:19:00.006+05:30</published><updated>2009-03-08T18:49:47.230+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='techy'/><category scheme='http://www.blogger.com/atom/ns#' term='winmo'/><category scheme='http://www.blogger.com/atom/ns#' term='bluetooth'/><title type='text'>Using mobile's GPRS/EDGE for Internet connectivity on computer</title><content type='html'>&lt;div style="text-align: justify;"&gt;GPRS/EDGE services provide internet access to mobile handsets. The services have become readily available and are very economical that many people have started using GPRS/EDGE on their mobile phones. I have it for atleast 3-4 years now in India and I find it really useful specially while travelling when you need frequent access to data and might not be connected to Internet otherwise. I use it to read news and check emails specially and even to track the train's timings and current status as I wait for the train in the junction -- believe me it is handy.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;To add to its existing benefits, wouldn't it be wonderful if one can connect to Internet on a desktop/laptop PC using the mobile phone's GPRS/EDGE service? And yes it is possible.&lt;br /&gt;&lt;br /&gt;Technically there are 2 possible ways to do this:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;1. Connecting to Internet using the mobile as a GSM modem; so one can just dial in to their network service -- the dial up networking service (DUN). This method has been very common and almost all decently higher end phones support an interface for GSM modem. On installing the correct drivers on the computer, the mobile when connected over (usually) USB will be recognized as a USB based modem which can be used to dial in. Obviously, this requires support from the mobile service provider. Many service providers (including Airtel, Vodafone) do support this option but usually are costly and not worth it if you aren't roaming a lot. (eg., paying a monthly rental of Rs.200 on a data plan but using it once a month is not worth the money). But remember this is the easiest and widely available means to connect.&lt;br /&gt;&lt;br /&gt;2. The computer connects to your mobile phone and establishes a personal area network (PAN) between them. This network shall be established in any means that you have -- maybe a USB Lan over USB, or a Bluetooth PAN over bluetooth. Once the network is established, if the phone can route the traffic to/from the computer to the EDGE, you have an Internet connection on your computer. At application level, if you can manage to run a HTTP proxy server (you can even write your own) on your phone that can work over the EDGE on the other side, it should do. You can configure the browser on the computer to use the phone as the proxy server. The other best option is : if the OS on the phone supports to make the phone as a full fledged router to route the data between your EDGE network and the computer. Unfortunately this option is pretty difficult to customize yourself if the phone does not support it -- as it needs support at the OS level.&lt;br /&gt;&lt;br /&gt;Now, Windows Mobile (and Windows OS) users take a deep breath; we are saved. Fortunately Microsoft has implemented the 'Internet sharing' functionality into Windows Mobile (I guess 5.0 and above) which allows us to do exactly the same thing (with a Windows computer). The interface is very simple and is much easier to use than even the GSM modem counterpart.&lt;br /&gt;&lt;br /&gt;On your WinMo phone, just click on Start-&gt;Programs-&gt;Internet Sharing. The following (or similar) window would popup.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_CWrtfw9yct0/Sa5F70CMCgI/AAAAAAAAARw/pHDQSB15ZkU/s1600-h/inet-share-config.jpg"&gt;&lt;img style="cursor: pointer; width: 240px; height: 320px;" src="http://4.bp.blogspot.com/_CWrtfw9yct0/Sa5F70CMCgI/AAAAAAAAARw/pHDQSB15ZkU/s400/inet-share-config.jpg" alt="" id="BLOGGER_PHOTO_ID_5309257904598813186" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now select the mode of connection you want to connect through. USB connectivity is easier if you do not know how to connect over Bluetooth PAN. Connect your Windows Mobile mobile onto your computer through an USB cable (I assume the standard setup to communicate over ActiveSync is installed on the computer). On the Internet Sharing dialog on your mobile, just select USB and the appropriate service connection point that you have configured on your mobile. Click Connect. The mobile registers itself with the computer as a 'Windows Mobile based Internet Connection sharing device' and a virtual network adaptor gets installed. Then it also creates a Network connection that connects automatically to your Windows mobile over DHCP and acquires an IP address to talk over. You should be able to see the new connection in your Network Connections dialog (Start -&gt; Control Panel -&gt; Network Connections) with the status as 'Connected'. In addition, you can also run ipconfig to see the new connection's IP address etc., That's it. Now you are all set to browse the Internet using your computer. Just open up a browser and start browsing.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Caveats:&lt;/span&gt;&lt;br /&gt;1. If you are using Vodafone Live (or a similar variant from any other service provider who restricts the use only to mobiles), every thing will go through as explained, except that your browser would not be able retrieve any data or would always show '403 Forbidden'. It is possible to work around this, you might have to wait for my &lt;a href="http://geraldnaveen.blogspot.com/2009/03/using-vodafone-live-on-your-computer.html"&gt;next post on this&lt;/a&gt;. I do this.&lt;br /&gt;&lt;br /&gt;2. Incase your computer is connected over ethernet/wifi to your local network which has a default gateway configured, you might have to tweak your routing table to redirect the Internet traffic to your mobile phone.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-3997519175273210627?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/3997519175273210627/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/03/using-mobiles-gprsedge-for-internet.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/3997519175273210627'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/3997519175273210627'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/03/using-mobiles-gprsedge-for-internet.html' title='Using mobile&apos;s GPRS/EDGE for Internet connectivity on computer'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_CWrtfw9yct0/Sa5F70CMCgI/AAAAAAAAARw/pHDQSB15ZkU/s72-c/inet-share-config.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-5896750713200083204</id><published>2009-03-04T10:53:00.002+05:30</published><updated>2009-03-04T10:58:24.641+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='video'/><category scheme='http://www.blogger.com/atom/ns#' term='news'/><title type='text'>Flexible touch-screen displays</title><content type='html'>&lt;div style="text-align: justify;"&gt;After flexible displays, it is now flexible touch-screen displays. Only drawback I see is that they use a inductive screen for touch sensitivity -- thus requires a special magnetic stylus to make it work (but probably a fair restriction on a flexible display, after all a flexible screen might get in contact with so many unintentional objects). Just a proof of concept but a big step forward!!&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/IVJCOAFLHJA&amp;amp;hl=en&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/IVJCOAFLHJA&amp;amp;hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-5896750713200083204?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/5896750713200083204/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/03/flexible-touch-screen-displays.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/5896750713200083204'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/5896750713200083204'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/03/flexible-touch-screen-displays.html' title='Flexible touch-screen displays'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-8068251837201774299</id><published>2009-03-02T19:16:00.005+05:30</published><updated>2009-03-02T19:23:19.648+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='pencil arts'/><title type='text'>My pencil arts - #4 - Lady</title><content type='html'>First 2 are photographed and the last one is scanned copy.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_CWrtfw9yct0/SavjsqpraiI/AAAAAAAAARg/r8kBatk_YHI/s1600-h/outline.jpg"&gt;&lt;img style="cursor: pointer; width: 287px; height: 400px;" src="http://3.bp.blogspot.com/_CWrtfw9yct0/SavjsqpraiI/AAAAAAAAARg/r8kBatk_YHI/s400/outline.jpg" alt="" id="BLOGGER_PHOTO_ID_5308586942289111586" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_CWrtfw9yct0/SavjsXXcIzI/AAAAAAAAARY/AIeu0V1KWh8/s1600-h/inprogress.jpg"&gt;&lt;img style="cursor: pointer; width: 318px; height: 400px;" src="http://3.bp.blogspot.com/_CWrtfw9yct0/SavjsXXcIzI/AAAAAAAAARY/AIeu0V1KWh8/s400/inprogress.jpg" alt="" id="BLOGGER_PHOTO_ID_5308586937112339250" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_CWrtfw9yct0/SavkbzSYNrI/AAAAAAAAARo/IocfTLBFTmw/s1600-h/GoodScan2.jpg"&gt;&lt;img style="cursor: pointer; width: 319px; height: 400px;" src="http://1.bp.blogspot.com/_CWrtfw9yct0/SavkbzSYNrI/AAAAAAAAARo/IocfTLBFTmw/s400/GoodScan2.jpg" alt="" id="BLOGGER_PHOTO_ID_5308587752061154994" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-8068251837201774299?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/8068251837201774299/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/03/my-pencil-arts-4-lady.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/8068251837201774299'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/8068251837201774299'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/03/my-pencil-arts-4-lady.html' title='My pencil arts - #4 - Lady'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_CWrtfw9yct0/SavjsqpraiI/AAAAAAAAARg/r8kBatk_YHI/s72-c/outline.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-2489799066306150814</id><published>2009-03-02T19:02:00.005+05:30</published><updated>2009-08-05T16:34:57.472+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='spam'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><title type='text'>An interesting spam and analysis</title><content type='html'>&lt;div style="text-align: justify;"&gt;I just noticed an interesting spam mail into my mailbox recently. Unlike other spams this mail had a different intent (read it to know). No product marketing, no wealth transfer etc., no phishing intention. The only justification I can think of was to get in touch and create a friendship and then collect the necessary info. Anyways here is the mail (as-is):&lt;br /&gt;&lt;br /&gt;======================================================&lt;br /&gt;Hello Dear,&lt;br /&gt;&lt;br /&gt;how are you today I hope that every things is ok with you as it is my great pleassure to contact you in having communication with you starting from today, please i wish you will have the desire with me so that we can get to know each other better and see what happened in future.&lt;br /&gt;&lt;br /&gt;I will be very happy if you can write me through this mail for easiest communication and to know all about each other, and also give you my pictures and details about me, i will be waiting to hear from you as i wish you all the best for your day.&lt;br /&gt;&lt;br /&gt;your new friend.&lt;br /&gt;Miss. Aminata.&lt;br /&gt;======================================================&lt;br /&gt;&lt;br /&gt;I was curious to just figure out if this is not a possible spam from any of my friends. I wanted to take it forward and reply if I had suspected any of my friends for this, but unfortunately it was not. The mail's SMTP header was as follows:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;From Aminata Sankoh Thu Feb 26 15:47:48 2009&lt;br /&gt;Return-Path: &lt;aminsankoh@yahoo.co.th&gt;&lt;/aminsankoh@yahoo.co.th&gt;&lt;br /&gt;&lt;aminsankoh@yahoo.co.th&gt;Authentication-Results: mta209.mail.re4.yahoo.com  from=yahoo.co.th; domainkeys=pass (ok)&lt;span style="font-weight: bold;"&gt;;&lt;/span&gt; from=yahoo.co.th; dkim=neutral (no  sig)&lt;/aminsankoh@yahoo.co.th&gt;&lt;br /&gt;&lt;aminsankoh@yahoo.co.th&gt;== strip little ==&lt;/aminsankoh@yahoo.co.th&gt;&lt;br /&gt;&lt;aminsankoh@yahoo.co.th&gt;Received: from [124.108.114.83] by t2.bullet.mail.sg1.yahoo.com with NNFMP; 27 Feb 2009 01:34:30 -0000&lt;/aminsankoh@yahoo.co.th&gt;&lt;br /&gt;&lt;aminsankoh@yahoo.co.th&gt;Received: from [127.0.0.1] by omp103.mail.sg1.yahoo.com with NNFMP; 27 Feb 2009 01:34:30 -0000&lt;/aminsankoh@yahoo.co.th&gt;&lt;br /&gt;&lt;aminsankoh@yahoo.co.th&gt;Received: (qmail 47623 invoked by uid 60001); 26 Feb 2009 23:47:48 -0000&lt;/aminsankoh@yahoo.co.th&gt;&lt;br /&gt;&lt;aminsankoh@yahoo.co.th&gt;DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws;&lt;/aminsankoh@yahoo.co.th&gt;&lt;br /&gt;&lt;aminsankoh@yahoo.co.th&gt;  s=s1024; d=yahoo.co.th;&lt;/aminsankoh@yahoo.co.th&gt;&lt;br /&gt;&lt;aminsankoh@yahoo.co.th&gt;  h=Received:Date:From:Reply-To:Subject:To:MIME-Version:Content-Type:Content-Transfer-Encoding:Message-ID;&lt;/aminsankoh@yahoo.co.th&gt;&lt;br /&gt;&lt;aminsankoh@yahoo.co.th&gt;  b=6DW+LjgIGtkj1fBUv41AyHZOGKeVZljOv8/lXgJLCNujOTjsjqX+R3yacDOW9Q080JdDCUuW+yBnhwnbUEpBFmILXgS2JDP6H4lVIqtCcuZ9WOgVok/2lLLwQ3ZP585/JAanJUjrOGzEBoeo8biUWzqLKHqNht4rlW7Lks12pOw=;&lt;/aminsankoh@yahoo.co.th&gt;&lt;br /&gt;&lt;aminsankoh@yahoo.co.th&gt;Received: from [41.208.161.138] by web76716.mail.sg1.yahoo.com via HTTP; Fri, 27 Feb 2009 06:47:48 ICT&lt;/aminsankoh@yahoo.co.th&gt;&lt;br /&gt;&lt;aminsankoh@yahoo.co.th&gt;Date: Fri, 27 Feb 2009 06:47:48 +0700 (ICT)&lt;/aminsankoh@yahoo.co.th&gt;&lt;br /&gt;&lt;aminsankoh@yahoo.co.th&gt;From: Aminata Sankoh &lt;aminsankoh@yahoo.co.th&gt;&lt;/aminsankoh@yahoo.co.th&gt;&lt;/aminsankoh@yahoo.co.th&gt;&lt;br /&gt;&lt;aminsankoh@yahoo.co.th&gt;&lt;aminsankoh@yahoo.co.th&gt;Reply-To: amina_luv8@yahoo.com&lt;/aminsankoh@yahoo.co.th&gt;&lt;/aminsankoh@yahoo.co.th&gt;&lt;br /&gt;&lt;aminsankoh@yahoo.co.th&gt;&lt;aminsankoh@yahoo.co.th&gt;Subject: Hello Dear&lt;/aminsankoh@yahoo.co.th&gt;&lt;/aminsankoh@yahoo.co.th&gt;&lt;br /&gt;&lt;aminsankoh@yahoo.co.th&gt;&lt;aminsankoh@yahoo.co.th&gt;To: aminsankoh@yahoo.co.th&lt;/aminsankoh@yahoo.co.th&gt;&lt;/aminsankoh@yahoo.co.th&gt;&lt;br /&gt;&lt;aminsankoh@yahoo.co.th&gt;&lt;aminsankoh@yahoo.co.th&gt;MIME-Version: 1.0&lt;/aminsankoh@yahoo.co.th&gt;&lt;/aminsankoh@yahoo.co.th&gt;&lt;br /&gt;&lt;aminsankoh@yahoo.co.th&gt;&lt;aminsankoh@yahoo.co.th&gt;Content-Type: multipart/alternative; boundary="0-1397759359-1235692068=:47230"&lt;/aminsankoh@yahoo.co.th&gt;&lt;/aminsankoh@yahoo.co.th&gt;&lt;br /&gt;&lt;aminsankoh@yahoo.co.th&gt;&lt;aminsankoh@yahoo.co.th&gt;Content-Transfer-Encoding: 8bit&lt;/aminsankoh@yahoo.co.th&gt;&lt;/aminsankoh@yahoo.co.th&gt;&lt;br /&gt;&lt;aminsankoh@yahoo.co.th&gt;&lt;aminsankoh@yahoo.co.th&gt;Message-ID: &lt;445714.47230.qm@web76716.mail.sg1.yahoo.com&gt;&lt;/aminsankoh@yahoo.co.th&gt;&lt;/aminsankoh@yahoo.co.th&gt;&lt;br /&gt;&lt;aminsankoh@yahoo.co.th&gt;&lt;aminsankoh@yahoo.co.th&gt;Content-Length: 2417&lt;/aminsankoh@yahoo.co.th&gt;&lt;/aminsankoh@yahoo.co.th&gt;&lt;br /&gt;&lt;aminsankoh@yahoo.co.th&gt;&lt;aminsankoh@yahoo.co.th&gt;&lt;/aminsankoh@yahoo.co.th&gt;&lt;/aminsankoh@yahoo.co.th&gt;&lt;/div&gt;&lt;aminsankoh@yahoo.co.th&gt;&lt;aminsankoh@yahoo.co.th&gt;&lt;br /&gt;== end-of-headers ==&lt;br /&gt;&lt;br /&gt;There are few interesting things to be noticed:&lt;br /&gt;&lt;/aminsankoh@yahoo.co.th&gt;&lt;/aminsankoh@yahoo.co.th&gt;&lt;ul&gt;&lt;li&gt;&lt;aminsankoh@yahoo.co.th&gt;&lt;aminsankoh@yahoo.co.th&gt;Server authentication through domainkeys passed. So this email has been sent by the given email address from yahoo.co.th. That makes it easier to track further.&lt;/aminsankoh@yahoo.co.th&gt;&lt;/aminsankoh@yahoo.co.th&gt;&lt;/li&gt;&lt;li&gt;&lt;aminsankoh@yahoo.co.th&gt;&lt;aminsankoh@yahoo.co.th&gt;This email has been sent from IP address 41.208.161.138. A simple search and this IP address belongs to country Senegal in Africa -- oh ok that throws my friends out of the list.&lt;/aminsankoh@yahoo.co.th&gt;&lt;/aminsankoh@yahoo.co.th&gt;&lt;/li&gt;&lt;li&gt;&lt;aminsankoh@yahoo.co.th&gt;&lt;aminsankoh@yahoo.co.th&gt;The email has been addressed to the sender's address and all those bunch of people targeted are in BCC probably.&lt;/aminsankoh@yahoo.co.th&gt;&lt;/aminsankoh@yahoo.co.th&gt;&lt;/li&gt;&lt;/ul&gt;&lt;aminsankoh@yahoo.co.th&gt;&lt;aminsankoh@yahoo.co.th&gt;Few things which aren't clearly justified:&lt;br /&gt;&lt;/aminsankoh@yahoo.co.th&gt;&lt;/aminsankoh@yahoo.co.th&gt;&lt;ul&gt;&lt;li&gt;&lt;aminsankoh@yahoo.co.th&gt;&lt;aminsankoh@yahoo.co.th&gt;    The relevant yahoo webserver (web76716.mail.sg1.yahoo.com) seems to be located geographically in Singapore. Possibly because the yahoo mail's domain was co.th (not sure if yahoo has a separate server for Thailand; maybe it wasn't available at the time of creation of the yahoo account - never mind). Maybe the user from Africa wanted to pretend to be in Thailand.&lt;/aminsankoh@yahoo.co.th&gt;&lt;/aminsankoh@yahoo.co.th&gt;&lt;/li&gt;&lt;li&gt;&lt;aminsankoh@yahoo.co.th&gt;&lt;aminsankoh@yahoo.co.th&gt;The reply-to address points to another email id in the yahoo.com domain.  Maybe she/he sends multiple emails from different different email accounts and want to easily catch hold of the bakara(s) who replies, by diverting all the replies to one email box -- so just check one mailbox for replies?? possible.&lt;/aminsankoh@yahoo.co.th&gt;&lt;/aminsankoh@yahoo.co.th&gt;&lt;/li&gt;&lt;/ul&gt;&lt;aminsankoh@yahoo.co.th&gt;&lt;aminsankoh@yahoo.co.th&gt;Obviously I chose not to reply. Just beware of such mails.&lt;br /&gt;&lt;/aminsankoh@yahoo.co.th&gt;&lt;/aminsankoh@yahoo.co.th&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-2489799066306150814?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/2489799066306150814/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/03/interesting-spam-and-analysis.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/2489799066306150814'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/2489799066306150814'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/03/interesting-spam-and-analysis.html' title='An interesting spam and analysis'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-9135061702183057178</id><published>2009-02-28T12:41:00.008+05:30</published><updated>2009-02-28T12:56:06.402+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='finance'/><title type='text'>EMI Calculation formula -- proof</title><content type='html'>&lt;span style="font-size:85%;"&gt;=== I'm confident that this proof is correct; but it is possible that there is a simpler proof existing for the same ==&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;P ==&gt; Loan amount (principal)&lt;br /&gt;E ==&gt; EMI per month (to be derived)&lt;br /&gt;n ==&gt; tenure in months&lt;br /&gt;R ==&gt; rate of interest per month (to avoid cluttering of derivations, R is assumed to have been divided by 100. ie., for 12% p.a interest rate, it is 1% per month, so R is 0.01)&lt;br /&gt;&lt;br /&gt;Let us derive the formula for outstanding-principal at the end of n EMIs (months):&lt;br /&gt;&lt;br /&gt;outstanding-principal after month n = outstanding-principal after month n-1  minus principal component of the n'th EMI.&lt;br /&gt;&lt;br /&gt;First month: P-(E-P*R)  ==&gt; P-E+PR ==&gt; P(R+1)-E&lt;br /&gt;&lt;br /&gt;Second month (n=2):&lt;br /&gt;=&gt; P-(E-PR)-(E-(P-E+PR)*R) =&gt; P-E+PR-(E+ER-(P+PR)*R) =&gt; -E-E-ER + P + PR + (P+PR)*R&lt;br /&gt;=&gt; -2E-ER + (P+PR)(1+R) =&gt; -E(R+2) + P(1+R)(R+1) = P(R+1)&lt;sup&gt;2&lt;/sup&gt; - E(R+2)&lt;br /&gt;&lt;br /&gt;Third month (n=3):&lt;br /&gt;=&gt; P(R+1)&lt;sup&gt;2&lt;/sup&gt; - E(R+2) - E + PR(R+1)&lt;sup&gt;2&lt;/sup&gt; - ER(R+2)&lt;br /&gt;=&gt; P(R+1)&lt;sup&gt;2&lt;/sup&gt; + PR(R+1)&lt;sup&gt;2&lt;/sup&gt; -E -E(R+2) -ER(R+2) ==&gt; P(R+1)&lt;sup&gt;3&lt;/sup&gt; - E(1+(R+2)(1+R))&lt;br /&gt;&lt;br /&gt;Fourth month (n=4):&lt;br /&gt;=&gt; P(R+1)&lt;sup&gt;3&lt;/sup&gt; - E(1+(R+2)(R+1)) - E + PR(R+1)&lt;sup&gt;3&lt;/sup&gt; - ER(1+(R+2)(R+1))&lt;br /&gt;=&gt; P(R+1)&lt;sup&gt;4&lt;/sup&gt; -E -E(1+(R+2)(R+1)) -ER(1+(R+2)(R+1))&lt;br /&gt;=&gt; &lt;span style="font-weight: bold;"&gt;P(R+1)&lt;/span&gt;&lt;sup style="font-weight: bold;"&gt;4&lt;/sup&gt;&lt;span style="font-weight: bold;"&gt; - E(1+(1+(R+2)(R+1))(R+1)) -------- (1)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Clearly the first portion of the outstanding principal has become a function of 'n'. I had to formulate the second portion ie., the co-efficient of E -&gt; (1+(1+(R+2)(R+1))(R+1)) so I can come up with a outstanding-principal formula after n EMIs.&lt;br /&gt;&lt;br /&gt;First approach:&lt;br /&gt;&lt;br /&gt;1 ==&gt; (R+1)&lt;sup&gt;0&lt;/sup&gt;&lt;br /&gt;R+2 ==&gt; (R+1)&lt;sup&gt;0&lt;/sup&gt; + (R+1)&lt;sup&gt;1&lt;/sup&gt;&lt;br /&gt;1+(R+2)(R+1) == &gt; 1 + R&lt;sup&gt;2&lt;/sup&gt; + R + 2R+2 ==&gt; (R+1)&lt;sup&gt;0&lt;/sup&gt; + (R+1)&lt;sup&gt;1&lt;/sup&gt; + (R+1)&lt;sup&gt;2&lt;/sup&gt;&lt;br /&gt;1+(1+(R+2)(R+1))(R+1) ==&gt; 1 + ((R+1)&lt;sup&gt;2&lt;/sup&gt;+R+2)(R+1)) == &gt; 1 + ((R+1)&lt;sup&gt;3&lt;/sup&gt;+(R+2)(R+1))&lt;br /&gt;==&gt; (R+1)&lt;sup&gt;0&lt;/sup&gt; + (R+1)&lt;sup&gt;1&lt;/sup&gt; + (R+1)&lt;sup&gt;2&lt;/sup&gt;+ (R+1)&lt;sup&gt;3&lt;/sup&gt;&lt;br /&gt;&lt;br /&gt;This translates to something like a&lt;sup&gt;0&lt;/sup&gt;+a&lt;sup&gt;1&lt;/sup&gt;+a&lt;sup&gt;2&lt;/sup&gt;+a&lt;sup&gt;3&lt;/sup&gt;...+a&lt;sup&gt;n&lt;/sup&gt; ; but I have no idea of any means to change this to a simple function of n.&lt;br /&gt;&lt;br /&gt;So tried another approach to deduce:&lt;br /&gt;&lt;br /&gt;R+2 =&gt; (R&lt;sup&gt;2&lt;/sup&gt;+2R+1-1)/R ==&gt; ((R+1)&lt;sup&gt;2&lt;/sup&gt;-1)/R&lt;br /&gt;1 + (R+2)(R+1) ==&gt; 1 + ((R+1)&lt;sup&gt;2&lt;/sup&gt;-1)*(R+1)/R ==&gt; 1 + ((R+1)&lt;sup&gt;3&lt;/sup&gt;-R-1)/R&lt;br /&gt;==&gt; 1 + ((R+1)&lt;sup&gt;3&lt;/sup&gt;-1)/R - 1 == &gt; ((R+1)&lt;sup&gt;3&lt;/sup&gt;-1)/R&lt;br /&gt;Similarly it can also be proved that for n=4 it is ((R+1)&lt;sup&gt;4&lt;/sup&gt;-1)/R&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Proof my mathematical induction:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Lets call this function P(k):&lt;br /&gt;&lt;br /&gt;P(1) = ((R+1)&lt;sup&gt;1&lt;/sup&gt;-1)/R =&gt; R+1-1/R =&gt; 1&lt;br /&gt;Assuming P(k) is true, lets prove p(k+1).&lt;br /&gt;&lt;br /&gt;based on the above recurrence, p(k+1) = 1+(R+1)P(k)&lt;br /&gt;==&gt; 1+(R+1) * ((R+1)&lt;sup&gt;k&lt;/sup&gt;-1)/R ==&gt; 1 + ((R+1)&lt;sup&gt;(k+1)&lt;/sup&gt;-(R+1))/R&lt;br /&gt;==&gt; 1 + ((R+1)&lt;sup&gt;(k+1)&lt;/sup&gt;-1)/R - 1 ==&gt; ((R+1)&lt;sup&gt;(k+1)&lt;/sup&gt;-1)/R ==&gt; P(k+1)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Substituting the result in equation (1), the outstanding principal after n EMIs is: =&gt; P(R+1)&lt;sup&gt;n&lt;/sup&gt; - E((R+1)&lt;sup&gt;n&lt;/sup&gt;-1)/R&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;For the loan to end correctly, the outstanding principal at the end of n EMIs should be less than or equal to zero (if -ve, last month EMI will be smaller appropriately).&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;P(R+1)&lt;sup&gt;n&lt;/sup&gt; - E((R+1)&lt;sup&gt;n&lt;/sup&gt; - 1)/R &lt;= 0   or E &gt;= P(R+1)&lt;sup&gt;n&lt;/sup&gt; / (((R+1)&lt;sup&gt;n&lt;/sup&gt; - 1)/R) or&lt;br /&gt;E &gt;= PR(R+1)&lt;sup&gt;n&lt;/sup&gt; / ((R+1)&lt;sup&gt;n&lt;/sup&gt; -1)&lt;br /&gt;&lt;br /&gt;EMI has to be as small as possible while completing the loan on time. So, computationally, for E to be a smallest possible round integer, &gt;= can be converted to = by doing a ceil on the result.&lt;br /&gt;&lt;br /&gt;So, &lt;span style="font-weight: bold;"&gt;E = ceil(PR(R+1)&lt;/span&gt;&lt;sup style="font-weight: bold;"&gt;n&lt;/sup&gt;&lt;span style="font-weight: bold;"&gt; / ((R+1)&lt;/span&gt;&lt;sup style="font-weight: bold;"&gt;n&lt;/sup&gt;&lt;span style="font-weight: bold;"&gt; -1))&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;where ceil(x) ==&gt; smallest integer that is &gt;= x e.g, ceil(1.5) = 2; ceil(2.1) = 3; ceil(2) = 2;&lt;br /&gt;&lt;br /&gt;Hence proved :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-9135061702183057178?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/9135061702183057178/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/02/emi-calculation-formula-proof.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/9135061702183057178'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/9135061702183057178'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/02/emi-calculation-formula-proof.html' title='EMI Calculation formula -- proof'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-151012769510754835</id><published>2009-02-27T11:49:00.001+05:30</published><updated>2009-02-27T11:51:27.803+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='pravs world'/><title type='text'>Life Moves Ahead To A New Beginning</title><content type='html'>Courtesy: &lt;a href="http://pravstalk.com/life-moves-ahead-to-a-new-beginning/"&gt;PravsWorld&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It is good to remember the past but don’t let the past capture your future.&lt;br /&gt;The greatest thing about life is that is moves ahead and never goes back.&lt;br /&gt;&lt;br /&gt;Just remember when it moves ahead, a new beginning starts.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-151012769510754835?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/151012769510754835/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/02/life-moves-ahead-to-new-beginning.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/151012769510754835'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/151012769510754835'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/02/life-moves-ahead-to-new-beginning.html' title='Life Moves Ahead To A New Beginning'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-6065942338778094984</id><published>2009-02-26T15:31:00.006+05:30</published><updated>2009-02-26T15:43:49.349+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='helper'/><title type='text'>ScriptedPost</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://sites.google.com/site/geraldnaveen/images/scripted_post.bmp"&gt;&lt;img style="border: 0px none ; cursor: pointer; width: 120px; height: 25px;" src="http://sites.google.com/site/geraldnaveen/images/scripted_post.bmp" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Whenever I mark a post as a ScriptedPost, the reader needs to be aware of the following:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;This post has some portion of javascript underneath.&lt;/li&gt;&lt;li&gt;I assure that such scripts will not send any personal information from your computer to my servers. The scripts are put in only to enrich the post in the content so it reaches people better.&lt;/li&gt;&lt;li&gt;On readers like Google Reader or any other RSS readers, this post may not completely work the way it is supposed to -- as the scripts might have been stripped off for security reasons. You might probably want to see the post in a browser to get the complete effect.&lt;/li&gt;&lt;li&gt;I use &lt;a href="http://www.getfirefox.com"&gt;Firefox &lt;/a&gt;and I only test my scripts against Firefox -- a decent standards compliant browser. It is possible that some (although not all) scripts might have difficulties while running on other browsers.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-6065942338778094984?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/6065942338778094984/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/02/scriptedpost.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/6065942338778094984'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/6065942338778094984'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/02/scriptedpost.html' title='ScriptedPost'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-1583037206658039709</id><published>2009-02-26T13:54:00.034+05:30</published><updated>2009-02-28T13:00:07.314+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='finance'/><title type='text'>Loan EMI calculator</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://geraldnaveen.blogspot.com/2009/02/scriptedpost.html"&gt;&lt;img style="border: 0px none ; cursor: pointer; width: 125px; height: 25px;" src="http://sites.google.com/site/geraldnaveen/images/scripted_post.bmp" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Many times people are in need of this. Be it home loan or personal loan or vehicle loan, the calculation of EMI is the same.&lt;br /&gt;&lt;br /&gt;This calculator works for any of these loans with a monthly paid EMI and month reducing balance. Just key in the details and enjoy.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="gerald_table"&gt;&lt;br /&gt;&lt;table width="400" bgcolor="#333333"&gt;&lt;br /&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;Loan amount &lt;input id="principal" type="text"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;Rate of interest (% p.a) &lt;input size="6" id="roi" type="text"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;Tenure (in months) &lt;input size="6" id="tenure" type="text"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;&lt;input onclick="javascript:calc_emi();" value="Calculate" type="button"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;The calculated EMI is &lt;span id="emi"&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;One step further, if you need to calculate the EMI in your own application/webpage you can use this formula,&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;EMI = ceil(PR(R+1)&lt;sup&gt;n&lt;/sup&gt; / ((R+1)&lt;sup&gt;n&lt;/sup&gt; -1))&lt;br /&gt;&lt;br /&gt;where,&lt;br /&gt;&lt;br /&gt;P ==&gt; Loan amount (principal)&lt;br /&gt;n ==&gt; tenure in months&lt;br /&gt;R ==&gt; rate of interest per month (to avoid cluttering of formula, it is assumed to have been divided by 100. ie., for 12% p.a interest rate, it is 1% per month, so I is 0.01)&lt;br /&gt;ceil(x) ==&gt; smallest integer that is &gt;= x e.g, ceil(1.5) = 2; ceil(2.1) = 3; ceil(2) = 2;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Note: I'm sure there are other websites that help you in calculating this, but this EMI calculator uses my "own" formula to calculate the EMI (don't get scared, it works :D). I will soon post a &lt;a href="http://geraldnaveen.blogspot.com/2009/02/emi-calculation-formula-proof.html"&gt;proof of my derivation&lt;/a&gt; of the formula.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-1583037206658039709?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/1583037206658039709/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/02/loan-emi-calculator.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/1583037206658039709'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/1583037206658039709'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/02/loan-emi-calculator.html' title='Loan EMI calculator'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-3280733459722213601</id><published>2009-02-24T16:20:00.002+05:30</published><updated>2009-02-24T16:25:47.648+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='techy'/><category scheme='http://www.blogger.com/atom/ns#' term='64bit'/><title type='text'>64bit Windows file redirection</title><content type='html'>&lt;div style="text-align: justify;"&gt;64bit Windows needs to be backward compatible with 32bit Windows world, so the existing 32bit Windows apps can run fine on a 64bit Windows.This is a fair and obvious requirement.&lt;br /&gt;&lt;br /&gt;Obviously the system DLLs have to be different for the 32bit and the 64bit apps. As of 32bit windows, the system DLLs were loaded from %windir%\system32 folder (that's why named system32?). But contrary to one's expectation of a %windir%\system64 folder, MS has chosen to use the existing system32 (mind it, it is 32) folder to contain the new 64bit system DLLs (this I believe would have seemed contrary to MS too, but they probably had a architectural constraint that forced them to do so). Ok, so what happens to the 32bit DLLs? this is even more interesting. Unfortunately MS has not renamed the 64bit versions of the existing system DLLs; so the 32bit DLLs cannot be put into the same folder as the 64bit ones (system32); yes, so there is a 64bit version of user32.dll which resides in the system32 folder (you should make sure to remember that system32 is not a 32bit folder and user32.dll does not mean a 32bit DLL -- man this is really ugly). Ok, now that we've no choice, let's get on to the business. The 32bit DLLs reside at %windir%\sysWoW64 folder (did you notice the 64?). WoW64 probably means something like 'Windows on Windows 64', so it kinda make sense once you understand what is wow64 -- but at a first glance and to many, this nomenclature is confusing. You just need to get used to it.&lt;br /&gt;&lt;br /&gt;The problem is not over yet. A 32bit application might try to load a system DLL from %windir%\system32 folder but the 32bit DLLs actually reside in sysWoW64 folder -- so yes, MS has implemented a redirector in WOW64 that redirects any file operation on %windir%\system32 by a 32bit application to %windir%\sysWoW64. A file operation by a 64bit application isn't redirected. But what if a 32bit app wants to access the "real" system32 folder -- then it needs access %windir%\sysnative which is a special virtual directory (shall be used only by 32bit apps) which would get mapped to the "real" 64bit system32 folder. To add to the confusion, there are few folders like catroot, drivers\etc, spool etc., which are not redirected to sysWoW64 and are shared by both the 32bit and 64bit applications. A relief here is that, these files can be accessed by both %windir%\system32\x and %windir%\sysnative\x -- this at least allows the applications to use %windir%\sysnative unambiguously.&lt;br /&gt;&lt;br /&gt;sigh!!!&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-3280733459722213601?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/3280733459722213601/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/02/64bit-windows-file-redirection.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/3280733459722213601'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/3280733459722213601'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/02/64bit-windows-file-redirection.html' title='64bit Windows file redirection'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-4382648762196361583</id><published>2009-02-22T12:10:00.001+05:30</published><updated>2009-02-22T12:10:41.551+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='pravs world'/><title type='text'>Future Is Yours</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;&lt;/strong&gt;Courtesy: &lt;a href="http://pravstalk.com/future-is-yours/"&gt;Pravs World&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;The future belongs to those who are willing to build it.&lt;br /&gt;But you can’t build your future in the future.&lt;br /&gt;You have to build it now.&lt;/p&gt; &lt;p&gt;The more ambitious your dreams, the sooner you must start working on making them real.&lt;br /&gt;The future is yours.&lt;br /&gt;Start today to make it exactly how you want it to be.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-4382648762196361583?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/4382648762196361583/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/02/future-is-yours_22.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/4382648762196361583'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/4382648762196361583'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/02/future-is-yours_22.html' title='Future Is Yours'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-8249831352936649662</id><published>2009-02-20T11:59:00.001+05:30</published><updated>2009-02-20T12:01:40.968+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='techy'/><category scheme='http://www.blogger.com/atom/ns#' term='outlook'/><title type='text'>Outlook 2007 -- a mess</title><content type='html'>&lt;div style="text-align: justify;"&gt;I've been happily checking emails in outlook 2003 and then I got outlook 2007.&lt;br /&gt;&lt;br /&gt;Before I jump into the bigger ones, let me introduce you to some moderate issues. As soon as you open outlook 2007 for the first time, you will be taken aback -- yes the UI seems totally changed; believe me I was first impressed that it was enriched. But not for so long. Just when I click on new mail, I was shocked. The new mail dialog is totally totally (yes I typed it twice) changed. The toolbar is awful with large icons and all the usual stuff in new and different places; it's going to be a treasure-hunt for you even if you are an expert in outlook 2003. I spent at least 10 minutes to figure out how to enable digital signing of my emails. That apart, the title bar of any of the window (this applies to every product in MS office 2007) do not respect the windows's (OS's) theme settings. They show up in their own color and even worse, the active window's title bar color looks sooo dull that you would think that the outlook window is not active even on clicking on it.&lt;br /&gt;&lt;br /&gt;After all those livable issues, there are issues that I'm not able to stand. Outlook 2007 is unacceptably ridiculously slow when it comes to dealing with PST mail files (specially when they are large -- mine is about 2GB). Outlook 2003 was perfectly fine dealing with PSTs of this size. To give you a number, my outlook 2007 takes around 30 minutes to download just 50 mails each of size less than 100KB (totalling to max 5MB) on a Intel Core 2 Duo 2.53GHz laptop with 2GB RAM running over a 1 Gbps network. And over the 30 minutes that it takes to finish, my hard disk is being thrashed almost continously (incase you thought, my hard disk is perfectly defragmented). My only guess is that Outlook 2007 is trying to do some kind of indexing on the incoming emails which is just going overboard because of the mail file size being 2GB or more. I could not find any option to disable that new "feature" to help me here. I managed to find a &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=c262bcfd-1e09-49b6-9003-c4c47539df66&amp;amp;DisplayLang=en"&gt;MS patch&lt;/a&gt; for Outlook 2007 that is supposed to fix this problem (to some extent at least) but no use -- my outlook 2007 still shucks!&lt;br /&gt;&lt;br /&gt;Well, there are some work-arounds like minimizing the size of the PST file by backing up or archiving emails (I once started archiving and had to cancel it after 20-30minutes because I could see no progress except for the harddisk being continually thrashed). But I'm not here to do work arounds for migrating to a suppose-to-be better product at least by its version.&lt;br /&gt;&lt;br /&gt;I'm at a point where I cannot probably turn back to outlook 2003, because I believe the new outlook would have considerably "worked" on the mailfile that the older one would fail to load. I can only see one thing happening: just like any other issues we face with the MS products, I will just get used to it one day!&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-8249831352936649662?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/8249831352936649662/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/02/outlook-2007-mess.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/8249831352936649662'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/8249831352936649662'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/02/outlook-2007-mess.html' title='Outlook 2007 -- a mess'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-9067652230648511302</id><published>2009-02-17T14:10:00.003+05:30</published><updated>2009-02-24T16:26:10.369+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='techy'/><category scheme='http://www.blogger.com/atom/ns#' term='64bit'/><category scheme='http://www.blogger.com/atom/ns#' term='virtualization'/><title type='text'>Running 64bit guest on a 32bit host OS</title><content type='html'>&lt;div style="text-align: justify;"&gt;=== This isn't something new, but worth a post. ===&lt;br /&gt;&lt;br /&gt;Virtualization isn't something new but the concept of mixing the 32bit and 64bit software in the same machine at the same time is a milestone (atleast to me). This wouldn't be possible without a hardware support -- because a 32bit Virtual Machine Monitor (VMM) running on a 32bit host operating system has no way to make the 64bit code of the host OS to run "natively" (the processor does not understand 64bit code in 32bit mode even if it is 64bit capable).&lt;br /&gt;&lt;br /&gt;Intel's Virtualization Technology (VT) provides support for virtualization at the hardware level. Obviously this is going to make the VMM much less complicated than earlier and provide much cleaner separation between the VMs. The VT technology offers lot of flexibility to the VMMs from the hardware level to implement virtualization. One of the most important (rather, otherwise impossible) feature is the support for mixed (32bit, 64bit) VMs to run at the sametime. Needless to say that this requires a "64bit" processor with VT technology enabled. Just VT cannot do magic on a 32bit CPU. In simple terms, VT allows the VMM to switch the processor mode to 32bit or 64bit at run-time as required so the guest OS does not have the restriction on the mode of the host OS.&lt;br /&gt;&lt;br /&gt;My most favourite VM solution is &lt;a href="http://www.vmware.com/products/ws/"&gt;VMware Workstation&lt;/a&gt;; while my favourite free one being &lt;a href="http://www.virtualbox.org/"&gt;VirtualBox&lt;/a&gt;. Both the solutions support VT and can run 64bit guest on 32bit host. (Vmware player is actually free -- but does not allow you to create VMs but only run; Infact VMware client to their ESX server is now open-source -- more &lt;a href="http://www.vmware.com/company/news/releases/view_open_client.html"&gt;info&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;VT feature has to be enabled at the BIOS -- might be available in some advanced configuration. I was surprised to see this option on my machine under 'Security' section in BIOS :)&lt;br /&gt;&lt;br /&gt;Anyways, this is just wonderful!!!&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-9067652230648511302?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/9067652230648511302/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/02/running-64bit-guest-on-32bit-host-os.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/9067652230648511302'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/9067652230648511302'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/02/running-64bit-guest-on-32bit-host-os.html' title='Running 64bit guest on a 32bit host OS'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-4318726826722227515</id><published>2009-02-14T12:33:00.003+05:30</published><updated>2009-02-14T12:37:24.252+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='video'/><category scheme='http://www.blogger.com/atom/ns#' term='techy'/><category scheme='http://www.blogger.com/atom/ns#' term='news'/><title type='text'>An interesting human interface</title><content type='html'>This video from TED shows David Merill demonstrating his invention of a new form of human interface to computers. Interesting!!&lt;br /&gt;&lt;br /&gt;The video says the rest&lt;br /&gt;&lt;br /&gt;&lt;object width="480" height="295"&gt;&lt;param name="movie" value="http://www.youtube.com/v/JP0w9lZoLwU&amp;amp;hl=en&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/JP0w9lZoLwU&amp;amp;hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="295"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-4318726826722227515?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/4318726826722227515/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/02/interesting-human-interface.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/4318726826722227515'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/4318726826722227515'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/02/interesting-human-interface.html' title='An interesting human interface'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-1747631327444679319</id><published>2009-02-10T14:20:00.002+05:30</published><updated>2009-02-10T14:23:21.622+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='car'/><category scheme='http://www.blogger.com/atom/ns#' term='review'/><title type='text'>Car wash in Bangalore</title><content type='html'>&lt;div style="text-align: justify;"&gt;It is actually surprising that there are (almost) no car wash centers readily available in Bangalore. I searched the net and enquired with my friends and colleagues -- but the answer is just the same. It would actually be a good business to start a professional car wash center in Bangalore.&lt;br /&gt;&lt;br /&gt;The only one decent car wash center (as of this writing) is the SLV Car wash center, South End road (Old Kanakapura road), Basavanagudi, Bangalore (near Caritor office). If you drive from South-end circle on the south-end road, at the first intersection, on your right is this place. There is a huge board saying 'Car bath' :)&lt;br /&gt;&lt;br /&gt;I've been using their service for quite sometime and am reasonably happy with them. The charges are little on the higher side though. They charge Rs. 225 (earlier Rs.200) for small sized cars (like Indica, zen, alto, swift etc.,) and Rs. 300 for SUV sized cars (like scorpio, safari etc.,) The wash includes exterior and interior cleaning.&lt;br /&gt;&lt;br /&gt;The sequence of cleaning goes like this:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;While the car is in queue for the body wash, they would bring a mobile vacuum cleaner and clean the interiors; the floor mats will be taken out for washing separately.&lt;/li&gt;&lt;li&gt;Before the car reaches the body wash place, the interiors will be all set.&lt;/li&gt;&lt;li&gt;Then they wash the car with pressurized water (they have provision to even wash under the chassis of the car).&lt;/li&gt;&lt;li&gt;They clean the tyres (no they don't remove them) with soap water.&lt;/li&gt;&lt;li&gt;Now the car is driven into the automatic wash drive bay. The auto-wash first sprays pressurized water all over the car; then a lot of soap oil; then under heavy pressure water cleans it off. For the first time, it's fun to watch the machine doing it.&lt;/li&gt;&lt;li&gt;As the car is driven out of the auto wash area, there is a blower which blows hot air to dry up the car faster; with its aid, the workers manually wipe out the water from the car's body.&lt;/li&gt;&lt;li&gt;Meanwhile, the glass, side-view mirrors are cleaned and the floor mats are put back in place and the car is all set for delivery.&lt;/li&gt;&lt;/ol&gt;All in all I like their work. If there is heavy crowd, they tend to mess-up (like, this time they had put back the floor mats of another car; fortunately I figured out before delivery). Overall the wash is semi-automatic. Even if the interiors are not so neatly done by chance (you can stand with them while they do it if you need it perfectly done), the exterior wash is really good. Nothing can escape from their near 4 times wash with pressurized water. Weekends are usually crowded. They spend around 20-25 mins per car. On an average be ready to spend at least an hour there (including the waiting time). Weekday's early morning might be a better slot.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-1747631327444679319?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/1747631327444679319/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/02/car-wash-in-bangalore.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/1747631327444679319'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/1747631327444679319'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/02/car-wash-in-bangalore.html' title='Car wash in Bangalore'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-5344709448287186862</id><published>2009-02-07T18:43:00.002+05:30</published><updated>2009-02-07T21:30:32.394+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='security'/><title type='text'>Inside an infected laptop</title><content type='html'>&lt;div style="text-align: justify;"&gt;A non-techy friend of mine had bought a laptop 2 months back. As he wasn't aware of installing the OS and software etc., I installed all the required software for him. Just after 2 months, last week, he complained saying "nothing" works. He said that the computer is saying 'you are at risk', 'your system lacks security', 'the winamp is not playing' etc., etc., He was even worried that the speaker is blown up. I got the laptop back from him to set it right for him.&lt;br /&gt;&lt;br /&gt;As I am not a service engineer (who would have formatted the laptop right away and installed everything fresh), I wanted to discover each and every portion of the problem before I recover the laptop. I wanted to have some real-time experience on an infected machine. It was actually funny to see each trojan and worm's behavior.&lt;br /&gt;&lt;br /&gt;The laptop boots and the desktop starts to come up. There is no welcome music -- the sound card driver is gone for a toss. The (fake) Windows security center pops up saying 'Your computer is not running an anti-virus and might be at risk'. Then, I get a popup saying 'your computer is infected, do you want to scan for viruses'. The program calls itself 'Internet Antivirus Pro' and presumes the user is an idiot. Without the user's permission it starts scanning the computer (yes, everytime the user logs in). The funny part is that, the software doesn't bother to read the files at all while scanning. It was clear from the hard-disk usage that no files were read. The software managed to scan thousands of files in less than a minute. One smart thing it did to make the user believe was to really pickup some files from the user's Documents and Settings folder, so it looks as though they were real scans. When you know what it is doing, it is just funny -- but if you are a non-techy user there is no surprise that you would panic. At the end the software asks 'do you want to clean these viruses?'. If you say yes, it takes you directly to a payment site and you will be billed for nothing. Uhh!!&lt;br /&gt;&lt;br /&gt;As I was looking at the billing page for any identity, I could see the Internet Explorer's title bar saying -- "Internet Explorer -- hacked by xyz" (I don't remember the exact name). Aha! The next one. Having known that it is possible to change the IE's title bar in registry, I searched for scripts with the appropriate registry key path (maybe not, I don't want to publish the path here) and hurray! I managed to get hold of the script. Thankfully it was a script and not a binary. The script had successfully managed to propagate itself to all the drives and into the \WINDOWS folder. The script spreads itself through autorun.inf in Windows (autorun.inf seems to create more problems than it solves). Whenever you double-click on a drive, the autorun.inf (if any) on that drive's root folder gets executed. This is the heart of this worm. It copies itself into all other drives, specially looking for any flash disks connected to the computer and replicates. In addition, this script registers itself with Windows to get executed on startup. So anytime, you start the computer with any removable drive, it gets infected too. This worm was later identified as 'VBS:Solow-L (worm)' by avast!.&lt;br /&gt;&lt;br /&gt;The last one is the sound card issue. I believe this is also caused by the IAPro worm that I had discussed earlier. A close look at the device manager revealed that the sound card  is powered by a device driver which is not digitally signed by anyone; and the publisher name seems to say "unknown". The driver was smart enough to claim that it supports the sound card's device instance id so that windows loads this same driver every time -- even if I uninstall/reinstall the hardware or disable/enable the sound card. I had to rollback to the earlier driver to make it work.&lt;br /&gt;&lt;br /&gt;There was no other visible sign on the laptop that needed to be addressed although there were many other resident viruses/worms. Just installed &lt;a href="http://www.avast.com/"&gt;avast!&lt;/a&gt; and it found around 20+ viruses spread out in around 520 files. It isn't surprising me now that a laptop was infected with so many viruses in such a short-time. I think with a little promising note, any website can make an average non-techy user to install their software and get control of their machine. Even a simple popup in the browser stating 'Your computer is infected, do you want to scan for viruses' might do the trick. No wonder phishing has become so easy and common. Lack of fundamental exposure is the issue here, but the users cannot be that easily blamed for their ignorance. After all this isn't their cup of tea. Hmm, computer is a complicated device to understand but a life without it is becoming inevitable in this modern era. Using a computer with no understanding is starting to be dangerous when connected to the Internet!!&lt;br /&gt;&lt;br /&gt;Whatever it is, I enjoyed the exercise :)&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-5344709448287186862?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/5344709448287186862/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/02/inside-infected-laptop.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/5344709448287186862'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/5344709448287186862'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/02/inside-infected-laptop.html' title='Inside an infected laptop'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-173859064644314948</id><published>2009-02-05T14:24:00.003+05:30</published><updated>2009-02-08T10:39:55.330+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='news'/><title type='text'>Unix time approaching a special value on a special day</title><content type='html'>&lt;div style="text-align: justify;"&gt;Unix time or POSIX time is the representation of time as the number of seconds elapsed since January 1, 1970 00:00:00 UTC. Even though it is derived from UNIX, it is widely used across all the platforms including Windows.&lt;br /&gt;&lt;br /&gt;Unix time reaches the value of 1234567890 on this "Valentine's day" (at 2009-02-14 00:01:00 UTC) -- &lt;span style="font-weight: bold;"&gt;A special value on a special day :)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;On a side note, the unix time had earlier reached 1,000,000,000 on 2001-09-09 01:46:40 UTC and will overflow the 32-bit boundary (actually 31-bit + 1 signed bit) in 2038-01-19 around 03:14:07 UTC. This overflow is expected to cause many software that do not handle this overflow, to fail in the year 2038 -- the Y2K38 problem.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-173859064644314948?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/173859064644314948/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/02/unix-time-approaching-special-value-on.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/173859064644314948'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/173859064644314948'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/02/unix-time-approaching-special-value-on.html' title='Unix time approaching a special value on a special day'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-1841223938053672539</id><published>2009-02-03T09:12:00.002+05:30</published><updated>2009-02-03T09:15:10.317+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='pencil arts'/><title type='text'>My pencil arts - #3 - Ghajini</title><content type='html'>turned out to be Ghajini-lookalike ;)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_CWrtfw9yct0/SYe9erBaBOI/AAAAAAAAAP4/Xh1RnwUE3YU/s1600-h/g1.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 376px;" src="http://2.bp.blogspot.com/_CWrtfw9yct0/SYe9erBaBOI/AAAAAAAAAP4/Xh1RnwUE3YU/s400/g1.jpg" alt="" id="BLOGGER_PHOTO_ID_5298411821267027170" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_CWrtfw9yct0/SYe9eoRcX7I/AAAAAAAAAPw/rS6Xs483Hic/s1600-h/g2.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 308px;" src="http://4.bp.blogspot.com/_CWrtfw9yct0/SYe9eoRcX7I/AAAAAAAAAPw/rS6Xs483Hic/s400/g2.jpg" alt="" id="BLOGGER_PHOTO_ID_5298411820528983986" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_CWrtfw9yct0/SYe9eZ7LHGI/AAAAAAAAAPo/2TOVrY6yIrY/s1600-h/g3.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 330px;" src="http://2.bp.blogspot.com/_CWrtfw9yct0/SYe9eZ7LHGI/AAAAAAAAAPo/2TOVrY6yIrY/s400/g3.jpg" alt="" id="BLOGGER_PHOTO_ID_5298411816677481570" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-1841223938053672539?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/1841223938053672539/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/02/my-pencil-arts-3-ghajini.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/1841223938053672539'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/1841223938053672539'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/02/my-pencil-arts-3-ghajini.html' title='My pencil arts - #3 - Ghajini'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_CWrtfw9yct0/SYe9erBaBOI/AAAAAAAAAP4/Xh1RnwUE3YU/s72-c/g1.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-6250105858850853261</id><published>2009-02-01T12:46:00.005+05:30</published><updated>2009-02-01T13:05:29.831+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='techy'/><category scheme='http://www.blogger.com/atom/ns#' term='news'/><title type='text'>MP5 player -- what is it?</title><content type='html'>&lt;div style="text-align: justify;"&gt;On the other day, I was surprised to see some items in ebay named 'MP5 players'. Just like anyone else would, I really thought it would play MP5 format -- I was also feeling bad that I had no idea about the all new MP5 format. So did some search to find out what's new in MP5 than MP4 and here it is.&lt;br /&gt;&lt;br /&gt;There is no such encoding standard as MP5. But Chinese players are available which claim to be a player for an encoding (MP5) that does not exist -- it seems that the only reasoning behind this is ignorance. Had they understood MP3 and MP4, maybe they would have named this better. There is no clear explanation as to why this was named MP5 except for that fact that they wanted to convey that these new players are better than the older MP4 players and the name should be easy to remember and should convey the meaning by itself.&lt;br /&gt;&lt;br /&gt;The new so-called MP5 players play a wide variety of formats specially video, including MP4, MPEG, AVI, RMVB, FLV, WMV etc., Some webpage claimed that RMVB (RealMedia Variable Bit-rate) encoding is the so-called MP5 -- but I don't think so.&lt;br /&gt;&lt;br /&gt;To keep this Chinese nomenclature simple, MP3 players play audio files, MP4 players play audio and video files, MP5 players play audio and more video files. I've personally seen MP4 players that can play some video but not even MP4 -- so forget about what it means to be an MP5 player. The best way to analyze the players is probably by going through the formats supported (if at all you believe the list is correct), because not all MP5 players are same except for the fact that they can't play MP5.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-6250105858850853261?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/6250105858850853261/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/02/mp5-player-what-is-it.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/6250105858850853261'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/6250105858850853261'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/02/mp5-player-what-is-it.html' title='MP5 player -- what is it?'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-3718243267752781015</id><published>2009-01-30T12:42:00.001+05:30</published><updated>2009-01-30T12:44:51.073+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='news'/><category scheme='http://www.blogger.com/atom/ns#' term='science'/><title type='text'>Solar storm -- a worst-case analysis</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:85%;"&gt;=== this is not completely my own info/analysis. this includes info from various articles I read on this topic. ===&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In simple terms, a solar storm releases huge amount of energy in terms of electro magnetic radiations of all wavelengths into space. This outburst is not a rare phenomenon. The earth's magnetic field apparently acts as a shield to the earth in deflecting a considerable amount of energy away from the earth -- thus keeping us safe in most cases. This is one of the reasons why a solar storm is not such a feared threat.&lt;br /&gt;&lt;br /&gt;However, there are times when the solar storm reaches its maximum intensity. It seems that we are not completely safe against such intense storms. So how does it affect us? The intense EM (electro-magnetic) waves will have a huge impact on our ionosphere -- thus affecting all the communication methodologies that we use. This issue to me is not that catastrophic (actually it is, but when compared to the next issue) if the attack was known ahead. When imagining a world without communication during the period of the storm is seeming awful, would you be able to survive in a world without electricity for months/years?? huh!! but that's the next issue.&lt;br /&gt;&lt;br /&gt;It is feared that the intense EM waves/field will have huge interference with the power-grids and blow them up. Be it anywhere in the world, high-voltage step-down transformers are inevitable in delivering the electricity to the household (Theorum studied in school: The lesser the current transmitted, the lesser the loss in energy -- so a high voltage is essential). The EM interference might blow up the heavy duty transformers across the globe. And if that happens, even after the solar storm ceases, there is no way to deliver electricity to the home until the transformers are replaced. It is not just the question of replacing the transformers but it is also about manufacturing those many (millions?) transformers across the globe. That's going to take realll time. And till then there is no electricity!!! OMG!! It seems the only way out of this is to shutdown the distribution of electricity (in effect the transformers) during the solar storm. But a planned total blackout is not a simple task nevertheless. Maybe better than the counterpart?&lt;br /&gt;&lt;br /&gt;From what I read, a previous solar maximum occured in 1958 when there was not a big impact on the human race. Today that's not the case. This isn't a fictional possibility, but might become a reality. The next solar maximum is expected to occur around 2010-2011, so buckle up!&lt;br /&gt;&lt;br /&gt;Along with the &lt;a href="http://lhc.web.cern.ch/lhc/"&gt;LHC&lt;/a&gt; experiment "seeming" unsafe now after the claimed &lt;a href="http://arxiv.org/abs/0810.5515"&gt;discovery&lt;/a&gt; of a huge flaw in their safety assurance theory, I think it is better to enjoy the time we've :) the doomsday does not seem far ahead.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-3718243267752781015?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/3718243267752781015/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/01/solar-storm-worst-case-analysis.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/3718243267752781015'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/3718243267752781015'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/01/solar-storm-worst-case-analysis.html' title='Solar storm -- a worst-case analysis'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-5375647998502887771</id><published>2009-01-28T16:19:00.005+05:30</published><updated>2009-01-28T16:49:58.420+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='techy'/><category scheme='http://www.blogger.com/atom/ns#' term='scribbles'/><title type='text'>Statistics on browsers usage</title><content type='html'>&lt;div style="text-align: justify;"&gt;While I was analyzing some statistics on my blog, I came across this interesting info. Based on so many visitors who visited my blog from more than 100 different cities around the globe in the past two months (since it's inception), this is a summary of the browsers used by the visitors.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Browser               % of users&lt;br /&gt;--------------------------------&lt;br /&gt;firefox               62.09&lt;br /&gt;IE                    28.83&lt;br /&gt;chrome                6.28&lt;br /&gt;safari                1.86&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_CWrtfw9yct0/SYA9DjFYmcI/AAAAAAAAAPg/T_EXDFTWqBQ/s1600-h/browsers.JPG"&gt;&lt;img style="cursor: pointer; width: 336px; height: 171px;" src="http://1.bp.blogspot.com/_CWrtfw9yct0/SYA9DjFYmcI/AAAAAAAAAPg/T_EXDFTWqBQ/s400/browsers.JPG" alt="" id="BLOGGER_PHOTO_ID_5296300292954429890" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I think it is possible that these numbers are slightly skewed because the nature of the users visiting my blog are mostly similar (someone related to a computer profession most likely). However, from the huge gap that is existing between the numbers, I would not expect this order to change even if the numbers do.&lt;br /&gt;&lt;br /&gt;At least to me, the numbers aren't surprising. That's what they deserve.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-5375647998502887771?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/5375647998502887771/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/01/statistics-on-browsers-usage.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/5375647998502887771'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/5375647998502887771'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/01/statistics-on-browsers-usage.html' title='Statistics on browsers usage'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_CWrtfw9yct0/SYA9DjFYmcI/AAAAAAAAAPg/T_EXDFTWqBQ/s72-c/browsers.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-3463537722241757349</id><published>2009-01-21T19:17:00.002+05:30</published><updated>2011-08-30T13:37:48.840+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='finance'/><title type='text'>MoneySaver, HomeSaver, MaxGain -- what's special?</title><content type='html'>&lt;span style="font-size:85%;"&gt;=== specific to India ===&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Disclaimer: I am not providing investment advice or anything of that sort. I'm just sharing my experience and knowledge on this topic. Use your own conscience and decide on your investments. You can consider my inputs but the decision is solely yours. I'm not in any way responsible for any profit/loss that you might make based on the information available in my blog here.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;What are these? These are the names of a special variant in home loans. Inspite of being many years old and having tremendous power/flexibility, this home loan variant usually goes unnoticed.&lt;br /&gt;&lt;br /&gt;Even today, not all banks have this option. Even HDFC does not have one. ICICI calls it MoneySaver, Standard Chartered Bank calls it HomeSaver, HSBC calls it SmartHome and SBI recently launched its own version as MaxGain -- this may not be the complete list. Banks are slowly starting to catch up!&lt;br /&gt;&lt;br /&gt;So whats so special about it? All the usual terms of a standard mortgage loan applies to this loan too. However, along with the loan you would also get a current account associated with it. The exact linkage between the current account and the home loan is being handled by different banks differently -- but whatever it is the essence and the effect of this loan type is the same.&lt;br /&gt;&lt;br /&gt;You would be paying EMIs normally just like how you would on anyother home loan. In addition, you have the option to deposit more money into that current account. Any amount deposited into the current account gets debitted from your home loan's outstanding principal -- interesting? So you would not be paying interest on this portion anymore. In its effect, it is as good as you have prepayed a portion of your home loan without any prepayment penalities. In an investor's perspective, the current account earns your money interest at your home loan interest rate. What is even more interesting is that you have all flexibility to withdraw that money out of the current account anytime you want (maybe you are in a short credit crunch) and deposit it back whenever you want.&lt;br /&gt;&lt;br /&gt;For any loan, the EMIs are devised in such a way that it is slightly more than the interest that you are supposed to be paying. So the rate at which the principal component is repayed is very small in the initial stages. Over time, the gradual reduction in the principal decreases the interest liability, which naturally increases the principal component that you repay in every EMI. These types of loans give you the flexibility to increase your principal repayment as you like it anytime you want -- now, this is a boon.&lt;br /&gt;&lt;br /&gt;In the kind of downturn that we see and with the increased interest rates on loans, these kind of loans would generate stable risk-free return with total liquidity. Any money that you own and that you think cannot generate a return at the rate of interest of your home loan, would atleast have a reasonable place to reside. Even the high interest rate fixed deposits are not close to the home loan interest rates.&lt;br /&gt;&lt;br /&gt;Then why would anyone not take this loan? Yes, there is a catch. This loan is availed at a premium on the interest rate. The interest rate margin might differ from bank to bank but usually it is around 0.5%-0.75% more than the normal interest rate (be it floating or semi-fixed or fixed). I think this loan in benefical for anyone who has a consistent increase in their annual income (ineffect a consistent increase in their repayment capability).&lt;br /&gt;&lt;br /&gt;An example: A 20L loan at 11% p.a for a tenure of 240 months (20 years) will attract an EMI of around 20K per month. If you manage to save 5K more every month and deposit in the current account, the same loan would be closed in just around 140 months (~12 years).&lt;br /&gt;&lt;br /&gt;Atleast consider this option before making your next choice!&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-3463537722241757349?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/3463537722241757349/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/01/moneysaver-homesaver-maxgain-whats.html#comment-form' title='43 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/3463537722241757349'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/3463537722241757349'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/01/moneysaver-homesaver-maxgain-whats.html' title='MoneySaver, HomeSaver, MaxGain -- what&apos;s special?'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><thr:total>43</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-5727885027325446898</id><published>2009-01-19T19:09:00.003+05:30</published><updated>2009-01-19T19:29:54.855+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='techy'/><title type='text'>Backing up backups</title><content type='html'>&lt;div style="text-align: justify;"&gt;Be it a corporate or an individual, backups are essential -- though not many individuals realize until the disaster strikes. This post is only about individuals.&lt;br /&gt;&lt;br /&gt;Are you an individual who regularly backs up your stuff and feel good about it? huh hold on. Maybe not, you might be missing to do something.&lt;br /&gt;&lt;br /&gt;While the number of people even thinking about backing up their stuff is minimal, you don't have to ask about number of people who would want to backup their backups. But in my opinion that's very essential based on the backup medium that you have chosen to backup.&lt;br /&gt;&lt;br /&gt;There are three things one has to worry about:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;The lifetime of the data in the media&lt;/li&gt;&lt;li&gt;The lifetime of the media's technology&lt;/li&gt;&lt;li&gt;Disaster recovery&lt;/li&gt;&lt;/ol&gt;In my opinion, the most common means of backing up is on CDs (and recently DVDs). But how long does the data stays on the medium? The answer depends on a variety of factors including the quality of the DVD, quality of the dvd-writer, storage environment (humidity, temperature etc.,). While there are PIE/PIF tests to measure the quality of the medium, it is still not very easy to manipulate and ensure the life-time of the data on a CD/DVD to an acceptable degree of accuracy. The lifetime can even be as low as few months to as good as 15+ years. On an average the data on a DVD is claimed to live for about 10 years (a side note: there seems to be some manufacturers to seem to be selling high quality DVDs which would last for 100 years -- possibly true on the quality of the medium). So on an average, what you had backed up 5 years ago is only going to live for another 5 years -- scary? but that's the fact.&lt;br /&gt;&lt;br /&gt;This is when backing up the backups seems essential. For peace of mind, you might probably want to backup the backups every few years and shred the old copies -- this to me is the easier and safer approach, but expensive (btw, data is priceless). On the other hand, you can choose a media that has a longer lifetime. Well, I personally don't trust the magnetic hard disks for long-term backups. They have new factors coming in as issues like shock, magnetic exposure etc., (maybe solid state disks can be a future option). So another possible option is to choose an online backup mechanism, where you push your problem to someone else (for maintaining the data) and pay a premium. Yes, the factors of reliability and privacy comes in here. Privacy can be handled by key based cryptography but reliability is still a concern here -- what it the company goes bankrupt? -- nothing new as of today. I've no specific recommendation, neither do I know of enough options.&lt;br /&gt;&lt;br /&gt;The second issue being the lifetime of the media's technology. I would not be happy to have backed up my data for the last 15 years but only to know that I can't read the data because it was all in floppy disks! Floppies are almost extinct now and it is many years since I used a floppy. This is mainly due to data explosion wherein 1.44 MB of data is almost negligible these days. It was fortunate that it turned out to be a smooth move from CD to DVD's as  the technology is similar and the DVD drives were able to read CDs -- this isn't necessarily true as the technology evolves further. I know so many people who still have their marriage videos in VHS cassettes -- you should remember that this was a conscious decision they took to save those moments for the future. Today, either the cassette would have gone bad due to fungal growth or they would not find a VHS player to enjoy the show.  They didn't intend to lose it, but they didn't know. Solid state disks are becoming popular and are seeming to be the best bet for portable use and being read/write'able. The point is not about what would be the next generation storage medium but about the fact that whatever it is, there is no guarantee for it to be backward compatible.&lt;br /&gt;&lt;br /&gt;The last thing is the 'disaster recovery' -- what if there is a physical damage to the medium due to natural calamity, fire, theft etc., This is one of the difficult problems to solve for an individual. The only solution is to keep a copy but that risks privacy. Maybe an online backup coupled with a personal media backup might help...&lt;br /&gt;&lt;br /&gt;So please be aware of the problems upfront; finally the data is yours and the decision is yours.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-5727885027325446898?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/5727885027325446898/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/01/backing-up-backups.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/5727885027325446898'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/5727885027325446898'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/01/backing-up-backups.html' title='Backing up backups'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-7028646007329866965</id><published>2009-01-16T15:45:00.002+05:30</published><updated>2009-01-16T15:49:49.965+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='pencil arts'/><title type='text'>My pencil arts - #2</title><content type='html'>&lt;div style="text-align: justify;"&gt;First 3 photos are photographed, while the last one is scanned. Hence the difference is the color levels.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_CWrtfw9yct0/SXBeb-cMP-I/AAAAAAAAAPA/9VvO1lqah8Q/s1600-h/outline.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 283px;" src="http://2.bp.blogspot.com/_CWrtfw9yct0/SXBeb-cMP-I/AAAAAAAAAPA/9VvO1lqah8Q/s400/outline.jpg" alt="" id="BLOGGER_PHOTO_ID_5291833396871053282" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_CWrtfw9yct0/SXBecbq5xvI/AAAAAAAAAPI/ySwZYWZJo0k/s1600-h/one.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 284px;" src="http://1.bp.blogspot.com/_CWrtfw9yct0/SXBecbq5xvI/AAAAAAAAAPI/ySwZYWZJo0k/s400/one.jpg" alt="" id="BLOGGER_PHOTO_ID_5291833404717385458" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_CWrtfw9yct0/SXBedIiG76I/AAAAAAAAAPQ/0vsFEn3Hcdc/s1600-h/two.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 269px;" src="http://1.bp.blogspot.com/_CWrtfw9yct0/SXBedIiG76I/AAAAAAAAAPQ/0vsFEn3Hcdc/s400/two.jpg" alt="" id="BLOGGER_PHOTO_ID_5291833416760094626" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_CWrtfw9yct0/SXBedHtCQjI/AAAAAAAAAPY/T5a7O64Ofso/s1600-h/three.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 279px;" src="http://1.bp.blogspot.com/_CWrtfw9yct0/SXBedHtCQjI/AAAAAAAAAPY/T5a7O64Ofso/s400/three.jpg" alt="" id="BLOGGER_PHOTO_ID_5291833416537489970" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-7028646007329866965?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/7028646007329866965/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/01/my-pencil-arts-2.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/7028646007329866965'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/7028646007329866965'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/01/my-pencil-arts-2.html' title='My pencil arts - #2'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_CWrtfw9yct0/SXBeb-cMP-I/AAAAAAAAAPA/9VvO1lqah8Q/s72-c/outline.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-1411056597994606206</id><published>2009-01-15T20:51:00.018+05:30</published><updated>2009-02-01T13:17:50.263+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='scribbles'/><title type='text'>Abouticon</title><content type='html'>&lt;span id="about_desc"&gt;&lt;/span&gt;&lt;br /&gt;&lt;img style="width: 94px; height: 75px;" src="http://2.bp.blogspot.com/_CWrtfw9yct0/SW9ViOA0WpI/AAAAAAAAAOQ/Egpk_-mKxeQ/s400/male3.jpg" onmouseover="document.getElementById('about_desc').innerHTML='Male';" onmouseout="document.getElementById('about_desc').innerHTML='';" alt="Male" id="BLOGGER_PHOTO_ID_5291542133549062802" border="0" /&gt;&lt;img style="width: 100px; height: 75px;" src="http://3.bp.blogspot.com/_CWrtfw9yct0/SW9Vhyi6vPI/AAAAAAAAAOI/wcnGHfEEkww/s400/madurai.jpg" onmouseout="document.getElementById('about_desc').innerHTML='';" onmouseover="document.getElementById('about_desc').innerHTML='Madurai' ;" id="BLOGGER_PHOTO_ID_5291542126175894770" border="0" /&gt;&lt;img style="width: 75px; height: 75px;" src="http://3.bp.blogspot.com/_CWrtfw9yct0/SW9VhrCjBmI/AAAAAAAAAOA/ztyBYqalWP8/s400/india.jpg" onmouseout="document.getElementById('about_desc').innerHTML='';" onmouseover="document.getElementById('about_desc').innerHTML='India';" id="BLOGGER_PHOTO_ID_5291542124161074786" border="0" /&gt;&lt;br /&gt;&lt;img style="width: 107px; height: 75px;" src="http://4.bp.blogspot.com/_CWrtfw9yct0/SW9ViRulCaI/AAAAAAAAAOg/9vefUDE1urw/s400/tce.jpg" onmouseout="document.getElementById('about_desc').innerHTML='';" onmouseover="document.getElementById('about_desc').innerHTML='Thiagarajar College of Engineering, Madurai';" id="BLOGGER_PHOTO_ID_5291542134546303394" border="0" /&gt;&lt;img style="width: 50px; height: 75px;" src="http://1.bp.blogspot.com/_CWrtfw9yct0/SW9VAQAyGnI/AAAAAAAAANI/fwcvIPaAl8M/s400/bits-pilani.JPG" onmouseout="document.getElementById('about_desc').innerHTML='';" onmouseover="document.getElementById('about_desc').innerHTML='BITS, Pilani';" id="BLOGGER_PHOTO_ID_5291541549970233970" border="0" /&gt;&lt;br /&gt;&lt;img style="width: 94px; height: 75px;" src="http://2.bp.blogspot.com/_CWrtfw9yct0/SW9VVKDYTeI/AAAAAAAAANo/d_gfs-79glo/s400/computer_engineer.JPG" onmouseout="document.getElementById('about_desc').innerHTML='';" onmouseover="document.getElementById('about_desc').innerHTML='Computer Engineer';" id="BLOGGER_PHOTO_ID_5291541909147766242" border="0" /&gt;&lt;img style="width: 107px; height: 75px;" src="http://3.bp.blogspot.com/_CWrtfw9yct0/SW9VVOQ13ZI/AAAAAAAAANw/K-LbA1Y-UOc/s400/hcl.jpg" onmouseout="document.getElementById('about_desc').innerHTML='';" onmouseover="document.getElementById('about_desc').innerHTML='HCL Technologies';" id="BLOGGER_PHOTO_ID_5291541910277971346" border="0" /&gt;&lt;img style="width: 119px; height: 75px;" src="http://2.bp.blogspot.com/_CWrtfw9yct0/SW9VUz4RyjI/AAAAAAAAANg/cyZbYQRbaFE/s400/cisco.jpg" onmouseout="document.getElementById('about_desc').innerHTML='';" onmouseover="document.getElementById('about_desc').innerHTML='Cisco';" id="BLOGGER_PHOTO_ID_5291541903195621938" border="0" /&gt;&lt;br /&gt;&lt;img style="width: 100px; height: 75px;" src="http://1.bp.blogspot.com/_CWrtfw9yct0/SW9VU46cB_I/AAAAAAAAANY/GW2d6qJ_kZM/s400/chicken.jpg" onmouseout="document.getElementById('about_desc').innerHTML='';" onmouseover="document.getElementById('about_desc').innerHTML='Non-vegetarian';" id="BLOGGER_PHOTO_ID_5291541904546858994" border="0" /&gt;&lt;img style="width: 65px; height: 75px;" src="http://3.bp.blogspot.com/_CWrtfw9yct0/SW9VAL4pCVI/AAAAAAAAANA/A4zPQSd0GNM/s400/beer2.JPG" onmouseout="document.getElementById('about_desc').innerHTML='';" onmouseover="document.getElementById('about_desc').innerHTML='Beer';" id="BLOGGER_PHOTO_ID_5291541548862343506" border="0" /&gt;&lt;br /&gt;&lt;img style="width: 90px; height: 75px;" src="http://2.bp.blogspot.com/_CWrtfw9yct0/SW9VVdlfJ-I/AAAAAAAAAN4/M5G2HyNHkdg/s400/Hero_Honda_Splendor.jpg" onmouseout="document.getElementById('about_desc').innerHTML='';" onmouseover="document.getElementById('about_desc').innerHTML='Splendor';" id="BLOGGER_PHOTO_ID_5291541914391095266" border="0" /&gt;&lt;img style="width: 104px; height: 75px;" src="http://1.bp.blogspot.com/_CWrtfw9yct0/SW9Vp-votgI/AAAAAAAAAO4/Q_VXql38Oqc/s400/XetaBig.jpg" onmouseout="document.getElementById('about_desc').innerHTML='';" onmouseover="document.getElementById('about_desc').innerHTML='Indica Xeta GLG';" id="BLOGGER_PHOTO_ID_5291542266889418242" border="0" /&gt;&lt;img style="width: 94px; height: 75px;" src="http://3.bp.blogspot.com/_CWrtfw9yct0/SW9VAMHRGHI/AAAAAAAAAM4/kqJTVmjNwp0/s400/asus-p320-stylus.jpg" onmouseout="document.getElementById('about_desc').innerHTML='';" onmouseover="document.getElementById('about_desc').innerHTML='ASUS P320 - Windows Mobile';" id="BLOGGER_PHOTO_ID_5291541548923689074" border="0" /&gt;&lt;img style="width: 104px; height: 75px;" src="http://2.bp.blogspot.com/_CWrtfw9yct0/SW9Vps7iFzI/AAAAAAAAAOw/9i3_jlk5--A/s400/vodafone.jpg" onmouseout="document.getElementById('about_desc').innerHTML='';" onmouseover="document.getElementById('about_desc').innerHTML='Vodafone';" id="BLOGGER_PHOTO_ID_5291542262107477810" border="0" /&gt;&lt;br /&gt;&lt;img style="width: 123px; height: 75px;" src="http://3.bp.blogspot.com/_CWrtfw9yct0/SW9VpYhoAXI/AAAAAAAAAOo/WpWhyn6xLGw/s400/TT2.jpg" onmouseout="document.getElementById('about_desc').innerHTML='';" onmouseover="document.getElementById('about_desc').innerHTML='Table tennis';" id="BLOGGER_PHOTO_ID_5291542256630104434" border="0" /&gt;&lt;img style="width: 65px; height: 75px;" src="http://1.bp.blogspot.com/_CWrtfw9yct0/SW9U_-PAVKI/AAAAAAAAAMw/2ch3q_Z2weI/s400/artist.jpg" onmouseout="document.getElementById('about_desc').innerHTML='';" onmouseover="document.getElementById('about_desc').innerHTML='Drawing';" id="BLOGGER_PHOTO_ID_5291541545198048418" border="0" /&gt;&lt;img style="width: 112px; height: 75px;" src="http://4.bp.blogspot.com/_CWrtfw9yct0/SW9VAsscfwI/AAAAAAAAANQ/4ASweEQmf6E/s400/carrom.jpg" onmouseout="document.getElementById('about_desc').innerHTML='';" onmouseover="document.getElementById('about_desc').innerHTML='Carroms';" id="BLOGGER_PHOTO_ID_5291541557669560066" border="0" /&gt;&lt;img style="width: 100px; height: 75px;" src="http://2.bp.blogspot.com/_CWrtfw9yct0/SW9ViEdQONI/AAAAAAAAAOY/g5kYF0Zzrns/s400/swim1.jpg" onmouseout="document.getElementById('about_desc').innerHTML='';" onmouseover="document.getElementById('about_desc').innerHTML='Swimming';" id="BLOGGER_PHOTO_ID_5291542130983975122" border="0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-1411056597994606206?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/1411056597994606206/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/01/about-me.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/1411056597994606206'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/1411056597994606206'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/01/about-me.html' title='Abouticon'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_CWrtfw9yct0/SW9ViOA0WpI/AAAAAAAAAOQ/Egpk_-mKxeQ/s72-c/male3.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-4255268571113933528</id><published>2009-01-15T14:24:00.005+05:30</published><updated>2009-01-15T14:40:59.389+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='pencil arts'/><title type='text'>My pencil arts - #1</title><content type='html'>&lt;div style="text-align: justify;"&gt;This is one of my pencil arts. People who know me in orkut would have already seen this. Just publishing here to make my blog complete :) I will bring in my other pencil arts too.&lt;br /&gt;&lt;br /&gt;[Click on the images to see a high resolution image]&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_CWrtfw9yct0/SW758xnYeqI/AAAAAAAAAMQ/eMK4NxzAMPs/s1600-h/man_outline.jpg"&gt;&lt;img style="cursor: pointer; width: 354px; height: 400px;" src="http://4.bp.blogspot.com/_CWrtfw9yct0/SW758xnYeqI/AAAAAAAAAMQ/eMK4NxzAMPs/s400/man_outline.jpg" alt="" id="BLOGGER_PHOTO_ID_5291441434712898210" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_CWrtfw9yct0/SW758-18jMI/AAAAAAAAAMY/Mb9qRDdRuAQ/s1600-h/main_2.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 372px;" src="http://4.bp.blogspot.com/_CWrtfw9yct0/SW758-18jMI/AAAAAAAAAMY/Mb9qRDdRuAQ/s400/main_2.jpg" alt="" id="BLOGGER_PHOTO_ID_5291441438263643330" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_CWrtfw9yct0/SW758ywZ2EI/AAAAAAAAAMg/Md1pJ7FqAHA/s1600-h/man3.jpg"&gt;&lt;img style="cursor: pointer; width: 352px; height: 400px;" src="http://1.bp.blogspot.com/_CWrtfw9yct0/SW758ywZ2EI/AAAAAAAAAMg/Md1pJ7FqAHA/s400/man3.jpg" alt="" id="BLOGGER_PHOTO_ID_5291441435019171906" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_CWrtfw9yct0/SW759PzDA1I/AAAAAAAAAMo/a2R9mZjhA0c/s1600-h/man4.jpg"&gt;&lt;img style="cursor: pointer; width: 314px; height: 400px;" src="http://4.bp.blogspot.com/_CWrtfw9yct0/SW759PzDA1I/AAAAAAAAAMo/a2R9mZjhA0c/s400/man4.jpg" alt="" id="BLOGGER_PHOTO_ID_5291441442814886738" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-4255268571113933528?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/4255268571113933528/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/01/my-pencil-arts-1.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/4255268571113933528'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/4255268571113933528'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/01/my-pencil-arts-1.html' title='My pencil arts - #1'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_CWrtfw9yct0/SW758xnYeqI/AAAAAAAAAMQ/eMK4NxzAMPs/s72-c/man_outline.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-1355762317184378584</id><published>2009-01-13T20:05:00.001+05:30</published><updated>2009-01-13T20:07:29.256+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='scribbles'/><title type='text'>The great indian petrol bunk fraud</title><content type='html'>&lt;div style="text-align: justify;"&gt;This fraud is nothing new to most people who fill petrol to their bikes/cars in India. Neither to me -- but a recent recurrence was too enraging that I want to atleast shout out here in my blog.&lt;br /&gt;&lt;br /&gt;For those very few who are not aware of this fraud (most likely because of not personally going to fill petrol), here is the how it works:&lt;br /&gt;&lt;br /&gt;1. Assume a person in front of you fills petrol for Rs 100.&lt;br /&gt;&lt;br /&gt;2. You go next and ask him to fill in the petrol for Rs. 200 (here is the catch, they would be able to do this easily and successfully when your fill amount is higher than the previous one).&lt;br /&gt;&lt;br /&gt;3. He shows you zero and exactly then, a guy standing on the opposite side of the meter across your vehicle will call you 'sir how much sir' or 'sir is it by card or cash sir' or 'sir sir sir...' until you get distracted and turns towards him.&lt;br /&gt;&lt;br /&gt;4. If you aren't aware of this trick, you would naturally react to your impulses and turn towards him (away from the meter) -- at this point, the person who is (actually pretending to be) filling just presses a button on the machine which shows the previous reading (which is Rs.100).&lt;br /&gt;&lt;br /&gt;5. When you turn back, he pretends as if he has already filled for Rs.100. You would obviously say it is for Rs.200.&lt;br /&gt;&lt;br /&gt;6. With the happiness of looting Rs.100 in a matter of few seconds, he would again configure the meter and fill in for Rs.100 more.&lt;br /&gt;&lt;br /&gt;That's the end of the trick and you have just lost Rs.100. We would feel like an idiot and he is ready for the next attack. Someone is waiting in queue to get looted.&lt;br /&gt;&lt;br /&gt;Having explained the fraud, let me come to the recent incident. I'm very much used to this fraud that I've never been cheated like this (except once -- when I learnt it the hard way). Last week, I was in a petrol pump (Beware: it is the BP petrol pump in udipi garden signal, BTM 1st stage, Bangalore) in queue. I could clearly see this fraud happening just in front of me and unfortunately that guy infact got cheated. I was atleast 5 bikes away that I could not do anything about it (maybe I should have). In some ways it was very enlightening to see those people's expressions at the time of fraud. The guy after looting Rs. 100 immediately became so polite to the bike rider; after all he is the one paid Rs.100 for nothing in no time. I felt like kicking him in his face. There is one guy who keeps a look out for the amount that people are going to fill so he can time their attacks. And if you somehow manage to crack their effort, they look at you like enemies. grrrr..&lt;br /&gt;&lt;br /&gt;Ok, then came my turn in the queue. The guy in front of me filled in for Rs.100. I wanted them to try this against me and so asked him to fill in for Rs. 200. Ok, all set. This guy shows me the meter reading zero and puts in the nozzle into my bike's petrol tank. I could see the other guy coming around me to distract. I was just looking at the meter, it wasn't moving at all. The other guy calls me, I showed no response while still looking at the meter. After a delay of around 10 seconds, there was still no petrol and no meter movement (as he was waiting for me to turn around, to press that magic button to get him Rs.100 in no time). At this point, I really got pissed off and I shouted at him that I know what he was trying to do. He pretended as if he is innocent. Then I told him that I even noticed that they cheated a guy infront of me and I'm going to complain about this. This is when I got the shock of my life. He simply laughs at me and tells me 'Talk in Kannada, no english, no hindi'. I'm sure he understood whatever I said, but found an easy and daring escape. The kind of dare he had in his tone was so shocking; both were just laughing at me --- I should admit I felt like an idiot. After staying in bangalore for 4 years, I regreted that I never bothered to learn kannada (atleast bad words so I could have bashed them). The kind of confidence he had in this act, shows that he is not doing that alone or just with two. Almost every other filler in the bunk does this, and every bunk does this. If someone complains to their manager, they will play an immediate drama and bash that employee or even fire him infront of us -- but nothing really happens. I believe someone sitting in a AC room also has a stake in this.&lt;br /&gt;&lt;br /&gt;It is really disgusting that we really have to fight for basic loyalty and that we are unable to do anything against such a common fraud. It has become so common and widespread that if you are ever cheated, instead of blaming them you would be blamed for your negligence.&lt;br /&gt;&lt;br /&gt;I'm sure just like me you might have heard and experienced a number of such incidents.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-1355762317184378584?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/1355762317184378584/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/01/great-indian-petrol-bunk-fraud.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/1355762317184378584'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/1355762317184378584'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/01/great-indian-petrol-bunk-fraud.html' title='The great indian petrol bunk fraud'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-1398821577857881239</id><published>2009-01-12T12:42:00.002+05:30</published><updated>2009-02-14T12:36:33.811+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='video'/><category scheme='http://www.blogger.com/atom/ns#' term='tamil'/><category scheme='http://www.blogger.com/atom/ns#' term='scribbles'/><title type='text'>EKSI -- an acronym of recent times</title><content type='html'>&lt;div style="text-align: justify;"&gt;Recently I came across this acronymn EKSI being used widely in forums (Later I realized it was only used by those who know tamil). I had no clue as to what it means and googling does not reveal anything obvious.&lt;br /&gt;&lt;br /&gt;Finally I had to ask one of those guys who used this and it turns out to be the abbreviation for the most famous tamil dialogue 'Enna Koduma Saravanan Idhu'  --- EKSI :)&lt;br /&gt;&lt;br /&gt;For those who don't understand tamil, this is a dialogue said by actor Prabhu to actor Rajini Kanth in the film Chandramuki (tamil). This dialogue became so famous and is used in various contexts generally to insult a work in a humorous tone :)&lt;br /&gt;&lt;br /&gt;Watch the original clip and actor Prabhu's reaction: LOL!&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/qjVp2NDKKkg&amp;amp;hl=en&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/qjVp2NDKKkg&amp;amp;hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-1398821577857881239?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/1398821577857881239/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/01/eksi-acronym-of-recent-times.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/1398821577857881239'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/1398821577857881239'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/01/eksi-acronym-of-recent-times.html' title='EKSI -- an acronym of recent times'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-9214117691282767914</id><published>2009-01-09T17:43:00.003+05:30</published><updated>2009-01-09T17:50:01.747+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='techy'/><category scheme='http://www.blogger.com/atom/ns#' term='outlook'/><title type='text'>Creating custom Holiday (.hol) file for MS Outlook</title><content type='html'>&lt;div style="text-align: justify;"&gt;A holiday file (.hol) is used to add/share important dates in Microsoft Outlook calendar. This not only helps easing the process of adding the holidays, but also makes it easy to share them across with your colleagues or friends. eg., you can create a holiday file for 'holidays for the year 2009' and share it with your friends or create 'birthdays in our family' and share it without your family members.&lt;br /&gt;&lt;br /&gt;A holiday file can have 1 or more sections each separated by an empty line. Each section is of the following form:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;[Name of the section]&amp;lt;number of elements&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&amp;lt;Name of the holiday&amp;gt;, yyyy/mm/dd&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&amp;lt;Name of the holiday&amp;gt;, yyyy/mm/dd&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;(as many entries as the number of elements)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&amp;lt;next section&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A sample holiday file with only one section will look like, (sample covers only upto Apr 2009)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;[Public Holidays 2009]5&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;New Year Day,2009/01/01 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;Pongal,2009/01/14 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;Republic Day,2009/01/26 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;Ugadi,2009/03/27 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;Good Friday,2009/04/10 &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You can create as many sections as you need like this.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Installing holidays from a holiday file:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Installing holidays into your outlook is very simple. Make sure outlook is running. Double click the .hol file. A popup is opened which displays all the sections in your .hol holiday file. You can select the sections you want to import and all the associated holidays get added into your outlook calendar. Thats it.&lt;br /&gt;&lt;br /&gt;If my mistake you tried to add the same section again, Outlook asks you if you want to add it again. Remember that, adding it again does not mean replacing it. If you add a section again, you will see duplicate entries in holidays for that section in your calendar.&lt;br /&gt;&lt;br /&gt;Now, you can create your own holiday files as necessary and distribute them.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-9214117691282767914?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/9214117691282767914/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/01/creating-custom-holiday-hol-file-for-ms.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/9214117691282767914'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/9214117691282767914'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/01/creating-custom-holiday-hol-file-for-ms.html' title='Creating custom Holiday (.hol) file for MS Outlook'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-84959879314755046</id><published>2009-01-09T11:39:00.001+05:30</published><updated>2009-01-09T11:40:50.230+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='pravs world'/><title type='text'>Think Twice, Act Wise</title><content type='html'>&lt;p&gt;Courtesy: &lt;a href="http://pravstalk.com/2009/01/07/think-twice-act-wise/"&gt;Pravs World&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Don’t make promise when you are in joy.&lt;br /&gt;Don’t reply when you are sad.&lt;br /&gt;Don’t take decision when you are angry.&lt;/p&gt; &lt;p&gt;Think twice., Act wise.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-84959879314755046?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/84959879314755046/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/01/think-twice-act-wise.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/84959879314755046'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/84959879314755046'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/01/think-twice-act-wise.html' title='Think Twice, Act Wise'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-9097501674878178260</id><published>2009-01-08T18:46:00.011+05:30</published><updated>2009-08-29T18:35:31.568+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='winmo'/><category scheme='http://www.blogger.com/atom/ns#' term='myapps'/><title type='text'>Caller Location Info v 0.2 for WinMo</title><content type='html'>&lt;div style="text-align: justify;"&gt; Licensed under &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://geraldnaveen.blogspot.com/2009/01/geraldapp-license.html"&gt;&lt;img style="border: 0px none ; cursor: pointer; width: 100px; height: 25px; position: relative; top: 10px;" src="http://sites.google.com/site/geraldnaveen/images/gerald_app.bmp" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;[Update: 29-Aug-2009] A recent version of this app is available. See &lt;a href="http://geraldnaveen.blogspot.com/2009/08/caller-location-info-v-03-for-winmo.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Here is the next version of my Caller Location Info app for Windows Mobile (for India).&lt;br /&gt;&lt;br /&gt;After I had release v 0.1, there was too many requests for making this app work for countries outside India and for landlines. Unfortunately, it is not feasible to implement a "similar" approach for most countries outside India. Please note that I do not claim that it is not possible at all. So when I got time, I extended the app for showing the city names for landlines -- based on the STD codes in India.&lt;br /&gt;&lt;br /&gt;The installation instructions and other properties remain the same. See the &lt;a href="http://geraldnaveen.blogspot.com/2009/01/caller-location-info-v-01-for-winmo.html"&gt;earlier post&lt;/a&gt; for that.&lt;br /&gt;&lt;br /&gt;Snapshots: (v 0.2)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_CWrtfw9yct0/SWNs5793hiI/AAAAAAAAALo/VIs-R5HA3rQ/s1600-h/inco.JPG"&gt;&lt;img style="cursor: pointer; width: 241px; height: 321px;" src="http://4.bp.blogspot.com/_CWrtfw9yct0/SWNs5793hiI/AAAAAAAAALo/VIs-R5HA3rQ/s400/inco.JPG" alt="" id="BLOGGER_PHOTO_ID_5288190130068620834" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_CWrtfw9yct0/SWNtA7ULJ9I/AAAAAAAAALw/FEJSFKeY-LY/s1600-h/outgo2.JPG"&gt;&lt;img style="cursor: pointer; width: 240px; height: 320px;" src="http://4.bp.blogspot.com/_CWrtfw9yct0/SWNtA7ULJ9I/AAAAAAAAALw/FEJSFKeY-LY/s400/outgo2.JPG" alt="" id="BLOGGER_PHOTO_ID_5288190250152830930" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Download the &lt;a href="http://sites.google.com/site/geraldnaveen/winmo/callerinfo/GeraldCallerLocation.v0.2.CAB"&gt;CAB installer&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Enjoy!&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-9097501674878178260?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/9097501674878178260/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/01/caller-location-info-v-02-for-winmo.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/9097501674878178260'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/9097501674878178260'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/01/caller-location-info-v-02-for-winmo.html' title='Caller Location Info v 0.2 for WinMo'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_CWrtfw9yct0/SWNs5793hiI/AAAAAAAAALo/VIs-R5HA3rQ/s72-c/inco.JPG' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-3574163365653694177</id><published>2009-01-07T20:34:00.007+05:30</published><updated>2009-02-26T15:40:11.933+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='license'/><category scheme='http://www.blogger.com/atom/ns#' term='helper'/><title type='text'>GeraldApp License</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://sites.google.com/site/geraldnaveen/images/gerald_app.bmp"&gt;&lt;img style="border: 0px none ; cursor: pointer; width: 100px; height: 25px;" src="http://sites.google.com/site/geraldnaveen/images/gerald_app.bmp" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;GeraldApp License&lt;br /&gt;&lt;br /&gt;version 1.0, Jan 2009&lt;br /&gt;Copyright © 2009 Gerald Naveen (&lt;a href="http://geraldnaveen.blogspot.com/" target="_blank"&gt;http://geraldnaveen.blogspot.&lt;wbr&gt;com&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;The license imposes the following Terms and Conditions:&lt;br /&gt;&lt;br /&gt;1. The application is free (free as in free beer; not free as in free speech) for personal use. Any commercial use in any form is strictly not permitted.&lt;br /&gt;&lt;br /&gt;2. You are free to copy/distribute this application provided your distribution carries this license "as-is" in a TXT file.&lt;br /&gt;&lt;br /&gt;3. The application is originally developed "only" for my personal use. I share this application for the benefit of others, "as-is" without any warranty. I'm not in anyways responsible for any damage of any sort caused as a result of using this application. Use at your own risk.&lt;br /&gt;&lt;br /&gt;4. I respect open source and support it, but I'm not willing to share the source of this application to be on the safer side and not to attract any legal violations from my current or future employer(s). Please understand and do not ask for source.&lt;br /&gt;&lt;br /&gt;5. The features of the application are based on my own requirements. You are free to comment on the features and enhancements at my blog. However, I'm not committed to making any change or even bug fixes, unless I find the need and time.&lt;br /&gt;&lt;br /&gt;6. Any re-post of this application in a different website should include a HTTP URL reference to the corresponding page of my application in my blog. I find my applications being re-posted on various blogs/forums without any reference to me. This is not permitted.&lt;br /&gt;&lt;br /&gt;Any reference to GeraldApp license without a version number will refer to this version (v 1.0) of the license.&lt;br /&gt;&lt;br /&gt;=== end of license ===&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-3574163365653694177?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/3574163365653694177/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/01/geraldapp-license.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/3574163365653694177'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/3574163365653694177'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/01/geraldapp-license.html' title='GeraldApp License'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-7489070639909829996</id><published>2009-01-06T11:12:00.000+05:30</published><updated>2009-01-06T11:13:20.507+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='pravs world'/><title type='text'>Ask For More</title><content type='html'>&lt;p&gt;Courtesy: &lt;a href="http://pravstalk.com/2009/01/05/ask-for-more/"&gt;Pravs World&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;It is not because things are difficult, that we do not dare.&lt;br /&gt;It is because we do not dare, they seem difficult to us.&lt;/p&gt; Dare to take on your difficulties.&lt;br /&gt;Once conquered, you will ask only for more.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-7489070639909829996?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/7489070639909829996/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/01/ask-for-more.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/7489070639909829996'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/7489070639909829996'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/01/ask-for-more.html' title='Ask For More'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7343912.post-5459556710491242548</id><published>2009-01-05T21:14:00.004+05:30</published><updated>2009-01-05T21:52:08.350+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='security'/><title type='text'>Botnets -- a dangerous threat</title><content type='html'>&lt;div style="text-align: justify;"&gt;Botnets is a short form for network of robots. In this context, a robot (or a bot) is really a computer program. A bot in theory is not malicious always. Theoretically bots re computer programs meant for performing an automated task without any need for user interaction. But they have become a real scope for security threat these days. A maliciously coded bot just distributes itself across the network all over and tries to do the damage.&lt;br /&gt;&lt;br /&gt;End-user computers might be highly vulnerable to viruses/malwares due to the ignorance of the users or being lethargic. However most servers are very well protected by qualified admins from any such vulnerabilities. But any server is still vulnerable to Denial of Service (Dos) attacks. Especially Distributed DoS is almost a impossible problem to solve based on the level of distribution. IP blacklisting is impractical in DDoS. This is the vulnerability that the botnets mostly exploit. They just bombard the server with requests that the server has to go down or become so slow that it's as good as dead.&lt;br /&gt;&lt;br /&gt;The most worrisome part of botnets is that they are spread all over before they begin the damage. Even yours and my computer might have one or more botnets without we knowing about it. Botnets are difficult to identify as they mostly do not harm the infected computer -- after all that is not the intention. They use your computer as a shooting shoulder.&lt;br /&gt;&lt;br /&gt;So how do they know when to attack and whom? They have the concept of command and control. There is a botnet commander who issues commands to all the botnets and assigns their next job. No, it is not possible to blacklist the commander from the network, as over time the hackers have matured and now there is usually a swarm of commanders. The commanders themselves are usually distributed ; there is usually a super commander which leads the swarm and they know how to elect a new superior if the existing one is found missing (probably shot down).&lt;br /&gt;&lt;br /&gt;It is feared that there are thousands (or even more) of such botnets (not just bots, but networks) around the Internet -- and this is still growing at a fast pace. It is very difficult to spot the botnets as they reside on end-user computers as innocent and invisible applications. I read that some new versions of AntiVirus products detect the presence of bots on the end-user side -- but not sure on what basis (maybe rookits?) and how effective are they. So even though the botnets exist for sure, the extent to which they have spread in the Internet is still a dreadful speculation.&lt;br /&gt;&lt;br /&gt;Now comes the scary part. It is feared that these botnets might form the future of cyber war. In years to come, these might have occupied billions of computers all over the world and someone remotely might have full control over all those computers and do what they want! With the pace of development in technologies and the reliance on the Internet for various services, in the future, these botnets might not just cause financial, technological, political damage but may even cause human casualty. It is also feared that some techies are cultivating these botnets all over the world and are renting it out on specific targets for a price!!! This apparently is a business!&lt;br /&gt;&lt;br /&gt;It is really worrying that a wonderful platform like the Internet is being misused upon even before the technologies mature enough for the benefit of the mankind -- at which point, the damages that these culprints can cause could be vital!! The problem is complicated because it is  to protect all the end-user computers; not everyone is aware of even the simplest of attacks, forget about botnets. In my opinion, this problem has to be addressed from being outside the endpoint security to be really robust. It's high time that security experts think of some fool-proof mechanisms to protect against these propagations and attacks -- I'm sure they know even without me having to tell them! I'm scared!&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7343912-5459556710491242548?l=geraldnaveen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geraldnaveen.blogspot.com/feeds/5459556710491242548/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://geraldnaveen.blogspot.com/2009/01/botnets-dangerous-threat.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/5459556710491242548'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7343912/posts/default/5459556710491242548'/><link rel='alternate' type='text/html' href='http://geraldnaveen.blogspot.com/2009/01/botnets-dangerous-threat.html' title='Botnets -- a dangerous threat'/><author><name>Gerald Naveen</name><uri>http://www.blogger.com/profile/18255818071617217134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_CWrtfw9yct0/STZH4SF0yfI/AAAAAAAAAC0/t3uGbWyFebc/S220/blogpic1.JPG'/></author><thr:total>0</thr:total></entry></feed>
