<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:thr='http://purl.org/syndication/thread/1.0' version='2.0'><channel><atom:id>tag:blogger.com,1999:blog-5288315435324211793</atom:id><lastBuildDate>Thu, 09 Sep 2010 03:36:06 +0000</lastBuildDate><title>Toolman in the Toyshop of the World</title><description>Giving my 2 cents on stuff that makes me feel like a kid in a toyshop again, mixed with the occasional rant on the shops problems...</description><link>http://blog.toolman.geek.nz/</link><managingEditor>noreply@blogger.com (Toolman)</managingEditor><generator>Blogger</generator><openSearch:totalResults>75</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-5288315435324211793.post-6573885809076295755</guid><pubDate>Mon, 22 Mar 2010 08:21:00 +0000</pubDate><atom:updated>2010-04-12T21:53:39.832+12:00</atom:updated><title>Infix search using a Trie data structure</title><description>I am authoring a jQuery plugin to enhance drop down selects; &lt;a href="http://code.google.com/p/ufd/"&gt;UFD: The Unobtrusive Fast-filter Drop-down&lt;/a&gt;.   Try it out easily on your own app with &lt;a href="http://code.google.com/p/ufd/wiki/Bookmarklet"&gt;the bookmarklet&lt;/a&gt;.  Be amazed. Show your friends.&lt;br /&gt;&lt;br /&gt;One of the important requirements was filtering of the the drop down options from the input.  The naive way to do this is a linear search through each list item, but this is &lt;span style="font-style: italic;"&gt;way too slow&lt;/span&gt; for large lists; the list needs to be re-filtered after every keystroke.&lt;br /&gt;&lt;br /&gt;I decided on a &lt;a href="http://en.wikipedia.org/wiki/Trie"&gt;Trie&lt;/a&gt; implementation, which gives great prefix search performance.  A Trie stores objects on a tree, constructed by slicing the key-string for each object into characters. Starting at the root, each character maps to a node - see the incoming vertex in the diagram below.&lt;br /&gt;&lt;br /&gt;Each node has a map of character to child nodes, and an optional target object.  Target objects are placed where the chain of characters maps to the objects key,  so you can easily  traverse the nodes with a key-string to find a given the target object.   The structure is a tree, but the path to a given object is similar to a linked list   of each character in the key string.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://2.bp.blogspot.com/_4QVUwM-Hlko/S6cqU7n5s7I/AAAAAAAAAKY/cOWdM1BjCrQ/s400/Trie.png" alt="trie example" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;The blue nodes are ones that have objects on them - in this example we see the words: &lt;span style="font-family:courier new;"&gt;to,tea,ted,ten,it,int,into&lt;/span&gt;.   Notice how objects  are on the leaf nodes, unless their key is a substring of  another key.&lt;br /&gt;&lt;br /&gt;It is easy to see how we can do quick prefix searching:start at the root node (which represents the empty string) and traverse the nodes, consuming each character of the key prefix string.  Once the prefix key string is consumed, that subtree has all the matches of the given key prefix.&lt;br /&gt;&lt;br /&gt;But what if we want to find all nodes that have a given key &lt;span style="font-style: italic;"&gt;in&lt;/span&gt;fix?  After failing to find a better data structure,  I decided to hack an extension to the data structure.&lt;br /&gt;&lt;br /&gt;Is there a better data structure that I should be using? Suggestions welcome. Anyway:&lt;br /&gt;&lt;br /&gt;Instead of starting at the root node, we need an array of start points. During creation I put a reference to each new node in a list.  There is one list for every unique character across the whole key set.  This means that &lt;span style="font-style: italic;"&gt;each&lt;/span&gt; list has references to all nodes of that character.  These lists of start points are called the infixRoots.&lt;br /&gt;&lt;br /&gt;Yes, some of these lists could be quite large.  For example, the "e" list for a 1000-item list may have over 1000 items.&lt;br /&gt;&lt;br /&gt;Lets look at a filtering example: lets search for the objects that match the infix key "to". &lt;br /&gt;&lt;br /&gt;&lt;img src="http://4.bp.blogspot.com/_4QVUwM-Hlko/S6cuRXchAJI/AAAAAAAAAKg/s_y3uTl8GJk/s400/Trie-t.png" alt="trie example: t" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;We start by  getting the infix list matching the start character ("t")    from  the infixRoots set.  The highlighted nodes and all of their child nodes, by definition, have "t" in their key - no surprises there.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://4.bp.blogspot.com/_4QVUwM-Hlko/S8LnTjMdoFI/AAAAAAAAAKw/_-ZYXrVdzLA/s400/Trie-to.png" alt="trie example: to" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;We next  iterate over the that list of "t" nodes, creating a new list with child nodes that match the next character; "o". Any node without a match is not added to the new list.  We  keep iteratively mapping node lists from one character to the next, until we consume the infix keys' characters.&lt;br /&gt;&lt;br /&gt;The nodes left in the final set, &lt;span style="font-style: italic;"&gt;and all of their child nodes&lt;/span&gt;, all are matches.  Iterate over each subtree and get the attached objects.  In our example above, the nodes representing &lt;span style="font-family:courier new;"&gt;to,into&lt;/span&gt; are found.  Had the key &lt;span style="font-family:courier new;"&gt;top&lt;/span&gt; been in the tree, it would also match, as it would be a child of &lt;span style="font-family:courier new;"&gt;to&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Have a look at the &lt;a href="http://ufd.googlecode.com/svn/trunk/src/jquery.ui.ufd.js"&gt;javascript implementation for UFD&lt;/a&gt;, the InfixTrie is a self-contained prototype inside the source near the bottom.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5288315435324211793-6573885809076295755?l=blog.toolman.geek.nz' alt='' /&gt;&lt;/div&gt;</description><link>http://blog.toolman.geek.nz/2010/03/infix-search-using-trie-data-structure.html</link><author>noreply@blogger.com (Toolman)</author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_4QVUwM-Hlko/S6cqU7n5s7I/AAAAAAAAAKY/cOWdM1BjCrQ/s72-c/Trie.png' height='72' width='72'/><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-5288315435324211793.post-8903920563842947373</guid><pubDate>Tue, 02 Mar 2010 07:47:00 +0000</pubDate><atom:updated>2010-03-02T20:48:23.941+13:00</atom:updated><title>At last: a proper multi booting OSX/Win7/Linux box lives!</title><description>I have nutted out the final few problems with my multi-boot drama.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;(hd0): MBR - grub2, win7, Liunx&lt;/li&gt;&lt;li&gt; (hd1): dataz&lt;/li&gt;&lt;li&gt;(hd2): bootable OSX 10.6 with GPT partition, Chameleon booter etc.&lt;/li&gt;&lt;/ul&gt;I can point my bios to hd2 and OSX boots, but it took ages to get grub2 to boot my OSX disc (hd2).&amp;nbsp; Ended up being real simple; in /etc/grub.d/40_custom :&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;menuentry "Mac OSX" {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; set root=(hd2)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; chainloader +1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;and then a &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;sudo update-grub&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;Yay, it boots.&amp;nbsp; My second major drama was with macFUSE and fuse-ext2; it doesn't work with the 64-bit kernel.&amp;nbsp; Here is the console output:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;toolmans-Mac-Pro:Volumes toolman$&amp;nbsp;sudo fuse-ext2 /dev/disk2s1 /Volumes/Untitled\ 30&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;fuse-ext2: version:'0.0.7', fuse_version:'27' [main (../../fuse-ext2/fuse-ext2.c:324)]&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;fuse-ext2: enter [do_probe (../../fuse-ext2/do_probe.c:30)]&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;fuse-ext2: leave [do_probe (../../fuse-ext2/do_probe.c:55)]&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;Mounting /dev/disk2s1 Read-Only.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;Use 'force' or 'rw+' options to enable Read-Write mode&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;fuse-ext2: opts.device: /dev/disk2s1 [main (../../fuse-ext2/fuse-ext2.c:351)]&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;fuse-ext2: opts.mnt_point: /Volumes/Untitled 30 [main (../../fuse-ext2/fuse-ext2.c:352)]&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;fuse-ext2: opts.volname: &amp;nbsp;[main (../../fuse-ext2/fuse-ext2.c:353)]&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;fuse-ext2: opts.options: (null) [main (../../fuse-ext2/fuse-ext2.c:354)]&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;fuse-ext2: parsed_options: allow_other,local,noappledouble,ro,fsname=/dev/disk2s1,fstypename=ext2,volname=disk2s1 [main (../../fuse-ext2/fuse-ext2.c:355)]&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;fuse-ext2: mounting read-only [main (../../fuse-ext2/fuse-ext2.c:371)]&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="background-color: #b6d7a8;"&gt;/Library/Filesystems/fusefs.fs/Support/fusefs.kext failed to load - (libkern/kext) link&lt;/span&gt; error; check the system/kernel logs for errors or try kextutil(8).&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;the MacFUSE file system is not available (71)&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;toolmans-Mac-Pro:Volumes toolman$&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;The highlighted line is the clincher; the 32-bit kext won't work with 64 bit kernel.&amp;nbsp; thankfully, I can run 64 bit apps on the 32-bit kernel anyway :)&lt;br /&gt;&lt;br /&gt;It took me ages to figure out that chameleon uses &lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;/Extra/com.apple.Boot.plist&lt;/div&gt;&lt;br /&gt;not the default kernel boot file !&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;/Library/Preferences/SystemConfiguration/com.apple.Boot.plist&lt;/div&gt;&lt;br /&gt;By editing the &lt;i&gt;correct&lt;/i&gt; file, and updating the kernel flags&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;key&gt;Kernel Flags&lt;/key&gt;&lt;br /&gt;&lt;string&gt;-x32&lt;/string&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;And now I have grub2 booting to any OS I want, with my ext3 mounting in all OSes :D&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5288315435324211793-8903920563842947373?l=blog.toolman.geek.nz' alt='' /&gt;&lt;/div&gt;</description><link>http://blog.toolman.geek.nz/2010/03/at-last-proper-multi-booting.html</link><author>noreply@blogger.com (Toolman)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-5288315435324211793.post-9150367818578113846</guid><pubDate>Fri, 11 Dec 2009 20:11:00 +0000</pubDate><atom:updated>2009-12-12T09:11:50.197+13:00</atom:updated><title>Annoying iE6 bug of the day:</title><description>If you add a border on any edge of a &amp;lt; button ..&amp;gt; element, iE6 adds a second, inner border/padding, making your background image offset and the background color to show through!&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This link describes it and a few side step options:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://justaddwater.dk/2008/11/05/ie-css-bug-background-image-gap-to-border/"&gt;http://justaddwater.dk/2008/11/05/ie-css-bug-background-image-gap-to-border/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;For my purposes, the easiset thing to do was not have a border, and have the parent supply a pseudo border using the background color.&amp;nbsp; If you find a way to stop iE6 doing this, please let me know!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5288315435324211793-9150367818578113846?l=blog.toolman.geek.nz' alt='' /&gt;&lt;/div&gt;</description><link>http://blog.toolman.geek.nz/2009/12/annoying-ie6-bug-of-day.html</link><author>noreply@blogger.com (Toolman)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-5288315435324211793.post-1734641379361405986</guid><pubDate>Wed, 28 Oct 2009 08:48:00 +0000</pubDate><atom:updated>2009-10-28T22:38:02.500+13:00</atom:updated><title>YESS DVB-T9900HD</title><description>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_4QVUwM-Hlko/SugJHTfNUKI/AAAAAAAAAJw/DbNkgdQPCRE/s1600-h/photo.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://1.bp.blogspot.com/_4QVUwM-Hlko/SugJHTfNUKI/AAAAAAAAAJw/DbNkgdQPCRE/s400/photo.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5397574174498443426" /&gt;&lt;/a&gt;&lt;br /&gt;So I decided to get a Freeview decoder, and I ended getting a HD (== terrestrial not satellite) decoder even though I don't yet have a HD TV.  I got this YESS DVB-T9900HD is a single tuner unit with a HDMI port and the promise of PVR functionality via the USB port.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It looks a little ghetto with a USB port at the front, but I care not for asthetics anyway. Anyone who remembers my milk crate constructions can attest to that...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The freeview signal is super strong where I am in west AK, and it gets a glitchy signal with no aerial at all.  My UHF aerial is well aligned so it gives 100% signal, and  the programme guide comes through fine.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;was skeptical that the PVR functionality of the unit would work via the USB  port, but it does.   Unfortunately, the PVR integration is basic and lacks in a number of areas.  But its ok; you can pause and rewind TV, schedule and record TV as advertised.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I'm real  happy for the price of the unit, but here is the laundry list of what is a bit shit about this unit for anyone else looking for an uber cheap PVR:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;No integration between freeview EPG listings and the recording feature! I hope other units can do this?  Scheduling a recording is like setting a VHS; this channel from then till then, click.&lt;/li&gt;&lt;li&gt;Single tuner means it can only buffer the channel you are watching.  This is obvious, but a good PVR needs 2+ tuners.&lt;/li&gt;&lt;li&gt;I haven't checked, but I expect that the recording is in standard definition irrespective of the HD-ness.  I haven't confirmed this one, anyone want to give me a HD screen?  Actually I havent even checked the HD signal is HD when "realtime"!&lt;/li&gt;&lt;li&gt;Seems to use the disk regularly, not a great buffering technique.  For this reason, I don't leave the PVR live buffering 24/7.  Use of flash or solid state might dodge that bullet.&lt;/li&gt;&lt;li&gt; Seems to not like playing too close to realtime, needs 5+ second buffer, else it glitches and drops audio.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;br /&gt;So the PVR is basically like a VHS, except you can do poor-mans timeshifting: start watching the recording before its finished.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5288315435324211793-1734641379361405986?l=blog.toolman.geek.nz' alt='' /&gt;&lt;/div&gt;</description><link>http://blog.toolman.geek.nz/2009/10/yess-dvb-t9900hd.html</link><author>noreply@blogger.com (Toolman)</author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_4QVUwM-Hlko/SugJHTfNUKI/AAAAAAAAAJw/DbNkgdQPCRE/s72-c/photo.jpg' height='72' width='72'/><thr:total>3</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-5288315435324211793.post-1488446869689828417</guid><pubDate>Fri, 16 Oct 2009 23:36:00 +0000</pubDate><atom:updated>2010-04-29T15:50:52.268+12:00</atom:updated><title>The problem of evil:</title><description>Reading a great &lt;a href="http://www.ebonmusings.org/atheism/allpossibleworlds.html"&gt;essay&lt;/a&gt; on: &lt;a href="http://en.wikipedia.org/wiki/Problem_of_evil"&gt;The problem of Evil&lt;/a&gt;.  Here is a quote from it:&lt;a href="http://en.wikipedia.org/wiki/Problem_of_evil"&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="display: block;" id="formatbar_Buttons"&gt;&lt;span class=" on down" style="display: block;" id="formatbar_CreateLink" title="Link" onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 8);ButtonMouseDown(this);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;p&gt; Assumption (1): God exists.&lt;br /&gt;      Assumption (1a): God is all-knowing.&lt;br /&gt;      Assumption (1b): God is all-powerful.&lt;br /&gt;      Assumption (1c): God is perfectly loving.&lt;br /&gt;      Assumption (1d): Any being that did not possess all three of the above properties would not be God.&lt;br /&gt;Premise (2): Evil exists.&lt;br /&gt;Premise (3): An all-knowing being would be aware of the existence of evil.&lt;br /&gt;Premise (4): An all-powerful being would be able to eliminate evil.&lt;br /&gt;Premise (5): A perfectly loving being would desire to eliminate evil.&lt;br /&gt;Conclusion (6): Evil does not exist. (from (1),(3),(4),(5))&lt;br /&gt;Contradiction: But evil does exist. (from (2))&lt;br /&gt;Conclusion (7): There is no being that is all-knowing, all-powerful, and perfectly loving. (from (2),(3),(4),(5))&lt;br /&gt;Conclusion (8): God does not exist. (from (7),(1d)) &lt;/p&gt;&lt;p&gt; The argument's logic is ironclad, and its simple but far-reaching conclusion is that the existence of evil in the world disproves the existence of an omniscient, omnipotent, perfectly loving god. The only way to refute the problem of evil without surrendering the assumption that such a god exists is to deny one of its premises. &lt;/p&gt;&lt;/blockquote&gt;&lt;br /&gt;I like this argument as it doesn't completely deny God; but it relegates him to (in my view):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A God that isn't &lt;span style="font-style: italic;"&gt;Perfectly Loving&lt;/span&gt;; or&lt;br /&gt;&lt;/li&gt;&lt;li&gt;A God that doesn't&lt;span style="font-style: italic;"&gt; desire to eliminate evil.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;To remove any of the other attributes of God is unacceptable (all-knowing, all-powerful), so he must either not exist, or be a bit of a bastard.  So lets talk about your beliefs in bastard Gods only - the benevolent ones seem unlikely.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5288315435324211793-1488446869689828417?l=blog.toolman.geek.nz' alt='' /&gt;&lt;/div&gt;</description><link>http://blog.toolman.geek.nz/2009/10/problem-of-evil.html</link><author>noreply@blogger.com (Toolman)</author><thr:total>5</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-5288315435324211793.post-6886403278426639778</guid><pubDate>Fri, 04 Sep 2009 05:59:00 +0000</pubDate><atom:updated>2009-09-04T18:36:30.099+12:00</atom:updated><title>Negative signal-to-noise ratios</title><description>I'm reading an awesome technical book at the moment: &lt;a href="http://www.amazon.com/Mastering-Audio-Second-art-science/dp/0240808371/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1252045095&amp;amp;sr=8-1"&gt;Bob Katz, Mastering Audio&lt;/a&gt;.  This guy is a audio master - read it! One thing thats really tripping me at the moment is this part.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/8086033@N04/3886600220/" title="dither (by t1mthet00lman)"&gt;&lt;img src="http://farm3.static.flickr.com/2606/3886600220_13e71f7f61_o.jpg" title="dither (by t1mthet00lman)" alt="dither (by t1mthet00lman)" height="577" width="320" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;We can hear signals &lt;span style="font-style: italic;"&gt;below&lt;/span&gt; the noise floor?  It seems like the LSB (least significant bit) represents the &lt;span style="font-style: italic;"&gt;smallest&lt;/span&gt; variation in amplitude available digitally, so where is that signal actually coded and stored? My understanding of the explanation (not shown) is that it exists in the time domain as a modulation on the LSB.&lt;br /&gt;&lt;br /&gt;Thats some tricksy stuff right there!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5288315435324211793-6886403278426639778?l=blog.toolman.geek.nz' alt='' /&gt;&lt;/div&gt;</description><link>http://blog.toolman.geek.nz/2009/09/negative-signal-to-noise-ratios.html</link><author>noreply@blogger.com (Toolman)</author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_4QVUwM-Hlko/SqCyjrE2AuI/AAAAAAAAAJA/dW1SMJ3XxGU/s72-c/dither.jpg' height='72' width='72'/><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-5288315435324211793.post-872387391239900913</guid><pubDate>Mon, 31 Aug 2009 11:16:00 +0000</pubDate><atom:updated>2009-08-31T23:29:11.856+12:00</atom:updated><title>iCompass</title><description>&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/yRnn7_u5uzQ&amp;hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/yRnn7_u5uzQ&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;The compass isn't perfect, but its ok.&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/vPdy6Ph0d0A&amp;hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/vPdy6Ph0d0A&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;I wonder what the Android sensor is like in comparison.  Come on internet, send me a video of your android doing this.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5288315435324211793-872387391239900913?l=blog.toolman.geek.nz' alt='' /&gt;&lt;/div&gt;</description><link>http://blog.toolman.geek.nz/2009/08/icompass.html</link><author>noreply@blogger.com (Toolman)</author><thr:total>2</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-5288315435324211793.post-1939627464054639751</guid><pubDate>Wed, 12 Aug 2009 10:24:00 +0000</pubDate><atom:updated>2009-08-12T22:45:25.599+12:00</atom:updated><title>Invisible Guard for iPhone 3GS</title><description>&lt;p&gt;So now I have a shiny new iPhone, I have a few important things to do to it.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.flickr.com/photos/8086033@N04/3813716783/" target="_blank"&gt;&lt;img src="http://farm3.static.flickr.com/2539/3813716783_47fbb8d1c0.jpg" alt="sany1833" /&gt;&lt;/a&gt;&lt;/p&gt;Extend its functionality..&lt;br /&gt;&lt;p&gt;&lt;a href="http://www.flickr.com/photos/8086033@N04/3814526864/" target="_blank"&gt;&lt;img src="http://farm4.static.flickr.com/3183/3814526864_582230ce67.jpg" alt="sany1836" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;and install a cover.  I got an&lt;a href="http://www.invisibleguard.co.nz/index.php?main_page=product_info&amp;amp;products_id=10&amp;amp;zenid=44c880dbaa94c51fcf855afb066c9182"&gt; invisible guard&lt;/a&gt;, a kiwi-made transparent cover.&lt;br /&gt;&lt;br /&gt;It is installed with some soapy water and lots of patience. I applied and smooshed for about an hour, but it ended up fitting very well.  The corners took a while, but eventually I got them all in place.&lt;br /&gt;&lt;p&gt;&lt;a href="http://www.flickr.com/photos/8086033@N04/3813715919/" target="_blank"&gt;&lt;img src="http://farm3.static.flickr.com/2560/3813715919_98511838a3.jpg" alt="invisibleGuardVs2G" /&gt;&lt;/a&gt;&lt;/p&gt;2G on the left, 3GS + invisible guard on the right. The plastic has a slight orange-peel look to it, but it doesn't affect the picture quality.&lt;br /&gt;&lt;p&gt;&lt;a href="http://www.flickr.com/photos/8086033@N04/3813716055/" target="_blank"&gt;&lt;img src="http://farm3.static.flickr.com/2670/3813716055_d8f91f4148.jpg" alt="invisibleGuardVs2G-off" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;  It does feel quite different to the glass, slightly stickier.  But it is still great to use.  The extra grip on the back is a welcome addition.  Even the home button has a guard, which fit &lt;span style="font-style: italic;"&gt;perfectly&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/8086033@N04/3814525620/" target="_blank"&gt;&lt;img src="http://farm4.static.flickr.com/3546/3814525620_1dd3db674e.jpg" alt="invisibleGuardTLCorner" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;Here you can see  how the shield covers most of the corner, and how tight and accurate the cover is. Check around the headphone socket and the volume keys.&lt;br /&gt;&lt;/p&gt; &lt;a href="http://www.flickr.com/photos/8086033@N04/3813717447/" target="_blank"&gt;&lt;img src="http://farm4.static.flickr.com/3560/3813717447_86fa38665c.jpg" alt="sany1844" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Another shot of the corner.  Also note the one blemish that I decided I didn't care about: the chrome bezel has a flake of missing chrome.  It looks like a manufacturing defect, but is too small for me to care.&lt;br /&gt;&lt;p&gt;&lt;a href="http://www.flickr.com/photos/8086033@N04/3813715779/" target="_blank"&gt;&lt;img src="http://farm3.static.flickr.com/2454/3813715779_7616fd3b3e.jpg" alt="invisibleGuardTLCornerBack" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;This is how the rounded back is handled: a slit up each corner.&lt;br /&gt;&lt;p&gt;&lt;a href="http://www.flickr.com/photos/8086033@N04/3814527680/" target="_blank"&gt;&lt;img src="http://farm3.static.flickr.com/2545/3814527680_a5b560deb0.jpg" alt="sany1849" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;The back looks nice, like its been duraseal-ed.  The guard can be peeled off without damaging the phone.  So far, I'm really happy with how it come out, its hardly visible at all, and no bubbles!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5288315435324211793-1939627464054639751?l=blog.toolman.geek.nz' alt='' /&gt;&lt;/div&gt;</description><link>http://blog.toolman.geek.nz/2009/08/invisible-guard-for-iphone-3gs.html</link><author>noreply@blogger.com (Toolman)</author><thr:total>10</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-5288315435324211793.post-5349421814724804710</guid><pubDate>Tue, 11 Aug 2009 00:36:00 +0000</pubDate><atom:updated>2009-08-11T12:37:56.040+12:00</atom:updated><title>Is that an Iceberg?</title><description>From &lt;a href="http://www.stuff.co.nz/national/2739551/Is-that-an-iceberg-in-Wellington-Harbour/"&gt;http://www.stuff.co.nz/national/2739551/Is-that-an-iceberg-in-Wellington-Harbour/&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;img src="http://static.stuff.co.nz/1249944920/929/2739929.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt; A fake 'iceberg' in Wellington's Oriental Bay this morning was made by special effects wizards Weta for a climate change stunt. &lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5288315435324211793-5349421814724804710?l=blog.toolman.geek.nz' alt='' /&gt;&lt;/div&gt;</description><link>http://blog.toolman.geek.nz/2009/08/is-that-iceberg.html</link><author>noreply@blogger.com (Toolman)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-5288315435324211793.post-8993581473434095091</guid><pubDate>Wed, 05 Aug 2009 10:21:00 +0000</pubDate><atom:updated>2009-08-12T22:21:39.204+12:00</atom:updated><title>iPicky</title><description>&lt;p&gt;So I got a brand new iPhone 3GS and it isn't up to Apples' quality control.  Its' silver bevel surrounding the screen sits proud of the glass in the top left corner and runs half the left edge, and a third of the top.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The chrome is slightly proud on the bevel on the outer edge of the same corner, but not very much.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;update:&lt;/b&gt; Apple happily replaced the unit, and my new one is flush and nice...&lt;br /&gt;&lt;br /&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/TJKKtGB6-SE&amp;amp;hl=en&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/TJKKtGB6-SE&amp;amp;hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="344" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5288315435324211793-8993581473434095091?l=blog.toolman.geek.nz' alt='' /&gt;&lt;/div&gt;</description><link>http://blog.toolman.geek.nz/2009/08/ipicky.html</link><author>noreply@blogger.com (Toolman)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-5288315435324211793.post-5246366022352445142</guid><pubDate>Wed, 22 Jul 2009 10:03:00 +0000</pubDate><atom:updated>2009-07-22T22:42:33.955+12:00</atom:updated><title>How I lowered my speakers noise floor by 6db</title><description>As many of you know, I use &lt;a href="http://www.behringer.com/EN/Products/B2031A.aspx"&gt;Behringer B2031A&lt;/a&gt; amplified speakers plugged directly to my soundcards' line level output, with software based volume control and a custom cable with a 3.5mm headphone  to 2 x 1/4" jack cable.&lt;br /&gt;&lt;br /&gt;&lt;img style="width: 160px; height: 232px;" src="http://www.behringer.com/EN/images/products/B2031A_P0252_Right_web.png" /&gt;&lt;br /&gt;&lt;br /&gt;They sound completely awesome I love this set up &lt;span style="font-style: italic;"&gt;so much&lt;/span&gt;.  The only little thing that bugged me was that I can hear the noise floor of my &lt;a href="http://en.wikipedia.org/wiki/Sound_Blaster_Live%21"&gt;soundcard&lt;/a&gt; at louder slider settings.  If I turned them up for quiet material or for stuff with large dynamic headroom the white noise was &lt;span style="font-style: italic;"&gt;just&lt;/span&gt; perceptible.&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://en.wikipedia.org/wiki/Sound_Blaster_Live%21"&gt;SB Live&lt;/a&gt; wiki page has an uncited note that "the original SB Live! had a very low noise floor for its time". Doh!  I considered getting a better soundcard with balanced outputs to lower the  floor, but meh - money, linux support etc. just for something that is so minor and uncommon.&lt;br /&gt;&lt;br /&gt;In practice,  I usually  stay within something like 2-10%  of max signal level from my soundcard on the speakers, and the noise floor is far below hearing level.&lt;br /&gt;&lt;br /&gt;I recently realised that I had the input trim on each speaker central at 0db, but they could go to -6db.  By setting both speakers to this, I am forced to have a higher output signal from the soundcard to compensate.  This makes the soundcards' signal to noise ratio much better (by 6db!) for any given actual listening level.  Of course, my 100% setting is also 6db quieter, but I dare anyone to site in front of these at 100%!&lt;br /&gt;&lt;br /&gt;So now I probably use something like the 20-40% signal level, with plenty in reserve should I wish to wind something up loud.  This is a much more sensible use of the range, as I was right at the bottom 1/4 of the mixer sliders most of the time.  I can't hear the sound floor, even with everything at 100%/max/11 !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5288315435324211793-5246366022352445142?l=blog.toolman.geek.nz' alt='' /&gt;&lt;/div&gt;</description><link>http://blog.toolman.geek.nz/2009/07/how-i-lowered-my-speakers-noise-floor.html</link><author>noreply@blogger.com (Toolman)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-5288315435324211793.post-5528839760370223930</guid><pubDate>Wed, 08 Jul 2009 05:27:00 +0000</pubDate><atom:updated>2009-07-08T17:29:16.161+12:00</atom:updated><title>Google Reader keys:</title><description>I  have been using a few of them, but OMG in list view, the spacebar is awesome.  its a page down, and at the bottom of the post, space also auto jumps to the next post.  Can skim view high volume sites the best way.&lt;br /&gt;&lt;br /&gt;http://www.google.com/help/reader/faq.html#shortcuts&lt;br /&gt;&lt;br /&gt;Keys are so much quicker.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5288315435324211793-5528839760370223930?l=blog.toolman.geek.nz' alt='' /&gt;&lt;/div&gt;</description><link>http://blog.toolman.geek.nz/2009/07/google-reader-keys.html</link><author>noreply@blogger.com (Toolman)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-5288315435324211793.post-2414927654595219661</guid><pubDate>Thu, 18 Jun 2009 05:23:00 +0000</pubDate><atom:updated>2009-06-18T19:06:45.788+12:00</atom:updated><title>Travel company offers free three-month holiday to promote NZ</title><description>Check this job out: &lt;a href="http://www.nzherald.co.nz/new-zealand-travel/news/article.cfm?c_id=1500882&amp;amp;objectid=10577599"&gt;http://www.nzherald.co.nz/new-zealand-travel/news/article.cfm?c_id=1500882&amp;amp;objectid=10577599&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;p&gt;"We're a relatively new company ... and as you can imagine we've had we've had quite a few suppliers jump on board in a relatively short period of time," she said.&lt;/p&gt;&lt;p&gt;"We had the option of either taking time out of what we're doing now and going and travelling and meeting everybody ourselves, or offering this opportunity to somebody who would really enjoy it and have a lot of fun with it."&lt;/p&gt;&lt;p&gt;The winning candidate will be provided with free accommodation, transport, a daily food allowance and some spending money in return for blogging about their experiences.&lt;/p&gt;&lt;p&gt;"But there's no set wage as such," Forsyth added. "It's just a free trip."&lt;/p&gt;&lt;/blockquote&gt;&lt;br /&gt;Pity I have just got a job, that sounds like fun!  Thanks Preeti for the link.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5288315435324211793-2414927654595219661?l=blog.toolman.geek.nz' alt='' /&gt;&lt;/div&gt;</description><link>http://blog.toolman.geek.nz/2009/06/travel-company-offers-free-three-month.html</link><author>noreply@blogger.com (Toolman)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-5288315435324211793.post-805112745224380105</guid><pubDate>Thu, 18 Jun 2009 02:25:00 +0000</pubDate><atom:updated>2009-06-18T17:35:15.404+12:00</atom:updated><title>Toolman is employed</title><description>Hey all: Just a note that I am back to making Java web applications for &lt;span style="font-weight: bold;"&gt;VTech&lt;/span&gt; (not Honda VTEC :) )&lt;span style="font-weight: bold;"&gt;,&lt;/span&gt; the inhouse development team at &lt;a href="http://www.vero.co.nz"&gt;Vero Insurance&lt;/a&gt;.   Really enjoying the job, just completed my first week and enjoying engaging the brain a little more.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5288315435324211793-805112745224380105?l=blog.toolman.geek.nz' alt='' /&gt;&lt;/div&gt;</description><link>http://blog.toolman.geek.nz/2009/06/toolman-is-employed.html</link><author>noreply@blogger.com (Toolman)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-5288315435324211793.post-8122694966902489218</guid><pubDate>Fri, 12 Jun 2009 11:13:00 +0000</pubDate><atom:updated>2009-06-12T23:18:11.358+12:00</atom:updated><title>GIF vs JIF</title><description>From &lt;a href="http://www.olsenhome.com/gif/"&gt;http://www.olsenhome.com/gif/&lt;/a&gt;:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="color: rgb(0, 0, 0);font-family:Arial,Helvetica;" &gt;You disagree? Hey, I'm just quoting the &lt;i&gt;inventors&lt;/i&gt; of the format. Here's the evidence:  &lt;/span&gt;&lt;ul&gt;&lt;span style="color: rgb(0, 0, 0);font-family:Arial,Helvetica;" &gt; &lt;li&gt;CompuServe used to distribute a graphics display program called &lt;i&gt;CompuShow&lt;/i&gt;.   In the documentation for version 8.33 in the FAQ section, it states:   &lt;p&gt;   &lt;span style="color: rgb(0, 0, 153);font-family:Courier New,Courier;" &gt;   The GIF (Graphics Interchange Format), pronounced "JIF", was designed by CompuServe and the official   specification released in June of 1987.   &lt;/span&gt;   &lt;/p&gt;&lt;p&gt;   There, straight from the inventors of the format.   &lt;/p&gt;&lt;/li&gt;&lt;/span&gt;&lt;/ul&gt;&lt;/blockquote&gt;&lt;br /&gt;So nerds, GIF or JIF?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5288315435324211793-8122694966902489218?l=blog.toolman.geek.nz' alt='' /&gt;&lt;/div&gt;</description><link>http://blog.toolman.geek.nz/2009/06/gif-vs-jif.html</link><author>noreply@blogger.com (Toolman)</author><thr:total>2</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-5288315435324211793.post-7546741322950233616</guid><pubDate>Thu, 30 Apr 2009 06:14:00 +0000</pubDate><atom:updated>2009-04-30T18:32:28.099+12:00</atom:updated><title>Muppets album conversions:</title><description>This is a project that I was doing prior to traveling.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/8086033@N04/3487200823/" title="Picture 012 (by t1mthet00lman)"&gt;&lt;img src="http://farm4.static.flickr.com/3657/3487200823_4b60d6b353.jpg" title="Picture 012 (by t1mthet00lman)" alt="Picture 012 (by t1mthet00lman)" width="500" height="375" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I spent months painfully converting these albums to CD. These albums got heavy airtime in my youth...&lt;br /&gt;&lt;br /&gt; I carefully recorded the vinyl, then carefully cleaned the recordings by hand.  Adobe Audition is the best wave editor I have ever used, and the results are fantastic.  The finals still have the full warmth of the original vinyl, and no major pops or clicks.  This took an unbelievable length of time, I ended up redoing the process multiple times as I learned better techniques. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/8086033@N04/3487200995/" title="sany1711 (by t1mthet00lman)"&gt;&lt;img src="http://farm4.static.flickr.com/3309/3487200995_b8d3ab571b.jpg" title="sany1711 (by t1mthet00lman)" alt="sany1711 (by t1mthet00lman)" width="500" height="374" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I also scanned and processed all the cover artwork for the CD replicas.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/8086033@N04/3487201733/" title="sany1715 (by t1mthet00lman)"&gt;&lt;img src="http://farm4.static.flickr.com/3397/3487201733_0d10dcc23d.jpg" title="sany1715 (by t1mthet00lman)" alt="sany1715 (by t1mthet00lman)" width="374" height="500" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The discs are printed on directly (no stickers!), and the art is a  mock of the original vinyls' center label.  I had to change the track numbers (no side B!) and shoehorn both sides listings onto a single side.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/8086033@N04/3487202033/" title="sany1717 (by t1mthet00lman)"&gt;&lt;img src="http://farm4.static.flickr.com/3602/3487202033_2dcae25925.jpg" title="sany1717 (by t1mthet00lman)" alt="sany1717 (by t1mthet00lman)" width="500" height="374" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The sleeves are complete, with the inner and outer artwork just like the original  vinyl sleeve.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/8086033@N04/3487201221/" title="sany1712 (by t1mthet00lman)"&gt;&lt;img src="http://farm4.static.flickr.com/3350/3487201221_71ea99f07c.jpg" title="sany1712 (by t1mthet00lman)" alt="sany1712 (by t1mthet00lman)" width="500" height="374" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Again, the track listings were subtly tweaked to reflect the single side and track numbers.  Also, the back of a jewel case is not square (but the front sleeve is) so the rear artwork had to be cropped carefully to look correct.  Compare left and right above.&lt;br /&gt;&lt;br /&gt;In any case, really happy with how these turned out.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5288315435324211793-7546741322950233616?l=blog.toolman.geek.nz' alt='' /&gt;&lt;/div&gt;</description><link>http://blog.toolman.geek.nz/2009/04/muppets-album-conversions.html</link><author>noreply@blogger.com (Toolman)</author><thr:total>6</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-5288315435324211793.post-2292842583567325613</guid><pubDate>Thu, 30 Apr 2009 04:29:00 +0000</pubDate><atom:updated>2009-04-30T18:10:42.681+12:00</atom:updated><title>below the 42:</title><description>My  mum gave me an excellent booze tip recently:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/8086033@N04/3487206209/" title="sany1698 (by t1mthet00lman)"&gt;&lt;img src="http://farm4.static.flickr.com/3387/3487206209_944f681d21.jpg" title="sany1698 (by t1mthet00lman)" alt="sany1698 (by t1mthet00lman)" width="374" height="500" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Stil vodka: this nice vodka comes from none other then 42 Below.  Its their off-label, and is cheaper then 42 Below.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/8086033@N04/3487206021/" title="sany1696 (by t1mthet00lman)"&gt;&lt;img src="http://farm4.static.flickr.com/3553/3487206021_9e17060ec8.jpg" title="sany1696 (by t1mthet00lman)" alt="sany1696 (by t1mthet00lman)" width="374" height="500" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Still tastes pretty damn nice to me.  Zing!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5288315435324211793-2292842583567325613?l=blog.toolman.geek.nz' alt='' /&gt;&lt;/div&gt;</description><link>http://blog.toolman.geek.nz/2009/04/below-42.html</link><author>noreply@blogger.com (Toolman)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-5288315435324211793.post-9019178534890777038</guid><pubDate>Mon, 27 Apr 2009 05:03:00 +0000</pubDate><atom:updated>2009-04-30T18:36:47.166+12:00</atom:updated><title>Recovering the mini</title><description>Heya all, me and Princess flew down to Welly last weekend.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/8086033@N04/3478919464/" title="IMG_0737 (by t1mthet00lman)"&gt;&lt;img src="http://farm4.static.flickr.com/3361/3478919464_033c094b7a.jpg" title="IMG_0737 (by t1mthet00lman)" alt="IMG_0737 (by t1mthet00lman)" width="500" height="375" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;My pal Andre got married, and we caught up with lots of you fullas down there :)&lt;br /&gt;&lt;br /&gt;With Princess hanging out with Loulou, Nick and I  went to unpack  the mini and get it on to the road.  The mini was stored well, and was straightforward to get on the road.  All that was needed was a new battery and a damned good clean.  So shes is now legit: WOF, rego, insurance.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/8086033@N04/3478112433/" title="IMG_0742 (by t1mthet00lman)"&gt;&lt;img src="http://farm4.static.flickr.com/3218/3478112433_fd73b1cf5f.jpg" title="IMG_0742 (by t1mthet00lman)" alt="IMG_0742 (by t1mthet00lman)" width="375" height="500" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;When taking out the sub box to replace the battery, I found that a mousey had setup house in my sub box - he chewed the inside of the seat sponge!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/8086033@N04/3478111789/" title="IMG_0740 (by t1mthet00lman)"&gt;&lt;img src="http://farm4.static.flickr.com/3342/3478111789_4bcde95bb9.jpg" title="IMG_0740 (by t1mthet00lman)" alt="IMG_0740 (by t1mthet00lman)" width="375" height="500" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The bastard also gnawed a hole in my sub and dragged lots of crud in there!  I found him dead where you see him, the rubber and foam must have killed him.  I cleaned the sub box and did a ghetto duct tape fix.  Temporary, but it'll do.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/8086033@N04/3487882530/" title="Picture 021 (by t1mthet00lman)"&gt;&lt;img src="http://farm4.static.flickr.com/3660/3487882530_5d23924455.jpg" title="Picture 021 (by t1mthet00lman)" alt="Picture 021 (by t1mthet00lman)" width="375" height="500" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I headed up the country.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/8086033@N04/3478119341/" title="IMG_0764 (by t1mthet00lman)"&gt;&lt;img src="http://farm4.static.flickr.com/3299/3478119341_3c5a6c5069.jpg" title="IMG_0764 (by t1mthet00lman)" alt="IMG_0764 (by t1mthet00lman)" width="500" height="375" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;7 hours of nonstop mini driving was real noisey! I did get a great day for cruising.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/8086033@N04/3478118351/" title="IMG_0760 (by t1mthet00lman)"&gt;&lt;img src="http://farm4.static.flickr.com/3403/3478118351_df4a462394.jpg" title="IMG_0760 (by t1mthet00lman)" alt="IMG_0760 (by t1mthet00lman)" width="375" height="500" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The mountain from afar...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/8086033@N04/3478928480/" title="IMG_0766 (by t1mthet00lman)"&gt;&lt;img src="http://farm4.static.flickr.com/3305/3478928480_1f0ec6b117.jpg" title="IMG_0766 (by t1mthet00lman)" alt="IMG_0766 (by t1mthet00lman)" width="500" height="375" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;..and up close - mint weather!  Thankfully, no breakdowns or weird noises.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5288315435324211793-9019178534890777038?l=blog.toolman.geek.nz' alt='' /&gt;&lt;/div&gt;</description><link>http://blog.toolman.geek.nz/2009/04/recovering-mini.html</link><author>noreply@blogger.com (Toolman)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-5288315435324211793.post-6309418704515875069</guid><pubDate>Sun, 12 Apr 2009 01:59:00 +0000</pubDate><atom:updated>2009-04-12T14:02:33.896+12:00</atom:updated><title>Synchronise your iPhone in Linux .. kinda</title><description>Hey guys; I finally got around to getting my iPhone to work in a Virtualbox installation of Windows.  Now I can finally sync my iPhone without rebooting!  I gathered up info from a few sources, and compiled it into the Ubuntu howto wiki.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://help.ubuntu.com/community/PortableDevices/iPhone#Using%20iTunes%20via%20Sun%20Virtualbox%20running%20Windows"&gt;https://help.ubuntu.com/community/PortableDevices/iPhone#Using%20iTunes%20via%20Sun%20Virtualbox%20running%20Windows&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Sync away!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5288315435324211793-6309418704515875069?l=blog.toolman.geek.nz' alt='' /&gt;&lt;/div&gt;</description><link>http://blog.toolman.geek.nz/2009/04/synchronise-your-iphone-in-linux-kinda.html</link><author>noreply@blogger.com (Toolman)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-5288315435324211793.post-9148021400229220946</guid><pubDate>Wed, 08 Apr 2009 01:27:00 +0000</pubDate><atom:updated>2009-04-08T13:31:34.110+12:00</atom:updated><title>Digital Glitching</title><description>Saw this music video by Kanye West over the weekend:&lt;br /&gt;&lt;br /&gt;&lt;object width="400" height="300"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=3256023&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1"&gt;&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=3256023&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;a href="http://vimeo.com/3256023"&gt;KANYE WEST "Welcome To Heartbreak" Directed by Nabil&lt;/a&gt; from &lt;a href="http://vimeo.com/nabilelderkin"&gt;nabil elderkin&lt;/a&gt; on &lt;a href="http://vimeo.com/"&gt;Vimeo&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Interesting how its using the errors produced by missing keyframes for artistic effect.  I saw a few experimental videos like this, but to see it on A-List music videos is interesting.  It the video analog to audio glitching artifacts being used in music.  Interesting, but unless you are a codec master, you have little control over the effect, so this technique may have limited scope for expansion.  Still cool - wonder if and encoders get confused encoding it :) ?  Also, how many geeks give their satellite box a smack, thinking that the MTV feed is playing up ....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5288315435324211793-9148021400229220946?l=blog.toolman.geek.nz' alt='' /&gt;&lt;/div&gt;</description><link>http://blog.toolman.geek.nz/2009/04/digital-glitching.html</link><author>noreply@blogger.com (Toolman)</author><thr:total>1</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-5288315435324211793.post-8813668080994682782</guid><pubDate>Wed, 08 Apr 2009 00:46:00 +0000</pubDate><atom:updated>2009-04-08T12:46:58.299+12:00</atom:updated><title>Ben Heck does it again: C64 laptop</title><description>Hey all;&lt;br /&gt;&lt;br /&gt;I probably linked to the &lt;a href="http://www.picobay.com/projects/2007/01/picodore-64-commodore-64-pda.html"&gt;Picommodore C64 laptop project&lt;/a&gt; that someone did a while ago, it is a cool idea.  I actually got myself a couple of the C64 all-in-one joysticks used in the project while I was in Europe.  Ben Heck, custom-console-maker-extraordinaire  has made a C64 laptop of such awesomeness that it kinda puts the rest to shame.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://benheck.com/Games/C64/c64_hero.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; cursor: pointer; width: 500px; height: 441px;" src="http://benheck.com/Games/C64/c64_hero.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;That is &lt;span style="font-weight: bold;"&gt;tidy&lt;/span&gt;.  A SD card floppy emulator, &lt;span style="font-weight: bold;"&gt;original&lt;/span&gt; keyboard with Fn keys chopped off, and replacements by the fake trackpad (actually a LCD for the SD-floppy bridge), all the real hardware:  SID chip, cartridge slot...  Go look at the full writeup from Ben himself.  A legendary hack.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://benheck.com/04-05-2009/commodore-64-original-hardware-laptop"&gt;http://benheck.com/04-05-2009/commodore-64-original-hardware-laptop&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;NIIICE!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5288315435324211793-8813668080994682782?l=blog.toolman.geek.nz' alt='' /&gt;&lt;/div&gt;</description><link>http://blog.toolman.geek.nz/2009/04/ben-heck-does-it-again-c64-laptop.html</link><author>noreply@blogger.com (Toolman)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-5288315435324211793.post-1067363376767846999</guid><pubDate>Sun, 29 Mar 2009 22:09:00 +0000</pubDate><atom:updated>2009-03-30T11:10:52.823+13:00</atom:updated><title>The Cult of Done Manifesto</title><description>I want to join this cult:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.brepettis.com/blog/2009/3/3/the-cult-of-done-manifesto.html"&gt;http://www.brepettis.com/blog/2009/3/3/the-cult-of-done-manifesto.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;The Cult of Done Manifesto&lt;/strong&gt;&lt;/p&gt; &lt;ol&gt;&lt;li&gt;There are three states of being. Not knowing, action and completion. &lt;/li&gt;&lt;li&gt;Accept that everything is a draft. It helps to get it done.&lt;/li&gt;&lt;li&gt;There is no editing stage.&lt;/li&gt;&lt;li&gt;Pretending you know what you're doing is almost the same as knowing what you are doing, so just accept that you know what you're doing even if you don't and do it.&lt;/li&gt;&lt;li&gt;Banish procrastination. If you wait more than a week to get an idea done, abandon it.&lt;/li&gt;&lt;li&gt;The point of being done is not to finish but to get other things done.&lt;/li&gt;&lt;li&gt;Once you're done you can throw it away.&lt;/li&gt;&lt;li&gt;Laugh at perfection. It's boring and keeps you from being done.&lt;/li&gt;&lt;li&gt;People without dirty hands are wrong. Doing something makes you right.&lt;/li&gt;&lt;li&gt;Failure counts as done. So do mistakes.&lt;/li&gt;&lt;li&gt;Destruction is a variant of done. &lt;/li&gt;&lt;li&gt;If you have an idea and publish it on the internet, that counts as a ghost of done.&lt;/li&gt;&lt;li&gt;Done is the engine of more.&lt;/li&gt;&lt;/ol&gt;&lt;/blockquote&gt;&lt;br /&gt;Amen!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5288315435324211793-1067363376767846999?l=blog.toolman.geek.nz' alt='' /&gt;&lt;/div&gt;</description><link>http://blog.toolman.geek.nz/2009/03/cult-of-done-manifesto.html</link><author>noreply@blogger.com (Toolman)</author><thr:total>1</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-5288315435324211793.post-4255084930277648366</guid><pubDate>Thu, 26 Mar 2009 08:25:00 +0000</pubDate><atom:updated>2009-03-26T21:26:25.559+13:00</atom:updated><title>Norty</title><description>Here is a link for all my pal who know my mate, Norty...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.stuff.co.nz/dominion-post/entertainment/blogs/the-lost-boys/2287212/The-initiators"&gt;http://www.stuff.co.nz/dominion-post/entertainment/blogs/the-lost-boys/2287212/The-initiators&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5288315435324211793-4255084930277648366?l=blog.toolman.geek.nz' alt='' /&gt;&lt;/div&gt;</description><link>http://blog.toolman.geek.nz/2009/03/norty.html</link><author>noreply@blogger.com (Toolman)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-5288315435324211793.post-6255299321524620663</guid><pubDate>Wed, 25 Mar 2009 00:26:00 +0000</pubDate><atom:updated>2009-03-25T13:33:08.229+13:00</atom:updated><title>Head Tracking for VR using a standard screen.</title><description>Hey this is a nice example of how to use our existing components for 3D goodness.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/Jd3-eiid-Uw&amp;hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/Jd3-eiid-Uw&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Nice one &lt;a href="http://johnnylee.net"&gt;Jonny Lee&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5288315435324211793-6255299321524620663?l=blog.toolman.geek.nz' alt='' /&gt;&lt;/div&gt;</description><link>http://blog.toolman.geek.nz/2009/03/head-tracking-for-vr-using-standard.html</link><author>noreply@blogger.com (Toolman)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-5288315435324211793.post-369777164447791658</guid><pubDate>Sun, 22 Mar 2009 21:38:00 +0000</pubDate><atom:updated>2009-03-23T10:40:08.029+13:00</atom:updated><title>Java magic trick</title><description>&lt;a href="http://blogs.atlassian.com/developer/2008/07/magic_trick_in_java.html"&gt;http://blogs.atlassian.com/developer/2008/07/magic_trick_in_java.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Can you solve this one?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5288315435324211793-369777164447791658?l=blog.toolman.geek.nz' alt='' /&gt;&lt;/div&gt;</description><link>http://blog.toolman.geek.nz/2009/03/java-magic-trick.html</link><author>noreply@blogger.com (Toolman)</author><thr:total>0</thr:total></item></channel></rss>