<?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>dd if=/dev/mem of=~/archive</title>
	<atom:link href="http://taylor.braun-jones.org/feed/" rel="self" type="application/rss+xml" />
	<link>http://taylor.braun-jones.org</link>
	<description>A raw brain dump of the technocortex lobe</description>
	<lastBuildDate>Thu, 20 Oct 2011 01:26:44 +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>Great advice</title>
		<link>http://taylor.braun-jones.org/2011/10/19/great-advice/</link>
		<comments>http://taylor.braun-jones.org/2011/10/19/great-advice/#comments</comments>
		<pubDate>Thu, 20 Oct 2011 01:26:44 +0000</pubDate>
		<dc:creator>nocnokneo</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://taylor.braun-jones.org/?p=77</guid>
		<description><![CDATA[&#8230; that I&#8217;m clearly not following.]]></description>
			<content:encoded><![CDATA[<p>&#8230; <a href="http://productiveblog.tumblr.com/">that I&#8217;m clearly not following</a>.</p>
<div id="-chrome-auto-translate-plugin-dialog" style="opacity: 1 !important; background-image: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; background-color: transparent !important; position: absolute !important; top: 0px; left: 0px; overflow-x: visible !important; overflow-y: visible !important; z-index: 999999 !important; text-align: left !important; display: none; background-position: initial initial !important; background-repeat: initial initial !important; padding: 0px !important; margin: 0px !important;">
<div style="max-width: 300px !important; color: #fafafa !important; opacity: 0.8 !important; border-color: #000000 !important; border-width: 0px !important; -webkit-border-radius: 10px !important; background-color: #363636 !important; font-size: 16px !important; padding: 8px !important; overflow: visible !important; background-image: -webkit-gradient(linear, left top, right bottom, color-stop(0%, #000), color-stop(50%, #363636), color-stop(100%, #000)); z-index: 999999 !important; text-align: left  !important;"></div>
<p><img style="position: absolute !important; z-index: -1 !important; right: 1px !important; top: -20px !important; cursor: pointer !important; -webkit-border-radius: 20px; background-color: rgba(200, 200, 200, 0.3) !important; padding: 3px 5px 0 !important; margin: 0 !important;" onclick="document.location.href='http://translate.google.com/';" src="http://www.google.com/uds/css/small-logo.png" alt="" /></div>
]]></content:encoded>
			<wfw:commentRss>http://taylor.braun-jones.org/2011/10/19/great-advice/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The Laptop-with-Roaming-Services Problem</title>
		<link>http://taylor.braun-jones.org/2011/08/07/the-laptop-with-roaming-services-problem/</link>
		<comments>http://taylor.braun-jones.org/2011/08/07/the-laptop-with-roaming-services-problem/#comments</comments>
		<pubDate>Sun, 07 Aug 2011 20:30:01 +0000</pubDate>
		<dc:creator>nocnokneo</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://taylor.braun-jones.org/?p=74</guid>
		<description><![CDATA[This is a quick solution to the problem of hosting services on a roaming laptop that need to be semi-reliable and available. When switching connections from wired to wireless (or vice versa), services like ssh need to remain available and &#8230; <a href="http://taylor.braun-jones.org/2011/08/07/the-laptop-with-roaming-services-problem/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>This is a quick solution to the problem of hosting services on a roaming laptop that need to be semi-reliable and available. When switching connections from wired to wireless (or vice versa), services like ssh need to remain available and active connections should remain connected (albeit with maybe a brief disruption). The solution is to transfer an assigned static IP to some secondary interface (e.g. wlan0) whenever the primary interface (e.g. eth0) becomes disconnected.</p>
<p>The result is <a href="http://taylor.braun-jones.org/files/2011/08/nm-connection-delegation-0.1.tar_.gz">nm-connection-delegation</a>, a simple set of scripts that hook into Network Manager events <em>if-up</em> and <em>if-down</em>. To use, simply extract into /etc/network on any Debian or Ubuntu based system:</p>
<p>sudo tar -C /etc/network -zxf nm-connection-delegation-0.1.tar.gz</p>
<p>And configure a few values in /etc/network/connection-delegation. Note that this solution only works when both primary and secondary interfaces are on the same subnet.</p>
]]></content:encoded>
			<wfw:commentRss>http://taylor.braun-jones.org/2011/08/07/the-laptop-with-roaming-services-problem/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Saving Orphaned Terminal Applications</title>
		<link>http://taylor.braun-jones.org/2011/07/13/saving-orphaned-terminal-applications/</link>
		<comments>http://taylor.braun-jones.org/2011/07/13/saving-orphaned-terminal-applications/#comments</comments>
		<pubDate>Thu, 14 Jul 2011 03:19:53 +0000</pubDate>
		<dc:creator>nocnokneo</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[scripts]]></category>

		<guid isPermaLink="false">http://taylor.braun-jones.org/?p=71</guid>
		<description><![CDATA[No longer does it require a degree in UNIX voodoo to save shell processes which have become detached from a controlling TTY. Meet reptyr.]]></description>
			<content:encoded><![CDATA[<p>No longer does it require a degree in UNIX voodoo to save shell processes which have become detached from a controlling TTY. Meet <a href="http://blog.nelhage.com/2011/01/reptyr-attach-a-running-process-to-a-new-terminal/">reptyr</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://taylor.braun-jones.org/2011/07/13/saving-orphaned-terminal-applications/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dedication to Open Source Software</title>
		<link>http://taylor.braun-jones.org/2011/05/28/dedication-to-open-source-software/</link>
		<comments>http://taylor.braun-jones.org/2011/05/28/dedication-to-open-source-software/#comments</comments>
		<pubDate>Sat, 28 May 2011 12:35:06 +0000</pubDate>
		<dc:creator>nocnokneo</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://taylor.braun-jones.org/?p=70</guid>
		<description><![CDATA[Ran across this comment in Eye Of Gnome bug #78514: I would like to extend my thanks to the gnome team/community for a great last moment with my dad. Adrian Hands (my father) wrote the patch above to improve the &#8230; <a href="http://taylor.braun-jones.org/2011/05/28/dedication-to-open-source-software/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Ran across <a href="https://bugzilla.gnome.org/show_bug.cgi?id=78514#c19">this comment</a> in <a href="http://projects.gnome.org/eog/">Eye Of Gnome</a> bug <a href="https://bugzilla.gnome.org/show_bug.cgi?id=78514">#78514</a>:</p>
<p><code>I would like to extend my thanks to the gnome team/community for a great last<br />
moment with my dad.</p>
<p>Adrian Hands (my father) wrote the patch above to improve the usability of<br />
gnome for himself and others. You see my dad was suffering from ALS and his<br />
hands were so crippled he could no longer use a keyboard. Thus we used a Darci<br />
usb morse code keyboard emulator to help him type. Even the morse code device<br />
was a struggle as the sensitivity adjustment and positioning of the nice two<br />
paddled key would fall out of whack. I rigged up a pvc cage that wrapped around<br />
his knee and fixed remote switches to the cage so that he could use the<br />
remaining strength in his legs to operate the Darci morse code device. He used<br />
this last bit of body movement to write this patch.</p>
<p>Here is a photo of him using it:</p>
<p>https://picasaweb.google.com/HandsAdrian/ShotwellConnect#5549467460761802914</p>
<p>My father passed away yesterday. I went back through my email to find our last<br />
correspondence (he was in India for treatment, and I live in Raleigh). I would<br />
like to share the email with you.<br />
<email><br />
On Sun, Jan 30, 2011 at 12:16 PM, Adrian Hands <handsadrian@gmail.com> wrote:<br />
> ACCEPTed<br />
> COMMITed<br />
> RESOLVEd<br />
> BOO-YAH!<br />
><br />
> commit 0b209b1ff16e863e60a1d86413aa57c5fbde76b0<br />
> Author: Adrian Hands <handsadrian@gmail.com><br />
> Date:   Fri Dec 31 14:34:58 2010 +0100<br />
><br />
>    Add Copy Image and Copy Path to clipboard functionality<br />
><br />
>    Fixes bug 78514.<br />
><br />
>  data/eog-ui.xml  |    9 +++++++<br />
>  src/eog-window.c |   63 ++++++++++++++++++++++++++++++++++++++++++++++++++++++<br />
>  2 files changed, 72 insertions(+), 0 deletions(-)</p>
<p>I have the coolest Dad in the world!<br />
</email></p>
<p>I am so glad that my last comment to my Dad was something like this.</p>
<p>Adrian Hands loved free software / open source. I do as well.</p>
<p>Thanks so much for the great software, and a new great memory.<br />
-Ian Page Hands<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://taylor.braun-jones.org/2011/05/28/dedication-to-open-source-software/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Efficiency</title>
		<link>http://taylor.braun-jones.org/2011/01/10/efficiency/</link>
		<comments>http://taylor.braun-jones.org/2011/01/10/efficiency/#comments</comments>
		<pubDate>Mon, 10 Jan 2011 19:45:17 +0000</pubDate>
		<dc:creator>nocnokneo</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://taylor.braun-jones.org/?p=66</guid>
		<description><![CDATA[A Slashdot gem: Oh, the jobs people work at! Out west, near Hawtch-Hawtch, there&#8217;s a Hawtch-Hawtcher Bee-Watcher. His job is to watch&#8230; is to keep both his eyes on the lazy town bee. A bee that is watched will work &#8230; <a href="http://taylor.braun-jones.org/2011/01/10/efficiency/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>A <a href="http://ask.slashdot.org/comments.pl?sid=1944146&amp;cid=34823738">Slashdot gem</a>:</p>
<blockquote><p>Oh, the jobs people work at! Out west, near Hawtch-Hawtch, there&#8217;s a Hawtch-Hawtcher Bee-Watcher. His job is to watch&#8230; is to keep both his eyes on the lazy town bee. A bee that is watched will work harder, you see.</p>
<p>Well&#8230;he watched and he watched. But, in spite of his watch, that bee didn&#8217;t work any harder. Not mawtch.</p>
<p>So then somebody said, &#8216;Our old bee-watching man just isn&#8217;t bee-watching as hard as he can. <em>He</em> ought to be watched by <em>another</em> Hawtch-Hawtcher! The thing that we need is a Bee-Watcher -Watcher!&#8217;</p>
<p>Well&#8230; The Bee-Watcher-Watcher watched the Bee-Watcher. <em>He</em> didn&#8217;t watch well. So another Hawtch-Hawtcher had to come in as a Watch Watcher-Watcher!</p>
<p>And today all the Hawtchers who live in Hawtch-Hawtch are watching on Watch-Watcher-Watchering-Watch, Watch-Watching the Watcher who&#8217;s watching that bee.</p>
<p>You&#8217;re not a Hawtch-Watcher. You&#8217;re lucky, you see.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://taylor.braun-jones.org/2011/01/10/efficiency/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>My Feeds</title>
		<link>http://taylor.braun-jones.org/2010/12/04/my-feeds/</link>
		<comments>http://taylor.braun-jones.org/2010/12/04/my-feeds/#comments</comments>
		<pubDate>Sat, 04 Dec 2010 21:34:59 +0000</pubDate>
		<dc:creator>nocnokneo</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://taylor.braun-jones.org/?p=63</guid>
		<description><![CDATA[Sounds and Pictures NPR (Audio/Text via NPR Android app, Text via web feed on iGoogle, Audio via FM radio) TED Talks (via Ted Talks Boxee app) The Linux Action Show (Audio via web feed on Listen Android app, Video via &#8230; <a href="http://taylor.braun-jones.org/2010/12/04/my-feeds/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<h3>Sounds and Pictures</h3>
<ul>
<li><a href="http://npr.org">NPR</a> (Audio/Text via <a href="http://www.npr.org/services/mobile/android.php">NPR Android app</a>, Text via web feed on <a href="http://igoogle.com">iGoogle</a>, Audio via FM radio)</li>
<li><a href="http://ted.com">TED Talks</a> (via <a href="http://blog.ted.com/2010/10/05/boxee-app/">Ted Talks Boxee app</a>)</li>
<li><a href="http://www.jupiterbroadcasting.com/?cat=4">The Linux Action Show</a> (Audio via web feed on <a href="http://listen.googlelabs.com/">Listen</a> Android app, Video via web feed on Boxee)</li>
<li><a href="http://xkcd.com">xkcd</a> (via web feed on iGoogle)</li>
</ul>
<h3><a href="http://xkcd.com/148/">Blags</a></h3>
<ul>
<li><a href="http://slashdot.org/">Slashdot</a></li>
<li><a href="http://lifehacker.com">Lifehacker</a></li>
<li><a href="http://iheartrobotics.com">I Heart Robotics</a></li>
<li><a href="http://www.mint.com/blog/">MintLife</a></li>
<li><a href="http://diveintomark.org">Dive Into Mark</a></li>
<li><a href="http://usesthis.com">The Setup</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://taylor.braun-jones.org/2010/12/04/my-feeds/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Localization is a lot of work!</title>
		<link>http://taylor.braun-jones.org/2010/08/29/localization-is-a-lot-of-work/</link>
		<comments>http://taylor.braun-jones.org/2010/08/29/localization-is-a-lot-of-work/#comments</comments>
		<pubDate>Sun, 29 Aug 2010 19:59:46 +0000</pubDate>
		<dc:creator>nocnokneo</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[localization]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://taylor.braun-jones.org/?p=56</guid>
		<description><![CDATA[But satisfying. I&#8217;m finally calling elana.braun-jones.org localized enough and I have to say that it is cool to have an identical feature set in two fully localized versions (en_US and fr_FR). Just some of the tasks to get the site &#8230; <a href="http://taylor.braun-jones.org/2010/08/29/localization-is-a-lot-of-work/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>But satisfying. I&#8217;m finally calling <a href="http://elana.braun-jones.org">elana.braun-jones.org</a> localized enough and I have to say that it is cool to have an identical feature set in two fully localized versions (en_US and fr_FR). Just some of the tasks to get the site fully localized:</p>
<ul>
<li><em><strong>Make the </strong></em><a href="http://wordpress.org/extend/themes/freedream"><em><strong>FreeDream</strong></em></a><em><strong> theme localizable</strong></em> by wrapping all the text in __(&#8230;) or _e(&#8230;) <a href="http://www.gnu.org/software/gettext/gettext.html">GNU gettext</a> wrappers. Ironically, the theme was written by a <a href="http://dreamgratuit.canalblog.com/">French lady</a> who hard-coded some French strings that I had to first translate to English so that I could then &#8230;</li>
<li><em><strong>Translate the FreeDream theme to French.</strong></em> I used <a title="A cross-platform gettext catalogs editor" href="http://www.poedit.net/">Poedit</a> which has a mediocre UI, but it met my minimum requirements. This tool scanned the theme&#8217;s PHP source and generated a <strong>.pot</strong>/<strong>.po</strong>. I commissioned <a href="http://cecile.braun-jones.org">some help</a> to get the strings translated then generated the <strong>.mo</strong> file (poedit actually does this automatically every time you save) and uploaded to the theme&#8217;s directory. Things looked good, but there were still some miscellaneous strings still in English. To zap those, I had to&#8230;</li>
<li><strong><em>Install WPML and translate some more.</em></strong> <a title="By far the best WordPress multi-lingual plugin" href="http://wpml.org/">W﻿PML</a> is the key ingredient that makes translating a WordPress site manageable. And it does so without mucking up the default WordPress SQL tables. Aside from providing nice interfaces that allow you to translate all your own content (posts, categories, and pages), it also hunts down those miscellaneous strings that I mentioned and provides a web interface to translate them. You can even export .po/.mo files when you&#8217;re done. Very cool. This is the feature that makes it easy to&#8230;</li>
<li><strong><em>Localize custom site features.</em></strong> Since WPML can translate Text widgets (which can hold HTML and even PHP) I was able to add a growth chart generated by <a href="http://code.google.com/apis/chart/">Google Chart</a> that displayed inches or centimeters based on the locale. In the same way, I added a <a title="A great mail list manager" href="http://www.mailchimp.com/">MailChimp</a> <a href="http://www.mailchimp.com/features/power_features/rss/">RSS-to-Email</a> subscription form that subscribed users to the correct list – an English one connected to domain.com/feed/ and a French one connected to domain.com/fr/feed/.</li>
</ul>
<p><a title="English." href="http://elana.braun-jones.org/">And</a> <a title="French" href="http://elana.braun-jones.org/fr/">voilà</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://taylor.braun-jones.org/2010/08/29/localization-is-a-lot-of-work/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>!$</title>
		<link>http://taylor.braun-jones.org/2010/07/15/45/</link>
		<comments>http://taylor.braun-jones.org/2010/07/15/45/#comments</comments>
		<pubDate>Thu, 15 Jul 2010 18:17:36 +0000</pubDate>
		<dc:creator>nocnokneo</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://taylor.braun-jones.com/blog/?p=45</guid>
		<description><![CDATA[[There is a video that cannot be displayed in this feed. Visit the blog entry to see the video.]]]></description>
			<content:encoded><![CDATA[<p>[There is a video that cannot be displayed in this feed. <a href="http://taylor.braun-jones.org/2010/07/15/45/">Visit the blog entry to see the video.]</a></p>
]]></content:encoded>
			<wfw:commentRss>http://taylor.braun-jones.org/2010/07/15/45/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>World&#8217;s smallest USB drive&#8230; now even smaller!</title>
		<link>http://taylor.braun-jones.org/2010/07/13/worlds-smallest-usb-drive-now-even-smaller/</link>
		<comments>http://taylor.braun-jones.org/2010/07/13/worlds-smallest-usb-drive-now-even-smaller/#comments</comments>
		<pubDate>Tue, 13 Jul 2010 21:11:31 +0000</pubDate>
		<dc:creator>nocnokneo</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[hardware]]></category>
		<category><![CDATA[usb]]></category>

		<guid isPermaLink="false">http://taylor.braun-jones.com/blog/?p=44</guid>
		<description><![CDATA[The PQI i810 claimed to be the smallest drive on the market at one point (I&#8217;m not sure if they still do). But having just made a chicago screw compact keychain, I no longer had a spot on my keychain &#8230; <a href="http://taylor.braun-jones.org/2010/07/13/worlds-smallest-usb-drive-now-even-smaller/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://www.amazon.com/PQI-Intelligent-waterproof-dust-proof-characteristics/dp/B001AVPOC2/ref=pd_sim_e_3">PQI i810</a> claimed to be the smallest drive on the market at one point (I&#8217;m not sure if they still do). But having just made a <a href="http://carlitoscontraptions.com/2009/03/compact-keychain-20/">chicago screw compact keychain</a>, I no longer had a spot on my keychain for it. Small wasn&#8217;t small enough. Also the spring clip that holds the protective housing in place when expanded or contracted had just broken so I decided to do away with the housing completely.</p>
<p><a href="http://taylor.braun-jones.org/files/2010/07/wpid-2010-07-13-16.52.25.jpg"><img class="aligncenter size-medium wp-image-54" title="wpid-2010-07-13-16.52.25" src="http://taylor.braun-jones.org/files/2010/07/wpid-2010-07-13-16.52.25-300x224.jpg" alt="" width="300" height="224" /></a></p>
<p>I was a simple job with needle nose pliers and a utility knife and now I have a wallet-size USB drive:</p>
<p><a href="http://taylor.braun-jones.org/files/2010/07/wpid-2010-07-13-16.51.17.jpg"><img class="aligncenter size-medium wp-image-53" title="wpid-2010-07-13-16.51.17" src="http://taylor.braun-jones.org/files/2010/07/wpid-2010-07-13-16.51.17-300x224.jpg" alt="" width="300" height="224" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://taylor.braun-jones.org/2010/07/13/worlds-smallest-usb-drive-now-even-smaller/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Stop #@$!ing up my last name!</title>
		<link>http://taylor.braun-jones.org/2010/07/13/stop-f-ing-up-my-last-name/</link>
		<comments>http://taylor.braun-jones.org/2010/07/13/stop-f-ing-up-my-last-name/#comments</comments>
		<pubDate>Tue, 13 Jul 2010 02:22:48 +0000</pubDate>
		<dc:creator>nocnokneo</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[rant]]></category>

		<guid isPermaLink="false">http://taylor.braun-jones.com/blog/?p=40</guid>
		<description><![CDATA[My last name is not: Braun-jones Braunjones Braun Jones Yet those were my options according the the person responding from info@reunion-specialists.com. I fully understand the problem they face1: Sorry about the limited options, alumni were entering their names with all &#8230; <a href="http://taylor.braun-jones.org/2010/07/13/stop-f-ing-up-my-last-name/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>My last name is not:</p>
<ul>
<li>Braun-jones</li>
<li>Braunjones</li>
<li>Braun Jones</li>
</ul>
<p>Yet those were my options according the the person responding from info@reunion-specialists.com. I fully understand the problem they face<sup><a href="http://taylor.braun-jones.org/2010/07/13/stop-f-ing-up-my-last-name/#footnote_0_40" id="identifier_0_40" class="footnote-link footnote-identifier-link" title="Well, not really. They are charging $80-100 per person to attend a high school reunion so I know they have the funds to do old-fashioned human input validation.">1</a></sup>:</p>
<blockquote><p>Sorry about the limited options, alumni were entering their names with all caps or all lower case and the name badges looked terrible so we wrote this rule to keep things as consistent as possible.</p></blockquote>
<p>But their solution is pathetic: always capitalize the first letter and any subsequent letter that is preceded by a space. Since the support contact at Reunions Specialists was completely unapologetic and not even willing to fix my name by hand, I decided to stop for 15 minutes and spoon feed the webmaster of the reunion-specialists.com. A very good (but not perfect) solution is not difficult to design if you just realize that (1) virtually no surname consists of all lowercase or all uppercase and (2) almost all mis-capitalization is due to the use of all lowercase or all uppercase. So, if the entered surname contains mixed case, the user probably meant for it to be that way. If not, do your best to guess the correct capitalization, but since the user didn&#8217;t even care enough to type it right, don&#8217;t feel bad if you don&#8217;t get it perfect. Here&#8217;s a basic PHP implementation:</p>
<pre>
function CapitalizeLastName($name) {
    /* Only try to "fix" the capitalization if it is wrong */
    if (strtolower($name) == $name || strtoupper($name) == $name) {
        $name = strtolower($name);
        $name = join("'", array_map('ucwords', explode("'", $name)));
        $name = join("-", array_map('ucwords', explode("-", $name)));
    }
    return $name;
}</pre>
<p>This gives pretty decent results:</p>
<pre>braun-jones -&gt; Braun-Jones
BRAUN-JONES -&gt; Braun-Jones
Braun-Jones -&gt; Braun-Jones
St. Jean -&gt; St. Jean
st. jean -&gt; St. Jean
ST. JEAN -&gt; St. Jean
de cordova -&gt; De Cordova
De Cordova -&gt; De Cordova
de Cordova -&gt; de Cordova
McDonald -&gt; McDonald
o'reilly -&gt; O'Reilly
O'Reilly -&gt; O'Reilly
O'REILLY -&gt; O'Reilly
Brown -&gt; Brown
BROWN -&gt; Brown
brown -&gt; Brown</pre>
<p></p>
<ol class="footnotes"><li id="footnote_0_40" class="footnote">Well, not really. They are charging $80-100 per person to attend a high school reunion so I know they have the funds to do old-fashioned <em>human</em> input validation.</li></ol>]]></content:encoded>
			<wfw:commentRss>http://taylor.braun-jones.org/2010/07/13/stop-f-ing-up-my-last-name/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

