<?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>MaisonBisson.com &#187; Casey Bisson</title>
	<atom:link href="http://maisonbisson.com/blog/post/author/misterbisson/feed/" rel="self" type="application/rss+xml" />
	<link>http://maisonbisson.com</link>
	<description>A bunch of stuff I would have emailed you about.</description>
	<lastBuildDate>Sat, 14 Nov 2009 20:14:03 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>My WordCamp NYC Talks</title>
		<link>http://maisonbisson.com/blog/post/14151/my-wordcamp-nyc-talks/</link>
		<comments>http://maisonbisson.com/blog/post/14151/my-wordcamp-nyc-talks/#comments</comments>
		<pubDate>Sat, 14 Nov 2009 20:13:44 +0000</pubDate>
		<dc:creator>Casey Bisson</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[presentation]]></category>
		<category><![CDATA[scriblio]]></category>
		<category><![CDATA[WordCamp]]></category>
		<category><![CDATA[WordCamp NYC]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/?p=14151</guid>
		<description><![CDATA[

Authentication Hacks
My first talk was on User Authentication with MU in Existing Ecosystems, all about integrating WP with LDAP/AD/CAS and other directory authentication schemes, as well as the hacks I did to make that integration bi-directional and deliver new user features. My slides are online (.MOV / .PDF), and you can read earlier blog post [...]]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="maisonbisson-14151"><!-- &nbsp; --></abbr>
<p><a title="WordCampNYC – Nov 14-15" href="http://2009.newyork.wordcamp.org"><img class="alignright" src="http://2009.newyork.wordcamp.org/files/2009/10/wcnyc-speaking-250.jpg" alt="WordCampNYC – Nov 14-15" width="250" height="250" /></a></p>
<h3 id="14151_authentication-hacks_1">Authentication Hacks</h3>
<p>My first talk was on <a href="http://2009.newyork.wordcamp.org/2009/11/01/hacking-authentication/">User Authentication with MU in Existing Ecosystems</a>, all about integrating WP with LDAP/AD/CAS and other directory authentication schemes, as well as <a href="http://maisonbisson.com/blog/post/14110/wordpress-user-authentication-hacks/">the hacks I did to make that integration bi-directional</a> and deliver new user features. My slides are online (<a href="http://oz.plymouth.edu/~cbisson/presentations/WordCampNYC-Authentication-2009Nov13.mov">.MOV</a> / <a href="http://oz.plymouth.edu/~cbisson/presentations/WordCampNYC-Authentication-2009Nov13.pdf">.PDF</a>), and you can read earlier <a href="http://maisonbisson.com/blog/post/14110/wordpress-user-authentication-hacks/">blog post summing up the project</a>.</p>
<h4 id="14151_plugins-mentioned_1">Plugins Mentioned</h4>
<ul>
<li><a href="http://wordpress.org/extend/plugins/wpcas/">wpCAS</a> (<a href="http://maisonbisson.com/projects/wpcas/">long description</a>)</li>
<li><a href="http://wordpress.org/extend/plugins/alternate-contact-info/">Alternate Contact Info</a></li>
<li><a href="http://wordpress.org/extend/plugins/wp-ticket-framework/">WordPress Ticket Framework</a></li>
<li><a href="http://wordpress.org/extend/plugins/wpsms/">wpSMS</a> (<a href="http://maisonbisson.com/projects/wpsms/">long description</a>)</li>
</ul>
<h3 id="14151_scriblio_1">Scriblio</h3>
<p>I was most excited, however, to talk about <a href="http://about.scriblio.net/">Scriblio</a>, a plugin that turns WordPress into a library catalog with faceted searching and browsing. Those slides are online as well (<a href="http://oz.plymouth.edu/~cbisson/presentations/WordCampNYC-Scriblio-2009Nov13.mov">.MOV</a> / <a href="http://oz.plymouth.edu/~cbisson/presentations/WordCampNYC-Scriblio-2009Nov13.pdf">.PDF</a>). The <a href="http://wordpress.org/extend/plugins/scriblio/">core plugin is in the repository</a>, but I&#8217;d recommend people <a href="http://groups.google.com/group/scriblio/">join the mail list</a> if they&#8217;re thinking of diving in to it.</p>
<h4 id="14151_scriblio-sites-i-dem_1">Scriblio Sites I Demoed</h4>
<ul>
<li><a href="http://collingswoodlib.org/">Collingswood Public Library</a></li>
<li><a href="http://archives.colby-sawyer.edu/">Colby-Sawyer College Archives</a></li>
<li><a href="http://beyondbrownpaper.plymouth.edu/browse">Beyond Brown Paper photo archive</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/blog/post/14151/my-wordcamp-nyc-talks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://oz.plymouth.edu/~cbisson/presentations/WordCampNYC-Authentication-2009Nov13.mov" length="19541483" type="video/quicktime" />
<enclosure url="http://oz.plymouth.edu/~cbisson/presentations/WordCampNYC-Scriblio-2009Nov13.mov" length="29105170" type="video/quicktime" />
		</item>
		<item>
		<title>Spell Checking</title>
		<link>http://maisonbisson.com/blog/post/14163/spell-checking/</link>
		<comments>http://maisonbisson.com/blog/post/14163/spell-checking/#comments</comments>
		<pubDate>Thu, 12 Nov 2009 15:03:37 +0000</pubDate>
		<dc:creator>Casey Bisson</dc:creator>
				<category><![CDATA[Dispatches]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[After the Deadline]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[dictionary]]></category>
		<category><![CDATA[online dictionaries]]></category>
		<category><![CDATA[Spell checker]]></category>
		<category><![CDATA[spell checking]]></category>
		<category><![CDATA[spelling]]></category>
		<category><![CDATA[Wordnik]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/?p=14163</guid>
		<description><![CDATA[
Matt demanded accent-aware spell checking for the WordPress spell checking plugin his company acquired earlier this year. And just a little more than a month later, After the Deadline delivered. Now Beyoncé, café, coöperate, and even my resumé look prettier.
Separately, Wordnik offers a new take on online dictionaries, and they just launched an API.
]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="maisonbisson-14163"><!-- &nbsp; --></abbr>
<p><a href="http://blog.afterthedeadline.com/2009/09/24/top-ignored-phrases-on-wordpress-com/#comment-229">Matt demanded accent-aware spell checking</a> for the <a href="http://wordpress.org/extend/plugins/after-the-deadline/">WordPress spell checking plugin</a> his company acquired earlier this year. And just a little more than a month later, <a href="http://blog.afterthedeadline.com/2009/11/10/accent-your-writing-with-atd/">After the Deadline delivered</a>. Now Beyoncé, café, coöperate, and even my resumé look prettier.</p>
<p>Separately, <a href="http://www.wordnik.com/">Wordnik</a> offers a new take on online dictionaries, and they just launched <a href="http://docs.wordnik.com/">an API</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/blog/post/14163/spell-checking/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Backblaze Storage Pod</title>
		<link>http://maisonbisson.com/blog/post/14160/backblaze-storage-pod/</link>
		<comments>http://maisonbisson.com/blog/post/14160/backblaze-storage-pod/#comments</comments>
		<pubDate>Thu, 05 Nov 2009 16:53:17 +0000</pubDate>
		<dc:creator>Casey Bisson</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Backblaze]]></category>
		<category><![CDATA[disk drives]]></category>
		<category><![CDATA[mass storage]]></category>
		<category><![CDATA[storage]]></category>
		<category><![CDATA[storage capacity]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/?p=14160</guid>
		<description><![CDATA[
Backblaze is a cloud backup service that needs cheap storage. Lots of it. They say a petabyte worth of raw drives runs under $100,000, but buying that much storage in products from major vendors easily costs over $1,000,000. So they built their own.
The result is a 4U rack-mounted Linux-based server that contains 67 terabytes at [...]]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="maisonbisson-14160"><!-- &nbsp; --></abbr>
<p>Backblaze is a cloud backup service that needs cheap storage. Lots of it. They say a petabyte worth of raw drives runs under $100,000, but buying that much storage in products from major vendors easily costs over $1,000,000. So they built their own.</p>
<blockquote><p>The result is a 4U rack-mounted Linux-based server that contains 67 terabytes at a material cost of $7,867, the bulk of which goes to purchase the drives themselves.</p></blockquote>
<p>And best of all, they <a href="http://blog.backblaze.com/2009/09/01/petabytes-on-a-budget-how-to-build-cheap-cloud-storage/">open sourced their hardware</a>:</p>
<p><a href="http://maisonbisson.com/files/2009/11/backblaze-storage-pod-main-components.jpg"><img class="aligncenter size-full wp-image-14161" src="http://maisonbisson.com/files/2009/11/backblaze-storage-pod-main-components.jpg" alt="backblaze storage pod main components" width="560" height="800" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/blog/post/14160/backblaze-storage-pod/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Drobo: Sweet Storage, One Big Flaw</title>
		<link>http://maisonbisson.com/blog/post/11773/drobo-sweet-storage-one-big-flaw/</link>
		<comments>http://maisonbisson.com/blog/post/11773/drobo-sweet-storage-one-big-flaw/#comments</comments>
		<pubDate>Mon, 02 Nov 2009 16:25:13 +0000</pubDate>
		<dc:creator>Casey Bisson</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[Drobo]]></category>
		<category><![CDATA[flaw]]></category>
		<category><![CDATA[overflow]]></category>
		<category><![CDATA[raid]]></category>
		<category><![CDATA[storage]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/blog/post/11773/#blank-5</guid>
		<description><![CDATA[

I&#8217;ve been a fan of Drobo since I got mine over a year ago. The little(-ish, and sweet looking, for stack of disks) device packs as many as four drives and automatically manages them to ensure the reliability of your data and easy expandability of the storage. However, Thomas Tomchak just pointed out one major [...]]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="maisonbisson-11773"><!-- &nbsp; --></abbr>
<p><a href="http://www.flickr.com/photos/pixelthing/3202848283/" title="Drobo! by pixelthing, on Flickr"><img src="http://farm4.static.flickr.com/3120/3202848283_d6c7f593a0.jpg" width="433" height="500" alt="Drobo!" /></a></p>
<p>I&#8217;ve been <a href="http://maisonbisson.com/blog/post/12339/sweet-drobo-home-raid/">a fan of Drobo</a> since I got mine over a year ago. The little(-ish, and <a href="http://www.flickr.com/photos/rickyromero/4016344804/">sweet looking, for stack of disks</a>) device packs as many as four drives and automatically manages them to ensure the reliability of your data and easy expandability of the storage. However, <a href="http://www.suitetake.com/2009/08/21/the-dark-side-of-drobo/">Thomas Tomchak just pointed out one major flaw</a>: if you overflow your Drobo with data, the entire device may give up and you&#8217;ll lose everything.</p>
<p>How do you overflow a Drobo? Most users only have a few terrabytes of storage in their Drobo, but configure it to tell the computer its attached to that it can store eight or 16 TB of data. Doing that allows easy expansion when more or larger drives are added &#8212; the attached computer doesn&#8217;t need to reformat anything, it can simply save more stuff to the device &#8212; but it also opens the door to the Drobo overflow.</p>
<p>From Tomchak&#8217;s post:</p>
<blockquote><p>While on my tech support call I asked the engineer how frequently he received calls about this particular problem. After a big sigh he admitted that it was nearly every day.</p>
</blockquote>
<p>One commenter on the article suggested the Drobo could &#8220;just simulate that the uninstalled part is already full of simulated read-only data,&#8221; a suggestion that makes sense, but may require the Drobo to know more about the filesystem on it than it otherwise would.</p>
<p>I&#8217;ve been at 90% capacity on my Drobo for a while, I think it&#8217;s time I popped another disk in there.</p>
<p>(CC licensed photo by <a href="http://www.flickr.com/photos/pixelthing/3202848283/">Pixelthing</a>.)</p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/blog/post/11773/drobo-sweet-storage-one-big-flaw/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Bugs That Haunt Me</title>
		<link>http://maisonbisson.com/blog/post/11313/bugs-and-hacks/</link>
		<comments>http://maisonbisson.com/blog/post/11313/bugs-and-hacks/#comments</comments>
		<pubDate>Fri, 16 Oct 2009 16:17:56 +0000</pubDate>
		<dc:creator>Casey Bisson</dc:creator>
				<category><![CDATA[Politics & Controversy]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[bad]]></category>
		<category><![CDATA[buggy]]></category>
		<category><![CDATA[bugs]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[software development]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/blog/post/11313/</guid>
		<description><![CDATA[
A few years ago I found an article pointing out how spammers had figured out how to abuse some code I wrote back in 2001 or so. I&#8217;d put it on the list to fix and even started a blog post so that I could take my lumps publicly.
Now I&#8217;ve rediscovered that draft post&#8230;and that [...]]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="maisonbisson-11313"><!-- &nbsp; --></abbr>
<p>A few years ago I found an article pointing out how <a href="http://www.codeka.com/blogs/index.php/dean/2006/03/28/clever_spammers">spammers had figured out how to abuse some code</a> I wrote back in 2001 or so. I&#8217;d put it on the list to fix and even started a blog post so that I could take my lumps publicly.</p>
<p>Now I&#8217;ve rediscovered that draft post&#8230;and that I never fixed the bad code it had fingered. Worse, I&#8217;m no longer in a position to change the code. </p>
<p>Along similar lines, I&#8217;ve been told that a database driven DHCP config file generator that I wrote back in the late 1990s is still in use, and still suffers bugs due to my failure to sanitize MAC addresses that, being entered by humans, sometimes have errors.</p>
<p>I&#8217;ve written bad code since then and will write more bad code still, but as my participation in open source projects has increased, I&#8217;ve enjoyed the benefit of community examples and criticism. My work now is better for it.</p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/blog/post/11313/bugs-and-hacks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SSH Tunneling Examples</title>
		<link>http://maisonbisson.com/blog/post/14142/ssh-tunneling-example/</link>
		<comments>http://maisonbisson.com/blog/post/14142/ssh-tunneling-example/#comments</comments>
		<pubDate>Thu, 15 Oct 2009 16:46:46 +0000</pubDate>
		<dc:creator>Casey Bisson</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[networking]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[SSH]]></category>
		<category><![CDATA[tunnel]]></category>
		<category><![CDATA[tunneling]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/?p=14142</guid>
		<description><![CDATA[
Most of my work is available publicly, but some development is hosted on a private SVN that&#8217;s hidden behind a firewall. Unfortunately, my primary development server is on the wrong side of that particular firewall, so I use the following command to bridge the gap:
ssh -R 1980:svn_host:80 username@dev_server.com
That creates a reverse tunnel through my laptop [...]]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="maisonbisson-14142"><!-- &nbsp; --></abbr>
<p>Most of my work is available publicly, but some development is hosted on a private SVN that&#8217;s hidden behind a firewall. Unfortunately, my primary development server is on the wrong side of that particular firewall, so I use the following command to bridge the gap:</p>
<p><code>ssh -R 1980:svn_host:80 username@dev_server.com</code></p>
<p>That creates a reverse tunnel through my laptop to the SVN server and allows me to checkout code using the following:</p>
<p><code>http://localhost:1980/path/to/trunk</code></p>
<p>I&#8217;m posting that because I lost my terminal command history and had to think for a moment about how to do this again.</p>
<p>Years ago I used to tunnel my outgoing email to an un-authenticated SMTP server that only accepted outgoing messages from hosts on the local network. That was fairly common back in 2000 or so, but obviously made life (or communication) difficult for people at home or on the road. The easy solution was to SSH to a machine on mail server&#8217;s local network and forward emails through it.</p>
<p><code>ssh -L 1925:email_host:25 username@ssh_host</code></p>
<p>Doing that, I was able to configure my mail client to send outgoing emails using a server configuration like the following:</p>
<p><code>SMTP host: localhost<br />
SMTP port: 1925</code></p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/blog/post/14142/ssh-tunneling-example/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Yelp: A Poster Child For Semantic Markup</title>
		<link>http://maisonbisson.com/blog/post/14078/yelp-a-poster-child-for-semantic-markup/</link>
		<comments>http://maisonbisson.com/blog/post/14078/yelp-a-poster-child-for-semantic-markup/#comments</comments>
		<pubDate>Wed, 14 Oct 2009 16:48:24 +0000</pubDate>
		<dc:creator>Casey Bisson</dc:creator>
				<category><![CDATA[Dispatches]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[microformats]]></category>
		<category><![CDATA[semantic markup]]></category>
		<category><![CDATA[semantic web]]></category>
		<category><![CDATA[web development]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/?p=14078</guid>
		<description><![CDATA[
Search Engine Land.com:
Yelp&#8230;is&#8230;essentially a poster-child for semantic markup. This spring, Google’s introduction of rich snippets has allowed Yelp’s listings in the SERPs to stand out more, attracting consumers to click more due to the “bling” decorating the listings in the form of the star ratings.
There are now some very good reasons why sites with ratings [...]]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="maisonbisson-14078"><!-- &nbsp; --></abbr>
<p><a href="http://searchengineland.com/brave-new-world-for-yellow-pages-google-nabs-marketshare-strangles-local-directories-25492">Search Engine Land.com</a>:</p>
<blockquote><p>Yelp&#8230;is&#8230;essentially a poster-child for semantic markup. This spring, Google’s introduction of rich snippets has allowed Yelp’s listings in the SERPs to stand out more, attracting consumers to click more due to the “bling” decorating the listings in the form of the star ratings.</p>
<p>There are now some very good reasons why sites with ratings and reviews should be adopting microformats, and it’s not that hard to do! For a more detailed explanation, read my recap on the subject, <a href="http://www.semclubhouse.com/why-use-microformats/">Why Use Microformats</a>?</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/blog/post/14078/yelp-a-poster-child-for-semantic-markup/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iPhone&#8217;s Anti-Customer Config File</title>
		<link>http://maisonbisson.com/blog/post/11772/iphones-anti-customer-config-file/</link>
		<comments>http://maisonbisson.com/blog/post/11772/iphones-anti-customer-config-file/#comments</comments>
		<pubDate>Tue, 13 Oct 2009 16:06:26 +0000</pubDate>
		<dc:creator>Casey Bisson</dc:creator>
				<category><![CDATA[Politics & Controversy]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[control]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[trusted computing]]></category>
		<category><![CDATA[vendor vs. consumer]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/blog/post/11772/#blank-4</guid>
		<description><![CDATA[
In March of this year Apple applied for a patent on technology that enables or disables features of a phone via a config file. The tech is already in use: it&#8217;s the carrier profiles we&#8217;ve been downloading recently. On the one hand this is just an extension of the parental controls that Apple has included [...]]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="maisonbisson-11772"><!-- &nbsp; --></abbr>
<p>In March of this year <a href="http://appft.uspto.gov/netacgi/nph-Parser?Sect1=PTO1&amp;Sect2=HITOFF&amp;d=PG01&amp;p=1&amp;u=%2Fnetahtml%2FPTO%2Fsrchnum.html&amp;r=1&amp;f=G&amp;l=50&amp;s1=%2220090247124%22.PGNR.&amp;OS=DN/20090247124&amp;RS=DN/20090247124">Apple applied for a patent</a> on technology that enables or disables features of a phone via a config file. The tech is already in use: it&#8217;s the carrier profiles we&#8217;ve been downloading recently. On the one hand this is just an extension of the <a href="http://www.apple.com/findouthow/mac/#parentalcontrols">parental controls</a> that Apple has <a href="http://docs.info.apple.com/article.html?path=Mac/10.4/en/mh2258.html">included in Mac OS X since the early days</a>, but it also implies some rather anti-consumer thinking at the company.</p>
<p>One examplar claim in the patent is that the config file can include a &#8220;blacklist of device resources to be restricted from access.&#8221;</p>
<p>AT&amp;T used this this technology to block MMS until recently, and uses it now to block tethering, but the description given in the patent application goes much further:</p>
<blockquote><p>For example, a carrier may wish to provide an enhanced service which utilizes the global positioning system (GPS) functionality in a mobile device. Carrier may wish to charge a premium for this service, so it may configure carrier provisioning profile to disallow third party applications from accessing the GPS functionality in device, and instead only allow applications digitally signed by carrier (or another entity affiliated with carrier) to access the GPS services in device.</p></blockquote>
<p>Readers <a href="http://maisonbisson.com/blog/post/10809/trusted-computing-the-movie/">may remember</a> the <a href="http://www.lafkon.net/tc/">Trusted Computing</a> <a href="http://www.archive.org/details/BenjaminStephanLutzVogel">vide</a><a href="http://ia331437.us.archive.org/0/items/BenjaminStephanLutzVogel/TrustedComputing_LAFKON_MID.mov">o</a> by Lutz Vogel and Benjamin Stephan that spotlighted the growing interest within the computing industry to impose new and artificial restrictions on the way we use the hardware and software we use daily.</p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/blog/post/11772/iphones-anti-customer-config-file/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://ia331437.us.archive.org/0/items/BenjaminStephanLutzVogel/TrustedComputing_LAFKON_MID.mov" length="25857760" type="video/quicktime" />
		</item>
		<item>
		<title>Evil Evil klaomta.com</title>
		<link>http://maisonbisson.com/blog/post/13979/evil-evil-klaomta-com/</link>
		<comments>http://maisonbisson.com/blog/post/13979/evil-evil-klaomta-com/#comments</comments>
		<pubDate>Fri, 09 Oct 2009 15:48:00 +0000</pubDate>
		<dc:creator>Casey Bisson</dc:creator>
				<category><![CDATA[Dispatches]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[cracking]]></category>
		<category><![CDATA[klaomta.com]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[web site]]></category>
		<category><![CDATA[web spam]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/?p=13979</guid>
		<description><![CDATA[
A quick Google search of klaomta.com reveals more than a few people wondering why it&#8217;s iframed on their websites. The answer is that the site has been compromised.
Unfortunately for the fellow who asked me the question at WordCamp, solving the problem can be a bit of a chore. Keeping your WordPress installation up to date [...]]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="maisonbisson-13979"><!-- &nbsp; --></abbr>
<p>A quick <a href="http://www.google.com/search?client=safari&amp;rls=en&amp;q=klaomta.com&amp;ie=UTF-8&amp;oe=UTF-8">Google search</a> of <code>klaomta.com</code> reveals more than a few people wondering why it&#8217;s iframed on their websites. The answer is that the site has been compromised.</p>
<p>Unfortunately for the fellow who asked me the question at <a href="http://2009.sf.wordcamp.org/">WordCamp</a>, solving the problem can be a bit of a chore. <a href="http://codex.wordpress.org/Upgrading_WordPress">Keeping your WordPress installation up to date</a> is important, as there are some known security flaws in older versions, but most of the attacks that crackers use are targeted elsewhere. Your passwords, all your server apps, the PHP config, your hosting control panel, and other users all must go under the microscope when trying to find security holes.</p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/blog/post/13979/evil-evil-klaomta-com/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress Hacks: Nested Paths For WPMU Blogs</title>
		<link>http://maisonbisson.com/blog/post/14052/wordpress-hacks-nested-paths-for-wpmu-blogs/</link>
		<comments>http://maisonbisson.com/blog/post/14052/wordpress-hacks-nested-paths-for-wpmu-blogs/#comments</comments>
		<pubDate>Tue, 15 Sep 2009 16:23:10 +0000</pubDate>
		<dc:creator>Casey Bisson</dc:creator>
				<category><![CDATA[Libraries & Networked Information]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[cms]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[hacks]]></category>
		<category><![CDATA[information architecture]]></category>
		<category><![CDATA[url path]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[WordPress MU]]></category>
		<category><![CDATA[wpmu]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/?p=14052</guid>
		<description><![CDATA[
Situation: you&#8217;ve got WordPress Multi-User setup to host one or more domains in sub-directory mode (as in site.org/blogname), but you want a deeper directory structure than WPMU allows&#8230;something like the following examples, perhaps:

site.org/blogname1
site.org/departments/blogname2
site.org/departments/blogname3
site.org/services/blogname3

The association between blog IDs and sub-directory paths is determined in wpmu-settings.php, but the code there knows nothing about nested paths. So a [...]]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="maisonbisson-14052"><!-- &nbsp; --></abbr>
<p><strong><span style="font-weight: normal"><div class="contents innerindex"><h3>Contents</h3><ol><li><a href="http://maisonbisson.com/blog/post/14052/wordpress-hacks-nested-paths-for-wpmu-blogs/#14052_hack-the-path-mappin_1">Hack The Path Mapping</a><ol><li><a href="http://maisonbisson.com/blog/post/14052/wordpress-hacks-nested-paths-for-wpmu-blogs/#14052_optimization-note_1">Optimization note</a></li></ol></li><li><a href="http://maisonbisson.com/blog/post/14052/wordpress-hacks-nested-paths-for-wpmu-blogs/#14052_setting-up-new-blogs_1">Setting Up New Blogs</a></li><li><a href="http://maisonbisson.com/blog/post/14052/wordpress-hacks-nested-paths-for-wpmu-blogs/#14052_hack-the-htaccess_1">Hack The .htaccess</a></li></ol></div></span>Situation:</strong> you&#8217;ve got WordPress Multi-User setup to <a href="http://maisonbisson.com/blog/post/14028/wordpress-hacks-managing-multiple-sub-domains/">host one or more domains</a> in sub-directory mode (as in <code>site.org/blogname</code>), but you want a deeper directory structure than WPMU allows&#8230;something like the following examples, perhaps:</p>
<ul>
<li><code>site.org/blogname1</code></li>
<li><code>site.org/departments/blogname2</code></li>
<li><code>site.org/departments/blogname3</code></li>
<li><code>site.org/services/blogname3</code></li>
</ul>
<p>The association between blog IDs and sub-directory paths is determined in <a href="http://trac.mu.wordpress.org/browser/tags/2.8.4a/wpmu-settings.php"><code>wpmu-settings.php</code></a>, but the code there knows nothing about nested paths. So a person planning to use WordPress MU as a CMS must either flatten his/her information architecture, or do some hacking.<br />
<span id="more-14052"></span><br />
<strong>Challenge: hacking WordPress MU to support arbitrary directory paths for each blog<br />
</strong></p>
<p>As with my <a href="http://maisonbisson.com/blog/post/14028/wordpress-hacks-managing-multiple-sub-domains/">multi-domain hack</a>, the following assumes that you’re using the <code>vhost=no</code> setting, that you have access to and know how to manipulate your MySQL, that you have control over your DNS and know how to use it, and that you know how to configure Apache or similar. You’d also be smart to turn off any object caching you may have running, at least until we’re done doing direct database manipulation. The following also assumes that your <code>wp-config.php</code> sets the <code>DOMAIN_CURRENT_SITE</code> and <code>PATH_CURRENT_SITE</code> constants &#8212; if you&#8217;ve done a fresh install recently, it probably does, or you can <a href="http://maisonbisson.com/blog/post/14028/wordpress-hacks-managing-multiple-sub-domains/#14028_reconfigure-wp-confi_1">check my domain mapping hack</a>.</p>
<h3 id="14052_hack-the-path-mappin_1">Hack The Path Mapping</h3>
<p>Right at the top of <a href="http://trac.mu.wordpress.org/browser/tags/2.8.4a/wpmu-settings.php#L28"><code>wpmu-settings.php</code></a> you can see how it strips all but the base of the URL path, but rather than mod that file, we can take advantage of an obscure MU hack: <code>sunrise.php</code>, which gets executed after some important WordPress components like the database class get loaded and before <a href="http://trac.mu.wordpress.org/browser/tags/2.8.4a/wpmu-settings.php"><code>wpmu-settings.php</code></a>. </p>
<p>To use <code>sunrise.php</code>, create a PHP file at <code>/wp-content/sunrise.php</code> and set <code>define('SUNRISE', TRUE);</code> in your <code>wp-config.php</code>.</p>
<p>Here&#8217;s the <code>sunrise.php</code> code I&#8217;m using:</p>
<pre class="brush: php;">if( defined( 'DOMAIN_CURRENT_SITE' ) &amp;&amp; defined( 'PATH_CURRENT_SITE' ) ) {
	$current_site-&gt;id = (defined( 'SITE_ID_CURRENT_SITE' ) ? constant('SITE_ID_CURRENT_SITE') : 1);
	$current_site-&gt;domain = $domain = DOMAIN_CURRENT_SITE;
	$current_site-&gt;path  = $path = PATH_CURRENT_SITE;
	if( defined( 'BLOGID_CURRENT_SITE' ) )
		$current_site-&gt;blog_id = BLOGID_CURRENT_SITE;

	$url = parse_url( $_SERVER['REQUEST_URI'], PHP_URL_PATH );

	$patharray = (array) explode( '/', trim( $url, '/' ));
	$blogsearch = '';
	if( count( $patharray )){
		foreach( $patharray as $pathpart ){
			$pathsearch .= '/'. $pathpart;
			$blogsearch .= $wpdb-&gt;prepare(&quot; OR (domain = %s AND path = %s) &quot;, $domain, $pathsearch .'/' );
		}
	}

	$current_blog = $wpdb-&gt;get_row( $wpdb-&gt;prepare(&quot;SELECT *, LENGTH( path ) as pathlen FROM $wpdb-&gt;blogs WHERE domain = %s AND path = '/'&quot;, $domain, $path) . $blogsearch .'ORDER BY pathlen DESC LIMIT 1');

	$blog_id = $current_blog-&gt;blog_id;
	$public  = $current_blog-&gt;public;
	$site_id = $current_blog-&gt;site_id;
	$current_site = sl_get_current_site_name( $current_site );
}

function sl_get_current_site_name( $current_site ) {
	global $wpdb;
	$current_site-&gt;site_name = wp_cache_get( $current_site-&gt;id . ':current_site_name', &quot;site-options&quot; );
	if ( !$current_site-&gt;site_name ) {
		$current_site-&gt;site_name = $wpdb-&gt;get_var( $wpdb-&gt;prepare( &quot;SELECT meta_value FROM $wpdb-&gt;sitemeta WHERE site_id = %d AND meta_key = 'site_name'&quot;, $current_site-&gt;id ) );
		if( $current_site-&gt;site_name == null )
			$current_site-&gt;site_name = ucfirst( $current_site-&gt;domain );
		wp_cache_set( $current_site-&gt;id . ':current_site_name', $current_site-&gt;site_name, 'site-options');
	}
	return $current_site;
}</pre>
<p>The first few lines of the code do pretty much the same as the start of the <a href="http://trac.mu.wordpress.org/browser/tags/2.8.4a/wpmu-settings.php#L44"><code>wpmu_current_site()</code></a> function in <code>wpmu-settings.php</code>, but starting with line 8 it takes a big departure.</p>
<p>That&#8217;s where it splits the requested URL path like <code>/path/to/blog/and/stuff/</code> into pieces and constructs an SQL query against the <code>wp_blogs</code> table to identify the correct blog to serve the request. The following example shows how:</p>
<pre class="brush: sql;">SELECT *, LENGTH( path ) as pathlen
	 FROM wp_blogs
	 WHERE domain = 'domain.org' AND path = '/'&quot;
	  	 OR (domain = 'domain.org' AND path = '/path/')
	 	 OR (domain = 'domain.org' AND path = '/path/to/')
	 	 OR (domain = 'domain.org' AND path = '/path/to/blog/')
	 	 OR (domain = 'domain.org' AND path = '/path/to/blog/and/')
	 	 OR (domain = 'domain.org' AND path = '/path/to/blog/and/stuff/')
	 ORDER BY pathlen DESC
	 LIMIT 1</pre>
<h4 id="14052_optimization-note_1">Optimization note</h4>
<p>Setting a maximum depth (and <code>array_slice( $patharray, 0, $maxdepth )</code>) would allow the query to be cached up to that depth. Otherwise, the query must be executed for every page load. The <code>$maxdepth</code> could either be set arbitrarily, or could be determined automatically based on the maximum path length of registered blogs.</p>
<h3 id="14052_setting-up-new-blogs_1">Setting Up New Blogs</h3>
<p>Once you&#8217;ve hacked the path mapping (and tested that it didn&#8217;t break your current site), you can add a new blog at a nested path.</p>
<div id="attachment_14063" class="wp-caption aligncenter" style="width: 553px"><a href="http://maisonbisson.com/files/2009/09/Screen-shot-2009-09-12-at-10.37.24-AM.png"><img src="http://maisonbisson.com/files/2009/09/Screen-shot-2009-09-12-at-10.37.24-AM.png" alt="Create a new blog in the MU blog admin." width="543" height="235" class="size-full wp-image-14063" /></a><p class="wp-caption-text">Create a new blog in the MU blog admin.</p></div>
<p>Unfortunately, MU strips the slashes from the URL path you just tried to set.</p>
<div id="attachment_14064" class="wp-caption aligncenter" style="width: 499px"><a href="http://maisonbisson.com/files/2009/09/Screen-shot-2009-09-12-at-10.39.02-AM.png"><img src="http://maisonbisson.com/files/2009/09/Screen-shot-2009-09-12-at-10.39.02-AM.png" alt="The new blog you just tried to create, but with a very different path." width="489" height="125" class="size-full wp-image-14064" /></a><p class="wp-caption-text">The new blog you just tried to create, but with a very different path.</p></div>
<p>Fortunately, you can set the path correctly in the MU blog editor, and it won&#8217;t break the path when you save there.</p>
<div id="attachment_14065" class="wp-caption aligncenter" style="width: 497px"><a href="http://maisonbisson.com/files/2009/09/Screen-shot-2009-09-12-at-10.39.42-AM.png"><img src="http://maisonbisson.com/files/2009/09/Screen-shot-2009-09-12-at-10.39.42-AM.png" alt="Set the blog path in the MU blog editor, MU won&#39;t break it when you save it this time." width="487" height="123" class="size-full wp-image-14065" /></a><p class="wp-caption-text">Set the blog path in the MU blog editor, MU won't break it when you save it this time.</p></div>
<p>Once you create the new blog, try to load it in your browser. You&#8217;ll quickly notice the stylesheet is missing, though the blog works and functions properly.</p>
<h3 id="14052_hack-the-htaccess_1">Hack The .htaccess</h3>
<p>WPMU uses the following <code>.htaccess</code> rewrite rule to properly direct requests for files on the real filesystem:</p>
<pre class="brush: plain;">RewriteRule  ^([_0-9a-zA-Z-]+/)?(wp-.*) $2 [L]</pre>
<p>Obviously, that rule won&#8217;t work for deep paths, so I&#8217;ve replaced it with this rule:</p>
<pre class="brush: plain;">RewriteRule  ^(.+)?/(wp-.*) /$2 [L]</pre>
<p>And with that, you should be done.</p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/blog/post/14052/wordpress-hacks-nested-paths-for-wpmu-blogs/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Am I Supposed To Feel Bad For AT&amp;T Now?</title>
		<link>http://maisonbisson.com/blog/post/14049/am-i-supposed-to-feel-bad-for-att-now/</link>
		<comments>http://maisonbisson.com/blog/post/14049/am-i-supposed-to-feel-bad-for-att-now/#comments</comments>
		<pubDate>Mon, 07 Sep 2009 16:12:49 +0000</pubDate>
		<dc:creator>Casey Bisson</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[ATT&T]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/?p=14049</guid>
		<description><![CDATA[
With AT&#38;T facing lawsuits for not delivering MMS features at the iPhone 3GS launch, they kind of had to do something. I&#8217;m not sure if I&#8217;d be satisfied by this video if I were among the plaintiffs, but I think it does a good enough job. The stat about 300% annual increases in mobile data [...]]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="maisonbisson-14049"><!-- &nbsp; --></abbr>
<p><a href="http://maisonbisson.com/blog/post/14049/am-i-supposed-to-feel-bad-for-att-now/"><em>Click here to view the embedded video.</em></a></p>
<p>With <a href="http://news.cnet.com/8301-13579_3-10321437-37.html">AT&amp;T facing lawsuits</a> for not delivering MMS features at the iPhone 3GS launch, they kind of had to do something. I&#8217;m not sure if I&#8217;d be satisfied by this video if I were among the plaintiffs, but I think it does a good enough job. The stat about 300% annual increases in mobile data use is pretty powerful. I&#8217;d heard it a dozen times before*, but because I wasn&#8217;t in Austin for <a href="http://www.wired.com/epicenter/2009/03/sxsw-atts-spott/">SXSW iPhone meltdown</a>, I don&#8217;t have quite the same appreciation as some do. <a href="http://www.itworld.com/mobile-amp-wireless/64316/att-doubles-sxsw-capacityin-four-hours">AT&amp;T added capacity then</a>, and they seem to have been scrambling elsewhere too.</p>
<p>iPhone users are <a href="http://blog.nielsen.com/nielsenwire/online_mobile/iphone-users-watch-more-video-and-are-older-than-you-think/">said to be six times as likely as anybody else</a> to watch video on their phones, and if WiFi aggregator JiWire&#8217;s report says anything about cell data, the iPhone has certainly changed the game. <a href="http://www.jiwire.com/downloads/pdf/JiWire_MobileAudienceInsights_1H09.pdf">JiWire&#8217;s Mobile Audience Insights Report</a> shows that over 97% of the devices on their network are either iPhones (about 56% of the total) or iPod Touches! And all the way back in 2007 in Britain, <a href="http://www.ft.com/cms/s/0/c4af8bd4-b1c3-11dc-9777-0000779fd2ac.html">iPhone users were 33 times as likely as other phone users</a> to send or receive more than 25MB a month.</p>
<p>It will be interesting to see what happens to other carriers as they get devices that encourage use as the iPhone has.</p>
<p>*Actually, I hadn&#8217;t heard the 300% stat specifically, just inspecific reports of increased usage.</p>
<p><span id="more-14049"></span></p>
<p><a href="http://maisonbisson.com/files/2009/09/Screen-shot-2009-09-05-at-9.22.40-PM.png"><img class="aligncenter size-full wp-image-14050" src="http://maisonbisson.com/files/2009/09/Screen-shot-2009-09-05-at-9.22.40-PM.png" alt="300% Each Year" width="600" height="429" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/blog/post/14049/am-i-supposed-to-feel-bad-for-att-now/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Now I Want To Watch (or re-watch) All These</title>
		<link>http://maisonbisson.com/blog/post/14047/now-i-want-to-watch-or-re-watch-all-these/</link>
		<comments>http://maisonbisson.com/blog/post/14047/now-i-want-to-watch-or-re-watch-all-these/#comments</comments>
		<pubDate>Sun, 06 Sep 2009 18:08:11 +0000</pubDate>
		<dc:creator>Casey Bisson</dc:creator>
				<category><![CDATA[Books, Movies, Music]]></category>
		<category><![CDATA[history]]></category>
		<category><![CDATA[movies]]></category>
		<category><![CDATA[special effects]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/?p=14047</guid>
		<description><![CDATA[
Okay, I don&#8217;t want to watch all the movies depicted in this 100 year overview of film special effects, but I did just add a few to my Netflix queue.
The full list, according to the description in YouTube:

1900 &#8211; The Enchanted Drawing
1903 &#8211; The Great Train Robbery
1923 &#8211; The Ten Commandments (Silent)
1927 &#8211; Sunrise
1933 &#8211; [...]]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="maisonbisson-14047"><!-- &nbsp; --></abbr>
<p><a href="http://maisonbisson.com/blog/post/14047/now-i-want-to-watch-or-re-watch-all-these/"><em>Click here to view the embedded video.</em></a></p>
<p>Okay, I don&#8217;t want to watch all the movies depicted in this 100 year overview of film special effects, but I did just add a few to my Netflix queue.</p>
<p><span id="more-14047"></span>The full list, according to the description in YouTube:</p>
<ul>
<li>1900 &#8211; The Enchanted Drawing</li>
<li>1903 &#8211; The Great Train Robbery</li>
<li>1923 &#8211; The Ten Commandments (Silent)</li>
<li>1927 &#8211; Sunrise</li>
<li>1933 &#8211; King Kong</li>
<li>1939 &#8211; The Wizard of Oz</li>
<li>1940 &#8211; The Thief of Bagdad</li>
<li>1954 &#8211; 20,000 Leagues Under the Sea</li>
<li>1956 &#8211; Forbidden Planet</li>
<li>1963 &#8211; Jason and the Argonauts</li>
<li>1964 &#8211; Mary Poppins</li>
<li>1977 &#8211; Star Wars</li>
<li>1982 &#8211; Tron</li>
<li>1985 &#8211; Back to the Future</li>
<li>1988 &#8211; Who Framed Roger Rabbit</li>
<li>1989 &#8211; The Abyss</li>
<li>1991 &#8211; Terminator 2: Judgement Day</li>
<li>1992 &#8211; The Young Indiana Jones Chronicles</li>
<li>1993 &#8211; Jurassic Park</li>
<li>2004 &#8211; Spider-Man 2</li>
<li>2005 &#8211; King Kong</li>
<li>2006 &#8211; Pirates of the Caribbean: Dead Man&#8217;s Chest</li>
<li>2007 &#8211; Pirates of the Caribbean: At World&#8217;s End</li>
<li>2007 &#8211; The Golden Compass</li>
<li>2008 &#8211; The Spiderwick Chronicles</li>
<li>2008 &#8211; The Curious Case of Benjamin Button</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/blog/post/14047/now-i-want-to-watch-or-re-watch-all-these/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress Hacks: Serving Multiple Domains</title>
		<link>http://maisonbisson.com/blog/post/14028/wordpress-hacks-managing-multiple-sub-domains/</link>
		<comments>http://maisonbisson.com/blog/post/14028/wordpress-hacks-managing-multiple-sub-domains/#comments</comments>
		<pubDate>Thu, 03 Sep 2009 17:41:57 +0000</pubDate>
		<dc:creator>Casey Bisson</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[authentication]]></category>
		<category><![CDATA[cms]]></category>
		<category><![CDATA[cookies]]></category>
		<category><![CDATA[hacks]]></category>
		<category><![CDATA[sub-domains]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[WordPress MU]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/?p=14028</guid>
		<description><![CDATA[
strong>Situation: using WordPress MU (possibly including BuddyPress) on multiple domains or sub-domains of a large organization with lots of users.
WordPress MU is a solid CMS to support a large organization. Each individual blog has its own place in the organization&#8217;s URL scheme (www.site.org/blogname), and each blog can have its own administrators and other users. Groups [...]]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="maisonbisson-14028"><!-- &nbsp; --></abbr>
<div class="contents innerindex"><h3>Contents</h3><ol><li><a href="http://maisonbisson.com/blog/post/14028/wordpress-hacks-managing-multiple-sub-domains/#14028_challenge-setting-up_1">Challenge: setting up service on multiple (sub-) domains</a><ol><li><a href="http://maisonbisson.com/blog/post/14028/wordpress-hacks-managing-multiple-sub-domains/#14028_set-up-your-web-serv_1">Set up your web server</a></li><li><a href="http://maisonbisson.com/blog/post/14028/wordpress-hacks-managing-multiple-sub-domains/#14028_set-up-your-dns_1">Set up your DNS</a></li><li><a href="http://maisonbisson.com/blog/post/14028/wordpress-hacks-managing-multiple-sub-domains/#14028_create-a-new-blog-in_1">Create a new blog in WPMU</a></li><li><a href="http://maisonbisson.com/blog/post/14028/wordpress-hacks-managing-multiple-sub-domains/#14028_reconfigure-wp-confi_1">Reconfigure wp-config.php</a></li><li><a href="http://maisonbisson.com/blog/post/14028/wordpress-hacks-managing-multiple-sub-domains/#14028_set-up-your-new-site_1">Set up your new Site</a></li><li><a href="http://maisonbisson.com/blog/post/14028/wordpress-hacks-managing-multiple-sub-domains/#14028_set-up-the-admins-of_1">Set up the admins of the new site</a></li><li><a href="http://maisonbisson.com/blog/post/14028/wordpress-hacks-managing-multiple-sub-domains/#14028_sub-domains-or-just-_1">Sub-domains or just different domains?</a></li></ol></li><li><a href="http://maisonbisson.com/blog/post/14028/wordpress-hacks-managing-multiple-sub-domains/#14028_challenge-unified-lo_1">Challenge: unified log in cookies</a><ol><li><a href="http://maisonbisson.com/blog/post/14028/wordpress-hacks-managing-multiple-sub-domains/#14028_set-your-cookie-path_1">Set your cookie path</a></li><li><a href="http://maisonbisson.com/blog/post/14028/wordpress-hacks-managing-multiple-sub-domains/#14028_avoid-conflicts-with_1">Avoid conflicts with other WordPress installations at your domain</a></li></ol></li><li><a href="http://maisonbisson.com/blog/post/14028/wordpress-hacks-managing-multiple-sub-domains/#14028_challenge-unified-lo_2">Challenge: unified log in location/URL</a><ol><li><a href="http://maisonbisson.com/blog/post/14028/wordpress-hacks-managing-multiple-sub-domains/#14028_filter-login_url-and_1">Filter login_url and logout_url</a></li><li><a href="http://maisonbisson.com/blog/post/14028/wordpress-hacks-managing-multiple-sub-domains/#14028_filter-allowed_redir_1">Filter allowed_redirect_hosts</a></li></ol></li></ol></div><strong>Situation:</strong> using WordPress MU (possibly including BuddyPress) on multiple domains or sub-domains of a large organization with lots of users.</p>
<p>WordPress MU is a solid CMS to support a large organization. Each individual blog has its own place in the organization&#8217;s URL scheme (<code>www.site.org/blogname</code>), and each blog can have its own administrators and other users. Groups of blogs in WPMU make up a &#8220;Site&#8221; and one or more Sites can be hosted with a single implementation. (I&#8217;m capitalizing Site for the same reason WordPress docs capitalize <a href="http://codex.wordpress.org/Pages">Page</a>) Each Site has a defined set of administrators and options controlling various features. You might, for instance, lock down the plugins on your <code>blogs.site.org</code>, while keeping it open on your <code>www.site.org</code>. Or maybe you&#8217;d like to let your helpdesk staff create new blogs at <code>blogs.site.org</code>, but not at <code>www.site.org</code>. That&#8217;s what WPMU&#8217;s notion of Site can help you control.<br />
<span id="more-14028"></span></p>
<h3 id="14028_challenge-setting-up_1">Challenge: setting up service on multiple (sub-) domains</h3>
<p>WordPress MU makes it easy to host both blogs.site.org and www.site.org within a single implementation, but there&#8217;s little documentation for how to do it.</p>
<p>Once you get WPMU up and running on one of your domains you can add another. The following assumes that you&#8217;re using the <code>vhost=no</code> setting (correct: I really mean vhost=no), that you have access to and know how to manipulate your MySQL, that you have control over your DNS and know how to use it, and that you know how to configure Apache or similar. You&#8217;d also be smart to turn off any object caching you may have running, at least until we&#8217;re done doing direct database manipulation.</p>
<p>Some might ask why I&#8217;m not simply using <a href="http://wordpress.org/extend/plugins/wordpress-mu-domain-mapping/">Donncha&#8217;s plugin</a>, and the answer is simple: it only works for <code>vhost=yes</code> sites. For my own use, I find that sub-directories are easier for users to make sense of (go ahead, try to tell your mom to go to &#8220;<code>myblog.sub.domain.org</code>&#8220;).</p>
<h4 id="14028_set-up-your-web-serv_1">Set up your web server</h4>
<p>If you&#8217;re using Apache, you&#8217;ll either need to create an <a href="http://httpd.apache.org/docs/2.2/vhosts/ip-based.html">IP-based virtual host</a> or <a href="http://maisonbisson.com/blog/post/12781/apache-virtual-hosting-black-magic/">manually configure</a> your name-based virtual host for every (sub-)domain you plan to serve. Why: WordPress will handle the domain mapping for you, so it&#8217;s better to keep Apache out of the way and let WPMU own the entire IP.</p>
<h4 id="14028_set-up-your-dns_1">Set up your DNS</h4>
<p>Point each subdomain you plan to host in WordPress to your webserver. You can use a wildcard domain, but you don&#8217;t have to.</p>
<h4 id="14028_create-a-new-blog-in_1">Create a new blog in WPMU</h4>
<p>It doesn&#8217;t matter what you call it or what the path is, just create one. Now go edit it in the Site Admin:</p>
<p><div id="attachment_14029" class="wp-caption aligncenter" style="width: 310px"><a href="http://maisonbisson.com/files/2009/09/Screen-shot-2009-09-02-at-8.41.56-PM.png"><img class="size-medium wp-image-14029" src="http://maisonbisson.com/files/2009/09/Screen-shot-2009-09-02-at-8.41.56-PM-300x69.png" alt="edit blog 1" width="300" height="69" /></a><p class="wp-caption-text">Change the domain and path to match your new domain.</p></div>
<p style="text-align: left">One quirk of WPMU is that it strips &#8220;www&#8221; from any domain name you enter (or is requested), so don&#8217;t bother trying to enter it (unless you&#8217;re willing to do some hacking to make it work). WPMU stores domain and path information in three locations: the wp_#_options table for the blog, the wp_blogs table, and the wp_sites table. When you edit a blog in the Site Admin, you&#8217;ll get a chance to edit the domain and path for both the wp_#_options and the wp_blogs tables. Clicking the helpful checkbox above will do most of that for you, but you&#8217;ll need to manually update the Upload Path.</p>
<div id="attachment_14030" class="wp-caption aligncenter" style="width: 310px"><a href="http://maisonbisson.com/files/2009/09/Screen-shot-2009-09-02-at-8.42.34-PM.png"><img class="size-medium wp-image-14030" src="http://maisonbisson.com/files/2009/09/Screen-shot-2009-09-02-at-8.42.34-PM-300x48.png" alt="Now make sure the new domain is shown in the blog's options as well." width="300" height="48" /></a><p class="wp-caption-text">Now make sure the new domain is shown in the blog&#39;s options as well.</p></div>
<p>You might be able to load the blog at the new URL as soon as you update those settings, but recent versions of WPMU set some constants in <code>wp-config.php</code> that can get in your way.</p>
<h4 id="14028_reconfigure-wp-confi_1">Reconfigure wp-config.php</h4>
<p>Your <code>wp-config.php</code> might have something like this:</p>
<pre class="brush: php;">$base = '/';
define('DOMAIN_CURRENT_SITE', 'sub.site.org' );
define('PATH_CURRENT_SITE', '/' );
define('SITE_ID_CURRENT_SITE', 1);
define('BLOGID_CURRENT_SITE', '1' );</pre>
<p>Those constants override the database checking that goes on in <code>wpmu-settings.php</code> to map the requested domain to a site. You have three choices: leave it as it is (and use only one &#8220;Site&#8221;), remove it and have WPMU do the mapping against the database, or expand the hard-coded mapping to include other sites.</p>
<p>I&#8217;ve used code like the following to do just that:</p>
<pre class="brush: php;">if( preg_match( '/(.+?\.)?([^\.]+?)\.site.org/i', 'www'. $_SERVER['SERVER_NAME'] , $matchedsubdomains ))
{
	switch( array_pop( $matchedsubdomains )){
		case 'connect':
			define('DOMAIN_CURRENT_SITE', 'blogs.site.org' );
			define('PATH_CURRENT_SITE', '/' );
			define('BLOGID_CURRENT_SITE', '1' );
			break;
		case 'www':
		default:
			define('DOMAIN_CURRENT_SITE', 'site.org' );
			define('PATH_CURRENT_SITE', '/' );
			define('BLOGID_CURRENT_SITE', '2' );
			break;
}
}
else
{
	define('DOMAIN_CURRENT_SITE', 'site.org' );
	define('PATH_CURRENT_SITE', '/' );
	define('BLOGID_CURRENT_SITE', '2' );
}</pre>
<h4 id="14028_set-up-your-new-site_1">Set up your new Site</h4>
<p>Once you have your new sub-domain working with one blog, you can create your new Site. Even if you don&#8217;t plan to create separate management policies for the different sites, it&#8217;s easier to create new blogs at each sub-domain if they each have their own Site.</p>
<p>Go in to your MySQL tool of choice and browse the <code>wp_site</code> table. There you&#8217;ll see just one row, but if you&#8217;ve made it this far you can also probably figure out how to create a new row representing the site at the new sub-domain. And once you do that, you can change the entry in the <code>wp_blogs</code> table to associate it with your new Site.</p>
<h4 id="14028_set-up-the-admins-of_1">Set up the admins of the new site</h4>
<p>Creating the new entry in <code>wp_site</code> doesn&#8217;t set the options for the new Site, and that means there are no Site administrators yet. Once again in your MySQL tool of choice, open up the <code>wp_sitemeta</code> table and look for an entry with <code>meta_key = 'site_admins'</code>. The <code>meta_value</code> for that entry is a serialized array containing WordPress usernames of the people who have site-wide administration privileges on the first Site. I&#8217;m assuming that if you have MySQL access you&#8217;re also a Site admin, so the easy thing to do is copy that row and change the <code>site_id</code> to match the auto-increment value from the new <code>wp_site</code> entry you made in the last step.</p>
<p>With the database manipulation done, you should now be able to go to the WP dashboard at your new Site, visit the WPMU admin options screen, and set the other options as necessary. You could decide to make one of your Sites open registration (remember, however, that users are shared across all Sites), while making other Sites more closed. And, obviously, you can delegate different Site admins for each Site. </p>
<h4 id="14028_sub-domains-or-just-_1">Sub-domains or just different domains?</h4>
<p>It&#8217;s worth noting that the instructions so far apply to both sub-domains and domains. You can use a single implementation of WPMU to manage content at both <code>lolzors.org</code> and <code>tehsite.org</code>. The detail about sub-domains really only applies to the next part. It&#8217;s also worth noting that you can support an arbitrary number of blogs, sites, and domains; I&#8217;m just using two sub-domains as an example.</p>
<h3 id="14028_challenge-unified-lo_1">Challenge: unified log in cookies</h3>
<p>What&#8217;s the point of hosting multiple sub-domains with one WPMU implementation if you&#8217;ll need to log in separately at each one?</p>
<h4 id="14028_set-your-cookie-path_1">Set your cookie path</h4>
<p>Setting a cookie path that that&#8217;s broad enough to cover the entire domain will solve this:</p>
<pre class="brush: php;">define('COOKIE_DOMAIN', 'site.org');
define('ADMIN_COOKIE_PATH', '/');
define('COOKIEPATH', '/');
define('SITECOOKIEPATH', '/');</pre>
<h4 id="14028_avoid-conflicts-with_1">Avoid conflicts with other WordPress installations at your domain</h4>
<p>But having such a broad cookie domain can interfere with other WordPress implementations. You&#8217;ll have to solve that by setting a unique cookiehash:</p>
<pre class="brush: php;">define( 'COOKIEHASH', 'asdf_arbitrary_string' );</pre>
<p>You&#8217;d do better to keep it shorter than that, though.</p>
<h3 id="14028_challenge-unified-lo_2">Challenge: unified log in location/URL</h3>
<p>WordPress MU is happy to handle authentication requests wherever it hosts a blog, but some organizations prefer to funnel all authentication requests through a single location. The idea is to provide some protection against fishing (assuming users can ever be taught to look at URLs) and make it easer to integrate external applications.</p>
<h4 id="14028_filter-login_url-and_1">Filter login_url and logout_url</h4>
<p>Set the log in and log out path to whatever you want, just make sure the destination knows how to create (or destroy) the WordPress cookies.</p>
<pre class="brush: php;">
$hack_base_domain = 'site.org';

function hack_login_url( $path ){
	global $hack_base_domain;

	return preg_replace( '/^.+?\/wp-login.php/' , 'https://login.'. $hack_base_domain .'/wp-login.php', $path );
}
add_filter( 'login_url' , 'hack_login_url' , 10 );
add_filter( 'logout_url' , 'hack_login_url' , 10 );
</pre>
<h4 id="14028_filter-allowed_redir_1">Filter allowed_redirect_hosts</h4>
<p>WP will normally block redirects outside the web root of the active blog, so you&#8217;ll need to tell it about your other sub-domains.</p>
<pre class="brush: php;">
function hack_allowed_redirect_hosts( $allowed_domains ){
	global $hack_base_domain;

	$allowed_domains[] = $hack_base_domain;
	$allowed_domains[] = 'www.'. $hack_base_domain;
	$allowed_domains[] = 'blogs.'. $hack_base_domain;

	return $allowed_domains;
}
add_filter( 'allowed_redirect_hosts' , 'hack_allowed_redirect_hosts' , 10 );
</pre>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/blog/post/14028/wordpress-hacks-managing-multiple-sub-domains/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Not My Chair, Not My Problem</title>
		<link>http://maisonbisson.com/blog/post/14018/not-my-chair-not-my-problem/</link>
		<comments>http://maisonbisson.com/blog/post/14018/not-my-chair-not-my-problem/#comments</comments>
		<pubDate>Sat, 15 Aug 2009 14:45:05 +0000</pubDate>
		<dc:creator>Casey Bisson</dc:creator>
				<category><![CDATA[Questionable...funny. Pointless.]]></category>
		<category><![CDATA[Dan Deacon]]></category>
		<category><![CDATA[drinking out of cups]]></category>
		<category><![CDATA[funny]]></category>
		<category><![CDATA[Liam Lynch]]></category>
		<category><![CDATA[music]]></category>
		<category><![CDATA[spoken word]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/?p=14018</guid>
		<description><![CDATA[
Liam Lynch explains the origin of the video, but what was Dan Deacon thinking as he recorded the audio? Of all the free MP3 downloads he offers, Two Friends from the Acorn Master album may be the most, um, listenable.
Thanks to daily songsmith Corey B (Corey Blanchette) for the tip.
]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="maisonbisson-14018"><!-- &nbsp; --></abbr>
<p><a href="http://maisonbisson.com/blog/post/14018/not-my-chair-not-my-problem/"><em>Click here to view the embedded video.</em></a></p>
<p>Liam Lynch <a href="http://www.youtube.com/watch?v=hCOqlla59Z4">explains the origin of the video</a>, but what was <a href="http://www.dandeacon.com/">Dan Deacon</a> thinking as he <a href="http://www.dandeacon.com/mp3/02%20Meetle%20Mice/08%20Drinking%20Out%20of%20Cups.mp3">recorded the audio</a>? Of all the <a href="http://www.dandeacon.com/mp3/">free MP3 downloads</a> he offers, <a href="http://www.dandeacon.com/mp3/07%20acorn%20master/01_Two_Friends.mp3">Two Friends</a> from the Acorn Master album may be the most, um, listenable.</p>
<p>Thanks to <a href="http://coreyb603.com/">daily songsmith Corey B (Corey Blanchette)</a> for the tip.</p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/blog/post/14018/not-my-chair-not-my-problem/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://www.dandeacon.com/mp3/07%20acorn%20master/01_Two_Friends.mp3" length="" type="" />
<enclosure url="http://www.dandeacon.com/mp3/02%20Meetle%20Mice/08%20Drinking%20Out%20of%20Cups.mp3" length="4005203" type="audio/mpeg" />
		</item>
		<item>
		<title>Who Gets To Control The Future Of Libraries?</title>
		<link>http://maisonbisson.com/blog/post/14014/who-gets-to-control-the-future-of-libraries/</link>
		<comments>http://maisonbisson.com/blog/post/14014/who-gets-to-control-the-future-of-libraries/#comments</comments>
		<pubDate>Thu, 06 Aug 2009 17:28:06 +0000</pubDate>
		<dc:creator>Casey Bisson</dc:creator>
				<category><![CDATA[Libraries & Networked Information]]></category>
		<category><![CDATA[Politics & Controversy]]></category>
		<category><![CDATA[Franklin High School]]></category>
		<category><![CDATA[lib20]]></category>
		<category><![CDATA[libraries]]></category>
		<category><![CDATA[library 2.0]]></category>
		<category><![CDATA[Milford MA]]></category>
		<category><![CDATA[web4lib]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/?p=14014</guid>
		<description><![CDATA[
The following was my email response to a thread on the web4lib mail list:
Okay, it must be said: you&#8217;re all wrong[1].
I can understand that news of a librarian being fired/furloughed will raise our defenses, but that&#8217;s no excuse for giving up the considered and critical thinking that this occasion demands.
Consider this: the principle&#8217;s blog reveals [...]]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="maisonbisson-14014"><!-- &nbsp; --></abbr>
<p>The following was my <a href="http://lists.webjunction.org/wjlists/web4lib/2009-August/049908.html">email response</a> to <a href="http://lists.webjunction.org/wjlists/web4lib/2009-August/049891.html">a thread on the web4lib mail list</a>:</p>
<p>Okay, it must be said: you&#8217;re all wrong[1].</p>
<p>I can understand that <a href="http://www.milforddailynews.com/homepage/x1202627306/Franklin-High-library-undergoes-transformation">news of a librarian being fired/furloughed</a> will raise our defenses, but that&#8217;s no excuse for giving up the considered and critical thinking that this occasion demands.</p>
<p>Consider this: <a href="http://franklinhighschool.wordpress.com/">the principle&#8217;s blog</a> reveals a reasonable person actively trying to improve academic performance despite crushing economic conditions. The communications show a level of transparency many of us can only wish for.</p>
<p>Unfortunately, many on this mail list seem to have come to the conclusion that <a href="http://www.franklin.ma.us/auto/schools/fhs/depts/library/default.htm">this library</a> was a stellar, but unappreciated example of everything that libraries should be, capriciously closed by a principle who secretly wanted to see the football team shoving bookshelves around on a hot summer day.</p>
<p>Go ahead, <a href="http://www.libraryjournal.com/blog/580000658/post/90047409.html">mock the story</a> (and so far we only have one story about this) for suggesting that the books have been &#8220;re-organized&#8221; by subject, but the fact remains that this community didn&#8217;t think their library was organized in a way that met its needs. This suggests that either (a) it wasn&#8217;t well organized, or (b) the librarian had failed to educate the users and develop the finding aids necessary to help the community use the library.</p>
<p>Nobody here is banning or burning books. Nobody is suggesting that libraries are irrelevant. Far from it: this story about the modernization of a library to make it a more significant part of students&#8217; academic activity.</p>
<p>News that a member of our profession has been furloughed is sad. But, news that a principle is investing time, attention, and money in the library is good. News that those two stories are one in the same should make us ask critical questions about how we and our libraries are positioned to serve our community.</p>
<p>[1]: Everybody but <a href="http://lists.webjunction.org/wjlists/web4lib/2009-August/049894.html">Robert L. Balliot, whose message has so far been ignored</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/blog/post/14014/who-gets-to-control-the-future-of-libraries/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Martin Belam&#8217;s Advice To Hackers At The Guardian&#8217;s July 2009 Hack Day</title>
		<link>http://maisonbisson.com/blog/post/14011/martin-belams-advice-to-hackers-at-the-guardians-july-2009-hack-day/</link>
		<comments>http://maisonbisson.com/blog/post/14011/martin-belams-advice-to-hackers-at-the-guardians-july-2009-hack-day/#comments</comments>
		<pubDate>Thu, 06 Aug 2009 14:44:15 +0000</pubDate>
		<dc:creator>Casey Bisson</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[design patterns]]></category>
		<category><![CDATA[hack day]]></category>
		<category><![CDATA[hacks]]></category>
		<category><![CDATA[web design]]></category>
		<category><![CDATA[web development]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/?p=14011</guid>
		<description><![CDATA[
An amusing hacks-conference lightning talk-turned-blog post on web development: &#8220;Graceful Hacks&#8221; &#8211; UX, IA and interaction design tips for hack days. Martin Belam&#8217;s talk at The Guardian&#8217;s July 2009 Hack Day must have been both funny and useful:

Funny: &#8220;However, I am given to understand that this is now deprecated and has gone out of fashion.&#8221;
Useful: &#8220;the Yahoo! Design [...]]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="maisonbisson-14011"><!-- &nbsp; --></abbr>
<p>An amusing hacks-conference lightning talk-turned-blog post on web development: <a href="http://www.currybet.net/cbet_blog/2009/08/graceful_hacks.php">&#8220;Graceful Hacks&#8221; &#8211; UX, IA and interaction design tips for hack days</a>. <a href="http://www.currybet.net/about.php">Martin Belam</a>&#8217;s talk at <a href="http://www.guardian.co.uk/media/pda/2009/jul/31/hacking-opensource1">The Guardian&#8217;s July 2009 Hack Day</a> must have been both funny and useful:</p>
<ul>
<li>Funny: &#8220;However, I am given to understand that this is now deprecated and has gone out of fashion.&#8221;</li>
<li>Useful: &#8220;the <a href="http://developer.yahoo.com/ypatterns/">Yahoo! Design Pattern Library</a> is your friend.&#8221;</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/blog/post/14011/martin-belams-advice-to-hackers-at-the-guardians-july-2009-hack-day/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Get Your Beer Pong Skills On</title>
		<link>http://maisonbisson.com/blog/post/14003/get-your-beer-pong-skills-on/</link>
		<comments>http://maisonbisson.com/blog/post/14003/get-your-beer-pong-skills-on/#comments</comments>
		<pubDate>Fri, 24 Jul 2009 16:35:15 +0000</pubDate>
		<dc:creator>Casey Bisson</dc:creator>
				<category><![CDATA[Questionable...funny. Pointless.]]></category>
		<category><![CDATA[beer pong]]></category>
		<category><![CDATA[ping pong]]></category>
		<category><![CDATA[pong]]></category>
		<category><![CDATA[skills]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/?p=14003</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="maisonbisson-14003"><!-- &nbsp; --></abbr>
<p><a href="http://maisonbisson.com/blog/post/14003/get-your-beer-pong-skills-on/"><em>Click here to view the embedded video.</em></a></p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/blog/post/14003/get-your-beer-pong-skills-on/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Google Recommends Microformats and RDFa</title>
		<link>http://maisonbisson.com/blog/post/13988/google-recommends-microformats-and-rdfa/</link>
		<comments>http://maisonbisson.com/blog/post/13988/google-recommends-microformats-and-rdfa/#comments</comments>
		<pubDate>Mon, 13 Jul 2009 19:11:24 +0000</pubDate>
		<dc:creator>Casey Bisson</dc:creator>
				<category><![CDATA[Dispatches]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[metadata]]></category>
		<category><![CDATA[microformats]]></category>
		<category><![CDATA[rdfa]]></category>
		<category><![CDATA[structured data]]></category>
		<category><![CDATA[webmaster tools]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/?p=13988</guid>
		<description><![CDATA[
Google&#8217;s own webmasters help site recommends microformats and RDFa structured data to improve indexing and usefulness of the data. Review metadata appears to have full support, while people, product, and business data are in beta.
]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="maisonbisson-13988"><!-- &nbsp; --></abbr>
<p>Google&#8217;s own <a title="Webmasters/Site owners Help" href="http://www.google.com/support/webmasters/">webmasters help site</a> recommends <a title="About microformats - Webmasters/Site owners Help" href="http://www.google.com/support/webmasters/bin/answer.py?answer=146897">microformats</a> and <a title="About RDFa - Webmasters/Site owners Help" href="http://www.google.com/support/webmasters/bin/answer.py?answer=146898">RDFa</a> structured data to improve indexing and usefulness of the data. <a href="http://www.google.com/support/webmasters/bin/answer.py?answer=146645">Review metadata</a> appears to have full support, while <a href="http://www.google.com/support/webmasters/bin/answer.py?answer=146646">people</a>, <a href="http://www.google.com/support/webmasters/bin/answer.py?answer=146750">product</a>, and <a href="http://www.google.com/support/webmasters/bin/answer.py?answer=146861">business</a> data are in beta.</p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/blog/post/13988/google-recommends-microformats-and-rdfa/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Mozilla Labs&#8217; Ubiquity</title>
		<link>http://maisonbisson.com/blog/post/13961/mozilla-labs-ubiquity/</link>
		<comments>http://maisonbisson.com/blog/post/13961/mozilla-labs-ubiquity/#comments</comments>
		<pubDate>Mon, 15 Jun 2009 16:12:20 +0000</pubDate>
		<dc:creator>Casey Bisson</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Ubiquity]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/?p=13961</guid>
		<description><![CDATA[
Mozilla Labs&#8217; Ubiquity has a lot of promise:
Ubiquity is an experiment into connecting the Web with language in an attempt to find new user interfaces that make it possible for everyone to do common Web tasks more quickly and easily. It&#8217;s a Firefox extension, so it works on Macs, Windows, and Linux.
With only a couple [...]]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="maisonbisson-13961"><!-- &nbsp; --></abbr>
<p><a href="http://maisonbisson.com/blog/post/13961/mozilla-labs-ubiquity/"><em>Click here to view the embedded video.</em></a></p>
<p><a href="http://ubiquity.mozilla.com/">Mozilla Labs&#8217; Ubiquity</a> has a lot of promise:</p>
<blockquote><p>Ubiquity is an experiment into connecting the Web with language in an attempt to find new user interfaces that make it possible for everyone to do common Web tasks more quickly and easily. It&#8217;s a Firefox extension, so it works on Macs, Windows, and Linux.</p>
<p>With only a couple keystrokes, it lets you use language to instruct your browser. You can translate to and from most languages, add maps to your email, edit any page, twitter, check your calendar, search, email your friends, and much more. All without leaving the page you&#8217;re on.</p></blockquote>
<p>The first live example I saw reminded me of how a person could add an appointment in Newton (the web is strangely empty of examples, but you would write out &#8220;lunch with Dave next Tuesday&#8221; or something like that). The second example reminded me of Mac OS X&#8217;s Spotlight. The third example finally showed me something useful, and the video above is along those lines.</p>
<p>I&#8217;m wondering, however, how long until Apple adds those features to Spotlight.</p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/blog/post/13961/mozilla-labs-ubiquity/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tomas Mankovsky&#8217;s Sorry I&#8217;m Late</title>
		<link>http://maisonbisson.com/blog/post/13975/tomas-mankovskys-sorry-im-late/</link>
		<comments>http://maisonbisson.com/blog/post/13975/tomas-mankovskys-sorry-im-late/#comments</comments>
		<pubDate>Fri, 12 Jun 2009 17:04:40 +0000</pubDate>
		<dc:creator>Casey Bisson</dc:creator>
				<category><![CDATA[Questionable...funny. Pointless.]]></category>
		<category><![CDATA[animation]]></category>
		<category><![CDATA[Sorry I'm Late]]></category>
		<category><![CDATA[stop motion]]></category>
		<category><![CDATA[Tomas Mankovsky]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/?p=13975</guid>
		<description><![CDATA[
I&#8217;m simply in love with this video. Watch through the credits to see a bit of how it&#8217;s made.
]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="maisonbisson-13975"><!-- &nbsp; --></abbr>
<p><a href="http://maisonbisson.com/blog/post/13975/tomas-mankovskys-sorry-im-late/"><em>Click here to view the embedded video.</em></a></p>
<p>I&#8217;m simply in love with this video. Watch through the credits to see a bit of how it&#8217;s made.</p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/blog/post/13975/tomas-mankovskys-sorry-im-late/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Go Blog, Small Orgs (Or Large)</title>
		<link>http://maisonbisson.com/blog/post/13957/go-blog-small-orgs-or-large/</link>
		<comments>http://maisonbisson.com/blog/post/13957/go-blog-small-orgs-or-large/#comments</comments>
		<pubDate>Thu, 11 Jun 2009 16:12:58 +0000</pubDate>
		<dc:creator>Casey Bisson</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[blogging]]></category>
		<category><![CDATA[blogs]]></category>
		<category><![CDATA[communication]]></category>
		<category><![CDATA[web communications]]></category>
		<category><![CDATA[website]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/?p=13957</guid>
		<description><![CDATA[
Philip Greenspun suggests small organizations use a blog for their website (ironically, not blogged):
The Small Business Web circa 1994
In 1994, a small organization that wanted a Web site would hire a &#8220;Web designer&#8221; skilled in the exotic art of &#8220;HTML programming&#8221; to produce a static Web site, i.e., a cluster of linked pages with a [...]]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="maisonbisson-13957"><!-- &nbsp; --></abbr>
<p><a href="http://philip.greenspun.com/">Philip Greenspun</a> suggests <a href="http://philip.greenspun.com/business/weblog-as-website">small organizations use a blog for their website</a> (ironically, not blogged):</p>
<blockquote><p><strong>The Small Business Web circa 1994</strong></p>
<p>In 1994, a small organization that wanted a Web site would hire a &#8220;Web designer&#8221; skilled in the exotic art of &#8220;HTML programming&#8221; to produce a static Web site, i.e., a cluster of linked pages with a distinctive design and color scheme, giving information about the company or non-profit org. None of the pages would have a date on them because, by definition, nothing on the Web could be more than four years old.</p>
<p><strong>The Small Business Web circa 2009</strong></p>
<p>Managers of new small enterprises or established non-profit organizations sometimes ask me &#8220;Whom should I hire to build my Web site?&#8221;</p>
<p>I ask them what they want the site to do. The answer is to promote their business and distribute some basic information to customers. What they want is a static 1994-style graphic designer-produced Web site.</p>
<p>I explain that publishing on the Web is like producing a word processor document or writing an email. Would they hire a designer to write their documents and emails? No? Then why would they hire a designer to build their Web site?</p></blockquote>
<p><a href="http://philip.greenspun.com/business/weblog-as-website">he goes on&#8230;</a></p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/blog/post/13957/go-blog-small-orgs-or-large/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What is David McNicol&#8217;s URL Cache Plugin?</title>
		<link>http://maisonbisson.com/blog/post/13953/what-is-david-mcnicols-url-cache-plugin/</link>
		<comments>http://maisonbisson.com/blog/post/13953/what-is-david-mcnicols-url-cache-plugin/#comments</comments>
		<pubDate>Wed, 10 Jun 2009 16:13:11 +0000</pubDate>
		<dc:creator>Casey Bisson</dc:creator>
				<category><![CDATA[Blink]]></category>
		<category><![CDATA[Libraries & Networked Information]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[cache]]></category>
		<category><![CDATA[perm-permalinks]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[web archiving]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[wordpress plugin]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/?p=13953</guid>
		<description><![CDATA[
The description to David McNicol&#8217;s URL Cache Plugin raises more questions than it answers:
Given a URL, the url_cache() function will attempt to download the file it represents and return a URL pointing to this locally cached version.
Where did he plan to use it? Does he envision the cache as an archive, or for performance? Why hasn&#8217;t [...]]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="maisonbisson-13953"><!-- &nbsp; --></abbr>
<p>The description to David McNicol&#8217;s <a href="http://wordpress.org/extend/plugins/url-cache/">URL Cache Plugin</a> raises more questions than it answers:</p>
<blockquote><p>Given a URL, the url_cache() function will attempt to download the file it represents and return a URL pointing to this locally cached version.</p></blockquote>
<p>Where did he plan to use it? Does he envision the cache as an archive, or for performance? Why hasn&#8217;t it been updated since 2005?</p>
<p>It caught my interest because I&#8217;ve long been interested in a solution to link rot in my blog. A real &#8220;perma-permalink&#8221; would be very useful.</p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/blog/post/13953/what-is-david-mcnicols-url-cache-plugin/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Book Search Results Vs. Users</title>
		<link>http://maisonbisson.com/blog/post/13959/book-search-results-vs-users/</link>
		<comments>http://maisonbisson.com/blog/post/13959/book-search-results-vs-users/#comments</comments>
		<pubDate>Tue, 09 Jun 2009 17:13:00 +0000</pubDate>
		<dc:creator>Casey Bisson</dc:creator>
				<category><![CDATA[Libraries & Networked Information]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[amazon]]></category>
		<category><![CDATA[lib20]]></category>
		<category><![CDATA[libraries]]></category>
		<category><![CDATA[library 2.0]]></category>
		<category><![CDATA[search results]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/?p=13959</guid>
		<description><![CDATA[

Bret Victor offers the above design suggestions (from 2006) to Amazon in the book search results display (he&#8217;s comparing to this). I didn&#8217;t discover them at the time, but many of them are still relevant now. Bret notes that Amazon&#8217;s display doesn&#8217;t do a good job of answering the questions a person has when searching for [...]]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="maisonbisson-13959"><!-- &nbsp; --></abbr>
<p><img src="http://worrydream.com/MagicInk/p/books_redesign.png" alt="Bret Victor's redesign of Amazon book search results" width="600" height="419" /></p>
<p><a href="http://worrydream.com/MagicInk/">Bret Victor offers the above design suggestions</a> (from 2006) to Amazon in the book search results display (he&#8217;s <a href="http://worrydream.com/MagicInk/p/books_original.png">comparing to this</a>). I didn&#8217;t discover them at the time, but many of them are still relevant now. Bret notes that Amazon&#8217;s display doesn&#8217;t do a good job of answering the questions a person has when searching for books: &#8220;What is the book about?&#8221; and &#8220;is it any good?&#8221;</p>
<blockquote><p>Unfortunately, these questions are completely unaddressed by the information provided. To see relevant information, the user must click on each listing individually. That is, she must navigate by hand instead of by eye, and must use her memory to compare information across time instead of space.</p>
<p>The problem is that this graphic was designed as an index into a set of webpages, but is used as a catalog for comparing a set of books. The purpose of this graphic should not be to return a list of query matches, but to help the user learn about books related to her topic of interest.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/blog/post/13959/book-search-results-vs-users/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Too Bad The Hanzo Archives Wordpress Plugin Is Caput</title>
		<link>http://maisonbisson.com/blog/post/13955/too-bad-the-hanzo-archives-wordpress-plugin-is-caput/</link>
		<comments>http://maisonbisson.com/blog/post/13955/too-bad-the-hanzo-archives-wordpress-plugin-is-caput/#comments</comments>
		<pubDate>Tue, 09 Jun 2009 16:12:46 +0000</pubDate>
		<dc:creator>Casey Bisson</dc:creator>
				<category><![CDATA[Blink]]></category>
		<category><![CDATA[Libraries & Networked Information]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[archive]]></category>
		<category><![CDATA[Hanzo Archives]]></category>
		<category><![CDATA[link rot]]></category>
		<category><![CDATA[perma-permalink]]></category>
		<category><![CDATA[permalink]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[web archive]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/?p=13955</guid>
		<description><![CDATA[
The Hanzo Archives Wordpress plugin is something I&#8217;d be very excited to use. Ironically, it&#8217;s disappeared from the web (though the blog post hasn&#8217;t):
We’ve released a Wordpress Plugin which automatically archives anything you link to in your blog posts; it also adds a ‘perma-permalink’ for the archived version adjacent to each original link.
An Amazon Web [...]]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="maisonbisson-13955"><!-- &nbsp; --></abbr>
<p>The <a href="http://www.hanzoarchives.com/">Hanzo Archives</a> <a href="http://www.hanzoarchives.com/blog/2006/05/16/wordpress-plugin/">Wordpress plugin</a> is something I&#8217;d be very excited to use. Ironically, it&#8217;s disappeared from the web (though the blog post hasn&#8217;t):</p>
<blockquote><p>We’ve released a Wordpress Plugin which automatically archives anything you link to in your blog posts; it also adds a ‘perma-permalink’ for the archived version adjacent to each original link.</p></blockquote>
<p>An <a href="http://aws.amazon.com/solutions/case-studies/hanzo/">Amazon Web Services case study</a> put me on to Hanzo a while ago, and in May 2008 I actually spoke with <a href="http://twitter.com/hanzoman">Mark Middleton</a> (the markm who posted the entry above). Mark revealed that community take-up on the plugin and other general purpose web archiving services was below expectations. The company has since refocused on legal matters (even their blog tag-line has changed to &#8220;web archiving for compliance and e-discovery&#8221;).</p>
<p>I wonder if, now that the number of people and companies that have been blogging for years has grown, there might be more of a market for such a service.</p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/blog/post/13955/too-bad-the-hanzo-archives-wordpress-plugin-is-caput/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Customizable Post Listings</title>
		<link>http://maisonbisson.com/blog/post/13951/customizable-post-listings/</link>
		<comments>http://maisonbisson.com/blog/post/13951/customizable-post-listings/#comments</comments>
		<pubDate>Mon, 08 Jun 2009 14:13:13 +0000</pubDate>
		<dc:creator>Casey Bisson</dc:creator>
				<category><![CDATA[Blink]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[post listings]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[wordpress plugin]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/?p=13951</guid>
		<description><![CDATA[
Lorelle is a big fan of Scott Reilly&#8217;s  Customizable Post Listings:
Display Recent Posts, Recently Commented Posts, Recently Modified Posts, Random Posts, and other post, page, or draft listings using the post information of your choosing in an easily customizable manner. You can narrow post searches by specifying categories and/or authors, among other things.
]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="maisonbisson-13951"><!-- &nbsp; --></abbr>
<p><a href="http://lorelle.wordpress.com/">Lorelle</a> is a big fan of Scott Reilly&#8217;s <a href="http://coffee2code.com/wp-plugins/customizable-post-listings/"> Customizable Post Listings</a>:</p>
<blockquote><p>Display Recent Posts, Recently Commented Posts, Recently Modified Posts, Random Posts, and other post, page, or draft listings using the post information of your choosing in an easily customizable manner. You can narrow post searches by specifying categories and/or authors, among other things.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/blog/post/13951/customizable-post-listings/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>