<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Thoughts of a coder</title>
	
	<link>http://www.sandaru1.com</link>
	<description>It's how I think! It's how I code!</description>
	<lastBuildDate>Sat, 17 Oct 2009 18:42:15 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<creativeCommons:license>http://creativecommons.org/licenses/by-sa/2.0/</creativeCommons:license><image><link>http://creativecommons.org/licenses/by-sa/2.0/</link><url>http://creativecommons.org/images/public/somerights20.gif</url><title>Some Rights Reserved</title></image><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/sandaru1" type="application/rss+xml" /><feedburner:emailServiceId>sandaru1</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2Fsandaru1" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fsandaru1" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2Fsandaru1" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/sandaru1" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fsandaru1" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fsandaru1" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fsandaru1" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:feedFlare href="http://www.plusmo.com/add?url=http%3A%2F%2Ffeeds.feedburner.com%2Fsandaru1" src="http://plusmo.com/res/graphics/fbplusmo.gif">Subscribe with Plusmo</feedburner:feedFlare><feedburner:feedFlare href="http://www.thefreedictionary.com/_/hp/AddRSS.aspx?http%3A%2F%2Ffeeds.feedburner.com%2Fsandaru1" src="http://img.tfd.com/hp/addToTheFreeDictionary.gif">Subscribe with The Free Dictionary</feedburner:feedFlare><feedburner:feedFlare href="http://www.bitty.com/manual/?contenttype=rssfeed&amp;contentvalue=http%3A%2F%2Ffeeds.feedburner.com%2Fsandaru1" src="http://www.bitty.com/img/bittychicklet_91x17.gif">Subscribe with Bitty Browser</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsalloy.com/?rss=http%3A%2F%2Ffeeds.feedburner.com%2Fsandaru1" src="http://www.newsalloy.com/subrss3.gif">Subscribe with NewsAlloy</feedburner:feedFlare><feedburner:feedFlare href="http://www.live.com/?add=http%3A%2F%2Ffeeds.feedburner.com%2Fsandaru1" src="http://tkfiles.storage.msn.com/x1piYkpqHC_35nIp1gLE68-wvzLZO8iXl_JMledmJQXP-XTBOLfmQv4zhj4MhcWEJh_GtoBIiAl1Mjh-ndp9k47If7hTaFno0mxW9_i3p_5qQw">Subscribe with Live.com</feedburner:feedFlare><feedburner:feedFlare href="http://mix.excite.eu/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fsandaru1" src="http://image.excite.co.uk/mix/addtomix.gif">Subscribe with Excite MIX</feedburner:feedFlare><feedburner:feedFlare href="http://www.yourminis.com/subscribe.aspx?u=http%3A%2F%2Ffeeds.feedburner.com%2Fsandaru1" src="http://www.yourminis.com/images/addtoyourminisbadge.gif">Subscribe with Yourminis.com</feedburner:feedFlare><feedburner:feedFlare href="http://download.attensa.com/app/get_attensa.html?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fsandaru1" src="http://www.attensa.com/blogs/attensa/WindowsLiveWriter/BadgeredintoBadges_10C02/attensa_feed_button5.gif">Subscribe with Attensa for Outlook</feedburner:feedFlare><feedburner:feedFlare href="http://www.webwag.com/wwgthis.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fsandaru1" src="http://www.webwag.com/images/wwgthis.gif">Subscribe with Webwag</feedburner:feedFlare><feedburner:feedFlare href="http://hub.netomat.net/account/account.autoSubscribe.jspa?urls=http%3A%2F%2Ffeeds.feedburner.com%2Fsandaru1" src="http://www.netomat.net/blogger/images/icon_netomat_feedbutton.gif">Subscribe with netomat Hub</feedburner:feedFlare><feedburner:feedFlare href="http://www.podcastready.com/oneclick_bookmark.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fsandaru1" src="http://www.podcastready.com/images/podcastready_button.gif">Subscribe with Podcast Ready</feedburner:feedFlare><feedburner:feedFlare href="http://www.flurry.com/pushRssFeed.do?r=fb&amp;url=http%3A%2F%2Ffeeds.feedburner.com%2Fsandaru1" src="http://www.flurry.com/images/flurry_rss_logo2.gif">Subscribe with Flurry</feedburner:feedFlare><feedburner:feedFlare href="http://www.wikio.com/subscribe?url=http%3A%2F%2Ffeeds.feedburner.com%2Fsandaru1" src="http://www.wikio.com/shared/img/add2wikio.gif">Subscribe with Wikio</feedburner:feedFlare><feedburner:feedFlare href="http://www.dailyrotation.com/index.php?feed=http%3A%2F%2Ffeeds.feedburner.com%2Fsandaru1" src="http://www.dailyrotation.com/rss-dr2.gif">Subscribe with Daily Rotation</feedburner:feedFlare><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
		<title>Picasa Wordpress Widget Updated</title>
		<link>http://feedproxy.google.com/~r/sandaru1/~3/mlxGTX25zWQ/</link>
		<comments>http://www.sandaru1.com/2009/10/18/picasa-wordpress-widget-updated/#comments</comments>
		<pubDate>Sat, 17 Oct 2009 18:42:15 +0000</pubDate>
		<dc:creator>Sandaruwan Gunathilake</dc:creator>
				<category><![CDATA[Open Source]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[picasa]]></category>
		<category><![CDATA[plugin]]></category>

		<guid isPermaLink="false">http://www.sandaru1.com/?p=249</guid>
		<description><![CDATA[My picasa widget hasn&#8217;t been updated for quite a long time. Since then, there was a new widget API &#8211; the old widget worked without any problems because the new API is backward compatible, however those API calls are now deprecated. Meanwhile, I&#8217;ve received a lot of comments regarding the plugin and I&#8217;ve used that [...]]]></description>
			<content:encoded><![CDATA[<p>My <a href="http://wordpress.org/extend/plugins/picasa-wordpress-widget/">picasa widget</a> hasn&#8217;t been updated for quite a long time. Since then, there was a new widget API &#8211; the old widget worked without any problems because the new API is backward compatible, however those API calls are now deprecated. Meanwhile, I&#8217;ve received a <a href="http://www.sandaru1.com/2008/04/04/wordpress-picasa-plugin/comment-page-1/#comments">lot of comments</a> regarding the plugin and I&#8217;ve used that input to reshape the features of the update. Thank you all for your comments.</p>
<p>The new widget is a complete rewrite of the old widget. Earlier all options for plugin was in the widgets section. The new version adds a new options page to the &#8220;Settings&#8221; menu. Once you have installed the plugin, make sure to set your username on the picasa settings page. Once this is done, It&#8217;ll download the photo information and cache them. I&#8217;ve also added an option to list out the albums in this plugin. So, once the username is set, you can go to the widgets page and add any number of widgets &#8211; there you&#8217;ll get a list of albums, photo size and number of photos for each widget instance.</p>
<p>If you have uploaded new photos to the picasa albums, you can go to the options page and click on the &#8220;Refresh Cache&#8221; button to download new photos. Even if you have forgotten to do this, the photos will automatically get updated based on the cache lifetime you have set.</p>
<p>That&#8217;s all the features for now &#8211; I&#8217;ll add more features along the way once the base functionality of stable. Please remember, this is pretty much a complete rewrite, there might be few bugs here and there. If you have found any bugs, make a small comment here <img src='http://www.sandaru1.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><a href="http://downloads.wordpress.org/plugin/picasa-wordpress-widget.zip">Download from here</a></p>
<img src="http://feeds.feedburner.com/~r/sandaru1/~4/mlxGTX25zWQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.sandaru1.com/2009/10/18/picasa-wordpress-widget-updated/feed/</wfw:commentRss>
		<slash:comments>25</slash:comments>
		<feedburner:origLink>http://www.sandaru1.com/2009/10/18/picasa-wordpress-widget-updated/</feedburner:origLink></item>
		<item>
		<title>Reject IE6</title>
		<link>http://feedproxy.google.com/~r/sandaru1/~3/5qMXCmsI_q0/</link>
		<comments>http://www.sandaru1.com/2009/10/17/reject-ie6/#comments</comments>
		<pubDate>Sat, 17 Oct 2009 16:07:52 +0000</pubDate>
		<dc:creator>Sandaruwan Gunathilake</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[ie]]></category>

		<guid isPermaLink="false">http://www.sandaru1.com/?p=245</guid>
		<description><![CDATA[If you have ever created a simple web page, you know that IE6 should be banned by law. Here is a very simple wordpress plugin to reject IE6 and inform the users. 
This is using the jreject jquery plugin. The wordpress plugin simply uses the wordpress hooks to insert jquery plugin into your theme.
Download Here
]]></description>
			<content:encoded><![CDATA[<p>If you have ever created a simple web page, you know that IE6 should be banned by law. Here is a very simple wordpress plugin to reject IE6 and inform the users. </p>
<p>This is using the <a href="http://jreject.turnwheel.com/">jreject</a> jquery plugin. The wordpress plugin simply uses the wordpress hooks to insert jquery plugin into your theme.</p>
<p><a href='http://www.sandaru1.com/wp-content/uploads/2009/10/noie6.tar.bz2'>Download Here</a></p>
<img src="http://feeds.feedburner.com/~r/sandaru1/~4/5qMXCmsI_q0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.sandaru1.com/2009/10/17/reject-ie6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.sandaru1.com/2009/10/17/reject-ie6/</feedburner:origLink></item>
		<item>
		<title>Sinhala Spell Checker for Firefox</title>
		<link>http://feedproxy.google.com/~r/sandaru1/~3/sDRPbjwCarQ/</link>
		<comments>http://www.sandaru1.com/2009/08/29/sinhala-spell-checker-for-firefox/#comments</comments>
		<pubDate>Sat, 29 Aug 2009 11:43:48 +0000</pubDate>
		<dc:creator>Sandaruwan Gunathilake</dc:creator>
				<category><![CDATA[Hacks]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Sinhala]]></category>
		<category><![CDATA[firefox]]></category>

		<guid isPermaLink="false">http://www.sandaru1.com/?p=205</guid>
		<description><![CDATA[Update : I&#8217;ve changed the addon words list to &#8220;UCSC/LTRL Sinhala Corpus Beta&#8220;. This provides much more accuracy. Updated version is in the addons site. I&#8217;ll combine both word lists in the next version.
Sinhala language has been used in computers for a long time. In the beginning, it was simple ASCII fonts, replacing the English [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Update : I&#8217;ve changed the addon words list to &#8220;<a href="http://www.ucsc.cmb.ac.lk/ltrl/?page=downloads&#038;lang=en&#038;style=default">UCSC/LTRL Sinhala Corpus Beta</a>&#8220;. This provides much more accuracy. Updated version is in the addons site. I&#8217;ll combine both word lists in the next version.</strong></p>
<p>Sinhala language has been used in computers for a long time. In the beginning, it was simple ASCII fonts, replacing the English glyphs with sinhala letters. However, sinhala unicode came to play around in 2004. Around that time, we built a search engine converting ASCII text to unicode, so that it can search sinhala text written in any font. Actually, that&#8217;s how <a href="http://www.paradoxsoftware.com">Paradox Software </a>started. There were few blocks with rendering the unicode fonts, and people weren&#8217;t exactly using them. However, those problems are solved with newer releases and sinhala unicode is extensively used today.</p>
<p>You might have seen that there is a <a href="https://addons.mozilla.org/en-US/firefox/addon/7846">english to sinhala dictionary</a> developed by <a href="http://www.ucsc.cmb.ac.lk/ltrl/">UCSC Language Lab</a>. It&#8217;s released under GPL as a firefox addon. Today, I extracted the words from the addon database and built a spell checker for firefox.</p>
<p>Following python code is used to extract the words from sqlite database :</p>
<pre class="python" name="code">#!/usr/bin/env python
import sqlite3
import re

conn = sqlite3.connect('en-si.db')
c = conn.cursor()
c.execute("select * from dict")
out = file("words","w")
for row in c:
  words = re.split(r"[ |]",row[1])
  for i in words:
    out.write(i.encode("utf8")+"\n")
out.close()</pre>
<p>After that simply running, &#8220;cat words | uniq | sort &gt; words.sorted&#8221; produced a sorted uniq list of words. The &#8220;affixcompress&#8221; tool comes with <a href="http://hunspell.sourceforge.net/">hunspell</a> generated the affix rules file and I&#8217;ve placed some rules to support some common mistakes.</p>
<p><img class="alignnone size-full wp-image-209" title="Sinhala Spell Checker Screenshot 1" src="http://www.sandaru1.com/wp-content/uploads/2009/08/sinhala1.png" alt="Sinhala Spell Checker Screenshot 1" width="230" height="351" /> <img class="alignnone size-full wp-image-210" title="Sinhala Spell Checker Screenshot 2" src="http://www.sandaru1.com/wp-content/uploads/2009/08/sinhala2.png" alt="Sinhala Spell Checker Screenshot 2" width="232" height="347" /></p>
<p>Install the addon <a href="https://addons.mozilla.org/en-US/firefox/addon/13981/">from here</a>. Once after you installed, you can right click a textbox, enable spell checking and select Sinhala as the language.</p>
<p>(Don&#8217;t ask me how සොක්කා got recommended for මඤ්ඤොක්කා)</p>
<img src="http://feeds.feedburner.com/~r/sandaru1/~4/sDRPbjwCarQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.sandaru1.com/2009/08/29/sinhala-spell-checker-for-firefox/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		<feedburner:origLink>http://www.sandaru1.com/2009/08/29/sinhala-spell-checker-for-firefox/</feedburner:origLink></item>
		<item>
		<title>Ubuntu 9.04(Jaunty Jackalope)</title>
		<link>http://feedproxy.google.com/~r/sandaru1/~3/Qt0CzLnjrQc/</link>
		<comments>http://www.sandaru1.com/2009/05/17/ubuntu-904jaunty-jackalope/#comments</comments>
		<pubDate>Sun, 17 May 2009 11:36:41 +0000</pubDate>
		<dc:creator>Sandaruwan Gunathilake</dc:creator>
				<category><![CDATA[Hacks]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.sandaru1.com/?p=198</guid>
		<description><![CDATA[As you all aware, ubuntu 9.04 has been release on last April. I&#8217;ve been delaying the upgrade for several weeks because of the exams, project, etc. Today, I decided to replaced my ubuntu 8.10 with the new version. There is also an upgrade option which will allow you to upgrade directly from 8.10, however I [...]]]></description>
			<content:encoded><![CDATA[<p>As you all aware, <a href="http://www.ubuntu.com/getubuntu/download">ubuntu 9.04</a> has been release on last April. I&#8217;ve been delaying the upgrade for several weeks because of the exams, project, etc. Today, I decided to replaced my ubuntu 8.10 with the new version. There is also an upgrade option which will allow you to upgrade directly from 8.10, however I have some bad experience with upgrading. So, I decided to go for a fresh installation.</p>
<p>The installation was straight forward. The only major difference was that <a href="http://en.wikipedia.org/wiki/Ext4">ext4</a> file system was available. I created a separate partition for my home directory, and used ext4 for that. So far, I can&#8217;t tell a real difference. The ext3 was working fine, I just installed ext4 to test it out. Ext4 didn&#8217;t give any problems yet, but not any advantages so far either. Installation process finished very quickly and the booting time has been improved (They have finally changed the usplash theme and the GDM theme).</p>
<p>Besides the booting time, the next major feature 9.04 adds is the <a href="http://www.markshuttleworth.com/archives/265">new notification system</a>. This replaces the gtk notification daemon. The new notifications looks really nice, however the spec doesn&#8217;t allow any actions for the notifications. This seems to be a problem because lot of applications are using notifications with actions. It wouldn&#8217;t be a big deal if notifications are just shown without the actions, but instead it shows a dialog box with buttons as actions.</p>
<p>I&#8217;m using two applications which use notifications with actions, <a href="http://www.emesene.org/">emesene</a> and <a href="http://www.nongnu.org/mailnotify/">mail-notification</a>. Mail-notifications doesn&#8217;t have any option to remove actions in the configure box, however there is an option in the gconf settings. You can fire up the gnome configuration editor using &#8220;gconf-editor&#8221; and remove the actions from &#8220;/apps/mail-notification/popups/actions&#8221; key. Emesene uses a plugin called &#8220;LibNotify&#8221; for it&#8217;s notifications. The code for actions can be easily disabled by commentting relevant the code. Comment following lines(lines 231 &#8211; 240) in &#8220;plugins_base/LibNotify.py&#8221; using &#8216;#&#8217; chars.</p>
<pre class="python" name="code">	#if execute == 'conversation':
	#    def on_notify_action(notification, action):
	#        self.controller.newConversation(None, data[0], data[1], True)
	#    notification.add_action('default', 'default', on_notify_action)

	#elif execute == 'mail':
	#    def openMail(notification, action):
	#        desktop.open(self.controller.hotmail.getLoginPage\
	#            (data[0], data[1], data[2]))
	#    notification.add_action('default', 'Open Mail', openMail)</pre>
<p>Other than that, the dropbox daemon was not working initially. I manaully downloaded the propertiary daemon and extracted it to &#8220;~/.dropbox-dist&#8221;. However, even with that dropbox was not starting up properly at boot. It should start automatically with the nautilus &#8211; the extension was loaded properly but it wasn&#8217;t not spawning the deamon. I simply added the &#8220;~/.dropbox-dist/dropbox&#8221; to startup and that sloved the problem (Yes, I know that it&#8217;s not a good hack). I also installed &#8220;<a href="https://ubuntuone.com/">ubuntuone</a>&#8221; which is very similiar to dropbox, but I haven&#8217;t played around it yet.</p>
<img src="http://feeds.feedburner.com/~r/sandaru1/~4/Qt0CzLnjrQc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.sandaru1.com/2009/05/17/ubuntu-904jaunty-jackalope/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.sandaru1.com/2009/05/17/ubuntu-904jaunty-jackalope/</feedburner:origLink></item>
		<item>
		<title>Java Web Start in 64-bit Linux</title>
		<link>http://feedproxy.google.com/~r/sandaru1/~3/mPQuLY-btck/</link>
		<comments>http://www.sandaru1.com/2008/12/24/java-web-start-in-64-bit-linux/#comments</comments>
		<pubDate>Wed, 24 Dec 2008 08:01:40 +0000</pubDate>
		<dc:creator>Sandaruwan Gunathilake</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[64-bit]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://www.sandaru1.com/?p=191</guid>
		<description><![CDATA[If you are using 64-bit linux, you might have found out that jvm 64-bit version doesn&#8217;t have a java web start. (Update: Java Web Start is added to 64-bit package since the version 6u12) I don&#8217;t know any particular reasons for this, however jnlp files seem to be very simple. The jnlp file contains an [...]]]></description>
			<content:encoded><![CDATA[<p>If you are using 64-bit linux, you might have found out that jvm 64-bit version doesn&#8217;t have a java web start. (<strong>Update</strong>: <em>Java Web Start is added to 64-bit package since the version 6u12</em>) I don&#8217;t know any particular reasons for this, however jnlp files seem to be very simple. The jnlp file contains an url to a jar file, which we can download and run separately. I only tried this with <a href="http://www.topcoder.com/tc">topcoder</a> arena &#8211; it works without any problems. Here is a python script for handling simple java web start files.</p>
<pre class="python" name="code">#!/usr/bin/env python

import xml.dom.minidom
from xml.dom.minidom import Node
import os,sys

if len(sys.argv) != 2 :
	print "Usage " + sys.argv[0] + " [jnlp file]"
	sys.exit()

doc = xml.dom.minidom.parse(sys.argv[1])

jnlp = doc.getElementsByTagName("jnlp")[0]
codebase = jnlp.getAttribute("codebase")

resources = jnlp.getElementsByTagName("resources")[0]
jar = resources.getElementsByTagName("jar")[0].getAttribute("href")

application = jnlp.getElementsByTagName("application-desc")[0]
main = application.getAttribute("main-class")
arguments = application.getElementsByTagName("argument")

cmd = ""

for a in arguments :
	cmd += " " + a.firstChild.data

filename = jar.split("/")[-1]

if not jar.startswith("http:") :
	jar = codebase + jar

os.system("wget -N "+jar)

os.system("java -jar " + filename + cmd)</pre>
<img src="http://feeds.feedburner.com/~r/sandaru1/~4/mPQuLY-btck" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.sandaru1.com/2008/12/24/java-web-start-in-64-bit-linux/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://www.sandaru1.com/2008/12/24/java-web-start-in-64-bit-linux/</feedburner:origLink></item>
		<item>
		<title>Browser Wars 2.1</title>
		<link>http://feedproxy.google.com/~r/sandaru1/~3/elIvqnvvlY4/</link>
		<comments>http://www.sandaru1.com/2008/09/22/browser-wars-21/#comments</comments>
		<pubDate>Sun, 21 Sep 2008 23:47:35 +0000</pubDate>
		<dc:creator>Sandaruwan Gunathilake</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[browsers]]></category>
		<category><![CDATA[v8]]></category>
		<category><![CDATA[webkit]]></category>

		<guid isPermaLink="false">http://www.sandaru1.com/?p=177</guid>
		<description><![CDATA[We all know the historical story of first browser war between Netscape and Microsoft. Microsoft ended it by crushing Netscape into pieces, for the time being. Microsoft controlled over 95% of browser market. Netscape had nothing else to do, but to back off &#8211; but they took a shoot on their way back to home [...]]]></description>
			<content:encoded><![CDATA[<p>We all know the historical story of first browser war between Netscape and Microsoft. Microsoft ended it by crushing Netscape into pieces, for the time being. Microsoft controlled over 95% of browser market. Netscape had nothing else to do, but to back off &#8211; but they took a shoot on their way back to home : They open sourced their code.</p>
<p>A small group of people, also known as hackers, formed a small foundation called &#8220;mozilla&#8221; and started hacking. As a result, they released &#8220;Firefox&#8221; in 2004. That was the beginning of second browser wars. Although Firefox mainly started it, It wasn&#8217;t a two player game this time. Apple was the other player. It was not easy to fight from the scratch. So, Apple forked the <a href="http://en.wikipedia.org/wiki/KHTML">KHTML</a> rendering engine and create <a href="http://webkit.org/">Webkit</a> project and the Safari browser. This war bought the life to many amazing technologies &#8211; Web 2.0 has emerged during the war. Yet, the war is not finished yet. Firefox is catching up with the market share with it&#8217;s newest release, Firefox 3.0 forming Guinness records.</p>
<p>Upto this point, the war was about new features, and the memory usage of browsers. Then, in September of 2008(yes, this month), Google turned the flow &#8211; they released one of their secret projects, Chrome. Like Safari, chrome is also built on Webkit, but Google has rewritten the javascript engine from scratch. This new engine, <a href="http://en.wikipedia.org/wiki/V8_JavaScript_engine">V8</a> is several times faster than the current script engines used in other browsers. Eventhough, Google released Chrome first, highlighting V8 and it&#8217;s speed, other projects have been also working on their own javascript optimizations. This is the beginning of Browser Wars 2.1.</p>
<p>So, this weekend I did some test runs on those engines. Namely, <a href="http://en.wikipedia.org/wiki/SpiderMonkey_(JavaScript_engine)">SpiderMonkey</a> used in Firefox 3.0, <a href="https://wiki.mozilla.org/JavaScript:TraceMonkey">TraceMonkey</a> used in Firefox 3.1 and <a href="http://webkit.org/blog/214/introducing-squirrelfish-extreme/">SquirrelFish Extreme</a> used in Webkit. Unfortunately, Google hasn&#8217;t released the Chrome for linux yet &#8211; so, I wasn&#8217;t&#8217; able to run accurate tests on V8 &#8211; but I&#8217;ve used a VM just to checkout the results anyway.</p>
<p>There are several javascript benchmarking tools available such as Sunspider, Dromaeo, and V8 benchmarks. If you do a little search on the internet, you&#8217;ll find tons of sites with benchmarking new engines using those. So, I decided to write few simple javascript functions based on commonly used techniques and benchmark them. These tests are further away from perfect, but it&#8217;ll give a rough idea.</p>
<p>Following graphs show how many of times the given function can be executed within one second. Each test has been run for 10 times and the mean is taken &#8211; <strong>Bigger is better</strong>.</p>
<p><strong>Note : V8 tests have been run under a VM, you should technically ignore them.</strong></p>
<p><strong>Dom Create</strong></p>
<pre class="js" name="code">function dom_create() {
	for ( var i = 0; i &lt; 100; i++) {
		var d = document.createElement('div');
		d.innerHTML = "whatevertest";
	}
}</pre>
<p><a href="http://www.sandaru1.com/wp-content/uploads/2008/09/create.png"><img class="alignnone size-full wp-image-179" title="create" src="http://www.sandaru1.com/wp-content/uploads/2008/09/create.png" alt="" width="500" height="340" /></a></p>
<p><strong>Dom Append</strong></p>
<p>I wanted to append the ul to document but firefox(both 3 and 3.1) crashed.</p>
<pre class="js" name="code">function dom_append() {
	for ( var i = 0; i &lt; 100; i++) {
		var x = document.createElement('ul');
		x.appendChild(document.createElement('li'));
	}
}</pre>
<p><a href="http://www.sandaru1.com/wp-content/uploads/2008/09/append.png"><img class="alignnone size-full wp-image-178" title="append" src="http://www.sandaru1.com/wp-content/uploads/2008/09/append.png" alt="" width="500" height="357" /></a></p>
<p><strong>Update Inner HTML</strong></p>
<p><em>Note : only function is measured, &#8216;var garbage = &#8230;.&#8217; line is only called once before starting the benchmark.</em></p>
<pre class="js" name="code">var garbage = document.getElementById('garbage');

function dom_inner_html() {
	for ( var i = 0; i &lt; 100; i++) {
		garbage.innerHTML = "&lt;div&gt;this should be some large string&lt;/div&gt;
&lt;p&gt;with html elements&lt;/p&gt;&lt;ul&gt;&lt;l&gt;&gt;this&lt;/li&gt;&lt;li&gt;is&lt;/li&gt;
&lt;li&gt;a&lt;/li&gt;&lt;li&gt;list&lt;/li&gt; &lt;/ul&gt;" + i;
	}
}</pre>
<p><a href="http://www.sandaru1.com/wp-content/uploads/2008/09/inner.png"><img class="alignnone size-full wp-image-181" title="inner" src="http://www.sandaru1.com/wp-content/uploads/2008/09/inner.png" alt="" width="500" height="358" /></a></p>
<p><strong>Get Element by ID</strong></p>
<pre class="js" name="code">function get_element() {
	for ( var i = 0; i &lt; 1000; i++) {
		var d = document.getElementById('garbage');
	}
}</pre>
<p><a href="http://www.sandaru1.com/wp-content/uploads/2008/09/element.png"><img class="alignnone size-full wp-image-180" title="element" src="http://www.sandaru1.com/wp-content/uploads/2008/09/element.png" alt="" width="500" height="345" /></a></p>
<p><strong>Conclusion</strong></p>
<p><em>(Chrome is not considered in this section, you can give it the benifit of doubt and come to your own conclusions)</em></p>
<p>As you can see, SquirrelFish Extreme has got an extreme boost over almost everything, except innerHTML updates. Tracemonkey wins the innerHTML updates from unbelievable margin. Both dom based techniques and innerHTML updates are used heavily in ajax based applications. For the time beign, SquirrelFish Extreme seems to have won the overall speed race.</p>
<p>However, browser is not just javascript and rendering. One of the strong features of Firefox is it&#8217;s huge number of extensions and the XUL interface which makes the life easier for extension developers. When you combine that with the current market share of Firefox, Firefox will rule the web for next few years.</p>
<p><strong>Script</strong></p>
<p>You can get the html file I used to benchmark from <a href="http://www.sandaru1.com/wp-content/uploads/2008/09/speed.html">here</a>. The benchmarking functions are taken from <a href="http://ejohn.org/blog/javascript-benchmark-quality/">John Resig&#8217;s benchmarking quality</a> blog post.</p>
<img src="http://feeds.feedburner.com/~r/sandaru1/~4/elIvqnvvlY4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.sandaru1.com/2008/09/22/browser-wars-21/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.sandaru1.com/2008/09/22/browser-wars-21/</feedburner:origLink></item>
		<item>
		<title>Greasemonkey script for highlighting google results</title>
		<link>http://feedproxy.google.com/~r/sandaru1/~3/6Wh5BEmcDLI/</link>
		<comments>http://www.sandaru1.com/2008/07/20/greasemonkey-script-for-highlighting-google-results/#comments</comments>
		<pubDate>Sat, 19 Jul 2008 21:35:02 +0000</pubDate>
		<dc:creator>Sandaruwan Gunathilake</dc:creator>
				<category><![CDATA[Hacks]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[greasemonkey]]></category>

		<guid isPermaLink="false">http://www.sandaru1.com/?p=155</guid>
		<description><![CDATA[Each individual on internet have their own browsing habits. For example, I have seen lot of people type the web address directly in the search box instead of the addressbar(If you look at the top searched queries, you can see yahoo.com, etc). 
One of my browsing habits is to look for wikipedia articles. If it&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p>Each individual on internet have their own browsing habits. For example, I have seen lot of people type the web address directly in the search box instead of the addressbar(If you look at the top searched queries, you can see yahoo.com, etc). </p>
<p>One of my browsing habits is to look for wikipedia articles. If it&#8217;s a movie, I look for imdb. So, instead of spending 1/2 seconds to go through results and analyze site address, i decided to write a simple <a href="https://addons.mozilla.org/en-US/firefox/addon/748">greasemonkey</a> script.</p>
<p>You can grab the script from <a href="http://userscripts.org/scripts/show/30270">here</a>. If you have your own list of sites, you can simply edit the source(greasemonkey provides you a simple interface) and change the &#8220;sites&#8221; array.</p>
<img src="http://feeds.feedburner.com/~r/sandaru1/~4/6Wh5BEmcDLI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.sandaru1.com/2008/07/20/greasemonkey-script-for-highlighting-google-results/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://www.sandaru1.com/2008/07/20/greasemonkey-script-for-highlighting-google-results/</feedburner:origLink></item>
		<item>
		<title>Nautilus Tabs</title>
		<link>http://feedproxy.google.com/~r/sandaru1/~3/7cb4AIKi1W0/</link>
		<comments>http://www.sandaru1.com/2008/07/19/nautilus-tabs/#comments</comments>
		<pubDate>Sat, 19 Jul 2008 13:53:58 +0000</pubDate>
		<dc:creator>Sandaruwan Gunathilake</dc:creator>
				<category><![CDATA[Gnome]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.sandaru1.com/?p=149</guid>
		<description><![CDATA[If you are a gnome user, you might have seen the TABs meme in gnome planet during GUADEC. Most of them are crazy mockups and if implemented totally useless(some are really funny). However, nautilus tabs is really useful and have been a long awaited feature. So today, I compiled the nautilus trunk and now I&#8217;m [...]]]></description>
			<content:encoded><![CDATA[<p>If you are a gnome user, you might have seen the <a href="http://blogs.gnome.org/cosimoc/2008/07/12/gnome-30-tabs/">TABs meme</a> in gnome planet during <a href="http://www.guadec.org/">GUADEC</a>. Most of them are <a href="http://uwstopia.nl/blog/2008/07/dont-worry-about-all-the-tabs">crazy mockups</a> and if implemented totally <a href="http://uwstopia.nl/blog/2008/07/totem-tab-support">useless</a>(some are <a href="http://www.j5live.com/2008/07/12/d-bus-now-supports-tabs/">really funny</a>). However, <a href="http://www.gnome.org/projects/nautilus/">nautilus</a> tabs is really useful and have been a <a href="http://bugzilla.gnome.org/show_bug.cgi?id=48034">long awaited feature</a>. So today, I compiled the nautilus trunk and now I&#8217;m a happy user of nautilus tabs.</p>
<p style="text-align:center"><a href="http://www.sandaru1.com/wp-content/uploads/2008/07/nautilus.png"><img src="http://www.sandaru1.com/wp-content/uploads/2008/07/nautilus-300x240.png" alt="" title="Nautilus Tabs" width="300" height="240" class="size-medium wp-image-150" /></a></p>
<p>For ubuntu 8.04, I had to compile, <a href="http://ftp.gnome.org/pub/gnome/sources/libgnome/2.23/libgnome-2.23.4.tar.gz">libgnome-2.23.4</a>, <a href="http://ftp.gnome.org/pub/gnome/sources/intltool/0.40/intltool-0.40.0.tar.gz">intltool-0.40</a>, <a href="http://ftp.gnome.org/pub/gnome/sources/gnome-desktop/2.23/gnome-desktop-2.23.4.tar.gz">gnome-desktop-2.23.4</a> and <a href="http://ftp.gnome.org/pub/gnome/sources/eel/2.23/eel-2.23.4.tar.bz2">eel-2.23.4</a> before compiling nautilus svn trunk(svn://svn.gnome.org/svn/nautilus/trunk). </p>
<img src="http://feeds.feedburner.com/~r/sandaru1/~4/7cb4AIKi1W0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.sandaru1.com/2008/07/19/nautilus-tabs/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.sandaru1.com/2008/07/19/nautilus-tabs/</feedburner:origLink></item>
		<item>
		<title>Live iso(distro) without burning &amp; partitioning</title>
		<link>http://feedproxy.google.com/~r/sandaru1/~3/LbhXmRVFupI/</link>
		<comments>http://www.sandaru1.com/2008/06/23/live-isodistro-without-burning-partitioning/#comments</comments>
		<pubDate>Sun, 22 Jun 2008 19:28:17 +0000</pubDate>
		<dc:creator>Sandaruwan Gunathilake</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Shell Scripting]]></category>
		<category><![CDATA[gOS]]></category>
		<category><![CDATA[iso]]></category>
		<category><![CDATA[puppylinux]]></category>

		<guid isPermaLink="false">http://www.sandaru1.com/?p=145</guid>
		<description><![CDATA[&#8220;A picture is worth a thousand words&#8221; &#8211; how about a live experience? If you digg around the internet a little bit, you&#8217;ll find hundred of distros lying around. Just like the distro&#8217;s site, explains why they are unique, and provides screenshots, most of those comes with a live CD. You&#8217;ll get a nice iso [...]]]></description>
			<content:encoded><![CDATA[<p>&#8220;A picture is worth a thousand words&#8221; &#8211; how about a live experience? If you digg around the internet a little bit, you&#8217;ll find hundred of distros lying around. Just like the distro&#8217;s site, explains why they are unique, and provides screenshots, most of those comes with a live CD. You&#8217;ll get a nice iso image, burn it, run it, and install it if you like. </p>
<p>But it&#8217;s annoying to burn a CD for each distro you are going to try. One option is to use a USB drive. Unfortunately, my USB flash drive is USB1.0 but my motherboard only allows me to boot from USB2.0 devices. Another options is to copy the files into a new partition, and install grub/syslinux on that partition &#8211; but It&#8217;s not a good idea to mess around with partitions.</p>
<p>After experimenting a little bit with the ISOs and grub configuration, I manage to boot the distro, from the file resides in a sub directory of root.</p>
<p><em>Note : I used following commands in Ubuntu 8.10 &#8211; the file locations might be different based on your distribution. </em></p>
<p><a href="http://www.puppylinux.org/">Puppy Linux</a></p>
<p><a href='http://www.sandaru1.com/wp-content/uploads/2008/06/puppy.png'><img src="http://www.sandaru1.com/wp-content/uploads/2008/06/puppy-300x225.png" alt="Puppy Linux" title="Puppy Linux" width="300" height="225" class="aligncenter size-medium wp-image-146" /></a></p>
<p>Puppy linux is a light weighted, very small distro, yet contains most of the important applications for the daily use. In my opinion, this is a nicely designed great distro. My network card and video card worked without giving any trouble, but the sound card failed.</p>
<p>This distro is specially designed aiming towards portable users, who will run the distro in either a USB or a CD. Puppy linux uses squashfs compressed files to keep it&#8217;s root file system, and the init scripts are searching for these files in all hard drives, cdroms, and usb drives. So the installation is really easy. </p>
<p>1. Download the image, and mount it to a directory.</p>
<pre class="code">sudo mount -o loop puppy-linux.iso /media/cdrom</pre>
<p>2. Create a directory in your root partition and copy the files from iso.</p>
<pre class="code">sudo mkdir /puppy
sudo cp -r /media/cdrom/* /puppy/</pre>
<p>3. Modify your grub config file(/boot/grub/menu.lst) pointing to the puppy kernel and initrd file. Here is the menu entry I added, you&#8217;ll have to change the root according to your disk configuration.</p>
<pre class="code">title		Puppy Linux
root		(hd0,0)
kernel		/puppy/vmlinuz
initrd		/puppy/initrd.gz
quiet</pre>
<p>That&#8217;s it &#8211; you can reboot the computer, select Puppy Linux from grub and boot. </p>
<p><a href="http://www.thinkgos.com/">Good OS &#8211; gOS</a></p>
<p><a href='http://www.sandaru1.com/wp-content/uploads/2008/06/gos1.png'><img src="http://www.sandaru1.com/wp-content/uploads/2008/06/gos1-300x225.png" alt="gOS" title="gOS" width="270" height="212" class="alignnone size-medium wp-image-147" /></a> <a href='http://www.sandaru1.com/wp-content/uploads/2008/06/gos2.png'><img src="http://www.sandaru1.com/wp-content/uploads/2008/06/gos2-300x225.png" alt="gOS" title="gOS" width="270" height="212" class="alignnone size-medium wp-image-148" /></a></p>
<p>gOS is a distribution based on ubuntu designed for web 2.0 internet users (Latest version specially aims toward myspace users). I can&#8217;t really see a practicle advantage of using gOS, despite the fact that theming and dock is superb. Other than that, it&#8217;s just firefox bookmarks on desktop(dock).</p>
<p>The gOS root file system is also packed in a squashfs file, but the init scripts are different. So, the installation is bit tricky.</p>
<p>1. Mount the gOS image.</p>
<pre class="code">sudo mount -o loop gos-space.iso /media/cdrom</pre>
<p>2. Then you&#8217;ll need the squashfs file, kernel and the initrd file.</p>
<pre class="code">sudo mkdir /gos
sudo cp /media/cdrom/casper/filesystem.squashfs /gos
sudo cp /media/cdrom/casper/vmlinuz /gos
sudo cp /media/cdrom/casper/initrd.gz /gos</pre>
<p>(Note : You can also extract the squashfs file and make the process simpler, but that&#8217;ll require much more free space.)</p>
<p>3. When we do changes in the OS, we need those to be persistence. So, I choose to save changes on a file. Following commands will create a 500MB file, and format it as a ext3 drive.</p>
<pre class="code">sudo dd if=/dev/zero bs=1048576 count=500 of=/gos/filesystem.ext3
sudo mkfs.ext3 /gos/filesystem.ext3</pre>
<p>4. Now we need to configure the init scripts to use our files for root file system. So, first extract the initrd file.</p>
<pre class="code">cd /tmp
cp /gos/initrd.gz ./
gunzip initrd.gz
mkdir content; cd content
cpio -i < ../initrd</pre>
<p>Now you have the initramfs on /tmp/content</p>
<p>5. We need loop, squashfs, and unionfs drivers. Edit the "conf/modules" file and append following.</p>
<pre class="code">squashfs
loop
unionfs</pre>
<p>6. The default init script will get the "root" kernel parameter and mount it as "/root" in initramfs. We need a script to remount our files. Create a file called gos in scripts/init-bottom and paste the following content. (gedit scripts/init-bottom/gos)</p>
<pre class="code">#!/bin/sh -e
# initramfs premount script for gos

PREREQ=""

# Output pre-requisites
prereqs()
{
	echo "$PREREQ"
}

case "$1" in
    prereqs)
	prereqs
	exit 0
	;;
esac

mkdir /realroot
mount --move ${rootmnt} /realroot
mkdir /sqroot
mount -o loop /realroot/gos/filesystem.squashfs /sqroot
mkdir /extroot
mount -o loop /realroot/gos/filesystem.ext3 /extroot
mount -t unionfs -o dirs=/extroot:/sqroot none ${rootmnt}</pre>
<p>Make the file executable.</p>
<pre class="code">chmod a+x scripts/init-bottom/gos</pre>
<p>7. Create a new initrd file, and replace the old file.</p>
<pre class="code">cd /tmp/content
find . | cpio --quiet --dereference -o -H newc | gzip > ../initrd.gz
cp /tmp/initrd.gz /gos/initrd.gz</pre>
<p>8. Edit your grub config file(/boot/grub/menu.lst) to boot from it. You'll need to change the devices according to your disk configuration.</p>
<pre class="code">title		gOS
root		(hd0,0)
kernel		/gos/vmlinuz root=/dev/sda1 rw quiet single
initrd		/gos/initrd.gz
quiet</pre>
<p>First time we have to boot in the single user mode and configure the system.</p>
<p>9. Before rebooting, we need to create a fstab. To do that, we have to mount our ext3 filesystem.</p>
<pre class="code">mkdir /tmp/gos
sudo mount -o loop /gos/filesystem.ext3 /tmp/gos
sudo mkdir /tmp/gos/etc</pre>
<p>10. Copy the following content into /tmp/etc/fstab. (/dev/sda5 should be your swap partition - check your /etc/fstab)</p>
<pre class="code">unionfs	/	unionfs rw 0 0
tmpfs	/tmp tmpfs nosuid,nodev 0 0
/dev/sda5	none            swap    sw              0       0</pre>
<p>11. Now reboot your computer and select "gOS" from grub. It'll boot into single user mode(called maintenance mode in ubuntu). Once you get into shell, create a user, and configure your X. There are two nice wizards, you can just follow those.</p>
<pre class="code">user-setup
dpkg-reconfigure xserver-xorg</pre>
<p>12. Reboot back to your main OS and edit the grub - simply remove the "single" parameter. (You can also mount the root partition within the gOS single user mode, and change grub)</p>
<pre class="code">title		gOS
root		(hd0,0)
kernel		/gos/vmlinuz root=/dev/sda1 rw quiet
initrd		/gos/initrd.gz
quiet</pre>
<p>Now, reboot and enjoy. This process is obviously bit long, and not perfect. So, if you are going to keep using that distro, I recommend you install it on a separate partition. </p>
<img src="http://feeds.feedburner.com/~r/sandaru1/~4/LbhXmRVFupI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.sandaru1.com/2008/06/23/live-isodistro-without-burning-partitioning/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.sandaru1.com/2008/06/23/live-isodistro-without-burning-partitioning/</feedburner:origLink></item>
		<item>
		<title>Freedom of choice…</title>
		<link>http://feedproxy.google.com/~r/sandaru1/~3/vpNyS71GYqo/</link>
		<comments>http://www.sandaru1.com/2008/05/09/freedom-of-choice/#comments</comments>
		<pubDate>Fri, 09 May 2008 01:14:54 +0000</pubDate>
		<dc:creator>Sandaruwan Gunathilake</dc:creator>
				<category><![CDATA[Gnome]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.sandaru1.com/?p=139</guid>
		<description><![CDATA[&#8220;Every human has four endowments &#8211; self awareness, conscience, independent will and creative imagination. These give us the ultimate human freedom&#8230; The power to choose, to respond, to change.&#8221; &#8211; Stephen R. Covey
Here is a list of choices I made :
Operating System : Linux
There are lot of reasons why you should use linux : easy [...]]]></description>
			<content:encoded><![CDATA[<p>&#8220;<em>Every human has four endowments &#8211; self awareness, conscience, independent will and creative imagination. These give us the ultimate human freedom&#8230; The power to choose, to respond, to change.</em>&#8221; &#8211; <strong>Stephen R. Covey</strong></p>
<p>Here is a list of choices I made :</p>
<p><strong>Operating System</strong> : <a href="http://en.wikipedia.org/wiki/Linux">Linux</a></p>
<p>There are lot of reasons why you should use linux : easy access to software, no viruses/adware, fast, possibility of configuring every bit. There is also a long list reasons why you shouldn&#8217;t run linux, which I don&#8217;t agree with most of them, except some great Windows only(may be Mac supported) software like Photoshop; and few drivers.</p>
<p><strong>Desktop</strong> : <a href="http://www.gnome.org/">GNOME</a><br />
Simple elegant interface. Pretty stable.</p>
<p><a href='http://www.sandaru1.com/wp-content/uploads/2008/05/gnome.png'><img src="http://www.sandaru1.com/wp-content/uploads/2008/05/gnome-300x240.png" alt="Gnome Desktop" title="gnome" width="300" height="240" class="alignright size-medium wp-image-142" /></a></p>
<p><strong>Window Manager</strong> : <a href="http://www.compiz.org/">compiz</a> (<a href="http://www.compiz-fusion.org/">compiz-fusion</a>)<br />
Rather than the cool 3D effects, there are some really useful plugins in compiz. For example : Expo, Scale.</p>
<p><a href='http://www.sandaru1.com/wp-content/uploads/2008/05/expo.png'><img src="http://www.sandaru1.com/wp-content/uploads/2008/05/expo-150x150.png" alt="Expo Plugin" title="expo" width="150" height="150" class="alignnone size-thumbnail wp-image-140" /></a> <a href='http://www.sandaru1.com/wp-content/uploads/2008/05/scale.png'><img src="http://www.sandaru1.com/wp-content/uploads/2008/05/scale-150x150.png" alt="Scale Plugin" title="scale" width="150" height="150" class="alignnone size-thumbnail wp-image-143" /></a></p>
<p><strong>Web Browser</strong> : <a href="http://www.mozilla.com/firefox/">Firefox 2</a><br />
Firefox 3 has some great fixes on critical bugs like memory leaks, but there is one flaw. Some of the plugins I&#8217;m using are not available/stable for Firefox 3. So, I&#8217;ll stick to Firefox 2 for few more months.</p>
<p><strong>Mail Client</strong> : <a href="http://www.mozilla.com/thunderbird/">Thunderbird</a><br />
I&#8217;m not a heavy user of the desktop mail clients. I only use thunderbird for one of my mail accounts. There is no specific reason I&#8217;m choosing thunderbird over <a href="http://www.gnome.org/projects/evolution/">evolution</a>, just like the interface.</p>
<p><strong>IM</strong> : <a href="http://www.pidgin.im/">piding</a> / <a href="http://emesene.org/">emesene</a><br />
Pidgin is one of the best multi protocol IM clients available in linux(<a href="http://kopete.kde.org">kopete</a> is also nice). Depicts the fact it supports many protocols, that&#8217;s only basic features. Most of my friends are using MSN network, and emesene is capable of handling those, and thousand times better than the crappy <a href="http://www.amsn-project.net">aMSN</a> interface.</p>
<p><strong>VOIP</strong> : <a href="http://www.skype.com/">Skype</a><br />
Just one word : clear</p>
<p><strong>IRC</strong> : <a href="http://www.xchat.org/">xchat</a><br />
Nice interface. </p>
<p><strong>File Transfer (ftp/sftp)</strong> :  <a href="http://filezilla-project.org">Filezilla</a>/<a href="http://en.wikipedia.org/wiki/GVFS">GVFS</a><br />
If I&#8217;m using a separate client for file transfer, that would definitely filezilla, but it&#8217;s much easier to mount the shares directly using GVFS and use it like a local directory.</p>
<p><strong>Word Processing</strong> : <a href="http://www.abisource.com/">abiword</a><br />
It&#8217;s a light weighted, really fast word processor. Even though it&#8217;s light weighted, all necessary features are there.</p>
<p><strong>Graphics</strong> : <a href="http://www.adobe.com/products/photoshop/">Adobe Photoshop</a><br />
Yes, Adobe Photoshop, that&#8217;s the best I&#8217;ve ever seen. I never got along with gimp. Anyhow, I rarely mess with graphical stuff, yet I still miss Photoshop.</p>
<p><strong>Text Editor/IDE</strong> : <a href="http://www.gnome.org/projects/gedit/">gedit</a><br />
Simple, clean interface and have syntax highlighting. I can survive without an integrated debugger. </p>
<p><a href='http://www.sandaru1.com/wp-content/uploads/2008/05/gedit.png'><img src="http://www.sandaru1.com/wp-content/uploads/2008/05/gedit-300x240.png" alt="GEdit" title="gedit" width="300" height="240" class="alignnone size-medium wp-image-141" /></a></p>
<p><strong>Video Player</strong> : <a href="http://www.mplayerhq.hu/">mplayer</a>/<a href="http://www.videolan.org/vlc/">vlc</a><br />
Those will play almost anything.</p>
<p><strong>Audio player</strong> : <a href="http://banshee-project.org">banshee</a><br />
Banshee has a nice audio library management features. Similar artists + cover info rocks.<br />
Worth mentioning : one of the best media library management softwares I&#8217;ve seen is <a href="http://www.microsoft.com/windows/windowsmedia/players.aspx">Windows Media player</a>.</p>
<p><strong>Twitter Client</strong> : <a href="http://live.gnome.org/DanielMorales/Twitux">twitux</a><br />
Very stable, with many features. <a href="http://www.twhirl.org">twhirl</a> is stunning, but adobe AIR still doesn&#8217;t support tray icons on linux.</p>
<p><strong>File Sharing</strong> : <a href="http://en.wikipedia.org/wiki/BitTorrent_%28protocol%29">bittorrent</a><br />
The content is reliable &#8211; well you have to read the comments.</p>
<p><strong>Torrent client</strong> : <a href="http://azureus.sourceforge.net">azureus</a><br />
Many features + plugins. I&#8217;m using the webui plugin, with auto start init script. (If you are curious, there is a azureus command line option : &#8211;ui=console)</p>
<p><strong>Email Service</strong> : <a href="http://www.gmail.com/">gmail</a> / <a href="https://www.google.com/a/">Google apps</a><br />
It&#8217;s the cool ajax interface. The usage of conversations instead of individual mails is also remarkable. I&#8217;m using google apps to handle my gunathilake.com domain.</p>
<p><strong>RSS Reader</strong> : <a href="http://reader.google.com/">Google Reader</a><br />
Easy to use. Rather than a desktop RSS client, I can access it from anywhere. When I&#8217;m at somewhere with an internet connection killing time, I always have something to do. The sharing feature is handy too.</p>
<p><strong>Photo sharing</strong> : <a href="http://picasa.google.com/">Picasa</a><br />
It&#8217;s the desktop application &#8211; It&#8217;s easier to upload.</p>
<p><strong>Blogging platform</strong> : <a href="http://www.wordpress.org/">wordpress</a><br />
Wordpress is a solid, easy to use platform. From a developers point of view, it&#8217;s internal structure is amazing. </p>
<p><strong>Bookmarking</strong> : <a href="http://www.foxmarks.com/">foxmarks</a><br />
I tried to use social bookmarking sites like <a href="http://del.icio.us/">del.icio.us</a>. But I don&#8217;t bookmark much, so I just use the firefox builtin bookmarking. I don&#8217;t want to experience losing my bookmarks again, that&#8217;s why I&#8217;m using foxmarks.</p>
<p><strong>Web Developer plugins</strong> : <a href="http://www.getfirebug.com">firebug</a> / <a href="http://addons.mozilla.org/firefox/addon/60">web developer toolbar</a><br />
Just check the plugins &#8211; you&#8217;ll see.</p>
<p><strong>Virtualization</strong> : <a href="http://www.virtualbox.org/">VirtualBox</a><br />
I&#8217;m using VirtualBox to access IE to test sites. VirtualBox has nice integration features like free mouse.</p>
<p><a href='http://www.sandaru1.com/wp-content/uploads/2008/05/virtualbox.png'><img src="http://www.sandaru1.com/wp-content/uploads/2008/05/virtualbox-300x240.png" alt="VirtualBox" title="virtualbox" width="300" height="240" class="alignnone size-medium wp-image-144" /></a></p>
<p><strong>What I read</strong><br />
Except reading my friends blogs, here are few feeds from my RSS reader.</p>
<ul>
<li><a href="http://www.techcrunch.com">Techcrunch</a> &#8211; I believe they have spies all over the world. Anything related to startups, it&#8217;s over there. Easy to keep track of what&#8217;s happening on the internet.</li>
<li><a href="http://www.linuxtoday.com/">Linux today</a> &#8211; Everything related to linux/open source</li>
<li><a href="http://planet.gnome.org">Gnome planet</a> &#8211; Some nice content over there, related to gnome.</li>
<li><a href="http://www.readwriteweb.com">ReadWriteWeb</a> &#8211; This is like techcrunch. Techcrunch gives you more news, this will give you analysis/comparisons.</li>
<li><a href="http://www.smashingmagazine.com">Smashing Magazine</a> &#8211; A source to get inspired &#8211; collections of creative work all over the internet.</li>
</ul>
<img src="http://feeds.feedburner.com/~r/sandaru1/~4/vpNyS71GYqo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.sandaru1.com/2008/05/09/freedom-of-choice/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.sandaru1.com/2008/05/09/freedom-of-choice/</feedburner:origLink></item>
	</channel>
</rss><!-- Dynamic Page Served (once) in 0.602 seconds -->
