<?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>Inspirated &#187; Bookmarks</title>
	<atom:link href="http://inspirated.com/tag/bookmarks/feed" rel="self" type="application/rss+xml" />
	<link>http://inspirated.com</link>
	<description>krkhan&#039;s blog</description>
	<lastBuildDate>Mon, 02 Jan 2012 20:58:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Bookmark Undertaker v0.3 &#8212; Picking up the threads</title>
		<link>http://inspirated.com/2010/02/21/bookmark-undertaker-v0-3-picking-up-the-threads</link>
		<comments>http://inspirated.com/2010/02/21/bookmark-undertaker-v0-3-picking-up-the-threads#comments</comments>
		<pubDate>Sun, 21 Feb 2010 15:09:55 +0000</pubDate>
		<dc:creator>krkhan</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Beautiful Soup]]></category>
		<category><![CDATA[Bookmark Undertaker]]></category>
		<category><![CDATA[Bookmarks]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Deb]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Fedora]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[PyGTK]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Red Hat]]></category>
		<category><![CDATA[RPM]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Threading]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://inspirated.com/?p=265</guid>
		<description><![CDATA[Threads are love. Threads are speed. And more often than not, threads are a consistent PITA. However, I&#8217;ve had an accidental epiphany just a few hours ago: &#8220;When in doubt When you need to communicate among threads, use synchronized Queues.&#8221; There. This magic mantra will solve more issues in your life than you can ever [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Threads are love. Threads are speed. And more often than not, threads are a consistent <abbr title="Pain in the Ass">PITA</abbr>. However, I&#8217;ve had an accidental epiphany just a few hours ago:</p>
<blockquote><p>&#8220;<del datetime="2010-02-21T14:27:15+00:00">When in doubt</del> When you need to communicate among threads, use synchronized <a href="http://docs.python.org/library/queue.html">Queue</a>s.&#8221;</p></blockquote>
<p>There. This magic mantra will solve more issues in your life than you can ever imagine, and certainly more than I expected.</p>
<p>Getting back to the topic at hand, adding threading support to the program has sped up the bookmark checking process by a factor of about 435895234. Coupled with fixing of some parsing bugs, <a href="https://launchpad.net/bmundertaker/trunk/0.3">Bookmark Undertaker v0.3</a> is finally capable of providing a quick, stable and consistent way of sanitizing your Firefox favorites:</p>
<p style="text-align: center"><img src="http://inspirated.com/uploads/bmundertaker-0.3.jpg" alt="Boomark Undertaker v0.3 Screenshot" /></p>
<p>This time, I&#8217;ve also tried to provide <a href="http://launchpad.net/bmundertaker/trunk/0.3/+download/bmundertaker_0.3-1_all.deb">Deb</a> and <a href="http://launchpad.net/bmundertaker/trunk/0.3/+download/bmundertaker-0.3-1.noarch.rpm">RPM</a> packages on the release page for easy installation by the Debian/Ubuntu/Fedora populace.</p>
<p>Ushering in the era of communist applications:</p>
<blockquote><p>&#8220;If everyone gives one thread, the poor person will have a shirt.&#8221; &#8212; <em>Russian Proverb</em></p></blockquote>
<div class="shr-publisher-265"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic --><hr />
<p><small><a href="http://inspirated.com/2010/02/21/bookmark-undertaker-v0-3-picking-up-the-threads">Permalink</a> |
<a href="http://inspirated.com/2010/02/21/bookmark-undertaker-v0-3-picking-up-the-threads#comments">No comment</a>
<br/>
Post tags: <a href="http://inspirated.com/tag/beautiful-soup" rel="tag">Beautiful Soup</a>, <a href="http://inspirated.com/tag/bookmark-undertaker" rel="tag">Bookmark Undertaker</a>, <a href="http://inspirated.com/tag/bookmarks" rel="tag">Bookmarks</a>, <a href="http://inspirated.com/tag/code" rel="tag">Code</a>, <a href="http://inspirated.com/tag/deb" rel="tag">Deb</a>, <a href="http://inspirated.com/tag/debian" rel="tag">Debian</a>, <a href="http://inspirated.com/tag/fedora" rel="tag">Fedora</a>, <a href="http://inspirated.com/tag/firefox" rel="tag">Firefox</a>, <a href="http://inspirated.com/tag/mozilla" rel="tag">Mozilla</a>, <a href="http://inspirated.com/tag/open-source" rel="tag">Open Source</a>, <a href="http://inspirated.com/tag/pygtk" rel="tag">PyGTK</a>, <a href="http://inspirated.com/tag/python" rel="tag">Python</a>, <a href="http://inspirated.com/tag/red-hat" rel="tag">Red Hat</a>, <a href="http://inspirated.com/tag/rpm" rel="tag">RPM</a>, <a href="http://inspirated.com/tag/technology" rel="tag">Technology</a>, <a href="http://inspirated.com/tag/threading" rel="tag">Threading</a>, <a href="http://inspirated.com/tag/ubuntu" rel="tag">Ubuntu</a><br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://inspirated.com/2010/02/21/bookmark-undertaker-v0-3-picking-up-the-threads/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bookmark Undertaker &#8212; Check your Firefox favorites for dead links</title>
		<link>http://inspirated.com/2009/12/03/bookmark-undertaker-check-your-firefox-favorites-for-dead-links</link>
		<comments>http://inspirated.com/2009/12/03/bookmark-undertaker-check-your-firefox-favorites-for-dead-links#comments</comments>
		<pubDate>Thu, 03 Dec 2009 16:24:44 +0000</pubDate>
		<dc:creator>krkhan</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Beautiful Soup]]></category>
		<category><![CDATA[Bookmark Undertaker]]></category>
		<category><![CDATA[Bookmarks]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[PyGTK]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://inspirated.com/?p=258</guid>
		<description><![CDATA[No matter how much you try to keep the browser bookmarks clean, inevitably they jumble up and one day you realize that you have no idea which links are working and which aren&#8217;t. This is where a small utility named AM-Deadlink comes to the rescue for Windows users which checks the links for errors. Somehow, [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>No matter how much you try to keep the browser bookmarks clean, inevitably they jumble up and one day you realize that you have no idea which links are working and which aren&#8217;t. This is where a small utility named AM-Deadlink comes to the rescue for Windows users which checks the links for errors. Somehow, the utility lacked an alternative in the open-source world. And this is where <a href="http://code.inspirated.com/pygtk/bmundertaker/">Bookmark Undertaker</a> comes into picture:</p>
<p style="text-align: center; font-size: x-small"><a href="http://inspirated.com/uploads/bmundertaker.png"><img src="http://inspirated.com/uploads/bmundertaker-thumb.jpg" alt="Bookmark Undertaker Screenshot" width="450" height="356" /></a><br />
(Click on the image for larger version.)</p>
<p>For the utility, I chose PyGTK as UI backend. For parsing the <code>bookmarks.html</code> files exported from Firefox, I used <a href="http://www.crummy.com/software/BeautifulSoup/">Beautiful Soup</a>. The latter, I must say, made my life a lot easier by cleverly sanitizing the insanity contained in Firefox&#8217;s exported favorites, staying true to the project tagline:</p>
<blockquote><p>You didn&#8217;t write that awful page. You&#8217;re just trying to get some data out of it. Right now, you don&#8217;t really care what HTML is supposed to look like.</p>
<p>Neither does this parser.</p></blockquote>
<p>And indeed it does not.</p>
<p>For the time being, the application imports the bookmarks properly and displays their attributes including the favorite icons. It then checks the linked URLs for errors in a separate thread and marks them as working or non-working accordingly. Exporting the bookmarks is next on the TODO-list, while it&#8217;s possible that in future I will internationalize the application as well.</p>
<p>Time to purge those pesky outdated 404&#8242;s.</p>
<div class="shr-publisher-258"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic --><hr />
<p><small><a href="http://inspirated.com/2009/12/03/bookmark-undertaker-check-your-firefox-favorites-for-dead-links">Permalink</a> |
<a href="http://inspirated.com/2009/12/03/bookmark-undertaker-check-your-firefox-favorites-for-dead-links#comments">No comment</a>
<br/>
Post tags: <a href="http://inspirated.com/tag/beautiful-soup" rel="tag">Beautiful Soup</a>, <a href="http://inspirated.com/tag/bookmark-undertaker" rel="tag">Bookmark Undertaker</a>, <a href="http://inspirated.com/tag/bookmarks" rel="tag">Bookmarks</a>, <a href="http://inspirated.com/tag/code" rel="tag">Code</a>, <a href="http://inspirated.com/tag/firefox" rel="tag">Firefox</a>, <a href="http://inspirated.com/tag/mozilla" rel="tag">Mozilla</a>, <a href="http://inspirated.com/tag/open-source" rel="tag">Open Source</a>, <a href="http://inspirated.com/tag/pygtk" rel="tag">PyGTK</a>, <a href="http://inspirated.com/tag/python" rel="tag">Python</a>, <a href="http://inspirated.com/tag/technology" rel="tag">Technology</a><br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://inspirated.com/2009/12/03/bookmark-undertaker-check-your-firefox-favorites-for-dead-links/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 2.102 seconds -->

