<?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-3339269982693982986</id><updated>2012-01-07T20:58:51.986-05:00</updated><category term='linux'/><category term='zenity'/><category term='netconnect'/><category term='emacs'/><category term='airtel'/><category term='research'/><category term='python travel basemap geopy flickr'/><category term='lightning'/><category term='kdialog'/><category term='kubuntu'/><category term='Arch'/><category term='eepee'/><category term='magic'/><category term='VirtualBox'/><category term='htc'/><category term='bash'/><category term='xmonad'/><category term='hardy'/><category term='dcop'/><category term='pubmed'/><category term='Gnome'/><category term='pdf'/><category term='thinkfinger'/><category term='presentation'/><category term='intrepid'/><category term='kde4'/><category term='liveUSB'/><category term='thinkpad'/><category term='tags'/><category term='RSS'/><category term='android'/><category term='dzen'/><category term='python'/><category term='Eeepc'/><category term='user interface'/><category term='dzen xmonad gmail'/><category term='google reader'/><category term='jaunty'/><category term='imagemagick'/><category term='Wmctrl'/><category term='Ubuntu'/><category term='command line'/><category term='thunderbird'/><category term='xmonad ubuntu'/><category term='google calendar'/><category term='gmail'/><category term='medicine'/><title type='text'>Reach beyond Grasp</title><subtitle type='html'>A potpourri of ideas on medicine, research, science and open source</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://reachbeyondgrasp.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3339269982693982986/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://reachbeyondgrasp.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Raja</name><uri>http://www.blogger.com/profile/17138871434315349022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>35</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3339269982693982986.post-3687255065212437610</id><published>2011-11-10T00:21:00.008-05:00</published><updated>2012-01-07T20:58:52.110-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='emacs'/><title type='text'>Building Emacs 24 on Ubuntu 11.10</title><content type='html'>You can install emacs24 from the Damien Cassou's &lt;a href="https://launchpad.net/~cassou/+archive/emacs"&gt;repository&lt;/a&gt; for emacs-snapshot packages. However, I wanted to try building emacs 24 myself from source. I started off from instructions &lt;a href="http://avdi.org/devblog/2011/08/08/emacs-reboot-1-beginnings/"&gt;here&lt;/a&gt; and had to install a few additional packages to get all the build dependencies.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;# Get emacs source&lt;br /&gt;sudo apt-get install bzr&lt;br /&gt;bzr branch bzr://bzr.savannah.gnu.org/emacs/trunk emacs&lt;br /&gt;&lt;br /&gt;# some dependencies&lt;br /&gt;sudo apt-get install libgtk-3-dev&lt;br /&gt;sudo apt-get install libgif-dev libxpm-dev&lt;br /&gt;&lt;br /&gt;# for makeinfo&lt;br /&gt;sudo apt-get install texinfo&lt;br /&gt;&lt;br /&gt;# configure complains about missing libtiff&lt;br /&gt;sudo apt-get install libtiff4-dev&lt;br /&gt;&lt;br /&gt;# configure and build (WARNING: This is to build with gtk3 as suggested in the original post)&lt;br /&gt;cd emacs&lt;br /&gt;./autogen.sh&lt;br /&gt;./configure --with-x-toolkit=gtk3&lt;br /&gt;make&lt;br /&gt;src/emacs &lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;And hurray !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3339269982693982986-3687255065212437610?l=reachbeyondgrasp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reachbeyondgrasp.blogspot.com/feeds/3687255065212437610/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3339269982693982986&amp;postID=3687255065212437610' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3339269982693982986/posts/default/3687255065212437610'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3339269982693982986/posts/default/3687255065212437610'/><link rel='alternate' type='text/html' href='http://reachbeyondgrasp.blogspot.com/2011/11/building-emacs-24-on-ubuntu-1110.html' title='Building Emacs 24 on Ubuntu 11.10'/><author><name>Raja</name><uri>http://www.blogger.com/profile/17138871434315349022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3339269982693982986.post-4618285383340231333</id><published>2011-08-08T05:26:00.002-05:00</published><updated>2011-08-08T07:28:30.436-05:00</updated><title type='text'>Pymongo to connect with Mongolab</title><content type='html'>&lt;a href="https://mongolab.com/home/"&gt;Mongolab&lt;/a&gt; provides hosting of Mongodb databases including a free plan with upto 240 MB usage. It took a little searching around to find how to use &lt;a href="http://api.mongodb.org/python/"&gt;pymongo&lt;/a&gt; to interact with a database on mongolab. So here is some demo code for future reference. Tested with Python 2.6 and pymongo 1.7 on Ubuntu 10.10.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;script src="https://gist.github.com/1131352.js?file=mongolab_demo.py"&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3339269982693982986-4618285383340231333?l=reachbeyondgrasp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reachbeyondgrasp.blogspot.com/feeds/4618285383340231333/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3339269982693982986&amp;postID=4618285383340231333' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3339269982693982986/posts/default/4618285383340231333'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3339269982693982986/posts/default/4618285383340231333'/><link rel='alternate' type='text/html' href='http://reachbeyondgrasp.blogspot.com/2011/08/pymongo-to-connect-with-mongolab.html' title='Pymongo to connect with Mongolab'/><author><name>Raja</name><uri>http://www.blogger.com/profile/17138871434315349022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3339269982693982986.post-4896671725682841488</id><published>2009-12-14T09:42:00.002-05:00</published><updated>2009-12-14T09:55:02.153-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='netconnect'/><title type='text'>Reliance netconnect usage - GUI version</title><content type='html'>Follow up from previous post &lt;a href="http://reachbeyondgrasp.blogspot.com/2009/10/reliance-netconnect-check-your-usage.html"&gt;here&lt;/a&gt;.&lt;br /&gt;At present, checking the bandwidth usage statistics for Reliance netconnect is clunky and laborious. In the previous post, I published a python script that I use to get the usage. To me, it seemed unnecessary to use a GUI for this. However, judging by the number of downloads, a lot of people have the need for this. And on windows, these people are not finding it as easy to install python and run the script from a terminal.&lt;br /&gt;So responding to the demand, &lt;a href="http://ggeek.googlecode.com/files/reliance_usage.exe"&gt;here&lt;/a&gt; is a GUI version. Remember to input the phone number with 0 (zero) as the first digit. The phone number and billing date are stored for subsequent uses. This was compiled and tested on windows XP.&lt;br /&gt;For users with python and wxpython installed, you can download the script &lt;a href="http://ggeek.googlecode.com/files/reliance_usage_gui.py"&gt;here&lt;/a&gt; and run it for the gui.&lt;br /&gt;Any comments are welcome.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Credits:&lt;/span&gt;&lt;br /&gt;Compiled with &lt;a href="http://www.pyinstaller.org/"&gt;PyInstaller&lt;/a&gt;&lt;br /&gt;Icons from &lt;a href="http://tea00.deviantart.com/art/pure-75540757"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3339269982693982986-4896671725682841488?l=reachbeyondgrasp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reachbeyondgrasp.blogspot.com/feeds/4896671725682841488/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3339269982693982986&amp;postID=4896671725682841488' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3339269982693982986/posts/default/4896671725682841488'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3339269982693982986/posts/default/4896671725682841488'/><link rel='alternate' type='text/html' href='http://reachbeyondgrasp.blogspot.com/2009/12/reliance-netconnect-usage-gui-version.html' title='Reliance netconnect usage - GUI version'/><author><name>Raja</name><uri>http://www.blogger.com/profile/17138871434315349022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3339269982693982986.post-2540334061257832323</id><published>2009-11-08T01:47:00.002-05:00</published><updated>2009-11-08T02:02:52.027-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>How I rooted my HTC phone and put in a new ROM</title><content type='html'>The HTC Magic brought to India by Airtel came with the "perfect" SPL. However, this was hacked sometime back making it possible (though with some difficulty) to root it. The discovery of the "one-click method" simplified this process significantly though. So after some agonising decision making, I decided to jump in and try to mod my phone. At the end of it all, it seemed almost too easy and the change, with the availability of the Android Market, is well worth it.&lt;br /&gt;&lt;br /&gt;This is not a complete guide, just a documentation of some of the specifics as it relates to this phone. Standard disclaimer applies - this could possibly brick your phone, remember you take that risk if you plan to do this !&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;My phone information&lt;/span&gt;&lt;br /&gt;SAPPHIRE PVT 32A SHIP S-ON H&lt;br /&gt;HBOOT-1.33.0010 (SAPP10000)&lt;br /&gt;CPLD-12&lt;br /&gt;RADIO-3.22.20.17&lt;br /&gt;Jun 2 2009, 17:28:28&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Method I chose to root the phone&lt;/span&gt;&lt;br /&gt;The on-click method, following &lt;a href="http://theunlockr.com/2009/08/22/how-to-root-the-mytouch-3g-or-g1-in-one-click/"&gt;this post&lt;/a&gt;.&lt;br /&gt;I used FlashRec 1.1.3. I was unable to install with a file manager or by downloading from the phone, I used adb from android-sdk to install.&lt;br /&gt;&lt;br /&gt;The alternative to this method would be the more difficult &lt;a href="http://forum.xda-developers.com/showthread.php?t=547133"&gt;gold card method&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;My new ROM&lt;/span&gt;&lt;br /&gt;&lt;a href="http://forum.xda-developers.com/showthread.php?t=538645"&gt;Amon Ra’s Clean Donut&lt;/a&gt;. No problems with the ROM so far.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3339269982693982986-2540334061257832323?l=reachbeyondgrasp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reachbeyondgrasp.blogspot.com/feeds/2540334061257832323/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3339269982693982986&amp;postID=2540334061257832323' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3339269982693982986/posts/default/2540334061257832323'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3339269982693982986/posts/default/2540334061257832323'/><link rel='alternate' type='text/html' href='http://reachbeyondgrasp.blogspot.com/2009/11/how-i-rooted-my-htc-phone-and-put-in.html' title='How I rooted my HTC phone and put in a new ROM'/><author><name>Raja</name><uri>http://www.blogger.com/profile/17138871434315349022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3339269982693982986.post-639470490574884029</id><published>2009-10-28T01:10:00.004-05:00</published><updated>2009-12-14T09:57:55.804-05:00</updated><title type='text'>Reliance netconnect - check your usage</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Update December 14, 2009:&lt;/span&gt; Self contained exe for windows with a GUI - see &lt;a href="http://reachbeyondgrasp.blogspot.com/2009/12/reliance-netconnect-usage-gui-version.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I have been using netconnect from reliance without any complaints for two months now. One problem, though, has been that the reliance website is fairly bad and it is not at all easy to verify your usage until you get the bill. When you log in and check your usage, what is shown is a huge table with the usage in kb for each session along with the session start time. So, if like me, you have a plan with a separate limit for nighttime, you have to download the csv file and then add up the usage yourself for sessions starting in the 'nighttime' and similarly for those starting in the 'daytime'. Seeing that many people have complained of being over-billed, it seems prudent to keep a tab on usage. While vnstat can give you the usage on any machine, it is less helpful when you use the account from multiple machines and also it does not seem to be easy to get usage for specified time limits.&lt;br /&gt;&lt;br /&gt;So here is a small python script I wrote to get the usage information from the reliance website, calculate the split usage for daytime (6am-10pm) and nighttime (10pm-6am) and present the results in a human readable form. You can download the script &lt;a href="http://ggeek.googlecode.com/files/reliance_usage.py"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Here is the script in action -&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_sPKRuJS_w8Q/SufkcAEuOSI/AAAAAAAAB5E/P05Y_eodsRA/s1600-h/Screenshot.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 170px;" src="http://4.bp.blogspot.com/_sPKRuJS_w8Q/SufkcAEuOSI/AAAAAAAAB5E/P05Y_eodsRA/s320/Screenshot.png" alt="" id="BLOGGER_PHOTO_ID_5397533848134105378" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Any comments and suggestions are welcome.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3339269982693982986-639470490574884029?l=reachbeyondgrasp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reachbeyondgrasp.blogspot.com/feeds/639470490574884029/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3339269982693982986&amp;postID=639470490574884029' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3339269982693982986/posts/default/639470490574884029'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3339269982693982986/posts/default/639470490574884029'/><link rel='alternate' type='text/html' href='http://reachbeyondgrasp.blogspot.com/2009/10/reliance-netconnect-check-your-usage.html' title='Reliance netconnect - check your usage'/><author><name>Raja</name><uri>http://www.blogger.com/profile/17138871434315349022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_sPKRuJS_w8Q/SufkcAEuOSI/AAAAAAAAB5E/P05Y_eodsRA/s72-c/Screenshot.png' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3339269982693982986.post-2573460765391501831</id><published>2009-10-03T22:53:00.007-05:00</published><updated>2009-10-03T23:21:08.001-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='netconnect'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Reliance Netconnect on Ubuntu</title><content type='html'>Note: These are specific instructions for using ZTE-AC2726 modem on Ubuntu Jaunty.&lt;br /&gt;If you are using a different modem, instructions may vary.&lt;br /&gt;&lt;br /&gt;I got one of the newer modems with my wireless broadband connection from Reliance. It is a model that I had not come across in other blog posts, but I was encouraged by seeing 'Linux OS' mentioned among the system requirements.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 1: Open box and first look&lt;/span&gt;&lt;br /&gt;The linux support is in the form of a driver on the cd that comes in the package. There is a deb package, but an attempt to install it fails because it seems to support kernels upto 2.6.27 only. The modem looks nice though!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 2: Plug in modem&lt;/span&gt;&lt;br /&gt;On plugging in the modem, it gets mounted and shows up in nautilus like any storage drive. 'lsusb' confirms the bad news - the device is listed as 'Bus 007 Device 006: ID 19d2:fff5'. The modem is being recognised as a storage device only.&lt;br /&gt;&lt;br /&gt;PS: In Ubuntu 9.10 (Karmic), the device is recognized as a modem directly and the steps 3 and 4 are not required.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 3: usb_modeswitch to the rescue&lt;/span&gt;&lt;br /&gt;usb_modeswitch is an application written specifically for this purpose.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1px solid rgb(221, 221, 197); background: rgb(248, 248, 243) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;table width="100%" border="0" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style=";font-family:Tahoma,Sans,Arial,Helvetica,sans-serif;font-size:78%;color:BLACK;"   &gt;&lt;br /&gt;wget http://www.draisberghof.de/usb_modeswitch/usb_modeswitch-1.0.5.tar.bz2&lt;br /&gt;tar -xjvf usb_modeswitch-1.0.5.tar.bz2&lt;br /&gt;cd usb_modeswitch-1.0.5&lt;br /&gt;sudo make install&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;If there were no errors, you can add this snippet to /etc/usb_modeswitch.conf. I have broken MessageContent into 2 lines so that it can be shown in entirety.  You should put everything on one line.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1px solid rgb(221, 221, 197); background: rgb(248, 248, 243) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;table width="100%" border="0" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style=";font-family:Tahoma,Sans,Arial,Helvetica,sans-serif;font-size:78%;color:BLACK;"   &gt;&lt;br /&gt;# ZTE AC2726&lt;br /&gt;#&lt;br /&gt;DefaultVendor=  0x19d2&lt;br /&gt;DefaultProduct= 0xfff5&lt;br /&gt;&lt;br /&gt;TargetVendor=   0x19d2&lt;br /&gt;TargetProduct=  0xfff1&lt;br /&gt;&lt;br /&gt;MessageContent="5553424312345678c00000008000069f03&lt;br /&gt;                0000000000000000000000000000"&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Now  run&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1px solid rgb(221, 221, 197); background: rgb(248, 248, 243) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;table width="100%" border="0" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style=";font-family:Tahoma,Sans,Arial,Helvetica,sans-serif;font-size:78%;color:BLACK;"   &gt;&lt;br /&gt;sudo usb_modeswitch&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;You should see the success message and lsusb should show the product id is now fff1.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 4: Load the usbserial module&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1px solid rgb(221, 221, 197); background: rgb(248, 248, 243) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;table width="100%" border="0" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style=";font-family:Tahoma,Sans,Arial,Helvetica,sans-serif;font-size:78%;color:BLACK;"   &gt;&lt;br /&gt;sudo mobdprobe usbserial vendor=0x19d2 product=0xfff1&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 5: Connect using wvdial&lt;/span&gt;&lt;br /&gt;If all has gone well, the modem should be recognised and ready to use.&lt;br /&gt;'ls /dev/ttyUSB*' should show some USB devices&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1px solid rgb(221, 221, 197); background: rgb(248, 248, 243) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;table width="100%" border="0" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style=";font-family:Tahoma,Sans,Arial,Helvetica,sans-serif;font-size:78%;color:BLACK;"   &gt;&lt;br /&gt;sudo apt-get install wvdial&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;You can run 'wvdialconf' to generate the initial configuration file and then edit it to enter your phone number and password.&lt;br /&gt;This is my wvdial.conf&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1px solid rgb(221, 221, 197); background: rgb(248, 248, 243) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;table width="100%" border="0" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style=";font-family:Tahoma,Sans,Arial,Helvetica,sans-serif;font-size:78%;color:BLACK;"   &gt;&lt;br /&gt;[Dialer Defaults]&lt;br /&gt;Init1 = ATZ&lt;br /&gt;Init2 = ATQ0 V1 E1 S0=0 &amp;amp;C1 &amp;amp;D2 +FCLASS=0&lt;br /&gt;Modem Type = Analog Modem&lt;br /&gt;Baud = 460800&lt;br /&gt;New PPPD = yes&lt;br /&gt;Modem = /dev/ttyUSB0&lt;br /&gt;ISDN = 0&lt;br /&gt;Phone = #777&lt;br /&gt;Password = XXXXXXXXXX&lt;br /&gt;Username = XXXXXXXXXX&lt;br /&gt;PPPP Path = /usr/sbin/pppd&lt;br /&gt;New PPPD = 1&lt;br /&gt;Stupid Mode = 1&lt;br /&gt;Tonline = 0&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Now you are all set to&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1px solid rgb(221, 221, 197); background: rgb(248, 248, 243) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;table width="100%" border="0" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style=";font-family:Tahoma,Sans,Arial,Helvetica,sans-serif;font-size:78%;color:BLACK;"   &gt;&lt;br /&gt;sudo wvdial&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;and get connected.&lt;br /&gt;&lt;br /&gt;Notes:&lt;br /&gt;1. I did the initial activation of the device from a windows pc. Not sure if it can be done with wvdial by using the phone number for that purpose.&lt;br /&gt;2. Loading of the specific usbserial module can be automated by adding it to the kernel line in the boot menu. udev rules can be used for running usb_modeswitch on plugging in the modem - these are not covered here.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3339269982693982986-2573460765391501831?l=reachbeyondgrasp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reachbeyondgrasp.blogspot.com/feeds/2573460765391501831/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3339269982693982986&amp;postID=2573460765391501831' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3339269982693982986/posts/default/2573460765391501831'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3339269982693982986/posts/default/2573460765391501831'/><link rel='alternate' type='text/html' href='http://reachbeyondgrasp.blogspot.com/2009/10/reliance-netconnect-on-ubuntu.html' title='Reliance Netconnect on Ubuntu'/><author><name>Raja</name><uri>http://www.blogger.com/profile/17138871434315349022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3339269982693982986.post-3213367920591419206</id><published>2009-08-11T03:03:00.008-05:00</published><updated>2009-08-11T04:25:06.105-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='airtel'/><category scheme='http://www.blogger.com/atom/ns#' term='htc'/><category scheme='http://www.blogger.com/atom/ns#' term='magic'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Making a smartphone out of the HTC magic</title><content type='html'>As mentioned in my last post, the HTC Magic marketed in India, as it comes out of the box is no smartphone. It is crippled in not having access to the android market. Which means you have to hunt for apps available outside the market to make your phone smart. These are the apps I have found in about a month of searching - what are yours ?&lt;br /&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/android-scripting/"&gt;&lt;span style="font-weight: bold;"&gt;Android Scripting Environment&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;A fantastic application that gives you a scripting environment, currently for Lua or Python on your phone. This is an early python script written as a poor man's mapping solution. Obtain your coordinates from GPS, construct an url fit for consumption by google maps and open the browser.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_sPKRuJS_w8Q/SoE41AHhw6I/AAAAAAAAB0c/YSxzRu6tGM0/s1600-h/ase.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 267px; height: 400px;" src="http://1.bp.blogspot.com/_sPKRuJS_w8Q/SoE41AHhw6I/AAAAAAAAB0c/YSxzRu6tGM0/s400/ase.png" alt="" id="BLOGGER_PHOTO_ID_5368634714018136994" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;SkyMap&lt;/span&gt;&lt;br /&gt;A great way to see the night sky. Using GPS and position information from the phone, the objects in the night sky in your field of vision are displayed.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_sPKRuJS_w8Q/SoE0DbdsYoI/AAAAAAAABzs/5UT13eu8cjU/s1600-h/skydroid.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 267px; height: 400px;" src="http://1.bp.blogspot.com/_sPKRuJS_w8Q/SoE0DbdsYoI/AAAAAAAABzs/5UT13eu8cjU/s400/skydroid.png" alt="" id="BLOGGER_PHOTO_ID_5368629464318894722" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/connectbot/"&gt;&lt;span style="font-weight: bold;"&gt;Connectbot&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;A secure shell client allowing you to get a local shell (connect to localhost) or connect to an ssh server on a pc. Second screenshot shows emacs running in an ssh session.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_sPKRuJS_w8Q/SoE1cJwd41I/AAAAAAAABz0/odTLQfvscQM/s1600-h/ssh_login.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 267px; height: 400px;" src="http://1.bp.blogspot.com/_sPKRuJS_w8Q/SoE1cJwd41I/AAAAAAAABz0/odTLQfvscQM/s400/ssh_login.png" alt="" id="BLOGGER_PHOTO_ID_5368630988574155602" 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/_sPKRuJS_w8Q/SoE1im2pVUI/AAAAAAAABz8/9DP4jHLJ7fM/s1600-h/emacs.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 267px; height: 400px;" src="http://3.bp.blogspot.com/_sPKRuJS_w8Q/SoE1im2pVUI/AAAAAAAABz8/9DP4jHLJ7fM/s400/emacs.png" alt="" id="BLOGGER_PHOTO_ID_5368631099463914818" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.fbreader.org/FBReaderJ/"&gt;&lt;span style="font-weight: bold;"&gt;FBreader&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;A very good ebook reader.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_sPKRuJS_w8Q/SoE2hR8LLOI/AAAAAAAAB0E/p-Mh0OT18Zg/s1600-h/fbreader.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 267px; height: 400px;" src="http://4.bp.blogspot.com/_sPKRuJS_w8Q/SoE2hR8LLOI/AAAAAAAAB0E/p-Mh0OT18Zg/s400/fbreader.png" alt="" id="BLOGGER_PHOTO_ID_5368632176181718242" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.nav4all.com/site2/www.nav4all.com/eng/index.php"&gt;&lt;span style="font-weight: bold;"&gt;Nav4all&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;In the absence of the google maps application, this is an option to use a map with a GPS. Quite comprehensive maps and a wealth of options. On the flip side, this is free only until 01-01-2010, you cannot use offline maps and the interface is a little messy.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_sPKRuJS_w8Q/SoE3RFngjpI/AAAAAAAAB0M/_T5um4sVvIs/s1600-h/nav4all.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 267px; height: 400px;" src="http://4.bp.blogspot.com/_sPKRuJS_w8Q/SoE3RFngjpI/AAAAAAAAB0M/_T5um4sVvIs/s400/nav4all.png" alt="" id="BLOGGER_PHOTO_ID_5368632997507534482" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.andnav.org/"&gt;&lt;span style="font-weight: bold;"&gt;AndNav&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;A truly free mapping system. You have a choice of renderers (including google maps) and you can store the maps offline by 'preloading' them.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_sPKRuJS_w8Q/SoE325p2duI/AAAAAAAAB0U/dkWOjlWpD50/s1600-h/andNav.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 267px; height: 400px;" src="http://1.bp.blogspot.com/_sPKRuJS_w8Q/SoE325p2duI/AAAAAAAAB0U/dkWOjlWpD50/s400/andNav.png" alt="" id="BLOGGER_PHOTO_ID_5368633647131162338" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And finally, installing the android SDK on the pc is helpful in various ways. I used adb a couple of times to install apk files when for some reason it wouldnt work when browsing from the phone. And also, of course, to get these screenshots.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3339269982693982986-3213367920591419206?l=reachbeyondgrasp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reachbeyondgrasp.blogspot.com/feeds/3213367920591419206/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3339269982693982986&amp;postID=3213367920591419206' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3339269982693982986/posts/default/3213367920591419206'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3339269982693982986/posts/default/3213367920591419206'/><link rel='alternate' type='text/html' href='http://reachbeyondgrasp.blogspot.com/2009/08/making-smartphone-out-of-htc-magic.html' title='Making a smartphone out of the HTC magic'/><author><name>Raja</name><uri>http://www.blogger.com/profile/17138871434315349022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_sPKRuJS_w8Q/SoE41AHhw6I/AAAAAAAAB0c/YSxzRu6tGM0/s72-c/ase.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3339269982693982986.post-2144275643889368094</id><published>2009-07-17T23:34:00.004-05:00</published><updated>2009-11-08T02:04:45.403-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='airtel'/><category scheme='http://www.blogger.com/atom/ns#' term='htc'/><category scheme='http://www.blogger.com/atom/ns#' term='magic'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Airtel's HTC magic in India - buyers beware !</title><content type='html'>So, I returned to India recently and looking to get a mobile phone, settled on what seemed to be the only android phone available in India - the HTC magic. Could not find any detailed reviews specific to Airtel's offering, but it did not appear as if the phone should be any different from that described in other reviews or on the &lt;a href="http://www.htc.com/www/product/magic/overview.html"&gt;HTC website&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;So imagine my surprise when I cannot find the promised integrated google applications on the phone. The biggest disappointment is that there is no android market to get your apps and you have to settle for what is available at &lt;a href="http://www.openmarket.co.za/"&gt;Leafs 'Openmarket'&lt;/a&gt; or &lt;a href="http://www.handango.com/"&gt;Handango&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Turns out there are two versions of this phone - one is the google version which has all the goodies and a HTC version which instead has none of the google goodies and some additional software (most of which I am not interested in, and none of which compensates for the lack of access to android market).&lt;br /&gt;&lt;br /&gt;Searching around on the internet, I find I am not the only one to have been surprised by this after buying the phone. I think the blame is on the seller for not making the distinction clear. SO I hope this post helps warn other potential buyers to be prepared for this when you buy the phone.&lt;br /&gt;&lt;br /&gt;Apart from this, the phone feels great and the virtual keyboard works wonderfully. And for the geek side, &lt;a href="http://code.google.com/p/android-scripting/"&gt;ASE (Android Scripting Environment)&lt;/a&gt; could be installed and using &lt;a href="http://code.google.com/p/connectbot/"&gt;connectbot&lt;/a&gt; I have a local shell and can use ssh ! At some point, I think I will be tempted to take the risk and attempt flashing a new ROM.&lt;br /&gt;&lt;br /&gt;Edit - 08 Nov 2009 - &lt;a href="http://reachbeyondgrasp.blogspot.com/2009/11/how-i-rooted-my-htc-phone-and-put-in.html"&gt;I rooted the phone and put in a new ROM&lt;/a&gt; - freedom !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3339269982693982986-2144275643889368094?l=reachbeyondgrasp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reachbeyondgrasp.blogspot.com/feeds/2144275643889368094/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3339269982693982986&amp;postID=2144275643889368094' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3339269982693982986/posts/default/2144275643889368094'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3339269982693982986/posts/default/2144275643889368094'/><link rel='alternate' type='text/html' href='http://reachbeyondgrasp.blogspot.com/2009/07/airtels-htc-magic-in-india-buyers.html' title='Airtel&apos;s HTC magic in India - buyers beware !'/><author><name>Raja</name><uri>http://www.blogger.com/profile/17138871434315349022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3339269982693982986.post-9194253436698065657</id><published>2009-03-20T20:17:00.002-05:00</published><updated>2009-03-20T20:21:39.541-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='command line'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>The command line tutor returns</title><content type='html'>I had stopped work on this long back, but found people still downloading it and &lt;a href="http://ubuntuforums.org/archive/index.php/t-380978.html "&gt;discussing it&lt;/a&gt; once in a while. So here we go - a rewritten version can be got from its &lt;a href="http://code.google.com/p/cmd-tutor"&gt;new home&lt;/a&gt; at google code. Any suggestions are welcome.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3339269982693982986-9194253436698065657?l=reachbeyondgrasp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reachbeyondgrasp.blogspot.com/feeds/9194253436698065657/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3339269982693982986&amp;postID=9194253436698065657' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3339269982693982986/posts/default/9194253436698065657'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3339269982693982986/posts/default/9194253436698065657'/><link rel='alternate' type='text/html' href='http://reachbeyondgrasp.blogspot.com/2009/03/command-line-tutor-returns.html' title='The command line tutor returns'/><author><name>Raja</name><uri>http://www.blogger.com/profile/17138871434315349022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3339269982693982986.post-3543784960325823055</id><published>2009-02-28T21:06:00.005-05:00</published><updated>2009-02-28T21:54:41.091-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jaunty'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Ubuntu Jaunty Alpha 5 screenshots</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_sPKRuJS_w8Q/SanuPi9mM-I/AAAAAAAABuM/NhKB4HvT6G0/s1600-h/jaunty.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://4.bp.blogspot.com/_sPKRuJS_w8Q/SanuPi9mM-I/AAAAAAAABuM/NhKB4HvT6G0/s400/jaunty.png" alt="" id="BLOGGER_PHOTO_ID_5308035586683450338" 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/_sPKRuJS_w8Q/San4ZInyqrI/AAAAAAAABuU/RpohY3ys2zE/s1600-h/jaunty_zoomed.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 371px; height: 144px;" src="http://2.bp.blogspot.com/_sPKRuJS_w8Q/San4ZInyqrI/AAAAAAAABuU/RpohY3ys2zE/s400/jaunty_zoomed.png" alt="" id="BLOGGER_PHOTO_ID_5308046746527640242" 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/_sPKRuJS_w8Q/San4ZRZpIKI/AAAAAAAABuc/HxX2iBHGysU/s1600-h/Screenshot.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://2.bp.blogspot.com/_sPKRuJS_w8Q/San4ZRZpIKI/AAAAAAAABuc/HxX2iBHGysU/s400/Screenshot.png" alt="" id="BLOGGER_PHOTO_ID_5308046748884213922" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The new notifications look good !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3339269982693982986-3543784960325823055?l=reachbeyondgrasp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reachbeyondgrasp.blogspot.com/feeds/3543784960325823055/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3339269982693982986&amp;postID=3543784960325823055' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3339269982693982986/posts/default/3543784960325823055'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3339269982693982986/posts/default/3543784960325823055'/><link rel='alternate' type='text/html' href='http://reachbeyondgrasp.blogspot.com/2009/02/ubuntu-jaunty-alpha-5-screenshot.html' title='Ubuntu Jaunty Alpha 5 screenshots'/><author><name>Raja</name><uri>http://www.blogger.com/profile/17138871434315349022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_sPKRuJS_w8Q/SanuPi9mM-I/AAAAAAAABuM/NhKB4HvT6G0/s72-c/jaunty.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3339269982693982986.post-5462947907105805537</id><published>2009-01-21T17:43:00.010-05:00</published><updated>2009-01-21T18:29:53.560-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='bash'/><category scheme='http://www.blogger.com/atom/ns#' term='imagemagick'/><title type='text'>'Scroll animating' an image</title><content type='html'>&lt;table style="width:auto;"&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/lh/photo/1c8AtJ0993A7V3GeHXENWQ?authkey=0devseXWqGw&amp;feat=embedwebsite"&gt;&lt;img src="http://lh5.ggpht.com/_sPKRuJS_w8Q/SXet5IZF-5I/AAAAAAAABtM/RcOJxadoJfY/s400/trainfun.png" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;table style="width:auto;"&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/lh/photo/2S7OoOJQrxBTqiwzZ5mj6A?authkey=0devseXWqGw&amp;feat=embedwebsite"&gt;&lt;img src="http://lh6.ggpht.com/_sPKRuJS_w8Q/SXet5vjoSaI/AAAAAAAABtU/AdRUi3qqeGo/s400/trainfunanimation.gif" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family:arial,sans-serif; font-size:11px; text-align:right"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Needing to create an animated image of an ECG scrolling, I wrote a bash script to create sequential frames from the image and then combine them into an animated gif, all using imagemagick.&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1px solid rgb(221, 221, 197); background: rgb(248, 248, 243) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style=";font-family:Tahoma,Sans,Arial,Helvetica,sans-serif;font-size:78%;color:BLACK;"   &gt;&lt;br /&gt;#!/usr/bin/env bash&lt;br /&gt;&lt;br /&gt;# Convert a rectangular image into an animated gif with&lt;br /&gt;# sections from the image scrolling through&lt;br /&gt;&lt;br /&gt;# Raja S &lt;rajajs@gmail.com&gt;&lt;br /&gt;# Jan 2009&lt;br /&gt;# GPL&lt;br /&gt;&lt;br /&gt;nargs=$#&lt;br /&gt;if [ $nargs -eq 0 ]&lt;br /&gt;then&lt;br /&gt;echo "Error - No arguments provided !"&lt;br /&gt;echo ""&lt;br /&gt;echo "animate converts rectangular image to a scrolling animated gif"&lt;br /&gt;echo "Usage : "&lt;br /&gt;echo "  animate filename [width] [overlap] [delay] [loop]"&lt;br /&gt;echo "    width is width of final gif (pixels), default same as image height"&lt;br /&gt;echo "    overlap is overlap between successive 'frames', default is tenth of width"&lt;br /&gt;echo "    delay in time in hundredths of a second between frames, default is 20"&lt;br /&gt;echo "    loop is number of times to loop, default is 0 (loop infinitely"&lt;br /&gt;exit&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;# command line arguments - filename, width of gif (opt) and overlap (opt)&lt;br /&gt;imagefile=$1&lt;br /&gt;basefilename=${imagefile%.*}&lt;br /&gt;&lt;br /&gt;# find image size using identify&lt;br /&gt;imagesize=$(identify  $imagefile | awk '{print $3}')&lt;br /&gt;imagewidth=$(echo $imagesize | awk -Fx '{print $1}')&lt;br /&gt;imageheight=$(echo $imagesize | awk -Fx '{print $2}')&lt;br /&gt;&lt;br /&gt;# width of gif - default is image height&lt;br /&gt;if [ $nargs -gt 1 ]&lt;br /&gt;then&lt;br /&gt;width=$2&lt;br /&gt;else&lt;br /&gt;width=$imageheight&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;if [ $width -gt $imagewidth ]&lt;br /&gt;then&lt;br /&gt;echo "Error - Width of gif cannot be larger than width of input image !"&lt;br /&gt;exit&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;# overlap - default is tenth of width&lt;br /&gt;if [ $nargs -gt 2 ]&lt;br /&gt;then&lt;br /&gt;overlap=$3&lt;br /&gt;else&lt;br /&gt;overlap=$(($width/10))&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;# delay&lt;br /&gt;if [ $nargs -gt 3 ]&lt;br /&gt;then&lt;br /&gt;delay=$4&lt;br /&gt;else&lt;br /&gt;delay=20&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;# loop&lt;br /&gt;if [ $nargs -gt 4 ]&lt;br /&gt;then&lt;br /&gt;loop=$5&lt;br /&gt;else&lt;br /&gt;loop=0&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;# make the image frames&lt;br /&gt;filecount=0&lt;br /&gt;for i in $(seq 0 $overlap $(($imagewidth-$width)))&lt;br /&gt;do&lt;br /&gt;printf -v suffix '%06d' $((filecount++))&lt;br /&gt;convertstring="$width""x""$imageheight""+""$i""+0"&lt;br /&gt;filename="$basefilename""part""$suffix"".jpg"&lt;br /&gt;convert -crop "$convertstring" "$imagefile" "$filename"&lt;br /&gt;done&lt;br /&gt;&lt;br /&gt;# combine into gif&lt;br /&gt;convert -delay "$delay" -loop "$loop" "$basefilename""part*.jpg" "$basefilename""animation.gif"&lt;br /&gt;&lt;br /&gt;&lt;/rajajs@gmail.com&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;If you want to try it out, you can download it &lt;a href="http://ggeek.googlecode.com/files/animate.sh"&gt;here.&lt;/a&gt;&lt;br /&gt;Example usage:&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1px solid rgb(221, 221, 197); background: rgb(248, 248, 243) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style=";font-family:Tahoma,Sans,Arial,Helvetica,sans-serif;font-size:78%;color:BLACK;"   &gt;&lt;br /&gt;raja: ls /data/tmp/sample/&lt;br /&gt;train.jpg&lt;br /&gt;&lt;br /&gt;raja: ./animate.sh /data/tmp/sample/train.jpg&lt;br /&gt;&lt;br /&gt;raja: rm /data/tmp/sample/trainpart*&lt;br /&gt;&lt;br /&gt;raja: ls /data/tmp/sample/&lt;br /&gt;trainanimation.gif  train.jpg&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Disclaimer&lt;/span&gt;: This is provided with all good intentions, but I cannot guarantee that it will cause not harm. Note that I do not delete the files to avoid inadvertent deletion of any important files. However, it is best to place the target image in a separate folder and then run the script.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3339269982693982986-5462947907105805537?l=reachbeyondgrasp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reachbeyondgrasp.blogspot.com/feeds/5462947907105805537/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3339269982693982986&amp;postID=5462947907105805537' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3339269982693982986/posts/default/5462947907105805537'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3339269982693982986/posts/default/5462947907105805537'/><link rel='alternate' type='text/html' href='http://reachbeyondgrasp.blogspot.com/2009/01/scroll-animating-image.html' title='&apos;Scroll animating&apos; an image'/><author><name>Raja</name><uri>http://www.blogger.com/profile/17138871434315349022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_sPKRuJS_w8Q/SXet5IZF-5I/AAAAAAAABtM/RcOJxadoJfY/s72-c/trainfun.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3339269982693982986.post-4542437187767920718</id><published>2009-01-03T17:19:00.005-05:00</published><updated>2009-01-04T08:27:32.479-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='emacs'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Emacs - a beginner's setup</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_sPKRuJS_w8Q/SV_mfKQUJII/AAAAAAAABrA/_7GT79m2XFM/s1600-h/Screenshot.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://2.bp.blogspot.com/_sPKRuJS_w8Q/SV_mfKQUJII/AAAAAAAABrA/_7GT79m2XFM/s400/Screenshot.png" alt="" id="BLOGGER_PHOTO_ID_5287197910559368322" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;It's almost 5 months since I started using emacs on a regular basis. After beginning to use it as a platform to learn lisp (with SLIME), now I use emacs for coding python and bash, writing manuscripts (with markdown), doing statistics with R (using &lt;a href="http://ess.r-project.org/"&gt;ESS&lt;/a&gt;), file and directory management and sometimes even to play chess on &lt;a href="http://www.freechess.org/"&gt;FICS&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Emacs, in my opinion is something anyone should give a whirl. It is open source, free and easily installable on any operating system. It is an absolutely amazing piece of software - give it a shot and if after a couple of months you decide to give up, atleast you have got a taste of what it is about. Here I will attempt to list a few things that will ease the introduction to emacs.&lt;br /&gt;&lt;br /&gt;Note: Many of these instructions may be specific for Gnu-emacs on Linux. They may vary if you are using another emacs variant or another platform.&lt;br /&gt;&lt;br /&gt;1. Start off with a good looking emacs&lt;br /&gt;&lt;br /&gt;An oft-repeated complaint is that emacs looks bad, bad enough to deter a newcomer sometimes. But then, it doesn't have to ...&lt;br /&gt;&lt;br /&gt;Use the latest emacs snapshot that allows use of your preferred fonts with nice antialiasing. In Ubuntu this means&lt;br /&gt;&lt;br /&gt;&lt;b&gt;sudo aptitude install emacs-snapshot-gtk emacs-goodies-el&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;Now you can use any font you prefer by modifying the Xresources file as detailed &lt;a href="http://peadrop.com/blog/2007/01/06/pretty-emacs/"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;2. Disable the splash screen, scrollbar and toolbar. Add to your .emacs -&lt;br /&gt;&lt;br /&gt;&lt;b&gt;(setq inhibit-startup-message t)&lt;br /&gt;(tool-bar-mode -1)&lt;br /&gt;(scroll-bar-mode -1)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;It may seem surprising to consider disabling the scrollbar and toolbar. Maybe a case can be made for having these on while you wean yourself from the mouse, but I believe that there are greater dividends to doing this early and getting used to mouseless editing. I have preferred leaving the menu-bar on although I dont use the menu items, just because it sometimes allows me to easily refer to the shortcuts available, but again, it is worth considering disabling this too.&lt;br /&gt;&lt;br /&gt;3. Syntax highlighting&lt;br /&gt;&lt;br /&gt;Install color themes. In ubuntu, this is done easily by installing emacs-goodies-el. Now, add this in your emacs to have 'font-lock' on for syntax highlighting.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;(global-font-lock-mode t)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;After M-x, typing color-theme- and hitting tab will shows the completions available. Try  out the different color-themes to decide what you want to use. To enable it automatically, add a line like this -&lt;br /&gt;&lt;b&gt;&lt;br /&gt;(require 'color-theme)&lt;br /&gt;(setq color-theme-is-global t)&lt;br /&gt;(color-theme-scintilla)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;4. Enable line numbers&lt;br /&gt;&lt;br /&gt;If you feel lost without them,&lt;br /&gt;&lt;b&gt;&lt;br /&gt;(require 'linum)&lt;br /&gt;(global-linum-mode)&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;5. If you&lt;b&gt; &lt;/b&gt;like to 'see' a selected region, you have to enable transient-mark-mode -&lt;b&gt;&lt;br /&gt;&lt;br /&gt;(setq-default transient-mark-mode t)&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;6. And if you have trouble copy-pasting between other windows and emacs, this worked for me - &lt;b&gt;&lt;br /&gt;&lt;br /&gt;(setq x-select-enable-clipboard t)&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;With these basic things out of the way, you have a decent emacs set up to start with. There are multiple options for further customization, but I will leave them for you to experiment with. Packages to definitely try out are &lt;a href="http://www.emacswiki.org/emacs/InteractivelyDoThings"&gt;ido-mode&lt;/a&gt;, &lt;a href="http://homepages.cs.ncl.ac.uk/phillip.lord/download/emacs/pabbrev.el"&gt;pabbrev&lt;/a&gt;, &lt;a href="http://www.nongnu.org/bm/"&gt;bookmarks&lt;/a&gt; and &lt;a href="http://code.google.com/p/yasnippet/"&gt;yasnippet&lt;/a&gt;.&lt;br /&gt;&lt;/div&gt;&lt;div id="greasedLightboxOverlay"&gt;&lt;div id="greasedLightbox"&gt;&lt;img id="greasedLightboxImage" /&gt;&lt;div id="greasedLightboxCaption"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div id="greasedLightboxMenu"&gt;&lt;a href="http://shiftingpixel.com/lightbox/" id="greasedLightboxTitleLink"&gt;Greased Lightbox&lt;/a&gt;&lt;div id="greasedLightboxButtons"&gt;&lt;a title="Next image (right arrow key)" id="greasedLightboxButtonRight"&gt;→&lt;/a&gt;&lt;a title="Previous image (left arrow key)" id="greasedLightboxButtonLeft"&gt;←&lt;/a&gt;&lt;a title="Magnify image (+ key)" id="greasedLightboxButtonPlus"&gt;+&lt;/a&gt;&lt;a title="Shrink image (- key)" id="greasedLightboxButtonMinus"&gt;-&lt;/a&gt;&lt;a title="Start/stop slideshow" id="greasedLightboxButtonSlide"&gt;↻&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div id="greasedLightboxLoading"&gt;&lt;img style="border: medium none ;" src="data:image/gif,GIF89a%80%80%A2%FF%FF%FF%DD%DD%DD%BB%BB%BB%99%99%99%FF%21%FF%0BNETSCAPE2.0%03%01%21%F9%04%05%05%04%2C%02%02%7C%7C%03%FFH%BA%DC%FE0%CA%06*%988%EB%CD%BB_%96%F5%8Ddibax%AEl%AB%A5%A2%2B%CF.%5C%D1x%3E%DA%97%EE%FF%12%1EpHT%08%8B%C8G%60%190%1DI%83%E8%20%F9a2K%CF%8FTJ%E5X%AD%A4lg%BB%EDj%BE%D7%9D%0DJ%8E%9A3%E8%B4G%BCis%DF%93%B8%9CC%CF%D8%EFx%12zMsk%1E%7FS%81%18%83%850%87%7F%8Apz%8D%29%8Fv%91%92q%1D%7D%12%88%98%99%9A%1B%9C%10%88%89%9Fy%93%A2%86%1A%9E%A7%8B%8C%2F%AB%18%A5%AE%A0_%AA%8E%AC%90%B5%B6%60%19%A3%0D%AD%BC%AF%A1%28%B2%9D%BB%C3%C4h%BF%C7%A4%C9%CA%A8%A9A%CE%0E%B4%D1%BD%7B%10%C0%0A%C2%D8%D2%C5%DB%D5%0C%D7%DF%CB%B7%13%B9%C8%97x%02%EE%02%2B%B0%D47%13%DEln%1E%EF%EF%27%F2%2B%F6Zd%3A%E8%1Bhb%9A%3Fv%F7%DAp%18%C8%90%84%C1%13%D0%C6%94%CB%C0%B0%E2%08f2%14%02%2Ce%8A%FFb%C5%86U%B4%B5%28%B3%91%A3%C0%8F%20%CD%CD%E2%08h%21%CA%94*%AD%B1l%99%EF%25%C1%98%0Bf%D2%1Ca%F3fL%9D%F8X%F4%D4g%0EhG%17C%F7%0D3%EA%23%A9%3B%5EL%818u%054%C9P%AA%2C%DF%D8%C4%FA%8F%CAK%AE%08%15Y%AC%15%F6%13%D1%A5%3Bq%AA%5D%CB%B6%AD%DB%B7p%E3%CA%9DK%B7%AE%DD%BBx%F3B4%DA%F5%1B_a%7F%27%16%0D%0C%89%B0%E0h%86%13%F3%FD%A9%B8qV%95%8E%23%F7%85*%D9Me%B5%97%BB9f%1BY%AF%E7%CF%A0C%8B%1EM%BA%B4%E9%D3%A8S%AB%C6A%92r%D0Se1%C5%7Es8P%ED%24%26a%DF%1E2%13%EC%E4%1CUu%F7%06%12%D5wn%E0%C1%5D%0F%9FQ%1Cq%F2%83%3A1%3FO%F8Xzt%EA%C7%DB6%AFs%5D%EE%F4%95%D5%25%BEv%D1Z%7Cv%F0%BB%EB%05%CC%B8%DERz%99%BF%D5kd%11%91%C3y%F9%F3G%D4%2F%B1%DF%7E%FF%08%BC%F9%E9%F7_I%EDaW%12t%01%3EP%DE3%B3%B9g%DB%80%9A-%A8%20%84%8CAha%7C%90Q%A8%21%85%7Ea%B8%21%87%CE5%18%8C%88%E4%80%88%16%89%25%26%C8%A0%8A%19%A2%98%93%8B%11%B2%D8%21%8C1J%08%A0%89%9F%BC%97b%81%F8%C9x%A2%8F%F0%F1%D8%A3%8D%CA%E8%B8%23%91%2B%02%29%9C%92%232y%24%92%C6%A55%E4x%7E%E0H%9B%95%04%60%89%A1%22%5B%06%09%E5%8D4%9Aa%A4%97RNY%26%97X%D6x%E6%3ANv%91%A6%9ATr%D7%26%15of%19%26%99q%E6%28%A4%7Fs%929%E3Q%EE%7D%89%1Eiu%AAVhj%87%A2%96%E8i%8B%9A%D6%A8%A3%7B%AE%C6%27%A0%AE%24%21%F9%04%05%05%04%2C%0A%02W0%03%FFH%BA%DC%FE0%BE%40%83%BC8%EB%3D%2B%E5%60%28J%9E7%9E%28WVi%EBv%EB%2B%BF%EB7%DFgm%E1%3C%A8%F7%23%81P%90%FA%A1H%40k8D%19G%C9%24%8A%C9%CC%D5N%D1%E8%89%DA%1C%3DCYi%90%2B%F4%5EEa%B1%88%DC%F5%9DAi%F5%9A-%FAn%E2%CA%14%9B%E8%8E%C1%E3.%7B%21v%19x%2F%82*o%1A%86%87%88%1A%84%12xy%8Dd%89%7E%8B%803%7B%7C%19%90%10%928%8E%18%9E%0F%8C%A1t%9D%8A%91%99%3C%A2%24%AA%11%A6%AD%A8%17%A4%0C%B2%B3%B4%11%B6%0A%A0%40%0A%AE0%25%18%B8%3D%9B%B5%B0%0D%BE%BF%C0%BA%10%97%B1%AC%10%03%D4%03%81%CE%C2%C4%D2%0F%D5%D5K%D8G%DB%0D%DD%E4z%952%E2%E3%E4%E5c%5C3%E9%0C%EB%F2%EDm%E8Y%18%F2%F3se%3CZ%19%F9%FA%98%09%04%18P%E0%2F%82%EB%0C2C%C8N%21%10%86%DD%1C%1E%84HMb%0F%8A%15-%F2%C0%A8%F1%13%22%C3%8E%0F%09%82%0C%99o%E4%C4%86%26IZK%A9%21%01%21%F9%04%05%05%04%2C%1F%02W0%03%FFH%BA%DC%FEKH%01%AB%BD8%EB6%E7%FE%60%A8u%9Dh%9E%22%E9%A1l%5B%A9%92%2B%CF%04L%D1%F8i%E7%7C%B8%F7%A2%81p%C0%FA%9D%02%C8%40k8D%19E%C9%24%8A%C9%D4%C1%8EQ%A9%89%DA4%3DAYm%90%2B%F4%5E%A1a%E4%89%DC%05%7D5i%F1%98%9C%3A%83%E3K%B6%CF%BE%89%2B%F3tn%7Cpx.lD%1Fo%17%7E3%87%88%23%83%8B%8C%8Dz%1B%8A%15%93%94%95%19%97%0F%7E%7F4%87%96%91%98%859%A2%9C%A4%9E%A6%A7%9B%17%9D%0D%99%3C%A8%AF%AA%B1%AC%B3%B4%2F%B6%0B%9F%40%0B%BA%10%B0%0A%B2%40%8E%B5*%92%B8%C6%AE%C2%24%18%C5%BF%04%C1%0F%25%CAa.%DA%18%D4%28%D1%21%DB%DB%DD%812%CB%20%E2%E9%17%CD%2C%E7%1A%E9%F0%E4U8%D8%22%F0%F7%19%F39Q%26%F7%F8%D2%D2%FC%FD%03%D8C%E0%40%828%0C%C6C%C8C%A1%3A%86%09%1D%8E%83HC%E2D%8A3%2Cj%C3X%D1%14%22%C7%88%0A%3F%E6%08%29r%A4%C0%92%05%17%A2L%B9%D1D%02%21%F9%04%05%05%04%2C%3C%02BB%03%FEH4%3C%FA0%CAI%AB%9D%AD%DD%CD%7B%CD%99%27%8E%16%A8%91hj2i%3B%AE%8E%2Bo%F0l%7F%EB%ADG%B5%2B%FC%82%DD%A3%97%02%02%85%8B%5C%D1x%DC%11I%CC%A6%EE%29%8AJo%D4%8E%F5j%CBr%B6A%A1%F7%02F%26M%D0%ADy%5C%29%AF%95Z7%92%3D%91%CF%E1%1Bp%F8%8D%8E%5B%CDCx%16v%7C%20%7EQ%80%81%7Ddj%89%0At%0Az%8E%8F%82u%8D%93%90%92%93%94%21%8C%7F%9B%8A1%83%97.%01%A6%01%3B%84%28%A7%A7%3A%A4%AB%AC%AC7%AF%22%B1%B6%AEL%29%B6%BB%A9%5C%1E%BB%BC%A0%1B%C0%C1%C2%15%C4%C5%C6%12%C8%B7%CA%14%CC%B1%CE%13%D0%B2%D2%11%D4%AD%D6%D7%D8%A8%DA%10%DC%DE%CB%D0%E1%D3%C8%E4%CF%C4%E7%C7%CD%EA%EB%A6%ED%F0%F1%F2%F3%F4%F5%F6%F7%F8%F9%FA%FA%FD%FE%FF%03%024%26%B0%A0%C1%7F%A0%0E*4%B8i%A1%C3%81%93%1EJ%04%D0p%A2%C3%84%16%0F%12%CC%28%03PA%02%21%F9%04%05%05%04%2CN%0A0W%03%ECH%BA%BC%F3%A3%C9I%2B%85%D0%EA%7Dq%E6%E0%E6%7Da%29%8D%A4%A9%A2%A9Z%B2%91%BB%B2%B2%0B%D7%E6%8D%87p%BCs%BA%9F%28%28%B4%10%8B%1D%14r%A8%5CV%8ENF%2F%9A%1CQ%27%D3k%03z%E5%AA%04%60%81%91%B6%0B%87%9F%CD%9Ay%5D%C5%A8%D7%EC%B6%CF%04%AF%8F%1F%B2%BA%9D%AA%DF%3B%FB%7EH%80p%7C%83fQ%86%87%7F%89%60%85%8C%8E%86Z%89Z%0A%83%94%0B%80%97%0C%81%9A%95g%9D%A0%A1%A2%A3%A4%A5%A6%A7%A8%A9%AA*%01%AD%AE%AF%B0%B1%B05%B2%B5%B6%AF.%B7%BA%B6%AC%BB%BE%B8%26%BF%C2%01%BD%C3%BB%B9%C6%B7%B4%C9%B2%AB%CE%CF%D0%D1%D2%D3%D4%D52%D8%A5%D9%DC%A2%DC%DF%DA%9D%E0%DF%E2%E3%E4%94%E6%E3%E8%E9%E0Z%EC%ED%EE%EF%DD%F1%F2%D8%F4%F5%EB%F5%E1W%FA%FB%FC%F8%F9%D8%95K%17%8A%A0%B7s%A3%E6QH%21%F9%04%05%05%04%2CN%1F0W%03%E9H%BA%DC%FEn%C8%01%AB%BDmN%CC%3B%D1%A0%27F%608%8Eez%8A%A9%BAb%AD%FBV%B1%3C%93%B5v%D3%B9%BE%E3%3D%CA%2F%13%94%0C%81%BD%231%A8D%B6%9A%8F%1C%14R%9B%F2L%D6%AB0%CB%EDz%BF%E0%B0xL.%9B%CF%5C%81z%CDn%BB%DB%B3%B7%7C%CE%5E%D1%EF%F3%13%7E%0F%1F%F1%FF%02z%80%7Bv%83tq%86oh%8B%8C%8D%8E%8F%90%91%92%93%0A%01%96%01f%97%9Ac%9A%9D%98%60%9E%9D%A0%A1%A2%5D%A4%A1%A6%A7%9E%5C%AA%AB%AC%AD%9B%AF%B0%96%B2%B3%A9%B3%9FY%B8%B9%10%BE%2F%B8%15%BF%BF%C1%B0%BD%C4%C5%C6%A7%C8%C9%C07%CC%0F%CE%CA%D0%A5%D2%D3%CF%3B%B1%C3%D8b%D8%BE%DE%DDa%DF%D9_%DFc%E7%E3%E2%EA%D3%E1%EB%E6%EF%5E%E4%EE%CE%E8%F1%5D%E9%EC%F5%FA%FB%60%F9%FE%ED%E8%11%23%D3%CF%1E%B8%29%09%21%F9%04%05%05%04%2C%3C%3CBB%03%F9H%BA%DC%FEP%8DI%AB%BD6%EA%1D%B1%FF%15%27r%60%F9%8D%E8c%AEY%EAJl%FC%BE%B1%3C%BB%B5y%CF%F9%B9%FF%C0%A0pH%2C%1A%8F%C8%A4r%C9l%3A%9F%D0%A8tJ%10X%05%D4%D7u%9B%1Dm%BF%D8%AE%06%FC%15G%C8%60%B3%03MV3%D8mw%15%5E%96%CF%E9W%FB%1D%1Fv%F3%F3v%7FVz%82F%01%87%017%7FD%88%88%8AxC%8D%8D%3Bt%91%92%87%40l%96%97%89%99u%11%A1%1C%9C%98A%5C%1A%A2%A2%A4%A5O%AA%AA%1B%A5%A6L%AF%AB%B1%ADM%B5%A1%AC%B8K%BA%A3%BC%97%B9%BA%23%B2%B4%C4%22%C6%BE%C8%C9%BDH%BF%28%B2%9D%CF%CC%CD%9CJ%D0%D1%CAG%D9%DA%D7%D4%B5%2F%DBE%DD%DE%C2%DC%D5%E6%92%E8%E1%E2%E3B%E5%29%EFA%F1%F2%DFD%F5%EA%8E%E4%E9.%E7%FC%EDvLb%F7J%8F%83%7Cv%10%CAQ%E8%86%A1%1A%87%0F%0B%1A%7Ckb%83%04%21%F9%04%05%05%04%2C%1FNW0%03%FFH%BA%DC%FE0%CA7%EA%988%EB%CD%89%FD%5D%28%8E%CDg%5Ed%AAJ%A7%B9%BE%B0%D7%BAq%1D%CE%AD%ADkx%BE%FF%90%DE%09Ht%08i%C5%E4%11%94%2C.-M%E5%13%15%05N5%80%2C%E0%27%E8%0AFO%8CV%AB%F3z%C1%C7%C9x%5C3%9BIB%F5%3A%DBvwU8%C9%9C%1C%B3%9F%F1H%10%7Bt%13%01%86%01%18%7Ew%2BL%11%83%5B%85%87%86%89%8AQ%8F%90%11%92%92%13%8A%8BE%8F%18%9A%87%94%7EI%97%A1%A2%88%9C%9D%9F%83%19%A9%AA%AB%A5%40%A0%AF%A9%1A%AC%3F%B5%A8%A2%B8%95%3B%BB%BC%9A%1B%B95%A7%1A%B0%C4%C50%C1%C2%9B%CA%B3%CC%CD%91%BD%D0%D1%2B%D3%D4%C3%1C%CB%29%D9%DA%CF%DC%BF*%DF%12%C9%1D%DD%22%E5%E6%B7%21%E9%1C%C7%1D%E7%E8%EFX%AE%22%F3%F4%D7%1D%F7%F8%ED%22%E3B%F4%0B%91O%9F%1BokR%144%E8%89%04%1B%85%FFF%BC%A9%E2l%14%C5%28%0B%2F%FE%C8%A8Q%13%07%C7%8E5%3E%82%84%21r%E4%8Bj%26%89%84K%A9%20%01%21%F9%04%05%05%04%2C%0ANW0%03%FFH%BA%DC%0E%10%B8I%AB%BD8%B7%C8%B5%FF%E0%C7%8DRh%9E%219%A2lK%A9%A4%2B%B7%B0%3A%DF%60m%E3%3C%A6%C7%BD%E0%E4%B7%12%1A%17%C4%CEq%99%8C%2C%8FM%C8%13%DA%9CR%89%A7%806%20%1Cx%07%99dv%AB%ED%7D%BF%3E%1D%8AL%C6%9D%CF%97Z%8B%BDu%BF%BDi%25%8B%5E%BF%DD%D1qN.%7Ce%17%02%87%02%18%7FxV%04%84%5C%86%88%87%8A%8BV%8F%90%15%92%92%17%8B%8CK%8F%18%9A%88%94%7FO%97%A1%A2%89%9C%9D%9F%84%19%A9%AA%AB%A5F%A0%AF%A9%1A%ACB%B5%A8%A2%B8%95A%BB%BC%9A%1E%B98%A7%1A%B0%C4%C53%C1%C2%9B%CA%B3%CC%CD%91%BD%D0%D1%83%AE%1F%C9%1F%CB%7B%D9%DA%B7%20%DDc%7C%21%DB%DC%BF%DE%E5%E6%E1%E2%E9%26%C7%20%E7%E8%EF%20%D3%C8%ED%EE%D7%F6%EB%26%F3%FAo%D6%F4cW%CDD%3D%7EmP%FC%03%E8I%60%21%85%F9%0C%02jDm%18E%2B%0B%2F%0A%C9%A8%B1%12%07%C7%8E8%3E%82%9C%21r%A4%8C%82%26%8D%3C%E3%91%21%F9%04%05%05%04%2C%02%3CBB%03%F5H%04%DC%FE%F0%A9I%AB%BD%98%C6%CD%5D%FE%E0%D5%8D%5Ch%82d*%9D%AC%A5%BE%40%2BO%B0%3A%DF%F5x%EF%F9%B6%FF%C0%A0pH%2C%1A%8F%C8%A4r%C9l%3A%9F%D0%A8tJ%3D%05%AE%81%AA%0C%CB%D5%9A%B8%E0%AC7%13%06%8F%2F%E5%F0%99%92.%AF%09m%F7%3A%AE%3E%D3%CD%F6%3B%F6%AD%DF%E7%FB%7C%80%81w%3B%02%86%02Fz%85%87%86Et%3F%8C%8CDmA%91%87%8Ex%40%96%97%98WC%9B%8D%20%03%A3%03R%A0%88%A2%A4%A3P%A7%A8%19%AA%AAO%A7%21%B0%A4N%AD%B4%B5%A5M%B3%B9%B5%BC%A0%27%BA%BBK%BD%BE%B0L%C6%C7%B1J%B8%C2%BA%C5%C1%2C%C3%CD%CA%CB%B6I%D6%D7%ABH%DA%DB%C4F%DE%A9%BFG%E2%E3%C8%E1%E6%1F%D4%E9%9B%3B%ECE%D27%F0D%F23%F4%F5%91%40%F8%F9%A1%3F%FCo%26%0CH%60%60%40%83o%10%AEQx%86aCt%0410K%21%F9%04%05%05%04%2C%02%1F0W%03%E7H%BA%0C%0E%2C%CAIk%7B%CE%EAM%B1%E7%E0%E6%8Da%29%8D%A8%A9%A2%A9Z%B2%AD%CB%C1%B1%AC%D1%A4%7D%E3%98.%F2%0F%DF%0E%08%11v%88E%E3%04%A9%AC%9B%16%1C4%0A%9B%0E%7B%D6_%26%CB%EDz%BF%E0%B0xL.%9B%CF%A1%80z%CDn%BB%DB%B6%B7%7C%CEv%D1%EFs%15%7E%0F7%F1%FF%01z%80%7Bv%83tq%86oh%8B%8C%8D%8E%8F%90%91%92%93h%02%96%02f%97%9Ac%9A%9D%98%60%9E%9D_%A1%9E%5D%A4%A1Y%A7%A8V%AA%A5S%AD%A2%AF%B0%97%A9%B3%96%AC%B6%9F%B2%B3%5C%B62%03%C0%03%16%BC.%C1%C1%15%AD6%C6%C6%14%A7%3E%CB%C7%CD%B1%3A%D0%D1%D2%B7B%D5%C0b%DA%C2a%DD%DE%60%DD%DC%E3%DF%DA%E4%D5c%E5%E2%E7%E6%ED%EC%E9%EE%F1%F0%D0%E8%F5%F6%CB%F8%CC%F2%F7%F4%F9%FA%DB%D4%CD%D3wf%9F%86%04%21%F9%04%09%05%04%2C%02%02%7C%7C%03%FFH%BA%DC%FE0%CAI%AB%BD8%EB%CD%BB%FF%60%28%8Edi%9Eh%AA%AEl%EB%BEp%2C%CFt%0A%DC%40%AD%938%BE%FF%9E%5E%0FH%CC%08%7D%C5%24%E5%88T%3A%1D%CC%E6sJ%88%E6%A8X%2B%96%AA%DDN%BB%5E%A5%F5%1AN%82%CB%C41%DA%1C%5D%B3%99%EEt%3B%0E%3C%D3i%EA%BB%CE%AE%8F%E5%FB3%7C%80%12%01%85%01%21%82%83%0E%86%86%20%89%8A%0B%8C%92%1Fs%90%10%92%98%1D%95%96%8B%98%99%1BG%9C%11%9E%9E%1CC%A2%A3%A4%9F%A8%26%AA%A5%AC%AD%AE%93%B0%24%B2%B3%B4%23%B6%8C%B8%B5%BA%85%BC%22%BE%BF%C0%21%C2%C4%C1%B6%C7%B9%AE%CA%CB%A4%CD%BD%B7%D0%CE%87%D3%D6%D7%D8%D9%DA%DB%DC%DD%DE%DF%E0%E1%C0%02%E4%E5%E6%E7%E8%E7%DC%E9%EC%ED%E6%DA%EE%F1%ED%D9%F2%F5%EA%D8%F6%F9%02%F4%FA%F5%F0%FD%EE%D6%01L%27%AE%A0%C1%83%08%13*%5C%C8%B0%A1%C3%87h%06H%1Cq%C1%C4%8B%10%2Fj%A4%D8pP%A3F%86%1E7*%0C%E9%11%21%C9%92%07O%8A4%A8%F2%23%CB%96%13M%C2%94%98r%26%C7%970%13%CE%5C%98%93%E7I%87%24%2B%AE%ACH%23%D1%A3H%93*%5D%CA%B4%A9%D3%A7P%A3J%9DJ%B5%AA%D5%ABX%B3j%DD%CA%B5%AB%D7%AF%60%C3%16I%3B" /&gt;&lt;p id="greasedLightboxLoadingText"&gt;Loading image&lt;/p&gt;&lt;p id="greasedLightboxLoadingHelp"&gt;Click anywhere to cancel&lt;/p&gt;&lt;/div&gt;&lt;div id="greasedLightboxError"&gt;&lt;p id="greasedLightboxErrorMessage"&gt;Image unavailable&lt;/p&gt;&lt;p id="greasedLightboxErrorContext"&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;img id="greasedLightboxPreload" /&gt;&lt;img id="greasedLightboxPrefetch" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3339269982693982986-4542437187767920718?l=reachbeyondgrasp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reachbeyondgrasp.blogspot.com/feeds/4542437187767920718/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3339269982693982986&amp;postID=4542437187767920718' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3339269982693982986/posts/default/4542437187767920718'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3339269982693982986/posts/default/4542437187767920718'/><link rel='alternate' type='text/html' href='http://reachbeyondgrasp.blogspot.com/2009/01/emacs-beginner-setup.html' title='Emacs - a beginner&apos;s setup'/><author><name>Raja</name><uri>http://www.blogger.com/profile/17138871434315349022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_sPKRuJS_w8Q/SV_mfKQUJII/AAAAAAAABrA/_7GT79m2XFM/s72-c/Screenshot.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3339269982693982986.post-4808387709305192824</id><published>2008-10-15T17:02:00.004-05:00</published><updated>2008-10-15T17:19:53.900-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='google calendar'/><category scheme='http://www.blogger.com/atom/ns#' term='lightning'/><category scheme='http://www.blogger.com/atom/ns#' term='thunderbird'/><category scheme='http://www.blogger.com/atom/ns#' term='thinkpad'/><category scheme='http://www.blogger.com/atom/ns#' term='thinkfinger'/><category scheme='http://www.blogger.com/atom/ns#' term='intrepid'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Ubuntu Intrepid upgrade problems solved</title><content type='html'>Oct 15, 2008&lt;br /&gt;&lt;br /&gt;I recently upgraded two of my computers to Ubuntu 8.10 (Intrepid) which was in alpha at that time and is beta at present. Some small thing always seems to break for me with an upgrade and this time there were two issues, which I have finally managed to sort out this week.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1. Google calendar in Thunderbird&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I had my google calendar nicely set up in Thunderbird using the &lt;a href="https://addons.mozilla.org/en-US/thunderbird/addon/2313"&gt;Lightning&lt;/a&gt; and &lt;a href="https://addons.mozilla.org/en-US/thunderbird/addon/4631"&gt;Provider for Google calendar&lt;/a&gt; extensions. After the upgrade, my google calendar wasn't displaying anymore and moreover all the calendar related menu items were disabled. Finally I found the answer &lt;a href="http://www.mozilla.org/projects/calendar/lightning/system-requirements.html"&gt;here&lt;/a&gt;.&lt;br /&gt;I uninstalled lightning and provider, did a 'sudo aptitude install libstdc++5', then reinstalled the extensions. On restarting thunderbird, the calendar was now there as before.. a relief.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2. Fingerprint reader and thinkfinger&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;After the upgrade, my fingerprint reader appeared to not be working. Swiping the finger elicited no response at all. Searching in launchpad brought me &lt;a href="https://bugs.launchpad.net/ubuntu/+source/thinkfinger/+bug/256429"&gt;here&lt;/a&gt; showing others were having the same issue. Surprisingly it seemed that the fingerprint identification was working, but needed a carriage return (Enter key) after the swipe to work. Some workarounds are beginning to appear (though nothing final) and what worked for me was a simple change in xorg.conf. Adding the line&lt;br /&gt;'InputDevice     "Generic Keyboard"' to the "ServerLayout" section got the reader working again after a restart of xserver.&lt;br /&gt;&lt;br /&gt;Hope these help someone with simlar issues.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3339269982693982986-4808387709305192824?l=reachbeyondgrasp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reachbeyondgrasp.blogspot.com/feeds/4808387709305192824/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3339269982693982986&amp;postID=4808387709305192824' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3339269982693982986/posts/default/4808387709305192824'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3339269982693982986/posts/default/4808387709305192824'/><link rel='alternate' type='text/html' href='http://reachbeyondgrasp.blogspot.com/2008/10/ubuntu-intrepid-upgrade-problems-solved.html' title='Ubuntu Intrepid upgrade problems solved'/><author><name>Raja</name><uri>http://www.blogger.com/profile/17138871434315349022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3339269982693982986.post-9066578513468229850</id><published>2008-10-04T10:22:00.005-05:00</published><updated>2008-10-04T10:49:53.030-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eepee'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='medicine'/><title type='text'>Eepee - the electrophysiologist's tool</title><content type='html'>04 Oct 2008&lt;br /&gt;&lt;a href="http://code.google.com/p/eepee/"&gt;Eepee&lt;/a&gt; is my attempt to make a tool for cardiologists to analyze ECG and Electrophysiology tracings.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_sPKRuJS_w8Q/SOePmzvHPjI/AAAAAAAABFw/g3zoacwbJtI/s1600-h/crushed.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_sPKRuJS_w8Q/SOePmzvHPjI/AAAAAAAABFw/g3zoacwbJtI/s400/crushed.png" alt="" id="BLOGGER_PHOTO_ID_5253325387236589106" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The study of these tracings requires one to make various measurements and compare them. While this is available along with the acquisition software in the lab, review of these tracings for teaching or learning is usually done with printed / scanned tracings without an easy way to dynamically measure things. The usual approach is to use project a series of these tracings on powerpoint, while any measurements have to be made on a paper copy with hand-held calipers.&lt;br /&gt;&lt;br /&gt;Eepee is an attempt to smoothly provide all this functionality with digital images. At its current state (version 0.9), the user can load any digital image, calibrate the x-axis with known measurement in the image and then use digital calipers to make measurements. Notes can also be made for any image. Notes and calibration are automatically stored for each image and are reloaded the next time.&lt;br /&gt;&lt;br /&gt;It is still not past version 1.0 meaning that it is beta, but it is getting relatively complete and stable. It works on windows and linux and can be got here. I welcome any suggestions / comments.&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/REZXxo_uDGA&amp;amp;hl=en&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;embed src="http://www.youtube.com/v/REZXxo_uDGA&amp;amp;hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" 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/3339269982693982986-9066578513468229850?l=reachbeyondgrasp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reachbeyondgrasp.blogspot.com/feeds/9066578513468229850/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3339269982693982986&amp;postID=9066578513468229850' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3339269982693982986/posts/default/9066578513468229850'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3339269982693982986/posts/default/9066578513468229850'/><link rel='alternate' type='text/html' href='http://reachbeyondgrasp.blogspot.com/2008/10/eepee-electrophysiologists-tool.html' title='Eepee - the electrophysiologist&apos;s tool'/><author><name>Raja</name><uri>http://www.blogger.com/profile/17138871434315349022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_sPKRuJS_w8Q/SOePmzvHPjI/AAAAAAAABFw/g3zoacwbJtI/s72-c/crushed.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3339269982693982986.post-2885007679185414122</id><published>2008-08-03T22:05:00.009-05:00</published><updated>2008-12-10T01:28:12.772-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python travel basemap geopy flickr'/><title type='text'>Worth a thousand words !</title><content type='html'>Reading a mail from a couple of friends who have been on a long trip gave me an idea. For someone geographically dyslexic like me, a map to show the places visited is essential. And more pictures to illustrate the text will not hurt. Like &lt;a href="http://en.wikipedia.org/wiki/Alice_In_Wonderland"&gt;Alice&lt;/a&gt; said, what good is a story without pictures?&lt;br /&gt;&lt;br /&gt;Why not write some code that will draw a map, plotting the places visited and then pull out some pictures from flickr tagged with the place name? With all the pictures, now it will be easy to make an illustrated travel journal in html or pdf (with latex).&lt;br /&gt;&lt;br /&gt;Python &lt;a href="http://xkcd.com/353/"&gt;as always&lt;/a&gt; made the task amazingly easy. Python's 'battery power' was in full display as I was able to use diverse libraries to do all the stuff. Google maps provided me with the latitude and longitude of each place through &lt;a href="http://exogen.case.edu/projects/geopy/"&gt;geopy&lt;/a&gt;, a geocoding toolbox for python. Then, the &lt;a href="http://www.scipy.org/Cookbook/Matplotlib/Maps"&gt;basemap toolkit&lt;/a&gt; of matplotlib allowed me to plot these coordinates on a map. For each place, I searched flickr for most interesting pictures tagged with the place name and then made a photosheet with 8 of the pictures. I used &lt;a href="http://code.google.com/p/flickrpy/"&gt;flickrpy&lt;/a&gt; to access the flickr API and then used &lt;a href="http://www.pythonware.com/products/pil/"&gt;PIL &lt;/a&gt;(Python Imaging Library) to combine the pictures.&lt;br /&gt;&lt;br /&gt;Those interested can download the code &lt;a href="http://ggeek.googlecode.com/files/mapmytrip.py"&gt;here&lt;/a&gt; and look at it. Map is a class that draws a map with a list of places like this -&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_sPKRuJS_w8Q/SJbzHY772PI/AAAAAAAAA_M/z7E2eKXHlWY/s1600-h/mapsm.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_sPKRuJS_w8Q/SJbzHY772PI/AAAAAAAAA_M/z7E2eKXHlWY/s320/mapsm.png" alt="" id="BLOGGER_PHOTO_ID_5230635325515880690" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The class PhotoSheet pulls in the pictures from flickr and makes a sheet like this (for Istanbul).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_sPKRuJS_w8Q/SJbzWBZAx1I/AAAAAAAAA_U/CVhPxW7l8Ew/s1600-h/image_Istanbul.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_sPKRuJS_w8Q/SJbzWBZAx1I/AAAAAAAAA_U/CVhPxW7l8Ew/s320/image_Istanbul.jpg" alt="" id="BLOGGER_PHOTO_ID_5230635576893425490" 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/3339269982693982986-2885007679185414122?l=reachbeyondgrasp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reachbeyondgrasp.blogspot.com/feeds/2885007679185414122/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3339269982693982986&amp;postID=2885007679185414122' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3339269982693982986/posts/default/2885007679185414122'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3339269982693982986/posts/default/2885007679185414122'/><link rel='alternate' type='text/html' href='http://reachbeyondgrasp.blogspot.com/2008/08/worth-thousand-words.html' title='Worth a thousand words !'/><author><name>Raja</name><uri>http://www.blogger.com/profile/17138871434315349022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_sPKRuJS_w8Q/SJbzHY772PI/AAAAAAAAA_M/z7E2eKXHlWY/s72-c/mapsm.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3339269982693982986.post-3144003925863952195</id><published>2008-06-16T19:56:00.005-05:00</published><updated>2008-06-16T20:09:23.796-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gmail'/><category scheme='http://www.blogger.com/atom/ns#' term='dzen'/><category scheme='http://www.blogger.com/atom/ns#' term='xmonad'/><title type='text'>Gmail notifier for dzen - updated</title><content type='html'>I have an updated gmail notifier script for dzen. You can download the files from &lt;a href="http://ggeek.googlecode.com/files/checkgmail.tar.gz"&gt;here&lt;/a&gt;. The username and password are now arguments that are supplied to the script. An icon is also displayed with the icon being different for no mail versus new mail. Note that you need the development version of dzen for all of this to work.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3339269982693982986-3144003925863952195?l=reachbeyondgrasp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reachbeyondgrasp.blogspot.com/feeds/3144003925863952195/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3339269982693982986&amp;postID=3144003925863952195' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3339269982693982986/posts/default/3144003925863952195'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3339269982693982986/posts/default/3144003925863952195'/><link rel='alternate' type='text/html' href='http://reachbeyondgrasp.blogspot.com/2008/06/gmail-notifier-for-dzen-updated.html' title='Gmail notifier for dzen - updated'/><author><name>Raja</name><uri>http://www.blogger.com/profile/17138871434315349022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3339269982693982986.post-822142936853475765</id><published>2008-04-29T19:18:00.009-05:00</published><updated>2008-12-10T01:28:13.823-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kde4'/><category scheme='http://www.blogger.com/atom/ns#' term='kubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>A first look at Kubuntu KDE4</title><content type='html'>While I have tried out KDE in the past, Gnome has always been my everyday working environment. Kubuntu Hardy KDE4 version was an opportunity to test if KDE4 was going to change that.&lt;br /&gt;I installed Kubuntu KDE4 on my Thinkpad. KDE4 does look nice with a Mac like feel. But it felt sometimes like there is too much accent on looks. This is the default desktop with a couple of widgets.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_sPKRuJS_w8Q/SBe_NwCCybI/AAAAAAAAA7M/SDoXh1hJxpM/s1600-h/blank.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_sPKRuJS_w8Q/SBe_NwCCybI/AAAAAAAAA7M/SDoXh1hJxpM/s320/blank.png" alt="" id="BLOGGER_PHOTO_ID_5194830938147834290" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Dolphin looks much better than konqueror as the file browser.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_sPKRuJS_w8Q/SBe_RgCCycI/AAAAAAAAA7U/_fhjzWClrgk/s1600-h/dolphin.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_sPKRuJS_w8Q/SBe_RgCCycI/AAAAAAAAA7U/_fhjzWClrgk/s320/dolphin.png" alt="" id="BLOGGER_PHOTO_ID_5194831002572343746" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;One application that really grabbed my attention was Okular. It looked really nice and was very functional too. The ability to use a highlighter in PDF documents was something I have been looking for. This is one application I might want to install in my Gnome environment too.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_sPKRuJS_w8Q/SBe_VgCCydI/AAAAAAAAA7c/cgUo46eVLIY/s1600-h/okular.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_sPKRuJS_w8Q/SBe_VgCCydI/AAAAAAAAA7c/cgUo46eVLIY/s320/okular.png" alt="" id="BLOGGER_PHOTO_ID_5194831071291820498" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;At the end of the day, KDE4 still failed to impress. It still looks far too incomplete and is definitely not going to replace Gnome on my desktop in the near future.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3339269982693982986-822142936853475765?l=reachbeyondgrasp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reachbeyondgrasp.blogspot.com/feeds/822142936853475765/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3339269982693982986&amp;postID=822142936853475765' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3339269982693982986/posts/default/822142936853475765'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3339269982693982986/posts/default/822142936853475765'/><link rel='alternate' type='text/html' href='http://reachbeyondgrasp.blogspot.com/2008/04/first-look-at-kubuntu-kde4.html' title='A first look at Kubuntu KDE4'/><author><name>Raja</name><uri>http://www.blogger.com/profile/17138871434315349022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_sPKRuJS_w8Q/SBe_NwCCybI/AAAAAAAAA7M/SDoXh1hJxpM/s72-c/blank.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3339269982693982986.post-932906906762176567</id><published>2008-03-15T21:22:00.003-05:00</published><updated>2008-04-03T20:28:07.742-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='thinkpad'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='hardy'/><title type='text'>Ubuntu Hardy on Thinkpad x61s</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Update:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;The brightness hot keys problem referred to below is fixed in kernel 2.6.24.14 that is available now.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Installation:&lt;/span&gt;&lt;br /&gt;New install using the PC desktop cd of Ubuntu Hardy alpha 6.&lt;br /&gt;Since the X series thinkpads dont have an inbuilt optical drive I created a live USB from the iso using the isotostick script from &lt;a href="http://startx.ro/sugar/isotostick.sh"&gt;here&lt;/a&gt;. Bootup into the live environment and installation from there was faster than I have ever experienced.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;What works out of the box:&lt;/span&gt;&lt;br /&gt;No installation issues.&lt;br /&gt;Compiz-fusion runs beautifully.&lt;br /&gt;Sound, wireless need no additional work, thanks to Intel.&lt;br /&gt;Suspend and hibernate work out of the box!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Needed tweaking:&lt;/span&gt;&lt;br /&gt;While the volume control keys work, the Fn-Home and Fn-End key combinations to change LCD screen brightness did not work. This is the bug reported in https://bugs.launchpad.net/ubuntu/+source/linux/+bug/198476 and as I mentioned there, the fix (temporary) reported in https://bugs.launchpad.net/ubuntu/+bug/172985 worked for me.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Setting up the fingerprint reader:&lt;/span&gt;&lt;br /&gt;I got my thinkpad with the fingerprint reader, but the ease of setting it up was a pleasant surprise. Just followed the instructions &lt;a href="http://www.thinkwiki.org/wiki/How_to_enable_the_fingerprint_reader_with_ThinkFinger"&gt;here&lt;/a&gt; with the difference being that you dont need to add any additional repos - thinkfinger is added in the official Hardy repos.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Not working, could not fix:&lt;/span&gt;&lt;br /&gt;Well, really nothing for now! I am happy I removed Vista (after just booting into it to update the bios drivers). After 30 mins of Vista, booting into Ubuntu seemed like moving a century into the future ! All developers associated with Ubuntu and linux can be proud of the work they have done and the product they have created. And of course, Thinkpads are made for Linux.. too bad they come with Vista pre-installed and Lenovo refused to sell me one with no OS or with an option to refuse the license and get a refund. But thats another story...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3339269982693982986-932906906762176567?l=reachbeyondgrasp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reachbeyondgrasp.blogspot.com/feeds/932906906762176567/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3339269982693982986&amp;postID=932906906762176567' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3339269982693982986/posts/default/932906906762176567'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3339269982693982986/posts/default/932906906762176567'/><link rel='alternate' type='text/html' href='http://reachbeyondgrasp.blogspot.com/2008/03/ubuntu-hardy-on-thinkpad-x61s.html' title='Ubuntu Hardy on Thinkpad x61s'/><author><name>Raja</name><uri>http://www.blogger.com/profile/17138871434315349022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3339269982693982986.post-8390255611447917029</id><published>2008-01-26T18:46:00.000-05:00</published><updated>2008-01-26T19:18:24.434-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Eeepc'/><category scheme='http://www.blogger.com/atom/ns#' term='Gnome'/><category scheme='http://www.blogger.com/atom/ns#' term='Wmctrl'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Wrapping workspaces in Gnome</title><content type='html'>One source of frustration sometimes with gnome is that there is no way to wrap workspaces like in KDE, compiz or even the other window managers like XFCE. This means that, if like me you use 'move to workspace right' and 'move to workspace left' frequently while working, it can frustrating not to be able to get back to workspace 1 from the last one in one simple step. &lt;br /&gt;&lt;br /&gt;Searching for some way to do this, I came upon &lt;a href="http://ubuntuforums.org/archive/index.php/t-637598.html"&gt;this post&lt;/a&gt; describing the use of wmctrl to do this. I had never heard of wmctrl before, but it turns out to be pretty cool. So go ahead, install it (sudo aptitude install wmctrl) and now - &lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1px solid rgb(221, 221, 197); background: rgb(248, 248, 243) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style=";font-family:Tahoma,Sans,Arial,Helvetica,sans-serif;font-size:78%;color:BLACK;" &gt;&lt;br /&gt;raja@eee:~$ wmctrl -d&lt;br /&gt;0  - DG: 800x480  VP: N/A  WA: 0,2 800x476  Desk 1&lt;br /&gt;1  - DG: 800x480  VP: N/A  WA: 0,2 800x476  Desk 2&lt;br /&gt;2  - DG: 800x480  VP: N/A  WA: 0,2 800x476  Desk 3&lt;br /&gt;3  * DG: 800x480  VP: 0,0  WA: 0,2 800x476  Desk 4&lt;br /&gt;&lt;br /&gt;raja@eee:~$ wmctrl -s 1 &amp;&amp; wmctrl -d&lt;br /&gt;0  - DG: 800x480  VP: N/A  WA: 0,2 800x476  Desk 1&lt;br /&gt;1  * DG: 800x480  VP: 0,0  WA: 0,2 800x476  Desk 2&lt;br /&gt;2  - DG: 800x480  VP: N/A  WA: 0,2 800x476  Desk 3&lt;br /&gt;3  - DG: 800x480  VP: N/A  WA: 0,2 800x476  Desk 4&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;As we can see, 'wmctrl -d' lists the desktops and places an asterisk to indicate the current desktop. And 'wmctrl -s n' allows us to switch to the desktop n, with the desktops being numbered from 0 onwards.  &lt;br /&gt;&lt;br /&gt;With this knowledge, it is easy to write a couple of scripts to switch to the desktop on the left and the one on the right, with wrapping enabled.&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1px solid rgb(221, 221, 197); background: rgb(248, 248, 243) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style=";font-family:Tahoma,Sans,Arial,Helvetica,sans-serif;font-size:78%;color:BLACK;" &gt;&lt;br /&gt;#!/bin/bash&lt;br /&gt;&lt;br /&gt;#ws_wrap_lt.sh&lt;br /&gt;&lt;br /&gt;#get number of workspaces&lt;br /&gt;ws=$(wmctrl -d | wc -l)&lt;br /&gt;&lt;br /&gt;#current workspace index&lt;br /&gt;cws=$(wmctrl -d | awk '/\*/ {print $1}')&lt;br /&gt;&lt;br /&gt;#work space on left&lt;br /&gt;lws=$(($cws-1))&lt;br /&gt;&lt;br /&gt;#wrap if required&lt;br /&gt;if [ $lws = -1 ]; then&lt;br /&gt;  lws=$(($ws-1))&lt;br /&gt;fi&lt;br /&gt;echo $lws&lt;br /&gt;&lt;br /&gt;#change to next workspace&lt;br /&gt;wmctrl -s $lws&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;and ..&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1px solid rgb(221, 221, 197); background: rgb(248, 248, 243) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style=";font-family:Tahoma,Sans,Arial,Helvetica,sans-serif;font-size:78%;color:BLACK;" &gt;&lt;br /&gt;#!/bin/bash&lt;br /&gt;&lt;br /&gt;#ws_wrap_rt.sh&lt;br /&gt;&lt;br /&gt;#get number of workspaces&lt;br /&gt;ws=$(wmctrl -d | wc -l)&lt;br /&gt;&lt;br /&gt;#current workspace index&lt;br /&gt;cws=$(wmctrl -d | awk '/\*/ {print $1}')&lt;br /&gt;&lt;br /&gt;#work space on right&lt;br /&gt;rws=$(($cws+1))&lt;br /&gt;&lt;br /&gt;#wrap if required&lt;br /&gt;if [ $rws = $ws ]; then&lt;br /&gt;  rws=0&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;#change to next workspace&lt;br /&gt;wmctrl -s $rws&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Save the files somewhere and now you can use gconf-editor to map commands to these scripts. Then you can set up a desired key or key combination to run these commands. An option is also to use only one of the scripts and rotate through the workspaces with one key. On the eeepc, I have mapped the 'menu' key to ws_wrap_rt.sh and use just that key to get to any workspace I want. If you use only two workspaces,one key works to toggle the workspaces.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3339269982693982986-8390255611447917029?l=reachbeyondgrasp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reachbeyondgrasp.blogspot.com/feeds/8390255611447917029/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3339269982693982986&amp;postID=8390255611447917029' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3339269982693982986/posts/default/8390255611447917029'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3339269982693982986/posts/default/8390255611447917029'/><link rel='alternate' type='text/html' href='http://reachbeyondgrasp.blogspot.com/2008/01/wrapping-workspaces-in-gnome.html' title='Wrapping workspaces in Gnome'/><author><name>Raja</name><uri>http://www.blogger.com/profile/17138871434315349022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3339269982693982986.post-5395670453925687515</id><published>2008-01-14T19:11:00.000-05:00</published><updated>2008-01-26T19:06:57.719-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Eeepc'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Ubuntu on my eee</title><content type='html'>I bought an eeepc a couple of days back after my thinkpad was stolen. While it is considered to be a secondary computer at best, it seemed worthwhile trying it out. I think it was an unfortunate choice of linux distribution by asus and there was no way I was going to be stuck with xandros. So the decision was only between Ubuntu and Archlinux. I decided on the former because it seemed to be better documented on the eee and would take less time to set up (so I thought). &lt;br /&gt;&lt;br /&gt;It was finally 4 hours before I had Ubuntu running. Briefly, what learned were - &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;1. Netboot does not work&lt;/span&gt;&lt;br /&gt;Well, the eee can PXE boot once boot from lan is enabled in the bios, but the netboot image of either gutsy or feisty dont seem to have the modules for the ethernet card, so its a no-go after that.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;2. Cannot find casper/.vml&lt;/span&gt; &lt;br /&gt;If you followed the instructions &lt;a href="https://help.ubuntu.com/community/Installation/FromUSBStick"&gt;here&lt;/a&gt; to make a bootable USB drive and get the error message 'cannot find casper/.vml' when trying to boot, just move vmlinuz and initd.img from the casper folder into the root directory of the usb drive and then modify the locations accordingly in syslinux.cfg.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;3. Booting from the usb drive&lt;/span&gt;&lt;br /&gt;I struggled a bit to boot from the usb drive - it wouldnt boot even after setting 'removable drive' as the first in boot order in the bios. It seems like the usb drive was being added as a second hard drive. The more reliable way to boot into the drive was to hold down the Esc key which offers a choice of devices to boot from.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;4. Nothing older than gutsy &lt;/span&gt;&lt;br /&gt;I had a gutsy beta iso already downloaded, so used it the first time. Which was unfortunate because it does not have the module for the ethernet and so I ended up without a working wired or wireless connection. Re-installing with the final gutsy iso solved the issue. &lt;br /&gt;&lt;br /&gt;After all these unexpected difficulties, I finally had Ubuntu on the eee and spent the next day tweaking it. It boots in just under 40 seconds and seems to last about 2hrs30min on the battery. &lt;br /&gt;&lt;br /&gt;All in all, it looks like a good deal!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3339269982693982986-5395670453925687515?l=reachbeyondgrasp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reachbeyondgrasp.blogspot.com/feeds/5395670453925687515/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3339269982693982986&amp;postID=5395670453925687515' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3339269982693982986/posts/default/5395670453925687515'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3339269982693982986/posts/default/5395670453925687515'/><link rel='alternate' type='text/html' href='http://reachbeyondgrasp.blogspot.com/2008/01/ubuntu-on-my-eee.html' title='Ubuntu on my eee'/><author><name>Raja</name><uri>http://www.blogger.com/profile/17138871434315349022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3339269982693982986.post-3396397713156618667</id><published>2007-12-08T07:56:00.002-05:00</published><updated>2008-12-10T01:28:14.053-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dzen xmonad gmail'/><title type='text'>Gmail notify for dzen</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_sPKRuJS_w8Q/R1wIyuVT1FI/AAAAAAAAA0s/v6MuaOdOkeQ/s1600-h/scr.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_sPKRuJS_w8Q/R1wIyuVT1FI/AAAAAAAAA0s/v6MuaOdOkeQ/s320/scr.png" alt="" id="BLOGGER_PHOTO_ID_5141994542074156114" border="0" /&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;16 June 2008 Update: I have updated the notifier - please read &lt;a href="http://reachbeyondgrasp.blogspot.com/2008/06/gmail-notifier-for-dzen-updated.html"&gt;here&lt;/a&gt; for details&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Notification of new mail in my gmail account is very important to me on my desktop and therefore that was the first thing I tried to solve once I set up xmonad and dzen. Fortunately, it wasn't that difficult. The following script checks the mail and formats the output for the latest development version of dzen2 (see &lt;a href="http://reachbeyondgrasp.blogspot.com/2007/11/xmonad-on-ubuntu-setting-it-up.html"&gt;previous post&lt;/a&gt;).&lt;br /&gt;To use it, add your username and password and edit the other variables to change the color of the output, number of new mails to show and words to show in the subject for each mail. Note that I have opted to put the password in a hidden file with proper permissions and the script reads the file for the password.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;You can read more about this and download the script from the dzen wiki &lt;a href="http://robm.selfip.net/wiki.sh/-main/DzenGmailNotify"&gt;here&lt;/a&gt;. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1px solid rgb(221, 221, 197); background: rgb(248, 248, 243) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style=";font-family:Tahoma,Sans,Arial,Helvetica,sans-serif;font-size:78%;color:BLACK;"   &gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#!/usr/bin/env python&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#========================================================================&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#      Copyright 2007 Raja &amp;lt;rajajs@gmail.com&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#      This program is free software; you can redistribute it and/or modify&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#      it under the terms of the GNU General Public License as published by&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#      the Free Software Foundation; either version 2 of the License, or&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#      (at your option) any later version.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#      This program is distributed in the hope that it will be useful,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#      but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#      GNU General Public License for more details.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#      You should have received a copy of the GNU General Public License&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#      along with this program; if not, write to the Free Software&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#      Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#==========================================================================&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;# ======================================================================&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;# Modified from code originally written by Baishampayan Ghose&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;# Copyright (C) 2006 Baishampayan Ghose &amp;lt;b.ghose@ubuntu.com&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;# ======================================================================&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(160, 32, 240);"&gt;import&lt;/span&gt; urllib&lt;br /&gt;&lt;span style="color: rgb(160, 32, 240);"&gt;import&lt;/span&gt; feedparser&lt;br /&gt;&lt;br /&gt;_url = "&lt;span style="color: rgb(255, 0, 255);"&gt;&lt;a href="https://mail.google.com/gmail/feed/atom"&gt;https://mail.google.com/gmail/feed/atom&lt;/a&gt;&lt;/span&gt;"&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;##################   Edit here      #######################&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#pwd = xxxx                            # pwd stored in script&lt;/span&gt;&lt;br /&gt;_pwdfile = '&lt;span style="color: rgb(255, 0, 255);"&gt;/path_to/hidden/pwd_file&lt;/span&gt;'  &lt;span style="color: rgb(0, 0, 255);"&gt;# pwd stored in a file&lt;/span&gt;&lt;br /&gt;_username = '&lt;span style="color: rgb(255, 0, 255);"&gt;XXXX&lt;/span&gt;'&lt;br /&gt;_calmcolor = '&lt;span style="color: rgb(255, 0, 255);"&gt;white&lt;/span&gt;'&lt;br /&gt;_alertcolor = '&lt;span style="color: rgb(255, 0, 255);"&gt;red&lt;/span&gt;'&lt;br /&gt;_maxmails = 5  &lt;span style="color: rgb(0, 0, 255);"&gt;# maximum new mails to show&lt;/span&gt;&lt;br /&gt;_maxwords = 3  &lt;span style="color: rgb(0, 0, 255);"&gt;# maximum words to show in each mail header&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;###########################################################&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(165, 42, 42);"&gt;&lt;b&gt;class&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 139, 139);"&gt;GmailRSSOpener&lt;/span&gt;(urllib.FancyURLopener):&lt;br /&gt;  '''&lt;span style="color: rgb(255, 0, 255);"&gt;Logs on with stored password and username&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;       Password is stored in a hidden file in the home folder&lt;/span&gt;'''&lt;br /&gt;&lt;br /&gt;  &lt;span style="color: rgb(165, 42, 42);"&gt;&lt;b&gt;def&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 139, 139);"&gt;prompt_user_passwd&lt;/span&gt;(self, host, realm):&lt;br /&gt;      &lt;span style="color: rgb(0, 0, 255);"&gt;#uncomment line below if password directly entered in script.&lt;/span&gt;&lt;br /&gt;      pwd = open(_pwdfile).read()&lt;br /&gt;      &lt;span style="color: rgb(165, 42, 42);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; (_username, pwd)&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(165, 42, 42);"&gt;&lt;b&gt;def&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 139, 139);"&gt;auth&lt;/span&gt;():&lt;br /&gt;  '''&lt;span style="color: rgb(255, 0, 255);"&gt;The method to do HTTPBasicAuthentication&lt;/span&gt;'''&lt;br /&gt;  opener = GmailRSSOpener()&lt;br /&gt;  f = opener.open(_url)&lt;br /&gt;  feed = f.read()&lt;br /&gt;  &lt;span style="color: rgb(165, 42, 42);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; feed&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(165, 42, 42);"&gt;&lt;b&gt;def&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 139, 139);"&gt;showmail&lt;/span&gt;(feed):&lt;br /&gt;  '''&lt;span style="color: rgb(255, 0, 255);"&gt;Parse the Atom feed and print a summary&lt;/span&gt;'''&lt;br /&gt;  atom = feedparser.parse(feed)&lt;br /&gt;  newmails = len(atom.entries)&lt;br /&gt;  &lt;span style="color: rgb(165, 42, 42);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt; newmails == 0:&lt;br /&gt;      title = "&lt;span style="color: rgb(255, 0, 255);"&gt;^fg(%s) You have no new mails&lt;/span&gt;" % (_calmcolor)&lt;br /&gt;  &lt;span style="color: rgb(165, 42, 42);"&gt;&lt;b&gt;elif&lt;/b&gt;&lt;/span&gt; newmails == 1:&lt;br /&gt;      title = "&lt;span style="color: rgb(255, 0, 255);"&gt;^fg(%s) You have 1 new mail&lt;/span&gt;"  % (_alertcolor)&lt;br /&gt;  &lt;span style="color: rgb(165, 42, 42);"&gt;&lt;b&gt;else&lt;/b&gt;&lt;/span&gt;:&lt;br /&gt;      title = "&lt;span style="color: rgb(255, 0, 255);"&gt;^fg(%s) You have %s new mails&lt;/span&gt;" % (_alertcolor,newmails)&lt;br /&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 0, 255);"&gt;# print the title with formatting&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(165, 42, 42);"&gt;&lt;b&gt;print&lt;/b&gt;&lt;/span&gt; "&lt;span style="color: rgb(255, 0, 255);"&gt;^tw()&lt;/span&gt;" +title&lt;br /&gt;  &lt;span style="color: rgb(0, 0, 255);"&gt;#clear the slave window&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(165, 42, 42);"&gt;&lt;b&gt;print&lt;/b&gt;&lt;/span&gt; "&lt;span style="color: rgb(255, 0, 255);"&gt;^cs()&lt;/span&gt;"&lt;br /&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 0, 255);"&gt;#then print the messages&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(165, 42, 42);"&gt;&lt;b&gt;for&lt;/b&gt;&lt;/span&gt; i &lt;span style="color: rgb(165, 42, 42);"&gt;&lt;b&gt;in&lt;/b&gt;&lt;/span&gt; range(min(_maxmails,newmails)):&lt;br /&gt;&lt;br /&gt;      emailtitle = atom.entries[i].title&lt;br /&gt;      &lt;span style="color: rgb(0, 0, 255);"&gt;# show only first few words if title is too long&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: rgb(165, 42, 42);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt; len(emailtitle.split()) &amp;gt; _maxwords:&lt;br /&gt;          emailtitle = '&lt;span style="color: rgb(255, 0, 255);"&gt; &lt;/span&gt;'.join(emailtitle.split()[:_maxwords])&lt;br /&gt;&lt;br /&gt;      &lt;span style="color: rgb(165, 42, 42);"&gt;&lt;b&gt;print&lt;/b&gt;&lt;/span&gt; "&lt;span style="color: rgb(255, 0, 255);"&gt;^fg(%s) %s from %s&lt;/span&gt;" % (_calmcolor, emailtitle, atom.entries[i].author)&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(165, 42, 42);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt; __name__ == "&lt;span style="color: rgb(255, 0, 255);"&gt;__main__&lt;/span&gt;":&lt;br /&gt;  feed = auth()&lt;br /&gt;  showmail(feed)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;This bash script calls the dzenGmailNotify script at specified intervals.&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1px solid rgb(221, 221, 197); background: rgb(248, 248, 243) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style=";font-family:Tahoma,Sans,Arial,Helvetica,sans-serif;font-size:78%;color:BLACK;"   &gt;&lt;br /&gt;#!/bin/bash&lt;br /&gt;&lt;br /&gt;#checkgmail.sh&lt;br /&gt;&lt;br /&gt;while true ; do&lt;br /&gt;  python dzenGmailNotify.py&lt;br /&gt;  sleep 30&lt;br /&gt;done&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Finally, make the above executable and add this to .xsession to display in dzen.&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1px solid rgb(221, 221, 197); background: rgb(248, 248, 243) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style=";font-family:Tahoma,Sans,Arial,Helvetica,sans-serif;font-size:78%;color:BLACK;"   &gt;&lt;br /&gt;./checkgmail.sh | dzen2 -ta r -l 5 -bg '#808080' -x 700 -w 380 &amp;amp;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3339269982693982986-3396397713156618667?l=reachbeyondgrasp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reachbeyondgrasp.blogspot.com/feeds/3396397713156618667/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3339269982693982986&amp;postID=3396397713156618667' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3339269982693982986/posts/default/3396397713156618667'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3339269982693982986/posts/default/3396397713156618667'/><link rel='alternate' type='text/html' href='http://reachbeyondgrasp.blogspot.com/2007/12/gmail-notify-for-dzen.html' title='Gmail notify for dzen'/><author><name>Raja</name><uri>http://www.blogger.com/profile/17138871434315349022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_sPKRuJS_w8Q/R1wIyuVT1FI/AAAAAAAAA0s/v6MuaOdOkeQ/s72-c/scr.png' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3339269982693982986.post-6966153123033028800</id><published>2007-11-11T09:58:00.000-05:00</published><updated>2008-12-10T01:28:14.204-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xmonad ubuntu'/><title type='text'>Xmonad on Ubuntu - setting it up</title><content type='html'>My setup (and what seems to be the most common way to set it up) consists of modifying xmonad 'Config.hs' and configuring dzen, dmenu and the '.xsession' file.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Config.hs&lt;/span&gt;&lt;br /&gt;Xmonad does not load settings dynamically from a configuration file. Instead, the settings are compiled into the binary. This means that changes in the settings require xmonad to be recompiled and reloaded. This is not as hard as it sounds, however. &lt;br /&gt;Looking at the Config.hs, you will find it fairly simple and easy to understand. The first thing I did was changes the number of workspaces to 4 with names for them.&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1px solid rgb(221, 221, 197); background: rgb(248, 248, 243) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style=";font-family:Tahoma,Sans,Arial,Helvetica,sans-serif;font-size:78%;color:BLACK;" &gt;&lt;br /&gt;workspaces :: [WorkspaceId]&lt;br /&gt;workspaces = ["terminal", "web", "work", "coding"]&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;The next setting you may want to change is the modMask which determines which will be the modifier key (Alt is the default) - I was content with the default. &lt;br /&gt;The other import change to make is to create a gap for the dzen bar at the top - like this...&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1px solid rgb(221, 221, 197); background: rgb(248, 248, 243) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style=";font-family:Tahoma,Sans,Arial,Helvetica,sans-serif;font-size:78%;color:BLACK;" &gt;&lt;br /&gt;defaultGaps :: [(Int,Int,Int,Int)]&lt;br /&gt;defaultGaps = [(18,0,0,0)] -- 15 for default dzen font&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;In the window rules, you might want to choose the applications that should always display in the floating mode (that is, not tiled). You can also choose here to open some applications only on a specific workspace, browsers in the 'web' workspace, editors in the 'coding' workspace and so on.&lt;br /&gt;Next is the section for changing the keybindings though I will stick to the default keybindings for now. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Compiling&lt;/span&gt;&lt;br /&gt;Once the changes are done, you have to compile Xmonad again. If you want to experiment with some settings and will be doing this repeatedly, it is logical to put these lines as a shell script.&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1px solid rgb(221, 221, 197); background: rgb(248, 248, 243) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style=";font-family:Tahoma,Sans,Arial,Helvetica,sans-serif;font-size:78%;color:BLACK;" &gt; &lt;br /&gt;#!/bin/bash&lt;br /&gt;#recompile.sh&lt;br /&gt;&lt;br /&gt;runhaskell Setup.lhs build&lt;br /&gt;rm `which xmonad` &lt;br /&gt;runhaskell Setup.lhs install --user&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Now you just run recompile.sh and then press 'Alt-q' to restart xmonad on the fly. For examples of users config files see http://haskell.org/haskellwiki/Xmonad/Config_archive. If Alt-q doesnt seem to work (didnt for me at first), it is because xmonad is not in your PATH. Add this to your .bashrc - &lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1px solid rgb(221, 221, 197); background: rgb(248, 248, 243) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style=";font-family:Tahoma,Sans,Arial,Helvetica,sans-serif;font-size:78%;color:BLACK;" &gt;&lt;br /&gt;PATH=$PATH:/path/to/xmonad&lt;br /&gt;export PATH&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;dmenu&lt;/span&gt;&lt;br /&gt;dmenu provides a simple way to launch applications in xmonad. On pressing 'Alt-p' (the default keybinding), dmenu pops up. It allows you to type the name of the application to launch. As you type, the possible candidates are shown and you need not type the whole name if there is only one option left. I installed dmenu from the repository (sudo aptitude install dmenu), but while it worked perfectly in gutsy, the dmenu in Feisty was not showing the completions. I solved this by downloading the source (http://www.suckless.org/download/dmenu-3.4.tar.gz) and then compiling it. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;dzen&lt;/span&gt;&lt;br /&gt;dzen is a very versatile program used for notification and display of status messages. The best way to get is to compile from source. Once started, it fits into the 'gap' that we created in the xmonad display. Here is dzen in action - &lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_sPKRuJS_w8Q/R1MtwOVT1EI/AAAAAAAAA0U/CHSfN7sxX60/s1600-R/xmonad_dzen.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_sPKRuJS_w8Q/R1MtwOVT1EI/AAAAAAAAA0U/F6767Y5HaYU/s320/xmonad_dzen.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5139501906264314946" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Though this screenshot shows the latest release, you should consider checking out the development version. &lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1px solid rgb(221, 221, 197); background: rgb(248, 248, 243) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style=";font-family:Tahoma,Sans,Arial,Helvetica,sans-serif;font-size:78%;color:BLACK;" &gt;&lt;br /&gt;svn checkout http://dzen.googlecode.com/svn/trunk dzen&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;The development version makes it easier to pipe output selectively to the master and slave windows and also has better gadgets (gcpubar instead of cpubar). &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;xsession&lt;/span&gt;&lt;br /&gt;And finally modify the xsession file to add programs you want at startup. My .xsession file currently looks like this&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1px solid rgb(221, 221, 197); background: rgb(248, 248, 243) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style=";font-family:Tahoma,Sans,Arial,Helvetica,sans-serif;font-size:78%;color:BLACK;" &gt;&lt;br /&gt;unclutter -idle 1 &amp;&lt;br /&gt;/home/raja/xmonad/genstatusmessage | dzen2 -ta l -fg '#ffffff' -bg '#808080' -x 0 -w 430 &amp;&lt;br /&gt;/home/raja/xmonad/cpubar | dzen2 -fg '#ffffff' -bg '#808080' -x 430 -w 300 &amp;&lt;br /&gt;/home/raja/xmonad/genemailmessage | dzen2 -ta l -l 3 -fg '#ffffff' -bg '#808080' -x 730 -w 350 &amp;&lt;br /&gt;gnome-settings-daemon &amp;&lt;br /&gt;gnome-power-manager &amp;&lt;br /&gt;rxvt -bg black -fg white &amp;&lt;br /&gt;firefox &amp;&lt;br /&gt;xmonad&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;The first line starts unclutter (available in the Ubuntu repos) which hides the mouse cursor after the set idle time (1 sec). Watch out for problems with loss of keyboard focus that has been occasionally reported with unclutter. &lt;br /&gt;The next three lines start 3 instances of dzen. The first dzen shows the output of my genstatusmessage script shown here&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1px solid rgb(221, 221, 197); background: rgb(248, 248, 243) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style=";font-family:Tahoma,Sans,Arial,Helvetica,sans-serif;font-size:78%;color:BLACK;" &gt;&lt;br /&gt;#!/bin/bash&lt;br /&gt;while true ; do&lt;br /&gt;    temp=`cat /proc/acpi/thermal_zone/THM0/temperature | awk '{print $2}'`&lt;br /&gt;    bt=`acpi -b | awk '{print $5,$6}'`&lt;br /&gt;    m=`date +"%H:%M %a %b %d"`&lt;br /&gt;    printf "%s | Temp: %s C | Batt: %s \n" "$tm" "$temp" "$bt"&lt;br /&gt;    sleep 30&lt;br /&gt;done &lt;br /&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;The other script genemailmessage checks my gmail and gives the count of new messages as well as the headers of the new messages - but that is for another post!&lt;br /&gt;Starting the gnome-power-manager allows suspend on closing the laptop lid.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3339269982693982986-6966153123033028800?l=reachbeyondgrasp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reachbeyondgrasp.blogspot.com/feeds/6966153123033028800/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3339269982693982986&amp;postID=6966153123033028800' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3339269982693982986/posts/default/6966153123033028800'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3339269982693982986/posts/default/6966153123033028800'/><link rel='alternate' type='text/html' href='http://reachbeyondgrasp.blogspot.com/2007/11/xmonad-on-ubuntu-setting-it-up.html' title='Xmonad on Ubuntu - setting it up'/><author><name>Raja</name><uri>http://www.blogger.com/profile/17138871434315349022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_sPKRuJS_w8Q/R1MtwOVT1EI/AAAAAAAAA0U/F6767Y5HaYU/s72-c/xmonad_dzen.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3339269982693982986.post-5013487114763457276</id><published>2007-10-27T18:08:00.000-05:00</published><updated>2007-12-05T15:26:36.888-05:00</updated><title type='text'>Installing Xmonad on Ubuntu</title><content type='html'>&lt;a href="http://www.xmonad.org/"&gt;Xmonad&lt;/a&gt; is the new kid on the block among the tiling window managers. Tiling window managers (some of  the other prominent ones being ratpoison, dwm or Ion, arrange windows automatically to tile the screen without overlap or gaps, maximizing screen usage. To those who remember the tiling windows in old Windows and Mac systems, this might seem like a step backward. But in todays world of wide screen monitors and multi-head displays, tiling window managers can be highly productive, not to mention the fact that the mouse is mostly superfluous in most of these window managers. Anyway, it doesnt hurt to try it out and a choice of window managers is one of the fantastic things about Linux. If you just want to try out a tiling window manager, dwm is available in the Ubuntu repos. But if you want to try Xmonad, you have to build it from source. This is what worked for me. Most of the instructions are based on those given at the site, but some modifications are needed for the specific dependencies in Ubuntu and to install the latest version of Xmonad. These are the instructions for installing on Ubuntu Feisty and have not been tested on Gutsy. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;1. Install the Haskell compiler and the mtl core library.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1px solid rgb(221, 221, 197); background: rgb(248, 248, 243) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style=";font-family:Tahoma,Sans,Arial,Helvetica,sans-serif;font-size:78%;color:BLACK;" &gt;&lt;br /&gt;sudo aptitude install ghc6&lt;br /&gt;sudo aptitude install libghc6-mtl-dev&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;2. Download and install the X11 bindings for Haskell&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1px solid rgb(221, 221, 197); background: rgb(248, 248, 243) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style=";font-family:Tahoma,Sans,Arial,Helvetica,sans-serif;font-size:78%;color:BLACK;" &gt;&lt;br /&gt;cd /tmp&lt;br /&gt;wget http://hackage.haskell.org/packages/archive/X11/1.2.2/X11-1.2.2.tar.gz&lt;br /&gt;tar -xzf X11-1.2.2.tar.gz&lt;br /&gt;cd X11-1.2.2&lt;br /&gt;runhaskell Setup.hs configure --prefix=$HOME&lt;br /&gt;runhaskell Setup.hs build&lt;br /&gt;runhaskell Setup.hs install --user&lt;br /&gt;cd ..&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;3. Download and install the X11-extras bindings&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1px solid rgb(221, 221, 197); background: rgb(248, 248, 243) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style=";font-family:Tahoma,Sans,Arial,Helvetica,sans-serif;font-size:78%;color:BLACK;" &gt;&lt;br /&gt;wget http://hackage.haskell.org/packages/archive/X11-extras/0.4/X11-extras-0.4.tar.gz&lt;br /&gt;tar -xzf X11-extras-0.4.tar.gz&lt;br /&gt;cd X11-extras-0.4&lt;br /&gt;runhaskell Setup.lhs configure --prefix=$HOME&lt;br /&gt;runhaskell Setup.lhs build&lt;br /&gt;runhaskell Setup.lhs install --user&lt;br /&gt;cd ..&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;4. Install dmenu and dzen (Optional, provides status bar and menu)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1px solid rgb(221, 221, 197); background: rgb(248, 248, 243) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style=";font-family:Tahoma,Sans,Arial,Helvetica,sans-serif;font-size:78%;color:BLACK;" &gt;&lt;br /&gt;sudo aptitude install dmenu&lt;br /&gt;&lt;br /&gt;wget http://gotmor.googlepages.com/dzen2-latest.tar.gz&lt;br /&gt;tar -xzf dzen2-latest.tar.gz&lt;br /&gt;cd dzen2-0.8.5&lt;br /&gt;sudo make clean install&lt;br /&gt;cd gadgets&lt;br /&gt;sudo make clean install&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;5. Download and build Xmonad&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1px solid rgb(221, 221, 197); background: rgb(248, 248, 243) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style=";font-family:Tahoma,Sans,Arial,Helvetica,sans-serif;font-size:78%;color:BLACK;" &gt;&lt;br /&gt;mkdir ~/xmonad&lt;br /&gt;cd ~/xmonad&lt;br /&gt;wget http://hackage.haskell.org/packages/archive/xmonad/0.4/xmonad-0.4.tar.gz&lt;br /&gt;tar xzf xmonad-0.4.tar.gz&lt;br /&gt;cd xmonad-0.4&lt;br /&gt;runhaskell Setup.lhs configure --prefix=$HOME&lt;br /&gt;runhaskell Setup.lhs build&lt;br /&gt;runhaskell Setup.lhs install --user&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Note that I have opted to store the xmonad source files in an accessible directory. Dont delete it yet. Any changes in the configuration of Xmonad are made in the source code and then you have to recompile the binary. &lt;br /&gt;&lt;br /&gt;The best way to add xmonad to the gdm menu is to create a .xsession file. In the simplest form this will be &lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1px solid rgb(221, 221, 197); background: rgb(248, 248, 243) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style=";font-family:Tahoma,Sans,Arial,Helvetica,sans-serif;font-size:78%;color:BLACK;" &gt;&lt;br /&gt;#~/.xsession&lt;br /&gt;xmonad&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Now when you log in you will have an option titled 'xsession script' and choosing it will launch xmonad. Look at the xmonad site to learn the keyboard shortcuts before you start. We have to configure xmonad to create a space for dzen and write some scripts to pipe some output to the dzen status bar. This and other customizations in the next post.&lt;br /&gt;&lt;br /&gt;See my &lt;a href="http://reachbeyondgrasp.blogspot.com/2007/11/xmonad-on-ubuntu-setting-it-up.html"&gt;next post&lt;/a&gt; for setting up Xmonad.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3339269982693982986-5013487114763457276?l=reachbeyondgrasp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reachbeyondgrasp.blogspot.com/feeds/5013487114763457276/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3339269982693982986&amp;postID=5013487114763457276' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3339269982693982986/posts/default/5013487114763457276'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3339269982693982986/posts/default/5013487114763457276'/><link rel='alternate' type='text/html' href='http://reachbeyondgrasp.blogspot.com/2007/10/installing-xmonad-on-ubuntu.html' title='Installing Xmonad on Ubuntu'/><author><name>Raja</name><uri>http://www.blogger.com/profile/17138871434315349022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3339269982693982986.post-8617117283514604154</id><published>2007-10-15T16:20:00.000-05:00</published><updated>2007-10-17T20:29:29.859-05:00</updated><title type='text'>Upgrading to Gutsy - lessons learnt</title><content type='html'>Having previously had problems when upgrading from Edgy to Feisty, I took extra care this time around. I saved an image of my root and home partitions (with partimage on systemrescue cd) to begin with. I then uninstalled Beryl and commented out unofficial repositories in my sources list. Having done that, I started the upgrade with 'update-manager -d' (needed only till the final release is out). The upgrade went quite well this time and soon I had gutsy running smoothly on my desktop. Few of the lessons I learnt were - &lt;br /&gt;&lt;br /&gt;1. Dont know if it is required to uninstall Beryl, but that worked for me.&lt;br /&gt;2. Good idea to make sure you have about 50o-1000 MB free space on your root partition before you start.&lt;br /&gt;3. While it is not required to 'babysit' during the long upgrade process, check on it once in a while. Once, coming back after a couple of hours, I found it waiting for me to declare if I wanted to keep some old configuration files or change them.&lt;br /&gt;4. Virtualbox worked after running the setup once. This made it easy since there is no package for gutsy at the virtualbox site and the repos only have the OSE (which is lacking in some features).&lt;br /&gt;&lt;br /&gt;All in all, it was a pretty painless upgrade and if you are, like me, debating if you should upgrade or do a fresh install, it seems worthwhile trying the upgrade if you have the system already set up to your liking.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3339269982693982986-8617117283514604154?l=reachbeyondgrasp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reachbeyondgrasp.blogspot.com/feeds/8617117283514604154/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3339269982693982986&amp;postID=8617117283514604154' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3339269982693982986/posts/default/8617117283514604154'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3339269982693982986/posts/default/8617117283514604154'/><link rel='alternate' type='text/html' href='http://reachbeyondgrasp.blogspot.com/2007/10/upgrading-to-gutsy-lessons-learnt.html' title='Upgrading to Gutsy - lessons learnt'/><author><name>Raja</name><uri>http://www.blogger.com/profile/17138871434315349022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3339269982693982986.post-7553892869994325203</id><published>2007-09-13T19:27:00.000-05:00</published><updated>2008-12-10T01:28:14.709-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='liveUSB'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Carry the gibbon in your pocket: How to make a liveUSB of Gutsy Gibbon with persistence</title><content type='html'>The live CD is a fantastic tool to try out linux and many distros have them now. The newer feature is 'persistence' where changed settings are stored for future sessions. Combining persistence with a live USB allows you to really carry your desktop with you on just a USB stick. These are the steps that I needed to make a live USB with the Tribe 5 release of Ubuntu Gutsy.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;This is not intended to be a standalone howto. I am not duplicating all steps and workarounds detailed in the &lt;a href="https://wiki.ubuntu.com/LiveUsbPendrivePersistent"&gt;Ubuntu wiki&lt;/a&gt;, so I suggest that you have that by the side if you are trying this. Also, I refer to the disk as /dev/sdb because that was what it was for me. I cannot emphasize enough that this may be different for you and blindly copying the commands can end up in formatting another drive&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;WHAT YOU NEED:&lt;/span&gt;&lt;br /&gt;1. An USB drive with capacity of atleast 1 GB.&lt;br /&gt;2. A live cd of Gutsy  - The iso will also do.&lt;br /&gt;3. A PC with linux or Windows.&lt;br /&gt;I am doing this with a Maxtor 2 GB drive using a pc running Ubuntu Fiesty and a live cd of Ubuntu Gutsy.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;STEP ONE: Partition the disk&lt;/span&gt;&lt;br /&gt;You will need to create atleast 2 partitions.&lt;br /&gt;One will be a primary FAT16 partition of 750 MB that is bootable.&lt;br /&gt;Second will be a primary ext2/ext3 partition for the persistence feature.&lt;br /&gt;I used 200 MB for the second partition and created a third partition in the remaining free space as FAT16.&lt;br /&gt;So plug in the USB drive and identify the device name for the drive. It is /dev/sdb for me and it is important to find this correctly so you dont partition or format another drive. The output for 'dmesg |tail', 'df -h' or 'mount' should help identify the correct drive. Opening the gnome partition editor also makes it easy to recognize the device.&lt;br /&gt;The partitioning itself can be done with either gparted, cfdisk or fdisk. The disk must be unmounted before doing the partitioning and all three methods are fairly easy, though someone used to GUIs may be more comfortable with gparted. These are a couple of screenshots with gparted.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_sPKRuJS_w8Q/Ru0UqJsYZqI/AAAAAAAAAmo/9CKh8H7D-MA/s1600-h/before.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_sPKRuJS_w8Q/Ru0UqJsYZqI/AAAAAAAAAmo/9CKh8H7D-MA/s320/before.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5110763866524509858" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_sPKRuJS_w8Q/Ru0VDZsYZrI/AAAAAAAAAmw/hr77flq9cjc/s1600-h/during.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_sPKRuJS_w8Q/Ru0VDZsYZrI/AAAAAAAAAmw/hr77flq9cjc/s320/during.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5110764300316206770" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_sPKRuJS_w8Q/Ru0VNZsYZsI/AAAAAAAAAm4/eZl-ukrHVJY/s1600-h/after.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_sPKRuJS_w8Q/Ru0VNZsYZsI/AAAAAAAAAm4/eZl-ukrHVJY/s320/after.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5110764472114898626" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Using fdisk and following the tutorial in the wiki also works perfectly (I tried it too). You will not yet be able to assign a label with any of these methods. As seen in the last screenshot, I ended up with the three partitions.&lt;br /&gt;Now the following commands assign labels to these partitions - Ubuntu keeps automounting the partitions, so I had to unmount them before this step.&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1px solid rgb(221, 221, 197); background: rgb(248, 248, 243) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style=";font-family:Tahoma,Sans,Arial,Helvetica,sans-serif;font-size:78%;color:BLACK;" &gt;&lt;br /&gt;sudo mkfs.vfat -F 32 -n gutsy /dev/sdb1&lt;br /&gt;sudo mkfs.ext2 -b 4096 -L casper-rw /dev/sdb2&lt;br /&gt;sudo mkfs.vfat -F 32 -n data /dev/sdb3&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Remember to change the device name if the name is not /dev/sdb* for you.&lt;br /&gt;So I have the three partitions with the labels now. The second partition has to be labeled 'casper-rw' so that is is recognised by the system as the partition to use for storing changes. You can choose different labels for the other two, if you wish.&lt;br /&gt;If the device is not mounted now, mount it manually or just unplug it and plug it back in to allow it to be automounted.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;STEP TWO: Copy necessary files&lt;/span&gt;&lt;br /&gt;I used the cd I had already burnt as the source for the files. If you have an iso only, you can mount the iso like this and use it as the source&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1px solid rgb(221, 221, 197); background: rgb(248, 248, 243) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style=";font-family:Tahoma,Sans,Arial,Helvetica,sans-serif;font-size:78%;color:BLACK;" &gt;&lt;br /&gt;mkdir /tmp/ubuntu&lt;br /&gt;sudo mount /path/to/iso /tmp/ubuntu -t iso9660 -o loop&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Now cd into the source directory (/media/cdrom or /tmp/ubuntu) from a terminal and then do the following to copy the files to the gutsy partition on the disk. I am assuming here that the partition is mounted as /media/gutsy.&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1px solid rgb(221, 221, 197); background: rgb(248, 248, 243) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span&gt; &lt;br /&gt;&lt;br /&gt;#cd into source directory&lt;br /&gt;cd /media/cdrom&lt;br /&gt;&lt;br /&gt;#Copy these folders&lt;br /&gt;cp -rf casper disctree dists install pics pool preseed .disk /media/gutsy&lt;br /&gt;&lt;br /&gt;#Copy all files from isolinux directory&lt;br /&gt;cp isolinux/* /media/gutsy&lt;br /&gt;&lt;br /&gt;#Copy these files into the root destination directory&lt;br /&gt;cp md5sum.txt README.diskdefines ubuntu.ico /media/edgy&lt;br /&gt;&lt;br /&gt;#Copy the kernel image and initrd from casper directory and mt86plus from install dir&lt;br /&gt;cp casper/vmlinuz casper/initrd.gz install/mt86plus /media/edgy&lt;br /&gt;&lt;br /&gt;#rename isolinux.cfg as syslinux.cfg&lt;br /&gt;mv isolinux.cfg syslinux.cfg&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;You can modify syslinux.cfg like this. Alternatively you can copy this and paste it in syslinux.cfg replacing everything else.&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1px solid rgb(221, 221, 197); background: rgb(248, 248, 243) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style=";font-family:Tahoma,Sans,Arial,Helvetica,sans-serif;font-size:78%;color:BLACK;" &gt;&lt;br /&gt;DEFAULT custom&lt;br /&gt;GFXBOOT bootlogo&lt;br /&gt;APPEND   preseed/file=preseed/ltsp.seed boot=casper initrd=initrd.gz ramdisk_size=1048576 root=/dev/ram rw quiet splash --&lt;br /&gt;LABEL custom&lt;br /&gt; menu label ^Start Ubuntu in persistent mode&lt;br /&gt; kernel vmlinuz&lt;br /&gt; append  preseed/file=preseed/ltsp.seed boot=casper persistent initrd=initrd.gz ramdisk_size=1048576 root=/dev/ram rw quiet splash --&lt;br /&gt;LABEL live&lt;br /&gt; menu label ^Start or install Ubuntu&lt;br /&gt; kernel vmlinuz&lt;br /&gt; append  preseed/file=preseed/ltsp.seed boot=casper initrd=initrd.gz ramdisk_size=1048576 root=/dev/ram rw quiet splash --&lt;br /&gt;LABEL xforcevesa&lt;br /&gt; menu label Start Ubuntu in safe ^graphics mode&lt;br /&gt; kernel vmlinuz&lt;br /&gt; append  preseed/file=preseed/ltsp.seed boot=casper xforcevesa initrd=initrd.gz ramdisk_size=1048576 root=/dev/ram rw quiet splash --&lt;br /&gt;LABEL check&lt;br /&gt; menu label ^Check CD for defects&lt;br /&gt; kernel vmlinuz&lt;br /&gt; append  boot=casper integrity-check initrd=initrd.gz ramdisk_size=1048576 root=/dev/ram rw quiet splash --&lt;br /&gt;LABEL memtest&lt;br /&gt; menu label ^Memory test&lt;br /&gt; kernel mt86plus&lt;br /&gt; append -&lt;br /&gt;LABEL hd&lt;br /&gt; menu label ^Boot from first hard disk&lt;br /&gt; localboot 0x80&lt;br /&gt; append -&lt;br /&gt;DISPLAY isolinux.txt&lt;br /&gt;TIMEOUT 300&lt;br /&gt;PROMPT 1&lt;br /&gt;F1 f1.txt&lt;br /&gt;F2 f2.txt&lt;br /&gt;F3 f3.txt&lt;br /&gt;F4 f4.txt&lt;br /&gt;F5 f5.txt&lt;br /&gt;F6 f6.txt&lt;br /&gt;F7 f7.txt&lt;br /&gt;F8 f8.txt&lt;br /&gt;F9 f9.txt&lt;br /&gt;F0 f10.txt&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Note that you have most of the boot options as in the live cd, but the default is the  custom option, which is the persistent mode here.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;STEP THREE: Make USB drive bootable&lt;/span&gt;&lt;br /&gt;We will install syslinux and mtools and use them to make the drive bootable&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1px solid rgb(221, 221, 197); background: rgb(248, 248, 243) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style=";font-family:Tahoma,Sans,Arial,Helvetica,sans-serif;font-size:78%;color:BLACK;" &gt;&lt;br /&gt;sudo aptitude install syslinux mtools&lt;br /&gt;sudo umount /dev/sdb1&lt;br /&gt;syslinux /dev/sdb1&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Worked perfectly for me.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;STEP FOUR: Checking it&lt;/span&gt;&lt;br /&gt;Reboot and change bios settings so that you boot from the USB drive. I was able to boot in without problems. I created a username and password (default user is 'ubuntu' without a password). I logged into my new account and changed terminal settings, changed the metacity theme and installed gnumeric. Shutdown, reboot again - and voila - all the changes are there!&lt;br /&gt;&lt;br /&gt;I had problem in a later session where I could not log into gnome with gnome complaining that it could not read the .ICEauthority file. Logging into a failsafe terminal and deleting the ~/.ICEauthority file allowed me to start gnome again.&lt;br /&gt;The casper-rw partition is the place where all data and changes are stored without any compression. So if you store any data in your home folder, you can see it here - that means it is is easy to retrieve it without booting in with the drive and also has implications for privacy.&lt;br /&gt;&lt;br /&gt;Things to explore:&lt;br /&gt;Find what is the ideal size for the casper-rw partition?&lt;br /&gt;Using an encrypted home or data folder?&lt;br /&gt;Dual boot with another linux distro?&lt;br /&gt;Is it possible to not automount the gutsy and casper-rw partitions by modifying udev rules so that all three partitions dont mount every time I insert the drive in my laptop?&lt;br /&gt;&lt;br /&gt;Summary:&lt;br /&gt;The process was much simpler than I had expected. Now I have a bootable Ubuntu drive with me all the time, while the 1 GB FAT partition is enough storage to use as a regular USB stick. Now when I am urging a friend to try out Linux, I know I have the gibbon ready in my pocket!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3339269982693982986-7553892869994325203?l=reachbeyondgrasp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reachbeyondgrasp.blogspot.com/feeds/7553892869994325203/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3339269982693982986&amp;postID=7553892869994325203' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3339269982693982986/posts/default/7553892869994325203'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3339269982693982986/posts/default/7553892869994325203'/><link rel='alternate' type='text/html' href='http://reachbeyondgrasp.blogspot.com/2007/09/carry-gibbon-in-your-pocket-how-to-make.html' title='Carry the gibbon in your pocket: How to make a liveUSB of Gutsy Gibbon with persistence'/><author><name>Raja</name><uri>http://www.blogger.com/profile/17138871434315349022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_sPKRuJS_w8Q/Ru0UqJsYZqI/AAAAAAAAAmo/9CKh8H7D-MA/s72-c/before.png' height='72' width='72'/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3339269982693982986.post-7544470344803671684</id><published>2007-08-07T18:36:00.000-05:00</published><updated>2007-08-07T18:49:01.326-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kdialog'/><category scheme='http://www.blogger.com/atom/ns#' term='dcop'/><category scheme='http://www.blogger.com/atom/ns#' term='zenity'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>A simple stopclock for kde and gnome</title><content type='html'>Zenity and Kdialog are two awesome applications to rapidly create simple applications with a gui frontend. Needing a simple way to start a timer for a few seconds to minutes, I chose to write a small script using zenity. Translating this later to work on kde with kdialog was an interesting exercise with some things being more difficult, but there being more flexibility too.&lt;br /&gt;&lt;br /&gt;Feel free to try these scripts in the DE of your choice. Typing 'stopclock 10' would start a countdown to 10, for example. Not something designed for practical use, but more as a demonstration of the use of zenity and kdialog. Also this is a good illustration of the use of dcop - another very powerful application that is not very well known or documented.&lt;br /&gt;&lt;br /&gt;1. stopclock.sh for KDE&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1px solid rgb(221, 221, 197); background: rgb(248, 248, 243) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style=";font-family:Tahoma,Sans,Arial,Helvetica,sans-serif;font-size:78%;color:BLACK;" &gt;&lt;br /&gt;#!/bin/sh&lt;br /&gt;&lt;br /&gt;if [ $# -ne 1 ]&lt;br /&gt;then&lt;br /&gt;   echo $#&lt;br /&gt;   echo "Usage: stopclock (number of seconds)"&lt;br /&gt;   exit&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;stime=$(date +%s)       #starting time&lt;br /&gt;etime=0                 #elapsed time&lt;br /&gt;stoptime=$1             #time at which to stop&lt;br /&gt;ltime=$stoptime         #time left&lt;br /&gt;&lt;br /&gt;d=$(kstart --ontop --alldesktops kdialog --progressbar "Starting countdown..." $stoptime)&lt;br /&gt;dcop $d setAutoClose true&lt;br /&gt;&lt;br /&gt;while [ "$etime" -lt "$stoptime" ]; do&lt;br /&gt;   sleep 1&lt;br /&gt;   ctime=$(date +%s)   #current time&lt;br /&gt;   : $((etime=$ctime-$stime))&lt;br /&gt;   : $((ltime-=1))&lt;br /&gt;   label=$ltime" seconds left"&lt;br /&gt;   dcop $d setLabel "$label"&lt;br /&gt;   dcop $d setProgress $etime&lt;br /&gt;done&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;2. stopclock.sh for Gnome&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1px solid rgb(221, 221, 197); background: rgb(248, 248, 243) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style=";font-family:Tahoma,Sans,Arial,Helvetica,sans-serif;font-size:78%;color:BLACK;" &gt;&lt;br /&gt;#!/bin/bash&lt;br /&gt;&lt;br /&gt;if [ $# -ne 1 ]&lt;br /&gt;then&lt;br /&gt;   echo $#&lt;br /&gt;   echo "Usage: stopclock (number of seconds)"&lt;br /&gt;   exit&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;stime=$(date +%s)       #starting time&lt;br /&gt;etime=0                 #elapsed time&lt;br /&gt;stoptime=$1             #time at which to stop&lt;br /&gt;ftime=0               #fraction of time elapsed &lt;br /&gt;label="counting down "$stoptime" seconds"&lt;br /&gt;&lt;br /&gt;while [ "$etime" -lt "$stoptime" ]; do&lt;br /&gt;   sleep 1&lt;br /&gt;   ctime=$(date +%s)   #current time&lt;br /&gt;   : $((etime=$ctime-$stime))&lt;br /&gt;   ftime=$(echo $etime*100/$stoptime | bc -l)&lt;br /&gt;   echo $ftime  &lt;br /&gt;done | zenity --progress --text="$label"&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3339269982693982986-7544470344803671684?l=reachbeyondgrasp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reachbeyondgrasp.blogspot.com/feeds/7544470344803671684/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3339269982693982986&amp;postID=7544470344803671684' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3339269982693982986/posts/default/7544470344803671684'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3339269982693982986/posts/default/7544470344803671684'/><link rel='alternate' type='text/html' href='http://reachbeyondgrasp.blogspot.com/2007/08/simple-stopclock-for-kde-and-gnome.html' title='A simple stopclock for kde and gnome'/><author><name>Raja</name><uri>http://www.blogger.com/profile/17138871434315349022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3339269982693982986.post-6766987683941595704</id><published>2007-06-30T17:44:00.000-05:00</published><updated>2007-06-30T18:12:44.281-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='Arch'/><title type='text'>Archlinux - First Impressions</title><content type='html'>After having been faithful to Ubuntu for about 3 years, I decided a month back to try another distro on my Thinkpad X 40. Debian or Suse did not seem to be different enough to be of interest. So I decided to try out something that is more 'hands on' than Ubuntu. After trying out a couple of distros on Virtualbox (by the way - another use for virtual machines), I decided to give Archlinux a try.&lt;br /&gt;Now I have Arch running for a week and am actually typing this from Arch - so it is time to give my first impressions. The main things that stand out in comparison to Ubuntu are -&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;System configuration&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;The Arch philosophy is to avoid using GUIs for configuration. Most of the configuration is done in /etc/rc.conf. The configuration files are well organized and nicely commented so that just a few days of using them and you begin to wonder why on earth you need a GUI for this.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Lean System&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;The recommended way to install Arch is to install the base only first and then add the packages you want. It is amazing how lean and fast the system feels when you do this. Ubuntu is very scaleable so that you can again do a server only install and then install the required packages, but I have never installed it that way and dont know if that would give a system as lean and fast as this.&lt;br /&gt;I have installed the packages I want and overall the system is significantly faster than when I use Ubuntu - I think it is the combination of having only required packages and  these being i686 optimized. Suspend works beautifully and suspend and resume are much faster too.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Rolling updates&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Arch has a system of rolling updates so that the different 'releases' are little more than arbitrary snapshots. Each day is a new release! I did the base install from an older release, but it is a breeze from there to update the base packages and then proceed. The rolling release means that the packages are often newer than those in Ubuntu (where I have had problems with older versions for quite a few apps).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Package Manager&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Pacman is an awesome package manager. While aptitude (or apt-get) has been good in Ubuntu, I think pacman is faster and more advanced. In Ubuntu, there is also some confusion with many ways of installing packages (Synaptic, Add/Remove, apt-get, aptitude, etc). Having one way to do it is simpler. &lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;Summary&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Archlinux is a splendid choice for an intermediate to advanced linux user who wants to try a leaner, faster and more flexible system. It is more demanding and takes more time to install than Ubuntu, but it is not as bad as Gentoo while still resulting in a very fast system and I think the extra time and effort is well spent.&lt;br /&gt;Looking at Ubuntu a little critically, I think it has become a gateway for newcomers emigrating from Windows. So most of the development seems to be going into easier installs, newbie-friendly single click configuration, GUIs for everything, etc. Arch, with almost opposite philosophy has been a refreshing change.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3339269982693982986-6766987683941595704?l=reachbeyondgrasp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reachbeyondgrasp.blogspot.com/feeds/6766987683941595704/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3339269982693982986&amp;postID=6766987683941595704' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3339269982693982986/posts/default/6766987683941595704'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3339269982693982986/posts/default/6766987683941595704'/><link rel='alternate' type='text/html' href='http://reachbeyondgrasp.blogspot.com/2007/06/archlinux-first-impressions.html' title='Archlinux - First Impressions'/><author><name>Raja</name><uri>http://www.blogger.com/profile/17138871434315349022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3339269982693982986.post-5802689928577802789</id><published>2007-06-02T10:48:00.000-05:00</published><updated>2007-06-11T19:28:00.197-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>10 tips to customise you new Ubuntu install</title><content type='html'>One of the best things about linux is that you can customise every aspect of it so that your computer really feel like yours. Here are a list of 10 things I do with a fresh install. These only reflect my preferences, but they should serve to let a newcomer know what tweaks are possible.&lt;br /&gt;The first three are related to the terminal - so those resolved not to touch the terminal can safely skip them.&lt;br /&gt;&lt;br /&gt;1. Terminal - looks&lt;br /&gt;&lt;br /&gt;(i) Open the terminal, go to Edit -&gt; Profiles and make a new profile with your name. In the 'General' tab, change the font and the font size to something you like.&lt;br /&gt;(ii) In the 'Title and Command' tab, you can choose to keep a fixed title (maybe just your name or a favorite quote) or if you enable dynamically-set title, you can have the title show dynamic information like the current directory.&lt;br /&gt;(iii) In the next tab 'Colors' you can choose the background and foreground colours for your terminal and then you can set some degree of transparency in the next tab if you like it.&lt;br /&gt;(iv) Finally, in the scrolling tab, you can disable the scrollbar if you prefer. In addition, if you right click in the terminal and uncheck 'Show Menubar', you have a pristine looking terminal without a distracting menubar or scrollbar and in colours and fonts that you like !&lt;br /&gt;&lt;br /&gt;2. Terminal - prompt&lt;br /&gt;&lt;br /&gt;The default prompt in ubuntu is usually in the form 'user@hostname:directory'. No worries, you can change it to your heart's desire. Again open ~/.bashrc. 'PS1' represents you command prompt and is defined in this file. Below the line defining your default prompt, you will find a commented out section defining a color prompt. You can uncomment this to get a prompt which is of a different color from the rest of the text. In addition, you can change the format of the font. Just remember that '\u' stands for username, '\h' for hostname and '\w' for the present working directory.&lt;br /&gt;&lt;br /&gt;3. Terminal - aliases&lt;br /&gt;&lt;br /&gt;Setting up aliases for commands that you use commonly makes life a lot easier. You can define these in the .bashrc file again. Towards the end of the file you will notice that there are some aliases already defined and commented out - you can use them if you want to. In addition you can define your own aliases. My favorite is to set up an alias for installing programs so that I dont have to type 'sudo aptitude install'  or 'sudo apt-get install' everytime. So at the end of my bashrc I have these lines -&lt;br /&gt;&lt;br /&gt;#My aliases&lt;br /&gt;alias getme='sudo aptitude install $1'&lt;br /&gt;alias batt='acpi -V | grep Battery'&lt;br /&gt;&lt;br /&gt;Now I can just type 'getme abiword', for example, when I want to instal abiword ! The other alias allows me to check the battery status on my laptop from the terminal by just typing 'batt'. Very useful when I have all the panels hidden and therefore cannot see the battery status applet.&lt;br /&gt;&lt;br /&gt;4. Desktop - themes&lt;br /&gt;&lt;br /&gt;Changing the wallpaper and windows themes to suit your taste is of course the most common way of customizing the looks. http://www.gnome-look.org/ is an excellent resource for wallpapers and themes if you want to go beyond the choices in the default install. A good idea is to choose the wallpaper first and then select a theme that matches the wallpaper in color and look. The themes are usually downloaded as 'xyz.tar.gz'. Dont uncompress them - just go to System -&gt; Preferences -&gt; Theme and drag the file you downloaded to install it.&lt;br /&gt;&lt;br /&gt;5. Desktop - panels&lt;br /&gt;&lt;br /&gt;Once you have the wallpapers and the theme set up, you can turn to the panels. You can add more panels or remove existing panels according to your taste. If you have a small screen, autohiding panels is useful to increase your screen estate. However,  when you right click on a panel and choose 'autohide', you will find that a bit of the panel still sticks out. This is because the autohide size is 6 pixels by default. If you dont like it, open gconf-editor and then go to '/apps/panel/toplevels/top_panel_screen0' and change 'auto_hide_size' to 0. Now, the panels stay well hidden and you have the full screen.&lt;br /&gt;However, to see something on the panel now, you have to hover over the edge with the mouse. A cool trick is to bind toggling the autohide to a keypress, so that you can hide and show the panels by just pressing a key. See &lt;a href="http://reachbeyondgrasp.blogspot.com/2007/04/hide-and-show-panels-with-keyboard.html"&gt;this post&lt;/a&gt; to learn how to do this.&lt;br /&gt;&lt;br /&gt;6. Custom keymaps&lt;br /&gt;&lt;br /&gt;Extra keys that you dont need or that dont function can be mapped to suit your needs. On my thinkpad, for example, this allows me to use the 'Access IBM' key and the forward and backward keys.&lt;br /&gt;So let us say you want to map a key to run the hide panel toggle script. We first need to find the keycode for this key. Open a terminal and type 'xev' and press enter. A small window opens now. Press the key and look at the output in the terminal. Among the output,  you will find something like 'keycode 44'. We can now map this key as F13 for instance. To do this create a file called .Xmodmap in your home directory. Type 'keycode 44 = F13' in this file. The exact keycode will vary depending on the key you are mapping, of course. Save the file and reboot for the key to become active. Now you can map any command to this key.&lt;br /&gt;&lt;br /&gt;7. Grub&lt;br /&gt;&lt;br /&gt;(i) Open /boot/grub/menu.lst. There are a couple of things you can modify according to your taste. Look for the entry 'default'. This determines the default choice that will be booted. 0 means the first entry is default, you can count down the entries to select another to make the default.&lt;br /&gt;(ii) If you rarely use the other options (like me), you can uncomment the line 'hiddenmenu'. This means that you wont see the menu during boot up normally, but you can press the Esc key to bring it up when you want it.&lt;br /&gt;(iii) The entry 'howmany' determines how many kernels you can see in the menu. You can change it from default all to something like 'howmany=3' if you dont want all the kernels to accumulate in you menu.lst.&lt;br /&gt;(iv) Finally, those who miss the text during the boot up, remove 'quiet' from the kernel line - now you will see the bootup steps being displayed while the system starts.&lt;br /&gt;&lt;br /&gt;8. Boot up - splash&lt;br /&gt;&lt;br /&gt;If you want to change the image that comes at the splash screen, you can look at http://www.gnome-look.org/ for some alternatives. Once you choose an image you like, gnome-splashscreen-manager is a nice frontend to modify the grub splashscreen. Just install this with aptitude or synaptic.&lt;br /&gt;&lt;br /&gt;9. GDM&lt;br /&gt;&lt;br /&gt;Similarly, you can change the gdm image that comes up when you log in. Again choose alternatives you like. You can run 'gdm-setup' to change the image.&lt;br /&gt;&lt;br /&gt;10. Firefox - themes and add-ons&lt;br /&gt;&lt;br /&gt;Finally, to get to the magic number of 10 - install a theme and add-ons for firefox. Again, you can choose the theme to match the system theme and the wallpaper. The add-ons that I find most useful are 'Download statusbar', 'Faviconize tab', 'Image zoom', 'Noscript' and 'tabmixplus'.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3339269982693982986-5802689928577802789?l=reachbeyondgrasp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reachbeyondgrasp.blogspot.com/feeds/5802689928577802789/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3339269982693982986&amp;postID=5802689928577802789' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3339269982693982986/posts/default/5802689928577802789'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3339269982693982986/posts/default/5802689928577802789'/><link rel='alternate' type='text/html' href='http://reachbeyondgrasp.blogspot.com/2007/06/10-tips-to-customise-you-new-ubuntu.html' title='10 tips to customise you new Ubuntu install'/><author><name>Raja</name><uri>http://www.blogger.com/profile/17138871434315349022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3339269982693982986.post-3257452952899820897</id><published>2007-04-15T18:27:00.002-05:00</published><updated>2008-10-04T10:21:30.224-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VirtualBox'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>How to install Virtualbox in Ubuntu Feisty</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;span style="font-weight: bold;"&gt;04 October 2008&lt;br /&gt;This post is considerably outdated. Virtualbox 2.0 and Ubuntu Intrepid (8.10) have been released. So while some of the steps might still be valid, it would be wiser to refer to the &lt;a href="http://www.virtualbox.org/wiki/End-user_documentation"&gt;current documentation.&lt;/a&gt; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.virtualbox.org/"&gt;Virtualbox&lt;/a&gt; is a new opensource virtualization solution made by Innotek. It has all the features that vmware offers and is a smaller download and easier to install. It therefore appears poised to replace vmware as the main virtualization software in Ubuntu. This is a brief howto for installing Virtualbox on Ubuntu Feisty. It is based on two installations I did recently. By providing the relevant instructions on one page, I hope to make it easier for others to follow. Any feedback about problems or suggestions to improve the tutorial are welcome. Here we go.&lt;br /&gt;&lt;br /&gt;First install the dependencies that are not present in Feisty by default.&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1px solid rgb(221, 221, 197); background: rgb(248, 248, 243) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style=";font-family:Tahoma,Sans,Arial,Helvetica,sans-serif;font-size:78%;color:BLACK;"   &gt;sudo aptitude install libqt3-mt libxalan110 libxerces27 &lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;Now download the debian package for edgy and install it.&lt;br /&gt;&lt;br /&gt;*UPDATE: A debian package is now available for Feisty. Replace 'edgy' with 'feisty' in the next two lines to use it.&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1px solid rgb(221, 221, 197); background: rgb(248, 248, 243) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style=";font-family:Tahoma,Sans,Arial,Helvetica,sans-serif;font-size:78%;color:BLACK;"   &gt;cd /tmp&lt;br /&gt;wget http://www.virtualbox.org/download/1.3.8/VirtualBox_1.3.8_Ubuntu_edgy_i386.deb&lt;br /&gt;sudo dpkg -i VirtualBox_1.3.8_Ubuntu_edgy_i386.deb &lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;You will have to accept the PUEL license and select "yes" when asked if the vboxdrv kernel module should be compiled. The kernel should be created successfully now. A group called vboxusers is created and you have to add yourself as a user of this group.&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1px solid rgb(221, 221, 197); background: rgb(248, 248, 243) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style=";font-family:Tahoma,Sans,Arial,Helvetica,sans-serif;font-size:78%;color:BLACK;"   &gt;sudo adduser $USER vboxusers&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;If you want to access usb devices from the virtual machine, follow these steps. You can omit them and directly reboot if you are not going to be using usb devices from the guest.&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1px solid rgb(221, 221, 197); background: rgb(248, 248, 243) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style=";font-family:Tahoma,Sans,Arial,Helvetica,sans-serif;font-size:78%;color:BLACK;"   &gt;sudo addgroup usbfs&lt;br /&gt;sudo adduser $USER usbfs&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;**  For the next step you have to know the id for the usbfs group that you have created. To do this try&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1px solid rgb(221, 221, 197); background: rgb(248, 248, 243) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style=";font-family:Tahoma,Sans,Arial,Helvetica,sans-serif;font-size:78%;color:BLACK;"   &gt;cat /etc/group | grep usbfs&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;and look for the number after "usbfs:x:". In the next command, replace 1002 in the next command with this number**&lt;br /&gt;&lt;div style="border: 1px solid rgb(221, 221, 197); background: rgb(248, 248, 243) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style=";font-family:Tahoma,Sans,Arial,Helvetica,sans-serif;font-size:78%;color:BLACK;"   &gt;echo "none /proc/bus/usb usbfs devgid=1002,devmode=664 0 0" | sudo tee -a /etc/fstab&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;Now reboot to allow the new group and user permissions to be updated.&lt;br /&gt;&lt;br /&gt;start VirtualBox&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1px solid rgb(221, 221, 197); background: rgb(248, 248, 243) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style=";font-family:Tahoma,Sans,Arial,Helvetica,sans-serif;font-size:78%;color:BLACK;"   &gt;VirtualBox &amp;amp;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;Once you create a virtual machine and install an OS on it, you may want to set up a shared folder between the host and the guest. Suppose the name of the virtual machine is "winXP" and the folder you wish to share is at /home/user/shared. Power off the virtual machine and then do this :&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1px solid rgb(221, 221, 197); background: rgb(248, 248, 243) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style=";font-family:Tahoma,Sans,Arial,Helvetica,sans-serif;font-size:78%;color:BLACK;"   &gt;VBoxManage sharedfolder add winXP -name "sharedfolder" -hostpath "/home/user/shared"&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;Now you can mount the shared folder within the guest. For a windows guest you would boot up and then in the terminal type&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1px solid rgb(221, 221, 197); background: rgb(248, 248, 243) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style=";font-family:Tahoma,Sans,Arial,Helvetica,sans-serif;font-size:78%;color:BLACK;"   &gt;net use G: \\vboxsvr\sharedfolder&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;Now you should be able to access the shared folder from within the guest and the host systems. To access a USB device from the guest, select the device in the USB controller in VirtualBox and enable it. Remember that the device may not be accessible to the guest if it is mounted in the host.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Edit (21 April 2007) - Corrected command for appending line to fstab. Thanks to ebash from Ubuntu forums for pointing out the right way to do it.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="poweredbyperformancing"&gt;Powered by &lt;a href="http://scribefire.com/"&gt;ScribeFire&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/3339269982693982986-3257452952899820897?l=reachbeyondgrasp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reachbeyondgrasp.blogspot.com/feeds/3257452952899820897/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3339269982693982986&amp;postID=3257452952899820897' title='26 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3339269982693982986/posts/default/3257452952899820897'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3339269982693982986/posts/default/3257452952899820897'/><link rel='alternate' type='text/html' href='http://reachbeyondgrasp.blogspot.com/2007/04/how-to-install-virtualbox-in-ubuntu.html' title='How to install Virtualbox in Ubuntu Feisty'/><author><name>Raja</name><uri>http://www.blogger.com/profile/17138871434315349022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>26</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3339269982693982986.post-3203264388420737779</id><published>2007-04-09T18:07:00.001-05:00</published><updated>2007-04-10T18:51:31.918-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='command line'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Hide and show panels with a keyboard shortcut in Ubuntu</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;br /&gt;I usually keep the default top and bottom panels in gnome, but especially on my laptop, place great value on the screen estate that I can get by hiding them. The usual way I do this is by using autohide and then setting the hidden size to 0 or 1. Mostly I dont need the panels because I can launch applications with Alt-F2 or with shortcuts. But when I need to access something from the panel, I have to mouse over the hidden panel to bring it up. The other minor irritation is that the panel may spring out when you dont really want it if your mouse wanders close to it.&lt;br /&gt;&lt;br /&gt;In a recent post in the Ubuntu forums, it was suggested that it would be nice to set up a keyboard shortcut to show the panels when needed. Since it is easy to access the gconf-editor from the command line, it was easy to write a script to toggle the hide status of the panel. Here is a short how-to if someone is interested.&lt;br /&gt;&lt;br /&gt;Copy this script, paste it a file and save it as toggle.sh. A good way to place it will be /home/username/.toggle.sh.&lt;br /&gt;&lt;br /&gt;&lt;div style ="background: #F8F8F3;border-right: 1px solid #ddddc5;border-top: 1px solid #ddddc5;border-left: 1px solid #ddddc5; border-bottom: 1px solid #ddddc5;"&gt;&lt;table cellpadding=0 cellspacing=0 border=0 width="100%"&gt;&lt;tr&gt;&lt;td &gt;&lt;FONT COLOR=BLACK FACE="Tahoma, Sans, Arial, Helvetica, sans-serif" SIZE=1&gt;#!/bin/bash&lt;br /&gt;&lt;br /&gt;#find the current state of the panels&lt;br /&gt;state=`gconftool-2 --get "/apps/panel/toplevels/top_panel_screen0/auto_hide"`&lt;br /&gt;&lt;br /&gt;#if autohide on, turn it off&lt;br /&gt;if [ $state = "true" ]; then&lt;br /&gt;  gconftool-2 --set "/apps/panel/toplevels/top_panel_screen0/unhide_delay" --type integer "0"&lt;br /&gt;  gconftool-2 --set "/apps/panel/toplevels/top_panel_screen0/auto_hide" --type bool "false"&lt;br /&gt;  gconftool-2 --set "/apps/panel/toplevels/bottom_panel_screen0/unhide_delay" --type integer "0"&lt;br /&gt;  gconftool-2 --set "/apps/panel/toplevels/bottom_panel_screen0/auto_hide" --type bool "false"&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;#if autohide off, turn it on&lt;br /&gt;if [ $state = "false" ]; then&lt;br /&gt;  gconftool-2 --set "/apps/panel/toplevels/top_panel_screen0/unhide_delay" --type integer "100000"&lt;br /&gt;  gconftool-2 --set "/apps/panel/toplevels/top_panel_screen0/auto_hide" --type bool "true"&lt;br /&gt;  gconftool-2 --set "/apps/panel/toplevels/bottom_panel_screen0/unhide_delay" --type integer "100000"&lt;br /&gt;  gconftool-2 --set "/apps/panel/toplevels/bottom_panel_screen0/auto_hide" --type bool "true"&lt;br /&gt;fi&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Make the script executable:&lt;br /&gt;&lt;br /&gt;&lt;div style ="background: #F8F8F3;border-right: 1px solid #ddddc5;border-top: 1px solid #ddddc5;border-left: 1px solid #ddddc5; border-bottom: 1px solid #ddddc5;"&gt;&lt;table cellpadding="0" cellspacing="0" border="0" width="100%"&gt;&lt;tr&gt;&lt;td &gt;&lt;FONT COLOR=BLACK FACE="Tahoma, Sans, Arial, Helvetica, sans-serif" SIZE=1&gt; chmod +x ~/.toggle.sh&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Open gconf-editor and under /apps/metacity/keybinding_commands, change the value of command_1 (or any other unused command) to /home/username/.toggle.sh.&lt;br /&gt;&lt;br /&gt;Then under /apps/metacity/global_keybindings, change the value of run_command_1 (if you used command_1 for the script) to controlF12 or any other key combination that you want. There, you are done! Now pressing the key combination will toggle the panels to hide or show. I have tested this with metacity and beryl on gnome and it works perfectly.&lt;br /&gt;&lt;br /&gt;Edit: 10 April 2007 - Thanks to dzv (in the Ubuntu forums) for comments and the suggestion to change the unhide delay so that the panel stays hidden. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/control&gt;&lt;/username&gt;&lt;/username&gt;&lt;p class="poweredbyperformancing"&gt;Powered by &lt;a href="http://scribefire.com/"&gt;ScribeFire&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/3339269982693982986-3203264388420737779?l=reachbeyondgrasp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reachbeyondgrasp.blogspot.com/feeds/3203264388420737779/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3339269982693982986&amp;postID=3203264388420737779' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3339269982693982986/posts/default/3203264388420737779'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3339269982693982986/posts/default/3203264388420737779'/><link rel='alternate' type='text/html' href='http://reachbeyondgrasp.blogspot.com/2007/04/hide-and-show-panels-with-keyboard.html' title='Hide and show panels with a keyboard shortcut in Ubuntu'/><author><name>Raja</name><uri>http://www.blogger.com/profile/17138871434315349022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3339269982693982986.post-318402304912271970</id><published>2007-04-06T08:16:00.004-05:00</published><updated>2009-03-20T20:23:13.552-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='command line'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>An interactive Linux command line tutorial</title><content type='html'>&lt;span style="font-weight:bold;"&gt;Edit: A new version of cmd-tutor is now available. See &lt;a href="http://reachbeyondgrasp.blogspot.com/2009/03/command-line-tutor-returns.html"&gt;here&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;There has been a gradually increasing influx into the linux community in recent years. The release of Vista has encouraged a lot of people to take the plunge and switch to linux. And while it is not any more essential to use the command line to manage your linux desktop today, many newcomers are interested in knowing what it is all about.&lt;br /&gt;&lt;br /&gt;A lot of excellent tutorials are available, like &lt;a href="http://www.ee.surrey.ac.uk/Teaching/Unix/unix1.html"&gt;this&lt;/a&gt; for example, but there were some requests for an interactive tutorial. Those who have tried the &lt;a href="http://www2.blogger.com/tryruby.hobix.com/"&gt;online ruby tutorial&lt;/a&gt; will know what I am talking about.&lt;br /&gt;&lt;br /&gt;So, I wrote this tutorial in python. Keeping in line with Unix philosophy, the mechanism for presenting the lessons is kept separate from the lessons itself. Therefore it is easy to extend it by adding more lessons later. Currently there are 5 lessons that I have written. These would serve as a gentle introduction to a newcomer.&lt;br /&gt;&lt;br /&gt;You have to be running linux to use this. You can &lt;a href="http://www.box.net/shared/g576i5o9as"&gt;download cmd_tutor here&lt;/a&gt;. The instructions to install are in the package. Briefly, you have to extract the package somewhere, navigate to the src directory from the terminal and then type 'python install.py install' with superuser privileges. Once installed, you can type 'cmd_tutor' in the terminal to start the tutor.&lt;br /&gt;&lt;br /&gt;Any comments and suggestions will be welcome.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3339269982693982986-318402304912271970?l=reachbeyondgrasp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reachbeyondgrasp.blogspot.com/feeds/318402304912271970/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3339269982693982986&amp;postID=318402304912271970' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3339269982693982986/posts/default/318402304912271970'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3339269982693982986/posts/default/318402304912271970'/><link rel='alternate' type='text/html' href='http://reachbeyondgrasp.blogspot.com/2007/04/interactive-linux-command-line-tutorial.html' title='An interactive Linux command line tutorial'/><author><name>Raja</name><uri>http://www.blogger.com/profile/17138871434315349022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3339269982693982986.post-1845355579425119255</id><published>2007-03-17T20:38:00.000-05:00</published><updated>2008-12-10T01:28:14.915-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tags'/><category scheme='http://www.blogger.com/atom/ns#' term='research'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='pdf'/><title type='text'>Tagging pdf documents with python</title><content type='html'>Tagging as a method of organizing and searching is commonly used for music files, pictures and &lt;a href="http://del.icio.us/"&gt;favourite websites&lt;/a&gt;. For documents, the traditional method of searching has been based on indexing the content. All the modern desktop searches will index your pdf files. But using tags obviously has its advantages and people would go to great pains to manually &lt;a href="http://idea.zanestate.edu/archives/2006/02/tagging-files-in-windows-xp-and-why-youll-ditch-google-desktop/"&gt;add tags to each file as metadata&lt;/a&gt; or for &lt;a href="http://lifehacker.com/software/pdf/geek-to-live--organize-your-pdf-library-with-itunes-240447.php"&gt;organizing with itunes !&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;My personal itch is the need to search my collection of journal articles saved as pdf files. The problem with full text indexing of these files is that &lt;span style="font-family:times new roman;"&gt;there is a long reference list at the end of these articles which misleads any attempt to search for a particular author, journal or title. I have struggled with this for some time and looked at applying tags to each file as a solution. The tags could be added as extended attributes in a linux file system &lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;like &lt;a href="http://enterprise.linux.com/article.pl?sid=05/06/13/1352241&amp;tid=113&amp;amp;tid=70&amp;tid=89"&gt;this&lt;/a&gt; or as metadata in a windows environment &lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;and used for searching. Even more useful might be applications that allow tagging and searching by tags. &lt;a href="http://www.gnome.org/projects/tracker/"&gt;Tracker&lt;/a&gt; and &lt;a href="http://www.chipx86.com/blog/?p=154"&gt;leaftag&lt;/a&gt; come to mind for this&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt; purpose in Linux. The main hurdle, however, is that adding these tags manually is too tedious. So I experimented with ways to get the information for each pdf file&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt; from pubmed. The Biopython module provides a simple interface to the pubmed database from Python. So all one has to do is convert the pdf to text and then parse the text for some information that will allow correct identification at pubmed. The first step is relatively easy. &lt;a href="http://www.foolabs.com/xpdf/home.html"&gt;Xpdf &lt;/a&gt;provides tools for pdf to text conversion, though I preferred to use &lt;a href="http://beagle-project.org/"&gt;beagle's&lt;/a&gt; data extraction tool since I already had beagle installed.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;&lt;span style="color: rgb(102, 102, 102);font-size:100%;" &gt;&lt;span style="color: rgb(102, 102, 102);font-family:verdana;font-size:100%;"  &gt;import commands&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);font-size:100%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);font-family:verdana;font-size:100%;"  &gt;convertcommand = "beagle-extract-content \"" +pdffile +"\""&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);font-size:100%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="color: rgb(102, 102, 102);font-size:100%;" &gt;&lt;span style="font-family:verdana;"&gt;pdftext = commands.getoutput(convertcommand)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;&lt;span style="color: rgb(102, 102, 102);font-size:100%;" &gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="color: rgb(102, 102, 102);font-size:100%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;The second part is more difficult because there is no consistent formatting of contents between different publishers. The best way to do it turned out be using the doi. The doi or &lt;a href="http://www.doi.org/"&gt;Digital Object Identifier&lt;/a&gt; is a unique name given to any digital object and is usually included in the publication. Parsing it was a matter of searching for&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;&lt;span style="color: rgb(102, 102, 102);font-size:100%;" &gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 'DOI:' or 'doi:' in the text.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;&lt;span style="color: rgb(102, 102, 102);font-size:100%;" &gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(102, 102, 102);font-family:verdana;font-size:100%;"  &gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;doi = pdftext.lower().split('doi:')[1].strip().split(' ')[0]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;searchstring = doi +"[AID]"&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The searchstring is constructed by adding the tag [AID] for Article Identifier. Searching in pubmed with this string with this string turns up the pubmed ID (pid) for the article. This allows retrieval of the formatted article information including&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;&lt;span style="color: rgb(102, 102, 102);font-size:100%;" &gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; title, authors, journal name, year of publication, volume and page numbers.&lt;br /&gt;&lt;span style=";font-family:verdana;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);font-family:verdana;font-size:100%;"  &gt;from Bio import PubMed&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:100%;"  &gt;&lt;span style="color: rgb(102, 102, 102);"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);font-family:verdana;font-size:100%;"  &gt;&lt;br /&gt;from Bio import Medline&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);font-family:verdana;font-size:100%;"  &gt;rec_parser = Medline.RecordParser()&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);font-family:verdana;font-size:100%;"  &gt;medline_dict = PubMed.Dictionary(parser = rec_parser)&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);font-family:verdana;font-size:100%;"  &gt;&lt;br /&gt;pmid = PubMed.search_for(searchstring)[0]&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);font-family:verdana;font-size:100%;"  &gt;record = medline_dict[pmid]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;&lt;span style="color: rgb(102, 102, 102);font-size:100%;" &gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style=";font-family:verdana;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);font-family:verdana;font-size:100%;"  &gt;&lt;br /&gt;print "title is ", record.title&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);font-family:verdana;font-size:100%;"  &gt;print "author is ", record.authors&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);font-family:verdana;font-size:100%;"  &gt;print "source = ", record.source&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;&lt;span style="color: rgb(102, 102, 102);font-size:100%;" &gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;br /&gt;Some journals, however, still do not provide the doi in the publication. So we need something to fall back on. I chose to use the article information which is usually published on the first page in a standard format like this - yr;volume:first page - last page (example 2007;41:272-275). There may sometimes be a space after the&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;&lt;span style="color: rgb(102, 102, 102);font-size:100%;" &gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; semicolon or the colon, so the search with regex looks like this.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;&lt;span style="color: rgb(102, 102, 102);font-size:100%;" &gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(102, 102, 102);font-family:verdana;font-size:100%;"  &gt;&lt;span style=";font-family:verdana;font-size:100%;"  &gt;import re&lt;br /&gt;texttosearch = pdftext[:6000]&lt;br /&gt;pattern = "[0-9]{4,};[ ]*[0-9]+:[ ]*[0-9]+"&lt;br /&gt;m = re.search(pattern,texttosearch)&lt;br /&gt;info = m.group(0)&lt;br /&gt;yr = info.split(';')[0]&lt;br /&gt;(vol,pg) = info.split(';')[1].split(':')&lt;br /&gt;searchstring = vol +"[volume] AND "+ pg +"[page] AND "+ yr +"[pdat] + "+&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;&lt;span style="color: rgb(102, 102, 102);font-size:100%;" &gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(102, 102, 102);font-family:verdana;font-size:100%;"  &gt;&lt;span style=";font-family:verdana;font-size:100%;"  &gt; "English[lang]"&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;&lt;span style="color: rgb(102, 102, 102);font-size:100%;" &gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;For testing, I chose 10 journals comprising the prominent publications in medicine and cardiology and randomly picked an article each from Sep 2005 and Feb-Mar 2007. Correct information was obtained for all the 20 articles. Here is part of the output&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;&lt;span style="color: rgb(102, 102, 102);font-size:100%;" &gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_sPKRuJS_w8Q/Rfyzzu-EU6I/AAAAAAAAATc/RWjWHQaxcfQ/s1600-h/root.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_sPKRuJS_w8Q/Rfyzzu-EU6I/AAAAAAAAATc/RWjWHQaxcfQ/s320/root.png" alt="" id="BLOGGER_PHOTO_ID_5043103384111174562" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;&lt;span style="color: rgb(102, 102, 102);font-size:100%;" &gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;In conclusion, this seems a promising approach to automatically obtain information for each pdf file in my library. This information could be added to the file as extended attributes or used as tags for the file. &lt;a href="http://kemistry-desktop.blogspot.com/2006/09/kdehtmlpart-gui-for-tagging-cloud.html"&gt;Like Ruby&lt;/a&gt;, Python also has an xattr library and adding them automatically would be easy. The automatic retrieval will fail for some files, but the information could be added manually in such cases.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3339269982693982986-1845355579425119255?l=reachbeyondgrasp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3339269982693982986/posts/default/1845355579425119255'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3339269982693982986/posts/default/1845355579425119255'/><link rel='alternate' type='text/html' href='http://reachbeyondgrasp.blogspot.com/2007/03/tagging-pdf-documents-with-python.html' title='Tagging pdf documents with python'/><author><name>Raja</name><uri>http://www.blogger.com/profile/17138871434315349022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_sPKRuJS_w8Q/Rfyzzu-EU6I/AAAAAAAAATc/RWjWHQaxcfQ/s72-c/root.png' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3339269982693982986.post-6464602527340386558</id><published>2007-03-04T19:39:00.000-05:00</published><updated>2008-12-10T01:28:15.281-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='command line'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='user interface'/><title type='text'>The User Interface of the future ?</title><content type='html'>&lt;a href="http://en.wikipedia.org/wiki/Talk:Command_line_interface"&gt;Arguing&lt;/a&gt; whether the Command Line Interface (CLI) is superior to the Graphical User Interface (GUI) or vice versa strikes me as a futile exercise. It quickly becomes clear to anyone who has used both that the best way to interact with the computer is to use both methods. A CLI + GUI interface is vastly more powerful than a plain GUI interface. As you use both, you find more and more uses for the former, where it clearly surpasses the GUI. Why, you even start &lt;a href="http://www.beigerecords.com/cory/pizza_party/"&gt;ordering your pizzas&lt;/a&gt; from the command line.&lt;br /&gt;&lt;br /&gt;However, the difficulty many face in approaching the CLI initially is what Eric Raymond &lt;a href="http://www.faqs.org/docs/artu/"&gt;calls&lt;/a&gt; the 'mnemonic load'. Don Norman &lt;a href="http://www.jnd.org/dn.mss/ui_breakthroughcomma.html"&gt;writes&lt;/a&gt; how the next major UI breakthrough should be in CLI. He anticipates the development of a more flexible command line language, with more resemblance to natural language and not requiring a strict adherence to an idiosyncratic syntax.&lt;br /&gt;&lt;br /&gt;An alternative to an entire new language for the command line is to use a user-friendly intermediate layer which translates the user input into the syntax that the command line understands. This is analogous to the frequently used concept in Unix when a user friendly GUI actually uses command line tools, but provides a user friendly front end.&lt;br /&gt;&lt;br /&gt;What you see below is a working prototype of such a program written in python. In its main loop, it collects user input and outputs a command to the terminal. When the input is a valid command line input, it is passed unchanged. But when it is not, it is 'translated' into a valid one. I call it the Genie. Here are a few examples of the genie in action.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_sPKRuJS_w8Q/RetnMEhoa2I/AAAAAAAAASQ/rdK_S6Waw6U/s1600-h/1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 297px; height: 153px;" src="http://2.bp.blogspot.com/_sPKRuJS_w8Q/RetnMEhoa2I/AAAAAAAAASQ/rdK_S6Waw6U/s320/1.png" alt="" id="BLOGGER_PHOTO_ID_5038234065214925666" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The prompt includes a battery status monitor - I find it useful and it shows that the prompt is easily customizable. 'Normal' shell commands are interpreted directly - like 'ls -l | grep 2007-03' in the example. Navigation to usual places is easy just - 'go home' or 'go desk'. 'space' functions like an alias mapping to 'df -h / /home'. Note the genie says line which lets you know the command that is passed to the shell. So that a newcomer also learns shell syntax along the way.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_sPKRuJS_w8Q/RetnfEhoa3I/AAAAAAAAASY/2ArzgAoaeRQ/s1600-h/2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_sPKRuJS_w8Q/RetnfEhoa3I/AAAAAAAAASY/2ArzgAoaeRQ/s320/2.png" alt="" id="BLOGGER_PHOTO_ID_5038234391632440178" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;When you want to install an application just 'install &lt;app&gt;'. If the app is found in the apt-cache, installation is started. Otherwise you are allowed to choose from the matches in the apt-cache.&lt;br /&gt;&lt;br /&gt;&lt;/app&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_sPKRuJS_w8Q/RetnsEhoa4I/AAAAAAAAASg/hJoaeStsOh4/s1600-h/3.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_sPKRuJS_w8Q/RetnsEhoa4I/AAAAAAAAASg/hJoaeStsOh4/s320/3.png" alt="" id="BLOGGER_PHOTO_ID_5038234614970739586" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;app&gt;Any calculations are automatically recognized and passed on to bc. Finally, a listing of directory names is stored and searchable. So if you want to navigate to the python site-packages folder and didn't remember where it was, genie can help you.&lt;br /&gt;&lt;br /&gt;Obviously, the possibilities are almost endless. The genie can be taught to understand new commands as you desire. It may be necessary to be able to carry genie around so that you have your custom genie on any computer you have to use. But finally, will the added ease of use facilitate introduction of the command line to new users or will the use of a simple interface like this preclude users from learning shell commands and thereby never being able to make full use of it ? Comments are welcome.&lt;/app&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3339269982693982986-6464602527340386558?l=reachbeyondgrasp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reachbeyondgrasp.blogspot.com/feeds/6464602527340386558/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3339269982693982986&amp;postID=6464602527340386558' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3339269982693982986/posts/default/6464602527340386558'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3339269982693982986/posts/default/6464602527340386558'/><link rel='alternate' type='text/html' href='http://reachbeyondgrasp.blogspot.com/2007/03/user-interface-of-future.html' title='The User Interface of the future ?'/><author><name>Raja</name><uri>http://www.blogger.com/profile/17138871434315349022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_sPKRuJS_w8Q/RetnMEhoa2I/AAAAAAAAASQ/rdK_S6Waw6U/s72-c/1.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3339269982693982986.post-1066337821592726253</id><published>2007-02-24T22:36:00.000-05:00</published><updated>2007-04-09T18:00:23.545-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='google reader'/><category scheme='http://www.blogger.com/atom/ns#' term='research'/><category scheme='http://www.blogger.com/atom/ns#' term='RSS'/><category scheme='http://www.blogger.com/atom/ns#' term='command line'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='pubmed'/><category scheme='http://www.blogger.com/atom/ns#' term='medicine'/><category scheme='http://www.blogger.com/atom/ns#' term='presentation'/><title type='text'>Hide and show panels with a keyboard shortcut in Ubuntu</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;I usually keep the default top and bottom panels in gnome, but especially on my laptop, place great value on the screen estate that I can get by hiding them. The usual way I do this is by using autohide and then setting the hidden size to 0 or 1. Mostly I dont need the panels because I can launch applications with Alt-F2 or with shortcuts. But when I need to access something from the panel, I have to mouse over the hidden panel to bring it up. The other minor irritation is that the panel may spring out when you dont really want it if your mouse wanders close to it. &lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;In a recent post in the Ubuntu forums, it was suggested that it would be nice to set up a keyboard shortcut to show the panels when needed. Since it is easy to access the gconf-editor from the command line, it was easy to write a script to toggle the hide status of the panel. Here is a short how-to if someone is interested. &lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;Copy this script and save it as "toggle.sh". A good location to keep it would be /home/&amp;amp;lt;username&amp;amp;gt;/.toggle.sh.&amp;amp;nbsp; Make the file executable :&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;chmod&amp;amp;nbsp; +x&amp;amp;nbsp; ~/.toggle.sh &lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;#!/bin/bash&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;#find the current state of the panels&lt;br&gt;&lt;/br&gt;state=`gconftool-2 --get "/apps/panel/toplevels/top_panel_screen0/auto_hide"`&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;#if autohide on, turn it off&lt;br&gt;&lt;/br&gt;if [ $state = "true" ]; then&lt;br&gt;&lt;/br&gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; gconftool-2 --set "/apps/panel/toplevels/top_panel_screen0/auto_hide" --type bool "false"&lt;br&gt;&lt;/br&gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; gconftool-2 --set "/apps/panel/toplevels/bottom_panel_screen0/auto_hide" --type bool "false"&lt;br&gt;&lt;/br&gt;fi&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;#if autohide off, turn it on&lt;br&gt;&lt;/br&gt;if [ $state = "false" ]; then&lt;br&gt;&lt;/br&gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; gconftool-2 --set "/apps/panel/toplevels/top_panel_screen0/auto_hide" --type bool "true"&lt;br&gt;&lt;/br&gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; gconftool-2 --set "/apps/panel/toplevels/bottom_panel_screen0/auto_hide" --type bool "false"&lt;br&gt;&lt;/br&gt;fi&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;Open gconf-editor now, and in /apps/metacity/keybinding_commands, change the value of command_1 (or any other command which is unused) to /home/&amp;amp;lt;username&amp;amp;gt;/.toggle.sh.&lt;br&gt;&lt;/br&gt;&amp;amp;nbsp;&lt;br&gt;&lt;/br&gt;Then go to /apps/metacity/global_keybindings and change the value of run_command_1 (if you mapped the script to command_1) to &amp;amp;lt;Control&amp;amp;gt;F12 or any other key combination you choose. Close gconf-editor and try it out ! I tested this with both metacity and beryl and it works perfectly. &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/3339269982693982986-1066337821592726253?l=reachbeyondgrasp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reachbeyondgrasp.blogspot.com/feeds/1066337821592726253/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3339269982693982986&amp;postID=1066337821592726253' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3339269982693982986/posts/default/1066337821592726253'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3339269982693982986/posts/default/1066337821592726253'/><link rel='alternate' type='text/html' href='http://reachbeyondgrasp.blogspot.com/2007/02/spice-up-your-presentations-with.html' title='Hide and show panels with a keyboard shortcut in Ubuntu'/><author><name>Raja</name><uri>http://www.blogger.com/profile/17138871434315349022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3339269982693982986.post-8329711538802264120</id><published>2007-02-17T12:18:00.000-05:00</published><updated>2008-12-10T01:28:16.417-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='google reader'/><category scheme='http://www.blogger.com/atom/ns#' term='research'/><category scheme='http://www.blogger.com/atom/ns#' term='RSS'/><category scheme='http://www.blogger.com/atom/ns#' term='pubmed'/><category scheme='http://www.blogger.com/atom/ns#' term='medicine'/><title type='text'>Keeping up with literature is now easy. Just read the feed !</title><content type='html'>Everyone in medicine knows very well the difficulty of keeping up with current literature. More than 6 million articles are published each year and even the fraction of these that an individual physician has to read can be overwhelming. Of course, today I don't need to go down to the library to scan through the recently published articles. But even looking at each journal's website for the abstract of the latest articles can be a daunting task. In this article I will show you how I use RSS today to keep up with the journals I am interested in.&lt;br /&gt;&lt;br /&gt;Step 1: Pick an RSS reader to use. While I use &lt;a title="Google reader" href="http://www.google.com/reader"&gt;Google reader&lt;/a&gt; and therefore use it in my examples, there are a wealth of RSS readers for you to choose from.&lt;div style="text-align: left;"&gt;&lt;br /&gt;Step 2: Subscribe to RSS feeds from the website for journals that offer RSS feeds. For example this shows the RSS link from Heart Online. All you have to do is copy the link and add it as a subscription in google reader.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;div style="text-align: center;"&gt;             &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_sPKRuJS_w8Q/RdfCpkzbSlI/AAAAAAAAAPc/5wLclpHXKHQ/s1600-h/heart.png"&gt;&lt;img style="cursor: pointer; width: 248px; height: 142px;" src="http://3.bp.blogspot.com/_sPKRuJS_w8Q/RdfCpkzbSlI/AAAAAAAAAPc/5wLclpHXKHQ/s320/heart.png" alt="" id="BLOGGER_PHOTO_ID_5032705128119618130" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_sPKRuJS_w8Q/RdfCJUzbSiI/AAAAAAAAAPE/AvPrJzwBiXY/s1600-h/add_subscriptionsm.png"&gt;&lt;img style="cursor: pointer; width: 248px; height: 137px;" src="http://2.bp.blogspot.com/_sPKRuJS_w8Q/RdfCJUzbSiI/AAAAAAAAAPE/AvPrJzwBiXY/s320/add_subscriptionsm.png" alt="" id="BLOGGER_PHOTO_ID_5032704574068836898" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Step 3: For the many journals that still do not provide RSS, you can set up an RSS fees of their contents from pubmed. Set up a search using limits set to the journal of your interest. Then select 'send to RSS' from the dropdown menu to get the link.&lt;br /&gt;&lt;/div&gt;   &lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_sPKRuJS_w8Q/Rde9ekzbSgI/AAAAAAAAAO0/5kxMkz3B0cc/s1600-h/pubmed+selections.png"&gt;&lt;img style="cursor: pointer; width: 248px; height: 173px;" src="http://3.bp.blogspot.com/_sPKRuJS_w8Q/Rde9ekzbSgI/AAAAAAAAAO0/5kxMkz3B0cc/s320/pubmed+selections.png" alt="" id="BLOGGER_PHOTO_ID_5032699441582918146" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_sPKRuJS_w8Q/RdfLd0zbSpI/AAAAAAAAAQk/JncMM9dS0W4/s1600-h/JACCsm.png"&gt;&lt;img style="cursor: pointer; width: 248px; height: 171px;" src="http://4.bp.blogspot.com/_sPKRuJS_w8Q/RdfLd0zbSpI/AAAAAAAAAQk/JncMM9dS0W4/s320/JACCsm.png" alt="" id="BLOGGER_PHOTO_ID_5032714821860805266" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_sPKRuJS_w8Q/RdfEoEzbSoI/AAAAAAAAAP0/ibMggAwzGoo/s1600-h/Greadersm.png"&gt;&lt;img style="margin: 15pt 10px 0px 0pt; float: left; cursor: pointer; width: 222px; height: 166px;" src="http://1.bp.blogspot.com/_sPKRuJS_w8Q/RdfEoEzbSoI/AAAAAAAAAP0/ibMggAwzGoo/s320/Greadersm.png" alt="" id="BLOGGER_PHOTO_ID_5032707301373069954" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Now Google reader (or any other reader you choose to use) becomes a central location for you to review the titles and abstracts of the latest publications in the journals you have chosen. Note how I have organize the journals under one folder in Google reader. I also mark items I want to read in detail later with a star. Using Google reader and RSS has given me an immense advantage in keeping abreast of the latest literature in my field of interest. Try it out and let me know how you find it!&lt;br /&gt;&lt;br /&gt;More Info:&lt;br /&gt;&lt;a href="http://davidrothman.net/2006/07/19/how-to-create-an-rss-feed-for-a-feedless-journal-with-pubmed/"&gt;Creating RSS for a feedless journal&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.ncbi.nlm.nih.gov/books/bv.fcgi?rid=helppubmed.section.pubmedhelp.Saving_and_Emailing_#pubmedhelp.Saving_searches_as_R"&gt;RSS from pubmed search&lt;/a&gt;&lt;br /&gt;&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/3339269982693982986-8329711538802264120?l=reachbeyondgrasp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reachbeyondgrasp.blogspot.com/feeds/8329711538802264120/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3339269982693982986&amp;postID=8329711538802264120' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3339269982693982986/posts/default/8329711538802264120'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3339269982693982986/posts/default/8329711538802264120'/><link rel='alternate' type='text/html' href='http://reachbeyondgrasp.blogspot.com/2007/02/keeping-up-with-literature-is-now-easy.html' title='Keeping up with literature is now easy. Just read the feed !'/><author><name>Raja</name><uri>http://www.blogger.com/profile/17138871434315349022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_sPKRuJS_w8Q/RdfCpkzbSlI/AAAAAAAAAPc/5wLclpHXKHQ/s72-c/heart.png' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
