<?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>invalidfile.name</title>
	<atom:link href="http://invalidfile.name/feed/" rel="self" type="application/rss+xml" />
	<link>http://invalidfile.name</link>
	<description>garbage collection for the brain</description>
	<lastBuildDate>Fri, 23 Apr 2010 07:13:57 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>1Borneo N900 HDR Photography</title>
		<link>http://invalidfile.name/2010/04/1borneo-n900-hdr-photography/</link>
		<comments>http://invalidfile.name/2010/04/1borneo-n900-hdr-photography/#comments</comments>
		<pubDate>Sun, 18 Apr 2010 05:27:49 +0000</pubDate>
		<dc:creator>null pointer</dc:creator>
				<category><![CDATA[Display]]></category>
		<category><![CDATA[I/O]]></category>
		<category><![CDATA[Local bus]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[1Borneo]]></category>
		<category><![CDATA[art]]></category>
		<category><![CDATA[exposure bracketing]]></category>
		<category><![CDATA[hdr]]></category>
		<category><![CDATA[n900]]></category>
		<category><![CDATA[nokia]]></category>
		<category><![CDATA[pictures]]></category>
		<category><![CDATA[rainy day]]></category>

		<guid isPermaLink="false">http://invalidfile.name/?p=253</guid>
		<description><![CDATA[&#8216;Tis was a rainy gloomy Saturday afternoon &#8211; my favourite kind of weather I was experimenting with some High Dynamic Range (HDR) photography in 1Borneo. Here are some of the photos &#8211; the first three images of each set are the raw images used to create the fourth image (HDR): New York, New York Captured: [...]]]></description>
			<content:encoded><![CDATA[<p>&#8216;Tis was a rainy gloomy Saturday afternoon &#8211; my favourite kind of weather <img src='http://invalidfile.name/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  I was experimenting with some High Dynamic Range (HDR) photography in <a title="Google Maps: 1Borneo Hypermall" href="http://maps.google.com/maps?f=q&amp;source=s_q&amp;hl=en&amp;geocode=&amp;q=1borneo,+Jalan+Sulaman,+88400+Kota+Kinabalu,+Sabah,+Malaysia&amp;sll=6.035152,116.128455&amp;sspn=0.085014,0.110378&amp;ie=UTF8&amp;hq=&amp;hnear=1borneo,+Jalan+Sulaman,+Kota+Kinabalu,+Sabah,+Malaysia&amp;z=13">1Borneo</a>. Here are some of the photos &#8211; the first three images of each set are the raw images used to create the fourth image (HDR):</p>
<h2>New York, New York</h2>
<p><strong>Captured:</strong> 2010-04-17 14:49:03</p>

<a href='http://invalidfile.name/2010/04/1borneo-n900-hdr-photography/raw-01124/' title='EV = 1124 (New York, New York)'><img width="150" height="150" src="http://invalidfile.name/wp-content/uploads/2010/04/raw-01124-150x150.jpg" class="attachment-thumbnail" alt="EV = 1124 (New York, New York)" title="EV = 1124 (New York, New York)" /></a>
<a href='http://invalidfile.name/2010/04/1borneo-n900-hdr-photography/raw-17126/' title='EV = 17126 (New York, New York)'><img width="150" height="150" src="http://invalidfile.name/wp-content/uploads/2010/04/raw-17126-150x150.jpg" class="attachment-thumbnail" alt="EV = 17126 (New York, New York)" title="EV = 17126 (New York, New York)" /></a>
<a href='http://invalidfile.name/2010/04/1borneo-n900-hdr-photography/raw-33138/' title='EV = 33138 (New York, New York)'><img width="150" height="150" src="http://invalidfile.name/wp-content/uploads/2010/04/raw-33138-150x150.jpg" class="attachment-thumbnail" alt="EV = 33138 (New York, New York)" title="EV = 33138 (New York, New York)" /></a>
<a href='http://invalidfile.name/2010/04/1borneo-n900-hdr-photography/attachment/20100417144903/' title='HDR (New York New York)'><img width="150" height="150" src="http://invalidfile.name/wp-content/uploads/2010/04/20100417144903-150x150.jpg" class="attachment-thumbnail" alt="2010-04-17 14:49:03" title="HDR (New York New York)" /></a>

<h2>elusion Lounge (1Borneo Courtyard Hotel)</h2>
<p><strong>Captured:</strong> 2010-04-17 17:36:19</p>
<p>This is a pretty nice place &#8211; great view of the surroundings.</p>

<a href='http://invalidfile.name/2010/04/1borneo-n900-hdr-photography/raw-05258/' title='EV = 5258 (elusion)'><img width="150" height="150" src="http://invalidfile.name/wp-content/uploads/2010/04/raw-05258-150x150.jpg" class="attachment-thumbnail" alt="EV = 5258 (elusion)" title="EV = 5258 (elusion)" /></a>
<a href='http://invalidfile.name/2010/04/1borneo-n900-hdr-photography/raw-19199/' title='EV = 19199 (elusion)'><img width="150" height="150" src="http://invalidfile.name/wp-content/uploads/2010/04/raw-19199-150x150.jpg" class="attachment-thumbnail" alt="EV = 19199 (elusion)" title="EV = 19199 (elusion)" /></a>
<a href='http://invalidfile.name/2010/04/1borneo-n900-hdr-photography/raw-33138-2/' title='EV = 33138 (elusion)'><img width="150" height="150" src="http://invalidfile.name/wp-content/uploads/2010/04/raw-331381-150x150.jpg" class="attachment-thumbnail" alt="EV = 33138 (elusion)" title="EV = 33138 (elusion)" /></a>
<a href='http://invalidfile.name/2010/04/1borneo-n900-hdr-photography/attachment/20100417173619/' title='HDR (elusion)'><img width="150" height="150" src="http://invalidfile.name/wp-content/uploads/2010/04/20100417173619-150x150.jpg" class="attachment-thumbnail" alt="2010-04-17 17:36:19" title="HDR (elusion)" /></a>

<p>To read more about HDR imaging, have a look at my post on <a href="http://invalidfile.name/2010/04/hdr-imaging-on-the-nokia-n900/">HDR Imaging on the Nokia N900</a>.</p>
 <img src="http://invalidfile.name/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=253" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://invalidfile.name/2010/04/1borneo-n900-hdr-photography/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HDR imaging on the Nokia N900</title>
		<link>http://invalidfile.name/2010/04/hdr-imaging-on-the-nokia-n900/</link>
		<comments>http://invalidfile.name/2010/04/hdr-imaging-on-the-nokia-n900/#comments</comments>
		<pubDate>Thu, 15 Apr 2010 14:20:47 +0000</pubDate>
		<dc:creator>null pointer</dc:creator>
				<category><![CDATA[Display]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[I/O]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[busybox]]></category>
		<category><![CDATA[camera]]></category>
		<category><![CDATA[easy debian]]></category>
		<category><![CDATA[enfuse]]></category>
		<category><![CDATA[exposure bracketing]]></category>
		<category><![CDATA[fremantle]]></category>
		<category><![CDATA[gstreamer]]></category>
		<category><![CDATA[handphone]]></category>
		<category><![CDATA[hdr]]></category>
		<category><![CDATA[high dynamic range]]></category>
		<category><![CDATA[maemo]]></category>
		<category><![CDATA[n900]]></category>
		<category><![CDATA[nokia]]></category>
		<category><![CDATA[photography]]></category>
		<category><![CDATA[pictures]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://invalidfile.name/?p=203</guid>
		<description><![CDATA[Ever snapped a photo with a bright background and a dim foreground and either had the foreground too dark or the background blown-out? Time for High Dynamic Range (HDR) imaging Its a feature that is far more at home on DSLRs, rather than lowly point-and-shoot cameras, let alone the Nokia N900. Of course, we can&#8217;t [...]]]></description>
			<content:encoded><![CDATA[<p>Ever snapped a photo with a bright background and a dim foreground  and either had the foreground too dark or the background blown-out?</p>
<p>Time for <a href="http://en.wikipedia.org/wiki/High_dynamic_range_imaging"><strong>High   Dynamic Range (HDR)</strong></a> imaging <img src='http://invalidfile.name/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  Its a feature that is far more at home on  DSLRs, rather than lowly point-and-shoot cameras, let alone the <a href="http://maemo.nokia.com/n900/"><strong>Nokia N900</strong></a>. Of  course, we can&#8217;t match the quality (or speed) of those DSLRs with their  superior CCDs. On the other hand, it&#8217;s just downright amazing that you  can actually snap respectable HDR photos with the N900 and automate the  process to a high degree &#8211; right down to actually <strong>processing</strong> the  HDR right from your own phone &#8211; as long as you have CPU cycles to  spare..</p>

<a href='http://invalidfile.name/2010/04/hdr-imaging-on-the-nokia-n900/20100415111859-raw-01389/' title='EV = 1389'><img width="150" height="150" src="http://invalidfile.name/wp-content/uploads/2010/04/20100415111859-raw-01389-150x150.jpg" class="attachment-thumbnail" alt="EV = 1389" title="EV = 1389" /></a>
<a href='http://invalidfile.name/2010/04/hdr-imaging-on-the-nokia-n900/20100415111859-raw-14476/' title='EV = 14476'><img width="150" height="150" src="http://invalidfile.name/wp-content/uploads/2010/04/20100415111859-raw-14476-150x150.jpg" class="attachment-thumbnail" alt="EV = 14476" title="EV = 14476" /></a>
<a href='http://invalidfile.name/2010/04/hdr-imaging-on-the-nokia-n900/20100415111859-raw-27570/' title='EV = 27570'><img width="150" height="150" src="http://invalidfile.name/wp-content/uploads/2010/04/20100415111859-raw-27570-150x150.jpg" class="attachment-thumbnail" alt="EV = 27570" title="EV = 27570" /></a>
<a href='http://invalidfile.name/2010/04/hdr-imaging-on-the-nokia-n900/attachment/20100415111859/' title='High Dynamic Range'><img width="150" height="150" src="http://invalidfile.name/wp-content/uploads/2010/04/20100415111859-150x150.jpg" class="attachment-thumbnail" alt="HDR (enfuse&#039;d)" title="High Dynamic Range" /></a>

<p><span id="more-203"></span><strong> </strong></p>
<p style="text-align: center;"><strong>New! 18th April 2010:</strong> <a href="http://invalidfile.name/2010/04/1borneo-n900-hdr-photography/">More HDR photos</a> taken with my N900</p>
<h2>YMMV</h2>
<p>Before continuing any further, some stuff I would like to say:</p>
<ul>
<li>This article is <strong>very </strong>long <img src='http://invalidfile.name/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </li>
<li>This article is <strong>mostly technical</strong> and <strong>intended for Nokia N900 users </strong>- although feel free to read on if you would like the vicarious experience of doing cool stuff on the N900 and learning a bit about HDR <img src='http://invalidfile.name/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
<li>If you prefer <strong>pictures</strong> instead of exposition, you can view all posts tagged with <a href="http://invalidfile.name/tag/exposure-bracketing/">Exposure Bracketing</a>.</li>
<li><strong><a href="http://wiki.maemo.org/Easy_Debian">Easy Debian</a> must be installed for on-device processing of HDR images</strong> &#8211; the installation instructions can be found in the link provided. Alternatively, you can still snap the raw images with your N900, but do the actual HDR processing on your laptop or desktop using third-party tools. I won&#8217;t provide any help or support on any of these topics.</li>
<li><strong>You need a tripod</strong> &#8211; I use a semi-DIY setup based on a <a href="http://joby.com/gorillapod">Gorillapod</a> and some other pieces of plastic. I might post pictures of it when I have the time.</li>
<li>Don&#8217;t expect too much from the N900 camera in low-light conditions &#8211; exposure control seems to be limited from around 33 to 33133 microseconds. Perhaps Nokia will remedy this in the fabled PR1.2 update.</li>
<li>I won&#8217;t be responsible if you somehow brick any of your devices (although its quite unlikely, given the general scope of this discussion).</li>
</ul>
<h2>Inspiration</h2>
<p>The <strong>Nokia N900</strong> is -the- dream phone for tinkerers and geeks &#8211; fully Linux, and <em>almost</em> completely open (there are some closed-source libraries in there). The community behind <strong>Maemo</strong> (the name of the operating system) is pretty active too &#8211; there is a lot of useful stuff that you can get from the <a href="http://talk.maemo.org">forums</a>, as long as you&#8217;re willing to sort through all the junk posts/threads. These two threads are of particularly interest for this post:</p>
<ul>
<li><a title="HDR Pictures with the N900?" href="http://talk.maemo.org/showthread.php?t=33007">http://talk.maemo.org/showthread.php?t=33007</a> (HDR Pictures with the N900?)</li>
<li><a title="N900 Video focus and led light, python script" href="http://talk.maemo.org/showthread.php?t=46427">http://talk.maemo.org/showthread.php?t=46427</a> (N900 Video focus and led light, python script)</li>
</ul>
<p>The first link describes the initial steps required to take HDR photos, accomplished via the <tt>expcomp</tt> library (source and binary provided by the original author) and an ASH script (BusyBox is the default shell on the N900). The <tt>expcomp</tt> library is a command-line tool to adjust the current exposure compensation value of the N900 camera. However, it has a few limitations:</p>
<ul>
<li>You cannot set an absolute value for the exposure compensation. Adjustments are all relative to the current exposure compensation value of the camera &#8211; determined automatically by the in-built camera app when you point it around.</li>
<li>The soft limits of the <tt>gstreamer</tt> library which controls the camera are not taken into account. Apparently, the raw value must be somewhere in the range of 33 to 33133 &#8211; any larger or smaller value will simply cause <tt>gstreamer</tt> to cut-off at the minimum or maximum exposure level (even though <tt>expcomp</tt> returns a higher or lower value!)</li>
</ul>
<p>These limitations can be easily overcome by rebuilding the script, since the author has kindly provided the source code. Nevertheless, I took a shortcut &#8211; bringing us neatly to the second link &#8211; my original source for the more powerful <tt>v4l2-ctl</tt> library.</p>
<p>The <tt>v4l2-ctl</tt> library provides a general-purpose command-line interface to <tt>gstreamer</tt>. Running <tt>./v4l2-ctl -L</tt> will give you a run-down of the internal parameters which it can read/set. The one we need to use is called, strangely enough, <tt>exposure_time_us</tt> &#8211; I presume the <tt>us</tt> actually means <strong>μs</strong> i.e. <strong>microseconds</strong>.<span style="font-family: monospace;"><span style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;"> </span></span></p>
<h2>HDR photography</h2>
<p>As described in the original HDR thread linked above, taking HDR images is as simple as snapping 3 pictures with varying exposure values (EV). In short, one image will be overexposed (details in darker areas will be clearer), another one will be underexposed (brighter areas will not be blown-out), and the third one will be exposed &#8211; as Goldilocks put it &#8211; just right.</p>
<p>After the images are taken, we can use <tt>enfuse</tt> to process the image files and generate a single HDR image. To find out more about <tt>enfuse</tt> see <a href="http://wiki.panotools.org/Enfuse">this wiki page</a> on <a href="http://www.panotools.org/">PanoTools.org</a>.</p>
<h1 style="padding-top: 10px;">How-to: Installation</h1>
<p><strong><span style="font-weight: normal; font-size: 13px;"> </span></strong></p>
<p>The following files are provided:</p>
<ul>
<li><tt>./bracket-auto.sh</tt></li>
<li><tt>./bracket-manual.sh</tt></li>
<li><tt>./snap-images.sh </tt>(dependency for first two files)</li>
<li><tt>./v4l2-ctl </tt>(dependency for first two files)</li>
<li><tt>./hdr-enfuse.sh</tt></li>
<li><tt>./completed.wav <span style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;"> (played by <span style="font-family: monospace;">./bracket-manual.sh</span> on completion)</span></tt></li>
</ul>
<p><strong>Download link: <a href="http://invalidfile.name/wp-content/uploads/2010/04/bracketing.20100419c.tar.gz">N900 Exposure Bracketing</a></strong> (md5sum: <tt>ef359a7a25bb8ce40ab6e9169970aed5</tt>)</p>
<ol>
<li>Download and extract the files.<br />
<span style="font-family: monospace;">tar -xvzf bracketing.20100415.tar.gz</span></li>
<li>Copy the extracted folder <span style="font-family: monospace;">./bracketing/</span> into a directory of your choice (I use <span style="font-family: monospace;">/home/user/scripts/ </span>for all my scripts)<br />
<tt>mv ./bracketing/ /home/user/scripts/</tt><strong><br />
Important!</strong> This folder should not be moved anywhere inside /home/user/MyDocs/</li>
<li>Make all the files in the folder executable.<br />
<tt>chmod 755 /home/user/scripts/bracketing/*</tt></li>
<li>Create a directory called <tt>hdr</tt> in your phone&#8217;s <span style="font-family: monospace;">MyDocs</span> directory.<br />
<tt>mkdir /home/user/MyDocs/hdr/</tt></li>
<li><strong>Optional:</strong><strong> </strong>To do on-device processing of HDR images, <a href="http://wiki.maemo.org/Easy_Debian">install Easy Debian</a> &#8211; <strong>for technical-minded users only!</strong></li>
</ol>
<h2>How-to: Take pictures with <tt>./bracket-auto.sh</tt></h2>
<p>This script will take three pictures of the same scene at the default EV (which is auto-set when the user initially activates the in-built camera application), and two other pictures of +2 and &#8211; 2 EV relative to the default EV.</p>
<p><strong>Bonus</strong>: Installing the <a href="http://maemo.org/packages/view/espeak/">eSpeak CLI Speech synthesizer</a> from the <em>maemo.org Extras</em> repository will give you spoken voice notifications while the script is working. It will also announce its own completion.</p>
<ol>
<li>Ensure that the camera slide is closed and that the camera application is not running.</li>
<li>Open <strong>X Terminal</strong>. You can <tt>sudo gainroot</tt> if you like (the script can run as either <tt>user</tt> or <tt>root</tt>).</li>
<li>Go to the directory where the scripts are copied and type <strong>(BUT DO NOT RUN</strong>!) <tt>./bracket-auto.sh</tt></li>
<li>Mount the camera in your tripod (if it hasn&#8217;t been mounted yet), open the camera slide.</li>
<li>The camera application should open. Half-press the shutter button to auto-focus the camera.</li>
<li>When you are satisfied, close the camera application and bring up the <strong>X Terminal</strong> window in the <strong>Task Manager</strong></li>
<li>Hit the ENTER key to run the script (which you typed out previously but didn&#8217;t run)</li>
<li>Wait for the script to complete &#8211; this may take awhile (can be within 1-3 minutes to my experience &#8211; it gets slower the longer I leave my phone on).</li>
<li>You can find the image files in <tt>/home/user/MyDocs/hdr/&lt;timestamp&gt;/</tt><br />
<em>Example: </em><tt>/home/user/MyDocs/hdr/20100415135511/</tt></li>
</ol>
<h2>How-to: Take pictures with <tt>./bracket-manual.sh</tt></h2>
<p>This script allows the user to specify the minimum and maximum EV by pointing the camera at the brightest and dimmest areas of the scene. It will then calculate the  average exposure, then take three pictures based on these recorded values.</p>
<p>Note: This script makes use of graphical notifications and must be run as <tt>user</tt>. This script will not run properly if you run as <tt>root</tt> (via <tt>sudo gainroot</tt>).</p>
<ol>
<li>Close the camera application if it is running.</li>
<li>Start X Terminal. <strong>DO NOT <tt>SUDO GAINROOT</tt></strong>.</li>
<li>Go to the directory where you put the script and run <tt>./bracket-manual.sh</tt></li>
<li>The script will now automatically open the camera application</li>
<li>Point the camera at the brightest area in your scene, wait 1-2 seconds for the camera to automatically adjust its exposure, then half-press the shutter button. If you do it right, you will see an on-screen notification telling you the scene EV. You may release the shutter button at this time.</li>
<li>Repeat the previous step, except this time you will point the camera at the dimmest area in your scene.</li>
<li>After this, mount the camera in your tripod (there is no time limit on this, just be sure not to press the shutter button while mounting the camera).</li>
<li>Half-press the shutter button again &#8211; you will a notification telling you to release the shutter button and close the camera application. You will have 5 seconds to close the camera application &#8211; just tap the close button in the top-right corner of the screen.</li>
<li>The <strong>Task Manager</strong> should show up, you can tap the <strong>X Terminal</strong> window if you would like to see the process as it runs.</li>
<li>Wait for the script to complete &#8211; it will beep (<span style="font-family: monospace;">./completed.wav</span>) <span style="text-decoration: line-through;">3 times</span> <em>(changed 2007-04-17: see updates at the bottom of this article)</em> &#8211; this may take awhile (can be within 1-3 minutes to my experience &#8211; it gets slower the longer I  leave my phone on).</li>
<li>You can find the image files in <tt>/home/user/MyDocs/hdr/&lt;timestamp&gt;/</tt><br />
<em>Example:</em> <tt>/home/user/MyDocs/hdr/20100415135511/</tt></li>
</ol>
<h2>How-to: On-device HDR processing with <tt>./hdr-enfuse.sh</tt></h2>
<p><strong>Important!</strong> To use <tt>enfuse</tt>, you must <a href="http://wiki.maemo.org/Easy_Debian">install Easy Debian</a> &#8211; depending on your level of technical expertise, this may be easy, or really <span style="text-decoration: underline;"><strong>really</strong></span> hard. You can still copy the raw image files out of your device and do the processing off-device (using <a title="The GNU Image Manipulation Program" href="http://www.gimp.org/">GIMP</a>, <tt>enfuse</tt> on Ubuntu, etc).</p>
<ol>
<li>Open <strong>Debian chroot</strong>.</li>
<li>At the prompt, go to the directory where you copied the files.</li>
<li>Run <tt>./hdr-enfuse.sh &lt;timestamp&gt;</tt><br />
<tt>&lt;timestamp&gt;</tt> must match the one of the sub-directory inside <tt>/home/user/MyDocs/hdr/ </tt>which contains the raw image files.</li>
<li>Wait</li>
<li>Wait</li>
<li><strong>Wait! </strong>(It can be freakishly slow some times <img src='http://invalidfile.name/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> )</li>
<li>The file <tt>&lt;timestamp&gt;.jpg</tt> will be created in <tt>/home/user/MyDocs/hdr/</tt> once processing is complete.</li>
</ol>
<h2>Updates</h2>
<p><strong>2010-04-17: </strong>Uploaded new bracketing script to fix a dependency issue with the <tt>play-sound</tt> command in <tt>bracket-manual.sh</tt> &#8211; the N900 does not come with <tt>play-sound</tt> &#8211; it comes with <tt>playsound </tt> <img src='http://invalidfile.name/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  This library is more limited, so the phone won&#8217;t beep 3 times, it will beep once.<tt></tt></p>
<p><strong>2010-04-18:</strong> Added link to <a href="http://invalidfile.name/2010/04/1borneo-n900-hdr-photography/">more  N900 HDR photos</a>. <strong>Script updated:</strong> Added fallback to <tt>dspjpegenc</tt> if the script can&#8217;t find <tt>pngenc</tt> in the list of <tt>gstreamer</tt> plugins.</p>
<p><strong>2010-04-23:</strong> Fixed <em>&#8220;dsp_thread: failed waiting for events&#8221;</em> bug when the script falls back to <tt>dspjpegenc</tt>. If this problem still shows up, let me know in the comments.</p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow: hidden;">&lt;tt&gt;</div>
 <img src="http://invalidfile.name/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=203" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://invalidfile.name/2010/04/hdr-imaging-on-the-nokia-n900/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Evolution</title>
		<link>http://invalidfile.name/2010/02/evolution/</link>
		<comments>http://invalidfile.name/2010/02/evolution/#comments</comments>
		<pubDate>Sun, 21 Feb 2010 15:33:55 +0000</pubDate>
		<dc:creator>null pointer</dc:creator>
				<category><![CDATA[Display]]></category>
		<category><![CDATA[Local bus]]></category>
		<category><![CDATA[Random]]></category>
		<category><![CDATA[art]]></category>
		<category><![CDATA[depression]]></category>
		<category><![CDATA[drawing]]></category>
		<category><![CDATA[frustration]]></category>
		<category><![CDATA[irritation]]></category>
		<category><![CDATA[prototypes]]></category>
		<category><![CDATA[sketch]]></category>
		<category><![CDATA[user interface]]></category>

		<guid isPermaLink="false">http://invalidfile.name/?p=190</guid>
		<description><![CDATA[The Frustrated Computer Guy]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="aligncenter size-full wp-image-191" style="border: 1px solid black;" title="Evolution" src="http://invalidfile.name/wp-content/uploads/2010/02/evolution-frame.gif" alt="The Fail of (Stick) Man" width="620" height="241" /></p>
<p style="text-align: center;">The Frustrated Computer Guy</p>
 <img src="http://invalidfile.name/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=190" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://invalidfile.name/2010/02/evolution/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Look: Invalidfile.Press</title>
		<link>http://invalidfile.name/2010/02/new-look-invalidfile-press/</link>
		<comments>http://invalidfile.name/2010/02/new-look-invalidfile-press/#comments</comments>
		<pubDate>Wed, 17 Feb 2010 16:12:15 +0000</pubDate>
		<dc:creator>null pointer</dc:creator>
				<category><![CDATA[Display]]></category>
		<category><![CDATA[I/O]]></category>
		<category><![CDATA[Local bus]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[frustrated computer guy]]></category>
		<category><![CDATA[retro]]></category>
		<category><![CDATA[terminal]]></category>
		<category><![CDATA[theme]]></category>
		<category><![CDATA[user interface]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://invalidfile.name/?p=153</guid>
		<description><![CDATA[Just a quick-post to introduce the Invalidfile.Press theme! It is based on Portfolio Press, a dark and minimalist WordPress theme I found linked via Smashing Magazine&#8217;s list of 100 Amazing Free WordPress Themes for 2009. It&#8217;s an old but great list whether you&#8217;re looking for design inspiration and/or wanting to download some themes to try [...]]]></description>
			<content:encoded><![CDATA[<p>Just a quick-post to introduce the <strong>Invalidfile.Press</strong> theme! It is based on <a href="http://www.blogohblog.com/wordpress-theme-portfolio-press/">Portfolio Press</a>, a dark and minimalist WordPress theme I found linked via Smashing Magazine&#8217;s list of <a href="http://www.smashingmagazine.com/2009/05/18/100-amazing-free-wordpress-themes-for-2009/">100 Amazing Free WordPress Themes for 2009</a>. It&#8217;s an old but great list whether you&#8217;re looking for design inspiration and/or wanting to download some themes to try out.</p>
<p>The original design has been tweaked a bit &#8211; sprinkled with some CSS3 goodies (<tt>border-radius</tt>! <tt>box-shadow</tt>!), a more prominent search box, menus, tag-line rotation and so on..</p>
<p>The Frustrated Computer Guy logo is inspired by the stick figures of <a title="A webcomic of romance, sarcasm, math, and language." href="http://xkcd.com/">xkcd</a>. He was drawn in <a title="open-source vector graphics editor" href="http://www.inkscape.org/">Inkscape</a>,  and touched-up with the <a title="GNU Image Manipulation Program" href="http://www.gimp.org/">GIMP</a>. Hopefully, his presence will help counter-balance all those straight lines <img src='http://invalidfile.name/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Note: The new theme is not compatible with Internet Explorer 6. The website content is readable but the logos look absolutely dreadful. You have been warned!</p>
<p><strong>ADDENDUM: </strong>Visitors using Internet Explorer 6 will now be served with the <em>cutdown edition </em>of <strong>Invalidfile.Press</strong> &#8211; basically the same theme without the nifty logos. And just to rub it in, it will also insult the user&#8217;s discerning taste in browsers <img src='http://invalidfile.name/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  Apologies to all you corporate users who are forced to use IE6 <img src='http://invalidfile.name/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
 <img src="http://invalidfile.name/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=153" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://invalidfile.name/2010/02/new-look-invalidfile-press/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Testing Blog Pings / Update Services</title>
		<link>http://invalidfile.name/2010/02/testing-blog-pings-update-services/</link>
		<comments>http://invalidfile.name/2010/02/testing-blog-pings-update-services/#comments</comments>
		<pubDate>Wed, 10 Feb 2010 03:50:46 +0000</pubDate>
		<dc:creator>null pointer</dc:creator>
				<category><![CDATA[I/O]]></category>
		<category><![CDATA[Local bus]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[blog ping testing]]></category>
		<category><![CDATA[blog update services]]></category>
		<category><![CDATA[free]]></category>
		<category><![CDATA[logging]]></category>
		<category><![CDATA[php script]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[source code]]></category>
		<category><![CDATA[technical]]></category>
		<category><![CDATA[web service]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://invalidfile.name/?p=123</guid>
		<description><![CDATA[Blogging on the WordPress engine couldn&#8217;t be easier &#8211; just write away and click that &#8220;Publish&#8221; button. Easy, until you decide to test the bits that happen after you&#8217;ve clicked that button.. Case-in-point: Recently, I found myself wondering whether WordPress was sending pings to my configured Update Services. Its pretty hard to tell since pings [...]]]></description>
			<content:encoded><![CDATA[<p>Blogging on the WordPress engine couldn&#8217;t be easier &#8211; just write away and click that &#8220;Publish&#8221; button. Easy, until you decide to test the bits that happen <strong>after</strong> you&#8217;ve clicked that button..</p>
<p><strong>Case-in-point: </strong>Recently, I found myself wondering whether WordPress was sending pings to my configured <a title="WordPress Codex" href="http://codex.wordpress.org/Update_Services">Update Services</a>. Its pretty hard to tell since pings are sent asynchronously in the background when a post is published. WordPress can then happily chug along without having to wait for all those ping operations to complete. However, it does mean that if a ping operation fails for whatever reason &#8211; it will fail silently. No errors. Zip. Na-da.</p>
<p>To be fair, there are errors, but only in the Apache/PHP logs &#8211; not the most convenient of places to look. Now, I&#8217;m paranoid and insecure &#8211; I need some reassurance that my blog is actually behaving the way I&#8217;m expecting it to. Oh, did I mention that I&#8217;m lazy as well?</p>
<p>In a nutshell, what I needed was a <strong>blog ping tester</strong>. I googled around. My conclusion: whoever gave &#8220;blog ping&#8221; its name couldn&#8217;t have made it anymore difficult to find useful content about it. The rest of the world is interested in <strong>network pings</strong>, and rightly so. On the other hand, I&#8217;m the poor sod looking for something so automated and ubiquitous (at least in the blogosphere) that nobody bothered to mention it, except when advertising the very services that I feared I wasn&#8217;t connecting to.</p>
<p>So, I was stuck with another one of those &#8220;itches&#8221; concerning this blog (the other one being the blog design, but I digress). To scratch this itch,<strong> I wrote a blog ping tester.</strong> It&#8217;s not based on XML-RPC, even though blog pings are. It&#8217;s a dumb script that receives an incoming blog ping, does some rudimentary parsing, then logs it.</p>
<p>And it works! (I think). Just add <a rel="nofollow" title="blog ping tester" href="http://null.invalidfile.name/blog-ping-test/" target="_blank">http://null.invalidfile.name/blog-ping-test/</a> into your list of sites in <strong>Settings &gt; Writing &gt; </strong><strong>Update Services</strong>, then publish something. If your blog is sending out pings properly (and this website is up), you will see your blog ping show up in the <a rel="nofollow" title="blog ping tester log" href="http://null.invalidfile.name/blog-ping-test/logs.php" target="_blank">tester log</a>.</p>
<p>Feel free to use this service to test your blog&#8217;s ping sending capability and (hopefully) regain your peace of mind.The logs are public, and the server will only keep the 50 most recent pings &#8211; it deletes the rest.</p>
<p>For those of you who want to look at the source code, it&#8217;s right <a title="blog ping tester source code" href="http://null.invalidfile.name/blog-ping-test/?showSource=1" target="_blank">here</a>.</p>
<p>I really don&#8217;t know if there is another service out there that does   the same thing. If you know of any, please post the link in the   comments.</p>
<p>The usual disclaimer: I make no guarantee of anything whatsoever with regards to the blog ping tester &#8211; it may be unfit for your purposes, it may fail occasionally and it might not make you any less cynical or nervous. YMMV.</p>
 <img src="http://invalidfile.name/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=123" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://invalidfile.name/2010/02/testing-blog-pings-update-services/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Serendipity over Coffee &amp; Tea</title>
		<link>http://invalidfile.name/2010/02/serendipity-over-coffee-tea/</link>
		<comments>http://invalidfile.name/2010/02/serendipity-over-coffee-tea/#comments</comments>
		<pubDate>Sun, 07 Feb 2010 16:36:48 +0000</pubDate>
		<dc:creator>null pointer</dc:creator>
				<category><![CDATA[I/O]]></category>
		<category><![CDATA[Random]]></category>
		<category><![CDATA[coffee]]></category>
		<category><![CDATA[people]]></category>
		<category><![CDATA[person]]></category>
		<category><![CDATA[pleasant surprise]]></category>
		<category><![CDATA[random encounter]]></category>
		<category><![CDATA[serendipity]]></category>

		<guid isPermaLink="false">http://invalidfile.name/?p=83</guid>
		<description><![CDATA[My friends and I were approached by a couple of university students today. They were doing a survey as part of their coursework. Quite a timid bunch &#8211; all girls &#8211; shyly passing out the forms to us. We weren&#8217;t the only people there &#8211; sitting nearby was an elderly gentleman engrossed with his laptop. [...]]]></description>
			<content:encoded><![CDATA[<p>My friends and I were approached by a couple of university students today. They were doing a survey as part of their coursework. Quite a timid bunch &#8211; all girls &#8211; shyly passing out the forms to us.</p>
<p>We weren&#8217;t the only people there &#8211; sitting nearby was an elderly gentleman engrossed with his laptop. I  didn&#8217;t get a good look at him, since he was wearing a straw hat.  Although I can&#8217;t quite fathom why I assumed so at that moment, I thought he was a tourist. Because of a straw hat? Maybe. Silly me..</p>
<p>Anyway, the girls were clearly apprehensive of approaching this lone man. So I quietly hinted to them that carrying out a good survey means approaching everyone regardless. I figured that even if he was unfriendly, it would do no harm and they would still learn something.</p>
<p>The gentleman&#8217;s response could not have been more unexpected..</p>
<p><span id="more-83"></span>I think at this point that the best word to describe the man&#8217;s response would be: <strong>sheer exuberance</strong>. Yes, he <strong>cheerfully</strong> and <strong>enthusiastically</strong> welcomed the girls. He <strong>joyously</strong> treated them to a round of coffee. Then he <strong>energetically</strong> filled in the survey form, all the while providing plenty of informative commentary to his rapt listeners.</p>
<p>I think that the girls were struck by his sheer warmth and friendliness, and I confess that even as a bystander, I was too.</p>
<p>By this time, I was already deep in some office work, but still caught snippets of the conversation from across the room. I found out that I was wrong about his background: <strong>he&#8217;s a local. </strong>Oops, I stand corrected on my initial assumption. Like the girls, I thought he was an &#8220;alien&#8221; too..</p>
<p>We would introduce ourselves later &#8211; so from here on, I&#8217;ll call him &#8220;D&#8221;. I won&#8217;t repeat the details of our conversation for reasons of privacy, and it&#8217;s not important anyway..</p>
<p>What I will do is marvel at the serendipity of this chance encounter &#8211; were it not for the girls making that small leap, none of us would have had the pleasure of getting to know D. I&#8217;m absolutely thankful that people like him still exist. The girls had a wonderful and memorable experience with this man whom they had almost written-off. And I hope that this becomes a cool story oft-repeated to their colleagues back in uni, about the unexpected kindness we receive from total strangers.</p>
<p>We need more people like D, and we should be more like him too &#8211;  open, hospitable, and yes, even <em>daring </em>in being friendly. The moment left me buoyant, my cynicism temporarily gone &#8211; it was absolutely refreshing.</p>
<p>Thanks D, you made my day <img src='http://invalidfile.name/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
 <img src="http://invalidfile.name/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=83" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://invalidfile.name/2010/02/serendipity-over-coffee-tea/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Subject to change</title>
		<link>http://invalidfile.name/2010/02/subject-to-change/</link>
		<comments>http://invalidfile.name/2010/02/subject-to-change/#comments</comments>
		<pubDate>Sun, 07 Feb 2010 05:33:33 +0000</pubDate>
		<dc:creator>null pointer</dc:creator>
				<category><![CDATA[I/O]]></category>
		<category><![CDATA[Local bus]]></category>
		<category><![CDATA[google code]]></category>
		<category><![CDATA[retro]]></category>
		<category><![CDATA[terminal]]></category>
		<category><![CDATA[user interface]]></category>

		<guid isPermaLink="false">http://invalidfile.name/?p=72</guid>
		<description><![CDATA[Recently, a friend of mine called this blog &#8220;ugly&#8221;. I concur with the evaluation &#8211; this theme is definitely NOT on the cutting edge of design or creativity. Moreover, I been having this naggy feeling in the back of my head that it isn&#8217;t very &#8220;useable&#8221; in the long run either.. Therefore, I will improve [...]]]></description>
			<content:encoded><![CDATA[<p>Recently, a friend of mine called this blog &#8220;ugly&#8221;. I concur with the evaluation &#8211; this theme is definitely NOT on the cutting edge of design or creativity. Moreover, I been having this naggy feeling in the back of my head that it isn&#8217;t very &#8220;useable&#8221; in the long run either..</p>
<p>Therefore, I will improve it.. somehow ;P I&#8217;m a programmer, not a designer. Its not in my nature to come up with constructs that are anything more than utilitarian. The current retro look (based on those old terminal displays) is probably an extension of that mentality.</p>
<p>Maybe I&#8217;m lucky I didn&#8217;t go <a title="RETRO" href="http://retro.kerrywebster.com/">full retro</a>. Wow.</p>
<p>Anyway, I found something called <a title="Wordpress Constructor Theme" href="http://code.google.com/p/wp-constructor/">wp-constructor</a> hosted on Google Code. From a cursory examination of the project page, it appears to consist of &#8220;utility&#8221; WordPress themes that serve as the basis for more complex designs. I&#8217;m going to give it a go when time permits during the next few days (weeks?).</p>
 <img src="http://invalidfile.name/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=72" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://invalidfile.name/2010/02/subject-to-change/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>First post! Hello world! Et Cetera, et cetera!</title>
		<link>http://invalidfile.name/2010/02/first-post-hello-world-et-cetera-et-cetera/</link>
		<comments>http://invalidfile.name/2010/02/first-post-hello-world-et-cetera-et-cetera/#comments</comments>
		<pubDate>Fri, 05 Feb 2010 10:04:03 +0000</pubDate>
		<dc:creator>null pointer</dc:creator>
				<category><![CDATA[Local bus]]></category>
		<category><![CDATA[Random]]></category>
		<category><![CDATA[begin]]></category>
		<category><![CDATA[first]]></category>
		<category><![CDATA[shoutout]]></category>
		<category><![CDATA[start]]></category>
		<category><![CDATA[time]]></category>

		<guid isPermaLink="false">http://invalidfile.name/?p=40</guid>
		<description><![CDATA[&#60;placeholder&#62; No, seriously.. .. .. In this space, in no particular order: rants, rumors, rages, reminders, rain, randomness, recipes, rice, reflections, rainbows,  ramblings, rampancy, reclusiveness, rhymes, roamings.. We start here &#60;/placeholder&#62;]]></description>
			<content:encoded><![CDATA[<p><tt>&lt;placeholder&gt;</tt> No, seriously..</p>
<p style="padding-left: 30px;">..</p>
<p style="padding-left: 30px;">..</p>
<p style="padding-left: 30px;">In this space, in no particular order: rants, rumors, rages, reminders, rain, randomness, recipes, rice, reflections, rainbows,  ramblings, rampancy, reclusiveness, rhymes, roamings..</p>
<p style="padding-left: 30px;">We start here <img src='http://invalidfile.name/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><tt>&lt;/placeholder&gt;</tt></p>
 <img src="http://invalidfile.name/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=40" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://invalidfile.name/2010/02/first-post-hello-world-et-cetera-et-cetera/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

