<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	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/"
	>

<channel>
	<title>Code Away &#187; tools</title>
	<atom:link href="http://blog.spathare.com/category/tools/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.spathare.com</link>
	<description>Software development, thoughts and rants (of course)</description>
	<lastBuildDate>Tue, 16 Feb 2010 11:33:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Keystroke savers</title>
		<link>http://blog.spathare.com/2009/07/keystroke-savers/</link>
		<comments>http://blog.spathare.com/2009/07/keystroke-savers/#comments</comments>
		<pubDate>Fri, 31 Jul 2009 09:14:05 +0000</pubDate>
		<dc:creator>Swapnil Pathare</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[ui]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[frameworks]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[plumbing]]></category>
		<category><![CDATA[ROR]]></category>
		<category><![CDATA[ruby on rails]]></category>

		<guid isPermaLink="false">http://blog.spathare.com/?p=169</guid>
		<description><![CDATA[A peek at creating the Django Admin interface for any model has floored me completely. I did make a feeble attempt to create something similar for this in Java way back in 2005, but it is quite a daunting task. The integration offered by Django and RoR really makes one feel that not using these [...]]]></description>
			<content:encoded><![CDATA[<p>A peek at creating the Django Admin interface for any model has floored me completely. I did make a feeble attempt to create something similar for this in Java way back in 2005, but it is quite a daunting task.</p>
<p>The integration offered by Django and RoR really makes one feel that not using these frameworks is just the thing why software developers are in demand today. Hire fifteen to do a job in php which two could do using Django.</p>
<p>Some may say these facilities are just keystroke-savers. Agreed. The important question is why do you not want to save those keystrokes <img src='http://blog.spathare.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  . A common application development (without the right kind of framework) spends a significant amount of time (I&#8217;d hazard a guess of more than 25%) doing plumbing work. Lets take a Java example for an &#8220;edit&#8221; screen, which shows the user already stored data, and allows him to make changes:</p>
<ul>
<li>Take data from repository, probably as a generic List
<ul>
<li>Oh yeah, connect to the DB first, and run a DB Statement in a try-catch block, right within your business logic</li>
</ul>
</li>
<li>Populate a data bean with all the data. All manually. If the DB cursor contains 25 columns, have a object with 25 attributes, 25 getters, 25 setters and populate all attributes one by one.</li>
<li>Send the data bean to the view</li>
<li>In the view, have hard-coded UI components for each attribute of the data bean to be displayed. For any related queries to be executed, hard code page links which will fetch those.</li>
<li>On event of user clicking OK, program a set of validations to ensure user has not entered bad values. Most of these are not business validations, but checks to ensure no bad characters are present in the input.</li>
<li>Populate user entered values obtained through form into a data bean</li>
<li>Code a SQL Update script which will take each value from the data bean and update the backend</li>
<li>commit (don&#8217;t forget that!)</li>
<li>Rinse-and-repeat for all related queries</li>
</ul>
<p>Any framework support (struts, spring, hibernate) is a keystroke saver in addition to being responsible for formalizing (a subset of) the programming for the application. Django and RoR simply take the integration between MVC to the next level. I had mailed a friend a few months ago about what Rails has:</p>
<p>1. <strong>Integration with AJAX: </strong>You see whether the type of request from the client (browser) is ajax or plain HTTP. You use those conditions to provide a specific response. In case it is an ajax request, you can play directly with elements rendered in the browser (e.g. Put text &#8220;Saved Successfully&#8221; in the information bar and blink it once). This integration, and resulting 5 lines of code is far faster than anything we would do by ourselves. (client side use ajax-specific library functions to send request, then check XML returned and perform activities in browser using javascript again). This integration is thanks to use of inbuilt prototype and scriptaculous libraries</p>
<p>2. <strong>Test Integration:</strong> I know that if a nice <strong>high-level </strong>test framework didn&#8217;t exist already, we would never get serious about writing real automated tests. It would always be like &#8220;lets develop this cool feature now that we have time&#8230; we&#8217;ll check out tests later&#8221;. Fortunately, tests are easy to write, and we can start small. (full page tests and all can be written later). We can also write Model level tests for ensuring relationships etc. N e a t.</p>
<p>3. <strong>MVC Integration: </strong>Neat MVC code, easy to write. Controllers and views nicely integrated. All variables declared in controller are directly available to views. Which should have always been the case, but in other barebones J2EE/php, you need to pass a data object explicitly, because MVC is not mandated.</p>
<p>4. <strong>Fixtures:</strong> Stuff to fill your &#8220;Test&#8221; database with data. Easy to write YAML (byebye XML). This will auto-run when you run tests, so your test database is ready with required data. If you don&#8217;t know yet, <span class="il">Rails</span> will auto-create dev, test, prod databases for easy demarcation. <span class="il">Rails</span> will also auto-clone the dev database schema to test database prior to loading fixtures.</p>
<p>The learning curve is a bit high, and I <em>am </em>spending a lot more time understanding the components in comparison to J2EE. Yet, given the benefits, I think it is well worth the effort.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.spathare.com/2009/07/keystroke-savers/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Google Wave: Information organizing outsourced</title>
		<link>http://blog.spathare.com/2009/06/google-wave-information-organizing-outsourced/</link>
		<comments>http://blog.spathare.com/2009/06/google-wave-information-organizing-outsourced/#comments</comments>
		<pubDate>Tue, 02 Jun 2009 17:27:39 +0000</pubDate>
		<dc:creator>Swapnil Pathare</dc:creator>
				<category><![CDATA[tools]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[information]]></category>
		<category><![CDATA[organization]]></category>
		<category><![CDATA[wave]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://blog.spathare.com/?p=155</guid>
		<description><![CDATA[Some may say that it is too late to blog about Google Wave. The applause which started on May 28 can still be heard and the Internet community has done everything but go down on their knees and bow to the awesome concept. For those who couldn&#8217;t manage time to watch the Wave preview, here [...]]]></description>
			<content:encoded><![CDATA[<p>Some may say that it is too late to blog about <a href="http://wave.google.com/" target="_blank">Google Wave</a>. The <a href="http://radar.oreilly.com/2009/05/google-wave-what-might-email-l.html" target="_blank">applause</a> which started on May 28 can still be <a href="http://www.techcrunch.com/2009/05/28/google-wave-drips-with-ambition-can-it-fulfill-googles-grand-web-vision/" target="_blank">heard</a> and the Internet community has done everything but go down on their knees and bow to the awesome concept.</p>
<p>For those who couldn&#8217;t manage time to watch the Wave preview, here are just some of the things it does :</p>
<ul>
<li>Acts like email when the recipient is offline</li>
<li>Acts like a realtime chat when the recipient is online</li>
<li>Maintains a common structure in one place (visible to, and editable by all concerned parties) instead of having copies in every person&#8217;s account</li>
<li>Allows you to add other recipients to a subset of a Wave or the whole Wave.The new folks can &#8220;Playback&#8221; how messages were exchanged</li>
<li>Allows visual plugins which can take the form of games, polls, etc. For example, instead of sending messages to each other, you can send Chess Moves which the plugin happily records and the game proceeds</li>
<li>Allows realtime collaboration on documents with changes tracked. Again, a common copy of document is maintained.</li>
</ul>
<p>While some skeptical glances are surely cast as to whether people will &#8220;embrace&#8221; this new concept of communication (as they are still stuck to SNDMSG program and have not been able to comprehend any other way to communicate all these years), the overall mood is that of joy, on having seen something truly profound, and having been promised that this will be available to everyone, for FREE, later this year.</p>
<p>The most obvious thing that hit me while seeing the preview was the way Google relentlessly pursues its mission. Remember Google&#8217;s <a href="http://www.google.com/corporate/" target="_blank">Mission statement</a>?</p>
<blockquote><p>Google&#8217;s mission is to organize the world&#8217;s information and make it universally accessible and useful.</p></blockquote>
<p>This is the way Google earns money: By targeting advertisements suited to your interests. How does it understand your interests? By organizing information about you.</p>
<p>So while the mission is technically about helping the world, it is also a lot about making profit. Of course, there is nothing wrong whatsoever in making profit by developing something which <span style="text-decoration: underline;">provides value</span> to the user. Microsoft earns by asking users to buy the product, Google earns by providing relevant advertisements.</p>
<p>Thus started the long journey of organizing the world&#8217;s information. First they gathered some trends of what we search based on cookie information. GMail was the next big boost as a lot of personal emails meant a lot of personal information. Orkut, Blogger, Google Talk, Docs, Sites, Reader, Youtube; each product added to its suite targets nothing but collection of information from users in exchange for some great services, for free.</p>
<p>Yet, Google would still require to organize bits of information from different applications to understand the &#8220;complete picture&#8221;. Google Wave, in a lot of ways, has removed that additional effort.</p>
<p>Wave is a communication structure that can be used anywhere. (Potentially) integrated throughout Google Applications and beyond, it provides a single point of communication. Email, chat, organization of albums, blogging, collaborating on documents, everything is either available in the Wave structure or can be derived out of it (by creating a new Wave and importing some specific elements). So now, Google does not need to  organize information about you. You yourself will organize it all using Wave. It is safe to assume that information which might have been dispersed around on a dozen different websites online (Google or others) will now be collected in a common Wave. With little or no effort, your whole life (henceforth) is likely to be captured in a handful of waves. I shudder just thinking of the advertising avenues that follow.</p>
<p>Google, you evil genius, you!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.spathare.com/2009/06/google-wave-information-organizing-outsourced/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Jaunty: some problems and workarounds</title>
		<link>http://blog.spathare.com/2009/05/jaunty-some-problems-and-workarounds/</link>
		<comments>http://blog.spathare.com/2009/05/jaunty-some-problems-and-workarounds/#comments</comments>
		<pubDate>Wed, 27 May 2009 12:30:20 +0000</pubDate>
		<dc:creator>Swapnil Pathare</dc:creator>
				<category><![CDATA[tools]]></category>
		<category><![CDATA[3D]]></category>
		<category><![CDATA[ATI]]></category>
		<category><![CDATA[compiz]]></category>
		<category><![CDATA[error]]></category>
		<category><![CDATA[graphics]]></category>
		<category><![CDATA[jaunty]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[proprietary]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[virtualbox]]></category>

		<guid isPermaLink="false">http://blog.spathare.com/?p=151</guid>
		<description><![CDATA[OK, so lets have a quick round of what could go wrong post-upgrade to Ubuntu Jaunty and how to fix it, fast. These are some of the problems I faced, and found all the solutions by googling. Just listing them out here. Hope this helps some of you. 1. Proprietary ATI drivers The first thing [...]]]></description>
			<content:encoded><![CDATA[<p>OK, so lets have a quick round of what could go wrong post-upgrade to Ubuntu Jaunty and how to fix it, fast. These are some of the problems I faced, and found all the solutions by googling. Just listing them out here. Hope this helps some of you.</p>
<h2>1. Proprietary ATI drivers</h2>
<p>The first thing we come across is the video drivers which never were. The moment you <a href="http://wiki.cchtml.com/index.php/Ubuntu_Jaunty_Installation_Guide" target="_blank">try to install</a> proprietary ATI drivers for &#8220;old&#8221; cards (my ATI RadeonExpress 1250 happens to be one of those), you will get a system freeze. No graphics, no inputs, just some random colors on screen, which aren&#8217;t very pretty either.</p>
<p>Solution <a href="http://www.leong.nl/2009/04/ubuntu-jaunty-upgrade-with-atiamd-graphics/" target="_blank">here</a>:</p>
<pre>sudo /usr/share/ati/fglrx-uninstall.sh  # (if it exists)
  sudo apt-get remove --purge fglrx*
  sudo apt-get remove --purge xserver-xorg-video-ati xserver-xorg-video-radeon
  sudo apt-get install xserver-xorg-video-ati
  sudo apt-get install --reinstall libgl1-mesa-glx libgl1-mesa-dri xserver-xorg-core
  dpkg-reconfigure xserver-xorg</pre>
<p>You could probably create a script of this sort and save it in your home directory, so that when the system does fail, you can easily get into recovery mode (use the &#8220;Recovery mode&#8221; listed in Grub) and just run this script rather than attempt googling through Lynx, which I almost always end up doing. In case you plan to run this script in recovery mode, you don&#8217;t need the &#8220;sudo&#8221; command for any line since you will be &#8220;root&#8221; already.</p>
<h2>2. Screen Freeze with Compiz</h2>
<p>The open source drivers you install for ATI are known to create hassles for 3D graphics. Jaunty does allow you to enable Compiz (System Appearance -&gt; Effects -&gt; Normal / Best). However, I had a complete system freeze lot of times while I gave Compiz a try. I could easily reproduce the <a href="https://bugs.launchpad.net/ubuntu/+bug/364524" target="_blank">strace gedit bug</a> while 3D effects were enabled.</p>
<p>Solution: Disable Compiz (or downgrade <img src='http://blog.spathare.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  )</p>
<h2>3. VirtualBox fails to start</h2>
<p>The Virtualbox kernel module needs to be recompiled for the newer kernel in Jaunty. This problem is not specific to Jaunty (or even Ubuntu), but no harm in listing it here.</p>
<p><code>sudo apt-get install linux-headers-$(uname -r)<br />
sudo /etc/init.d/vboxdrv setup</code></p>
<p>The first line downloads appropriate Kernel Headers for the latest Kernel, which will be used by the &#8220;vboxdrv setup&#8221; command.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.spathare.com/2009/05/jaunty-some-problems-and-workarounds/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubuntu: Releasing software which &#8220;Just Works&#8221;</title>
		<link>http://blog.spathare.com/2009/05/ubuntu-releasing-software-which-just-works/</link>
		<comments>http://blog.spathare.com/2009/05/ubuntu-releasing-software-which-just-works/#comments</comments>
		<pubDate>Tue, 26 May 2009 12:30:16 +0000</pubDate>
		<dc:creator>Swapnil Pathare</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[early]]></category>
		<category><![CDATA[fix]]></category>
		<category><![CDATA[often]]></category>
		<category><![CDATA[release]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://blog.spathare.com/?p=144</guid>
		<description><![CDATA[In my last post, I summarized my problems with the latest version of Ubuntu: Jaunty Jackalope. I&#8217;m not the only one cribbing about it, though. Many bloggers out there are doing a better job than I am, posting problems with solutions to them. Forums are abuzz with all the issues right from screen flicker to [...]]]></description>
			<content:encoded><![CDATA[<p>In my <a href="http://blog.spathare.com/2009/05/ubuntu-wrestling-with-jaunty-jackalope/" target="_blank">last post</a>, I summarized my problems with the latest version of Ubuntu: Jaunty Jackalope. I&#8217;m not the only one cribbing about it, though. Many bloggers out there are doing a better job than I am, posting <a href="http://www.ubuntugeek.com/some-of-known-ubuntu-904jaunty-jackalope-bugs-with-workarounds.html" target="_blank">problems with solutions</a> to them. Forums are abuzz with all the issues right from screen flicker to sudden OS freeze to wireless connectivity. In short, everything is normal.</p>
<p>The problem with Ubuntu, however, is that with the frenzied pace of development and the releases being churned almost twice yearly, I am quite certain that most of the bugs reported for this release will be ignored or will be prioritized &#8220;Low&#8221;, meaning they are kept for &#8220;later&#8221; (read: never). While this is an issue with even slow-moving projects, I am (or at least, was) quite impressed with the way Ubuntu maintained quality till Hardy Heron. Most of the packages &#8220;Just worked&#8221; post installation, with a few hiccups here and there. Hardware, drivers and graphics did remain a concern, but that is something we have to live with for a while, given the low interest of manufacturers for providing Linux drivers.</p>
<p>Anyway, back to the point: The current pace of development for Ubuntu guarantees a lot of loose ends in newer releases. In contrast the Debian community goes for &#8220;release when ready&#8221; philosophy. However, they suffer from delays and more delays in releases, leading people to believe that Ubuntu is the right way.</p>
<p>Which brings the question, what, really, is &#8220;the right way&#8221;? Most will consider a &#8220;middle way out&#8221; but that is easier said than done. Granting developers&#8217; request for more time on the basis of an incomplete feature or a yet-to-fix bug list will eventually lead to a heavily-delayed release. On the other hand, having a strict deadline means that you are ready to compromise on the quality of the release. While this matches the &#8220;release early, release often&#8221; <a href="http://catb.org/esr/writings/cathedral-bazaar/cathedral-bazaar/ar01s04.html" target="_blank">philosophy</a><sup>*</sup>, there&#8217;s a slight disconnect when it comes to having a product eager to replace Microsoft Windows, as is described in&#8230; <a href="https://bugs.launchpad.net/ubuntu/+bug/1" target="_blank">Bug #1 for Ubuntu</a>.</p>
<blockquote><p>Microsoft has a majority market share in the new desktop PC marketplace. This is a bug, which Ubuntu is designed to fix.</p></blockquote>
<p>Back to the point (again), Paul Graham also <a href="http://www.paulgraham.com/startuplessons.html" target="_blank">corrects the general perspective</a> for &#8220;release early&#8221;:</p>
<blockquote><p>By &#8220;release early&#8221; I don&#8217;t mean you should release something full of bugs, but that you should release something minimal. Users hate bugs, but they don&#8217;t seem to mind a minimal version 1, if there&#8217;s more coming soon.</p></blockquote>
<p>So far, I don&#8217;t see any awesome release philosophy with a strong way to maintain the pace, while maintaining the quality. All we can do, maybe, is to have an in-between release to just &#8220;fix more and add less&#8221;. This is where developers may find themselves in bug-fixing mode, instead of their favourite &#8220;building that cool app&#8221;, but its all for the <a href="http://en.wikipedia.org/wiki/Utilitarianism" target="_blank">greater good</a>, no?</p>
<hr /><sup>*</sup> I never dreamt I&#8217;d link to ESR one day, but anyway I&#8217;m disagreeing with him, so no problemo</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.spathare.com/2009/05/ubuntu-releasing-software-which-just-works/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubuntu: Wrestling with Jaunty Jackalope</title>
		<link>http://blog.spathare.com/2009/05/ubuntu-wrestling-with-jaunty-jackalope/</link>
		<comments>http://blog.spathare.com/2009/05/ubuntu-wrestling-with-jaunty-jackalope/#comments</comments>
		<pubDate>Mon, 25 May 2009 16:50:37 +0000</pubDate>
		<dc:creator>Swapnil Pathare</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[ATI]]></category>
		<category><![CDATA[driver]]></category>
		<category><![CDATA[graphics]]></category>
		<category><![CDATA[instal]]></category>
		<category><![CDATA[jackalope]]></category>
		<category><![CDATA[jaunty]]></category>
		<category><![CDATA[package]]></category>
		<category><![CDATA[repository]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://blog.spathare.com/?p=139</guid>
		<description><![CDATA[After a recent jump from Ubuntu 8.04 to 9.04, I needed at least three days to settle down after having a lot of hiccups with the latest and greatest versions. The major problem was with my ATI drivers. Never a good thing to mix ATI with Linux, I have learnt. But maybe the lesson came [...]]]></description>
			<content:encoded><![CDATA[<p>After a recent jump from Ubuntu 8.04 to 9.04, I needed at least three days to settle down after having a lot of hiccups with the latest and greatest versions.</p>
<p>The major problem was with my ATI drivers. Never a good thing to mix ATI with Linux, I have learnt. But maybe the lesson came a bit too late as my Motherboard I bought a year ago has got the RadeonExpress 1250 onboard graphic card which is already <a href="http://www.linux-magazine.com/online/news/proprietary_driver_for_ubuntu_9_04_fglrx_for_x_server_1_6" target="_blank">in &#8220;Legacy&#8221; mode</a>!</p>
<blockquote><p>The downside is that the newest generation of the driver doesn&#8217;t support any of the &#8220;older&#8221; ATI chipsets, which at this point include the R300 through R500 chipsets.</p></blockquote>
<p>The proprietary ATI fglrx driver <a href="http://ubuntuforums.org/showthread.php?p=7121834" target="_blank">won&#8217;t support</a> the new kernel. Need to make do with the open source drivers. Fortunately, they are a good fit for 2D graphics with a good resolution. Bye bye, Compiz, for the time being.</p>
<p>Having settled with the &#8220;basic&#8221; look and feel, I also find some problems cropping up in the package repositories. <a href="http://ubuntuforums.org/showthread.php?t=1087834" target="_blank">A guide</a> for installing the good old Tomcat server makes a pretty frank statement before proceeding with the installation procedure:</p>
<blockquote><p>If you are running Ubuntu and want to use the Tomcat servlet container, you should not use the version from the repositories as it just doesn&#8217;t work correctly. Instead you&#8217;ll need to use the manual installation process that I&#8217;m outlining here.</p></blockquote>
<p>This is probably not unique to Jaunty, but nonetheless, the general trend now is that I do read a bit online before installing anything from the repository. Be it <a href="http://amarok.kde.org/forum/index.php?topic=17003.0">Amarok</a>, the version 2 of which isn&#8217;t <a href="http://ubuntuforums.org/showthread.php?t=1084971">very well received</a>, or Tomcat, or Eclipse.</p>
<p>Wine, which was working wonderfully in Hardy, seems to be broken for some reason in Jaunty. All I get is 2 seconds of screen flicker, whenever I try to load any program. Need to google on this a bit more in detail. But a quick search points in the direction of my graphics card (again!).</p>
<p>I am left wondering why I upgraded at all. Maybe it was the faith that with Ubuntu, newer version numbers always mean more happiness.</p>
<p>It&#8217;s not that Ubuntu has let us down. Although a <a href="http://www.lockergnome.com/linux/2009/04/17/waiting-before-trying-ubuntu-904-test-release-is-advised/" target="_blank">lot of posts</a> are floating about regarding Ubuntu pre-release testing being inadequate, there is actually too much on the plate to test with. A multitude of hardware chips, file systems, desktop environments, applications, each with their different versions, is a pretty daunting task. I just hope that every once in a while there is a release in which the dev folks take a step back and look at how usable the OS is, and whether it &#8220;Just Works&#8221;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.spathare.com/2009/05/ubuntu-wrestling-with-jaunty-jackalope/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Two quick ways to secure wordpress</title>
		<link>http://blog.spathare.com/2009/02/two-quick-ways-to-secure-wordpress/</link>
		<comments>http://blog.spathare.com/2009/02/two-quick-ways-to-secure-wordpress/#comments</comments>
		<pubDate>Sun, 15 Feb 2009 08:48:27 +0000</pubDate>
		<dc:creator>Swapnil Pathare</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[akismet]]></category>
		<category><![CDATA[authentication]]></category>
		<category><![CDATA[captcha]]></category>
		<category><![CDATA[defensio]]></category>
		<category><![CDATA[login]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[spam]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://blog.spathare.com/?p=119</guid>
		<description><![CDATA[WordPress, with its five-minute install does a great job of simplifying use of web applications. It just falls short of providing good out-of-the-box security to the blog. Your blog, like your email or your Facebook profile, is your online identity. Yes, that&#8217;s why we have an authentication system, but sending plaintext passwords to the server [...]]]></description>
			<content:encoded><![CDATA[<p>WordPress, with its five-minute install does a great job of simplifying use of web applications. It just falls short of providing good out-of-the-box security to the blog.</p>
<p>Your blog, like your email or your Facebook profile, is your online identity. Yes, that&#8217;s why we have an authentication system, but sending plaintext passwords to the server isn&#8217;t a great default setting. Well, going for a security certificate for something as basic as a blog will be too farfetched, but the nice <a href="/2008/06/http-login-for-websites/" target="_blank">CHAP protocol</a> is good enough for all our secure login needs. And it is available as a <a href="http://www.redsend.org/chapsecurelogin/" target="_blank">WordPress plugin</a> thanks to redsend.org. Yay!</p>
<p>So there you go. Not a single line of code written, and your wordpress login is secure, even when you go wireless. That wasn&#8217;t so hard!</p>
<p>The other security feature that we need is protection from comment spam. This is a more commonly known problem, as you can &#8220;see&#8221; your blog being misused, unlike in the situation explained above. There are a hell lot of spam protection plugins available. You can either go for a strong Captcha system like <a href="http://wordpress.org/extend/plugins/mycaptcha/" target="_blank">MyCaptcha</a>, or prefer to go easy on people kind enough to comment on your post and filter out spam automatically, using Akismet or Defensio. I <a href="/2008/12/yet-another-thanks-akismet-post/" target="_blank">prefer the latter method</a> and it has been pretty accurate till now.</p>
<p>That&#8217;s it. Your wordpress installation is secure from all the bad guys. Well, most of &#8216;em, anyway. There&#8217;s nothing like investing five more minutes after the five-minute install for a bit of security. Blog safe!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.spathare.com/2009/02/two-quick-ways-to-secure-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Chrome prevents javascript alert loop</title>
		<link>http://blog.spathare.com/2009/02/chrome-prevents-javascript-alert-loop/</link>
		<comments>http://blog.spathare.com/2009/02/chrome-prevents-javascript-alert-loop/#comments</comments>
		<pubDate>Sat, 14 Feb 2009 04:52:34 +0000</pubDate>
		<dc:creator>Swapnil Pathare</dc:creator>
				<category><![CDATA[tools]]></category>
		<category><![CDATA[ui]]></category>
		<category><![CDATA[alert]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[option]]></category>
		<category><![CDATA[prevent]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://blog.spathare.com/?p=112</guid>
		<description><![CDATA[I&#8217;ve written earlier about user helplessness regarding any javascript alert boxes which keep popping in one tab of the browser, thereby jeopardizing the whole browser window. I just found by chance that Google Chrome indeed handles this elegantly: On the second popup for any page, it displays this neat checkbox right below the message: This [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve <a href="/2009/01/javascript-alert-why-block-everything/" target="_blank">written earlier</a> about user helplessness regarding any javascript alert boxes which keep popping in one tab of the browser, thereby jeopardizing the whole browser window.</p>
<p>I just found by chance that Google Chrome indeed handles this elegantly: On the second popup for any page, it displays this neat checkbox right below the message:</p>
<p><img class="alignnone size-full wp-image-113" title="chrome_alert_prevent" src="http://blog.spathare.com/wp-content/uploads/2009/02/chrome_alert_prevent.jpg" alt="" width="354" height="136" /></p>
<p>This is something that Mozilla folks decided &#8220;could wait&#8221; for the <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=59314" target="_blank">past eight years</a>?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.spathare.com/2009/02/chrome-prevents-javascript-alert-loop/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Yet another &#8220;Thanks Akismet&#8221; post</title>
		<link>http://blog.spathare.com/2008/12/yet-another-thanks-akismet-post/</link>
		<comments>http://blog.spathare.com/2008/12/yet-another-thanks-akismet-post/#comments</comments>
		<pubDate>Mon, 01 Dec 2008 04:57:47 +0000</pubDate>
		<dc:creator>Swapnil Pathare</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[akismet]]></category>
		<category><![CDATA[annoying]]></category>
		<category><![CDATA[captcha]]></category>
		<category><![CDATA[spam]]></category>

		<guid isPermaLink="false">http://blog.spathare.com/?p=47</guid>
		<description><![CDATA[Well, it&#8217;s getting a bit old. Everyone around seems to have thanked Akismet long back. So this isn&#8217;t really necessary. In fact, its redundant. Yet, it&#8217;s never too late to thank anyone. (Adapted from V for Vendetta: It&#8217;s never too late to apologize) Akismet has shown how we do not always require captchas to curb bot-generated [...]]]></description>
			<content:encoded><![CDATA[<p>Well, it&#8217;s getting a bit old. Everyone around seems to have <a href="http://www.google.co.in/search?q=thanks+akismet" target="_blank">thanked Akismet long back</a>. So this isn&#8217;t really necessary. In fact, its redundant.</p>
<p>Yet, it&#8217;s never too late to thank anyone. <em>(Adapted from V for Vendetta: It&#8217;s never too late to apologize)</em></p>
<p><a href="http://akismet.com/" target="_blank">Akismet</a> has shown how we do not always require captchas to curb bot-generated random spam. But it is not ideal for big websites, mainly because</p>
<ul>
<li>Its a program after all. There&#8217;s every chance that it can make mistakes.</li>
<li>Genuine comments suppressed by Akismet are not that bad for a website. But spam comments for <em>enlarging body parts to impress her</em>, which pass through Akismet and shine with a glow right below an article don&#8217;t look good at all.</li>
<li>There&#8217;s that tiny increase on server load everytime a comment has to be analyzed by Akismet. And if this hardly-visited and never-linked blog (as of today) has fought with 1000 spam comments, we all can imagine what the battle will be for a website which gets &#8220;slashdotted&#8221; or &#8220;dugg&#8221; every few seconds.</li>
</ul>
<div>So it turns out that smaller blogs have it easy. Having the option between Akismet and captchas, I go with Akismet for a few simple reasons:</div>
<div>
<ul>
<li>Captchas are irritating.</li>
<li>Captchas are irritating.</li>
<li>Captchas are irritating.</li>
</ul>
<div>That&#8217;s three good reasons right there, the last one being most important <img src='http://blog.spathare.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  . While I have enough server power, I will try to minimise the hassle of looking through bleak bent text with a mashed grid or circles or airspray.</div>
</div>
<div>For those who really thought this would be a good post, sorry guys, its Monday morning, and &#8230;</div>
<div>Nonetheless, since you stuck by me (and this rotten post), here are some <a href="http://www.geekamongus.com/2008/08/29/captchas-no-i-didnt-sneeze/" target="_blank">good rants</a> on <a href="http://peoplemakelifeawful.blogspot.com/2008/10/verify-this-ancient-language-for-access.html" target="_blank">beautiful captchas</a>. Enjoy.</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.spathare.com/2008/12/yet-another-thanks-akismet-post/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Software Updates: Auto-chaos</title>
		<link>http://blog.spathare.com/2008/11/software-updates-auto-chaos/</link>
		<comments>http://blog.spathare.com/2008/11/software-updates-auto-chaos/#comments</comments>
		<pubDate>Mon, 24 Nov 2008 04:33:19 +0000</pubDate>
		<dc:creator>Swapnil Pathare</dc:creator>
				<category><![CDATA[tools]]></category>
		<category><![CDATA[ui]]></category>
		<category><![CDATA[automatic]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[hang]]></category>
		<category><![CDATA[ie]]></category>
		<category><![CDATA[internet explorer]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[update]]></category>
		<category><![CDATA[upgrade]]></category>
		<category><![CDATA[yahoo]]></category>

		<guid isPermaLink="false">http://blog.spathare.com/?p=45</guid>
		<description><![CDATA[I got a SOS call from a relative while I was on vacation. &#8220;My Internet Explorer is not working.&#8221; No idea why. No one can resolve it. Other browsers are working properly. Long story short, after having spent a few minutes on his PC, I found out that IE was hanging the moment it started. [...]]]></description>
			<content:encoded><![CDATA[<p>I got a SOS call from a relative while I was on vacation. &#8220;My Internet Explorer is not working.&#8221; No idea why. No one can resolve it. Other browsers are working properly.</p>
<p>Long story short, after having spent a few minutes on his PC, I found out that IE was hanging the moment it started. His PC maintenance guy had come and tried to reconfigure the Internet connection (<em>heh</em>), which didn&#8217;t help much. (The fact that a browser ought to hang on the OS from the same company should have seemed absurd, but somehow we are all used to it, mostly due to virus attacks and corruption.)</p>
<p>But why would a perfectly working IE hang all of a sudden? I got another bit of info from the user: &#8220;It asked me to upgrade to version 7. It is not working ever since I upgraded&#8221;. Sad. MS doesn&#8217;t test its upgrades enough! Useless! Thankfulle, before I could post my rant online, I googled and found a quick solution: Uninstall Yahoo! Companion and all shall be fine. And indeed it worked! Perfect answer&#8230; and boy did I get showered with praises for starting up good old IE with fewer toolbars!</p>
<p>For no fault of its own, IE was screwed and broken due to the upgrade. Oh, but there <em>is </em>a fault in it&#8230; <strong>the upgrade itself!</strong></p>
<p>The sad thing here is that IE either doesn&#8217;t have any idea about what applications are plugged-in (or coaxed in) to it, or that it doesn&#8217;t care about them during the upgrade. Either ways, it is the user who suffers.</p>
<p>FF covers addons a lot more by checking their versions and the compatibility after each upgrade. That said, a foolproof &#8220;Go back to the previous version&#8221; ought to be present for all major upgrades <span style="text-decoration: line-through;">which are not critical</span>, simply because there may be a functionality dear to the user (and a don&#8217;t care for the dev) which might stop working in the new version. <strong>Edit: </strong>Even if the update is critical or security related, why not let the user choose whether he needs a secure app or a working one?</p>
<p>The other way out is to have a package manager like Debian&#8217;s &#8216;apt&#8217; tool to handle all upgrades and report clashes to the user. But that&#8217;s a distant dream on Windows with everyone having their own installers.</p>
<p>I hate automatic updates &amp; installs. (I have also <a href="/2008/07/all-that-is-evil-part-2/" target="_blank">written earlier</a> about Acrobat Reader&#8217;s need to download and install &#8220;Critical Security&#8221; updates every few weeks from the Internet. There ought not to be those many security vulnerabilities in a document reader.) But all kinds of applications today are coming up with internet updates. While this does allow you to provide your latest and greatest piece of code to the user, you might just end up breaking something because of incompatibilities with other software.</p>
<p>Adhering to the policy of <a href="http://www.oldversion.com" target="_blank">oldversion.com</a>: &#8220;Because Newer Is Not Always Better&#8221;, I try to keep my software tuned for manual updates. Reduces the trouble, as well as the bandwidth consumption (required specially for limited-download connections). Yet, it does no harm to remember that software one develops will not be the only process running on any machine. Let&#8217;s have some consideration for others.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.spathare.com/2008/11/software-updates-auto-chaos/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>The best of CSS3&#8230; together</title>
		<link>http://blog.spathare.com/2008/11/the-best-of-css3-together/</link>
		<comments>http://blog.spathare.com/2008/11/the-best-of-css3-together/#comments</comments>
		<pubDate>Wed, 19 Nov 2008 13:53:03 +0000</pubDate>
		<dc:creator>Swapnil Pathare</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[ie]]></category>
		<category><![CDATA[opacity]]></category>
		<category><![CDATA[rounded corner]]></category>
		<category><![CDATA[shadow]]></category>
		<category><![CDATA[transparency]]></category>

		<guid isPermaLink="false">http://blog.spathare.com/?p=46</guid>
		<description><![CDATA[Opacity, Shadow and Rounded-corner control over rendered objects make CSS3 exciting stuff. Imagine creating a beautiful website with all these features, without using an image editing program! (ok, throw in @font-face and you have the font of your choice on the webpage as well. That&#8217;s it. Image editing is out) Its safe to assume that [...]]]></description>
			<content:encoded><![CDATA[<p>Opacity, Shadow and Rounded-corner control over rendered objects make CSS3 exciting stuff. Imagine creating a beautiful website with all these features, without using an image editing program! (ok, throw in @font-face and you have the font of your choice on the webpage as well. That&#8217;s it. Image editing is out)</p>
<p>Its safe to assume that not all developers will be using these features for mainstream websites unless our very dear IE supports them. So we still have time to see these beauties in action. But we have a lot of gray area for what happens when these are used together. The implementations are still juggling with these questions.</p>
<p>For example, what happens when opacity of a box is 50% and a drop-shadow attribute is used for the box? Or, what happens when a shadow drops on a box which is having less opacity? Should the shadow have rounded corners for a box with rounded corners? How should a shadow with bigger fade (black to transparent area) render on a shadow with smaller fade?</p>
<p>These are just some tricky &#8220;beginner&#8221; questions with no straight answers. Fortunately the community is pretty enthusiastic about rendering these effects with markup. Lot of such issues and fundamentals <a href="http://www.css3.info/css-drop-shadows/" target="_blank">have been discussed</a>.</p>
<p>In an image editor you can manipulate the effect rendered depending on which operation you perform first. This is not really clear for CSS, and with browser implementations which can vary, it might be a bit of a hassle for us to have consistent cross-browser CSS3 markup ready to use.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.spathare.com/2008/11/the-best-of-css3-together/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
