<?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>The Spark Between &#187; Howto</title>
	<atom:link href="http://www.mccambridge.org/blog/category/howto/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.mccambridge.org/blog</link>
	<description>Thoughts, Projects, Happenings, Ideas</description>
	<lastBuildDate>Mon, 24 Oct 2011 18:10:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>HowTo: Fix 404 Errors When Upgrading to WordPress 2.6 on Windows / IIS</title>
		<link>http://www.mccambridge.org/blog/2008/07/howto-fix-404-errors-when-upgrading-to-wordpress-26-on-windows-iis/</link>
		<comments>http://www.mccambridge.org/blog/2008/07/howto-fix-404-errors-when-upgrading-to-wordpress-26-on-windows-iis/#comments</comments>
		<pubDate>Sun, 27 Jul 2008 17:14:34 +0000</pubDate>
		<dc:creator>Colin M</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Howto]]></category>
		<category><![CDATA[iis]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.mccambridge.org/blog/?p=436</guid>
		<description><![CDATA[This post is only for WordPress users who have upgraded to 2.6 on their Windows / IIS server and other users who use &#8220;index.php&#8221; in their permalinks and are encountering 404 errors after the upgrade. The problem is already known to the WordPress folks and fixed, as described on the WordPress forums. I&#8217;m posting this [...]]]></description>
			<content:encoded><![CDATA[<p>This post is only for WordPress users who have upgraded to 2.6 on their Windows / IIS server and other users who use &#8220;index.php&#8221; in their permalinks and are encountering 404 errors after the upgrade.</p>
<p>The problem is already known to the WordPress folks and fixed, as <a href="http://wordpress.org/support/topic/189058?replies=1">described on the WordPress forums</a>.</p>
<p>I&#8217;m posting this just to help out those Googling for answers, as I just recently was after upgrading the Enlight website and watching them go up in flames :)</p>
<p>To quote the WordPress support page, the bug is known and fixed for WordPress 2.6.1.  In the meantime, here are temporary fixes.  I verify that #2 restored my Windows / IIS 6.0 installation, BUT, I want to stress that this is a <em>temporary</em> solution only, as you will be <em>changing</em> your permalink structure, which is contrary to the very nature of &#8220;permalinks&#8221;.  So, I recommend #3, which I also verify works, as it will leave your permalinks (which other sites are intended to be using) intact.</p>
<ol>
<li>If you&#8217;re using Linux/Apache on your webserver, you don&#8217;t really need the index.php anyway. Try removing it. The index.php thing was only meant for IIS servers, which don&#8217;t support mod_rewrite.</li>
<li>If you need/want the index.php to be there, then on the Settings-&gt;Permalinks screen, add some values in for the category and tag bases. The words &#8220;category&#8221; and &#8220;tag&#8221; will do just fine. As long as they are not blank, this should work around the bug.</li>
<li>(For advanced users only) If you want to patch the problem yourself, there is a fix available in <a href="http://trac.wordpress.org/ticket/7306">trac ticket 7306</a>.  <em>(Colin adds: The fix here is to integrate the 3 modified files from <a href="http://trac.wordpress.org/changeset/8365">changeset 8365</a>.  If you don&#8217;t know how to do that, I <strong>strongly</strong> recommend you stick to option #2 until WordPress 2.6.1 comes out.)</em></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.mccambridge.org/blog/2008/07/howto-fix-404-errors-when-upgrading-to-wordpress-26-on-windows-iis/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HowTo: Load Mail Archives into GMail with Correct Dates</title>
		<link>http://www.mccambridge.org/blog/2008/04/howto-load-mail-archives-into-gmail-with-correct-dates/</link>
		<comments>http://www.mccambridge.org/blog/2008/04/howto-load-mail-archives-into-gmail-with-correct-dates/#comments</comments>
		<pubDate>Thu, 03 Apr 2008 00:31:07 +0000</pubDate>
		<dc:creator>Colin M</dc:creator>
				<category><![CDATA[Howto]]></category>
		<category><![CDATA[Workedforme]]></category>

		<guid isPermaLink="false">http://www.mccambridge.org/blog/2008/04/howto-load-mail-archives-into-gmail-with-correct-dates/</guid>
		<description><![CDATA[Another quick Google service related HowTo, as I just spent several days working on the task of uploading all my old mail into my Gmail account. The Problem: Load your old mail archives into GMail, and keep the correct dates! So say you&#8217;ve used various mail programs over the years, or change computers a lot, [...]]]></description>
			<content:encoded><![CDATA[<p>Another quick Google service related HowTo, as I just spent several days working on the task of uploading all my old mail into my Gmail account.</p>
<h4>The Problem: Load your old mail archives into GMail, and <em>keep the correct dates!</em></h4>
<p>So say you&#8217;ve used various mail programs over the years, or change computers a lot, or for whatever reason have a large body of email sitting on your machine that you would like to upload to GMail.  After doing a bit of webcrawling, you may have come across solutions such as the <a href="http://marklyon.org/gmail/">GMail Loader</a>.  However, I found that getting GMail Loader to work was painful, and even when it did, uploading my email turned into a <a href="http://www.mccambridge.org/blog/wp-content/uploads/2008/04/gmail-mess.jpg" rel="lightbox[pics380]" title="Gmail Loader Mess">huge mess</a>, where <em>all</em> the emails seemed to have been sent on the day I did the uploading.  They were all there, and searchable, but very annoying.  There must be something better.</p>
<h4>The Solution: <em>Copy</em> mail using Thunderbird and IMAP</h4>
<p>Fixing this problem is actually really easy.  Using GMail&#8217;s relatively new <a href="http://gmailblog.blogspot.com/2007/10/sync-your-inbox-across-devices-with.html">IMAP feature</a> and the <a href="http://www.mozilla.com/thunderbird/">Thunderbird mail client</a> (others likely work as well, I have not tested), it&#8217;s a a few easy clicks.  Basically, just copy all your old email up there, and viola!</p>
<ol>
<li>To start, you need to get your mail archives accessible in <a href="http://www.mozilla.com/thunderbird/">Thunderbird</a>.  There&#8217;s <a href="http://www.mozilla.org/support/thunderbird/faq#migration">lots of information</a> out there about converting mailbox types and importing from one program to another; I will assume you have gotten that far.</li>
<li>Enable IMAP access on your GMail account, by logging into GMail, clicking on <em>Settings</em> in the upper right corner, changing to the &#8220;Forwarding and POP/IMAP&#8221; tab, and clicking on &#8220;Enable IMAP&#8221; near the bottom.</li>
<li>While you&#8217;re here, check out the &#8220;Configuration Instructions&#8221; link, to get a leg up on the next step.</li>
<li>Now, add your GMail IMAP account to Thunderbird, using the Tools->Account Settings&#8230;->Add Account wizard.  <strong>Note:</strong> in this wizard, add your GMail account as an <strong>Email Account</strong>, NOT as a GMail account, because we need to specify the IMAP settings, rather than use Thunderbird&#8217;s default POP access.
<p>The IMAP settings you need may differ depending on your account, but mine are:</p>
<dl>
<dt>Server Type:</dt>
<dd>IMAP Mail Server</dd>
<dt>Server Name:</dt>
<dd>imap.google.com</dd>
<dt>User Name:</dt>
<dd>full_email_address@gmail.com  (or full_email_address@hosted_domain.com)</dd>
<dt>Use Secure connection:</dt>
<dd>SSL <em>(Note: this changes the port to 993, which is correct.)</em></dd>
</dl>
</li>
<li>Now, click on the Inbox folder of your GMail account in Thunderbird to make sure your connection is working.  This will likely prompt you for your password as well, and will load the full list of folders on your GMail account.  Note that GMail presents a folder for each Label you define in the web interface.</li>
<li>
<p>To copy email to GMail, all that is left is to select the original messages in Thunderbird, right-click, and pick &#8220;Copy To&#8221;.  Under the menu, choose your GMail account, and then which folder (think: label) you want to copy to.</p>
<p>For instance, to drop all the email in your Inbox, use the Inbox.  If you&#8217;d rather label everything and bypass the Inbox, pick a different folder.  For me, I created a label (you can do this by creating a folder in Thunderbird) for the email address I was moving mail <em>from</em> (blah@oldaddress.com).  Then I did &#8220;Copy To -> me@gmail.com -> blah@oldaddress.com&#8221;.</p>
<p>For <strong>Sent Mail</strong> you can get these to show up in your Sent folder on GMail by copying them to the special [Gmail]->Sent Mail folder.  Another useful special folder is the [Gmail]->All Mail folder, where you can copy messages that you do not want in your Inbox, but also do not necessarily want any other tag on.</p>
</li>
<li>Give Thunderbird some time to process (you&#8217;ll see progress messages in the status bar), and you&#8217;re done!</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.mccambridge.org/blog/2008/04/howto-load-mail-archives-into-gmail-with-correct-dates/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>HowTo: Merge Google Calendars Together</title>
		<link>http://www.mccambridge.org/blog/2008/03/howto-merge-google-calendars-together/</link>
		<comments>http://www.mccambridge.org/blog/2008/03/howto-merge-google-calendars-together/#comments</comments>
		<pubDate>Tue, 04 Mar 2008 07:11:26 +0000</pubDate>
		<dc:creator>Colin M</dc:creator>
				<category><![CDATA[Howto]]></category>

		<guid isPermaLink="false">http://www.mccambridge.org/blog/2008/03/howto-merge-google-calendars-together/</guid>
		<description><![CDATA[Here&#8217;s a quick How-To on merging two Google Calendars together, since Googling with the obvious phrases did not get me very useful results. The Problem: Merge Two (or more) Google Calendars Into One Let&#8217;s suppose that you, like me, have more than one calendar in your Google Calendar, and decide at some point that you [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a quick How-To on merging two <a href="http://calendar.google.com">Google Calendars</a> together, since Googling with the obvious phrases did not get me very useful results.</p>
<h3>The Problem: Merge Two (or more) Google Calendars Into One</h3>
<p>Let&#8217;s suppose that you, like me, have more than one calendar in your Google Calendar, and decide at some point that you want to condense those into one.  I was struggling to find a single click solution for this, and then just to find <em>any</em> solution, for quite a while.  Then I stumbled on the &#8220;Import&#8221; feature, and realized that it actually solves all my problems.  Here&#8217;s how it works.</p>
<h3>The Solution: <em>Import</em> one Calendar into the other</h3>
<p>Once you see how to do it, it&#8217;s a quick task to merge two calendars together.  In fact, you can even use this to merge a Google calendar from one account into another.</p>
<ol>
<li>Log in to your Google Calendar account, and click on the drop-down menu next to your <strong>Source</strong> calendar.  Pick &#8220;Calendar Settings&#8221; from the list:<br />
<a href="http://www.mccambridge.org/blog/wp-content/uploads/2008/03/calsettings.png" rel="lightbox[pics343]" title="Calendar Settings"><img src="http://www.mccambridge.org/blog/wp-content/uploads/2008/03/calsettings.png" width="201" height="206" alt="Calendar Settings" class="imageframe" /></a>
</li>
<li>Now, scroll down to the bottom and find the Private ICAL address link.  Right click on this link and save the file to your Desktop (or other handy temporary location):<br />
<a href="http://www.mccambridge.org/blog/wp-content/uploads/2008/03/icallink.png" rel="lightbox[pics343]" title="Private ICAL Link"><img src="http://www.mccambridge.org/blog/wp-content/uploads/2008/03/icallink.png" width="272" height="190" alt="Private ICAL Link" class="imageframe" /></a>
</li>
<li>Next, return to your calendar and click on the &#8220;Add&#8221; dropdown menu at the top of your calendar list, then click Import Calendar:<br />
<a href="http://www.mccambridge.org/blog/wp-content/uploads/2008/03/importcal.png" rel="lightbox[pics343]" title="Import Calendar"><img src="http://www.mccambridge.org/blog/wp-content/uploads/2008/03/importcal.png" width="202" height="174" alt="Import Calendar" class="imageframe" /></a>
</li>
<li>Select the file you just saved from your <strong>Source</strong> calendar, and choose the <strong>Destination</strong> calendar you want to import into:<br />
<a href="http://www.mccambridge.org/blog/wp-content/uploads/2008/03/importform.png" rel="lightbox[pics343]" title="Import Form"><img src="http://www.mccambridge.org/blog/wp-content/uploads/2008/03/importform.thumbnail.png" width="320" height="125" alt="Import Form" class="imageframe" /></a><br />
Then click Import, and you will soon be greeted with the cheery success message:<br />
<a href="http://www.mccambridge.org/blog/wp-content/uploads/2008/03/success.png" rel="lightbox[pics343]" title="Successful Import"><img src="http://www.mccambridge.org/blog/wp-content/uploads/2008/03/success.thumbnail.png" width="283" height="320" alt="Successful Import" class="imageframe" /></a></li>
<li>And that&#8217;s it!  Here&#8217;s a before-and-after of me combining two calendars to show that it works.  (Take a look at Tues, February 12, for example.):<br />
<a href="http://www.mccambridge.org/blog/wp-content/uploads/2008/03/before.png" rel="lightbox[pics343]" title="Before"><img src="http://www.mccambridge.org/blog/wp-content/uploads/2008/03/before.thumbnail.png" width="320" height="260" alt="Before" class="imageframe" /></a><a href="http://www.mccambridge.org/blog/wp-content/uploads/2008/03/after.png" rel="lightbox[pics343]" title="After"><img src="http://www.mccambridge.org/blog/wp-content/uploads/2008/03/after.thumbnail.png" width="320" height="256" alt="After" class="imageframe" /></a>
</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.mccambridge.org/blog/2008/03/howto-merge-google-calendars-together/feed/</wfw:commentRss>
		<slash:comments>130</slash:comments>
		</item>
		<item>
		<title>Correct Way to set up OpenVPN Client on Mac OS X</title>
		<link>http://www.mccambridge.org/blog/2007/10/correct-way-to-set-up-openvpn-client-on-mac-os-x/</link>
		<comments>http://www.mccambridge.org/blog/2007/10/correct-way-to-set-up-openvpn-client-on-mac-os-x/#comments</comments>
		<pubDate>Sat, 06 Oct 2007 20:27:32 +0000</pubDate>
		<dc:creator>Colin M</dc:creator>
				<category><![CDATA[Howto]]></category>
		<category><![CDATA[Workedforme]]></category>

		<guid isPermaLink="false">http://www.mccambridge.org/blog/2007/10/correct-way-to-set-up-openvpn-client-on-mac-os-x/</guid>
		<description><![CDATA[The Problem You want to run an OpenVPN Client on Mac OS X. Your OpenVPN server will be serving DHCP, as well as pushing down DNS server addresses. You&#8217;ve tried connecting, and it just doesn&#8217;t seem to work. Perhaps you even see a large number of errors of the type: write to TUN/TAP : Input/output [...]]]></description>
			<content:encoded><![CDATA[<h3>The Problem</h3>
<p>You want to run an OpenVPN Client on Mac OS X.  Your OpenVPN server will be serving DHCP, as well as pushing down DNS server addresses.  You&#8217;ve tried connecting, and it just doesn&#8217;t seem to work.  Perhaps you even see a large number of errors of the type:</p>
<p class="code">write to TUN/TAP : Input/output error (code=5)</p>
<h3>The Solution</h3>
<p>When you connect via OpenVPN, it is the responsibility of the client to process pushed <code class="inline">dhcp-option</code>s (including the DNS server rules), and do something useful with them.  On a linux system, you could, for example, incorporate these into <code class="inline">/etc/resolv.conf</code>.  Consult your distro&#8217;s openvpn documentation for more information.</p>
<p>However, this does not work on a Mac, because Mac software (even down to <code class="inline">ssh</code> and <code class="inline">ping</code>) doesn&#8217;t use <code class="inline">/etc/resolv.conf</code> under OS X 10.4&#8230;  Oops.  The solution?  A combination of two tools: <code class="inline">ipconfig</code> and <code class="inline">scutil</code>.  These together can manage 10.4&#8242;s new DNS configuration system, and set the tap device to obtain an address via DHCP.  The problem is <a href="http://njr.sabi.net/2005/08/04/overriding-dns-for-domains-in-os-x-tiger/">discussed further</a> on nicholas riley&#8217;s blog, though his solution, a python script, a) is complicated to install, and b) did not actually work for me once installed, though I didn&#8217;t dig deep enough to understand why.</p>
<p>The best solution is to run an &#8220;up&#8221; script as part of the OpenVPN connection process, which will handle the necessary configuration for you.  The <a href="http://openvpn.net/archive/openvpn-users/2006-10/msg00120.html">script</a> is provided on the Openvpn-users mailing list, by Ben Low.</p>
<p>Here&#8217;s how to use it with the excellent OpenVPN client <a href="http://www.tunnelblick.net">Tunnelblick</a>:</p>
<ol>
<li>Install Tunnelblick, and create your OpenVPN config.  I&#8217;ll assume that you know how to do this, or you wouldn&#8217;t be here.  If not, consult the documentation for <a href="http://openvpn.net/howto.html">OpenVPN</a>.</li>
<li>Download this script (copied from the openvpn-users mailing list).  Save it to <code class="inline">~/Library/openvpn</code>, the folder where your Tunnelblick OpenVPN configuration lives.
<p class="download">OpenVPN TAP up-down Script: <a href="http://www.mccambridge.org/blog/wp-content/uploads/2007/10/tap-up-down.sh" title="OpenVPN TAP up-down Script">tap-up-down.sh</a></p>
</li>
<li>Now, make the script executable, by running:
<p class="code">chmod +x ~/Library/openvpn/tap-up-down.sh</p>
</li>
<li>Edit your configuration file to include these lines:
<p class="code">up ./tap-up-down.sh<br />
down ./tap-up-down.sh</p>
</li>
<li>Changing your configuration file will have disconnected Tunnelblick if it was connected.  Tunnelblick will also prompt you again for your administrator password, since security-sensitive files have been modified.</li>
<li><strong>Time to test!</strong>  Open a Terminal window, and run the command:
<p class="code">scutil &#8211;dns</p>
<p>to see the current configuration of DNS resolvers.  Then connect to your VPN in Tunnelblick, and run the command again:</p>
<p class="code">scutil &#8211;dns</p>
<p>If all goes as planned, you will see your VPN DNS resolver properly included in the configuration.  Congratulations!</li>
<li>You should now be able to ping internal hosts by their internal DNS names, e.g.:
<p class="code">ping internal-server</p>
</li>
</ol>
<p>Good luck!</p>
<p><em>Updated 11/30/2007 to add <code class="inline">chmod +x</code>.  Thanks Karel!</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.mccambridge.org/blog/2007/10/correct-way-to-set-up-openvpn-client-on-mac-os-x/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Totally Seamless SSHFS under Linux using Fuse and Autofs</title>
		<link>http://www.mccambridge.org/blog/2007/05/totally-seamless-sshfs-under-linux-using-fuse-and-autofs/</link>
		<comments>http://www.mccambridge.org/blog/2007/05/totally-seamless-sshfs-under-linux-using-fuse-and-autofs/#comments</comments>
		<pubDate>Thu, 03 May 2007 04:28:34 +0000</pubDate>
		<dc:creator>Colin M</dc:creator>
				<category><![CDATA[Howto]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Workedforme]]></category>

		<guid isPermaLink="false">http://www.mccambridge.org/blog/2007/05/totally-seamless-sshfs-under-linux-using-fuse-and-autofs/</guid>
		<description><![CDATA[You want to access a remote file system over SSH.  You want to use FUSE SSHFS, and you don't want to ever have to think about it, so you're looking for Autofs integration.]]></description>
			<content:encoded><![CDATA[<p><strong>This is awesome.</strong></p>
<p>I worked on this for something like 2 hours this afternoon, and finally tracked down all the nuances to get it working.  I&#8217;m really pleased with the results, and hope that they can be of some to use to you as well, because I could not find a decent tutorial on this subject despite extensive <a href="http://www.google.com">Googling</a>.</p>
<h3>The Problem: Connect to a remote filesystem over SSH</h3>
<p>Odds are if you&#8217;ve stumbled on this tutorial, you already know the problem: You want to access a remote file system over SSH.  You want to use FUSE SSHFS, and you don&#8217;t want to ever have to think about it, so you&#8217;re looking for Autofs integration.  To keep this to the point, I&#8217;m going to skip over the installation of these packages and just explain the configuration, especially since installation is very distribution specific.  I&#8217;ll simply say on my system (Ubuntu Feisty) it consisted of:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> sshfs autofs</pre></div></div>

<h3>The Solution</h3>
<p>Getting SSHFS to work with Autofs really isn&#8217;t hard, you just need the magic configuration.  Here&#8217;s how I got things working for me:</p>
<ol>
<li>Set up certificate authentication for your <em>local</em> <strong>root</strong> to the remote account on the remote machine, by use of <code class="inline">sudo ssh-keygen</code> locally, and the (remote account&#8217;s) <code class="inline">~/.ssh/authorized_keys</code> file.</li>
<li>Test the certificate authentication by verifying that the following command <em>does not</em> prompt for your remote password:

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">ssh</span> remoteuser<span style="color: #000000; font-weight: bold;">@</span>remotehost <span style="color: #c20cb9; font-weight: bold;">uptime</span></pre></div></div>

</li>
<li>Test that sshfs can establish the requisite connection:

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #000000; font-weight: bold;">/</span>mnt<span style="color: #000000; font-weight: bold;">/</span>sshfs_temp
<span style="color: #c20cb9; font-weight: bold;">sudo</span> sshfs remoteuser<span style="color: #000000; font-weight: bold;">@</span>remotehost: <span style="color: #000000; font-weight: bold;">/</span>mnt<span style="color: #000000; font-weight: bold;">/</span>sshfs_temp
<span style="color: #c20cb9; font-weight: bold;">sudo</span> fusermount <span style="color: #660033;">-u</span> <span style="color: #000000; font-weight: bold;">/</span>mnt<span style="color: #000000; font-weight: bold;">/</span>sshfs_temp
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">rmdir</span> <span style="color: #000000; font-weight: bold;">/</span>mnt<span style="color: #000000; font-weight: bold;">/</span>sshfs_temp</pre></div></div>

<p>Note that the <code class="inline">:</code> is required after the host to specify the remote directory.  (<code class="inline">:</code> alone means the remote user&#8217;s home.  <code class="inline">:/remote/path</code> indicates a remote path.)</li>
<li>Add the following line to your <strong><code class="inline">/etc/auto.master</code></strong> file:
<pre lang="bash" class="numbered"><strong>/mnt/ssh</strong> /etc/auto.sshfs        uid=<strong>1000</strong>,gid=<strong>1000</strong>,--timeout=<strong>30</strong>,--ghost</pre>
<p>Where <strong>/mnt/ssh</strong> is the path you want all ssh automounts to appear in,<br />
<strong>1000</strong> is the UID of the user you want the sshfs mount to belong to (i.e., be writable by),<br />
<strong>1000</strong> is the GID of the user you want the sshfs mount to belong to, and<br />
<strong>30</strong> is the timeout in seconds to keep the FUSE connection alive.</li>
<li>Copy the following into a new file <strong><code class="inline">/etc/auto.sshfs</code></strong>:
<pre lang="text" class="numbered">#
# This is an automounter map and it has the following format
# key [ -mount-options-separated-by-comma ] location
# Details may be found in the autofs(5) manpage
remote1     -fstype=fuse,rw,nodev,nonempty,noatime,allow_other,max_read=65536 :sshfs\#remoteuser@remotehost1\:
remote2  -fstype=fuse,rw,nodev,nonempty,noatime,allow_other,max_read=65536 :sshfs\#remoteuser2@remotehost2\:/remote/path
</pre>
<p>This creates two sshfs mappings (obviously, adding or removing lines creates more or fewer mappings).<br />
The first will be at <code class="inline">/mnt/ssh/remote1</code>, and map to the home directory of <code class="inline">remoteuser</code> on the host <code class="inline">remotehost1</code>.<br />
The second will be at <code class="inline">/mnt/ssh/remote2</code>, and map to the directory <code class="inline">/remote/path</code> on the host <code class="inline">remotehost2</code>, with the permissions of the user <code class="inline">remoteuser2</code>.<br />
<strong>Note the <code class="inline">\</code> characters to escape <code class="inline">#</code> and <code class="inline">:</code></strong>  These escape characters are what took me two hours to track down:  FUSE requires a parameter of the form: <code class="inline">sshfs#user@host:directory</code>, but autofs treats everything following a <code class="inline">#</code> as a comment, and the <code class="inline">:</code> character has a special meaning.  These characters must be escaped by a <code class="inline">\</code></li>
<li>Restart autofs to reload the configuration files:

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>autofs restart</pre></div></div>

</li>
<li>Test it out!  As root or the user indicated by <code class="inline">uid</code> above, run:

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">ls</span> <span style="color: #000000; font-weight: bold;">/</span>mnt<span style="color: #000000; font-weight: bold;">/</span>ssh<span style="color: #000000; font-weight: bold;">/</span>remote1</pre></div></div>

<p>You should be greeted by the contents of the remote file system.  Congratulations!</li>
</ol>
<h3>The Problems</h3>
<ul>
<li>This exact setup only works for one user due to specifying a uid.  This is fine for a home desktop system, but will likely need further work to allow multiple users access to the remote filesystem.  Perhaps careful usage of gid could alleviate this problem, though logging into the remote machine as a specific user still represents a security risk.</li>
<li>I have not examined the architecture enough since I am only seeking to enable my home desktop system, so <strong>I cannot vouch for the security of this setup</strong> whatsoever.  For example, the use of the allow_other option for FUSE may have security consequences since the mountpoint is created as root (to my understanding, at least).</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.mccambridge.org/blog/2007/05/totally-seamless-sshfs-under-linux-using-fuse-and-autofs/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
		<item>
		<title>Using the Microsoft Fingerprint Reader on Windows Vista with Firefox 2.0</title>
		<link>http://www.mccambridge.org/blog/2007/04/using-the-microsoft-fingerprint-reader-on-windows-vista-with-firefox-20/</link>
		<comments>http://www.mccambridge.org/blog/2007/04/using-the-microsoft-fingerprint-reader-on-windows-vista-with-firefox-20/#comments</comments>
		<pubDate>Sun, 15 Apr 2007 19:00:42 +0000</pubDate>
		<dc:creator>Colin M</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Howto]]></category>
		<category><![CDATA[Vista]]></category>

		<guid isPermaLink="false">http://www.mccambridge.org/blog/2007/04/using-the-microsoft-fingerprint-reader-on-windows-vista-with-firefox-20/</guid>
		<description><![CDATA[Back Story This past summer at my internship I picked up a Microsoft Fingerprint Reader on a whim. I had been reading about efforts to write an open source driver for it, and thought it might interesting to give it a shot. I haven&#8217;t actually run Linux on my desktop since then, but I finally [...]]]></description>
			<content:encoded><![CDATA[<h3>Back Story</h3>
<p>This past summer at my internship I picked up a <a href="http://www.microsoft.com/hardware/mouseandkeyboard/productdetails.aspx?pid=093">Microsoft Fingerprint Reader</a> <img src="http://www.mccambridge.org/blog/wp-content/uploads/2007/04/ms_finger_print_reader.jpg" width="150" height="150" alt="MS Fingerprint Reader" class="imageframe" align="right"/>on a whim.  I had been reading about <a href="http://dpfp.berlios.de/wikka.php?wakka=HomePage">efforts to write an open source driver for it</a>, and thought it might interesting to give it a shot.  I haven&#8217;t actually run Linux on my desktop since then, but I finally got around to opening the fingerprint reader up a couple weeks ago and playing with it on Windows Vista.</p>
<p>While I wouldn&#8217;t speak to the total security and accuracy of the device, especially since it sends a photo of your finger to the OS unencrypted over USB, it is rather handy and has a nice nerdiness factor of the glowing reader on my desk as well. :-)</p>
<p>The one absolute show-stopper, though, was that it <strong>didn&#8217;t work with Firefox</strong>.  Game over.  All browser wars aside, at the end of the day I use Firefox for most of my web browsing, and if the fingerprint reader didn&#8217;t work with it, it wasn&#8217;t of much use to me beyond logging in to Windows Vista automatically.</p>
<p><img src="http://www.mccambridge.org/blog/wp-content/uploads/2007/04/fingerfox_logo.jpg" width="75" height="75" alt="FingerFox 2.0 logo" class="imageframe" align="right" />Enter <a href="http://www.fingerfox.amews.dk/index.php?lang=en">Fingerfox (SE) v2</a>, released just this weekend with compatibility for Windows Vista and Digital Persona Password Manager 2.0 (the software included with the fingerprint reader).  I had been waiting &#038; hoping for this plugin for weeks, as the previous versions of Fingerfox didn&#8217;t work at all for me.  I&#8217;m happy to say that today everything works!</p>
<h3>How to Set it Up</h3>
<ol>
<li>Buy a Microsoft Fingerprint Reader (or other compatible Digital Persona device)</li>
<li>Install the device as indicated in the instructions, or by <a href="http://www.microsoft.com/hardware/mouseandkeyboard/Download.mspx">downloading the newest driver from Microsoft</a>.  This process will walk you through registering your fingerprints.</li>
<li>Install <a href="http://www.getfirefox.com">Firefox</a>!</li>
<li>Install the Fingerfox (SE) v2 plugin by <a href="http://www.fingerfox.amews.dk/index.php?page=download&#038;lang=en">downloading it</a>, and then opening the XPI file (In Firefox, go to File->&#8221;Open File&#8230;&#8221; and locate the XPI file you just downloaded.)</li>
<li>Restart Firefox to complete the installation, if you haven&#8217;t.</li>
<li>Right-click on the new Fingerfox icon in your status bar: <img src="http://www.mccambridge.org/blog/wp-content/uploads/2007/04/fingerfox_icon.jpg" width="150" height="128" alt="FingerFox 2.0 statusbar icon" class="imageframe" /></li>
<li>Enable &#8220;Global automatic popup&#8221;, to allow Fingerfox to open automatically on websites that you can log in to:<img src="http://www.mccambridge.org/blog/wp-content/uploads/2007/04/fingerfox_menu.jpg" width="200" height="169" alt="FingerFox 2.0 context menu" class="imageframe" /></li>
<li>Go to a website where you want to login.  Example: <a href="http://www.facebook.com">http://www.facebook.com</a></li>
<li>Fingerfox will pop up a small window containing the same input boxes as the login page.  Do <em>not</em> fill them in.  These are here because the Digital Persona software, which cannot detect the login page under Firefox, <em>can</em> detect this mini login window.<br />
<a href="http://www.mccambridge.org/blog/wp-content/uploads/2007/04/fingerfox_popup.jpg" rel="lightbox[pics225]" title="FingerFox 2.0 Popup"><img src="http://www.mccambridge.org/blog/wp-content/uploads/2007/04/fingerfox_popup.thumbnail.jpg" width="138" height="320" alt="fingerfox_popup.jpg" class="imageframe" /></a></li>
<li>Now, put your fingerprint on the reader to open the Digital Persona password manager creation screen, and fill out the form with your account information, as in this example.  Notice how Digital Persona highlights the corresponding fields in the Fingerfox (SE) window.  This is showing you which boxes you are filling out, just in case there is any question:<br />
<a href="http://www.mccambridge.org/blog/wp-content/uploads/2007/04/fingerfox_digital_persona_create.jpg" rel="lightbox[pics225]" title="FingerFox 2.0 Digital Persona Login Creation"><img src="http://www.mccambridge.org/blog/wp-content/uploads/2007/04/fingerfox_digital_persona_create.thumbnail.jpg" width="320" height="270" alt="fingerfox_digital_persona_create.jpg" class="imageframe" /></a></li>
<li>Click OK to close the password manager creation window, and the Fingerfox popup will change like this, since Digital Persona now knows how to fill this window out for you:<br />
<a href="http://www.mccambridge.org/blog/wp-content/uploads/2007/04/fingerfox_digital_persona_login.jpg" rel="lightbox[pics225]" title="FingerFox 2.0 Digital Persona Login-Enabled"><img src="http://www.mccambridge.org/blog/wp-content/uploads/2007/04/fingerfox_digital_persona_login.thumbnail.jpg" width="234" height="320" alt="fingerfox_digital_persona_login.jpg" class="imageframe" /></a></li>
<li>Now, press your finger on the reader to login, and you should be at your Facebook homepage!<br />
<img src="http://www.mccambridge.org/blog/wp-content/uploads/2007/04/fingerfox_success.jpg" width="61" height="58" alt="FingerFox 2.0 Success!" class="imageframe" /></li>
<li>That&#8217;s it!  To login to Facebook in the future, just go to the page, and repeat from step 12!</li>
<li>Some extra things to be aware of:
<ul>
<li>For some websites (like Facebook) you will need to set up <em>more than one</em> login.  This is because when you go to www.facebook.com, you are logging in to a different site (as far as Fingerfox is concerned) than when Facebook asks you to log in to, e.g., wisc.facebook.com.  Since these appear to be different sites, you will have to store your login information twice.  After that, however, it will be all set.</li>
<li>For some websites like <a href="http://www.meebo.com">Meebo</a>, which have multiple login forms, you will need to select the appropriate one from a small drop-down box:<br />
<a href="http://www.mccambridge.org/blog/wp-content/uploads/2007/04/fingerfox_multi_forms.jpg" rel="lightbox[pics225]" title="FingerFox 2.0 Multiple Login Forms"><img src="http://www.mccambridge.org/blog/wp-content/uploads/2007/04/fingerfox_multi_forms.thumbnail.jpg" width="152" height="320" alt="FingerFox 2.0 Multiple Login Forms" class="imageframe" /></a></li>
</ul>
</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.mccambridge.org/blog/2007/04/using-the-microsoft-fingerprint-reader-on-windows-vista-with-firefox-20/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Howto: Mythtv SNES Joystick Control</title>
		<link>http://www.mccambridge.org/blog/2007/01/howto-mythtv-snes-joystick-control/</link>
		<comments>http://www.mccambridge.org/blog/2007/01/howto-mythtv-snes-joystick-control/#comments</comments>
		<pubDate>Mon, 22 Jan 2007 16:24:00 +0000</pubDate>
		<dc:creator>Colin M</dc:creator>
				<category><![CDATA[Howto]]></category>
		<category><![CDATA[Mythtv]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Snespad]]></category>

		<guid isPermaLink="false">http://www.mccambridge.org/blog/2007/01/howto-mythtv-snes-joystick-control/</guid>
		<description><![CDATA[Update: Why oh why can&#8217;t Blogger preview my post in the *actual* stylesheet of my blog? I seem to remember WordPress doing this&#8230; if so, I must switch. ASAP. I&#8217;m back down in Madison, and in the midst of unpacking all my junk after moving down here from home. One thing that Nate &#038; I [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Update:</strong> Why oh why can&#8217;t Blogger preview my post in the *actual* stylesheet of my blog?  I seem to remember WordPress doing this&#8230; if so, I must switch.  ASAP.</p>
<p>I&#8217;m back down in Madison, and in the midst of unpacking all my junk after moving down here from home.  One thing that Nate &#038; I set up right away is my HTPC, an <a href="http://www.ubuntu.com">Ubuntu</a>-based <a href="http://www.mythtv.org">MythTV</a> box.  Unfortunately, I noticed over winter break that my homemade serial-port IR receiver has given up the ghost, so I can no longer control MythTV from my universal remote.  I&#8217;ve ordered the parts for a <a href="http://usbirboy.sourceforge.net">USB IR receiver</a>, but as I mentioned earlier, my soldering iron has <em>also</em> given up the ghost&#8230;</p>
<p>So, what to do in the interim?  Well, there is a keyboard attached to the Myth box, but it doesn&#8217;t reach the couch.  Enter the SNES controller and MythTV joystick control.  Here&#8217;s how I got it to work:</p>
<h3>Goal</h3>
<ul>
<li>Control MythTV from an SNES controller (or any other gamepad)</li>
</ul>
<h3>Required Software / Hardware</h3>
<ul>
<li>MythTV (I believe any version since 0.17 will work)</li>
<li>SNES controller connected via parallel port adapter and the gamecon driver (see Documentation/input/joystick-parport.txt in the Linux source tree)</li>
<li><code>jstest</code> <em>(Optional, available on Ubuntu in the &#8220;joystick&#8221; package)</em></li>
</ul>
<h3>Determining joystick layout</h3>
<p>The first step in writing a MythTV joystick configuration is to determine the exact layout of your joystick, as Linux sees it.  Specifically, we need to know what axes (and axis values) and buttons correspond to the controls on the joystick.</p>
<p>If you&#8217;re using an SNES controller with the <code>gamecon</code> driver, I&#8217;ve done the legwork, and you can <a href="#joystickmenurc">skip to the next section</a> below, using my example configuration.  (Obviously you should test it and make sure it works.)</p>
<p>To determine the layout of your own joystick, you can use the optional <code>jstest</code> program mentioned above.  You can install it on Ubuntu from the <code>joystick</code> package (you will need the universe repository enabled):</p>
<p><code>$ sudo apt-get install joystick</code></p>
<p>Run <code>jstest</code> and record the axis numbers and values, as well as button numbers, that correspond to all the controls you wish to use on your joystick.  <code>jstest</code> requires a parameter of the joystick device to open.  For example, I run <code>jstest</code> like this for my first SNES controller:</p>
<p><code>$ jstest /dev/input/js0</code></p>
<p><code>jstest</code> produces output for my SNES controller like this:</p>
<p><code>Driver version is 2.1.0.</p>
<p>Joystick (SNES pad) has 2 axes (X, Y)</p>
<p>and 8 buttons (BtnX, BtnY, BtnTL, BtnTR, BtnTR2, BtnSelect, BtnThumbL, BtnThumbR).</p>
<p>Testing ... (interrupt to exit)</p>
<p>Axes:  0:     0  1:     0 Buttons:  0:off  1:off  2:off  3:off  4:off  5:off  6:off  7:off</code></p>
<p>This tells me that the joystick as seen by Linux has two axes and 7 buttons.  Pressing them in sequence changes the output, such as this output when I hold the directional pad to the left and press the &#8220;A&#8221; button:</p>
<p><code>Testing ... (interrupt to exit)</p>
<p>Axes:  0:-32767  1:     0 Buttons:  0:on   1:off  2:off  3:off  4:off  5:off  6:off  7:off</code></p>
<p>This tells you that the D-pad &#8220;left&#8221; direction corresponds to value -32767 on Axis 0, and that the &#8220;A&#8221; button corresponds to button 0.</p>
<p>Compiling a full list for your joystick would give you a mapping like this one for the SNES controllers &#038; gamecon driver:</p>
<table cellpadding=0 cellspacing=0 border=0 width=320>
<tr>
<th align=left>SNES Button</th>
<th align=left>Linux joystick mapping</th>
</tr>
<tr>
<td>D-Pad Up</td>
<td>Axis 1: -32767</td>
</tr>
<tr>
<td>D-Pad Right</td>
<td>Axis 0: 32767</td>
</tr>
<tr>
<td>D-Pad Down</td>
<td>Axis 1: 32767</td>
</tr>
<tr>
<td>D-Pad Left</td>
<td>Axis 0: -32767</td>
</tr>
<tr>
<td>A</td>
<td>Button 0</td>
</tr>
<tr>
<td>B</td>
<td>Button 1</td>
</tr>
<tr>
<td>X</td>
<td>Button 2</td>
</tr>
<tr>
<td>Y</td>
<td>Button 3</td>
</tr>
<tr>
<td>L</td>
<td>Button 4</td>
</tr>
<tr>
<td>R</td>
<td>Button 5</td>
</tr>
<tr>
<td>Select</td>
<td>Button 6</td>
</tr>
<tr>
<td>Start</td>
<td>Button 7</td>
</tr>
</table>
<p><a name="joystickmenurc"></a><br />
<h3>Writing the MythTV <code>Joystickmenurc</code>Configuration File</h3>
<p>Now that you have the logical layout of your joystick in hand, it&#8217;s time to configure MythTV itself.  This is done by means of the <code>joystickmenurc</code> configuration file, located at <code>~/.mythtv/joystickmenurc</code> for the user that mythfrontend is launched under.  This file will instruct MythTV as to which joystick device it should open, and then provides a mapping from the joystick layout to the keyboard strokes for MythTV.</p>
<h4><code>joystickmenurc</code> Format</h4>
<p>As described in the <a href="http://www.mythtv.org/wiki/index.php/Joystick_Control#Formatting">formatting section</a> of the Joystick Control page on the MythTV Wiki, the format for the <code>joystickmenurc</code> is as follows:</p>
<dl>
<dt><code>devicename &lt;devname&gt;</code></dt>
<dd>Specify the name of the joystick device to use, (e.g. /dev/input/js0)</dd>
<dt><code>button &lt;num&gt; &lt;keystring&gt;</code>
</dt>
<dd>Send <code>keystring</code> when button <code>num</code> is released
</dd>
<dt><code>chord &lt;cnum&gt; &lt;bnum&gt; &lt;keystring&gt;</code>
</dt>
<dd>If button <code>cnum</code> is down, and button <code>bnum</code> is released, send <code>keystring</code>
</dd>
<dt><code>axis &lt;num&gt; &lt;from&gt; &lt;to&gt; &lt;keystring&gt;</code>
</dt>
<dd>If axis <code>num</code> goes into the range of <code>from</code>-<code>to</code> send <code>keystring</code>
</dd>
</dl>
<h4>Example <code>joystickmenurc</code> for SNES controller</h4>
<p>I think the formatting is best explained by an example.  Below is the actual <code>~/.mythtv/joystickmenurc</code> file I use on my system, with commenting explaining exactly what is intended and how it works.  If you use an SNES controller attached via the <code>gamecon</code> driver to <code>/dev/input/js0</code>, this configuration should work for you as-is.  Simply drop it in your <code>~/.mythtv</code> directory and relaunch <code>mythfrontend</code>.  For everyone else, feel free to use this as a template, or see the <a href="http://www.mythtv.org/wiki/index.php/Joystick_Control">Joystick Control</a> page on the MythTV Wiki for an example of an Xbox configuration file.</p>
<blockquote><pre># ~/.mythtv/joystickmenurc
# Joystick menu config file
#
# Created 1/21/2007 by Colin McCambridge
# based on instructions at http://www.mythtv.org/wiki/index.php/Joystick_Control
#
# This joystick menu configuration controls MythTV with an SNES
# gamepad connected via parallel port and the gamecon driver.
#
# Controls:
#  SNES Pad            Keypresses       Joystick Device
#  --------            ----------       ---------------
#  UP/DOWN axis        Up, Down         Axis 1: U -32767 D 32767
#  LEFT/RIGHT axis     Left, Right      Axis 0: L -32767 R 32767
#  B                   Enter            Button 1
#  Y                   Esc              Button 3
#  A                   P  (Play/Pause)  Button 0
#  X                   S  (Guide)       Button 2
#  Start               M  (Menu)        Button 7
#  Select              I  (Info)        Button 6
#  Left Top            Page Up (REW)    Button 4
#  Right Top           Page Down (FF)   Button 5
#

###########################################################
#
#    SNES Gamepad Device
#
###########################################################

devicename /dev/input/js0

###########################################################
#
#    D-Pad
#
###########################################################

#Up
        axis    1       -32767  -1      Up
#Down
        axis    1       1       32767   Down
#Left
        axis    0       -32767  -1      Left
#Right
        axis    0       1       32767   Right

###########################################################
#
#    Buttons
#
###########################################################

#A ==> Play/Pause
        button  0       P
#B ==> Enter
        button  1       Enter
#X ==> Guide (S)
        button  2       S
#Y ==> Exit (Esc)
        button  3       Escape

#Start ==> Menu (M)
        button  7       M
#Select ==> Info (I)
        button  6       I

#Left Top ==> Rewind (PgUp)
        button  4       PgUp
#Right Top ==> F.Fwd (PgDown)
        button  5       PgDown
</pre>
</blockquote>
<h3>Final Notes</h3>
<p>For making your own <code>joystickmenurc</code> file, you may find the <a href="http://www.mythtv.org/wiki/index.php/Keybindings">MythTV Default Keybindings</a>, or the more abbreviated <a href="http://www.mythtv.org/wiki/index.php/User_Manual:Daily_Use#Conventions_and_notes">Remote Control Buttons</a> list handy references as to the control operations you can define.</p>
<p>For an exact list of valid key names to use (e.g. &#8220;Escape&#8221;) refer to the Qt documentation for the <a href="http://doc.trolltech.com/4.1/qt.html#Key-enum"><code>Qt.Key enum</code></a>.  This document lists key names in the form: &#8220;<code>Qt::Key_Escape</code>&#8220;, use only the name following the underscore.</p>
<p><strong>Note:</strong> there is an undocumented discrepancy regarding the keys Page Up and Page Down.  While the <code>Qt.Key</code> enum lists them as <code>PageUp</code> and <code>PageDown</code>, they can actually only be specified as either <code>"PgUp"</code> and <code>"PgDown"</code>, or <code>"Page Up"</code> and <code>"Page Down"</code> respectively.  See messages 3 and 4 of <a href="http://lists.trolltech.com/qt-interest/2006-12/thread00648-0.html">this email thread</a> for reference, or view the relevant Qt source file (especially the <code>keyname[]</code> array at line 89, and method <code>decodeString</code> at line 388): <a href="http://koders.com/cpp/fid31DA25D551C46221E29EC8ECF6CCD751F0276681.aspx"><code>qkeysequence.cpp</code></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.mccambridge.org/blog/2007/01/howto-mythtv-snes-joystick-control/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Howto: Resize Your Own Watch</title>
		<link>http://www.mccambridge.org/blog/2007/01/howto-resize-your-own-watch/</link>
		<comments>http://www.mccambridge.org/blog/2007/01/howto-resize-your-own-watch/#comments</comments>
		<pubDate>Thu, 11 Jan 2007 01:35:00 +0000</pubDate>
		<dc:creator>Colin M</dc:creator>
				<category><![CDATA[Howto]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Watch]]></category>
		<category><![CDATA[Workedforme]]></category>

		<guid isPermaLink="false">http://www.mccambridge.org/blog/2007/01/howto-resize-your-own-watch/</guid>
		<description><![CDATA[I haven&#8217;t put too many posts up here that are actually helpful to anyone else in any way, so I thought I should start working on that. This may or may not be helpful to anyone either, but what the heck, I already had the pictures&#8230; Disclaimer: I am not a jewelry / watch expert, [...]]]></description>
			<content:encoded><![CDATA[<p>I haven&#8217;t put too many posts up here that are actually helpful to anyone else in any way, so I thought I should start working on that.  This may or may not be helpful to anyone either, but what the heck, I already had the pictures&#8230;</p>
<p><strong>Disclaimer:</strong> <em>I am not a jewelry / watch expert, and in fact know next to nothing about them.  What I present here worked for me, but I make no claim that it will work for you and take no responsibility for your actions and any damage they may cause. :)</em></p>
<h3>Back-Story</h3>
<p>So why am I resizing a watch band, of all things?  Well, my parents bought me a Seiko watch for Christmas during my senior year of high school, which I like very much.  Unfortunately, wearing it for several years (and drumming with it on) popped one of the hands off one of the smaller dials, and that hand now rattles around freely under the crystal, frequently getting stuck under other dials and jamming the watch up:<br />
<a href="http://www.mccambridge.org/blogpics/wb_sidebyside.jpg" rel="lightbox[156]"><img src="http://www.mccambridge.org/blogpics/wb_sidebyside_t.jpg"/></a><br />
Note the alarm dial (bottom) of the old watch is missing a minute hand, which is located upside down jamming its second hand (left dial).</p>
<p>After sending it off to Seiko for a repair estimate ($162), we decided it wasn&#8217;t worth the money to repair, as it would be better spent toward the purchase of a new watch.  Fast-forward several months, and I find my <a href="http://www.amazon.com/gp/product/B00068TJLC/104-2097988-4843127">very same watch on Amazon.com</a> for $105 (no longer available).  I was pretty excited to have a chance to get it fixed, so I bought it.  Fast-forward another week or so, and my new watch arrives.  Three sizes too large for my wrist.  Oops.</p>
<p>And so, here we are.</p>
<h3>Goals</h3>
<ul>
<li>Resize a watch band of the &#8220;pin-and-link&#8221; type seen above.</li>
<li>Avoid fees to have it resized at the mall</li>
<li>Avoid damage by the inept worker at the Younkers jewelry department</li>
</ul>
<h3>Tools</h3>
<ul>
<li>Pentel 0.5mm mechanical pencil tips</li>
<li>Thumbtacks</li>
<li>1&#8243; Brad</li>
<li>Light hammer</li>
</ul>
<h3>Steps</h3>
<ol>
<li>First, take a close look at your watch and determine how many links need to be removed, and from which sides of the clasp.  Keep in mind that you should try to balance the removed links from both sides, or the clasp will end up on the edge of your wrist instead of the back.<br />
I had this step easy, as the old watch was fitted correctly to my wrist already as a model.  In my case, I needed to remove 3 links total: 2 from one side of the clasp and 1 from the other.</li>
<li>The next step is to determine exactly which links you will need to remove to accomplish this, and which pins hold them in place.  Generally, you will need to remove 2 pins (one from each end of the link(s) you will remove), and then replace 1 to rejoin the watch band.</li>
<li>Removing and inserting these pins without a commercial tool for doing so is the tricky part, and why I am writing this Howto.  So, on to the pins:</li>
<li>On my Seiko, I started by removing one of the pins on the links near the clasp, in the direction indicated by the small engraved arrow:<br />
<a href="http://www.mccambridge.org/blogpics/wb_arrows.jpg" rel="lightbox[156]"><img src="http://www.mccambridge.org/blogpics/wb_arrows_t.jpg"/></a></li>
<li>One method to remove these pins uses the tip from a 0.5mm mechanical pencil.  Remove the tip and place it point up on a solid surface.  Then press the watch down, aligning the pin with the pencil tip&#8217;s metal shroud.  Apply force as vertically and firmly as possible.<br />
This was the first method I tried, and though it worked for two of the pins I needed to remove, it destroyed 3 mechanical pencils by pushing the metal shroud into the tip.  For this reason, I do not recommend this method.<br />
<a href="http://www.mccambridge.org/blogpics/wb_pencilout.jpg" rel="lightbox[156]"><img src="http://www.mccambridge.org/blogpics/wb_pencilout_t.jpg"/></a></li>
<li>A second method is to use a thumbtack.  Place the tack point-upward on a sold surface.  <em>Very carefully</em> align the watch pin on the tip of the tack and press downward firmly.  It is very important to keep the watch aligned so that you are always pushing directly into the pin, not at any angle.  If you are not careful, the watch will slip off the pin, and if you&#8217;re like me, you&#8217;ll stab the pin a full quarter inch into the tip of your finger.<br />
Despite the increased danger in this method, I found it to be the most effective, and though I did destroy another few tacks in the process, I was able to remove the remainder of my pins relatively easily.<br />
<a href="http://www.mccambridge.org/blogpics/wb_tackout.jpg" rel="lightbox[156]"><img src="http://www.mccambridge.org/blogpics/wb_tackout_t.jpg"/></a></li>
<li>Once all the pins are removed, you simply rejoin the remaining watch band pieces by reinserting pins as necessary.  This is the second significant challenge.</li>
<li>When reinserting the pins, it worked best for me to insert them in the opposite direction I had removed them in.  I attempted to insert the pin in the direction of the arrow the first time around, pushing the &#8220;bulge&#8221; in the pin through first, with the result of destroying the pin:<br />
<a href="http://www.mccambridge.org/blogpics/wb_bentpin.jpg" rel="lightbox[156]"><img src="http://www.mccambridge.org/blogpics/wb_bentpin_t.jpg"/></a></li>
<li>It is possible to push the pin nearly all the way back in just by hand and pressing the watch against a table, but replacing the pin the last 1/16&#8243; proved trickier.  You would like to reposition the pin as it originally was, to minimize the risk that it will fall out.</li>
<li>The best method I found for recessing the pin back to its original position was to tap it lightly with a hammer, via a nail.  Place the watch on a solid board or edge of a table so that the edge of the watchband rests solidly on the surface.  Then align a small brad (I used a 1&#8243;) with the stub of the pin sticking out, and rap it lightly with a hammer as shown:<br />
<a href="http://www.mccambridge.org/blogpics/wb_hammerin.jpg" rel="lightbox[156]"><img src="http://www.mccambridge.org/blogpics/wb_hammerin_t.jpg"/></a></li>
<li>Repeat for all pins that you need to remove and replace to adjust the watch size.</li>
<li>And that&#8217;s it!<br />
<a href="http://www.mccambridge.org/blogpics/wb_final.jpg" rel="lightbox[156]"><img src="http://www.mccambridge.org/blogpics/wb_final_t.jpg"/></a><br />
Finished watch, down to size with minimal scratches.</p>
<p><a href="http://www.mccambridge.org/blogpics/wb_aftermath.jpg" rel="lightbox[156]"><img src="http://www.mccambridge.org/blogpics/wb_aftermath_t.jpg"/></a><br />
Total bill of materials:</p>
<ul>
<li>3 mechanical pencil tips</li>
<li>several thumbtacks</li>
<li>one watch pin</li>
<li>one stabbed finger</li>
</ul>
</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.mccambridge.org/blog/2007/01/howto-resize-your-own-watch/feed/</wfw:commentRss>
		<slash:comments>91</slash:comments>
		</item>
	</channel>
</rss>

