<?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>For what IT worths &#187; tamasdecsi</title>
	<atom:link href="http://www.forwhatitworths.com/posts/author/tamasdecsi/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.forwhatitworths.com</link>
	<description>taking I.T. personally</description>
	<lastBuildDate>Thu, 20 May 2010 23:30:38 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Now comment spammers will do some good too</title>
		<link>http://www.forwhatitworths.com/posts/2008/08/now-comment-spammers-will-do-some-good-too/</link>
		<comments>http://www.forwhatitworths.com/posts/2008/08/now-comment-spammers-will-do-some-good-too/#comments</comments>
		<pubDate>Fri, 15 Aug 2008 11:25:31 +0000</pubDate>
		<dc:creator>tamasdecsi</dc:creator>
				<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.forwhatitworths.com/posts/2008/08/now-comment-spammers-will-do-some-good-too/</guid>
		<description><![CDATA[While I haven&#8217;t been active here for the past half year, the same can&#8217;t be said for comment spammers. Even though forwhatitworths.com is yet to become a high traffic blog, I needed to moderate a significant number of comment spams every day.
Something had to be done. However, I&#8217;m still not totally convinced by the accuracy [...]]]></description>
			<content:encoded><![CDATA[<p>While I haven&#8217;t been active here for the past half year, the same can&#8217;t be said for comment spammers. Even though forwhatitworths.com is yet to become a high traffic blog, I needed to moderate a significant number of comment spams every day.</p>
<p>Something had to be done. However, I&#8217;m still not totally convinced by the accuracy of spam filters, and by now we know that CAPTCHA is not a silver bullet either. This means no matter which route I take, I&#8217;ll still have to keep on moderating. With <a href="http://recaptcha.net/">reCAPTCHA</a>, finally, the spam-fighting became useful at last.</p>
<p>I&#8217;ve heard about reCAPTCHA a while ago, and really liked the idea of using computer-illegible text scans of old public archives instead of algorithmically generated images for telling humans and bots apart, however, only <a href="http://arstechnica.com/news.ars/post/20080814-captchas-workfor-digitizing-old-damaged-texts-manuscripts.html">this recent article on arstechnica</a> convinced me to give a try.</p>
<p>I&#8217;ve quickly and easily set up <a href="http://wordpress.org/extend/plugins/wp-recaptcha/">this wordpress plugin</a>, and registered for the necessary API keys at recaptcha.org. Now any new comment needs some text-recognition work too, but at least it is for some greater good, as any recognized word will contribute to the digitalization effort of old public archives.</p>
<p>Let the comments come, the spammers fade, and the electronic libraries fill up with quality archives at the same time!</p>

<span class="slashdigglicious">
<a href="http://slashdot.org/bookmark.pl?url=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2008%2F08%2Fnow-comment-spammers-will-do-some-good-too%2F&amp;title=Now+comment+spammers+will+do+some+good+too" title="Slashdot It!"><img src="http://slashdot.org/favicon.ico" height="16" width="16" alt="[Slashdot]" /></a>
<a href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2008%2F08%2Fnow-comment-spammers-will-do-some-good-too%2F&amp;title=Now+comment+spammers+will+do+some+good+too" title="Digg This Story"><img src="http://digg.com/favicon.ico" width="16" height="16" alt="[Digg]" /></a>
<a href="http://reddit.com/submit?url=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2008%2F08%2Fnow-comment-spammers-will-do-some-good-too%2F&amp;title=Now+comment+spammers+will+do+some+good+too" title="Reddit"><img src="http://reddit.com/favicon.ico" width="16" height="16" alt="[Reddit]" /></a>
<a href="http://del.icio.us/post?url=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2008%2F08%2Fnow-comment-spammers-will-do-some-good-too%2F&amp;title=Now+comment+spammers+will+do+some+good+too" title="Save to del.icio.us" onclick="window.open('http://del.icio.us/post?v=4&amp;noui&amp;jump=close&amp;url=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2008%2F08%2Fnow-comment-spammers-will-do-some-good-too%2F&amp;title=Now+comment+spammers+will+do+some+good+too', 'delicious', 'toolbar=no,width=700,height=400'); return false;"><img src="http://images.del.icio.us/static/img/delicious.small.gif" width="16" height="16" alt="[del.icio.us]" /></a>
<a href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2008%2F08%2Fnow-comment-spammers-will-do-some-good-too%2F" title="Share on Facebook"><img src="http://www.facebook.com/favicon.ico" width="16" height="16" alt="[Facebook]" /></a>
<a href="http://technorati.com/faves?add=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2008%2F08%2Fnow-comment-spammers-will-do-some-good-too%2F" title="Add to my Technorati Favorites"><img src="http://technorati.com/favicon.ico" width="16" height="16" alt="[Technorati]" /></a>
<a href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2008%2F08%2Fnow-comment-spammers-will-do-some-good-too%2F&amp;title=Now+comment+spammers+will+do+some+good+too" title="Save to Google Bookmarks"><img src="http://www.google.com/favicon.ico" width="16" height="16" alt="[Google]" /></a>
<a href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2008%2F08%2Fnow-comment-spammers-will-do-some-good-too%2F&amp;title=Now+comment+spammers+will+do+some+good+too" title="Stumble it!"><img src="http://www.stumbleupon.com/favicon.ico" width="16" height="16" alt="[StumbleUpon]" /></a>
</span>]]></content:encoded>
			<wfw:commentRss>http://www.forwhatitworths.com/posts/2008/08/now-comment-spammers-will-do-some-good-too/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Asking for trouble</title>
		<link>http://www.forwhatitworths.com/posts/2007/12/asking-for-trouble/</link>
		<comments>http://www.forwhatitworths.com/posts/2007/12/asking-for-trouble/#comments</comments>
		<pubDate>Thu, 20 Dec 2007 16:38:23 +0000</pubDate>
		<dc:creator>tamasdecsi</dc:creator>
				<category><![CDATA[humor]]></category>
		<category><![CDATA[office]]></category>

		<guid isPermaLink="false">http://www.forwhatitworths.com/posts/2007/12/asking-for-trouble/</guid>
		<description><![CDATA[When I&#8217;ve bumped into the photographed scenario in the office, my first thought was that this notebook is not loved by my colleague. Then I realized, that putting a fine piece of electronic equipment full of valuable data right on the footpath in the kitchen floor, next to the heater and two big bottles of [...]]]></description>
			<content:encoded><![CDATA[<p>When I&#8217;ve bumped into the photographed scenario in the office, my first thought was that this notebook is not loved by my colleague. Then I realized, that putting a fine piece of electronic equipment full of valuable data right on the footpath in the kitchen floor, next to the heater and two big bottles of water, almost exactly below the water cooler couldn&#8217;t be anything else than a bold form of expressing &#8220;I have a solid backup strategy.&#8221;</p>
<p><img title="Asking for trouble" src="http://files.forwhatitworths.com/asking_for_trouble.jpg" border="1" alt="Asking for trouble" width="400" height="453" align="middle" /></p>

<span class="slashdigglicious">
<a href="http://slashdot.org/bookmark.pl?url=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F12%2Fasking-for-trouble%2F&amp;title=Asking+for+trouble" title="Slashdot It!"><img src="http://slashdot.org/favicon.ico" height="16" width="16" alt="[Slashdot]" /></a>
<a href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F12%2Fasking-for-trouble%2F&amp;title=Asking+for+trouble" title="Digg This Story"><img src="http://digg.com/favicon.ico" width="16" height="16" alt="[Digg]" /></a>
<a href="http://reddit.com/submit?url=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F12%2Fasking-for-trouble%2F&amp;title=Asking+for+trouble" title="Reddit"><img src="http://reddit.com/favicon.ico" width="16" height="16" alt="[Reddit]" /></a>
<a href="http://del.icio.us/post?url=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F12%2Fasking-for-trouble%2F&amp;title=Asking+for+trouble" title="Save to del.icio.us" onclick="window.open('http://del.icio.us/post?v=4&amp;noui&amp;jump=close&amp;url=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F12%2Fasking-for-trouble%2F&amp;title=Asking+for+trouble', 'delicious', 'toolbar=no,width=700,height=400'); return false;"><img src="http://images.del.icio.us/static/img/delicious.small.gif" width="16" height="16" alt="[del.icio.us]" /></a>
<a href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F12%2Fasking-for-trouble%2F" title="Share on Facebook"><img src="http://www.facebook.com/favicon.ico" width="16" height="16" alt="[Facebook]" /></a>
<a href="http://technorati.com/faves?add=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F12%2Fasking-for-trouble%2F" title="Add to my Technorati Favorites"><img src="http://technorati.com/favicon.ico" width="16" height="16" alt="[Technorati]" /></a>
<a href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F12%2Fasking-for-trouble%2F&amp;title=Asking+for+trouble" title="Save to Google Bookmarks"><img src="http://www.google.com/favicon.ico" width="16" height="16" alt="[Google]" /></a>
<a href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F12%2Fasking-for-trouble%2F&amp;title=Asking+for+trouble" title="Stumble it!"><img src="http://www.stumbleupon.com/favicon.ico" width="16" height="16" alt="[StumbleUpon]" /></a>
</span>]]></content:encoded>
			<wfw:commentRss>http://www.forwhatitworths.com/posts/2007/12/asking-for-trouble/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Don&#8217;t click it</title>
		<link>http://www.forwhatitworths.com/posts/2007/12/dont-click-it/</link>
		<comments>http://www.forwhatitworths.com/posts/2007/12/dont-click-it/#comments</comments>
		<pubDate>Wed, 05 Dec 2007 21:18:26 +0000</pubDate>
		<dc:creator>tamasdecsi</dc:creator>
				<category><![CDATA[HCI]]></category>

		<guid isPermaLink="false">http://www.forwhatitworths.com/posts/2007/12/mouse-without-a-button/</guid>
		<description><![CDATA[I&#8217;ve just recently stumbled upon this awesome site temptingly called &#8220;Don&#8217;t click it&#8220;. Visiting it made me wonder why on earth we still stick to the tiresome habits of clicking on mouse buttons, when we can naturally get away with simple mouse gestures instead. Discovering this marvelous idea of changing the user interface layout adaptively [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve just recently stumbled upon this awesome site temptingly called &#8220;<a href="http://www.dontclick.it">Don&#8217;t click it</a>&#8220;. Visiting it made me wonder why on earth we still stick to the tiresome habits of clicking on mouse buttons, when we can naturally get away with simple mouse gestures instead. Discovering this marvelous idea of changing the user interface layout adaptively upon mouse gestures was both entertaining and thought-provoking.</p>
<p>Apart from telling the idea, the site has some very elaborate demos to help understanding the concept too.</p>
<p>So, tell me, how long could you resist clicking the button? I survived for several minutes, and can&#8217;t wait to see this adopted on my desktop.</p>

<span class="slashdigglicious">
<a href="http://slashdot.org/bookmark.pl?url=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F12%2Fdont-click-it%2F&amp;title=Don%26%238217%3Bt+click+it" title="Slashdot It!"><img src="http://slashdot.org/favicon.ico" height="16" width="16" alt="[Slashdot]" /></a>
<a href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F12%2Fdont-click-it%2F&amp;title=Don%26%238217%3Bt+click+it" title="Digg This Story"><img src="http://digg.com/favicon.ico" width="16" height="16" alt="[Digg]" /></a>
<a href="http://reddit.com/submit?url=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F12%2Fdont-click-it%2F&amp;title=Don%26%238217%3Bt+click+it" title="Reddit"><img src="http://reddit.com/favicon.ico" width="16" height="16" alt="[Reddit]" /></a>
<a href="http://del.icio.us/post?url=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F12%2Fdont-click-it%2F&amp;title=Don%26%238217%3Bt+click+it" title="Save to del.icio.us" onclick="window.open('http://del.icio.us/post?v=4&amp;noui&amp;jump=close&amp;url=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F12%2Fdont-click-it%2F&amp;title=Don%26%238217%3Bt+click+it', 'delicious', 'toolbar=no,width=700,height=400'); return false;"><img src="http://images.del.icio.us/static/img/delicious.small.gif" width="16" height="16" alt="[del.icio.us]" /></a>
<a href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F12%2Fdont-click-it%2F" title="Share on Facebook"><img src="http://www.facebook.com/favicon.ico" width="16" height="16" alt="[Facebook]" /></a>
<a href="http://technorati.com/faves?add=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F12%2Fdont-click-it%2F" title="Add to my Technorati Favorites"><img src="http://technorati.com/favicon.ico" width="16" height="16" alt="[Technorati]" /></a>
<a href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F12%2Fdont-click-it%2F&amp;title=Don%26%238217%3Bt+click+it" title="Save to Google Bookmarks"><img src="http://www.google.com/favicon.ico" width="16" height="16" alt="[Google]" /></a>
<a href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F12%2Fdont-click-it%2F&amp;title=Don%26%238217%3Bt+click+it" title="Stumble it!"><img src="http://www.stumbleupon.com/favicon.ico" width="16" height="16" alt="[StumbleUpon]" /></a>
</span>]]></content:encoded>
			<wfw:commentRss>http://www.forwhatitworths.com/posts/2007/12/dont-click-it/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Converting Project Gutenberg eTexts into BBeB eBooks</title>
		<link>http://www.forwhatitworths.com/posts/2007/11/converting-project-gutenberg-etexts-into-bbeb-ebooks/</link>
		<comments>http://www.forwhatitworths.com/posts/2007/11/converting-project-gutenberg-etexts-into-bbeb-ebooks/#comments</comments>
		<pubDate>Sun, 11 Nov 2007 08:29:53 +0000</pubDate>
		<dc:creator>tamasdecsi</dc:creator>
				<category><![CDATA[ebook]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://www.forwhatitworths.com/posts/2007/11/converting-project-gutenberg-etexts-into-bbeb-ebooks/</guid>
		<description><![CDATA[In my previous post I&#8217;ve shed some light on how the PRS505 ebook reader renders the various supported file formats. In the meantime, I couldn&#8217;t resist tinkering around with converting text ebooks into the better-rendering BBeB format.
While I see that creating quality ebooks this way is a long way ahead, a little piece of python [...]]]></description>
			<content:encoded><![CDATA[<p>In my previous post I&#8217;ve shed some light on how the PRS505 ebook reader renders the various supported file formats. In the meantime, I couldn&#8217;t resist tinkering around with converting text ebooks into the better-rendering BBeB format.</p>
<p>While I see that creating quality ebooks this way is a long way ahead, a little piece of python script (<a href="http://files.forwhatitworths.com/gut2lrf.py">gut2lrf.py</a>) from my first attempt would certainly give <a href="http://www.gutenberg.org/"><img src="http://files.forwhatitworths.com/gutenberg_blog2.gif" alt="Project Gutenberg" width="80" height="15" /></a> eTexts a polish.</p>
<p>I started off checking the various existing tools to create BBeB (.lrf) files, and found <a href="http://www.sven.de/librie_files/makelrf3.zip">makelrf3</a> a simple yet good enough candidate to do the bytecode compilation with. In order to build a version running on linux, I needed to put together a small <a href="http://files.forwhatitworths.com/Makefile.makelrf3">Makefile</a>, but otherwise it compiled without problems.</p>
<p>Project Gutenberg, with more than 20,000 titles and growing, is an excellent source of free eTexts. However, in order to avoid file-format traps, the project has a strict policy of using plain text files for its text books. What more, there are some conventions keeping us from easily reflow the text within: <em>&#8220;Plain text eBooks should have line wraps at 72 characters and skip a line between paragraphs with no indentation.&#8221;</em></p>
<p>My little script &#8211; mentioned above &#8211; comes to aid here, as it preprocesses Project Gutenberg eTexts to remove unnecessary line breaks. It also fetches the Title and the Author of the book, and then calls makelrf3 to do the text to lrf conversion. Makelrf does a pretty good job splitting up the text to chapters, and quickly generates an lrf file.</p>
<p><img src="http://files.forwhatitworths.com/etext_before_and_after.jpg" alt="eText before and after" />The resulting eBook is in BBeB format, which means its file size is smaller than the original plain text document, and at the same time, it is laid out much better on the eBook reader, and also has some meta-info incorporated, which lets you find the book in the book list easier.</p>
<p>These compiled books are much better to read, yet they are still not perfect. They still lack the navigable Table of Contents, rich text formatting, such as stand-out Chapter headings, smaller spacings between paragraphs, words in italic or bold characters, illustrations, footnotes, as well as page headers and footers, so do expect some upgrades to my script down the line. Until that happens, I wish you happy reading on&#8230;</p>

<span class="slashdigglicious">
<a href="http://slashdot.org/bookmark.pl?url=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F11%2Fconverting-project-gutenberg-etexts-into-bbeb-ebooks%2F&amp;title=Converting+Project+Gutenberg+eTexts+into+BBeB+eBooks" title="Slashdot It!"><img src="http://slashdot.org/favicon.ico" height="16" width="16" alt="[Slashdot]" /></a>
<a href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F11%2Fconverting-project-gutenberg-etexts-into-bbeb-ebooks%2F&amp;title=Converting+Project+Gutenberg+eTexts+into+BBeB+eBooks" title="Digg This Story"><img src="http://digg.com/favicon.ico" width="16" height="16" alt="[Digg]" /></a>
<a href="http://reddit.com/submit?url=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F11%2Fconverting-project-gutenberg-etexts-into-bbeb-ebooks%2F&amp;title=Converting+Project+Gutenberg+eTexts+into+BBeB+eBooks" title="Reddit"><img src="http://reddit.com/favicon.ico" width="16" height="16" alt="[Reddit]" /></a>
<a href="http://del.icio.us/post?url=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F11%2Fconverting-project-gutenberg-etexts-into-bbeb-ebooks%2F&amp;title=Converting+Project+Gutenberg+eTexts+into+BBeB+eBooks" title="Save to del.icio.us" onclick="window.open('http://del.icio.us/post?v=4&amp;noui&amp;jump=close&amp;url=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F11%2Fconverting-project-gutenberg-etexts-into-bbeb-ebooks%2F&amp;title=Converting+Project+Gutenberg+eTexts+into+BBeB+eBooks', 'delicious', 'toolbar=no,width=700,height=400'); return false;"><img src="http://images.del.icio.us/static/img/delicious.small.gif" width="16" height="16" alt="[del.icio.us]" /></a>
<a href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F11%2Fconverting-project-gutenberg-etexts-into-bbeb-ebooks%2F" title="Share on Facebook"><img src="http://www.facebook.com/favicon.ico" width="16" height="16" alt="[Facebook]" /></a>
<a href="http://technorati.com/faves?add=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F11%2Fconverting-project-gutenberg-etexts-into-bbeb-ebooks%2F" title="Add to my Technorati Favorites"><img src="http://technorati.com/favicon.ico" width="16" height="16" alt="[Technorati]" /></a>
<a href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F11%2Fconverting-project-gutenberg-etexts-into-bbeb-ebooks%2F&amp;title=Converting+Project+Gutenberg+eTexts+into+BBeB+eBooks" title="Save to Google Bookmarks"><img src="http://www.google.com/favicon.ico" width="16" height="16" alt="[Google]" /></a>
<a href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F11%2Fconverting-project-gutenberg-etexts-into-bbeb-ebooks%2F&amp;title=Converting+Project+Gutenberg+eTexts+into+BBeB+eBooks" title="Stumble it!"><img src="http://www.stumbleupon.com/favicon.ico" width="16" height="16" alt="[StumbleUpon]" /></a>
</span>]]></content:encoded>
			<wfw:commentRss>http://www.forwhatitworths.com/posts/2007/11/converting-project-gutenberg-etexts-into-bbeb-ebooks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Sony PRS505 &#8211; love at first sight</title>
		<link>http://www.forwhatitworths.com/posts/2007/11/the-sony-prs505-love-at-first-sight/</link>
		<comments>http://www.forwhatitworths.com/posts/2007/11/the-sony-prs505-love-at-first-sight/#comments</comments>
		<pubDate>Sun, 04 Nov 2007 13:21:12 +0000</pubDate>
		<dc:creator>tamasdecsi</dc:creator>
				<category><![CDATA[ebook]]></category>
		<category><![CDATA[gadgets]]></category>

		<guid isPermaLink="false">http://www.forwhatitworths.com/posts/2007/11/the-sony-prs505-love-at-first-sight/</guid>
		<description><![CDATA[I am fond of books just as much as gadgets. Furthermore, I like traveling light just as much as I hate to commute idly. It was no question sooner or later I&#8217;ll have an ebook reader in my pocket.
With the Sony PRS-505 ebook reader hitting the market I instantly knew I need one. Now that [...]]]></description>
			<content:encoded><![CDATA[<p>I am fond of books just as much as gadgets. Furthermore, I like traveling light just as much as I hate to commute idly. It was no question sooner or later I&#8217;ll have an ebook reader in my pocket.</p>
<p>With the <a href="http://esupport.sony.com/US/perl/model-documents.pl?mdl=PRS505">Sony PRS-505 ebook reader</a> hitting the market I instantly knew I need one. Now that I hold it in my hands, it&#8217;s love at first sight. I&#8217;d say with chewing on this nicety, my hunger for useful gadgets is cured for a while.</p>
<p>Apart from the sleek design, the most important things securing my choice were the courtesy of Sony to include an SD card slot, and the USB Mass Storage interface, as these two features ensured that the reader can be extended for less (not that the 200MB internal flash can&#8217;t hold enough books for many commutes), and will communicate seamlessly with a Linux PC.</p>
<p>This eInk display technology is a salvation for the eyes of many, including myself. An anti-glare, daylight readable, not background-lit, high contrast, 8 grey levels display makes my LCD-strained eyes very happy.</p>
<p>As I was planning to use this device to read not just books but also to keep reference manuals and tutorials at hand, I was curious about the ebook formats it supports. So the first thing I did was playing around with various document formats. The rest of this post is dedicated to this topic.</p>
<p>Text files are a developer&#8217;s friend. Fortunately, these are laid out quite fine by the reader. The <strong>TXT</strong> files appear in the booklist with name of the file as the book title, and the file creation date as the book author. The reader provides 3 zoom levels, with 30, 25, and 20 lines of text per page displayed in portrait mode, or 15 + 2, 12 + 2, and 10 + 1 overlapping lines per (half) page in landscape mode.  The font used to render txt documents appears to be Bitstream&#8217;s <a href="http://www.paratype.com/btstore/fonts/Dutch-801.htm">Dutch 801 Roman BT</a>. It seems ISO-8859-1 is assumed being the character encoding of text files.</p>
<p>When an ebook gets opened the first time, the reader works for a couple of seconds to paginate the contents, however, the results get cached, so this only slows things down once per ebook (per zoom level used).</p>
<p><strong>RTF</strong> documents add the features of multiple font faces and font decoration to be used. Also, it is the document title and author that gets displayed in the booklist, so these need to be set up properly for easier lookup.</p>
<p>The next widespread format supported is <strong>PDF</strong>, though it has some issues. The reader&#8217;s screen size is too small to display an A4 or a Letter size PDF in a readable way. You may use the landscape function, which shows the top or the bottom half of the page. This, in together with the zoom function results in a readable half-page (without the margins), but the zoom level resets to default when turning page. Furthermore, special fonts/charsets don&#8217;t always render properly, and password protected PDFs don&#8217;t even show up in the booklist.</p>
<p>On the positive side, internal links in PDFs can be used to navigate within the document. Ah, and I&#8217;ve found quite a few reader-optimized ebook titles in PDF format at <a href="http://www.feedbooks.com/">Feedbooks.com</a>.</p>
<p>Documents in Sony&#8217;s proprietary ebook format, <strong>BBeB</strong>, obviously work the most seamless, providing three zoom levels, where the number of lines displayed depends on the font size settings of the ebook too. However, it&#8217;s hard to find anything useful in this format outside the <a href="http://ebooks.connect.com/">CONNECT eBooks</a> universe. I&#8217;m planning to write about tools for creating BBeB documents in a later post.</p>
<p>Concerning pictures (<strong>jpeg</strong>, <strong>png</strong> and <strong>gif</strong> formats), the PRS-505 is littlesomewhat slow on rendering, and with the very limited colorspace of 8 gray levels, the PRS505 is not likely to be used as my primary electronic photo album. However, it is good enough to enjoy my favorite comics, what more, probably an ideal device to share the greatest cartoons of <a href="http://www.savagechickens.com/">savage chickens</a> with my friends in the offline universe.</p>
<p><a href="http://www.savagechickens.com/blog/2007/10/chaos-in-hell.html"><img src="http://files.forwhatitworths.com/prs505-savagechickens.jpg" border="0" alt="The excellent Savage Chickens now on PRS-505" /></a><br />
Finally, regarding the <strong>MP3</strong> playing capabilities, while it is certainly a gimme feature to allow listening and reading at the same time, I don&#8217;t yet consider it a big thing, but time will tell whether I&#8217;ll use this ebook as a walkman too. For now, I haven&#8217;t even tried this feature.All in all, it is a charm to hold and read on. It is definitely worth all the 300 bucks of its introductory price tag.</p>

<span class="slashdigglicious">
<a href="http://slashdot.org/bookmark.pl?url=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F11%2Fthe-sony-prs505-love-at-first-sight%2F&amp;title=The+Sony+PRS505+%26%238211%3B+love+at+first+sight" title="Slashdot It!"><img src="http://slashdot.org/favicon.ico" height="16" width="16" alt="[Slashdot]" /></a>
<a href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F11%2Fthe-sony-prs505-love-at-first-sight%2F&amp;title=The+Sony+PRS505+%26%238211%3B+love+at+first+sight" title="Digg This Story"><img src="http://digg.com/favicon.ico" width="16" height="16" alt="[Digg]" /></a>
<a href="http://reddit.com/submit?url=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F11%2Fthe-sony-prs505-love-at-first-sight%2F&amp;title=The+Sony+PRS505+%26%238211%3B+love+at+first+sight" title="Reddit"><img src="http://reddit.com/favicon.ico" width="16" height="16" alt="[Reddit]" /></a>
<a href="http://del.icio.us/post?url=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F11%2Fthe-sony-prs505-love-at-first-sight%2F&amp;title=The+Sony+PRS505+%26%238211%3B+love+at+first+sight" title="Save to del.icio.us" onclick="window.open('http://del.icio.us/post?v=4&amp;noui&amp;jump=close&amp;url=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F11%2Fthe-sony-prs505-love-at-first-sight%2F&amp;title=The+Sony+PRS505+%26%238211%3B+love+at+first+sight', 'delicious', 'toolbar=no,width=700,height=400'); return false;"><img src="http://images.del.icio.us/static/img/delicious.small.gif" width="16" height="16" alt="[del.icio.us]" /></a>
<a href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F11%2Fthe-sony-prs505-love-at-first-sight%2F" title="Share on Facebook"><img src="http://www.facebook.com/favicon.ico" width="16" height="16" alt="[Facebook]" /></a>
<a href="http://technorati.com/faves?add=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F11%2Fthe-sony-prs505-love-at-first-sight%2F" title="Add to my Technorati Favorites"><img src="http://technorati.com/favicon.ico" width="16" height="16" alt="[Technorati]" /></a>
<a href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F11%2Fthe-sony-prs505-love-at-first-sight%2F&amp;title=The+Sony+PRS505+%26%238211%3B+love+at+first+sight" title="Save to Google Bookmarks"><img src="http://www.google.com/favicon.ico" width="16" height="16" alt="[Google]" /></a>
<a href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F11%2Fthe-sony-prs505-love-at-first-sight%2F&amp;title=The+Sony+PRS505+%26%238211%3B+love+at+first+sight" title="Stumble it!"><img src="http://www.stumbleupon.com/favicon.ico" width="16" height="16" alt="[StumbleUpon]" /></a>
</span>]]></content:encoded>
			<wfw:commentRss>http://www.forwhatitworths.com/posts/2007/11/the-sony-prs505-love-at-first-sight/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>A performance patch</title>
		<link>http://www.forwhatitworths.com/posts/2007/10/a-performance-patch/</link>
		<comments>http://www.forwhatitworths.com/posts/2007/10/a-performance-patch/#comments</comments>
		<pubDate>Sun, 28 Oct 2007 12:34:41 +0000</pubDate>
		<dc:creator>tamasdecsi</dc:creator>
				<category><![CDATA[profiling]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://www.forwhatitworths.com/posts/2007/10/a-performance-patch/</guid>
		<description><![CDATA[Back in May 2006, I needed to performance-tune a web application built on Plone. The symptom was an unacceptable 60 seconds delay upon creating a new user account on top of the already existing 10000 accounts. The source of the delay was very soon traced back by Zope&#8217;s built-in call profiler to GroupUserFolder, where the [...]]]></description>
			<content:encoded><![CDATA[<p>Back in May 2006, I needed to performance-tune a web application built on Plone. The symptom was an unacceptable 60 seconds delay upon creating a new user account on top of the already existing 10000 accounts. The source of the delay was very soon traced back by Zope&#8217;s built-in call profiler to <a href="http://ingeniweb.sourceforge.net/Products/GroupUserFolder/">GroupUserFolder</a>, where the solution was instantly obvious.</p>
<p>The original method was checking for existing users by using linear list lookup, which is known to be algorithmically slower than dictionary key lookup. Knowing that, the performance patch was a no-brainer, and, as expected, it eliminated the reported delay. I&#8217;ve sent this patch to <a href="http://www.ingeniweb.com/">ingeniweb</a> (the author of GroupUserFolder) in an email on 22 May 2006, but haven&#8217;t heard back from them since. Yet, the patch has been accepted, even got refined a bit and <a href="http://dev.plone.org/collective/changeset?new=GroupUserFolder%2Ftrunk%2FGroupUserFolder.py%4024794&amp;old=GroupUserFolder%2Ftrunk%2FGroupUserFolder.py%4024784">was applied</a> on the code trunk on 13 Jun 2006. From the one side, I&#8217;m happy to see it at least being fixed, while on the other side, I could have been more happy receiving a feedback on my report.</p>
<p>Nevertheless, I was still wondering how exactly the two lookup methods compare, so I&#8217;ve put together a <a href="http://files.forwhatitworths.com/haskey_vs_inlist.py">python script</a> to check how much we can actually gain on using <code>haystack_dict.has_key(needle)</code> instead of <code>needle in haystack_list</code>. I&#8217;ve compared them with small to larger sample sizes in small to larger sets (and lists) of samples.</p>
<p>I&#8217;ve used <a href="http://www.starlink.ac.uk/topcat">TOPCAT</a>, an excellent, yet easy to use visualization tool for tabular data, to graphically represent the results.</p>
<p><img src="http://files.forwhatitworths.com/haskey_vs_inlist.gif" alt="has_key vs in list" /></p>
<p>As you can see, even at the small sets of small samples region, has_key performs much faster, and with the growing set and sample sizes, it keeps performing equally well, while list lookup goes wild in the same time.</p>
<p>Can&#8217;t say I was surprised or learned anything by doing this, but thought I&#8217;d mention as it might turn out to be useful for someone out there, so let me know if you&#8217;ve found this useful.</p>

<span class="slashdigglicious">
<a href="http://slashdot.org/bookmark.pl?url=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F10%2Fa-performance-patch%2F&amp;title=A+performance+patch" title="Slashdot It!"><img src="http://slashdot.org/favicon.ico" height="16" width="16" alt="[Slashdot]" /></a>
<a href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F10%2Fa-performance-patch%2F&amp;title=A+performance+patch" title="Digg This Story"><img src="http://digg.com/favicon.ico" width="16" height="16" alt="[Digg]" /></a>
<a href="http://reddit.com/submit?url=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F10%2Fa-performance-patch%2F&amp;title=A+performance+patch" title="Reddit"><img src="http://reddit.com/favicon.ico" width="16" height="16" alt="[Reddit]" /></a>
<a href="http://del.icio.us/post?url=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F10%2Fa-performance-patch%2F&amp;title=A+performance+patch" title="Save to del.icio.us" onclick="window.open('http://del.icio.us/post?v=4&amp;noui&amp;jump=close&amp;url=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F10%2Fa-performance-patch%2F&amp;title=A+performance+patch', 'delicious', 'toolbar=no,width=700,height=400'); return false;"><img src="http://images.del.icio.us/static/img/delicious.small.gif" width="16" height="16" alt="[del.icio.us]" /></a>
<a href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F10%2Fa-performance-patch%2F" title="Share on Facebook"><img src="http://www.facebook.com/favicon.ico" width="16" height="16" alt="[Facebook]" /></a>
<a href="http://technorati.com/faves?add=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F10%2Fa-performance-patch%2F" title="Add to my Technorati Favorites"><img src="http://technorati.com/favicon.ico" width="16" height="16" alt="[Technorati]" /></a>
<a href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F10%2Fa-performance-patch%2F&amp;title=A+performance+patch" title="Save to Google Bookmarks"><img src="http://www.google.com/favicon.ico" width="16" height="16" alt="[Google]" /></a>
<a href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F10%2Fa-performance-patch%2F&amp;title=A+performance+patch" title="Stumble it!"><img src="http://www.stumbleupon.com/favicon.ico" width="16" height="16" alt="[StumbleUpon]" /></a>
</span>]]></content:encoded>
			<wfw:commentRss>http://www.forwhatitworths.com/posts/2007/10/a-performance-patch/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Making of the logo font</title>
		<link>http://www.forwhatitworths.com/posts/2007/10/making-of-the-logo-font/</link>
		<comments>http://www.forwhatitworths.com/posts/2007/10/making-of-the-logo-font/#comments</comments>
		<pubDate>Sun, 14 Oct 2007 11:02:25 +0000</pubDate>
		<dc:creator>tamasdecsi</dc:creator>
				<category><![CDATA[typography]]></category>

		<guid isPermaLink="false">http://www.forwhatitworths.com/posts/2007/10/making-of-the-logo-font/</guid>
		<description><![CDATA[This year the Helvetica typeface is celebrating its 50th anniversary, so everyone is talking about fonts. Not that I&#8217;m about to propose a replacement for Helvetica, or anything such, still I&#8217;ve created my very first font, and therefore I&#8217;ve wrote this post about it.
Although my blog logo is still just scraped, it&#8217;s time to write [...]]]></description>
			<content:encoded><![CDATA[<p>This year the Helvetica typeface is celebrating its <a href="http://www.helveticafilm.com/">50th anniversary</a>, so everyone is talking about fonts. Not that I&#8217;m about to propose a replacement for Helvetica, or anything such, still I&#8217;ve created my very first font, and therefore I&#8217;ve wrote this post about it.</p>
<p>Although my blog logo is still just scraped, it&#8217;s time to write about the making of the font used there. I felt spending a couple of hours creating the font makes things learned worth sharing.</p>
<p>I named this font <strong>ArcNBrick</strong> mostly because of the basic concept behind its glyph shapes, where everything is built up of &#8211; surprise &#8211; arcs and bricks.</p>
<p>The tool I&#8217;ve chosen to build the font was <a href="http://fontforge.sourceforge.net/">FontForge</a>, a cross-platform, open source application designed for the very purpose of creating fonts of different types.</p>
<p><img src="http://files.forwhatitworths.com/letter_o.gif" alt="Creating letter o in FontForge" align="right" hspace="5" vspace="5" /><br />
Let&#8217;s take a quick tour of how I&#8217;ve started building a font with FontForge. First of all, the concept behind my font allowed me to work without any pre-drawn, scanned helper images, even though FontForge supports those. Let&#8217;s discuss the basics of drawing glyphs, then.</p>
<ul>
<li>All paths are built up of curve, tangent, and corner points. Curve points are marked with a circle, tangent points with a triangle, and corner points with a rectangle.</li>
<li>Control points (marked with x) help you to shape the curves as desired.</li>
<li>Outer boundary paths should be drawn clockwise, while inner boundaries counter-clockwise</li>
</ul>
<p>After learning these very few basic rules from the <a href="http://fontforge.sourceforge.net/editexample.html">tutorial</a>, I was very soon up to speed in drawing the glyphs for all the letters. In order to accelerate the process and also preserving design consistency, I used cheap transformation tricks to create glyphs from one another. For example the letter <strong>b</strong> is a perfect candidate to create letters <strong>d</strong>, <strong>p</strong>, and <strong>q</strong>.</p>
<p>So, drawing letter <strong>d</strong> consisted of the following operations: <em>select all</em> on letter <strong>b</strong>, <em>copy</em>, <em>paste</em> to letter <strong>d</strong>, then <em>element: transformations: transform: flip horizontally</em>, and finally <em>element: correct direction</em>. Drawing letter <strong>p</strong> wasn&#8217;t much harder: <em>select all</em> on letter <strong>b</strong>, <em>copy</em>, <em>paste</em> to letter <strong>p</strong>, then at <em>element: transformations: transform:</em> first <em>flip vertically</em> then <em>move y by -200</em>, and finally <em>element: correct direction</em>. That was it. Very soon, all letters took shape, so I&#8217;ve built the TrueType version to give it a go.</p>
<p><img src="http://files.forwhatitworths.com/arcnbrick-sample.jpg" alt="ArcNBrick font sample" /></p>
<p>As you can see, the result is nothing useful for everyday use, yet, you might find it appealing for short, emphasized labels used in logos, for example. Should this be the case, feel free to download and use my <a href="http://files.forwhatitworths.com/ArcNBrick.ttf">ArcNBrick.ttf</a>. Make sure to leave a comment here on where and how this font was particularly useful for you, I&#8217;d be happy to receive feedback!</p>
<p>I need to confess that I haven&#8217;t tackled any of the issues that would make a font professional, such as hinting, accents, proper encodings, to name a few, but by this time you&#8217;ve already guessed that I am by no means a typographer. Yet it was fun building a unique font from scratch and seeing it working in a word processor. Some day I might even try building some wingdings fonts too, who knows&#8230;</p>

<span class="slashdigglicious">
<a href="http://slashdot.org/bookmark.pl?url=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F10%2Fmaking-of-the-logo-font%2F&amp;title=Making+of+the+logo+font" title="Slashdot It!"><img src="http://slashdot.org/favicon.ico" height="16" width="16" alt="[Slashdot]" /></a>
<a href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F10%2Fmaking-of-the-logo-font%2F&amp;title=Making+of+the+logo+font" title="Digg This Story"><img src="http://digg.com/favicon.ico" width="16" height="16" alt="[Digg]" /></a>
<a href="http://reddit.com/submit?url=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F10%2Fmaking-of-the-logo-font%2F&amp;title=Making+of+the+logo+font" title="Reddit"><img src="http://reddit.com/favicon.ico" width="16" height="16" alt="[Reddit]" /></a>
<a href="http://del.icio.us/post?url=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F10%2Fmaking-of-the-logo-font%2F&amp;title=Making+of+the+logo+font" title="Save to del.icio.us" onclick="window.open('http://del.icio.us/post?v=4&amp;noui&amp;jump=close&amp;url=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F10%2Fmaking-of-the-logo-font%2F&amp;title=Making+of+the+logo+font', 'delicious', 'toolbar=no,width=700,height=400'); return false;"><img src="http://images.del.icio.us/static/img/delicious.small.gif" width="16" height="16" alt="[del.icio.us]" /></a>
<a href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F10%2Fmaking-of-the-logo-font%2F" title="Share on Facebook"><img src="http://www.facebook.com/favicon.ico" width="16" height="16" alt="[Facebook]" /></a>
<a href="http://technorati.com/faves?add=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F10%2Fmaking-of-the-logo-font%2F" title="Add to my Technorati Favorites"><img src="http://technorati.com/favicon.ico" width="16" height="16" alt="[Technorati]" /></a>
<a href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F10%2Fmaking-of-the-logo-font%2F&amp;title=Making+of+the+logo+font" title="Save to Google Bookmarks"><img src="http://www.google.com/favicon.ico" width="16" height="16" alt="[Google]" /></a>
<a href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F10%2Fmaking-of-the-logo-font%2F&amp;title=Making+of+the+logo+font" title="Stumble it!"><img src="http://www.stumbleupon.com/favicon.ico" width="16" height="16" alt="[StumbleUpon]" /></a>
</span>]]></content:encoded>
			<wfw:commentRss>http://www.forwhatitworths.com/posts/2007/10/making-of-the-logo-font/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What to do when NULL hides your data?</title>
		<link>http://www.forwhatitworths.com/posts/2007/09/what-to-do-when-null-hides-your-data/</link>
		<comments>http://www.forwhatitworths.com/posts/2007/09/what-to-do-when-null-hides-your-data/#comments</comments>
		<pubDate>Sun, 30 Sep 2007 06:47:11 +0000</pubDate>
		<dc:creator>tamasdecsi</dc:creator>
				<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://www.forwhatitworths.com/posts/2007/09/what-to-do-when-null-hides-your-data/</guid>
		<description><![CDATA[Relational databases have been around us for quite a while. One may think during all those years of SQL (being the de-facto standard query language for RDBMS), its numerous proprietary and open source implementations have matured. A recent issue I&#8217;ve been dealing with tells me they are still evolving. Nevertheless, this incompleteness only kicks in [...]]]></description>
			<content:encoded><![CDATA[<p>Relational databases have been around us for quite a while. One may think during all those years of SQL (being the de-facto standard query language for RDBMS), its numerous proprietary and open source implementations have matured. A recent issue I&#8217;ve been dealing with tells me they are still evolving. Nevertheless, this incompleteness only kicks in when you want to create complex SQL statements, but then there always are alternatives to reach a particular goal.</p>
<p>I&#8217;ve recently came across an issue with the ordering of the NULL elements. For some reason, <a href="http://www.postgresql.org">PostgreSQL</a> thinks NULL is the highest value. Well, it can be interpreted that way too, but with the following business case it wasn&#8217;t so.</p>
<p>The structure (simplified for easier digestion) being queried contains two tables: one for clients, and another for purchases made by clients. Obviously, every purchase is linked to a client, yet not every client has made a purchase.</p>
<p>I needed to create a report that displays every customer, with the total amount of purchases made by them, showing the client with the highest total amount first.</p>
<p>I&#8217;ve started off with the following query:<br />
<code>SELECT client.id, SUM(purchase.amount) AS total FROM client LEFT JOIN purchase ON purchase.client_id = client.id GROUP BY client.id ORDER BY total DESC;</code></p>
<p>Running the query revealed the problem: the aggregate function SUM returned NULL for the clients with no purchase, and NULL is treated as the highest value by Postgres.</p>
<p>This was just about time for looking this issue up. Well, according to the <a href="http://en.wikipedia.org/wiki/Null_(SQL)">relevant wikipedia entry</a>:</p>
<blockquote><p>&#8220;The SQL standard does not explicitly define a default sort order for Nulls. Instead, on conforming systems, Nulls can be sorted before or after all data values by using the NULLS FIRST or NULLS LAST clauses of the ORDER BY list, respectively. Not all DBMS vendors implement this functionality, however. Vendors who do not implement this functionality may specify different treatments for Null sorting in the DBMS.&#8221;</p></blockquote>
<p>Yes, that NULLS LAST sounded like a promising solution, so I&#8217;ve checked which DBMS implement it. A quick search revealed <a href="http://opensource.atlassian.com/projects/hibernate/browse/HHH-465">this forum entry</a> that says, by default Postgres, DB2, and Oracle considers NULLs as higher than non-NULLs, while MSSQL and MySQL considers them being lower. DB2 V7 and Oracle 9i supports NULLS FIRST/LAST, while MSSQL, MySQL and PostgreSQL doesn&#8217;t.</p>
<p>However, that entry was two and a half years old, while PostgreSQL is known to being actively developed, so I&#8217;ve checked its status concerning NULLS LAST again. Its latest <a href="http://developer.postgresql.org/pgdocs/postgres/indexes-ordering.html">documentation</a> does in fact tells NULLS LAST is supported, so I&#8217;ve checked when it became integrated. There it was, a <a href="http://archives.postgresql.org/pgsql-patches/2006-12/msg00019.php">patch from last December</a> does in fact take care of the NULL ordering problem. However, it is only included in version 8.3, and an upgrade wasn&#8217;t an option in my case.</p>
<p>That meant another route to be taken. After a little more reading, I&#8217;ve found my alternative candidate, the COALESCE function, which is implemented in older versions of PostgreSQL too. COALESCE returns the first non-NULL value from its list of parameters, which is exactly what I needed here. My query therefore was altered to this:</p>
<p><code>SELECT client.id, <strong>COALESCE(</strong>SUM(purchase.amount)<strong>,0)</strong> AS total FROM client LEFT JOIN purchase ON purchase.client_id = client.id GROUP BY client.id ORDER BY total DESC;</code></p>
<p>And suddenly, the problem ceased to exist, and every one was happy by looking at the numbers of the biggest customers at last. After all, from the business perspective, they represent the highest value, not NULL.</p>

<span class="slashdigglicious">
<a href="http://slashdot.org/bookmark.pl?url=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F09%2Fwhat-to-do-when-null-hides-your-data%2F&amp;title=What+to+do+when+NULL+hides+your+data%3F" title="Slashdot It!"><img src="http://slashdot.org/favicon.ico" height="16" width="16" alt="[Slashdot]" /></a>
<a href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F09%2Fwhat-to-do-when-null-hides-your-data%2F&amp;title=What+to+do+when+NULL+hides+your+data%3F" title="Digg This Story"><img src="http://digg.com/favicon.ico" width="16" height="16" alt="[Digg]" /></a>
<a href="http://reddit.com/submit?url=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F09%2Fwhat-to-do-when-null-hides-your-data%2F&amp;title=What+to+do+when+NULL+hides+your+data%3F" title="Reddit"><img src="http://reddit.com/favicon.ico" width="16" height="16" alt="[Reddit]" /></a>
<a href="http://del.icio.us/post?url=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F09%2Fwhat-to-do-when-null-hides-your-data%2F&amp;title=What+to+do+when+NULL+hides+your+data%3F" title="Save to del.icio.us" onclick="window.open('http://del.icio.us/post?v=4&amp;noui&amp;jump=close&amp;url=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F09%2Fwhat-to-do-when-null-hides-your-data%2F&amp;title=What+to+do+when+NULL+hides+your+data%3F', 'delicious', 'toolbar=no,width=700,height=400'); return false;"><img src="http://images.del.icio.us/static/img/delicious.small.gif" width="16" height="16" alt="[del.icio.us]" /></a>
<a href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F09%2Fwhat-to-do-when-null-hides-your-data%2F" title="Share on Facebook"><img src="http://www.facebook.com/favicon.ico" width="16" height="16" alt="[Facebook]" /></a>
<a href="http://technorati.com/faves?add=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F09%2Fwhat-to-do-when-null-hides-your-data%2F" title="Add to my Technorati Favorites"><img src="http://technorati.com/favicon.ico" width="16" height="16" alt="[Technorati]" /></a>
<a href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F09%2Fwhat-to-do-when-null-hides-your-data%2F&amp;title=What+to+do+when+NULL+hides+your+data%3F" title="Save to Google Bookmarks"><img src="http://www.google.com/favicon.ico" width="16" height="16" alt="[Google]" /></a>
<a href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F09%2Fwhat-to-do-when-null-hides-your-data%2F&amp;title=What+to+do+when+NULL+hides+your+data%3F" title="Stumble it!"><img src="http://www.stumbleupon.com/favicon.ico" width="16" height="16" alt="[StumbleUpon]" /></a>
</span>]]></content:encoded>
			<wfw:commentRss>http://www.forwhatitworths.com/posts/2007/09/what-to-do-when-null-hides-your-data/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Upgrading a Toughbook CF-W2</title>
		<link>http://www.forwhatitworths.com/posts/2007/09/upgrading-a-toughbook-cf-w2/</link>
		<comments>http://www.forwhatitworths.com/posts/2007/09/upgrading-a-toughbook-cf-w2/#comments</comments>
		<pubDate>Sun, 23 Sep 2007 19:13:50 +0000</pubDate>
		<dc:creator>tamasdecsi</dc:creator>
				<category><![CDATA[Toughbook]]></category>
		<category><![CDATA[repair]]></category>

		<guid isPermaLink="false">http://www.forwhatitworths.com/posts/2007/09/upgrading-a-toughbook-cf-w2/</guid>
		<description><![CDATA[In a previous post, I told the story of replacing the faulty HDD in my Panasonic Toughbook CF-W2. Back then I have followed a guide on a forum linked from repair4laptop.org, which has disappeared since. I also wanted to upgrade the built-in ipw2100 miniPCI WLAN adapter to an ipw2200bg, so I decided to document the [...]]]></description>
			<content:encoded><![CDATA[<p>In a previous post, I told the story of <a href="http://www.forwhatitworths.com/posts/2007/08/a-tough-repair-task/">replacing the faulty HDD in my Panasonic Toughbook CF-W2</a>. Back then I have followed a guide on a forum linked from <a href="http://repair4laptop.org/disassembly_panasonic.html">repair4laptop.org</a>, which has disappeared since. I also wanted to upgrade the built-in <a href="http://support.intel.com/support/wireless/wlan/pro2100/">ipw2100</a> miniPCI WLAN adapter to an <a href="http://support.intel.com/support/wireless/wlan/pro2200bg/">ipw2200bg</a>, so I decided to document the upgrade process myself too. The results are here:</p>
<p>First of all, the most important rule is: don&#8217;t try to fix if it ain&#8217;t broken!! A working Toughbook is a charm, but the same machine as a paperweight is useless. Taking it apart is a long and tricky process, putting it together needs just as much care and attention.</p>
<p>All right, so yours is broken, and isn&#8217;t so lucky as <a href="http://brettpeters.org/docs/computers/panasonic-w2.html">&#8220;Tsiolkovsky&#8221;</a> to have a Panasonic Laptop repair shop around, and you think have the skills, patience, and guts to disassemble it, and YOU UNDERSTOOD THAT THIS IS NOT AN OFFICIAL GUIDE, AND I TAKE ABSOLUTELY NO RESPONSIBILITY FOR ANY POSSIBLE DAMAGE OR LOSS EVEN REMOTELY CONNECTED TO THIS POST. The fact that I&#8217;m managed to repair and upgrade my CF-W2 this way does not guarantee that you&#8217;ll be as lucky as me.</p>
<p>Ok, enough said, let&#8217;s see the process&#8230;</p>
<p>Make sure you have the proper screwdrivers, some chewing gum, or a magnetic head screwdriver, and some thermal compound at hand, also prepare the new parts to be built in. Allow yourself at least an hour&#8217;s worth of time dedicated to the process.</p>
<p>1. Back up all your precious data to minimise damage if anything goes wrong.</p>
<p>2. Clear some flat workspace, and have something to hold the screws in.</p>
<p>3. Before shutting down, open the CD/DVD drive cover (there&#8217;s a screw beneath to tackle later).</p>
<p>4. Turn off the computer, remove the battery and unplug the power cord.</p>
<p>5. Take a big breath.</p>
<p>6. Remove the plastic cover on the WiFi antenna on the right side of the notebook. It is secured with two plastic tabs. You may need to strain it a bit.</p>
<p>7. Unwind the screw in the CD/DVD drive</p>
<p><img src="http://files.forwhatitworths.com/cfw2_pic01.jpg" alt="" /></p>
<p>8. Unwind the two screws at the wifi antenna on the right side of the laptop.<br />
<img src="http://files.forwhatitworths.com/cfw2_pic02.jpg" alt="" /></p>
<p>9. Unscrew the two bolts holding the VGA out connector.<br />
<img src="http://files.forwhatitworths.com/cfw2_pic03.jpg" alt="" /></p>
<p>10. Turn the notebook upside down.</p>
<p>11. Unwind the memory extension&#8217;s screw, remove the plastic cover.<br />
<img src="http://files.forwhatitworths.com/cfw2_pic04.jpg" alt="" /></p>
<p>12. Unwind the three long screws that hold the keyboard, remove the plastic cover.<br />
<img src="http://files.forwhatitworths.com/cfw2_pic05.jpg" alt="" /></p>
<p>13. Flip over the notebook.</p>
<p>14. Dislodge the keyboard. On the top, two plastic tabs keep it in place: one to the left of F1 and one to the right of F12, and a couple more plastic tabs around the spacebar. The keyboard is also glued with some sticky tape on three places, so a little force is needed to dislodge it from the casing. Its cable is also needed to be unplugged from the main board. Take extra care not to harm the ribbon cable during the process.</p>
<p>15. Unwind the 6 black screws underneath the keyboard.<br />
<img src="http://files.forwhatitworths.com/cfw2_pic06.jpg" alt="" /></p>
<p>16. unwind the 2 hidden screws: these are very tricky. you may consider using a magnetic head screwdriver, or a bit of chewing gum to prevent the escape of these screws into the casing.<br />
<img src="http://files.forwhatitworths.com/cfw2_pic07.jpg" alt="" /></p>
<p>17. Close the screen, then turn the notebook upside down. By closing the screen panel you actually secure the casing together while the bottom cover is removed.</p>
<p>18. Unwind all 8 screws on the bottom of the notebook. Some screws may stuck at first disassemble, be sure to use the right tool, otherwise the head will suffer, and you might be unable to take the notebook apart without considerable damage. There are four short, and four longer screws, mind their positions. (Update: <a href="http://www.brettpeters.org/">Brett</a> told me that if you mix the short and long screws, you might end up punching a hole in the motherboard during the reassemble, so better check it twice!)<br />
<img src="http://files.forwhatitworths.com/cfw2_pic08.jpg" alt="" /></p>
<p>19. Unwind the 2 screws securing the screen panel on both sides.</p>
<p>20. Carefully remove the bottom cover.<br />
<img src="http://files.forwhatitworths.com/cfw2_pic09.jpg" alt="" /></p>
<p>Now you can access both the HDD and the Wlan card in the miniPCI slot. Apart from the memory extension and the keyboard, these are the two modularly replaceable parts in the Toughbook W2.</p>
<p>21. The Wlan card has two antenna plugs (a main and an auxiliary). Simply, carefully pull them, then you can flip the module from the bay, and insert the upgrade module instead, and finally don&#8217;t forget to attach the antenna plugs.</p>
<p><img src="http://files.forwhatitworths.com/cfw2_pic10.jpg" alt="" /></p>
<p>Upgrading to an ipw2200bg or an ipw2915abg doesn&#8217;t raise any hardware compatibility issues, only a driver upgrade is needed then. You can find many of these cards on the second-hand market, usually originating from broken notebooks. I got a 2200bg for around $27 on an auction site.</p>
<p>22. Concerning the HDD: you need to know that most Panasonic Toughbooks use a low voltage (3.3V) HDD, which you can&#8217;t readily buy in retail shops, so you need to mod a 5V notebook HDD by clipping pins 41 and 44. (At least this worked in a few reported cases, including my Samsung SpinPoint HM080HC 80GB 2,5&#8243; HDD).<br />
I&#8217;ve found this <a href="http://www.mfraenz.de/cf_y2/">HDD upgrade guide</a> useful.</p>
<p>Ok, now that the parts have been replaced, you can put it back together.</p>
<p>23. Secure the back cover with the 2&#215;2 screws fixing the screen panel, and the 4 long and 4 short screws fixing the cover to the casing (remember, DO NOT MIX THEM UP, as the long screw in a short&#8217;s place might damage the motherboard), then turn the notebook around and open the screen.</p>
<p>24. Continue with the two hidden screws: again, use a magnetic head screwdriver, or a bit of chewing gum to secure the screws while twisting. Should they fall, you&#8217;ll need to open the bottom panel again to get to them.</p>
<p>25. Next, take care of the the 6 black screws.</p>
<p>26. Now comes an important step: clean the surface of the processor (and the metallic part on the bottom of the keyboard), then apply some thermal compound on it. This is particularly important, as otherwise the CPU can get pretty hot, up to an unhealthy 90 degrees centigrade with processor intensive tasks running.</p>
<p>27. Plug the keyboard back, flip the plastic tabs in place. Again, handle the ribbon cable with extra care.</p>
<p>28. Flip the notebook over, secure the keyboard and the plastic cover with the 3 long screws, then the memory extension cover.</p>
<p>29. Flip once more, screw in the 2+1 screws, and put the WiFi antenna cover back in place.</p>
<p>30. Finally, screw the VGA connector&#8217;s bolts back to their respective place.</p>
<p>Now put the battery back in place, and hold your breath while starting up the notebook. If it works, well, congratulations, you&#8217;re done. In every other case, I&#8217;m sorry to say, but now it is your turn to find out what have gone wrong.</p>
<p>Should you be succeed or fail, I&#8217;d like to read about it, so please do post a comment here. Thanks!</p>

<span class="slashdigglicious">
<a href="http://slashdot.org/bookmark.pl?url=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F09%2Fupgrading-a-toughbook-cf-w2%2F&amp;title=Upgrading+a+Toughbook+CF-W2" title="Slashdot It!"><img src="http://slashdot.org/favicon.ico" height="16" width="16" alt="[Slashdot]" /></a>
<a href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F09%2Fupgrading-a-toughbook-cf-w2%2F&amp;title=Upgrading+a+Toughbook+CF-W2" title="Digg This Story"><img src="http://digg.com/favicon.ico" width="16" height="16" alt="[Digg]" /></a>
<a href="http://reddit.com/submit?url=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F09%2Fupgrading-a-toughbook-cf-w2%2F&amp;title=Upgrading+a+Toughbook+CF-W2" title="Reddit"><img src="http://reddit.com/favicon.ico" width="16" height="16" alt="[Reddit]" /></a>
<a href="http://del.icio.us/post?url=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F09%2Fupgrading-a-toughbook-cf-w2%2F&amp;title=Upgrading+a+Toughbook+CF-W2" title="Save to del.icio.us" onclick="window.open('http://del.icio.us/post?v=4&amp;noui&amp;jump=close&amp;url=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F09%2Fupgrading-a-toughbook-cf-w2%2F&amp;title=Upgrading+a+Toughbook+CF-W2', 'delicious', 'toolbar=no,width=700,height=400'); return false;"><img src="http://images.del.icio.us/static/img/delicious.small.gif" width="16" height="16" alt="[del.icio.us]" /></a>
<a href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F09%2Fupgrading-a-toughbook-cf-w2%2F" title="Share on Facebook"><img src="http://www.facebook.com/favicon.ico" width="16" height="16" alt="[Facebook]" /></a>
<a href="http://technorati.com/faves?add=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F09%2Fupgrading-a-toughbook-cf-w2%2F" title="Add to my Technorati Favorites"><img src="http://technorati.com/favicon.ico" width="16" height="16" alt="[Technorati]" /></a>
<a href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F09%2Fupgrading-a-toughbook-cf-w2%2F&amp;title=Upgrading+a+Toughbook+CF-W2" title="Save to Google Bookmarks"><img src="http://www.google.com/favicon.ico" width="16" height="16" alt="[Google]" /></a>
<a href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F09%2Fupgrading-a-toughbook-cf-w2%2F&amp;title=Upgrading+a+Toughbook+CF-W2" title="Stumble it!"><img src="http://www.stumbleupon.com/favicon.ico" width="16" height="16" alt="[StumbleUpon]" /></a>
</span>]]></content:encoded>
			<wfw:commentRss>http://www.forwhatitworths.com/posts/2007/09/upgrading-a-toughbook-cf-w2/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>The state of GPS car navigation</title>
		<link>http://www.forwhatitworths.com/posts/2007/09/the-state-of-gps-car-navigation/</link>
		<comments>http://www.forwhatitworths.com/posts/2007/09/the-state-of-gps-car-navigation/#comments</comments>
		<pubDate>Sun, 16 Sep 2007 15:35:35 +0000</pubDate>
		<dc:creator>tamasdecsi</dc:creator>
				<category><![CDATA[GPS]]></category>
		<category><![CDATA[mapping]]></category>

		<guid isPermaLink="false">http://www.forwhatitworths.com/posts/2007/09/the-state-of-gps-car-navigation/</guid>
		<description><![CDATA[With prices falling and new devices appearing on the market every week, it seems that GPS car navigation systems are finally getting widely adopted. Still, the question remains whether they are ready to be used by the &#8220;average driver&#8221;?
Sure, it is useful to know where you are, and in what general direction your destination is, [...]]]></description>
			<content:encoded><![CDATA[<p>With prices falling and new devices appearing on the market every week, it seems that GPS car navigation systems are finally getting widely adopted. Still, the question remains whether they are ready to be used by the &#8220;average driver&#8221;?</p>
<p>Sure, it is useful to know where you are, and in what general direction your destination is, what more, how on Earth can you get there on four wheels. All this requires a GPS receiver (to read your current location), a mapping software (to calculate your moving direction from subsequent reads), and an accurate map (to give some context and meaning to your location readouts). The first two are more or less out there. Still, maps can be considered anything but reliable or accurate.</p>
<p>With news on blind faith put in navigation systems, people have already <a href="http://www.engadget.com/2006/04/20/uk-drivers-trust-gps-more-than-their-own-eyes/">got wet</a>, others found themselves <a href="http://www.engadget.com/2007/03/27/faith-in-gps-sends-mercedes-downstream/">down the stream</a>, <a href="http://www.engadget.com/2007/05/11/another-brit-puts-complete-faith-in-gps-system-nearly-perishes/">on the track</a>, or <a href="http://www.engadget.com/2006/10/10/motorist-has-faith-in-gps-drives-into-sandpile/">fighting the dunes</a>, the map inaccuracy issue finally got into the headlines.<br />
People, of course, are eager to come up with various solutions.<br />
* An almost-victim said she <a href="http://www.engadget.com/2007/05/11/another-brit-puts-complete-faith-in-gps-system-nearly-perishes/">won&#8217;t ever use a navigation system again</a>.<br />
* others said people should update the maps in their navigation systems every once in a while<br />
* some Welsh officers has even <a href="http://www.engadget.com/2007/08/28/welsh-get-incomprehensible-anti-gps-signs/">created a new, but ambiguous traffic sign</a> to warn lorry drivers of the road being narrower than expected.<br />
* while others came up with fairly good ideas, such as <a href="http://www.engadget.com/2007/07/03/tomtom-patent-reveals-camera-based-gps-unit/">superimposing the map on a front-camera&#8217;s stream</a>, so that even faithful users can compare the map with the reality on the same screen.</p>
<p>However, keeping maps up-to-date is not as simple as one may think. Downloading the latest updates doesn&#8217;t do the trick. Maps become inaccurate at (or even before) the very moment they are published. As it is their purpose to sketch the spatial layout of real-world features, the only way they can remain up to date is if they constantly evolve along with their &#8220;mapped&#8221; real-life features. And constantly means very short term here. Think of traffic, for example: maps that fails to mention actual road congestion, current roadworks or accidents, has only a limited use, routing their users through nasty traffic jams.</p>
<p>In order to better understand the situation, first let&#8217;s take a look at the various approaches of creating and updating maps:</p>
<p>The commercial route is what proprietary navigation software vendors take. Usually you get these applications bundled with a GPS receiver, and preloaded with some not-too-up-to-date maps. The map data used by them is something commercially available, which most likely originates from the digitized version of maps of the &#8220;pen and pencil&#8221; era, with updates from geocoded aerial photography, and most likely not thoroughly validated by actual GPS reading on the ground. User feedbacks are usually welcome, and the major inaccuracies gradually get updated , but that&#8217;s a slow process, and the more recent map you need the more deep you need to dig into your wallet for it.</p>
<p>On the other end, there are the open approaches, thinking of open source projects with an enthusiastic community of hobbyists and professionals dedicating their free time to make something useful or at least interesting.</p>
<p>These projects take different approaches to acquire map data.<br />
Some of them make use of openly available data (where there is such a thing), for example, <a href="http://roadmap.digitalomaha.net/">Roadmap</a> uses the <a href="http://www.lib.ncsu.edu/gis/tiger.html">TIGER</a> GIS data, where of course, data accuracy is limited again.</p>
<p>Others, such as <a href="http://www.gpsdrive.de/">gpsdrive</a> use dumbed down version of  &#8220;available&#8221; data in form of snapshots of rendered maps from various web map services, such as <a href="http://maps.google.com/">google maps</a> or <a href="http://maps.yahoo.com/">yahoo maps</a> to mention the two biggest. This approach can&#8217;t do routing, though, as the map is treated as a simple raster image only, without any routing information or so.</p>
<p>Yet another approach is based on a mapping community, and let contributors draw the maps, like <a href="http://cgpsmapper.com/">cgpsmapper</a>&#8217;s <a href="http://mapcenter.cgpsmapper.com/">MapCenter</a>, or the geocaching communities offsprings (e.g. <a href="http://www.turistautak.hu/">turistautak</a> for Hungary), or the very active <a href="http://www.openstreetmap.org">openstreetmap project</a>, or the much less active <a href="http://www.freemap.nett.org/english/index.html">FREEMAP project</a> to mention a few. The resulting maps are definitely GPS-validated, as the data source itself is the GPS tracks gathered, but it takes enormous amount of total community time to create a quite complete, routable map for even a relatively small region, nonetheless, quite impressive results already exist.</p>
<p>Still another concept is algorithmic map generation from GPS tracks, using statistical methods, thus reducing the amount of expertise needed on the map creation side. <a href="http://mapgeneration.berlios.de/">Mapgeneration</a> takes this algorithmic map-drawing route. The problem (again) is gathering enough usable tracks to work on.</p>
<p>Yet, these all are just base maps needing constant updates, having no information on current traffic data. For this latter, other, more sophisticated techniques are needed. Let&#8217;s take a look at some of these approaches:</p>
<p>Starting with the statistical approach, when previously collected and analyzed traffic patterns are attached to each road. With this <a href="http://slashdot.org/article.pl?sid=07/05/24/2214211">incorporated traffic flow data</a>, the routing algorithm can do better time estimates for the possible routes. Even though this approach gives a better route, it still didn&#8217;t solve the problem of keeping its data up-to-date.</p>
<p>Being up-to-date necessitates an interface to refresh data. The online service approach solves this by having a central hub that constantly collects traffic data from various sources (traffic surveillance and control systems, or sampling a subset of cars also known as <a href="http://en.wikipedia.org/wiki/Floating_car_data">Floating Car Data</a>), and sends updates to subscribers through some wireless medium, typically over a cellphone data network. Such systems can provide information on traffic events <a href="http://www.ddg.de/pdf-dat/ddgfcd.pdf">minutes or even hours earlier</a> than radio news, saving precious time for their users.</p>
<p>However, not all types of traffic data needs a central database. The <a href="http://www.et2.tu-harburg.de/fleetnet/english/floating-car.html">decentralized version of Floating Car Data</a> uses traffic information collected from neighbouring cars in an ad-hoc network fashion. In this scenario, cars broadcast their position, direction, velocity and other traffic information, as well as relay data from cars ahead, and filter data broadcasted by other cars for relevance. The strength of this approach lays in its adaptability to spontaneous short term situations, e.g. assisting drivers to cooperate for driving safety. In the same time it may also provide enough data for making longer term decisions, such as choosing a better route.</p>
<p>These advanced systems are still mostly lay on the drawing boards, and are still too expensive to become widespread. However, with the recent trend of car manufacturers (e.g. <a href="http://www.engadget.com/2007/09/11/tomtom-to-provide-embedded-pnd-for-toyotas-yaris/">Toyota</a>, <a href="http://www.onstar.com/">GM</a>, and others) equipping all new cars with GPS receivers, the location and velocity data will be available from more and more vehicles on the move. At the same time, ad-hoc wireless networks also getting more of a commodity, it seems finally things are getting in place for distributed, always up-to-date, cheap and reliable navigational systems to appear in the near future.</p>
<p>Better be soon, as driving safety is also more and more of an issue as people rush towards their goals with an ever hastening pace, and they need to be guided, not further confused by navigation systems.</p>

<span class="slashdigglicious">
<a href="http://slashdot.org/bookmark.pl?url=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F09%2Fthe-state-of-gps-car-navigation%2F&amp;title=The+state+of+GPS+car+navigation" title="Slashdot It!"><img src="http://slashdot.org/favicon.ico" height="16" width="16" alt="[Slashdot]" /></a>
<a href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F09%2Fthe-state-of-gps-car-navigation%2F&amp;title=The+state+of+GPS+car+navigation" title="Digg This Story"><img src="http://digg.com/favicon.ico" width="16" height="16" alt="[Digg]" /></a>
<a href="http://reddit.com/submit?url=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F09%2Fthe-state-of-gps-car-navigation%2F&amp;title=The+state+of+GPS+car+navigation" title="Reddit"><img src="http://reddit.com/favicon.ico" width="16" height="16" alt="[Reddit]" /></a>
<a href="http://del.icio.us/post?url=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F09%2Fthe-state-of-gps-car-navigation%2F&amp;title=The+state+of+GPS+car+navigation" title="Save to del.icio.us" onclick="window.open('http://del.icio.us/post?v=4&amp;noui&amp;jump=close&amp;url=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F09%2Fthe-state-of-gps-car-navigation%2F&amp;title=The+state+of+GPS+car+navigation', 'delicious', 'toolbar=no,width=700,height=400'); return false;"><img src="http://images.del.icio.us/static/img/delicious.small.gif" width="16" height="16" alt="[del.icio.us]" /></a>
<a href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F09%2Fthe-state-of-gps-car-navigation%2F" title="Share on Facebook"><img src="http://www.facebook.com/favicon.ico" width="16" height="16" alt="[Facebook]" /></a>
<a href="http://technorati.com/faves?add=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F09%2Fthe-state-of-gps-car-navigation%2F" title="Add to my Technorati Favorites"><img src="http://technorati.com/favicon.ico" width="16" height="16" alt="[Technorati]" /></a>
<a href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F09%2Fthe-state-of-gps-car-navigation%2F&amp;title=The+state+of+GPS+car+navigation" title="Save to Google Bookmarks"><img src="http://www.google.com/favicon.ico" width="16" height="16" alt="[Google]" /></a>
<a href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.forwhatitworths.com%2Fposts%2F2007%2F09%2Fthe-state-of-gps-car-navigation%2F&amp;title=The+state+of+GPS+car+navigation" title="Stumble it!"><img src="http://www.stumbleupon.com/favicon.ico" width="16" height="16" alt="[StumbleUpon]" /></a>
</span>]]></content:encoded>
			<wfw:commentRss>http://www.forwhatitworths.com/posts/2007/09/the-state-of-gps-car-navigation/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
