<?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>Structured Procrastination</title>
	<atom:link href="http://blog.adamspiers.org/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.adamspiers.org</link>
	<description>because there's always something more interesting than what you should be doing</description>
	<lastBuildDate>Mon, 23 Jan 2012 12:16:37 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>port redirection from kvm host to guest</title>
		<link>http://blog.adamspiers.org/2012/01/23/port-redirection-from-kvm-host-to-guest/</link>
		<comments>http://blog.adamspiers.org/2012/01/23/port-redirection-from-kvm-host-to-guest/#comments</comments>
		<pubDate>Mon, 23 Jan 2012 01:58:03 +0000</pubDate>
		<dc:creator>Adam</dc:creator>
				<category><![CDATA[geek]]></category>
		<category><![CDATA[hidden]]></category>
		<category><![CDATA[work]]></category>
		<category><![CDATA[DNAT]]></category>
		<category><![CDATA[firewall]]></category>
		<category><![CDATA[iptables]]></category>
		<category><![CDATA[kvm]]></category>
		<category><![CDATA[libvirt]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[NAT]]></category>
		<category><![CDATA[networking]]></category>
		<category><![CDATA[port redirection]]></category>
		<category><![CDATA[QEMU]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[virsh]]></category>
		<category><![CDATA[virtualization]]></category>

		<guid isPermaLink="false">http://blog.adamspiers.org/?p=636</guid>
		<description><![CDATA[I&#8217;ve just started using kvm in earnest, and immediately ran into the challenge of how to access my guest via ssh. My first instinct was to configure the guest in bridged mode, but this doesn&#8217;t work well (or at all) with wireless interfaces. So plan B was to set up port redirection from the host [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve just started using <a href="http://www.linux-kvm.org/">kvm</a> in earnest, and immediately ran into the challenge of how to access my guest via ssh.  My first instinct was to configure the guest in bridged mode, but this <a href="http://www.linux-kvm.org/page/Networking#public_bridge">doesn&#8217;t work well (or at all) with wireless interfaces</a>.</p>
<p>So plan B was to set up port redirection from the host to the guest, e.g. so that ssh&#8217;ing to localhost port 2222 would redirect to the guest&#8217;s port 22.</p>
<p>After a quick google, <a href="http://serverfault.com/questions/170079/forwarding-ports-to-guests-in-libvirt-kvm">some fiddling with iptables</a>, and a glance at <a href="http://wiki.libvirt.org/page/Networking">the libvirt Networking wiki page</a>, I was still having no luck.  Then it hit me &#8211; my guest was using <a href="http://doc.opensuse.org/products/draft/openSUSE_Factory/opensuse-kvm_sd_draft/cha.qemu.running.html#cha.qemu.running.networking.usermode">user-mode networking</a>, and rather than getting its DHCP-allocated IP from the libvirtd-launched <code>dnsmasq</code> instance on the host, was receiving a <a href="http://doc.opensuse.org/products/draft/openSUSE_Factory/opensuse-kvm_sd_draft/cha.qemu.running.html#cha.qemu.running.networking.usermode">hardcoded allocation of <code>10.0.2.15</code> from the host which is on <code>10.0.2.2</code></a>.  This can be extremely puzzling at first, because no network commands run on the host (such as <code>ifconfig</code>, <code>iptables</code>, <code>brctl</code>, <code>route</code>) will reveal this magic address, yet the host is still accessible from the guest via it. </p>
<p>After a lot more googling, I stumbled across a technique for <a href="http://www.linux-kvm.com/content/host-guest-port-redirection-fly">configuring host to guest port redirection on a running VM</a>.  This sounded very promising, but <code>virt-manager</code> refused to accept the magic <code>Control-Alt-2</code> key combination to switch to QEMU monitor mode.  It turns out that <a href="http://wiki.libvirt.org/page/FAQ#Can_I_connect_to_the_QEMU_monitor_with_libvirt.3F">this is no accident</a>.  However, since <code>libvirt 0.8.8</code>, <a href="http://blog.vmsplice.net/2011/03/how-to-access-qemu-monitor-through.html">the QEMU monitor can be accessed via <code>virsh</code></a>.<br />
Note that the <code>--hmp</code> option is required, otherwise <a href="http://blog.devnu11.net/2011/05/libvirt-qemu-monitor-protocol-qmp-2/">the monitor expects the command in JSON format</a>, so omitting it leads to errors like <code>error: internal error cannot parse json ... lexical error: invalid char in json text</code>.</p>
<p>The final hurdle was figuring out the correct monitor command.  The <code>host_net_redir</code> command as mentioned in the above article is no longer recognized.  Luckily the QEMU monitor interface helped me out here &#8211; I spotted an encouraging sounding command <code>hostfwd_add</code>:</p>
<pre class="brush: bash; title: ; notranslate">
# virsh qemu-monitor-command --hmp sles11 'help hostfwd_add'
hostfwd_add [vlan_id name] [tcp|udp]:[hostaddr]:hostport-[guestaddr]:guestport -- redirect TCP or UDP connections from host to guest (requires -net user)
</pre>
<p>and <a href="http://www.google.co.uk/search?q=hostfwd_add+host_net_redir">google confirmed that the latter had superceded the former</a>.</p>
<p>So finally we have the complete solution:</p>
<pre class="brush: bash; title: ; notranslate">
# virsh qemu-monitor-command --hmp sles11 'hostfwd_add ::2222-:22'
# ssh -p 2222 localhost
Password:
Last login: Mon Jan 23 00:37:44 2012
linux-mnsh:~ #
</pre>
<p>Hooray!</p>
<p><span style="color: red">UPDATE:</span> just found another very simple solution &#8211; add a new NIC to the VM which doesn&#8217;t use user-mode networking. Then it will get a IP (on 192.168.100.0/24 by default) which is still NAT&#8217;d but also routable via <code>virbr0</code> on the host, meaning no redirection is necessary; just ssh directly to the guest&#8217;s IP from the host.  A minor disadvantage of this is that the guest won&#8217;t be directly reachable from outside the host, but that&#8217;s unlikely to be an issue in most scenarios.</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.adamspiers.org%2F2012%2F01%2F23%2Fport-redirection-from-kvm-host-to-guest%2F&amp;title=port%20redirection%20from%20kvm%20host%20to%20guest" id="wpa2a_2"><img src="http://blog.adamspiers.org/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.adamspiers.org/2012/01/23/port-redirection-from-kvm-host-to-guest/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux desktop community &#8220;outraged&#8221; by latest Torvalds comments</title>
		<link>http://blog.adamspiers.org/2011/11/29/linux-desktop-community-outraged-by-latest-torvalds-comments/</link>
		<comments>http://blog.adamspiers.org/2011/11/29/linux-desktop-community-outraged-by-latest-torvalds-comments/#comments</comments>
		<pubDate>Tue, 29 Nov 2011 15:40:38 +0000</pubDate>
		<dc:creator>Adam</dc:creator>
				<category><![CDATA[fun]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[hidden]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[Canonical]]></category>
		<category><![CDATA[desktop]]></category>
		<category><![CDATA[Ebay]]></category>
		<category><![CDATA[GNOME]]></category>
		<category><![CDATA[joke]]></category>
		<category><![CDATA[KDE]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MacOS X]]></category>
		<category><![CDATA[rants]]></category>
		<category><![CDATA[Sony]]></category>
		<category><![CDATA[Torvalds]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[Unity]]></category>

		<guid isPermaLink="false">http://blog.adamspiers.org/?p=609</guid>
		<description><![CDATA[Once again, users and developers all around the Linux desktop community have been provoked by controversial comments from Linus Torvalds, creator and long-time maintainer of the Linux kernel. Back in October, Linus dubbed GNOME 3 an &#8220;unholy mess&#8221;, referring to one of the changes as &#8220;crazy crap&#8221; and demanding &#8220;I want my sane interfaces back&#8221;. Since [...]]]></description>
			<content:encoded><![CDATA[<p>Once again, users and developers all around the Linux desktop community have been provoked by controversial comments from Linus Torvalds, creator and long-time maintainer of the Linux kernel.  Back in October, <a href="http://www.theregister.co.uk/2011/08/05/linus_slams_gnome_three/">Linus dubbed GNOME 3 an &#8220;unholy mess&#8221;</a>, referring to one of the changes as &#8220;crazy crap&#8221; and demanding &#8220;I want my sane interfaces back&#8221;.  Since then he has gone even further, contending that &#8220;for some people, a stable, flexible functional desktop environment is far more important than the latest eye candy or trendy minimalist UI design.&#8221;</p>
<p>Reaction from the desktop development community has been swift and mostly unapologetic.  <a href="http://en.wikipedia.org/wiki/Mark_Shuttleworth">Mark Shuttleworth</a>, the founder of <a href="http://en.wikipedia.org/wiki/Canonical_Ltd">Canonical</a>, responded &#8220;Once again, Linus is underestimating the importance of aesthetics in computing. You only have to look at Apple to see that people place more importance on visual beauty than the kind of efficient work processes that a flexible and reliable desktop environment enable.  This is why we&#8217;re pushing our new Unity launcher as a mandatory part of Ubuntu.  We&#8217;re confident that people will quickly overcome the initial shock of <a href="http://www.linuxjournal.com/video/unity-3-rants-and-tip">everything taking longer to find and access</a> because they&#8217;ll be too busy admiring how beautiful it looks.&#8221;  He then cited the latest 11.10 release as an example of this.  &#8220;If you look in the <a href="https://wiki.ubuntu.com/OneiricOcelot/ReleaseNotes">release notes for [Oneiric Ocelot]</a>, you&#8217;ll see a new Alt+Tab switcher at the top of the list of highlights, and below it other radical changes such as renaming &#8216;Places&#8217; to &#8216;Lenses&#8217;.  Frankly, most people lap up this whizzbang shit, and as long as it looks cooler than their friend&#8217;s Windows 7 netbook they&#8217;ll be willing to tolerate <a href="http://goo.gl/caerL">some minor annoyances</a> which are unavoidable when making <a href="http://www.pcpro.co.uk/blogs/2011/05/03/ubuntu-unity-the-great-divider/">immature software</a> a critical component of the desktop.  Sure, we could prioritise boring bug-fixing over innovation, but that just doesn&#8217;t excite the teenagers on the web forums, and we have to think about the next generation of users.  Besides, if you want a dumbed down system that mostly works, there&#8217;s always Mac OS X.&#8221;</p>
<p><a href="http://en.wikipedia.org/wiki/Havoc_Pennington">Havoc Pennington</a>, a GNOME developer well-known for initiating the war on Linux desktop flexibility by <a href="http://ometer.com/free-software-ui.html">drastically reducing the number of preferences</a> and replacing GNOME&#8217;s default window manager, the high-performance scriptable <a href="http://en.wikipedia.org/wiki/Sawfish_(window_manager)">Sawfish</a>, with <a href="http://en.wikipedia.org/wiki/Twm">Metacity</a>, commented: &#8220;It&#8217;s about achieving the right work/play balance. If your desktop allowed you to get stuff done too quickly, it would just increase your stress levels.  <a href="http://mail.gnome.org/archives/usability/2005-December/msg00021.html">Some &#8216;power&#8217; users think they want to be able to stream-line their workflows</a>, but we know better, so <a href="http://www.christoph-wickert.de/blog/2011/06/25/gnome-developer-quote-of-the-day/">we are doing them a favour by making this customizability harder</a>.  After all, everyone needs basically the same things.  Rather than trying to be different, <a href="http://goo.gl/pTCZy">these people</a> should instead learn to enjoy the cute visuals and focus more on having fun.  Life&#8217;s more than just work, work, work, you know.&#8221;</p>
<p>The KDE camp has been slightly less vociferous, perhaps because it&#8217;s old hat for them &#8211; back in 2008 they pioneered the concept of intrusive redesigns and ended up <a href="http://linuxhelp.blogspot.com/2009/01/linus-torvalds-ditches-kde-4-for-gnome.html">the wrong end of one of Linus&#8217; rants</a> as a result.  &#8220;With KDE 4.0, we did our best to prevent people achieving real work, and I think we largely succeeded&#8221;, one of the KDE team leaders recalls.  &#8220;I mean, there was a significant period of time where neither the KDE3 version of knetworkmanager nor its KDE4 rewrite worked properly, so for many wireless networks, the only way you could connect was to disable NetworkManager and write a shell-script to interface directly with wpa-supplicant and ifup.  And that&#8217;s just one small example.&#8221;</p>
<p>Despite Torvalds&#8217; comments, the move towards form over function has been witnessed elsewhere outside the desktop software space.  For example, Apple have introduced <a href="http://www.theonion.com/video/apple-introduces-revolutionary-new-laptop-with-no,14299/">the MacWheel</a>, a move so bold that it makes innovations such as Unity and the GNOME Shell look positively conservative.  However there is no clear industry-wide consensus; in fact companies such as <a href="http://goo.gl/wydGJ">Ebay</a> and <a href="http://goo.gl/CQhe">Sony</a> are beginning to experiment with rejecting both form <em>and</em> function, turning conventional wisdom on its head.</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.adamspiers.org%2F2011%2F11%2F29%2Flinux-desktop-community-outraged-by-latest-torvalds-comments%2F&amp;title=Linux%20desktop%20community%20%26%238220%3Boutraged%26%238221%3B%20by%20latest%20Torvalds%20comments" id="wpa2a_4"><img src="http://blog.adamspiers.org/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.adamspiers.org/2011/11/29/linux-desktop-community-outraged-by-latest-torvalds-comments/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>clawing my way back to peak fitness</title>
		<link>http://blog.adamspiers.org/2011/11/28/clawing-my-way-back-to-peak-fitness/</link>
		<comments>http://blog.adamspiers.org/2011/11/28/clawing-my-way-back-to-peak-fitness/#comments</comments>
		<pubDate>Mon, 28 Nov 2011 15:34:24 +0000</pubDate>
		<dc:creator>Adam</dc:creator>
				<category><![CDATA[front page]]></category>
		<category><![CDATA[training]]></category>
		<category><![CDATA[Garmin]]></category>
		<category><![CDATA[heart rate]]></category>
		<category><![CDATA[mileage]]></category>
		<category><![CDATA[running]]></category>

		<guid isPermaLink="false">http://blog.adamspiers.org/?p=602</guid>
		<description><![CDATA[After a fulfilling but slightly unhealthy summer touring around the US, I decided it was time to get back to peak racing form. My fancy new Garmin running watch has been watching me every step of the way as I&#8217;ve been ramping up the mileage over the last few months, so it&#8217;s pretty satisfying to [...]]]></description>
			<content:encoded><![CDATA[<p>After a fulfilling but slightly unhealthy <a href="http://blog.adamspiers.org/rediscovering-music">summer touring around the US</a>, I decided it was time to get back to peak racing form.  My fancy new <a href="http://www.dcrainmaker.com/2011/04/garmin-forerunner-610-in-depth-review.html">Garmin running watch</a> has been watching me every step of the way as I&#8217;ve been ramping up the mileage over the last few months, so it&#8217;s pretty satisfying to see how far I&#8217;ve come since I got back home:</p>
<p><a href="http://blog.adamspiers.org/wp-content/uploads/2011/11/garmin.png"><img src="http://blog.adamspiers.org/wp-content/uploads/2011/11/garmin.png" alt="" title="Garmin Connect monthly report" width="600" class="aligncenter size-full wp-image-603" /></a></p>
<p>I&#8217;m really beginning to feel the difference too.  Today I jumped in the lift to head down for a <a href="http://connect.garmin.com/activity/131506244">lunch-time run</a> and by the time it reached the ground floor, my heart rate had dropped from 75bpm to 53bpm <img src='http://blog.adamspiers.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />   Last Friday I did a <a href="http://connect.garmin.com/activity/130802443">brutal hill session</a> with the club and peaked 199bpm, which is pretty unusual even for guys in their 20s (though unfortunately that doesn&#8217;t mean that I&#8217;m naturally fitter than other people, just that I have a high heart rate and can push myself hard &#8230;)</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.adamspiers.org%2F2011%2F11%2F28%2Fclawing-my-way-back-to-peak-fitness%2F&amp;title=clawing%20my%20way%20back%20to%20peak%20fitness" id="wpa2a_6"><img src="http://blog.adamspiers.org/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.adamspiers.org/2011/11/28/clawing-my-way-back-to-peak-fitness/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Running Amazon MP3 downloader on 64-bit Ubuntu 11.04 (Natty Narwhal)</title>
		<link>http://blog.adamspiers.org/2011/09/25/running-amazon-mp3-downloader-on-64-bit-ubuntu-11-04-natty-narwhal/</link>
		<comments>http://blog.adamspiers.org/2011/09/25/running-amazon-mp3-downloader-on-64-bit-ubuntu-11-04-natty-narwhal/#comments</comments>
		<pubDate>Sun, 25 Sep 2011 14:00:18 +0000</pubDate>
		<dc:creator>Adam</dc:creator>
				<category><![CDATA[geek]]></category>
		<category><![CDATA[hidden]]></category>
		<category><![CDATA[music]]></category>
		<category><![CDATA[64-bit]]></category>
		<category><![CDATA[Amazon]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MP3]]></category>
		<category><![CDATA[rants]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://blog.adamspiers.org/?p=594</guid>
		<description><![CDATA[Amazon MP3 store &#8211; a phenomenonly popular online music store. Ubuntu &#8211; a phenomenonly popular version of Linux. 64-bit x86_64 CPUs &#8211; been around for years. You&#8217;d think this was a good combination, wouldn&#8217;t you? Wrong Amazon, along with Spotify and countless others, is dismally failing to support its rapidly growing set of customers who [...]]]></description>
			<content:encoded><![CDATA[<p>Amazon MP3 store &#8211; a phenomenonly popular online music store.  Ubuntu &#8211; a phenomenonly popular version of Linux. 64-bit x86_64 CPUs &#8211; been around for years.  You&#8217;d think this was a good combination, wouldn&#8217;t you?  Wrong <img src='http://blog.adamspiers.org/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' />   Amazon, along with <a href="http://getsatisfaction.com/spotify/topics/will_there_be_rpm_or_spotify_repository_for_other_distros#reply_6670641">Spotify</a> and countless others, is dismally failing to support its rapidly growing set of customers who run Linux.  As I&#8217;ve said elsewhere, even if 2% of your customers use Linux, that can still be a huge number.  Hopefully some day these big companies will acquire some common sense.</p>
<p>Anyway, in the mean time a quick google brought up the following solution:</p>
<ul>
<li><a href="http://www.dgf64art.com/2011/07/05/installing-amazon-mp3-downloader-on-ubuntu-11-04/">http://www.dgf64art.com/2011/07/05/installing-amazon-mp3-downloader-on-ubuntu-11-04/</a>
</ul>
<p>Unfortunately it doesn&#8217;t work &#8211; the step which installs the manually downloaded .deb files fails due to broken dependencies.  However further googling found a <a href="http://jonathonhill.net/2008-12-26/installing-32-bit-programs-on-64-bit-ubuntu-linux/">post from 2008</a> which revealed a technique based on the very useful <code>getlibs</code> utility.</p>
<p>So here&#8217;s my solution:</p>
<ol>
<li>Download the 32-bit Amazon downloader app for Ubuntu 9.10.
<li>Run <code>sudo dpkg -i --force-all AmazonMP3DownloaderInstall.deb</code>
<li>Run <code>sudo apt-get install getlibs</code> if you don&#8217;t already have <code>getlibs</code> installed.
<li>Run <code>sudo getlibs /usr/bin/amazonmp3</code> and answer yes to the confirmation.
</ol>
<p>At this point if you try to run <code>/usr/bin/amazonmp3</code> you&#8217;ll probably hit <a href="https://bugs.launchpad.net/ubuntu/+source/ia32-libs/+bug/781870">Ubuntu bug 781870</a>.  The workaround is as follows:</p>
<pre class="brush: bash; title: ; notranslate">
export GDK_PIXBUF_MODULE_FILE=/usr/lib32/gdk-pixbuf-2.0/2.10.0/loaders.cache
/usr/bin/amazonmp3
</pre>
<p>You&#8217;ll still get an error that it&#8217;s trying to load the 64-bit version of <code>libgvfsdbus.so</code> thanks to <a href="https://bugs.launchpad.net/ubuntu/+source/ia32-libs/+bug/369498">Ubuntu bug 369498</a>.  I had hopes that <a href="https://answers.launchpad.net/ubuntu/+source/ia32-libs/+question/98762"><code>export GIO_EXTRA_MODULES=/usr/lib32/gio/modules</code> would fix this</a>, but it seems that this variable only gets honoured too late. However, apparently this issue doesn&#8217;t stop the program working so can be ignored.</p>
<p>Another option is to use Banshee&#8217;s built-in Amazon downloader, but even without all the <a href="http://www.networkworld.com/community/banshee-amazon-store-disabled-by-canonical-in-ubuntu">politics surrounding Ubuntu&#8217;s version of Banshee</a> this didn&#8217;t suit my tastes.</p>
<p><span style="color: red">UPDATE:</span> Wow.  Just found out <a href="http://www.amazon.com/Can-I-re-download/forum/Fx3P42S75I9N8FX/Tx1JQUC3VCLTLS0/1?_encoding=UTF8&#038;asin=B0035DH9GC">Amazon doesn&#8217;t support re-downloading stuff you&#8217;ve already bought</a>.  This is truly pathetic, especially considering their Android app kind of implements a locker service.  From now on I&#8217;ll be using <a href="http://7digital.com">7digital</a> whenever I can &#8211; unfortunately their selection isn&#8217;t as big though.  The quest for the perfect music services continues &#8230; :-/</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.adamspiers.org%2F2011%2F09%2F25%2Frunning-amazon-mp3-downloader-on-64-bit-ubuntu-11-04-natty-narwhal%2F&amp;title=Running%20Amazon%20MP3%20downloader%20on%2064-bit%20Ubuntu%2011.04%20%28Natty%20Narwhal%29" id="wpa2a_8"><img src="http://blog.adamspiers.org/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.adamspiers.org/2011/09/25/running-amazon-mp3-downloader-on-64-bit-ubuntu-11-04-natty-narwhal/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>freedb is dead, long live freedb</title>
		<link>http://blog.adamspiers.org/2011/09/13/freedb-is-dead-long-live-freedb/</link>
		<comments>http://blog.adamspiers.org/2011/09/13/freedb-is-dead-long-live-freedb/#comments</comments>
		<pubDate>Tue, 13 Sep 2011 14:13:20 +0000</pubDate>
		<dc:creator>Adam</dc:creator>
				<category><![CDATA[geek]]></category>
		<category><![CDATA[hidden]]></category>
		<category><![CDATA[music]]></category>
		<category><![CDATA[lazyweb]]></category>

		<guid isPermaLink="false">http://blog.adamspiers.org/?p=573</guid>
		<description><![CDATA[I&#8217;ve been a fan of freeDB for years. It&#8217;s a great way of crowd-sourcing CD title/artist/track information and is a huge help when converting CDs into part of your digital music collection (&#8220;ripping&#8221;). However, more recently I have noticed that the majority of times I submit a new CD to freeDB, it gets rejected due [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been a fan of <a href="http://en.wikipedia.org/wiki/Freedb">freeDB</a> for years.  It&#8217;s a great way of <a href="http://en.wikipedia.org/wiki/Crowdsourcing">crowd-sourcing</a> CD title/artist/track information and is a huge help when converting CDs into part of your digital music collection (&#8220;ripping&#8221;).</p>
<p>However, more recently I have noticed that the majority of times I submit a new CD to freeDB, it gets rejected due to a <a href="http://www.freedb.org/en/faq.3.html#27">discid collision</a>.  This is due to a fundamental limitation in the <a href="http://en.wikipedia.org/wiki/CDDB#How_CDDB_works">discid hashing algorithm</a> which freeDB inherited from CDDB &#8211; it&#8217;s only a 32-bit number, of which a mere 8 bits are used as a checksum for the individual track starting times.  So it&#8217;s no surprise that we&#8217;re getting collisions galore, at an increasing frequency as the database continually grows.  Even worse, CDDB attempts to deal with collisions by making CD entries in the database uniquely retrievable by <code>(discid, category)</code> pairs, where category is one of only <a href="http://www.freedb.org/en/faq.3.html#25">11 musical genres</a>.  Of course this is woefully inadequate, because there are countless genres and most music defies classification anyway.  They attempted to deal with this by calling the 11th category &#8220;misc&#8221;, but that still has the problem of restricting entries to one unique discid per genre. Unsurprisingly this has caused a huge number of collisions, especially in the &#8220;misc&#8221; category. As a result, people have been re-submitting collided entries into the wrong genre, simply because having an entry with the wrong genre in the database is still better than not having it at all.</p>
<p><a href="http://www.gracenote.com/">Gracenote</a>, the <a href="http://en.wikipedia.org/wiki/CDDB#History">eventual owner of CDDB</a> have developed a new generation database imaginatively called <a href="https://doors.gracenote.com/developer/cddb2new.html">CDDB2</a> which adds a much richer meta-data structure.  Gracenote has taken advantage of this to <a href="http://www.cbsnews.com/stories/2007/01/09/ces/main2339906.shtml">clean up the mess caused by attempting to shoe-horn classical CDs into an inadequate schema, and license the results to Apple for iTunes</a>.  Unfortunately that&#8217;s no use to those of us who recognise the value of <a href="http://fsf.org/">freedom</a> over vendor lock-in.</p>
<p>It seems that <a href="http://ftp.freedb.org/pub/freedb/latest/CHANGELOG">the freeDB server software hasn&#8217;t been updated since 2006</a>, so presumably there&#8217;s not much of an active community left.  So there&#8217;s a ripe opportunity for a smart philanthropist hacker to breathe new life into this valuable project.  Sounds ideal for <a href="http://code.google.com/soc/">Google Summer of Code</a> task, for instance. As this is largely a <em>lazyweb</em> blog post, here are my thoughts on what needs to be done; it&#8217;s unlikely I&#8217;ll ever manage to prioritise it above other things already on my plate:</p>
<ul>
<li>Design a new collision-proof hashing algorithm. It should produce at least 128-bit hashes, and include as much information about the contents of the physical CD as possible, namely:
<ol>
<li>number of tracks
<li>starting times of all tracks
<li>total playing time
</ol>
<p>This algorithm could be as simple as calculating the MD5 digest of a delimiter-separated concatenation of the above items represented as integers.</p>
<p>Notice that this should be limited to information which can be retrieved very quickly; for instance producing MD5 digests of the <em>contents</em> of each track takes too long to be useful in practice.</p>
<li>Design the next level of the <a href="http://ftp.freedb.org/pub/freedb/latest/CDDBPROTO">CDDB protocol</a> (which at the time of writing would be <a href="http://ftp.freedb.org/pub/freedb/latest/CDDBPROTO">level 7</a>), which allows additional querying by this new 128-bit (or larger) digest.
<li>Extend <a href="http://www.freedb.org/en/download__server_software.4.html">the existing freeDB server software</a> to support this new level whilst remaining backwards-compatible with existing clients.  In other words, database entries should be retrievable both by the old (32-bit discid, category) pair and the new digest. This would require iterating once through all existing entries to recalculate the new digest for each.
<li>(Optional) Extend one or more F/OSS clients to use the new protocol level, and advocate other clients to do the same &#8230;
</ul>
<p>For bonus points, you could extend the database schema in a similar way to CDDB2, and then start a crowd-sourcing project for cleaning up the database with respect to all those pesky classical tracks which have distinct composer / performer metadata.</p>
<p>So, any takers?  You&#8217;d win the admiration and gratitude of a few, the satisfaction of knowing you helped slightly improve the lives of millions, and a place in heaven <img src='http://blog.adamspiers.org/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.adamspiers.org%2F2011%2F09%2F13%2Ffreedb-is-dead-long-live-freedb%2F&amp;title=freedb%20is%20dead%2C%20long%20live%20freedb" id="wpa2a_10"><img src="http://blog.adamspiers.org/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.adamspiers.org/2011/09/13/freedb-is-dead-long-live-freedb/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rediscovering music</title>
		<link>http://blog.adamspiers.org/2011/08/12/rediscovering-music/</link>
		<comments>http://blog.adamspiers.org/2011/08/12/rediscovering-music/#comments</comments>
		<pubDate>Fri, 12 Aug 2011 03:18:08 +0000</pubDate>
		<dc:creator>Adam</dc:creator>
				<category><![CDATA[front page]]></category>
		<category><![CDATA[music]]></category>
		<category><![CDATA[travel]]></category>
		<category><![CDATA[work]]></category>
		<category><![CDATA[career]]></category>
		<category><![CDATA[cello]]></category>
		<category><![CDATA[risk-taking]]></category>

		<guid isPermaLink="false">http://blog.adamspiers.org/?p=272</guid>
		<description><![CDATA[I&#8217;m sitting on a plane from LA to Chicago. This is my fifth flight in the last two months, having already been to New York, Ohio, Florida, and California, and it&#8217;s probably about time I explain what the hell I&#8217;m doing, as I have friends and family who have seen various confusing status updates I&#8217;ve [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m sitting on a plane from LA to Chicago.  This is my fifth flight in the last two months, having already been to New York, Ohio, Florida, and California, and it&#8217;s probably about time I explain what the hell I&#8217;m doing, as I have friends and family who have seen various confusing status updates I&#8217;ve posted on <a href="http://facebook.com/adam.spiers">Facebook</a> and <a href="http://twitter.com/adamspiers">Twitter</a> whom I owe the full story.</p>
<p>Just over two years ago, I <a href="http://blog.adamspiers.org/going-back-to-my-roots">blogged about taking a leap of faith and turning down two great jobs because they didn&#8217;t involve doing something I was truly passionate about</a>. It was a gamble, but <a href="http://blog.adamspiers.org/almost-two-months-in">even after two months I could tell it was going to pay off</a>.  Sure enough, two years later, I found myself with a wealth of new experience and knowledge which I&#8217;d had a ton of fun acquiring, plus a healthy boost to <a href="http://adamspiers.org/CV/IT.html">my CV</a> and set of friends and connections within the industry.</p>
<p>Then the stars aligned again, and I found myself with another life-changing dilemma: take an even more awesome job than the one I was in, or quit IT altogether and face an indefinite period of zero income. Pretty obvious what to do, right?  I quit.</p>
<p>If that sounds crazy, it&#8217;s because it probably was &#8211; definitely another leap into the unknown.  But I&#8217;ll try to explain my decision.<span id="more-272"></span>  I&#8217;ve had a number of life-changing decisions to make over the years, and I&#8217;m gradually learning to trust my gut instincts in those moments, because they&#8217;re generally right.  I think they work out well because they&#8217;re usually based on my need to keep doing things I love doing (or to put it another way, my pathetic lack of tolerance for things I don&#8217;t enjoy), rather than concerns about money and other tedious &#8220;real world&#8221; distractions.</p>
<p>But wait, I hear you ask &#8211; didn&#8217;t I just say I decided not to pursue an even more awesome job than the one I loved doing for the last two years?  How could my instincts guide me away from that?  There are two parts to the answer.</p>
<p>Firstly, I had a bit of luck recently which combined with existing savings and investments meant that I could afford not to work for a while.  Secondly, I&#8217;ve had an itch for a long time to play more music, and it just wouldn&#8217;t go away.  In fact it kept growing and growing, until (20 years later than would have been ideal) I identified it as a basic need that I&#8217;m stuck with for good.  When I say &#8220;play more music&#8221;, I don&#8217;t mean the kind where you go off and play along with CDs in your bedroom every now and again, or join an amateur orchestra.  That&#8217;s enough for some people, and I totally respect that &#8211; but for some reason (false pride, perhaps) I could never bear to think of myself as a hobbyist musician.  For better or worse, I only ever enjoy playing music when I&#8217;m playing to the best of my ability, and experiencing real progress. </p>
<p>Unfortunately, in music as with many things in life, progress requires hard grind &#8211; the standard blood, sweat and tears formula.  Jazz musicians call it &#8220;shedding&#8221; which is short for &#8220;woodshedding&#8221;, because the idea is you lock yourself in a woodshed for 6 months and practice non-stop.  If a 15 year career in IT has taught me anything, it&#8217;s that you can&#8217;t develop your musicianship quickly alongside a full-time job outside music.  So I quit.  Or at least, I&#8217;m taking sabbatical.  To be honest I have no idea what will happen.  Maybe I&#8217;ll go back to IT full-time, maybe part-time, maybe never.  Right now I&#8217;m just focusing on studying, practising, playing with other people &#8230; whatever I can do to improve.</p>
<p>I decided that I&#8217;m most interested in developing my non-classical skills, especially jazz but also various types of folk, pop, Indian, and whatever else takes my fancy.  I&#8217;ve played (Western) classical music my whole life and had some of the most incredible experiences from it, but now I want to explore what can be done on the cello outside that &#8211; cello is such a versatile instrument and there&#8217;s a whole new sound world which is a mostly untrodden path at this point.</p>
<p>That&#8217;s all I have time for now, but I&#8217;ll blog again soon about the amazing experiences I&#8217;ve already had around the USA in the last two months &#8211; I have a whole ton of photos, audio and video, so watch this space!</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.adamspiers.org%2F2011%2F08%2F12%2Frediscovering-music%2F&amp;title=Rediscovering%20music" id="wpa2a_12"><img src="http://blog.adamspiers.org/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.adamspiers.org/2011/08/12/rediscovering-music/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Flying with a (carbon fibre) cello</title>
		<link>http://blog.adamspiers.org/2011/08/01/flying-with-a-carbon-fibre-cello/</link>
		<comments>http://blog.adamspiers.org/2011/08/01/flying-with-a-carbon-fibre-cello/#comments</comments>
		<pubDate>Mon, 01 Aug 2011 21:17:46 +0000</pubDate>
		<dc:creator>Adam</dc:creator>
				<category><![CDATA[front page]]></category>
		<category><![CDATA[music]]></category>
		<category><![CDATA[travel]]></category>
		<category><![CDATA[airlines]]></category>
		<category><![CDATA[cello]]></category>
		<category><![CDATA[droids]]></category>
		<category><![CDATA[flying]]></category>
		<category><![CDATA[jobsworths]]></category>
		<category><![CDATA[policies]]></category>
		<category><![CDATA[rants]]></category>

		<guid isPermaLink="false">http://blog.adamspiers.org/?p=521</guid>
		<description><![CDATA[When flying, most cellists are faced with either buying an extra ticket or getting a flight case, paying oversized baggage fees, and praying. Experiences vary widely and are in places well documented and full of useful advice, e.g. http://cellobello.com/blog/chamber_music/cello-is-my-co-pilot/ http://cellofun.yuku.com/topic/4483 My situation is different because I have a Luis and Clark carbon fiber cello which [...]]]></description>
			<content:encoded><![CDATA[<p>When flying, most cellists are faced with either buying an extra ticket or getting a flight case, paying oversized baggage fees, and praying. Experiences vary widely and are in places well documented and full of useful advice, e.g.</p>
<ul>
<li><a href="http://cellobello.com/blog/chamber_music/cello-is-my-co-pilot/">http://cellobello.com/blog/chamber_music/cello-is-my-co-pilot/</a></li>
<li><a href="http://cellofun.yuku.com/topic/4483">http://cellofun.yuku.com/topic/4483</a></li>
</ul>
<p>My situation is different because I have a <a href="http://www.luisandclark.com/">Luis and Clark carbon fiber cello</a> which is incredibly robust and generally does not even go out of tune when checked in as normal baggage and placed in the hold of the aircraft in a normal hard case. My case is a <a href="http://www.stradviolin.com/store/store.php/products/bam-hightech-adjustable-cello-case">Bam Hightech measuring 54.5 × 21 × 88.7&#8243;</a>.  It seems virtually all airlines policies regarding oversized baggage operate in &#8220;linear&#8221; or total dimensions, i.e. by summing up the 3 separate dimensions together.  This means my case has a linear dimension of 88.7&#8243; which unfortunately is outside the 62&#8243; standard limit, and even just outside Delta&#8217;s second tier limit of 80&#8243;.  Having said that, so far I have always managed to get it treated as normal sized baggage simply by confidently pointing out that the height is 55&#8243; which is under 62&#8243;. In my experience, most staff at the check-in gate are not familiar with the exact terms in their airline&#8217;s policies, so having the right attitude (confidently knowledgeable and up-front but non-confrontational) can go a long way.</p>
<p>I&#8217;ve done some research on the policies of some popular airlines and referenced the relevant extracts below, with one section per airline. The quotes I&#8217;ve taken are focused mainly on national flights within the USA, because despite being from the UK, I&#8217;m currently flying around the USA a lot. However the policies for international flights seem similar, although sometimes with higher fees.<br />
<span id="more-521"></span><br />
N.B. In addition to the below fees, most airlines typically charge around $25 for checking an extra bag.</p>
<h3>Delta Air Lines</h3>
<p><a href="http://www.delta.com/traveling_checkin/baggage/special_baggage/musical_instruments/index.jsp">http://www.delta.com/traveling_checkin/baggage/special_baggage/musical_instruments/index.jsp</a></p>
<blockquote><p><strong>What Musical Instruments Can Be Checked?</strong><br />Musical instruments or equipment can be checked if the total linear dimension (length+width+height) does not exceed 115 inches (292 cm) and provided the weight, including the case, does not exceed 100 lbs. (45 kg).<br />Standard rules and fees for overweight and oversized baggage</p></blockquote>
<p><a href="http://www.delta.com/traveling_checkin/baggage/excess_baggage/index.jsp#oversize">http://www.delta.com/traveling_checkin/baggage/excess_baggage/index.jsp#oversize</a></p>
<blockquote><p>175 USD/CAD* for bags measuring 63–80 inches (161-203 cm) in combined length, width, and height. Some <a href="http://www.delta.com/traveling_checkin/baggage/special_baggage/index.jsp">Specialty Items</a> may be exempt from this fee.<br />
<br />300 USD/CAD* for bags measuring 81-115 inches (204-292 cm) in combined length, width, and height. Some <a href="http://www.delta.com/traveling_checkin/baggage/special_baggage/index.jsp">Specialty Items</a> may be exempt from this fee</p></blockquote>
<p><em>Summary &#8211; could cost over $300 but been lucky so far.</em></p>
<h3>Jetblue Airways</h3>
<p><a href="http://help.jetblue.com/SRVS/CGI-BIN/webisapi.dll/,/?St=351,E=0000000000047971896,K=4928,Sxi=18,Case=obj(2132)">http://help.jetblue.com/SRVS/CGI-BIN/webisapi.dll/,/?St=351,E=0000000000047971896,K=4928,Sxi=18,Case=obj(2132)</a></p>
<blockquote><p><strong>Musical instruments as checked baggage:</strong><br />
There is no charge for Musical instruments as long as they are within size and weight requirements. JetBlue accepts no liability for damage to Musical instruments. We suggest packing them in a hard-sided container designed for travel.</p></blockquote>
<p><a href="http://help.jetblue.com/SRVS/CGI-BIN/webisapi.dll/,/?St=351,E=0000000000047971896,K=4928,Sxi=18,Case=obj(634)">http://help.jetblue.com/SRVS/CGI-BIN/webisapi.dll/,/?St=351,E=0000000000047971896,K=4928,Sxi=18,Case=obj(634)</a></p>
<blockquote><p>63 &#8211; 80 inches (203.2 centimeters): $75 per bag<br />
Bags over 80 inches: Will not be accepted</p></blockquote>
<p><em>Summary: could be forced to buy an extra cabin ticket, or even turned away.</em> However they have a <a href="http://cellobello.com/blog/chamber_music/cello-is-my-co-pilot/">good reputation amongst cellists</a>.</p>
<h3>United Airlines</h3>
<p><a href="http://www.united.com/page/article/0,6867,50773,00.html#music">http://www.united.com/page/article/0,6867,50773,00.html#music</a></p>
<table border="0" cellspacing="0" cellpadding="0" width="460">
<tbody>
<tr valign="center">
<td width="222" valign="top" bgcolor="#f8f7f3"><span style="font-family: Arial, Helvetica; font-size: x-small;"><strong>Maximum weight/size for musical instruments as checked baggage<br />
</strong>50 pounds/62 linear inches<br />
(23 kg/158 linear cm)</span></td>
</tr>
</tbody>
</table>
<p>However standard oversized baggage allowed up to 115 linear inches:</p>
<p><a href="http://www.united.com/page/article/0,6867,52907,00.html#oversize">http://www.united.com/page/article/0,6867,52907,00.html#oversize</a></p>
<p>for fee of $100:</p>
<p><a href="http://www.united.com/page/article/1,,53403,00.html">http://www.united.com/page/article/1,,53403,00.html</a></p>
<p><em>Summary: musical instruments discriminated against and limited to max of 62&#8243; whereas other oversized baggage can go up to 115&#8243; for cost of $100.</em></p>
<h3>Frontier Airlines</h3>
<p><a href="http://www.frontierairlines.com/frontier/plan-book/travel-info-services/baggage/baggage-chart.do;jsessionid=5DBD43BCE9C1368C59705E648F626AD4">http://www.frontierairlines.com/frontier/plan-book/travel-info-services/baggage/baggage-chart.do;jsessionid=5DBD43BCE9C1368C59705E648F626AD4</a></p>
<p>For musical instruments, no extra charges but excess, oversize and overweight charges apply if applicable.</p>
<p><a href="http://www.frontierairlines.com/frontier/plan-book/travel-info-services/baggage/checked-baggage.do">http://www.frontierairlines.com/frontier/plan-book/travel-info-services/baggage/checked-baggage.do</a></p>
<blockquote><p>We know it&#8217;s a weighty issue, but please remember items which exceed 62 linear inches (length + width + depth) or weigh more than 50 pounds will incur a fee. There is a $75 fee for bags exceeding these weight limitations and a $75 fee for exceeding the size limitation. These fees are charged separately and one item can incur multiple fees. You can read more about baggage in the <a href="http://www.frontierairlines.com/frontier/pdf/Contract_of_Carriage.pdf" target="new">Contract of Carriage (PDF)</a>.<br />We take the safety of our passengers and employees very seriously. Frankly folks, our employees have to lift and carry these bags to get them to your flight and we&#8217;d really like to keep those checked bags under 50 pounds each. And, as much as we&#8217;d like to help, we don&#8217;t accept baggage that weighs more than 100 pounds or exceeds 110 linear inches (length + width + depth). If you need to transport items this large, please check with your favorite package delivery company. Thanks for your understanding of our policy.</p></blockquote>
<p><em>Summary: $75 worst case &#8211; the best policy I&#8217;ve found so far.</em></p>
<h3>Continental Airlines</h3>
<p><a href="http://www.continental.com/CMS/en-US/travel/Pages/BaggageExcess.aspx">http://www.continental.com/CMS/en-US/travel/Pages/BaggageExcess.aspx</a></p>
<blockquote><h4>Oversized Baggage</h4>
<ul>
<li>Customers who travel with checked baggage exceeding 62 linear inches (157 cm) (total length + width + height) will be charged at the rate of $100.00 per piece for travel within the U.S., and between the U.S. and Canada, Puerto Rico, and the U.S. Virgin Islands. Customers to Mexico, the Caribbean, Central America, and South America with oversize baggage will be charged at the rate of $200.00 per piece.</li>
<li>These charges are in addition to any charge assessed for additional or overweight baggage.</li>
<li>Baggage measuring more than 115 in (292 cm) (total outside dimensions; length + width + height) will not be accepted as checked baggage.</li>
</ul>
</blockquote>
<p><em>Summary: $100 worst case.</em></p>
<h3>American Airlines</h3>
<p><a href="http://www.aa.com/i18n/travelInformation/baggage/baggageAllowance.jsp#overweight">http://www.aa.com/i18n/travelInformation/baggage/baggageAllowance.jsp#overweight</a></p>
<blockquote><p>Checked baggage which is larger than 62 in/157 cm will be charged at the rate of $200 per piece.<br />Baggage measuring more than 126 in/320 cm will not be accepted as checked baggage.<br />&#8230;<br />Instruments may also be transported as checked baggage, however, due to their fragile nature AA does not accept liability for damages and has limited liability for loss. AA is also not liable for any damage to checked musical instruments not presented in a hard-sided case. If the outside of the hard-sided case does not have visible damage, AA is not liable for any damage to the musical instrument inside the case.</p></blockquote>
<p>The implications of the last two sentences don&#8217;t make any sense &#8211; if they do not accept liability for damage (as in the previous sentence), why even bother specifying requirements for hard cases and visible damage on the outside?</p>
<p><em>Summary: as bad as Delta, and with highly ambiguous wording regarding liability for damage.</em></p>
<h3>Conclusion</h3>
<p>Any cello case, even a non-flight case, will exceed the standard 62&#8243; limit for oversized checked baggage, and unless you are lucky at check-in, will incur a fee typically around $75 to $100. Most cello cases are unlikely to top the overweight baggage restrictions. Generally musical instruments are subject to a slightly different &#8220;special baggage&#8221; policy to normal checked baggage, but usually this amounts to a disclaimer of liability and similar or identical rules regarding dimensions.  Some airline policies are much worse, e.g. Delta, will potentially charge a whopping $300 for exceeding 80 linear inches, but having said that I have travelled with Delta several times and they didn&#8217;t charge me any oversize fee at all, just the extra checked item fee. United could potentially require a cabin ticket, and Frontier have the cheapest and most tolerant policy I&#8217;ve found so far.</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.adamspiers.org%2F2011%2F08%2F01%2Fflying-with-a-carbon-fibre-cello%2F&amp;title=Flying%20with%20a%20%28carbon%20fibre%29%20cello" id="wpa2a_14"><img src="http://blog.adamspiers.org/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.adamspiers.org/2011/08/01/flying-with-a-carbon-fibre-cello/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to never EVER lose your phone contacts again</title>
		<link>http://blog.adamspiers.org/2011/07/30/never-ever-lose-your-phone-contacts-again/</link>
		<comments>http://blog.adamspiers.org/2011/07/30/never-ever-lose-your-phone-contacts-again/#comments</comments>
		<pubDate>Sat, 30 Jul 2011 19:31:13 +0000</pubDate>
		<dc:creator>Adam</dc:creator>
				<category><![CDATA[front page]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[blackberry]]></category>
		<category><![CDATA[calendar]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[contacts]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[nokia]]></category>
		<category><![CDATA[phone]]></category>
		<category><![CDATA[sync]]></category>
		<category><![CDATA[syncML]]></category>
		<category><![CDATA[Windows phones]]></category>

		<guid isPermaLink="false">http://blog.adamspiers.org/?p=514</guid>
		<description><![CDATA[It continually astonishes me how often I see facebook status updates / group invites / tweets / emails from friends and acquaintances saying something to the effect of &#8220;ARGH my iPhone / Blackberry / Nokia phone has been stolen / lost / eaten by my pet donkey and I lost everyone&#8217;s numbers, please can you [...]]]></description>
			<content:encoded><![CDATA[<p>It continually astonishes me how often I see facebook status updates / group invites / tweets / emails from friends and acquaintances saying something to the effect of &#8220;ARGH my iPhone / Blackberry / Nokia phone has been stolen / lost / eaten by my pet donkey and I lost everyone&#8217;s numbers, please can you all send me your numbers!!&#8221;</p>
<p>People, it&#8217;s 2011 already! Whilst technology is still far from perfect, it landed a man on the moon 42 years ago way before mobile phones existed, and certainly solved this particular problem of disappearing phones several years ago.  So for those of you who still haven&#8217;t figured this out, without further ado I will outline a solution which should only cost 10 minutes of your life and ensure you never have to broadcast a panicked message cursing your pet donkey and asking everyone to send you their numbers.</p>
<p><span id="more-514"></span></p>
<h3>Android phones</h3>
<p>Firstly, if you already have a phone belonging to the <a href="http://www.mediapost.com/publications/?fa=Articles.showArticle&amp;art_aid=154896">rapidly growing</a> family of <a href="http://www.google.com/mobile/android/">Android phones</a> (such as any recent Samsung, HTC, Sony Ericsson or Motorola phone), then congratulations!  You&#8217;re immediately at an advantage.  If you have a <a href="http://www.google.com/intl/en/landing/accounts/">Google account</a>, you probably already linked your phone to it when you first went through the phone&#8217;s setup procedure, in which case your contacts / calendar / e-mail etc. are most likely already being automatically synchronised with your account, and are safely backed up within Google&#8217;s cloud.  To make sure, visit <a href="http://google.com/contacts">http://google.com/contacts</a> and you should see all your contacts listed in a very nice interface which lets you do other handy things like automatically merge duplicate contacts.</p>
<p>If you don&#8217;t see your contacts there, or you don&#8217;t have a Google account and/or never linked your phone with a Google account, take the following simple steps:</p>
<ol>
<li><a href="http://www.google.com/intl/en/landing/accounts/">Create a Google account</a> if you don&#8217;t have one already (it&#8217;s free)</li>
<li>On your phone, go to the Settings menu, select &#8220;Accounts &amp; sync settings&#8221;, and then ensure that your Google account is listed and that sync is enabled.</li>
</ol>
<h3>iPhones, Blackberries, Nokia / Windows / other vaguely modern phones</h3>
<p>Again the solution I would recommend is to set up automatic synchronization to a Google Account, because it&#8217;s free, proven to work, and means your data is backed up in the Google cloud, which statistically speaking is a far safer place to store your contacts than one of your own hard drives.  Instructions for these phones are listed here: <a href="http://www.google.com/mobile/sync/">http://www.google.com/mobile/sync/</a></p>
<p><iframe width="425" height="349" src="http://www.youtube.com/embed/Kt_-qHczCMg" frameborder="0" allowfullscreen></iframe></p>
<p>Even if you have a &#8220;dumb&#8221; (non-smart) phone, unless it is really ancient, the chances are that it supports SyncML which means that the above will work.  If however your phone is so old that it doesn&#8217;t even support SyncML then I would simply recommend that you upgrade.  Modern mobile handsets are so sophisticated that even the cheapest, most basic models (given away for free with low-cost contracts) will support SyncML.</p>
<h3>It&#8217;s more than just contacts</h3>
<p>If you follow the above suggestions, you&#8217;ll find that your phone&#8217;s calendar will automatically get synchronized too.</p>
<h3>Non-Google solutions</h3>
<p>If for some strange reason you are highly anti-Google, there are of course plenty of other options.  I&#8217;m not going to go into detail here, but here&#8217;s some food for thought:</p>
<ul>
<li><a href="http://www.macworld.com/article/154847/2010/10/mobileme_or_google.html">Choosing between MobileMe and Google</a></li>
<li><a href="http://www.tipb.com/2009/02/11/great-iphone-sync-debate-desktop-laptop-cloud/">The Great iPhone Sync Debate: Desktop, Laptop, or Cloud?</a></li>
</ul>
<h3>Wrapping up</h3>
<p>That&#8217;s all for now.  Hope it was useful &#8211; feel free to leave comments.  Oh, and here are two final suggestions for what to do if you see one of your poor friends send out a facebook message like the one at the top of this article:</p>
<ul>
<li>DON&#8217;T respond by posting your mobile phone number on their wall (do you <em>really</em> want the whole world to have your number?)</li>
<li>Send them the link to this article.</li>
</ul>
<p>&nbsp;</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.adamspiers.org%2F2011%2F07%2F30%2Fnever-ever-lose-your-phone-contacts-again%2F&amp;title=How%20to%20never%20EVER%20lose%20your%20phone%20contacts%20again" id="wpa2a_16"><img src="http://blog.adamspiers.org/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.adamspiers.org/2011/07/30/never-ever-lose-your-phone-contacts-again/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>An email I just sent to BT</title>
		<link>http://blog.adamspiers.org/2011/07/25/an-email-i-just-sent-to-bt/</link>
		<comments>http://blog.adamspiers.org/2011/07/25/an-email-i-just-sent-to-bt/#comments</comments>
		<pubDate>Mon, 25 Jul 2011 18:31:18 +0000</pubDate>
		<dc:creator>Adam</dc:creator>
				<category><![CDATA[hidden]]></category>
		<category><![CDATA[BT]]></category>
		<category><![CDATA[incompetence]]></category>
		<category><![CDATA[rants]]></category>

		<guid isPermaLink="false">http://blog.adamspiers.org/?p=511</guid>
		<description><![CDATA[Dear Sir/Madam, This is absolutely appalling support &#8211; all FIVE methods I tried for contacting BT regarding this issue failed: I responded to the email regarding incident number [CENSORED] providing a time and method for calling me as requested, but noone ever called back. I rang 0800 731 0286 and selected option 1 &#8211; it rang for several minutes with no answer [...]]]></description>
			<content:encoded><![CDATA[<p>Dear Sir/Madam,</p>
<p>This is absolutely appalling support &#8211; all FIVE methods I tried for contacting BT regarding this issue failed:</p>
<ol>
<li>I responded to the email regarding incident number [CENSORED] providing a time and method for calling me as requested, but noone ever called back.</li>
<li>I rang <a href="tel:0800%20731%200286">0800 731 0286</a> and selected option 1 &#8211; it rang for several minutes with no answer then hung me up.</li>
<li>There is a bug with your login process on <a href="http://btvoip.custhelp.com/" target="_blank">btvoip.custhelp.com</a> where the password dialog box is not shown alongside the username dialog box, so I could not log in.  Additionally  requesting a new password failed, as did re-registration.</li>
<li>Clicking &#8220;Contact Us&#8221; on <a href="http://btvoip.custhelp.com/" target="_blank">btvoip.custhelp.com</a> does nothing.</li>
<li>Clicking &#8220;Live Chat&#8221; on <a href="http://btvoip.custhelp.com/" target="_blank">btvoip.custhelp.com</a> results in the error &#8221;There was a problem connecting to the Chat Server&#8221;.</li>
</ol>
<p>All this is in regard to attempting to switch my landline back from Orange to BT.  Now I am beginning to wonder why I should bother.  At least I can talk to Orange, even if they get everything wrong.</p>
<p>If this ever reaches a human being, please call me as requested in my original email!</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.adamspiers.org%2F2011%2F07%2F25%2Fan-email-i-just-sent-to-bt%2F&amp;title=An%20email%20I%20just%20sent%20to%20BT" id="wpa2a_18"><img src="http://blog.adamspiers.org/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.adamspiers.org/2011/07/25/an-email-i-just-sent-to-bt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Audio looping with Free Software</title>
		<link>http://blog.adamspiers.org/2011/07/13/audio-looping-with-free-software/</link>
		<comments>http://blog.adamspiers.org/2011/07/13/audio-looping-with-free-software/#comments</comments>
		<pubDate>Wed, 13 Jul 2011 07:24:15 +0000</pubDate>
		<dc:creator>Adam</dc:creator>
				<category><![CDATA[front page]]></category>
		<category><![CDATA[music]]></category>
		<category><![CDATA[travel]]></category>
		<category><![CDATA[audacity]]></category>
		<category><![CDATA[audio]]></category>
		<category><![CDATA[Chris Howes]]></category>
		<category><![CDATA[JamMan]]></category>
		<category><![CDATA[jazz]]></category>
		<category><![CDATA[looping]]></category>
		<category><![CDATA[strings]]></category>

		<guid isPermaLink="false">http://blog.adamspiers.org/?p=490</guid>
		<description><![CDATA[I&#8217;m currently on a musical pilgrimage around the USA.  I brought my Digitech JamMan Delay unit with me, because I was attending Christian Howes&#8216; phenomenal Creative Strings Workshop in Columbus, Ohio, where I knew I would learn how to turn this gadget into a hugely useful practice tool.  (Incidentally, I was not disappointed, and will blog more [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m currently on a musical pilgrimage around the USA.  I brought my <a href="http://www.digitech.com/en-US/products/jamman-delay">Digitech JamMan Delay</a> unit with me, because I was attending <a href="http://christianhowes.com/education/">Christian Howes</a>&#8216; phenomenal <a href="http://christianhowes.com/education/creative-strings-workshop/">Creative Strings Workshop</a> in Columbus, Ohio, where I knew I would learn how to turn this gadget into a hugely useful practice tool.  (Incidentally, I was not disappointed, and will blog more when I get time about how awesome Chris&#8217; various educational offerings are.  Until then, click the links!)  Unfortunately at some point after leaving Ohio, the JamMan stopped working.  I guess it didn&#8217;t like being surrounded by a bunch of smelly clothes and then getting thrown in the hold of a plane. <em>(<span style="color: red">UPDATE Sept 22nd:</span> actually it turns out that it was fine &#8211; the power adapter just needed the UK standard of 240 Volts, and the US standard of 110V wasn&#8217;t sufficient &#8230;)</em></p>
<p><a href="http://blog.adamspiers.org/wp-content/uploads/2011/07/no-looper.png"><img class="alignright size-full wp-image-496" title="no loop pedals required!" src="http://blog.adamspiers.org/wp-content/uploads/2011/07/no-looper.png" alt="" width="258" height="220" /></a>So the other night I found myself desperate for a replacement.  I do have a <a href="http://www.bossus.com/gear/productdetails.php?ProductId=1001">Boss ME-70</a> with me which has a built-in phrase looper, but it only stores 38 seconds which is barely enough to get to the bridge of Cherokee.  Even worse, there is no way to undo/redo loop layers or store the whole thing after you power the unit off.</p>
<p>Then it occurred to me that I could potentially combine my laptop (a cheap Samsung N150 netbook) with a microphone, headphones (as a poor man&#8217;s substitute for an amp), and some software to achieve the same thing.  At this point, those of you with a Mac will exclaim &#8220;sure &#8211; use GarageBand!&#8221;  However, as shiny as Macs are, they are expensive and I also can&#8217;t stand Apple for philosophical reasons.  (I can&#8217;t stand Microsoft either, which is why I use Linux, but I digress.)  If you are interested in an alternative approach to looping with software, read on!</p>
<p><span id="more-490"></span></p>
<p>My netbook already has a built-in mic, which while surprisingly good for something so tiny, couldn&#8217;t ever hope to compete with a proper mic.  Plus it picks up noise every time you press a key or click a mouse.  Luckily however I recently bought an excellent little portable PCM / MP3 recording device when I was in New York: the <a href="http://pro.sony.com/bbsc/ssr/cat-audio/cat-recorders/product-PCMM10%2FB/">Sony PCM-M10</a>.  I&#8217;ve been using this to record all kinds of things on my travels &#8211; private lessons, groups classes/workshops, masterclasses, performances, jam sessions etc.  However one really cool feature is that if you press the red Record button, it goes into paused &#8220;ready to record&#8221; mode, at which point, any audio captured by its built-in stereo mics get passed straight through to the 3.5mm (1/8&#8243;) headphones / line out socket.  In other words, it will behave just like a pretty decent stereo mic!  So, one trip to Radioshack later, I had a male-to-male stereo cable for connecting the headphones socket to the microphone input on my laptop.</p>
<p>So at this point I could record fairly decent stereo audio directly using any simple recording software.  The next step was to see if I could find some good looping software&#8230; I tried out <a href="http://www.essej.net/sooperlooper/">SooperLooper</a> which looked very promising and is <a href="http://www.fsf.org/about/what-is-free-software">Free Software (free as in freedom, not just price)</a>, but I found the interface very confusing and poorly documented, despite only needing to do basic looping.  From 1996 until a few weeks ago, I was an IT professional, so if I struggled, it&#8217;s likely that less technically minded people would too.  Plus it only runs on Linux and MacOS X, which rules out anyone with Windows.  To be fair, I do believe that SooperLooper has a bright future &#8211; with a few tweaks and some comprehensive documentation, most of the difficulties could be eliminated.  But for now it isn&#8217;t quite right for what I need.</p>
<p>Then I looked very briefly at other Free Software loopers: <a href="http://kluppe.klingt.org/">Kluppe</a>, and <a href="http://freewheeling.sourceforge.net/">FreeWheeling</a>, but neither had enough polish, and trying to progress as a musician is hard enough without the distractions of trying to help fix software bugs.</p>
<p>Finally I realised <a href="http://audacity.sourceforge.net/">Audacity, the superb cross-platform sound editor</a>, could do everything I wanted, and actually do it surprisingly well!  So, here&#8217;s a first stab at explaining how to emulate a loop pedal with Audacity.  (Later I may collaborate with Chris to produce an instruction video on this&#8230;)</p>
<ol>
<li>Download and install <a href="http://audacity.sourceforge.net/">Audacity</a> &#8211; it&#8217;s <a href="http://www.fsf.org/about/what-is-free-software">Free Software</a> (as I said above, Free refers to freedom not just price, which is much cooler than freeware) and it works on Linux, Windows, <em>and</em> MacOS X.<a href="http://audacity.sourceforge.net/"></a></li>
<li>Ensure your computer can record audio via some kind of microphone (ideally a decent external one as explained above, but a built-in mic will do) or line in.</li>
<li>(Obviously) ensure your computer can play back audio to you.  When you add new layers onto the loop, you will be playing along with the existing layers.   If you&#8217;re using an acoustic instrument with mic, and want to avoid including sound from the existing layers getting mixed in with the new layer being recorded, one cheap trick is to use headphones instead of an amp/speakers.  This is what I do because I can&#8217;t lug an amp around on my travels.</li>
<li>Start up Audacity, click the red Record button, and check that it&#8217;s correctly recording sound from your mic or line in.  You should see a waveform appear, then hit Stop, and Play to check it&#8217;s working.</li>
<li>Click the cross in the newly recorded track to discard it.</li>
<li>(Optional but recommended) Record a count-in track.  This could simply be you saying &#8220;a-one, a-two, a one-two-three-four&#8221;, or four clicks from the metronome app on your phone, or whatever.  Leave a few seconds of silence before clicking the Stop button to stop the recording.</li>
<li>(Optional but recommended) Click &#8220;Audio Track&#8221; at the top left of the new waveform, click &#8220;Name&#8230;&#8221;, and enter something like &#8220;count in&#8221; as the new track name.  Optionally click the up arrow at the bottom left of the new waveform to shrink it vertically, if you want to save screen space.</li>
<li>Click the Record button, then record your first loop layer after the count in, then stop recording soon after (it doesn&#8217;t matter exactly when).  <a href="christianhowes.com/education/">Chris Howes</a> recommends that if you are using the looper as a practice tool to improve your internal pulse and groove, your first layer should contain as many of the subdivisions of whatever meter you&#8217;re playing in.  So if you&#8217;re in 4/4, consider starting with a chopping or comping pattern which covers all the eighth or sixteenth notes.  Then the bass line can come later and lock in with these nicely.</li>
<li>(Optional but recommended) Rename the track you just recorded, as in step 7.</li>
<li>Repeat steps 8 and 9 to record additional layers (you can also skip this for now and do it later).</li>
<li>Select the portion of audio across all tracks which corresponds to the loop you want, i.e. omitting the initial count-in and any trailing silence or noise.  To do this, drag the mouse from the left-most point within the second waveform (track) from the top (remember the top one was your count-in track) where the loop starts, and then drag to the right-most point where the loop ends in the bottom (i.e. most recently recorded) loop layer.  You should now see the desired loop region in all tracks but the count-in track turn a darker color.</li>
<li>Now hold down Shift and click the Play button, and you should hear your loop.  If the start or end isn&#8217;t quite right, move the mouse over either boundary, and drag it left or right, then stop playback and start it again to check that you got the right loop region.</li>
<li>When you&#8217;re happy, click Edit &gt; Play Region &gt; Lock to avoid accidentally changing the loop region.  (If you want to change it later, you&#8217;ll have to unlock it first, then repeat steps 12 and 13.)</li>
<li>Carry on recording new layers at will.  Existing layers can be muted, changed in volume, panned left/right, deleted, and edited in a zillion other cunning ways, because Audacity is primarily a sound editor, not a looper.</li>
<li>(Advanced usage &#8211; entirely optional) If you want to temporarily focus on practising a smaller portion of the loop, for example you can&#8217;t quite nail the Cherokee bridge or those pesky 9th and 10th measures of Countdown above 350bpm, then you can select those measures as in steps 11 and 12, but then click Tracks &gt; Add Label At Selection, and enter a label for this portion.  You&#8217;ll see a new label track containing the new labelled region, which can then be used to quickly select this portion for playback.  You&#8217;ll probably have to first unlock the play region set in step 13, so instead you might want to have a label for the whole loop too.</li>
<li>If you&#8217;re happy with the final result and want to keep it for another session, click File &gt; Save Project from the menu or hit Control+S.</li>
</ol>
<p>That&#8217;s it!  It may be a bit more involved than stomping on a couple of pedals, but it&#8217;s simpler than the steps above make it look, and it is a hell of a lot more flexible, doesn&#8217;t include the stress of having to stomp precisely when you start and finish playing, and doesn&#8217;t cost several hundred dollars either (yes, I&#8217;m writing this for an American audience, in case you hadn&#8217;t already noticed by the spelling and vocabulary above &#8230;)  The only downside is that you can&#8217;t do all the steps seamlessly for a live performance in the way a looper pedal lets you.</p>
<p>Hope that was useful.  Feel free to leave feedback in the comments!</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.adamspiers.org%2F2011%2F07%2F13%2Faudio-looping-with-free-software%2F&amp;title=Audio%20looping%20with%20Free%20Software" id="wpa2a_20"><img src="http://blog.adamspiers.org/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.adamspiers.org/2011/07/13/audio-looping-with-free-software/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>email nirvana</title>
		<link>http://blog.adamspiers.org/2011/05/15/email-nirvana/</link>
		<comments>http://blog.adamspiers.org/2011/05/15/email-nirvana/#comments</comments>
		<pubDate>Sun, 15 May 2011 15:33:00 +0000</pubDate>
		<dc:creator>Adam</dc:creator>
				<category><![CDATA[geek]]></category>
		<category><![CDATA[hidden]]></category>
		<category><![CDATA[gmail]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[gtd]]></category>
		<category><![CDATA[inbox]]></category>
		<category><![CDATA[lifehacks]]></category>
		<category><![CDATA[mail]]></category>

		<guid isPermaLink="false">http://blog.adamspiers.org/?p=473</guid>
		<description><![CDATA[Back in November 2010 I blogged about how I was chasing my dream of catching up on all personal mail, by automatically measuring my progress. Well, it worked &#8211; I finally made it!  For the first time in years, I finally have an empty inbox.  It turns out Google even hid a little Easter egg in gmail [...]]]></description>
			<content:encoded><![CDATA[<p>Back in November 2010 I <a href="http://blog.adamspiers.org/2010/11/28/measuring-inbox-sizes/">blogged about how I was chasing my dream of catching up on all personal mail, by automatically measuring my progress</a>. Well, it worked &#8211; I finally made it!  For the first time in <em>years</em>, I finally have an empty inbox.  It turns out Google even hid a little <a href="http://en.wikipedia.org/wiki/Easter_egg_(media)">Easter egg</a> in gmail to reward people who reach this state of bliss:</p>
<p style="text-align: center;"><a href="http://blog.adamspiers.org/wp-content/uploads/2011/05/no-gmail.png"><img class="aligncenter size-full wp-image-474" title="look ma, an empty inbox!" src="http://blog.adamspiers.org/wp-content/uploads/2011/05/no-gmail.png" alt="" width="664" height="263" /></a></p>
<p>This feels <em>good</em>.  Next up is to purge my massive TODO list of out of date entries and then re-evaluate what&#8217;s left &#8230;</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.adamspiers.org%2F2011%2F05%2F15%2Femail-nirvana%2F&amp;title=email%20nirvana" id="wpa2a_22"><img src="http://blog.adamspiers.org/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.adamspiers.org/2011/05/15/email-nirvana/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>harmonicas, and a reharmonisation of &#8220;Foreign Lander&#8221; by Tim O&#8217;Brien</title>
		<link>http://blog.adamspiers.org/2011/01/15/harmonicas-and-reharmonisation-of-foreign-lander-by-tim-obrien/</link>
		<comments>http://blog.adamspiers.org/2011/01/15/harmonicas-and-reharmonisation-of-foreign-lander-by-tim-obrien/#comments</comments>
		<pubDate>Sat, 15 Jan 2011 13:38:58 +0000</pubDate>
		<dc:creator>Adam</dc:creator>
				<category><![CDATA[front page]]></category>
		<category><![CDATA[music]]></category>
		<category><![CDATA[travel]]></category>
		<category><![CDATA[a capella]]></category>
		<category><![CDATA[Asia]]></category>
		<category><![CDATA[Foreign Lander]]></category>
		<category><![CDATA[harmonica]]></category>
		<category><![CDATA[jazz]]></category>
		<category><![CDATA[singing]]></category>
		<category><![CDATA[Tim O'Brien]]></category>

		<guid isPermaLink="false">http://blog.adamspiers.org/?p=414</guid>
		<description><![CDATA[How do three music addicts survive when attempting to travel for 25 days without a musical instrument? Answer: they cheat. I caved in on day 3 and bought a harmonica in Kuala Lumpur: Despite being sold as a &#8220;chromatic&#8221; harmonica, it could only manage a rough approximation to three octaves of C major. Also, the [...]]]></description>
			<content:encoded><![CDATA[<p>How do three music addicts survive when attempting to travel for 25 days without a musical instrument?  Answer: they cheat.  I caved in on day 3 and bought a harmonica in Kuala Lumpur:</p>
<p><a href="http://blog.adamspiers.org/wp-content/uploads/2011/01/harmonica.png"><img src="http://blog.adamspiers.org/wp-content/uploads/2011/01/harmonica.png" alt="" title="my harmonica" width="596" height="338" class="aligncenter size-full wp-image-438" /></a></p>
<p>Despite being sold as a &#8220;chromatic&#8221; harmonica, it could only manage a rough approximation to three octaves of C major.  Also, the holes are in a different place for the top octave, which meant every time I attempted the &#8220;do re mi&#8221; major scale, I accidentally finished with &#8220;&#8230; fa sol la ti MI&#8221; followed swiftly by a profanity, and consequent howls of laughter from Corinna.  It cost very little and sounded progressively worse the more I practiced it, although I only place the blame partially on the harmonica for that.  In case you don&#8217;t believe me, here&#8217;s the proof:</p>
<p><a href="http://blog.adamspiers.org/wp-content/uploads/2011/01/terrible-harmonica-scale.mp3">Download audio file (terrible-harmonica-scale.mp3)</a></p>
<p>(Now seems a good time to mention that if you haven&#8217;t already seen <a href="http://www.youtube.com/watch?v=HZsBL4d1Eus">Shane singing 5 octaves on the piano</a>, go and watch it immediately.)</p>
<p>Eli followed suit shortly after, although he managed to buy a harmonica which was not only roughly in tune with mine, but even stayed in tune with itself!  He also proved to be a quicker and more dedicated student than myself.  Nevertheless, by the time we reached Xmas day in Bangkok, we were able to give reasonably credible renditions of the harmonica duet version of Jingle Bells to our unsuspecting families over Skype.</p>
<p>Corinna sensibly eschewed<sup><a href="#f1">*</a></sup> such a crude instrument in favour, sorry, <em>favor</em> of something much sweeter &#8211; her voice.  She also steered us very gently away from the harmonicas towards singing too, although with my range being comparable to Shane&#8217;s, and Eli&#8217;s &#8220;occasionally unstable&#8221; falsetto, I&#8217;m not sure that was quite as sensible.</p>
<p>Anyway, I digress.  We learnt Tim O&#8217;Brien&#8217;s beautiful song &#8220;Foreign Lander&#8221;, and figured out some harmony and a bass line, which by the time of the final performance with banjo in Changi airport actually sounded pretty good!  If you don&#8217;t know the tune, this youtube video has the original version as its soundtrack:</p>
<p><object width="640" height="505"><param name="movie" value="http://www.youtube.com/v/m7lZ6CXdxxs?fs=1&amp;hl=en_GB"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/m7lZ6CXdxxs?fs=1&amp;hl=en_GB" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="505"></embed></object></p>
<p>However my jazz tendencies mean that I sometimes get the urge to take something simple and beautiful and do evil corrupt things to it.  So when I got back to London I <a href='http://blog.adamspiers.org/wp-content/uploads/2011/01/Foreign-Lander-reharmonisation.mp3'>reharmonised</a> it as follows:</p>
<p><a href="http://blog.adamspiers.org/wp-content/uploads/2011/01/Foreign-Lander-reharmonisation.mp3">Download audio file (Foreign-Lander-reharmonisation.mp3)</a></p>
<p>(If you know how to play the piano properly, please ignore the fact that I don&#8217;t &#8230;)</p>
<p><a name="f1">[*]</a> One of the many running themes of the trip was &#8220;words you write/understand but never say&#8221; &#8211; for me &#8216;eschewed&#8217; falls into this category.  &#8216;Sidewalk&#8217; used to too, but after 25 days with two Americans, I found it magically popping out of my mouth.  Eli came up with &#8216;idyllic&#8217;, Corinna with &#8216;laviscious&#8217; and &#8216;ephemeral&#8217;, and there were several others I will need help remembering&nbsp;&#8230;</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.adamspiers.org%2F2011%2F01%2F15%2Fharmonicas-and-reharmonisation-of-foreign-lander-by-tim-obrien%2F&amp;title=harmonicas%2C%20and%20a%20reharmonisation%20of%20%26%238220%3BForeign%20Lander%26%238221%3B%20by%20Tim%20O%26%238217%3BBrien" id="wpa2a_24"><img src="http://blog.adamspiers.org/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.adamspiers.org/2011/01/15/harmonicas-and-reharmonisation-of-foreign-lander-by-tim-obrien/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://blog.adamspiers.org/wp-content/uploads/2011/01/Foreign-Lander-reharmonisation.mp3" length="701752" type="audio/mpeg" />
<enclosure url="http://blog.adamspiers.org/wp-content/uploads/2011/01/terrible-harmonica-scale.mp3" length="557974" type="audio/mpeg" />
		</item>
		<item>
		<title>Singapore &#8211; Asia baby steps</title>
		<link>http://blog.adamspiers.org/2010/12/31/singapore-asia-baby-steps/</link>
		<comments>http://blog.adamspiers.org/2010/12/31/singapore-asia-baby-steps/#comments</comments>
		<pubDate>Fri, 31 Dec 2010 07:09:47 +0000</pubDate>
		<dc:creator>Adam</dc:creator>
				<category><![CDATA[front page]]></category>
		<category><![CDATA[travel]]></category>
		<category><![CDATA[Asia]]></category>

		<guid isPermaLink="false">http://blog.adamspiers.org/?p=383</guid>
		<description><![CDATA[As a Westerner you couldn&#8217;t ask for a gentle introduction to Asia than Singapore.  With English speakers and signage everywhere, shopping malls, American chain stores, and skyscrapers to rival New York, it would be entirely possible to completely miss out on the real Asian experience.  As the plane descended into the airport I even spotted [...]]]></description>
			<content:encoded><![CDATA[<p>As a Westerner you couldn&#8217;t ask for a gentle introduction to Asia than Singapore.  With English speakers and signage everywhere, shopping malls, American chain stores, and skyscrapers to rival New York, it would be entirely possible to completely miss out on the real Asian experience.  As the plane descended into the airport I even spotted a huge ferris wheel which looked near identical to the London Eye (near the right hand side of the image):<a href="http://blog.adamspiers.org/wp-content/uploads/2010/12/IMG_1098.jpg"><img class="aligncenter size-medium wp-image-388" title="Singapore from the air" src="http://blog.adamspiers.org/wp-content/uploads/2010/12/IMG_1098-300x225.jpg" alt="Singapore from the air" width="300" height="225" /></a></p>
<p>Luckily however Corinna booked us into a little place in the heart of Little India, which couldn&#8217;t be further from that mirror image of the West.  More on that later.</p>
<p>On arrival in the airport my first task was to locate Eli, which proved more difficult than anticipated as neither of us had remembered to agree a meeting plan, and somebody had accidentally directed him to the wrong terminal.  That hiccup aside, we finally figured out how to navigate the various metro lines to get to the hotel.  Immediately it became obvious how modernised public transport is here.  The trains were cleaner and quieter than in London, and even had coloured LEDs built in to the maps above the carriage doors, so you can see exactly where you are.</p>
<p>After freshening up at the hotel and re-arranging the contents of my shi﻿ny new backpack a few times, I headed out with Eli to soak up some of the local atmosphere.  It wasn&#8217;t long before we encountered our first of undoubtedly many temples on this trip, in this case an intricately decorated Hindu temple on an otherwise fairly bland road in the district:<a href="http://blog.adamspiers.org/wp-content/uploads/2010/12/IMG_1105.jpg"><img class="aligncenter size-medium wp-image-389" title="First of many temples in Asia" src="http://blog.adamspiers.org/wp-content/uploads/2010/12/IMG_1105-300x225.jpg" alt="First of many temples in Asia" width="300" height="225" /></a></p>
<p>We headed in the direction of where Corinna was about to finish work and experienced our first &#8220;Asian&#8221; shopping mall, which was incredibly similar to something you might find in London, other than a slightly creepy Santa at the entrance:<a href="http://blog.adamspiers.org/wp-content/uploads/2010/12/IMG_1104.jpg"><img class="aligncenter size-medium wp-image-390" title="Creepy Santa" src="http://blog.adamspiers.org/wp-content/uploads/2010/12/IMG_1104-300x225.jpg" alt="Creepy Santa" width="300" height="225" /></a></p>
<p>Then we found Corinna who had just finished work, and after playing human frogger on a large roundabout just as the heavens opened, the newly formed Epic Adventure Dream Team had our first meal together:</p>
<p>﻿﻿﻿<a href="http://blog.adamspiers.org/wp-content/uploads/2010/12/IMG_11081.jpg"><img class="aligncenter size-medium wp-image-392" title="first meal together" src="http://blog.adamspiers.org/wp-content/uploads/2010/12/IMG_11081-300x225.jpg" alt="first meal together" width="300" height="225" /></a></p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.adamspiers.org%2F2010%2F12%2F31%2Fsingapore-asia-baby-steps%2F&amp;title=Singapore%20%26%238211%3B%20Asia%20baby%20steps" id="wpa2a_26"><img src="http://blog.adamspiers.org/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.adamspiers.org/2010/12/31/singapore-asia-baby-steps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adventures in South East Asia Quiz</title>
		<link>http://blog.adamspiers.org/2010/12/24/adventures-in-south-east-asia-quiz/</link>
		<comments>http://blog.adamspiers.org/2010/12/24/adventures-in-south-east-asia-quiz/#comments</comments>
		<pubDate>Fri, 24 Dec 2010 16:58:21 +0000</pubDate>
		<dc:creator>Adam</dc:creator>
				<category><![CDATA[front page]]></category>
		<category><![CDATA[fun]]></category>
		<category><![CDATA[travel]]></category>
		<category><![CDATA[Asia]]></category>
		<category><![CDATA[quiz]]></category>

		<guid isPermaLink="false">http://blog.adamspiers.org/?p=374</guid>
		<description><![CDATA[&#8220;Which Team Leader Are You?&#8221; You are deciding how to pack for a 3.5 week trip to Southeast Asia. Do you: a) find a promising looking 46l pack and then revisit the same hiking shop twice more over three days deliberating whether it will﻿ be big enough, finally deciding it will after googling for packing advice [...]]]></description>
			<content:encoded><![CDATA[<h1>&#8220;Which Team Leader Are You?&#8221;</h1>
<p><strong>You are deciding how to pack for a 3.5 week trip to Southeast Asia.  Do you:</strong></p>
<p>a) find a promising looking 46l pack and then revisit the same hiking shop twice more over three days deliberating whether it will﻿ be big enough, finally deciding it will after googling for packing advice on your phone to find <a href="http://www.travelindependent.info/whattopack.htm">a backpacking article</a> which says that travelling light is the one true way to exploration nirvana?</p>
<p>c) pack all your worldly possessions into two small suitcases, move house, choose a tiny 32l pack over Skype which will fit 6 items of clothing which can be worn in a total of 712 ways, several phrasebooks, and large amounts of sickly sweet cough medicine?</p>
<p>e) opt for a rather charming and slightly oversized brown leather pouch from World War One, together with a 36l pack with attachments for two shoes which masquerade very effectively as two extra suitca﻿ses surreptitiously enough that no airline hostesses bat an eyelid when you take them on the plane as hand luggage?</p>
<p><strong>You&#8217;re feeling social and decide to check out the local nightlife.  Where do you go?</strong></p>
<p>a) You read every Lonely Planet publication and internet review for the best spots, and use Google Maps to successfully navigate to a beach party/concert of local music where you purchase a rá nâat and jam along.</p>
<p>c) You accidentally accept an offer from a John who asks to &#8220;enjoy&#8221; you, and after realizing your mistake and fleeing the scene, you spend the rest of the night practicing the Thai phrases for rejection.</p>
<p>e) You befriend two Thais who turn out to be diplomats who gift you an elephant on which you ride to Cambodia.</p>
<p><strong>The sun is up and Bangkok is bustling.  Wake up!  What is your breakfast choice?</strong></p>
<p>a) You don&#8217;t dare open your eyes before 10am.  Ask again later &#8230;</p>
<p>c) You haven&#8217;t exactly eaten in five days, but when you see a stall selling Pad Thai, you are instantly transformed into a drooling mutant and scarf down three servings in one bite.</p>
<p>e) Strange new food makes you happy.  You search out unrecognizable treats from street vendors, then skip off to find a boat ride, temple, or whatever might be around the corner before your companions are even conscious.</p>
<p><strong>After deciding to part ways for a few days to explore your favorite parts of Thailand, you arrive at BKK airport at your designated meeting point only to find your companions are missing.  Do you:</strong></p>
<p>a) write a computer program which hijacks government satellites and tracks down your friends?</p>
<p>c) never actually make it to the airport as you are still lost in a national forest somewhere in central Thailand?</p>
<p>e) buy a tuk-tuk in a chance encounter with a newfound Thai friend and drive it to Hanoi to meet them?</p>
<p><strong>You&#8217;ve been elected to choose lodgings in your next destination.  Do you choose:</strong></p>
<p>a) a room with ensuite bathroom, fast wifi, and at least 42 power outlets to charge your gadgets</p>
<p>c) the forest, as you are still lost and cannot find a hotel</p>
<p>e) a tin hut with local children, for the fee of a harmonica lesson</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.adamspiers.org%2F2010%2F12%2F24%2Fadventures-in-south-east-asia-quiz%2F&amp;title=Adventures%20in%20South%20East%20Asia%20Quiz" id="wpa2a_28"><img src="http://blog.adamspiers.org/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.adamspiers.org/2010/12/24/adventures-in-south-east-asia-quiz/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>flying East</title>
		<link>http://blog.adamspiers.org/2010/12/19/flying-east/</link>
		<comments>http://blog.adamspiers.org/2010/12/19/flying-east/#comments</comments>
		<pubDate>Sun, 19 Dec 2010 17:16:47 +0000</pubDate>
		<dc:creator>Adam</dc:creator>
				<category><![CDATA[front page]]></category>
		<category><![CDATA[travel]]></category>
		<category><![CDATA[Asia]]></category>

		<guid isPermaLink="false">http://blog.adamspiers.org/?p=373</guid>
		<description><![CDATA[Farewell England with your freezing / wet / windy climate and general lack of daylight, I&#8217;ve left you for a more exotic and more enticing alternative. I&#8217;ll probably reluctantly come back and pretend to beg for forgiveness in January, but right now I&#8217;m off to Singapore courtesy of the most excellent people at Quantas.  The [...]]]></description>
			<content:encoded><![CDATA[<p>Farewell England with your freezing / wet / windy climate and general lack of daylight, I&#8217;ve left you for a more exotic and more enticing alternative. I&#8217;ll probably reluctantly come back and pretend to beg for forgiveness in January, but right now I&#8217;m off to Singapore courtesy of the most excellent people at Quantas.  The parting shot from the British weather was a rather rubbish attempt at sleet which ended up looking like tiny polystyrene foam balls bouncing off the plane wings just before take off.</p>
<p>My general sense of smugness whilst settling in on the plane was furthered by Quantas&#8217; choice of relaxation music: Tina May (I think), the Pat Metheny / Brad Mehldau duo, and Herbie Hancock&#8217;s take on the slow movement of  Ravel&#8217;s piano concerto.  Finally an airline that eschews musack for real quality!  (God, I&#8217;m such a snob.)</p>
<p>The Quantas experience continued to impress.  The seatbacks had very large touchscreens with a slick interface to a wide range of films, &#8216;Skycam&#8217; offering a view out of the rear of the plane, and even phone calling, SMS, and webmail.</p>
<p>At the beginning of the flight, they explained that you could continue using the touch screens even after touchdown because &#8220;entertainment this good should be gate to gate&#8221;.  Nice!</p>
<p>They also provided a food menu card which included a very cool Journey Planner timeline showing what to expect for each hour of the flight, which is very useful when planning when to sleep:</p>
<p><a href="http://blog.adamspiers.org/wp-content/uploads/2010/12/IMG_1080.jpg"><img class="aligncenter size-medium wp-image-380" title="Quantas Journey Planner and menu" src="http://blog.adamspiers.org/wp-content/uploads/2010/12/IMG_1080-300x225.jpg" alt="" width="300" height="225" /></a></p>
<p>After a short stay in Singapore I&#8217;ll be travelling to Malaysia, Thailand, Vietnam, and maybe even Cambodia for a bit, with two of the best travel companions anyone could ask for.  Internet access is going to be sketchy in places so bear with me if these blogs arrive with you a little late.</p>
<p><em>P.S. OK so I&#8217;m way behind with these.  It&#8217;s just turned into Christmas day here in Bangkok!  Many pictures and stories still to come &#8230;</em></p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.adamspiers.org%2F2010%2F12%2F19%2Fflying-east%2F&amp;title=flying%20East" id="wpa2a_30"><img src="http://blog.adamspiers.org/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.adamspiers.org/2010/12/19/flying-east/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>measuring email inbox sizes</title>
		<link>http://blog.adamspiers.org/2010/11/28/measuring-inbox-sizes/</link>
		<comments>http://blog.adamspiers.org/2010/11/28/measuring-inbox-sizes/#comments</comments>
		<pubDate>Sun, 28 Nov 2010 17:35:08 +0000</pubDate>
		<dc:creator>Adam</dc:creator>
				<category><![CDATA[geek]]></category>
		<category><![CDATA[hidden]]></category>
		<category><![CDATA[gmail]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[gtd]]></category>
		<category><![CDATA[hacking]]></category>
		<category><![CDATA[lifehacks]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://blog.adamspiers.org/?p=349</guid>
		<description><![CDATA[Like many people, for a long time I have been drowning in email. I am perhaps bit unusual in that whilst my personal google inboxes are permanently overflowing, my work inboxes are generally very close to empty. This is because as a (bad) practitioner of GTD and sometime reader of Inbox Zero and similar sites, [...]]]></description>
			<content:encoded><![CDATA[<p>Like many people, for a long time I have been drowning in email.  I am perhaps bit unusual in that whilst my personal google inboxes are permanently overflowing, my work inboxes are generally very close to empty.  This is because as a (bad) practitioner of <a href="http://en.wikipedia.org/wiki/Getting_Things_Done">GTD</a> and sometime reader of <a href="http://inboxzero.com/">Inbox Zero</a> and similar sites, I <em>do</em> actually know <em>how</em> to get grips with email, and through professional pride apply the techniques fairly religiously when I&#8217;m working.  In contrast, when it comes to dealing with personal mail, I&#8217;ll always favour procrastinating on some other interesting project instead.  God forbid I should ever get my personal life in gear!</p>
<p>Well, this bad habit has been stressing me out for a LONG time now.  I&#8217;m a long-term fan of Gretchen Rubin&#8217;s <a href="http://www.happiness-project.com/">Happiness Project</a>, and the other day stumbled across one of her older posts entitled <a href="http://www.happiness-project.com/happiness_project/2009/03/measure-what-you-want-to-manage.html">Measure what you want to manage</a>.  I&#8217;d been wanting to graph the size of my inboxes over time, to get some grip on how bad my backlog actually is, and her post gave me the nudge to actually sort it out.</p>
<p>As usual, <a href="http://www.ruby-lang.org/en/">Ruby</a> makes it almost ridiculously easy.  There&#8217;s a beautiful written <a>gem</a> called <a href="http://rubydoc.info/gems/gmail/0.3.4/frames">gmail</a> which uses IMAP to talk to your gmail account.  So then it&#8217;s just a matter of writing a little program to append a line of gmail folder sizes to a CSV file every time it gets run:</p>
<pre class="brush: ruby; title: ; notranslate">
#!/usr/bin/env ruby

require 'pathname'
require 'rubygems'

# sudo gem install gmail
# Note: this is an improved version of Daniel Parker's ruby-gmail
# http://rubydoc.info/gems/gmail/0.3.4/frames
require 'gmail'

# sudo gem install fastercsv
require 'faster_csv'

USERNAME = 'your.account.name.goes.here@gmail.com'
PASSWORD = 'your.password.goes.here'

CSV_FILE = Pathname(ENV['HOME']).join(
  &quot;choose&quot;, &quot;a&quot;, &quot;path&quot;, &quot;to&quot;, &quot;gmail-counts.csv&quot;
)

labels = FasterCSV.open(CSV_FILE, 'r').shift[2..-1]

FasterCSV.open(CSV_FILE, 'a') do |csv|
  Gmail.connect(USERNAME, PASSWORD) do |gmail|
    now = Time.now
    counts = [ now.to_i.to_s, now.strftime(&quot;%Y/%m/%d.%H:%M:%S&quot;) ]
    labels.each do |label|
      unread = label.gsub!(/ unread$/, '')
      folder = gmail.mailbox(label)
      count = unread ? folder.count(:unread) : folder.count
      puts &quot;%s: %d (%d unread, %d read)&quot; % \
        [ label, count, folder.count(:unread), folder.count(:read) ]
      counts &lt;&lt; count
    end
    csv &lt;&lt; counts
  end
end
</pre>
<p>Then create <code>gmail-counts.csv</code> in the folder referenced in the script, whose header line contains a list of the labels you want counted (append <code>unread</code> if you want the unread count rather than the total, and prefix &#8220;special&#8221; gmail folders with <code>[Google Mail]/</code>.  Here&#8217;s an example of the header followed by a single line of folder counts:</p>
<pre class="brush: plain; title: ; notranslate">
epoch,datetime,INBOX,INBOX unread,[Google Mail]/Drafts,music
1290873125,11/27/2010.15:52:05,555,20,12,1596
</pre>
<p>Then make sure the program is automatically run on a regular basis somehow.  On Linux this is as simple as adding a new line into your <code><a href="http://en.wikipedia.org/wiki/Cron">crontab</a></code>.  My <a href="http://adamspiers.org/computing/quietrun">quietrun</a> utility comes in handy for this:</p>
<pre class="brush: plain; title: ; notranslate">
0 6,12,18 * * * quietrun /path/to/script/count-gmail
</pre>
<p>Then you can use Google Docs or your favourite spreadsheet / charting application to plot some nice graphs.  I used <a href="http://adamspiers.org/mail/gmail-counts.ploticus">this script</a> which is written in the <a href="http://ploticus.sourceforge.net/">Ploticus</a> graphing language; here is the result:</p>
<p><span title="Click to view image"><a href="http://adamspiers.org/mail/gmail-counts.png"><img src="http://adamspiers.org/mail/gmail-counts.png" alt="sample graph of gmail inbox size over time" width="700" /></a></span></p>
<p>Easy!</p>
<p><strong>UPDATE 5 months later! (15th May 2011): <a title="email nirvana" href="http://blog.adamspiers.org/2011/05/15/email-nirvana/">I finally made it!</a></strong></p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.adamspiers.org%2F2010%2F11%2F28%2Fmeasuring-inbox-sizes%2F&amp;title=measuring%20email%20inbox%20sizes" id="wpa2a_32"><img src="http://blog.adamspiers.org/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.adamspiers.org/2010/11/28/measuring-inbox-sizes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ideas in the shower</title>
		<link>http://blog.adamspiers.org/2010/11/19/ideas-in-the-shower/</link>
		<comments>http://blog.adamspiers.org/2010/11/19/ideas-in-the-shower/#comments</comments>
		<pubDate>Fri, 19 Nov 2010 18:01:16 +0000</pubDate>
		<dc:creator>Adam</dc:creator>
				<category><![CDATA[front page]]></category>
		<category><![CDATA[brain]]></category>
		<category><![CDATA[gtd]]></category>
		<category><![CDATA[ideas]]></category>

		<guid isPermaLink="false">http://blog.adamspiers.org/?p=340</guid>
		<description><![CDATA[Ever noticed how all your best ideas come in the shower? Well, this morning I had an idea in the shower &#8230; it was actually an idea about having ideas in the shower. I was thinking &#8220;I wonder how many good ideas I get here and then forget as soon as I walk out?&#8221;, and [...]]]></description>
			<content:encoded><![CDATA[<p>Ever noticed how all your best ideas come in the shower?  Well, this morning I had an idea in the shower &#8230; it was actually an idea about having ideas in the shower.  I was thinking &#8220;I wonder how many good ideas I get here and then forget as soon as I walk out?&#8221;, and then the solution popped into my head &#8211; waterproof whiteboards!</p>
<p>After wasting a few more minutes under the showerhead concocting highly delusional visions of setting up ShowerBoards&#8217;R'Us® to patent, manufacture, and market this revolutionary concept, making zillions, and retiring earlier, I had breakfast, got to work, and promptly forgot about the idea &#8230; until later, when in an ironic twist which perhaps demonstrates its worthlessness, I remembered it again and did a bit more research.</p>
<p>So it turns out that it&#8217;s not a remotely original idea (hey I didn&#8217;t say that <em>all</em> ideas originating in the shower were good), and in fact it&#8217;s very well documented that the shower is conducive to fresh thinking.  Mitch Ditkoff suggests <a href="http://www.business-strategy-innovation.com/wordpress/2010/08/20-reasons-why-the-best-ideas-come-in-the-shower/">20 reasons why the best ideas come in the shower</a>, although I have to say I can&#8217;t agree with #19 &#8211; &#8220;if you shower with a friend, and he/she happens to be in a brainstorming mode, lots of great ideas get sparked&#8221;.  If I&#8217;m sharing a shower with someone, brainstorming is not going to be the top priority.</p>
<p>There are <a href="http://totalwellbeing.blogspot.com/2008/01/shower-power-why-we-get-our-best-ideas.html">plenty more blogs on the same topic</a>.  Andy Hunt&#8217;s <a href="http://www.pragprog.com/titles/ahptl/pragmatic-thinking-and-learning">highly original book about the brain</a> suggests that using involving multiple senses during problem solving activates more neural pathways, and quotes the example of one study which showed a 500% improvement for students using multi-sensory techniques.  Clearly being in the shower activates different senses to sitting motionless staring at a monitor or book.</p>
<p>As a result, it&#8217;s not surprising to find that many people have already invented water-compatible solutions to this idea capturing problem.  For instance, on the forum belonging to <a href="http://www.davidco.com/">David Allen</a>&#8216;s <a href="http://en.wikipedia.org/wiki/Getting_Things_Done">Gettings Things Done (GTD)</a> company, there is a <a href="http://www.davidco.com/forum/showthread.php?2765-Capturing-ideas-in-the-shower&#038;s=8a5d5300cca2486f876606ac9e992cbc">whole thread</a> which suggests ideas such as voice-activated dictaphones, scuba diving slates, waterproof notepads and zip-lock bags, even memory tricks such as mnemonics and visualization.  One guy has even <a href="http://ericmackonline.com/emo/emonline.nsf/dx/Shower">installed an entire office wall next to his shower</a>, which is pretty hilarious.  In fact there are <a href="http://www.myaquanotes.com/">so</a> <a href="">many</a> waterproof notepads that I am going to have to buy one and spend a lot more time in the shower to have any chance of an early retirement&#8230;</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.adamspiers.org%2F2010%2F11%2F19%2Fideas-in-the-shower%2F&amp;title=ideas%20in%20the%20shower" id="wpa2a_34"><img src="http://blog.adamspiers.org/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.adamspiers.org/2010/11/19/ideas-in-the-shower/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>open letter to Avaaz</title>
		<link>http://blog.adamspiers.org/2010/10/21/open-letter-to-avaaz/</link>
		<comments>http://blog.adamspiers.org/2010/10/21/open-letter-to-avaaz/#comments</comments>
		<pubDate>Thu, 21 Oct 2010 12:14:42 +0000</pubDate>
		<dc:creator>Adam</dc:creator>
				<category><![CDATA[front page]]></category>
		<category><![CDATA[avaaz]]></category>
		<category><![CDATA[campaigns]]></category>
		<category><![CDATA[hilton]]></category>
		<category><![CDATA[language]]></category>
		<category><![CDATA[media]]></category>
		<category><![CDATA[politics]]></category>
		<category><![CDATA[propaganda]]></category>
		<category><![CDATA[sex slavery]]></category>

		<guid isPermaLink="false">http://blog.adamspiers.org/?p=309</guid>
		<description><![CDATA[Dear Avaaz, I am a huge fan of Avaaz and regularly sign petitions. The beneficial changes the organization has achieved so far across the world are truly staggering and inspirational. However the latest email I just received from you entitled &#8220;Hilton sex slaves&#8221; did not quite meet the high standards that I customarily expect, and [...]]]></description>
			<content:encoded><![CDATA[<p>Dear <a href="http://avaaz.org/en/">Avaaz</a>,</p>
<p>I am a <strong>huge</strong> fan of Avaaz and regularly sign petitions.  The beneficial changes the organization has achieved so far across the world are <a href="https://secure.avaaz.org/en/highlights/">truly staggering and inspirational</a>.</p>
<p>However the <a href="http://adamspiers.org/avaaz-hilton-sex-slaves-mail.html">latest email I just received from you entitled &#8220;Hilton sex slaves&#8221;</a> did not quite meet the high standards that I customarily expect, and in fact <em>demand</em> from an organisation whose now enormous membership base enables it to wield immense global political power.</p>
<p>The language used in the email sounds worryingly similar to the kind of article frequently found in the UK tabloid press, which deliberately uses sensationalist language (and frequent use of bold typeface) in order to manipulate the reader into agreeing with the writer&#8217;s viewpoint.<br />
<span id="more-309"></span><br />
For example, the 3-word email subject is vague enough to imply that Hilton <em>actively</em> promotes or even organizes sex slavery.  This is a far cry from an apathetic lack of preventative action, which is of course a genuine issue but nowhere near as bad.</p>
<p>Then the opening paragraph (&#8220;It&#8217;s shocking. Hilton [...] could be complicit [...]&#8220;) focuses on aggressive sensationalism rather than facts.  The Pope <em>could</em> be complicit in a heroin trafficking, but is that shocking?  No, of course it isn&#8217;t &#8211; until it&#8217;s proven fact, it remains unsubstantiated speculation.</p>
<p>Thirdly, the sidebar on the right states &#8220;Hilton refuses to sign an international code of conduct on sex trafficking&#8221; which directly contradicts this text in the main body of the article: &#8220;Hilton acknowledged its need to address the problem of child prostitution. But to date no concrete steps have been taken.&#8221;  Again, the former is an active refusal to act, whereas the latter is a passive failure to act.</p>
<p>It also seems slightly odd that Hilton has been singled out for this <a href="http://avaaz.org/en/hilton_sign_now/?fpla">campaign</a>, given that other <a href="http://www.tophotelchains.com/press_release_-_worlds_largest_hotel_brands_2010.php">huge hotel chains</a> such as IHG (incorporating Holiday Inn) and Marriott have not signed up to <a href="http://en.wikipedia.org/wiki/ECPAT">ECPAT</a>&#8216;s <a href="http://www.thecode.org/">Code of Conduct</a> either.  I appreciate that Hilton&#8217;s terrible track record in this area should compel them to act without hesitation, but it is important that your campaigns should remain as balanced as possible.  This could have been achieved by including a sentence in the email such as &#8220;Other large hotel chains such as IHG and Marriott have not signed up, but if we succeed in persuading Hilton to sign up, it will send out a strong message to their rivals to get on board too.&#8221;</p>
<p>Incidentally, the email omitted a link to <a href="http://www.thecode.org/">the ECPAT website</a>, which may seem like a trivial point, but it encourages your members to independently verify the facts provided, which strengthens the credibility of the campaign.</p>
<p>I should point out that I have no loyalties, connections, or other interests with Hilton or anyone else in the hotel industry.  I&#8217;m purely concerned that Avaaz campaigns maintain an extremely high level of quality and accountability, and that the Avaaz &#8220;brand&#8221; name continues to be perceived as completely trustworthy, so that you can continue these wonderful achievements.</p>
<p>So please, don&#8217;t be tempted to stoop to Rupert Murdoch&#8217;s level by using sensationalist or manipulative language &#8211; just keep focusing on the facts and let people make their own minds up.</p>
<p>Last but not least, many thanks for all your amazing work so far!</p>
<p>Regards,<br />
Adam Spiers<br />
UK</p>
<p>P.S. I have also published this as an open letter on my blog at <a href="http://blog.adamspiers.org/open-letter-to-avaaz">http://blog.adamspiers.org/open-letter-to-avaaz</a> and would be very happy to include any replies from you there.  (You can also comment directly there if you prefer.)</p>
<p>Sent via webform at <a href="http://avaaz.org/en/contact/">avaaz.org/en/contact</a></p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.adamspiers.org%2F2010%2F10%2F21%2Fopen-letter-to-avaaz%2F&amp;title=open%20letter%20to%20Avaaz" id="wpa2a_36"><img src="http://blog.adamspiers.org/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.adamspiers.org/2010/10/21/open-letter-to-avaaz/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Maven fail</title>
		<link>http://blog.adamspiers.org/2010/10/07/maven-fail/</link>
		<comments>http://blog.adamspiers.org/2010/10/07/maven-fail/#comments</comments>
		<pubDate>Thu, 07 Oct 2010 19:18:37 +0000</pubDate>
		<dc:creator>Adam</dc:creator>
				<category><![CDATA[geek]]></category>
		<category><![CDATA[hidden]]></category>
		<category><![CDATA[work]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[build]]></category>
		<category><![CDATA[dependencies]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[hacking]]></category>
		<category><![CDATA[make]]></category>
		<category><![CDATA[maven]]></category>
		<category><![CDATA[rants]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://blog.adamspiers.org/?p=277</guid>
		<description><![CDATA[In my recent work I have encountered Apache Maven, and I think the following snippet of real-world Maven code nicely sums up why Maven is not the idea replacement for the horror that is ant: Dear god. 34 lines and a plug-in, just to change the permissions on a file in a platform-specific way?? I [...]]]></description>
			<content:encoded><![CDATA[<p>In my recent work I have encountered <a href="http://maven.apache.org/">Apache Maven</a>, and I think the following snippet of real-world Maven code nicely sums up why Maven is <strong>not</strong> the idea replacement for <a href="http://blog.adamspiers.org/ant-dependency-fail/">the horror that is ant</a>:</p>
<pre class="brush: xml; title: ; notranslate">
  &lt;profiles&gt;
    &lt;profile&gt;
      &lt;id&gt;unix&lt;/id&gt;
      &lt;activation&gt;
        &lt;os&gt;
          &lt;family&gt;unix&lt;/family&gt;
        &lt;/os&gt;
      &lt;/activation&gt;
      &lt;build&gt;
        &lt;plugins&gt;
          &lt;plugin&gt;
            &lt;groupId&gt;org.codehaus.mojo&lt;/groupId&gt;
            &lt;artifactId&gt;exec-maven-plugin&lt;/artifactId&gt;
            &lt;executions&gt;
              &lt;execution&gt;
                &lt;id&gt;set-run-file-perms&lt;/id&gt;
                &lt;phase&gt;generate-resources&lt;/phase&gt;
                &lt;goals&gt;
                  &lt;goal&gt;exec&lt;/goal&gt;
                &lt;/goals&gt;
                &lt;configuration&gt;
                  &lt;executable&gt;chmod&lt;/executable&gt;
                  &lt;arguments&gt;
                    &lt;argument&gt;0755&lt;/argument&gt;
                    &lt;argument&gt;${project.build.directory}/foo.sh&lt;/argument&gt;
                  &lt;/arguments&gt;
                &lt;/configuration&gt;
              &lt;/execution&gt;
            &lt;/executions&gt;
          &lt;/plugin&gt;
        &lt;/plugins&gt;
      &lt;/build&gt;
    &lt;/profile&gt;
  &lt;/profiles&gt;
</pre>
<p>Dear god.  34 lines and a plug-in, just to change the permissions on a file in a platform-specific way??</p>
<p>I should add that the above was written by an extremely smart guy who is a top-notch programmer; no, I don&#8217;t think the author is at fault here.  Even if there&#8217;s a more concise/portable way of achieving the same result in Maven (and there might well be &#8211; I admit I&#8217;m still a Maven newbie), there&#8217;s still the undeniable fact that XML is horrendously verbose, and any code written in it is by nature unnecessarily difficult to maintain.  To this end I applaud the <a href="http://github.com/mrdon/maven-yamlpom-plugin/wiki">ongoing efforts supporting the use of YAML to implement the Maven POM</a>.</p>
<p>It&#8217;s worth seeing what the above would look like if we wrote it in <a href="http://rake.rubyforge.org/">rake</a>:</p>
<pre class="brush: ruby; title: ; notranslate">
require 'pathname'

desc &quot;Make binary executable&quot;
task :chmod do
  File.new(Pathname.new(build_dir) + &quot;foo.sh&quot;).chmod(0755)
end
</pre>
<p>I don&#8217;t think I need to make a case for which is more legible or maintainable.  Oh, <em>and</em> the Ruby version is cross-platform.</p>
<p>To continue an anti-XML rant which has been made <a href="http://www.google.co.uk/search?q=xml+sucks">countless times already</a>: what the ant and Maven people don&#8217;t seem to realise is that XML is not a real programming language and is therefore not expressive enough to deal with many cases that a build system needs.  The clue&#8217;s <a href="http://en.wikipedia.org/wiki/Xml">in the name</a>, guys!  &#8220;M&#8221; is for &#8220;markup&#8221; not &#8220;<a href="http://en.wikipedia.org/wiki/Turing_completeness">Turing-complete</a>&#8220;.  That&#8217;s why every time you need to do something vaguely unusual for which there isn&#8217;t an ant <code>taskdef</code> or Maven plugin, you have to write hundreds of lines more Java/XML just to cope with that case.  That&#8217;s why Maven needs so many damn plugins.</p>
<p>The accidental silver lining to this is that because it takes so much effort to accomplish simple tasks, Maven developers find themselves compelled to reuse and share plugins, and to be fair, Maven has some good ideas on how to do this, even if the implementation isn&#8217;t always the best.  For example, the built-in <a href="http://maven.apache.org/repository-management.html">plug-in repository management</a> and <a href="http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html">plug-in dependency management</a> seem to work nicely, but unfortunately for some reason it has a propensity to download plug-ins on most runs, far more frequently than any sensible caching layer should.</p>
<p><a href="http://en.wikipedia.org/wiki/Domain-specific_language">DSL</a> issues aside, I&#8217;m not convinced by <a href="http://en.wikipedia.org/wiki/Apache_Maven#Build_Lifecycles">the fixed lifecycle philosophy behind Maven</a> either.  I wonder if it was borne out of frustration with <a href="http://blog.adamspiers.org/ant-dependency-fail/">the lack of proper dependency checking in ant</a>.</p>
<p>That said, I do like how Maven encourages standardization of the build lifecycle and phase namespace thereof, since newcomers to a project immediately know some familiar entry points.  But the same could be said of 99% of projects which use Make and use standard rule target names such as <code>install</code> and <code>clean</code>.  And I suspect that many developers suffer when they try to shoe-horn their own project&#8217;s build requirements into Maven&#8217;s standard lifecycle.</p>
<p>My concern with this phased approach is that it is too linear.  The expectation is that a build process is a one-dimensional sequence of steps, and you get to choose your starting point but not much else.  This seems fundamentally wrong to me.  A build dependency tree is well understood to be a <a href="http://en.wikipedia.org/wiki/Directed_acyclic_graph">DAG</a>, and any build system which doesn&#8217;t model this properly seems to me to be burying its head in the sand.  On the other hand, if it does model it properly, which includes implementing proper dependency resolution, the required build lifecycle should emerge naturally without having to dictate that <code>generate-sources</code> comes before <code>compile</code> which comes before <code>test</code> and so on.</p>
<p>I&#8217;ve had some ideas of what the ideal build system looks like, and how to get there from the conventional Java world.  More on that soon.</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.adamspiers.org%2F2010%2F10%2F07%2Fmaven-fail%2F&amp;title=Maven%20fail" id="wpa2a_38"><img src="http://blog.adamspiers.org/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.adamspiers.org/2010/10/07/maven-fail/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>announcing rypper (again)</title>
		<link>http://blog.adamspiers.org/2010/05/20/announcing-rypper-again/</link>
		<comments>http://blog.adamspiers.org/2010/05/20/announcing-rypper-again/#comments</comments>
		<pubDate>Thu, 20 May 2010 21:54:21 +0000</pubDate>
		<dc:creator>Adam</dc:creator>
				<category><![CDATA[geek]]></category>
		<category><![CDATA[hidden]]></category>
		<category><![CDATA[work]]></category>
		<category><![CDATA[build service]]></category>
		<category><![CDATA[obs]]></category>
		<category><![CDATA[openSUSE]]></category>
		<category><![CDATA[packaging]]></category>
		<category><![CDATA[rpm]]></category>
		<category><![CDATA[rypper]]></category>
		<category><![CDATA[suse]]></category>
		<category><![CDATA[zypper]]></category>

		<guid isPermaLink="false">http://blog.adamspiers.org/?p=260</guid>
		<description><![CDATA[Back in August 2009, I announced the release of a simple script called rypper which I wrote to wrap around zypper and provide the ability to make batch operations on repositories. Here are some example usages: I only got one response so I assumed it wasn&#8217;t that useful to other people. However here I am [...]]]></description>
			<content:encoded><![CDATA[<p>Back in August 2009, I <a href="http://lists.opensuse.org/opensuse-softwaremgmt/2009-08/msg00002.html">announced the release</a> of a simple script called <code>rypper</code> which I wrote to wrap around <code><a title="zypper" href="http://en.opensuse.org/Zypper">zypper</a></code> and provide the ability to make batch operations on repositories.  Here are some example usages:</p>
<pre class="brush: bash; title: ; notranslate">
# list all disabled repos
rypper -d

# list all enabled repos with autorefresh off
rypper -e -R

# list all repos which have anything to do with KDE
rypper -x kde

# list priority and URIs for all repos whose alias contains 'home:'
rypper -a home: l -pu

# enable autorefresh on all OpenSUSE Build Service repos
rypper -u download.opensuse.org -R mr -r

# remove all repos on external USB HDD mounted on /media/disk
rypper -u /media/disk rr
</pre>
<p>I only got one response so I assumed it wasn&#8217;t that useful to other people.</p>
<p>However here I am at <a href="http://www.novell.com/brainshare/amsterdam/">BrainShare EMEA in Amsterdam</a> surrounded by like-minded geeks, and in a fit of enthusiasm / procrastination, I have finally got round to learning how to build <a href="http://wiki.opensuse.org/openSUSE:Build_Service">openSUSE Build Service</a> packages, and so proudly (?) present my first OBS package release: <a href="http://software.opensuse.org/search?baseproject=ALL&amp;p=1&amp;q=rypper">the 1-click install version of rypper</a>.  Enjoy!</p>
<p><strong>UPDATE 21 March 2011:</strong> based on feedback from <a href="http://www.novell.com/linux/">SLE</a> Product Management, I have submitted a <a href="https://fate.novell.com/312051">formal request</a> to have zypper extended to include this kind of functionality.</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.adamspiers.org%2F2010%2F05%2F20%2Fannouncing-rypper-again%2F&amp;title=announcing%20rypper%20%28again%29" id="wpa2a_40"><img src="http://blog.adamspiers.org/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.adamspiers.org/2010/05/20/announcing-rypper-again/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

