<?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>Base Six</title>
	<atom:link href="http://base6.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://base6.com</link>
	<description>James Furness&#039;s blog</description>
	<lastBuildDate>Mon, 21 Sep 2009 22:13:27 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=abc</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>JMM Synopsis</title>
		<link>http://base6.com/2009/09/15/jmm-synopsis/</link>
		<comments>http://base6.com/2009/09/15/jmm-synopsis/#comments</comments>
		<pubDate>Tue, 15 Sep 2009 10:32:49 +0000</pubDate>
		<dc:creator>James Furness</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Doug Lea]]></category>
		<category><![CDATA[JMM]]></category>

		<guid isPermaLink="false">http://base6.com/?p=77</guid>
		<description><![CDATA[Useful synopsis of the Java Memory Model from Doug Lea &#8211; in particular the clearest explanation I have found so far of the meaning of &#8220;happens-before&#8221;, and some useful definitions which helped to get a concrete idea of the semantics around safe-publication of variables through Thread.start()&#8230;
]]></description>
			<content:encoded><![CDATA[<p><a href="http://gee.cs.oswego.edu/dl/cpj/JMMsynopsis.html">Useful synopsis</a> of the Java Memory Model from <a href="http://gee.cs.oswego.edu/dl/">Doug Lea</a> &#8211; in particular the clearest explanation I have found so far of the meaning of &#8220;happens-before&#8221;, and some useful definitions which helped to get a concrete idea of the semantics around safe-publication of variables through Thread.start()&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://base6.com/2009/09/15/jmm-synopsis/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Server upgrade to Intel Atom Mini-ITX</title>
		<link>http://base6.com/2009/07/30/server-upgrade-to-intel-atom-mini-itx/</link>
		<comments>http://base6.com/2009/07/30/server-upgrade-to-intel-atom-mini-itx/#comments</comments>
		<pubDate>Thu, 30 Jul 2009 22:04:41 +0000</pubDate>
		<dc:creator>James Furness</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[atom]]></category>
		<category><![CDATA[intel]]></category>
		<category><![CDATA[ITX]]></category>
		<category><![CDATA[morex]]></category>

		<guid isPermaLink="false">http://base6.com/?p=74</guid>
		<description><![CDATA[My home linux server (formerly my desktop PC), which has been sitting in the corner of my lounge for a few years (with all fans other than the CPU fan unplugged in order to keep the noise down), finally blew up a few weeks ago. The motherboard was loading the BIOS but failing to recognise [...]]]></description>
			<content:encoded><![CDATA[<p>My home linux server (formerly my desktop PC), which has been sitting in the corner of my lounge for a few years (with all fans other than the CPU fan unplugged in order to keep the noise down), finally blew up a few weeks ago. The motherboard was loading the BIOS but failing to recognise the HDDs or boot from a CD despite the fact the HDD/CD seemed fine in another PC, so I presumed that the Southbridge had failed due to overheating.</p>
<p>I decided to switch to a low-power <a href="http://en.wikipedia.org/wiki/Mini-ITX">Mini-ITX</a> based design rather than replacing the broken motherboard with a comparable one, and after a quick bit of research decided upon an Intel <a href="http://www.intel.com/products/desktop/motherboards/D945GCLF2-D945GCLF2D/D945GCLF2-D945GCLF2D-overview.htm">D945GCLF2</a> motherboard &#8211; which is based around the Atom 330 (dual core 1.6 GHz) processor, 2 Gb of RAM and a Morex Venux 668 case from <a href="http://www.itx-warehouse.co.uk">ITX Warehouse</a>. A complete PC (excepting disks) with change to spare from £150 &#8211; pretty impressive!</p>
<p>The parts arrived two days later (I ordered after the 5pm cutoff), and within a few hours everything was installed in the new case and ready to go. I was amazed as Debian booted off of the old disk without any issues (try changing the motherboard architecture on Windows without reinstalling from scratch!). After some slight issues with the network I eventually realised the new network card was coming up as eth1 rather than eth0. A quick check of google revealed that the old network card needed to be <a href="http://forums.gentoo.org/viewtopic-t-689077-start-0-postdays-0-postorder-asc-highlight-.html">removed</a> from <code>/etc/udev/rules.d/70-persistent-net.rules</code>. Following this everything was up and running as before.</p>
<p>The fan on the D945GCLF2 is apparently notorious for becoming very noisy after a few weeks, and the fans in the case are of a similar diameter, so I am expecting my next project will be to replace these with either low-noise fans or passive cooling.</p>
]]></content:encoded>
			<wfw:commentRss>http://base6.com/2009/07/30/server-upgrade-to-intel-atom-mini-itx/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java Concurrency Refcard</title>
		<link>http://base6.com/2009/07/08/java-concurrency-refcard/</link>
		<comments>http://base6.com/2009/07/08/java-concurrency-refcard/#comments</comments>
		<pubDate>Wed, 08 Jul 2009 06:40:33 +0000</pubDate>
		<dc:creator>James Furness</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[alex miller]]></category>
		<category><![CDATA[DZone]]></category>
		<category><![CDATA[java concurrency]]></category>

		<guid isPermaLink="false">http://base6.com/?p=68</guid>
		<description><![CDATA[A handy concurrency refcard from Alex Miller is now available on DZone. Most of this should be second nature for experienced Java developers, but it provides a handy summary of concurrency and reminders of some of the less frequently used (and hence more easily forgotten) classes like ConcurrentSkipListSet, Atomic*Array etc.
]]></description>
			<content:encoded><![CDATA[<p>A handy <a href="http://tech.puredanger.com/2009/07/06/java-concurrency-refcard/">concurrency refcard</a> from Alex Miller is now available on <a href="http://refcardz.dzone.com/refcardz/core-java-concurrency">DZone</a>. Most of this should be second nature for experienced Java developers, but it provides a handy summary of concurrency and reminders of some of the less frequently used (and hence more easily forgotten) classes like <code>ConcurrentSkipListSet</code>, <code>Atomic*Array</code> etc.</p>
]]></content:encoded>
			<wfw:commentRss>http://base6.com/2009/07/08/java-concurrency-refcard/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Achieving Inbox Zero with GMail</title>
		<link>http://base6.com/2009/07/05/achieving-inbox-zero-with-gmail/</link>
		<comments>http://base6.com/2009/07/05/achieving-inbox-zero-with-gmail/#comments</comments>
		<pubDate>Sun, 05 Jul 2009 13:02:45 +0000</pubDate>
		<dc:creator>James Furness</dc:creator>
				<category><![CDATA[Lifehacking]]></category>
		<category><![CDATA[GMail]]></category>
		<category><![CDATA[GTD]]></category>
		<category><![CDATA[Inbox Zero]]></category>
		<category><![CDATA[Lifehacker]]></category>

		<guid isPermaLink="false">http://base6.com/?p=66</guid>
		<description><![CDATA[Some tips on using keyboard shortcuts to speed up daily GTD email chores.
I have personally been following a similar system also based upon Lifehacker&#8217;s trusted trio, but with &#8220;@&#8221; prefixes to the labels so they appear at the top of the list, filters so I can email todo items directly into my @action list and [...]]]></description>
			<content:encoded><![CDATA[<p>Some tips on <a href="http://www.andrewmcdonough.com/2009/07/02/reply-star-archive-spam-achieving-inbox-zero-using-four-important-keyboard-shortcuts-in-gmail/">using keyboard shortcuts</a> to speed up daily GTD email chores.</p>
<p>I have personally been following a similar system also based upon Lifehacker&#8217;s <a href="http://lifehacker.com/347335/empty-your-inbox-with-gmail-and-the-trusted-trio">trusted trio</a>, but with <a href="http://neildixon.com/gmail-gtd-a-practical-method-for-harnessing-your-inbox/">&#8220;@&#8221; prefixes to the labels</a> so they appear at the top of the list, <a href="http://techwraith.com/2009/02/gtd-with-gmail-filters-labels-quick-links-and-multiple-inboxes/">filters</a> so I can email todo items directly into my @action list and using the google labs Multiple Inboxes feature to display action/deferred/waiting emails alongside my inbox.</p>
]]></content:encoded>
			<wfw:commentRss>http://base6.com/2009/07/05/achieving-inbox-zero-with-gmail/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VirtualBox</title>
		<link>http://base6.com/2009/07/04/virtualbox/</link>
		<comments>http://base6.com/2009/07/04/virtualbox/#comments</comments>
		<pubDate>Sat, 04 Jul 2009 17:45:13 +0000</pubDate>
		<dc:creator>James Furness</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[AMD-V]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[VirtualBox]]></category>
		<category><![CDATA[virtualisation]]></category>
		<category><![CDATA[VMWare]]></category>
		<category><![CDATA[VT-x]]></category>

		<guid isPermaLink="false">http://base6.com/?p=62</guid>
		<description><![CDATA[I have been having some problems with my employers&#8217; remote access system which uses Aventail SonicWall. Unfortunately it seems that whilst it was previously working fine, some change to my PC means that the Aventail applet (used to verify the endpoint is running the Aventail system scanning agent) does not work correctly so access is [...]]]></description>
			<content:encoded><![CDATA[<p>I have been having some problems with my employers&#8217; remote access system which uses <a href="http://www.aventail.com/">Aventail</a> SonicWall. Unfortunately it seems that whilst it was previously working fine, some change to my PC means that the Aventail applet (used to verify the endpoint is running the Aventail system scanning agent) does not work correctly so access is not granted. After spending several hours on the phone to my employers&#8217; IT Helpdesk reinstalling different versions of Firefox, IE and Java, I was told my only hope was to reinstall Windows.</p>
<p>Somewhat loathe to do this, at a colleague&#8217;s suggestion I decided to instead try connecting via a VM running under <a href="http://www.virtualbox.org/">VirtualBox</a>. This has been my first foray into virtualisation (other than <a href="http://www.xen.org/">Xen</a>) since trying out <a href="http://www.vmware.com/">VMWare</a> about a decade ago. VirtualBox seems to have all of the features I remember from VMWare (with the added advantage of being free), and it was fairly quick to set up an Ubuntu VM. It also seems that network support has vastly improved from my early memories and the VM had internet access without requiring any manual intervention. And of course there is now support for <a href="http://en.wikipedia.org/wiki/X86_virtualization">hardware virtualisation </a>(AMD-V/VT-x) which should in theory make the VM run faster.</p>
<p>Unfortunately stability seems to be somewhat lacking, the VM seems to hang from time to time, requiring it to be &#8220;powered off&#8221; and restarted (as a virtual reset does not seem to work). Also the &#8220;Seamless Mode&#8221; support doesn&#8217;t seem to be as seamless as I had hoped &#8211; although it does remove the guest OS&#8217;s desktop, when windows are moved or resized it seems that the &#8220;hole&#8221; in the host desktop through which they are visible does not resize with them, so the window ends up being cut off when enlarged in size or part of the guest desktop becomes visible when reduced in size.</p>
<p>Still, not bad for a free virtual machine&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://base6.com/2009/07/04/virtualbox/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Thanks RAID!</title>
		<link>http://base6.com/2009/06/21/thanks-raid/</link>
		<comments>http://base6.com/2009/06/21/thanks-raid/#comments</comments>
		<pubDate>Sun, 21 Jun 2009 22:41:37 +0000</pubDate>
		<dc:creator>James Furness</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[RAID]]></category>
		<category><![CDATA[raid 5 array]]></category>
		<category><![CDATA[western digital]]></category>

		<guid isPermaLink="false">http://base6.com/?p=60</guid>
		<description><![CDATA[After occasionally wondering over the past 2 years whether spending money on extra drives to build a RAID 5 array in my desktop PC was worthwhile, I now feel vindicated after one of my drives (a Western Digital WD5000YS) failed over the weekend. Upon restarting my PC, Intel Matrix Storage Console was able to identify [...]]]></description>
			<content:encoded><![CDATA[<p>After occasionally wondering over the past 2 years whether spending money on extra drives to build a RAID 5 array in my desktop PC was worthwhile, I now feel vindicated after one of my drives (a Western Digital <a href="http://www.dabs.com/products/western-digital-caviar-re2-500gb-s300-16mb-44JC.html">WD5000YS</a>) failed over the weekend. Upon restarting my PC, Intel Matrix Storage Console was able to identify the failed drive, but it was impossible to actually use the computer due to constant delayed write error notifications and constant freezing. After noting down the serial number of the failed drive from Storage Console, I was able to remove the failed drive, and my PC is again working although the volume now shows Degraded status.</p>
<p>Even better, <a href="http://www.wdc.com/">Western Digital</a> have an Advance Replacement RMA program where the replacement drive is shipped immediately without needing to first return the faulty drive. They reserve the value of the replacement from your credit card, and this is not deducted as long as the faulty drive is returned within 30 days.</p>
]]></content:encoded>
			<wfw:commentRss>http://base6.com/2009/06/21/thanks-raid/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>iPhone OS 3.0</title>
		<link>http://base6.com/2009/06/21/iphone-os-3-0/</link>
		<comments>http://base6.com/2009/06/21/iphone-os-3-0/#comments</comments>
		<pubDate>Sun, 21 Jun 2009 22:00:48 +0000</pubDate>
		<dc:creator>James Furness</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[iPhone OS 3.0]]></category>
		<category><![CDATA[o2]]></category>
		<category><![CDATA[Spotlight]]></category>

		<guid isPermaLink="false">http://base6.com/?p=53</guid>
		<description><![CDATA[After repeatedly retrying the upgrade for about 3 hours due to activation server errors I was finally able to upgrade by Wednesday evening.
Since then things have gone pretty smoothly. Finally having the ability to copy and paste is a godsend, as are basic things one would expect from a phone like sending contacts to other [...]]]></description>
			<content:encoded><![CDATA[<p>After repeatedly retrying the upgrade for about 3 hours due to <a href="http://twitpic.com/7n3h1">activation server errors</a> I was finally able to upgrade by Wednesday evening.</p>
<p>Since then things have gone pretty smoothly. Finally having the ability to copy and paste is a godsend, as are basic things one would expect from a phone like sending contacts to other people via MMS/email (unfortunately no SMS), receiving MMSes (although it took 12 hours for O2 to respond to my activation SMS) etc.</p>
<p>Spotlight (the search feature on the home screen) seems useful, although emails not downloaded from the server will not be searched. In order search mails on the server, the search function inside Mail has to be used &#8211; a search box has been added which appears when scrolling all the way to the top of a mailbox in email, and after searching emails on the phone, a &#8220;Continue Search on Server&#8221; option is presented which uses the <a href="http://tools.ietf.org/html/rfc3501#section-6.4.4">IMAP SEARCH</a> command to search mail on the server.</p>
<p>The phone screen also seems to have been pimped somewhat with more information visible on the recent calls listing to show which of a contact&#8217;s numbers (home/mobile/work/etc) the entry refers to. Had a problem for a few hours after the upgrade where the names of my favourite numbers had been replaced by their telephone numbers, but that seems to have gone away on its own.</p>
<p>The maps application looks very slightly different, with slightly different graphic for the GPS location. Also the iPod application now supports more precise scrubbing to find a position in a track &#8211; by dragging your finger down the resolution increases. Also there are a bunch <a href="http://www.pcworld.com/article/166903/iphone_30_update_10_hidden_features.html">more tweaks</a> I haven&#8217;t yet tried&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://base6.com/2009/06/21/iphone-os-3-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Migrating from GMail to Google Apps</title>
		<link>http://base6.com/2009/06/15/migrating-from-gmail-to-google-apps/</link>
		<comments>http://base6.com/2009/06/15/migrating-from-gmail-to-google-apps/#comments</comments>
		<pubDate>Mon, 15 Jun 2009 19:06:50 +0000</pubDate>
		<dc:creator>James Furness</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[GMail]]></category>
		<category><![CDATA[Google Apps]]></category>
		<category><![CDATA[imapsync]]></category>

		<guid isPermaLink="false">http://base6.com/?p=24</guid>
		<description><![CDATA[A quick guide to migrating contacts, calendar, email and email filters from GMail to Google Apps.]]></description>
			<content:encoded><![CDATA[<p>A quick guide to migrating contacts, calendar, email and email filters from GMail (<em>user@gmail.com</em>) to <a href="http://www.google.com/a/">Google Apps</a> (<em>user@domain.com</em>).<br />
<span id="more-24"></span></p>
<h3>Calendar Entries</h3>
<ol>
<li>On GMail calendar, goto Settings -&gt; Calendars -&gt; Export Calendars to download a ZIP of your calendars in ICAL format.</li>
<li>On Google Apps calendar, goto Settings -&gt; Calendars -&gt; Import calendar and import the ICAL entries to your calendar.</li>
</ol>
<h3>Contacts</h3>
<p>To preserve contact groups, each group needs to be migrated individually.</p>
<ol>
<li>On GMail contacts, use the Export option to export each group in Google&#8217;s CSV format. Then export one more CSV of &#8220;Everyone (All Contacts)&#8221;</li>
<li>On Google Apps contacts:
<ol>
<li>Use the Import option to import the CSV of Everyone, leaving the  &#8220;Add these imported contacts to: &#8221; option unchecked.</li>
<li>Then use the Import option to import each group in turn, checking the &#8220;Add these imported contacts to: New Group&#8230; &#8221; option, and enter the name of the group.</li>
</ol>
</li>
</ol>
<h3>Google Sync</h3>
<p>At this point you might want to switch Google Sync over to your Google Apps account. Follow the steps <a href="http://www.google.com/support/mobile/bin/answer.py?answer=138740&amp;topic=14252">here</a>, but enter your Google Apps email address instead of your GMail address. You then need to go through the steps <a href="http://www.google.com/support/mobile/bin/answer.py?answer=139206&amp;ctx=sibling&amp;topic=14252">here</a> and sign in with your Google Apps account to select which calendars to sync. Remember to click the &#8220;Google Apps User?&#8221; link rather than trying to go through the normal GMail login page &#8211; your Google Apps email will not work there!</p>
<h3>Email Filters</h3>
<p>If you have any rules defined to filter/label your incoming mail, you can export these using  &#8220;Filter import/export&#8221; in GMail labs:</p>
<ol>
<li> Go to Settings -&gt; Labs and check &#8220;Enable&#8221; for the &#8220;Filter import/export&#8221; option on both your GMail and Google Apps account.</li>
<li>In your GMail account, go to Settings -&gt; Filters, click Select All and then Export, and save the XML document somewhere.</li>
<li>In your Gogle Apps account, go to Settings -&gt; Filters and then &#8220;Import filters&#8221;, select the file you saved in the previous step, and press &#8220;Open file&#8221;.</li>
</ol>
<h3>Email Delivery</h3>
<p>You should now be ready to switch over your email. Hopefully your MX records already point at Google Apps and you have email forwarding set up from Google Apps to your GMail. If you don&#8217;t, you should set this up before you start trying to move your email.</p>
<p>Now is when you must commit to migrating by having all your new mail delivered to Google Apps instead of GMail!</p>
<ol>
<li>Login <a href="http://www.google.com/a/">here</a>, select &#8220;Manage this domain&#8221;, and ensure that in Users and Groups you have a user set up for the Google Apps email address you want to migrate your GMail to. If you created a group to forward the email address to GMail you will need to delete this group before you can create the user.</li>
<li>Use the Inbox link at the top right to log in to the mailbox for the user (signing out if you are not currently logged in as that user).</li>
<li>Send a test email to your Google Apps email address to ensure that you are receiving email correctly.</li>
<li>Log in to your GMail account, go to Settings -&gt; Forwarding and POP/IMAP and enable forwarding to your Google Apps address.</li>
</ol>
<p>You should now be receiving all your email in your Google Apps mailbox. You may also need to update POP3/IMAP settings for any mail clients you are using.</p>
<h3>Old Emails</h3>
<p>The hardest part is now to migrate your old emails from your GMail mailbox to Google Apps. Google provide a number of <a href="http://www.google.com/support/a/bin/answer.py?hl=en&amp;answer=57920">officially supported options</a>, however none of these are ideal &#8211; <a href="https://mail.google.com/support/bin/answer.py?answer=21288">Mail Fetcher</a> is only intended for new emails rather than migrating old emails, <a href="http://mail.google.com/mail/help/email_uploader.html">Email Uploader</a> requires you to have all your email in Outlook, and <a href="http://google.com/support/a/bin/answer.py?answer=61369">IMAP Mail Migration</a> requires you to upgrade to Google Apps Pro (but looks like a pretty good option other than that).</p>
<p>I decided to go for a free approach, using <a href="http://freshmeat.net/projects/imapsync/">imapsync</a> based upon <a href="http://www.thamtech.com/blog/2008/03/29/gmail-to-google-apps-email-migration/">these instructions</a>. However I found that imapsync would frequently give up without copying the entire folder. I initially thought this was because the number of messages was too large, so I used the following script to split the mail into chunks by folder and also by date. I also tweaked the regexes to rewrite To/From/CC/BCC headers, and to be a little more tolerant of malformed headers:</p>
<blockquote>
<pre>#!/bin/bash

LOGFILE=imapsync.log
FOLDERS=( 'Folder1' 'Folder2' 'Folder3' 'Folder4' '...' 'FolderN' 'INBOX' 'All Mail' 'Bin' 'Drafts' 'Starred' 'Sent Mail' )
TIMES=( '--minage 1090' '--maxage 1091 --minage 999' '--maxage 1000 --minage 908' '--maxage 909 --minage 817' '--maxage 818 --minage 726' '--maxage 727 --minage 635' '--maxage 636 --minage 544' '--maxage 545 --minage 453' '--maxage 454 --minage 362' '--maxage 363 --minage 271' '--maxage 272 --minage 180' '--maxage 181 --minage 89' '--maxage 90' )

echo "Starting" &gt; $LOGFILE

for FOLDER in "$@"
do
 for ((j=0;j&lt;${#TIMES};j++))
 do
 TIME=${TIMES[${j}]}

 echo "" &gt;&gt; $LOGFILE
 echo "*** $FOLDER $TIME ***" &gt;&gt; $LOGFILE
 echo "" &gt;&gt; $LOGFILE

 while ! ~/imapsync-1.267/imapsync --host1 imap.gmail.com \
 --port1 993 --user1 user@gmail.com \
 --passfile1 ./passfile --ssl1 \
 --host2 imap.gmail.com \
 --port2 993 --user2 user@domain.com \
 --passfile2 ./passfile --ssl2 \
 --syncinternaldates --split1 100 --split2 100 \
 --authmech1 LOGIN --authmech2 LOGIN \
 --include "$FOLDER" \
 $TIME \
 --useheader "Message-ID" \
 --useheader "Date" --skipsize \
 --regexmess 's/Delivered-To: user\@gmail.com/Delivered-To: user\@domain.com/gi' \
 --regexmess 's/&lt;user\@gmail.com&gt;/&lt;user\@domain.com&gt;/gi' \
 --regexmess 's/^((To|From|Cc|Bcc):.*)user\@gmail.com(.*)$/$1user\@domain.com$3/gim' \
 --regexmess 's/Subject:(\s*)\n/Subject: (no--subject)$1\n/ig' \
 --regexmess 's/Subject: ([Rr][Ee]):(\s*)\n/Subject: $1: (no--subject)$2\n/gi' &gt;&gt; $LOGFILE 2&gt;&amp;1; do
 echo "" &gt;&gt; $LOGFILE
 echo "***** NOT COMPLETE - $FOLDER $TIME *****" &gt;&gt; $LOGFILE
 echo "" &gt;&gt; $LOGFILE
 tail -100 $LOGFILE | mail -s "Imapsync Restarting for $FOLDER $TIME" "user@domain.com"

 echo -n "Sleeping..." &gt;&gt; $LOGFILE
 sleep 1m
 echo "Done." &gt;&gt; $LOGFILE
 done

 echo "" &gt;&gt; $LOGFILE
 echo "***** COMPLETE - $FOLDER $TIME*****" &gt;&gt; $LOGFILE
 echo "" &gt;&gt; $LOGFILE
 tail -100 $LOGFILE | mail -s "Imapsync Complete for $FOLDER $TIME" "user@domain.com"
 done
done

echo "**** DONE ****" &gt;&gt; $LOGFILE
tail -100 $LOGFILE | mail -s "Imapsync Complete" -c "user@domain.com"</pre>
</blockquote>
<p>The script writes to a logfile, and emails the last 100 lines upon completion. I found this useful as some messages could not be copied. After some debugging I was able to locate these by searching for the Message-ID in my GMail to discover that they were all old messages imported from Outlook which had corrupted headers (newlines inside the header, so the Message-ID could not be found by imapsync). Manually deleting the corrupted messages from my GMail allowed the sync process to complete.</p>
]]></content:encoded>
			<wfw:commentRss>http://base6.com/2009/06/15/migrating-from-gmail-to-google-apps/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Domain Specific Languages for automated testing of FIX messaging</title>
		<link>http://base6.com/2009/06/15/domain-specific-languages-for-automated-testing-of-fix-messaging/</link>
		<comments>http://base6.com/2009/06/15/domain-specific-languages-for-automated-testing-of-fix-messaging/#comments</comments>
		<pubDate>Mon, 15 Jun 2009 10:37:08 +0000</pubDate>
		<dc:creator>James Furness</dc:creator>
				<category><![CDATA[Finance]]></category>
		<category><![CDATA[Automated Testing]]></category>
		<category><![CDATA[DSL]]></category>
		<category><![CDATA[FIX]]></category>
		<category><![CDATA[Oslo]]></category>

		<guid isPermaLink="false">http://base6.com/?p=35</guid>
		<description><![CDATA[A DSL using the "Oslo" toolset that is capable of expressing order generation and responses from a range of market behaviors in terms of FIX messages in a dialect suitable for use by traders and financial engineers]]></description>
			<content:encoded><![CDATA[<p>Via <a href="http://dougfinke.com/blog/index.php/2009/06/13/domain-specific-languages-for-automated-testing-of-equity-order-management-systems-and-trading-machines/">Doug Finke</a>:</p>
<blockquote><p>A DSL using the &#8220;Oslo&#8221; toolset that is capable of expressing order generation and responses from a range of market behaviors in terms of FIX messages in a dialect suitable for use by traders and financial engineers</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://base6.com/2009/06/15/domain-specific-languages-for-automated-testing-of-fix-messaging/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>NonBlockingHashMap</title>
		<link>http://base6.com/2009/06/15/nonblockinghashmap/</link>
		<comments>http://base6.com/2009/06/15/nonblockinghashmap/#comments</comments>
		<pubDate>Mon, 15 Jun 2009 08:12:31 +0000</pubDate>
		<dc:creator>James Furness</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Azul]]></category>
		<category><![CDATA[ConcurrentHashMap]]></category>
		<category><![CDATA[lib-high-scale]]></category>
		<category><![CDATA[non-blocking]]></category>
		<category><![CDATA[NonBlockingHashMap]]></category>

		<guid isPermaLink="false">http://base6.com/?p=29</guid>
		<description><![CDATA[Just came across this, looks like it has been around on Sourceforge for a while as part of lib-high-scale. Designed for large numbers of CPUs (e.g. Azul hardware), but microbenchmarks claim a small improvement over ConcurrentHashMap even on 2 CPUs.
]]></description>
			<content:encoded><![CDATA[<p>Just came across this, looks like it has been around on Sourceforge for a while as part of <a href="http://high-scale-lib.sourceforge.net/">lib-high-scale</a>. Designed for large numbers of CPUs (e.g. <a href="http://www.azulsystems.com/">Azul</a> hardware), but <a href="http://www.azulsystems.com/events/javaone_2007/2007_LockFreeHash.pdf">microbenchmarks</a> claim a small improvement over <a href="http://java.sun.com/javase/6/docs/api/java/util/concurrent/ConcurrentHashMap.html">ConcurrentHashMap</a> even on 2 CPUs.</p>
]]></content:encoded>
			<wfw:commentRss>http://base6.com/2009/06/15/nonblockinghashmap/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 0.170 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2010-02-07 11:35:55 -->
<!-- Compression = gzip -->