<?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</title>
	<atom:link href="http://maisonbisson.com/blog/post/author/admin/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.5.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>The WordPress Way</title>
		<link>http://maisonbisson.com/blog/post/14138/the-wordpress-way/</link>
		<comments>http://maisonbisson.com/blog/post/14138/the-wordpress-way/#comments</comments>
		<pubDate>Tue, 06 Oct 2009 14:42:18 +0000</pubDate>
		<dc:creator>Casey</dc:creator>
				<category><![CDATA[Dispatches]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[links]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/?p=14138</guid>
		<description><![CDATA[
Plugin Development
Will Norris&#8216; talk at WordCamp PDX introduces WordPress coding standards, common functions, and constants to would be plugin developers (and smacks those who&#8217;ve already done it wrong). Also notable: functions, classes, variables, and constants in the WordPress trunk.
Custom Installations
Just as WordPress has a number of hooks and filters that plugins can use to modify [...]]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="maisonbisson-14138"><!-- &nbsp; --></abbr>
<h3 id="14138_plugin-development_1">Plugin Development</h3>
<p><a href="http://willnorris.com/">Will Norris</a>&#8216; talk at <a href="http://www.wordcampportland.org/">WordCamp PDX</a> introduces <a title="Will Norris: How NOT to Build a WordPress Plugin « WordPress.tv" href="http://wordpress.tv/2009/09/20/will-norris-building-plugins-portland09/">WordPress coding standards, common functions, and constants</a> to would be plugin developers (and smacks those who&#8217;ve already done it wrong). Also notable: <a title="PHP Cross Reference (PHPXref) of: WordPress Trunk - Provided by Yoast" href="http://xref.yoast.com/trunk/nav.html?_functions/index.html">functions</a>, <a title="PHP Cross Reference (PHPXref) of: WordPress Trunk - Provided by Yoast" href="http://xref.yoast.com/trunk/nav.html?_classes/index.html">classes</a>, <a title="PHP Cross Reference (PHPXref) of: WordPress Trunk - Provided by Yoast" href="http://xref.yoast.com/trunk/nav.html?_variables/index.html">variables</a>, and <a title="PHP Cross Reference (PHPXref) of: WordPress Trunk - Provided by Yoast" href="http://xref.yoast.com/trunk/nav.html?_constants/index.html">constants</a> in the WordPress trunk.</p>
<h3 id="14138_custom-installations_1">Custom Installations</h3>
<p>Just as WordPress has a number of hooks and filters that plugins can use to modify and extend behavior, it also has <a title="Automating WordPress customizations – the install.php way « WordPress Bits" href="http://wpbits.wordpress.com/2007/08/10/automating-wordpress-customizations-the-installphp-way/">a cool way to customize the installation process</a>.</p>
<h3 id="14138_extending-the-wysiwy_1">Extending The WYSIWYG Editor</h3>
<p><a title="TinyMCE - Home" href="http://tinymce.moxiecode.com/">TinyMCE</a>, the WYSIWYG editor in WordPress has a rich API to allow adding buttons and stuff, but <a href="http://tinymce.moxiecode.com/documentation.php">the docs are hard to get into</a>. We can get a jump on that by looking at how it&#8217;s implemented in other WP plugins.  <a title="/vipers-video-quicktags/trunk/resources/tinymce3/editor_plugin.js – WordPress Plugin Repository" href="http://plugins.trac.wordpress.org/browser/vipers-video-quicktags/trunk/resources/tinymce3/editor_plugin.js">This code creates the buttons</a>, while the function that <a title="/vipers-video-quicktags/trunk/vipers-video-quicktags.php – WordPress Plugin Repository" href="http://plugins.trac.wordpress.org/browser/vipers-video-quicktags/trunk/vipers-video-quicktags.php#L658">responds to the button click and does the work</a> is defined within the plugin. The <a title="/tags/2.8.4/wp-includes/js/tinymce/plugins – WordPress Trac" href="http://core.trac.wordpress.org/browser/tags/2.8.4/wp-includes/js/tinymce/plugins">TinyMCE plugins in core</a> are also informative.</p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/blog/post/14138/the-wordpress-way/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hacking WordPress Login and Password Reset Processes For My University Environment</title>
		<link>http://maisonbisson.com/blog/post/14110/wordpress-user-authentication-hacks/</link>
		<comments>http://maisonbisson.com/blog/post/14110/wordpress-user-authentication-hacks/#comments</comments>
		<pubDate>Tue, 29 Sep 2009 16:16:16 +0000</pubDate>
		<dc:creator>Casey</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[authentication]]></category>
		<category><![CDATA[CAS]]></category>
		<category><![CDATA[hacks]]></category>
		<category><![CDATA[identity]]></category>
		<category><![CDATA[identity management]]></category>
		<category><![CDATA[idm]]></category>
		<category><![CDATA[login]]></category>
		<category><![CDATA[single sign on]]></category>
		<category><![CDATA[university portal]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[WordPress MU]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/?p=14110</guid>
		<description><![CDATA[
ny university worth the title is likely to have a very mixed identity environment. At Plymouth State University we&#8217;ve been pursuing a strategy of unifying identity and offering single sign-on to web services, but an inventory last year still revealed a great number of systems not integrated with either our single sign-on (AuthN) or authorization [...]]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="maisonbisson-14110"><!-- &nbsp; --></abbr>
<div class="contents innerindex"><h3>Contents</h3><ol><li><a href="http://maisonbisson.com/blog/post/14110/wordpress-user-authentication-hacks/#14110_platform-choices_1">Platform Choices</a></li><li><a href="http://maisonbisson.com/blog/post/14110/wordpress-user-authentication-hacks/#14110_our-needs-vs-wordpre_1">Our Needs vs. WordPress</a></li><li><a href="http://maisonbisson.com/blog/post/14110/wordpress-user-authentication-hacks/#14110_what-we-did_1">What We Did</a></li><li><a href="http://maisonbisson.com/blog/post/14110/wordpress-user-authentication-hacks/#14110_what-it-looks-like_1">What It Looks Like</a></li></ol></div>Any university worth the title is likely to have a very mixed identity environment. At <a href="http://www.plymouth.edu/">Plymouth State University</a> we&#8217;ve been pursuing a strategy of unifying identity and offering single sign-on to web services, but an inventory last year still revealed a great number of systems not integrated with either our single sign-on (<a title="Authentication - Wikipedia, the free encyclopedia" href="http://en.wikipedia.org/wiki/Authentication">AuthN</a>) or authorization systems (<a title="Authorization - Wikipedia, the free encyclopedia" href="http://en.wikipedia.org/wiki/Authorization">AuthZ</a>, see <a href="http://en.wikipedia.org/wiki/Authentication#Authentication_vs._authorization">difference</a>). And in addition to the many application/system specific stores of identity information (even for those systems integrated into our single sign-on environment), we also use both LDAP and AD (which we try to synchronize at the application level). Worst of all, the entire environment is provisioned solely from our <a href="http://en.wikipedia.org/wiki/Management_information_system">MIS database</a>, which is good if you want to make sure that students and faculty get user accounts, but bad if you want to provision an account for somebody who doesn&#8217;t fit into one of those roles.</p>
<p>The one way relationship between our user accounts and the MIS database also makes it difficult to engage with new users online. If you can&#8217;t get an account until you become a student, how do you allow potential students to apply online if all your systems are integrated with single sign-on? And if you can&#8217;t authenticate the online identity of your users, how do you set initial passwords into your system? Or allow them to reset a forgotten password online?</p>
<p>Internet companies never struggled with this issue, as their customers could only approach them online, but most universities built systems around paper applications and have fond (and relatively recent) memories of offering their students their first internet experience. It&#8217;s still not unusual for universities to offer their students their campus computing account with a default password based on supposedly secret data shared between the user and the school. But your SSN, birth date, and mother&#8217;s name are no longer secret. A proposed change in FERPA policy (see the <a href="http://edocket.access.gpo.gov/2008/pdf/E8-5790.pdf">the top of page 15586 in the NPRM</a>) would have barred the use of “a common form user name (e.g., last name and first name initial) with date of birth or SSN, or a portion of the SSN, as an initial password to be changed upon first use of the system” in systems that store academic data. The final rule excluded that provision, much to the relief of those schools with more lobbying clout than brains.</p>
<p><span id="more-14110"></span></p>
<h3 id="14110_platform-choices_1">Platform Choices</h3>
<p>Rather than wait to see how the ruling played out last year, we went to work trying to improve security while easing access to our systems (no, that is not self-contradictory). Our challenges were thus:</p>
<ul>
<li>Fix initial password assignment</li>
<li>Fix password resets</li>
<li>Allow users with a loose or undefined relationship to the institution to create limited accounts for the purpose of interacting with the institution or its members</li>
</ul>
<p>We considered a number of paths to a solution, including hacking of our university portal (which hosts the CAS single sign-on in our environment), expansion of a limited home-built solution, and a review of commercial and open source products and frameworks. We simplified the problem by confirming that the FERPA rule did not require us to authenticate the “real life” identity of a person; rather, we had only to validate the online identity of a person (saving us from needing to do things like send confirmation PINs by postal mail to a person&#8217;s home address).</p>
<p>In the end, we chose WordPress MU. Significant factors were our experience with the software (all the MIS developers use it personally), the extensibility of it as an application platform, the development focus on user experience (especially in recent versions), and our interest in using it as a framework for other user-facing services (especially BuddyPress).</p>
<h3 id="14110_our-needs-vs-wordpre_1">Our Needs vs. WordPress</h3>
<ul>
<li>The system must serve as the front end to our single sign-on environment, using our AD and LDAP password stores to authenticate users who have accounts in those systems.</li>
<li>External email addresses, once verified with some challenge/response, can be used to reset a password.</li>
<li>Users who are presently affiliated with the school have a school-provided email address, but no external address with which to reset their lost passwords.</li>
<li>Users who are not presently affiliated with the school have no school-provided email address, and must verify their external email address before their account is activated. They can then set their own password once they verify their email address.</li>
<li>The ability to send password reset codes via SMS would be nice (especially considering the number of long-time employees of the university who do not have personal email accounts), though that also requires the verification of the user&#8217;s cell phone number.</li>
</ul>
<p>After reviewing what we wanted to do, we surveyed WordPress&#8217; code to develop an implementation plan. And, because a number of aspects of our application process were changing, we decided to focus on allowing current users to self-reset their password and postpone development of account self-creation features for new users. Still, a few issues quickly emerged:</p>
<ul>
<li>WordPress requires a username be assigned to each user, rather than relying on email address (this is <a href="http://core.trac.wordpress.org/ticket/9568">likely to change in WP 2.9</a>) Creating a new username for our users is unacceptable, but adding a large number of new users to our existing username space will quickly deplete the “good” usernames. And changing a user&#8217;s username as their affiliation with the institution is unacceptable.</li>
<li>The <a href="http://core.trac.wordpress.org/browser/tags/2.8.4/wp-includes/pluggable.php#L456">core user authentication function</a> can be replaced with our own function. (And in 2.8 it became filterable)</li>
<li><a href="http://trac.mu.wordpress.org/browser/tags/2.8.4a/wp-admin/includes/mu.php#L250">WordPress MU will validate email addresses</a>, but the system isn&#8217;t built to be extensible.</li>
<li>WordPress only stores <a href="http://codex.wordpress.org/Database_Description#Table:_wp_users">one email address per user</a>, but the <a href="http://codex.wordpress.org/Function_Reference/update_usermeta">user meta system</a> can be used to store a second one. Unfortunately (and in a manner inconsistent with post meta), <a href="http://core.trac.wordpress.org/ticket/7540">only one value per meta key per user is allowed</a>, making it difficult to allow users to have an arbitrary number of email addresses associated with their account.</li>
<li>The function that <a href="http://core.trac.wordpress.org/browser/tags/2.8.4/wp-includes/pluggable.php#L211">identifies a user by a given email address</a> can be replaced with a function that also checks the secondary address.</li>
<li><a href="http://codex.wordpress.org/Users_Your_Profile_SubPanel">WordPress user profiles</a> have no phone field, but the user meta system can be used to store one. A function to identify a user by a given phone number must also be created.</li>
<li>Unlike <a href="http://core.trac.wordpress.org/browser/tags/2.8.4/wp-admin/options-privacy.php">some settings pages</a>, the fields on the user profile editor cannot be changed simply by modifying the <code>$wp_settings_fields</code> array.</li>
<li>Upon doing a password reset, the user is <a href="http://core.trac.wordpress.org/browser/tags/2.8.4/wp-login.php#L203">sent a temporary password</a>, rather than being allowed to set a new password. This contradicts University policy about how passwords are used and communicated and could train users that sending passwords by mail is acceptable.</li>
<li>The various functions in <code><a href="http://core.trac.wordpress.org/browser/tags/2.7/wp-login.php">wp-login.php</a></code> <em>cannot</em> be replaced, and in WP 2.7 the code had no way to add or replace various login actions (<a href="http://core.trac.wordpress.org/browser/tags/2.8.4/wp-login.php#L307">WP 2.8 changed that</a>).</li>
<li><a href="http://trac.mu.wordpress.org/browser/tags/2.8.4a/wp-includes/wpmu-functions.php">WPMU-specific functions</a> don&#8217;t always follow WP coding standards or models.</li>
</ul>
<p>(Note that we began our work and deployed the system under WPMU 2.7. WPMU 2.8 included a few changes that made the process easier. I&#8217;m proud to say that some of those changes were a result of code we offered back to WP during our development.)</p>
<h3 id="14110_what-we-did_1">What We Did</h3>
<ul>
<li>We decided that email addresses (both PSU addresses and external addresses), as well as PSU usernames would be acceptable identifiers for an account, and that a person should be able to log in to our web services using any of those identifiers. So&#8230;</li>
<li>We replaced <code>wp_autenticate()</code> with our own function that accepts either email address or university username, checks to see if the user exists locally, checks to see if they exist in AD or LDAP, confirms their password, provisions their WordPress account (for university users who&#8217;ve not logged in via this method yet), establishes a session with our university portal and redirects them there (unless $redirect is set to something more specific that the dashboard).</li>
<li>We decided to replace WordPress&#8217; usernames with a random string matching a pattern we established. This became the WPID. Doing this required us to hide references to username (easy if you set a preferred display name)</li>
<li>To store phone numbers and secondary email addresses, and allow users to edit those within their profile, I created the <a href="http://wordpress.org/extend/plugins/alternate-contact-info/">Alternate Contact Info plugin</a> (<a href="http://plugins.trac.wordpress.org/browser/alternate-contact-info/trunk/altcontact.php">browse source</a>). This requires more use of <a href="http://php.net/ob_start">output buffering</a> than I&#8217;d like, but it gets the job done.</li>
<li>To confirm email addresses and phone numbers via a challenge/response message (and support other interactions), I created the <a title="WordPress › WordPress Ticket Framework « WordPress Plugins" href="http://wordpress.org/extend/plugins/wp-ticket-framework/">WordPress Ticket Framework plugin</a> (<a href="http://maisonbisson.com/blog/post/13862/wordpress-action-ticketing-api/">my introduction</a>, <a title="/wp-ticket-framework/trunk/ticket-framework.php – WordPress Plugin Repository" href="http://plugins.trac.wordpress.org/browser/wp-ticket-framework/trunk/ticket-framework.php">browse source</a>).</li>
<li>To send messages via SMS, we used my <a title="» wpSMS MaisonBisson.com" href="http://maisonbisson.com/projects/wpsms/">wpSMS plugin</a> (<a title="WordPress › wpSMS « WordPress Plugins" href="http://wordpress.org/extend/plugins/wpsms/">in the plugin directory</a>, <a title="/wpsms/trunk/wpsms.php – WordPress Plugin Repository" href="http://plugins.trac.wordpress.org/browser/wpsms/trunk/wpsms.php">browse source</a>).</li>
<li><a href="http://borkweb.com/">Matther Batchelder</a> <a href="https://connect.plymouth.edu/wp-login.php">re-skinned the login screen</a> via a plugin that inserts our custom CSS.</li>
<li>After determining that our university portal could not be made to authenticate via CAS, I gave up work on my <a href="http://plugins.trac.wordpress.org/browser/wpcas-server/trunk/wpcas-server.php">wpCAS Server plugin</a> and developed another method to initiate the portal session (which then establishes a CAS session using the portal&#8217;s CAS server).</li>
<li>We replaced most of the functionality of the <code>wp-login.php</code> page (by hacking core at first, then taking advantage of the action hook in 2.8). In doing so we were able to change the password reset behavior to allow users to immediately change their password after entering their reset code (which was sent to their email address or phone via SMS).</li>
</ul>
<p>Over time we extended the system to <a href="http://maisonbisson.com/blog/post/14028/wordpress-hacks-managing-multiple-sub-domains/">host multiple domains</a> and <a href="http://maisonbisson.com/blog/post/14052/wordpress-hacks-nested-paths-for-wpmu-blogs/">replace our CMS</a>. Soon we&#8217;ll consolidate our  <a href="http://blogs.plymouth.edu/">public blogging instance</a> into it, and we&#8217;re building an invite system that we can use to invite people to join our community.</p>
<h3 id="14110_what-it-looks-like_1">What It Looks Like</h3>
<p><div id="attachment_14121" class="wp-caption aligncenter" style="width: 310px"><a href="http://maisonbisson.com/files/2009/09/login.png"><img class="size-medium wp-image-14121" src="http://maisonbisson.com/files/2009/09/login-300x159.png" alt="The re-skinned WordPress login" width="300" height="159" /></a><p class="wp-caption-text">The re-skinned WordPress login</p></div>
<div id="attachment_14122" class="wp-caption aligncenter" style="width: 310px"><a href="http://maisonbisson.com/files/2009/09/password-recovery.png"><img class="size-medium wp-image-14122" src="http://maisonbisson.com/files/2009/09/password-recovery-300x179.png" alt="Entering an email address or username to get a password reset code" width="300" height="179" /></a><p class="wp-caption-text">Entering an email address or username to get a password reset code</p></div>
<div id="attachment_14129" class="wp-caption aligncenter" style="width: 310px"><a href="http://maisonbisson.com/files/2009/09/sms-text.PNG"><img class="size-medium wp-image-14129" src="http://maisonbisson.com/files/2009/09/sms-text-300x126.PNG" alt="SMS text with password reset code" width="300" height="126" /></a><p class="wp-caption-text">SMS text with password reset code</p></div>
<div id="attachment_14123" class="wp-caption aligncenter" style="width: 310px"><a href="http://maisonbisson.com/files/2009/09/password-reset.png"><img class="size-medium wp-image-14123" src="http://maisonbisson.com/files/2009/09/password-reset-300x268.png" alt="Enter the password reset code from the SMS text message here, or follow the link from the email" width="300" height="268" /></a><p class="wp-caption-text">Enter the password reset code from the SMS text message here, or follow the link from the email</p></div>
<div id="attachment_14124" class="wp-caption aligncenter" style="width: 310px"><a href="http://maisonbisson.com/files/2009/09/personal-profile.png"><img class="size-medium wp-image-14124" src="http://maisonbisson.com/files/2009/09/personal-profile-300x201.png" alt="Your extended contact information in the WordPress profile" width="300" height="201" /></a><p class="wp-caption-text">Extended contact information in the WordPress profile</p></div>
<p>And that&#8217;s how we replaced our authentication system with WordPress, gained self-service password resets, and built the foundation to invite new users into our system.</p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/blog/post/14110/wordpress-user-authentication-hacks/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Pigeon Beats ADSL: Slow Networks Or Massive Storage Capacity?</title>
		<link>http://maisonbisson.com/blog/post/14087/avian-transfers-show-slow-networks-or-growing-storage-capacity/</link>
		<comments>http://maisonbisson.com/blog/post/14087/avian-transfers-show-slow-networks-or-growing-storage-capacity/#comments</comments>
		<pubDate>Mon, 21 Sep 2009 16:24:01 +0000</pubDate>
		<dc:creator>Casey</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[adsl]]></category>
		<category><![CDATA[bandwidth]]></category>
		<category><![CDATA[broadband]]></category>
		<category><![CDATA[dsl]]></category>
		<category><![CDATA[growth]]></category>
		<category><![CDATA[IP over Avian Carrier]]></category>
		<category><![CDATA[network speeds]]></category>
		<category><![CDATA[pigeonrace2009]]></category>
		<category><![CDATA[pigeons]]></category>
		<category><![CDATA[storage capacity]]></category>
		<category><![CDATA[upload speeds]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/?p=14087</guid>
		<description><![CDATA[
It was a tech story so apparently humorous that the popular media felt compelled to cover it: carrier pigeons delivered 4GBs of data faster than an ADSL line. The BBC story&#8217;s subtitle read “broadband promised to unite the world with super-fast data delivery &#8211; but in South Africa it seems the web is still no [...]]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="maisonbisson-14087"><!-- &nbsp; --></abbr>
<div id="attachment_14096" class="wp-caption alignright" style="width: 220px"><a href="http://maisonbisson.com/files/2009/09/8335_135216455094_129866695094_3041363_5625117_n.jpg"><img class="size-medium wp-image-14096     " src="http://maisonbisson.com/files/2009/09/8335_135216455094_129866695094_3041363_5625117_n-300x225.jpg" alt="Moving data by homing pigeon takes planning" width="210" height="158" /></a><p class="wp-caption-text">Moving data by homing pigeon requires some planning, and pigeons</p></div>
<p>It was a tech story so apparently humorous that <a title="Messenger Pigeon Faster Faster Than SA Internet" href="http://www.huffingtonpost.com/2009/09/10/messenger-pigeon-faster-f_n_282053.html">the popular media felt compelled to cover it</a>: carrier pigeons delivered 4GBs of data faster than an ADSL line. <a href="http://news.bbc.co.uk/2/hi/africa/8248056.stm">The BBC story&#8217;s subtitle read</a> “broadband promised to unite the world with super-fast data delivery &#8211; but in South Africa it seems the web is still no faster than a humble pigeon,” and that&#8217;s how most stories played it. Unfortunately, they all got it wrong.</p>
<p>The <a href="http://pigeonrace2009.co.za/">race</a> was run by <a href="http://www.theunlimitedgroup.com/flying-in-the-face-of-data">The Unlimited Group</a>, but the clearest telling of it comes from <a href="http://en.wikipedia.org/wiki/IPoAC#Other_avian_data_transfer_methods">Wikipedia</a>:</p>
<blockquote><p>Inspired by <a class="external mw-magiclink-rfc" href="http://tools.ietf.org/html/rfc2549">RFC 2549</a>, on 9 September 2009 the marketing team of The Unlimited, a regional company in South Africa, decided to host a tongue-in-cheek “Pigeon Race” between their pet pigeon “Winston” and local telecom company <a title="Telkom SA" href="http://en.wikipedia.org/wiki/Telkom_SA">Telkom SA</a>. The race is to send 4 gigabytes of data from <a title="Howick, KwaZulu-Natal" href="http://en.wikipedia.org/wiki/Howick,_KwaZulu-Natal">Howick</a> to <a title="Hillcrest, KwaZulu-Natal" href="http://en.wikipedia.org/wiki/Hillcrest,_KwaZulu-Natal">Hillcrest</a>, approximately 60 km apart. The pigeon carrying a <a class="mw-redirect" title="Secure Digital card" href="http://en.wikipedia.org/wiki/Secure_Digital_card">microSD</a> card (an avian variant of a <a title="Sneakernet" href="http://en.wikipedia.org/wiki/Sneakernet">sneakernet</a>), versus a Telkom <a class="mw-redirect" title="ADSL" href="http://en.wikipedia.org/wiki/ADSL">ADSL</a> line. Winston beat the data transfer over Telkom&#8217;s ADSL line, with a total time of two hours, six minutes and 57 seconds from uploading data on the microSD card to completion of download from card. At the time of Winston&#8217;s victory, the 4GB ADSL transfer was just under 4% complete.</p></blockquote>
<p><span id="more-14087"></span>The critical numbers here are 4GB vs. 164MB (4% of 4GB) in 2 hours. Also, because the challenge was peer to peer transfer, rather than a simple download, the bandwidth is limited by both the upload and download speed of the technology. <a href="http://en.wikipedia.org/wiki/ADSL">ADSL</a>, like most consumer broadband technologies, offers slower upload speeds than download speeds.</p>
<div id="attachment_14090" class="wp-caption alignright" style="width: 220px"><a href="http://maisonbisson.com/files/2009/09/speedtest-world-upload-speeds.png"><img class="size-medium wp-image-14090 " src="http://maisonbisson.com/files/2009/09/speedtest-world-upload-speeds-300x156.png" alt="Speedtest.net's summary of worldwide test results" width="210" height="109" /></a><p class="wp-caption-text">Speedtest.net&#39;s summary of worldwide test results</p></div>
<p><a href="http://www.fairpoint.com/northern_ne/">My home ADSL line</a> is claimed to be 3Mbps/768Kbps, but manages a little less than that in practice according to <a title="Speedtest.net - The Global Broadband Speed Test" href="http://www.speedtest.net/">Speedtest.net</a> (and their <a href="http://click.linksynergy.com/fs-bin/stat?id=XfFSogqWv7s&amp;offerid=146261&amp;type=3&amp;subid=0&amp;tmpid=1826&amp;RD_PARM1=http%253A%252F%252Fitunes.apple.com%252FWebObjects%252FMZStore.woa%252Fwa%252FviewSoftware%253Fid%253D300704847%2526mt%253D8%2526uo%253D6%2526partnerId%253D30">sweet iPhone app</a>). That&#8217;s a little <a title="Speedtest.net - World Results" href="http://www.speedtest.net/global.php">below average for the US</a> (be sure to view upload speeds), but not dramatically so. And even the fastest region, Asia, can only boast 1.72 Mbps.</p>
<p>In the race between pigeon and internet, the 164MB network transfer over 2 hours is about 187 Kb/s. Significantly slower than my home connection is rated for. But even the fastest consumer upload speeds would have trouble beating the pigeon&#8217;s transfer speed. It would take sustained uploads of about 5Gb/s to transfer 4GB of data in the two hours of the pigeon stunt, a rate much faster than possible with the company&#8217;s 1Mb/s ADSL connection. But it isn&#8217;t just the South African internet that&#8217;s slow: The best performing &#8220;ISP&#8221; in New Hampshire, Dartmouth College, gets a 10 Mb/s rating in Speedtest.net, though very few others can manage over 4Mb/s (<a title="The New Comcast High-Speed Internet: Speed Comparison" href="http://www.comcast.com/Corporate/Learn/HighSpeedInternet/speedcomparison.html">Comcast advertises upload speeds up to 10Mb/s</a>, though that&#8217;s with “PowerBoost”; sustained speeds are lower, the company reportedly <a title="Comcast is throttling FTP uploads - dslreports.com" href="http://www.dslreports.com/forum/r20148078-Comcast-is-throttling-FTP-uploads">throttles FTP</a> and <a title="Visual proof Comcast throttles my cable connection!" href="http://blog.raamdev.com/2007/08/23/visual-proof-comcast-throttles-my-cable-connection/">other uploads</a>, and Speedtest.net rates their business-class uploads at 3.47 Mb/s). If the story makes South African networks laughable, it makes the whole internet a comedy act.</p>
<div id="attachment_14091" class="wp-caption alignright" style="width: 168px"><a href="http://maisonbisson.com/files/2009/09/1253475464941.jpeg"><img class="size-medium wp-image-14091 " src="http://maisonbisson.com/files/2009/09/1253475464941-198x300.jpg" alt="microSD card sizes compared to other SD types" width="158" height="240" /></a><p class="wp-caption-text">microSD card sizes compared to other SD types</p></div>
<p>And the pigeon could have carried even more data and made a bigger win over broadband. <a title="microSD - Wikipedia, the free encyclopedia" href="http://en.wikipedia.org/wiki/MicroSD">microSD cards</a> such as the one carried by the pigeon weigh less than half a gram and are now available in capacities <a href="http://www.amazon.com/dp/B001F6YRNO?tag=maisonbisson-20">up to 16GB</a> (with a theoretical capacity of about 128GB). Assuming you can attached two such cards (one to each leg), you&#8217;d get an upload rate of about 40Mb/s in the South African test. Perhaps you could even attach four such cards (totaling under 2 grams of cargo and yielding 80Mb/s) or send more pigeons.</p>
<p>Consumer <em>download</em> speeds are typically much faster, and popular web services go to great lengths to ensure they fill those pipes to speedily deliver rich media. <a href="http://www.macworld.com/article/6059/2002/07/akamai.html">Apple was an early investor</a> in <a href="http://www.akamai.com/">Akamai</a>, one of the first <a href="http://en.wikipedia.org/wiki/Content_delivery_network">content delivery networks</a> that speed downloads by distributing servers around the world so that your iTunes music and movie downloads are delivered from the closest servers and through the fastest pipes to your location. <a href="http://click.linksynergy.com/fs-bin/click?id=XfFSogqWv7s&amp;offerid=173504.718965952&amp;type=10&amp;subid=0">Netflix&#8217;s on demand service</a><img src="http://ad.linksynergy.com/fs-bin/show?id=XfFSogqWv7s&amp;bids=173504.718965952&amp;type=10&amp;subid=0" alt="icon" width="1" height="1" /> leverages the broad availability of these services to deliver TV shows and movies faster than the US Postal Service. But comparing internet speeds to postal service delivery of DVDs (a <a title="DVD - Wikipedia, the free encyclopedia" href="http://en.wikipedia.org/wiki/DVD#History">14 year old standard</a>) gives no real suggestion of attainable postal service bandwidth (especially when the network-delivered content is far more compressed than on DVD).</p>
<p>You could probably stuff about 30 MicroSD cards (which have almost five times the storage density of regular SD cards &#8212; 32GB in 1612.8mm<sup>3</sup> vs 16GB in 165mm<sup>3</sup>) in a First Class letter (<a href="http://postcalc.usps.gov/">$.44 for 6.125 inch x 11.5 inch and 1 ounce</a>) that gets delivered almost anywhere in the US in three days, yielding about 480GB in 72 hours or 15 Mb/s. A pair of 512GB SSDs, on the other hand, can be delivered over night, yielding 1TB in 24 hours or 97 Mb/s. Given that DVDs are 1.2mm thick and 120 mm in diameter, Netflix could easily fit as many as 80 microSD cards &#8212; 1280 GB (41 Mb/s over three days) &#8212; in their current delivery envelope, much more capacity than even the 50 GB (1.6 MB/s over three days) capacity of the largest <a href="http://en.wikipedia.org/wiki/Blu-ray_Disc">Blue-ray discs</a>. It&#8217;s for that reason that <a href="http://aws.amazon.com/importexport/">Amazon offers bulk import/export services of physical media for their web services</a>.</p>
<p>Point: storage capacity has increased dramatically over the past few years, while internet speeds have remained relatively stable. The pigeon gimmick didn&#8217;t show us a laughably slow internet connection, it showed us how unimaginably vast our storage has grown (and yet we still find ways to fill it).</p>
<p>Photos: <a href="http://www.facebook.com/photo.php?pid=3041363&amp;id=129866695094">Winston</a>, <a href="http://www.speedtest.net/global.php">Speedtest.net</a>, <a href="http://en.wikipedia.org/wiki/File:SD_Cards.svg">Wikipedia</a>. History worth remembering: <a href="http://blog.modernmechanix.com/mags/ModernMechanix/2-1932/pigeon_cam.jpg">avian photographers</a> (via <a href="http://blog.modernmechanix.com/2006/07/14/carrier-pigeons-take-aerial-photos-with-new-camera/">Modern Mechanix</a>).</p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/blog/post/14087/avian-transfers-show-slow-networks-or-growing-storage-capacity/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JSNES: JavaScript Nintendo Emulator</title>
		<link>http://maisonbisson.com/blog/post/14085/jsnes-javascript-nintendo-emulator/</link>
		<comments>http://maisonbisson.com/blog/post/14085/jsnes-javascript-nintendo-emulator/#comments</comments>
		<pubDate>Sun, 20 Sep 2009 16:21:51 +0000</pubDate>
		<dc:creator>Casey</dc:creator>
				<category><![CDATA[Dispatches]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[browser-based]]></category>
		<category><![CDATA[emulator]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[JSNES]]></category>
		<category><![CDATA[NES]]></category>
		<category><![CDATA[Nintendo]]></category>
		<category><![CDATA[Nintendo Entertainment System]]></category>

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

Ben Fisherman&#8217;s JSNES runs entirely in the browser using nothing more intrusive than JavaScript. It apparently manages real-time performance within Chrome, but it works (if not playably) on an iPhone.
I wish the screen was resizable and that it supported iPhone compatible controls, but both of those assume that browser performance will improve enough to make [...]]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="maisonbisson-14085"><!-- &nbsp; --></abbr>
<p><a href="http://www.flickr.com/photos/maisonbisson/3936876875/" title="JSNES on Safari 4/Mac OS 10.6 by misterbisson, on Flickr"><img src="http://farm3.static.flickr.com/2675/3936876875_67147e6273.jpg" width="464" height="454" alt="JSNES on Safari 4/Mac OS 10.6" /></a></p>
<p>Ben Fisherman&#8217;s <a title="JSNES: A Javascript NES emulator" href="http://benfirshman.com/projects/jsnes/">JSNES</a> runs entirely in the browser using nothing more intrusive than JavaScript. It apparently manages real-time performance within Chrome, but <a title="JSNES on iPhone on Flickr - Photo Sharing!" href="http://www.flickr.com/photos/maisonbisson/3937327632/">it works (if not playably) on an iPhone</a>.</p>
<p>I wish the screen was resizable and that it supported iPhone compatible controls, but both of those assume that browser performance will improve enough to make it playable. Interestingly, though not surprisingly, the Safari JS engine is limited to consuming a single CPU (which it quickly does while playing JSNES).</p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/blog/post/14085/jsnes-javascript-nintendo-emulator/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iTunes 9: Closer To An API?</title>
		<link>http://maisonbisson.com/blog/post/14080/itunes-9-closer-to-an-api/</link>
		<comments>http://maisonbisson.com/blog/post/14080/itunes-9-closer-to-an-api/#comments</comments>
		<pubDate>Wed, 16 Sep 2009 18:58:00 +0000</pubDate>
		<dc:creator>Casey</dc:creator>
				<category><![CDATA[Dispatches]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[itunes]]></category>
		<category><![CDATA[itunes music store api]]></category>
		<category><![CDATA[iTunes Store]]></category>
		<category><![CDATA[iTunes Store API]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/?p=14080</guid>
		<description><![CDATA[
Will Norris has discovered that iTunes 9&#8217;s interactions with the Store are more web-happy. I&#8217;ve been asking where the iTunes Store API was for some time, now I think I&#8217;ve got what I need to build one.
]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="maisonbisson-14080"><!-- &nbsp; --></abbr>
<p><a title="iTunes 9, now with more WebKit — Will Norris" href="http://willnorris.com/2009/09/itunes-9-now-with-more-webkit">Will Norris has discovered</a> that iTunes 9&#8217;s interactions with the Store are more web-happy. I&#8217;ve been asking where the <a title="» iTunes Music Store API? MaisonBisson.com" href="http://maisonbisson.com/blog/post/10758/itunes-music-store-api/">iTunes Store API was</a> for some time, now I think I&#8217;ve got <a href="http://ax.itunes.apple.com/WebObjects/MZStore.woa/wa/viewGrouping?id=24">what I need to build one.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/blog/post/14080/itunes-9-closer-to-an-api/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Online Advertising Metrics</title>
		<link>http://maisonbisson.com/blog/post/14026/online-advertising-metrics/</link>
		<comments>http://maisonbisson.com/blog/post/14026/online-advertising-metrics/#comments</comments>
		<pubDate>Thu, 03 Sep 2009 00:16:47 +0000</pubDate>
		<dc:creator>Casey</dc:creator>
				<category><![CDATA[Dispatches]]></category>
		<category><![CDATA[bounce rates]]></category>
		<category><![CDATA[conversion rates]]></category>
		<category><![CDATA[marketing]]></category>
		<category><![CDATA[metrics]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/?p=14026</guid>
		<description><![CDATA[
I don&#8217;t know if it&#8217;s just the Mother&#8217;s day effect, but the top 10 online retailers for May 2009 were dominated by flower shops. The top shop is converting almost 40% of their visitors to buyers, though the average is just over 5%. Tim, meanwhile, claims he&#8217;s lowered his bounce rate to just 10%.
]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="maisonbisson-14026"><!-- &nbsp; --></abbr>
<p>I don&#8217;t know if it&#8217;s just the Mother&#8217;s day effect, but the <a title="Top 10 Online Retailers by Conversion Rate: May 2009 | FutureNow's GrokDotCom / Marketing Optimization Blog" href="http://www.grokdotcom.com/2009/07/02/top-10-online-retailers-by-conversion-rate-may-2009/">top 10 online retailers</a> for May 2009 were dominated by flower shops. The top shop is converting almost 40% of their visitors to buyers, though <a href="http://index.fireclick.com/">the average is just over 5%</a>. Tim, meanwhile, <a title="Bounce Rates, Adwords and an Effective Content Structure" href="http://www.seowizz.net/2009/03/bounce-rates-adwords-and-effective.html">claims he&#8217;s lowered his bounce rate</a> to just 10%.</p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/blog/post/14026/online-advertising-metrics/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>hNews Might Not Be So Bad</title>
		<link>http://maisonbisson.com/blog/post/14008/hnews-might-not-be-so-bad/</link>
		<comments>http://maisonbisson.com/blog/post/14008/hnews-might-not-be-so-bad/#comments</comments>
		<pubDate>Mon, 03 Aug 2009 15:29:37 +0000</pubDate>
		<dc:creator>Casey</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[hNews]]></category>
		<category><![CDATA[markup]]></category>
		<category><![CDATA[microformats]]></category>
		<category><![CDATA[news]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/?p=14008</guid>
		<description><![CDATA[
The AP&#8217;s diagram of their Protect, Point, Pay “news DRM” scheme looked like a joke, then I saw the parody.
Despite all the smoke and hype, Ed Felton explains that it&#8217;s underwhelming, at most. Still, hNews might be an interesting format for some blogs to adopt. Most of what the AP is rattling their saber about [...]]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="maisonbisson-14008"><!-- &nbsp; --></abbr>
<p>The <a href="http://www.ap.org/media/images/APnewsregistry.jpg">AP&#8217;s diagram</a> of their <a href="http://www.ap.org/pages/about/pressreleases/pr_072309a.html">Protect, Point, Pay “news DRM” scheme</a> looked like a joke, then <a href="http://imgur.com/DzZdf.jpg">I saw the parody</a>.</p>
<p>Despite all the smoke and hype, Ed Felton explains that <a title="AP's DRM Announcement: Much Ado About Nothing | Freedom to Tinker" href="http://freedom-to-tinker.com/blog/felten/aps-drm-announcement-much-ado-about-nothing">it&#8217;s underwhelming, at most</a>. Still, <a title="Value Added News" href="http://www.valueaddednews.org/technical/techspec">hNews</a> might be an interesting format for some blogs to adopt. Most of what the AP is rattling their saber about is in the <a title="Value Added News" href="http://www.valueaddednews.org/technical/techspec#Rights">rights</a> (containing <a href="http://wiki.creativecommons.org/images/d/d6/Ccrel-1.0.pdf">ccREL</a> declarations). Felton thinks the dependence on ccREL may extend derivative usage rights, rather than limit them. ccREL, after all, “states unequivocally that it does not limit users&#8217; rights already granted by copyright and can only convey further rights to the user.”</p>
<p>Okay, so hNews mightn&#8217;t be so bad, but what&#8217;s good about it? It brings together a number of pieces that we all expect in a news story (and many other stories). It makes it easy to identify the <a title="4.3.2 Dateline" href="http://www.valueaddednews.org/technical/techspec#Dateline">dateline</a> and <a title="4.3.3 Geo" href="http://www.valueaddednews.org/technical/techspec#Geo">geocoding</a> of a particular story, as well as the <a title="4.3.1 Source Organization" href="http://www.valueaddednews.org/technical/techspec#Source_Organization">publisher</a> and its <a title="4.3.5 Principles" href="http://www.valueaddednews.org/technical/techspec#Principles">principles</a>.</p>
<p>Oddly, the format doesn&#8217;t appear to address media within the content, but perhaps they expect us to leverage <a title="Media RSS - Wikipedia, the free encyclopedia" href="http://en.wikipedia.org/wiki/Media_RSS">Media RSS</a> and <a title="» Facebook’s Favorite Metadata MaisonBisson.com" href="http://maisonbisson.com/blog/post/13726/facebooks-favorite-metadata/"><code>rel=image_src</code> links</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/blog/post/14008/hnews-might-not-be-so-bad/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Do Facebook Ads Work?</title>
		<link>http://maisonbisson.com/blog/post/13996/do-facebook-ads-work/</link>
		<comments>http://maisonbisson.com/blog/post/13996/do-facebook-ads-work/#comments</comments>
		<pubDate>Tue, 21 Jul 2009 16:46:41 +0000</pubDate>
		<dc:creator>Casey</dc:creator>
				<category><![CDATA[Dispatches]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[ads]]></category>
		<category><![CDATA[advertising]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[social software]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/?p=13996</guid>
		<description><![CDATA[
All Facebook is happy to share the ten laws of Facebook advertising, but will those rules lead to better results than the .02% CTR Bob Gilbreath got a year ago?
]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="maisonbisson-13996"><!-- &nbsp; --></abbr>
<p><a title="All Facebook - The Unofficial Facebook Blog - Facebook News, Facebook Marketing, Facebook Business, and More!" href="http://www.allfacebook.com/">All Facebook</a> is happy to share <a title="The 10 Laws Of Facebook Advertising No Marketer Can Afford To Ignore" href="http://www.allfacebook.com/2009/07/facebook-advertising-marketer/">the ten laws of Facebook advertising</a>, but will those rules lead to better results than <a href="http://www.challengedividend.com/the_challenge_dividend/2008/04/facebook-ads-do.html">the .02% CTR Bob Gilbreath got a year ago</a>?</p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/blog/post/13996/do-facebook-ads-work/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Newspaper Business: News Was A Loss Leader</title>
		<link>http://maisonbisson.com/blog/post/13995/newspaper-business-news-was-a-loss-leader/</link>
		<comments>http://maisonbisson.com/blog/post/13995/newspaper-business-news-was-a-loss-leader/#comments</comments>
		<pubDate>Mon, 20 Jul 2009 16:39:11 +0000</pubDate>
		<dc:creator>Casey</dc:creator>
				<category><![CDATA[Politics & Controversy]]></category>
		<category><![CDATA[business model]]></category>
		<category><![CDATA[loss leader]]></category>
		<category><![CDATA[mainstream media]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[newspapers]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/?p=13995</guid>
		<description><![CDATA[
Howard Weaver wants newspapers to play offense against Google and others, but Chris Tolles, CEO of news aggregator Topix.com says he&#8217;s been trying Weaver&#8217;s plan for a while, and there&#8217;s no bucket of gold to be found in it.
The problem, it would appear, is that newspapers don&#8217;t sell news. They sell advertising space and pair [...]]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="maisonbisson-13995"><!-- &nbsp; --></abbr>
<p><a title="Welcome to WeaverWeb" href="http://howard.weaver.org/">Howard Weaver</a> wants <a title="Etaoin Shrdlu: Time for news to play offense: how David can attack Goliath (and win)" href="http://editor.blogspot.com/2009/07/time-for-news-to-play-offense-how-david.html">newspapers to play offense against Google and others</a>, but <a title="Chris Tolles - LinkedIn" href="http://www.linkedin.com/in/tolles">Chris Tolles</a>, CEO of news aggregator <a href="http://www.topix.com/">Topix.com</a> says <a title="Topix.net Weblog: News Flash: The Bad Guys Win" href="http://blog.topix.com/archives/000238.html">he&#8217;s been trying Weaver&#8217;s plan for a while, and there&#8217;s no bucket of gold to be found in it</a>.</p>
<p>The problem, it would appear, is that newspapers don&#8217;t sell news. They sell advertising space and pair it with news as a loss leader to keep the eyeballs. And while that worked in print, it doesn&#8217;t work on the web. Web users don&#8217;t click on ads on news sites (perhaps for the same reasons <a href="http://savageminds.org/2009/05/14/can-social-networking-sites-make-money/">they don&#8217;t click ads on social network sites</a>).</p>
<p>Yes. The news in a newspaper was a <a href="http://en.wikipedia.org/wiki/Loss_leader">loss leader</a>, though it&#8217;ll probably make you feel better to think of the sports and entertainment that way. <a href="http://books.google.com/books?id=8EUtP_lvCqIC&amp;pg=PA142&amp;lpg=PA142&amp;dq=%22television+overtook+newspapers%22&amp;source=bl&amp;ots=DsjeeYn1ho&amp;sig=o8JEzuDtfFhy3XknNvuZrSuuFCQ&amp;hl=en&amp;ei=zb5jSrrTAZCMtgfm6q2yAg&amp;sa=X&amp;oi=book_result&amp;ct=result&amp;resnum=1">Television overtook newspapers</a> as the primary news source in the 1970s. And in 2008, <a title="Internet Overtakes Newspapers As News Outlet: Summary of Findings - Pew Research Center for the People &amp; the Press" href="http://people-press.org/report/479/internet-overtakes-newspapers-as-news-source">newspapers fell behind internet sources</a>. The economics of it now are that news printed on bad paper are less of a loss <em>leader</em> and more simply just a loss. (It&#8217;s hard to know if the <a title="Topix.net Weblog: Keep Cutting: Online Hard Going for Newspapers" href="http://blog.topix.com/archives/000236.html">poor performance of newspaper websites</a> is a result of this or if it reflects other failings.)</p>
<p>Those worried about what will happen to the <a title="Public sphere - Wikipedia, the free encyclopedia" href="http://en.wikipedia.org/wiki/Public_sphere">public sphere</a> after the death of newspapers should take a look at <a title="Television vs. Newspaper Front Pages | Project for Excellence in Journalism (PEJ)" href="http://www.journalism.org/node/880">this 2004 study comparing television vs. newspaper front pages</a>: newspapers had twice as many lifestyle and crime stories as the evening TV news. The public sphere has long needed better nourishment.</p>
<p><a title="Social Media News and Web Tips – Mashable – The Social Media Guide" href="http://mashable.com/">Mashable</a>&#8217;s <a title="Josh Catone - LinkedIn" href="http://www.linkedin.com/in/catone">Josh Catone</a> thinks <a title="Why NPR is the Future of Mainstream Media" href="http://mashable.com/2009/06/03/npr/">NPR is the future of mainstream media</a>. Their audience is way up, and it&#8217;s a well proven example of the <a title="Is Crowdfunding the Future of Journalism?" href="http://mashable.com/2009/07/16/crowdfunded-news/">crowdfunding model</a>. <a title="New Hampshire Public Radio" href="http://nhpr.org/">My local affiliate</a> provides some of the best local news around.</p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/blog/post/13995/newspaper-business-news-was-a-loss-leader/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Do Air Taxis Actually Work?</title>
		<link>http://maisonbisson.com/blog/post/13981/do-air-taxis-actually-work/</link>
		<comments>http://maisonbisson.com/blog/post/13981/do-air-taxis-actually-work/#comments</comments>
		<pubDate>Mon, 13 Jul 2009 15:04:22 +0000</pubDate>
		<dc:creator>Casey</dc:creator>
				<category><![CDATA[Planes, Trains, & Automobiles]]></category>
		<category><![CDATA[Travel]]></category>
		<category><![CDATA[air taxi]]></category>
		<category><![CDATA[air taxis]]></category>
		<category><![CDATA[DayJet]]></category>
		<category><![CDATA[Eclipse 500]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/?p=13981</guid>
		<description><![CDATA[
I just thought to follow up on this 2007 story about DayJet, a high-flying air taxi service that planned to operate tiny, three-passenger Eclipse 500 jets. The story doesn&#8217;t deviate from economic trends: DayJet ceased operations in September 2008, and the aircraft manufacturer entered Chapter 7 in February 2009.
The Air Taxi Association says their operators [...]]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="maisonbisson-13981"><!-- &nbsp; --></abbr>
<p>I just thought to follow up on <a title="Tech twosome takes air taxis to the skies - April 1, 2007" href="http://money.cnn.com/magazines/business2/business2_archive/2007/04/01/8403369/index.htm?postversion=2007032807">this 2007 story</a> about <a href="http://dayjet.com/">DayJet</a>, a high-flying air taxi service that planned to operate tiny, three-passenger <a title="Eclipse Aviation" href="http://www.eclipseaviation.com/eclipse500/">Eclipse 500 jets</a>. The story doesn&#8217;t deviate from economic trends: DayJet <a title="DayJet - Wikipedia, the free encyclopedia" href="http://en.wikipedia.org/wiki/DayJet">ceased operations</a> in September 2008, and the aircraft manufacturer <a title="Eclipse Aviation - Wikipedia, the free encyclopedia" href="http://en.wikipedia.org/wiki/EclipseJet_Aviation_International">entered Chapter 7 in February 2009</a>.</p>
<p>The <a title="First Flight Program - Air Taxi Association (ATXA)" href="http://www.atxa.com/?FirstFlightProgram1">Air Taxi Association</a> says their operators save big money over scheduled airline service, but finding the price of that service can be hard.</p>
<p>Aside from DayJet&#8217;s inventory of planes, the company has a lot of transportation research and service algorithms that may stand as assets. The research includes a “Sim City on steroids” that models “the entire U.S. transportation system. They&#8217;ve mapped travel patterns into 10-square-mile blocks, complete with income levels, demographics, historical driving patterns, airport drive times, and airline schedules and fares.” Further, they&#8217;ve developed an algorithm that supposedly could manage the resource allocation issues and estimate the cost for passengers trying to hail such a taxi.</p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/blog/post/13981/do-air-taxis-actually-work/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Get The Zimbra iSync Connector</title>
		<link>http://maisonbisson.com/blog/post/13982/zimbra-isync-connector-download/</link>
		<comments>http://maisonbisson.com/blog/post/13982/zimbra-isync-connector-download/#comments</comments>
		<pubDate>Thu, 11 Jun 2009 14:36:07 +0000</pubDate>
		<dc:creator>Casey</dc:creator>
				<category><![CDATA[Dispatches]]></category>
		<category><![CDATA[connector]]></category>
		<category><![CDATA[download]]></category>
		<category><![CDATA[iSync]]></category>
		<category><![CDATA[zimbra]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/?p=13982</guid>
		<description><![CDATA[
It can be difficult to get the Zimbra iSync connector, as the company doesn&#8217;t offer a simple download from their site. Fortunately, the license allows us to freely redistribute their software.
Download the Zimbra iSync Connector here.
]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="maisonbisson-13982"><!-- &nbsp; --></abbr>
<p>It can be <a title="macosxhints.com - How to get the Zimbra iSync connector" href="http://www.macosxhints.com/article.php?story=20080527135355954">difficult to get</a> the <a href="http://developer.apple.com/business/macmarket/zimbra.html">Zimbra iSync connector</a>, as <a href="http://www.zimbra.com/">the company</a> doesn&#8217;t offer a simple download from their site. Fortunately, <a title="Zimbra - Zimbra Public End-User License Agreement, Version 2.2" href="http://www.zimbra.com/license/zimbra_public_eula_2.2.html">the license</a> allows us to freely redistribute their software.</p>
<p><a href="http://maisonbisson.com/files/2009/06/zimbra-isync-5016_ga_2880macosx_ub.dmg">Download the Zimbra iSync Connector here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/blog/post/13982/zimbra-isync-connector-download/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Systems Wrangling Session At WordCamp Developer Day</title>
		<link>http://maisonbisson.com/blog/post/13938/systems-wrangling-session-at-wordcamp-developer-day/</link>
		<comments>http://maisonbisson.com/blog/post/13938/systems-wrangling-session-at-wordcamp-developer-day/#comments</comments>
		<pubDate>Sun, 31 May 2009 21:13:21 +0000</pubDate>
		<dc:creator>Casey</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[optimization]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[systems]]></category>
		<category><![CDATA[WordCamp]]></category>
		<category><![CDATA[WordCamp 2009]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/?p=13938</guid>
		<description><![CDATA[
What is the current status of web servers&#8230;Is Apache 2.x “fast enough?”
Automattic uses Lightspeed (for PHP), nginx (for static content), and Apache (for media uploads). For WordPress-generated content, all server options are approximately the same speed.
What about APC?
Automattic uses beta versions of APC, and provides a 3-5x performance increase. It&#8217;s tied closely to the PHP [...]]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="maisonbisson-13938"><!-- &nbsp; --></abbr>
<p><a title="Ask your questions here « Server Q&amp;A — WordCamp Dev Day" href="http://serverqa.wordpress.com/2009/05/31/ask-your-questions-here/#comment-2">What is the current status of web servers&#8230;Is Apache 2.x “fast enough?”</a><br />
Automattic uses Lightspeed (for PHP), nginx (for static content), and Apache (for media uploads). For WordPress-generated content, all server options are approximately the same speed.</p>
<p><a title="Ask your questions here « Server Q&amp;A — WordCamp Dev Day" href="http://serverqa.wordpress.com/2009/05/31/ask-your-questions-here/#comment-3">What about APC?</a><br />
Automattic uses beta versions of APC, and provides a 3-5x performance increase. It&#8217;s tied closely to the PHP version, so Automattic recently switched from PHP 4 to PHP 5.</p>
<p><a title="Ask your questions here « Server Q&amp;A — WordCamp Dev Day" href="http://serverqa.wordpress.com/2009/05/31/ask-your-questions-here/#comment-4">Databases?</a><br />
MySQL scales well and is easy enough to use that there&#8217;s little reason to consider other DBs for WordPress content. Other applications may have different needs. Note: <a title="How FriendFeed uses MySQL to store schema-less data - Bret Taylor's blog" href="http://bret.appspot.com/entry/how-friendfeed-uses-mysql">FriendFeed uses MySQL to store schema-less data</a>. Single-table key lookups in MySQL are faster than getting the data from Memcached.</p>
<p><a title="Ask your questions here « Server Q&amp;A — WordCamp Dev Day" href="http://serverqa.wordpress.com/2009/05/31/ask-your-questions-here/#comment-7">Caching?</a><br />
Automattic uses <a title="WordPress › Batcache « WordPress Plugins" href="http://wordpress.org/extend/plugins/batcache/">Batcache</a> for full-page caching (.002 to .003 second), <a title="Revision 121652: /memcached" href="http://svn.wp-plugins.org/memcached/">Memcached</a> persistent object cache, very limited MySQL query cache (never larger than 256MB), sufficiently large key buffer.</p>
<p><a title="Ask your questions here « Server Q&amp;A — WordCamp Dev Day" href="http://serverqa.wordpress.com/2009/05/31/ask-your-questions-here/#comment-14">HyperDB?</a><br />
<a title="WordPress › HyperDB « WordPress Plugins" href="http://wordpress.org/extend/plugins/hyperdb/">HyperDB</a> solves DB scaling problems.</p>
<p><a title="Ask your questions here « Server Q&amp;A — WordCamp Dev Day" href="http://serverqa.wordpress.com/2009/05/31/ask-your-questions-here/#comment-25">Backups</a><br />
User-data backed up every hour, if something changed. Every blog backed up every 12 hours. Dedicated MySQL slaves do LVM snapshots for backups.</p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/blog/post/13938/systems-wrangling-session-at-wordcamp-developer-day/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Andy Peatling on BuddyPress</title>
		<link>http://maisonbisson.com/blog/post/13931/andy-peatling-on-buddypress/</link>
		<comments>http://maisonbisson.com/blog/post/13931/andy-peatling-on-buddypress/#comments</comments>
		<pubDate>Sun, 31 May 2009 15:25:36 +0000</pubDate>
		<dc:creator>Casey</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[BuddyPress]]></category>
		<category><![CDATA[social software]]></category>
		<category><![CDATA[WordCamp]]></category>
		<category><![CDATA[WordCamp 2009]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/?p=13931</guid>
		<description><![CDATA[
Why BuddyPress? “Build passionate users around a specific niche.”
Do you have to become a social network? “No, look at GigaOM Pro,” a recently launched subscription research site based on BuddyPress.
But, yo do get “BYOTOS: bring your own terms of service.” That is, you get to control content and interactions. And your service won&#8217;t be subject [...]]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="maisonbisson-13931"><!-- &nbsp; --></abbr>
<p>Why <a title="BuddyPress.org - A WordPress MU Based Social Network Platform" href="http://buddypress.org/">BuddyPress</a>? “Build passionate users around a specific niche.”</p>
<p>Do you have to become a social network? “No, look at <a title="GigaOM Pro" href="http://pro.gigaom.com/">GigaOM Pro</a>,” a <a title="GigaOM Pro launches on WordPress and BuddyPress « Mark on WordPress" href="http://markjaquith.wordpress.com/2009/05/28/gigaom-pro-launches-on-wordpress-and-buddypress/">recently launched</a> subscription research site based on BuddyPress.</p>
<p>But, yo do get “BYOTOS: bring your own terms of service.” That is, you get to control content and interactions. And your service won&#8217;t be subject to the whims of a larger network like FaceBook (or vagaries of their service &#8212; <a title="What really happened at Ma.gnolia and lessons learned | FactoryCity" href="http://factoryjoe.com/blog/2009/02/16/what-really-happened-at-magnolia-and-lessons-learned/">think Ma.gnolia</a>)</p>
<p>It&#8217;s pretty easy, Andy says, to <a href="http://codex.buddypress.org/how-to-guides/creating-a-custom-buddypress-component/">create a custom BuddyPress component</a>, and there are already a number at the <a title="BuddyPressDEV Community" href="http://bp-dev.org/">BuddyPressDEV Community</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/blog/post/13931/andy-peatling-on-buddypress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress 2.8 Script Handling</title>
		<link>http://maisonbisson.com/blog/post/13929/wordpress-28-script-handling/</link>
		<comments>http://maisonbisson.com/blog/post/13929/wordpress-28-script-handling/#comments</comments>
		<pubDate>Sun, 31 May 2009 15:16:36 +0000</pubDate>
		<dc:creator>Casey</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[WordPress 2.8]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/?p=13929</guid>
		<description><![CDATA[
jQuery 1.3.2 is in WordPress 2.8, but the most exciting changes are in the automatic concatenation and compression of scripts via the script loader.
Andrew Ozz says “This feature can easily be extended to include scripts added by plugins and to use server side caching, however that would require some changes to the server settings (.htaccess [...]]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="maisonbisson-13929"><!-- &nbsp; --></abbr>
<p><a title="/trunk/wp-includes/js/jquery/jquery.js – WordPress Trac" href="http://core.trac.wordpress.org/browser/trunk/wp-includes/js/jquery/jquery.js">jQuery 1.3.2 is in</a> <a href="http://codex.wordpress.org/Version_2.8">WordPress 2.8</a>, but the most exciting changes are in the automatic concatenation and compression of scripts <a title="Script loader updates « WordPress Development Updates" href="http://wpdevel.wordpress.com/2009/02/06/script-loader-updates/">via the script loader</a>.</p>
<p>Andrew Ozz says “This feature can easily be extended to include scripts added by plugins and to use server side caching, however that would require some changes to the server settings (.htaccess on Apache).”</p>
<p>I have yet to figure out how to extend that feature to scripts in my plugins, but I&#8217;m working on it.</p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/blog/post/13929/wordpress-28-script-handling/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google&#8217;s Matt Cutts On Building Better Sites With WordPress</title>
		<link>http://maisonbisson.com/blog/post/13920/wordpress-seo-tips-from-google-matt-cutts/</link>
		<comments>http://maisonbisson.com/blog/post/13920/wordpress-seo-tips-from-google-matt-cutts/#comments</comments>
		<pubDate>Sat, 30 May 2009 18:02:51 +0000</pubDate>
		<dc:creator>Casey</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Matt Cutts]]></category>
		<category><![CDATA[seo]]></category>
		<category><![CDATA[WordCamp]]></category>
		<category><![CDATA[WordCamp 2009]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/?p=13920</guid>
		<description><![CDATA[
90% of WordPress blogs he sees are spam. But for those who aren&#8217;t spammers and want to do better in Google&#8230;.
“WordPress automatically solves a ton of SEO issues&#8230;WordPress takes care of 80-90% of SEO.”
Still, he recommends a few extra plugins:

Akismet &#8212; reduce spam comments
Cookies for Comments &#8212; reduce spam comments
FeedBurner FeedSmith
WP Super Cache &#8212; improve [...]]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="maisonbisson-13920"><!-- &nbsp; --></abbr>
<p>90% of WordPress blogs he sees are spam. But for those who aren&#8217;t spammers and want to do better in Google&#8230;.</p>
<p>“WordPress automatically solves a ton of SEO issues&#8230;WordPress takes care of 80-90% of SEO.”</p>
<p>Still, he recommends a few extra plugins:</p>
<ul>
<li>Akismet &#8212; reduce spam comments</li>
<li>Cookies for Comments &#8212; reduce spam comments</li>
<li>FeedBurner FeedSmith</li>
<li>WP Super Cache &#8212; improve performance</li>
</ul>
<p>“We crawl roughly in order of PageRank&#8230;higher ranked sites get crawled faster and deeper.”</p>
<p>“What is PageRank? The number and importance of links pointing to you.” But “avoid BO (backlink obsession). You want to be relevant and reputable.”</p>
<p>Relevant is what you say on your page/site.</p>
<p>Reputable is what others say (link) about you.</p>
<p>Be relevant: Blog about what you love. Blog about what you&#8217;re really good at doing (or, I suppose, what you want to be really good at). Blog in your own voice. Write often, write every day.</p>
<p>Think about the keywords that users will type. Include them naturally in your posts</p>
<p>Avoid jargon mismatch. Be sure to include language that non-expert users may use to find information. Include relevant information for beginners on the front page. Try <a title="Google AdWords: Keyword Tool" href="https://adwords.google.com/select/KeywordToolExternal">Google Keyword Tool</a> to understand what people are searching for.</p>
<p>Recommends /%postname%/ permalinks. And use slightly different terms in the permalink and title. Other URL tips:</p>
<ul>
<li>Use categories that are also good keywords</li>
<li>keywords in URL paths
<ul>
<li>dashes best</li>
<li>next best is underscores</li>
<li>no spaces is worst</li>
</ul>
</li>
<li>Should I change old URLs? No.</li>
</ul>
<p>Ferris&#8217;s law: don&#8217;t do it if it&#8217;s not fun.</p>
<p>Gaining Reputation?</p>
<ul>
<li>Be interesting</li>
<li>Update often</li>
<li>Apply Katamari Philosophy &#8212; start small, build up, don&#8217;t over reach. Start in a niche, then “ambigining” that niche.</li>
</ul>
<p>Build an audience:</p>
<ul>
<li>Provide a useful service</li>
<li>Do original research or reporting</li>
<li>Give great information</li>
<li>Creative niche</li>
<li>Write some code</li>
<li>Live blogging</li>
<li>Make lists</li>
<li>Create controversy</li>
<li>Meet folks on Twitter, Facebook, etc</li>
<li>Make a video</li>
</ul>
<p>Consider using:</p>
<ul>
<li>Google website optimizer (a/b testing)</li>
<li>&lt;!&#8211; google_ad_section_start &#8211;&gt; and &lt;!&#8211; google_ad_section_end &#8211;&gt;</li>
</ul>
<p>In your content:</p>
<ul>
<li>Identify and leverage “evergreen” content</li>
<li>Show related content</li>
<li>Avoid shortcuts and scams</li>
<li>Avoid paid posts</li>
</ul>
<p>Keep your WordPress updated! Don&#8217;t let spammers hack your site.</p>
<p>LifeHacker: productivity porn, read about it more than you do it</p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/blog/post/13920/wordpress-seo-tips-from-google-matt-cutts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iPhone 3G Camera Hacks And Deets</title>
		<link>http://maisonbisson.com/blog/post/13875/iphone-3g-camera-hacks-and-deets/</link>
		<comments>http://maisonbisson.com/blog/post/13875/iphone-3g-camera-hacks-and-deets/#comments</comments>
		<pubDate>Thu, 14 May 2009 15:57:50 +0000</pubDate>
		<dc:creator>Casey</dc:creator>
				<category><![CDATA[Photoblog]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[camera]]></category>
		<category><![CDATA[close focus]]></category>
		<category><![CDATA[close up lens]]></category>
		<category><![CDATA[details]]></category>
		<category><![CDATA[focal length]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[iphone]]></category>

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

Those unwilling to open of their iPhone to adjust the camera focus might take a look at Griffin&#8217;s Clarifi, a case with a built-in close-up lens that can slide in our out of place as needed.
Flickr user Meine Ideenecke, meanwhile, has figured out the iPhone camera specifications. He says it&#8217;s about 37MM (35MM equivalent), though [...]]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="maisonbisson-13875"><!-- &nbsp; --></abbr>
<p><a title="iPhone main backside by pmquan, on Flickr" href="http://www.flickr.com/photos/pmquan/1276621841/"><img src="http://farm2.static.flickr.com/1097/1276621841_78088f8663.jpg" alt="iPhone main backside" width="500" height="375" /></a></p>
<p>Those unwilling to <a title="eastrain design » Blog Archive » Want to close-focus your iPhone 3G?" href="http://www.eastrain.com/?p=73">open of their iPhone to adjust the camera focus</a> might take a look at <a title="Griffin Technology: Clarifi - Protective case with built-in close-up lens for iPhone 3G" href="http://www.griffintechnology.com/products/clarifi">Griffin&#8217;s Clarifi</a>, a case with a built-in close-up lens that can slide in our out of place as needed.</p>
<p>Flickr user <a title="Flickr: goocy's Photostream" href="http://www.flickr.com/photos/goocy/">Meine Ideenecke</a>, meanwhile, has figured out the <a title="Die Ideenecke: iPhone camera specifications" href="http://ideenecke.blogspot.com/2009/04/iphone-camera.html">iPhone camera specifications</a>. He says it&#8217;s about 37MM (35MM equivalent), <a href="http://forums.macrumors.com/showthread.php?t=576014">though this source says it&#8217;s 27MM</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/blog/post/13875/iphone-3g-camera-hacks-and-deets/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Street View Camera Sightings</title>
		<link>http://maisonbisson.com/blog/post/13723/google-street-view-camera-sightings/</link>
		<comments>http://maisonbisson.com/blog/post/13723/google-street-view-camera-sightings/#comments</comments>
		<pubDate>Wed, 13 May 2009 15:20:46 +0000</pubDate>
		<dc:creator>Casey</dc:creator>
				<category><![CDATA[Dispatches]]></category>
		<category><![CDATA[funny]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[sightings]]></category>
		<category><![CDATA[street view]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/?p=13723</guid>
		<description><![CDATA[
What happens when one of Google&#8217;s street view camera vehicles encounters a low bridge or a muddy Australian road?
]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="maisonbisson-13723"><!-- &nbsp; --></abbr>
<p>What happens when one of <a href="http://en.wikipedia.org/wiki/File:GoogleStreetViewCar.jpg">Google&#8217;s street view camera vehicles</a> encounters a <a title="Google Street View camera + low bridge = uh-oh | Webware - CNET" href="http://news.cnet.com/google-street-view-camera-low-bridge-uh-oh/?part=rss&amp;tag=feed&amp;subj=Webware">low bridge</a> or a <a title="Street View Comes Unstuck - Google Sightseeing" href="http://googlesightseeing.com/2009/04/08/street-view-comes-unstuck/">muddy Australian road</a>?</p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/blog/post/13723/google-street-view-camera-sightings/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Comparing Panorama Stitching Tools</title>
		<link>http://maisonbisson.com/blog/post/13876/comparing-panorama-stitching-tools/</link>
		<comments>http://maisonbisson.com/blog/post/13876/comparing-panorama-stitching-tools/#comments</comments>
		<pubDate>Tue, 12 May 2009 17:32:11 +0000</pubDate>
		<dc:creator>Casey</dc:creator>
				<category><![CDATA[Photoblog]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Calico]]></category>
		<category><![CDATA[comparison]]></category>
		<category><![CDATA[Hugin]]></category>
		<category><![CDATA[PanoLab]]></category>
		<category><![CDATA[panorama]]></category>
		<category><![CDATA[stitching]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/?p=13876</guid>
		<description><![CDATA[
 
 
The above are the result of PanoLab, Hugin, Calico, and a single shot with a very wide angle lens (Canon&#8217;s 10-22mm, effectively 16mm on my Rebel XTi). The first three originated on my iPhone and the PanoLab shot was stitched and originally uploaded to Flickr on my iPhone (though I have since done [...]]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="maisonbisson-13876"><!-- &nbsp; --></abbr>
<p><a title="Puma City, south elevation, PanoLab stitched by misterbisson, on Flickr" href="http://www.flickr.com/photos/maisonbisson/3474310969/"><img src="http://farm4.static.flickr.com/3338/3474310969_f133f6f64e_m.jpg" alt="Puma City, south elevation, PanoLab stitched" width="240" height="135" /></a> <a title="puma city, south elevation, hugin stitched by misterbisson, on Flickr" href="http://www.flickr.com/photos/maisonbisson/3475983953/"><img src="http://farm4.static.flickr.com/3623/3475983953_65a0aa4a3c_m.jpg" alt="puma city, south elevation, hugin stitched" width="240" height="138" /></a><br />
<a title="puma city, south elevation, calico stitched by misterbisson, on Flickr" href="http://www.flickr.com/photos/maisonbisson/3475986061/"><img src="http://farm4.static.flickr.com/3365/3475986061_ff1dc39252_m.jpg" alt="puma city, south elevation, calico stitched" width="240" height="122" /></a> <a title="Puma City, south elevation, single shot with 16MM lens by misterbisson, on Flickr" href="http://www.flickr.com/photos/maisonbisson/3476829282/"><img src="http://farm4.static.flickr.com/3310/3476829282_552813d2a2_m.jpg" alt="Puma City, south elevation, single shot with 16MM lens" width="240" height="160" /></a></p>
<p>The above are the result of <a href="http://click.linksynergy.com/fs-bin/stat?id=XfFSogqWv7s&amp;offerid=146261&amp;type=3&amp;subid=0&amp;tmpid=1826&amp;RD_PARM1=http%253A%252F%252Fitunes.apple.com%252FWebObjects%252FMZStore.woa%252Fwa%252FviewSoftware%253Fid%253D294770811%2526mt%253D8%2526partnerId%253D30">PanoLab</a>, <a href="http://hugin.sourceforge.net/">Hugin</a>, <a href="http://www.kekus.com/">Calico</a>, and a single shot with a very wide angle lens (<a href="http://www.amazon.com/Canon-EF-S-10-22mm-3-5-4-5-Digital/dp/B0002Y5WXE/?tag=maisonbisson-20">Canon&#8217;s 10-22mm</a>, effectively 16mm on my <a href="http://www.amazon.com/Canon-Digital-10-1MP-Camera-Body/dp/B000I1ZWRW/?tag=maisonbisson-20">Rebel XTi</a>). The first three originated on my iPhone and the PanoLab shot was stitched and originally uploaded to Flickr on my iPhone (though I have since done some color enhancement and reuploaded the photo from my MacBook Pro). <a href="http://hugin.svn.sourceforge.net/viewvc/hugin/hugin/trunk/LICENCE?view=markup">Hugin is GPL</a>, the other solutions are less free (in both senses).</p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/blog/post/13876/comparing-panorama-stitching-tools/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Difference Between MySQL&#8217;s utf8_unicode_ci and. utf8_general_ci Collations</title>
		<link>http://maisonbisson.com/blog/post/13859/the-difference-between-mysqls-utf8_unicode_ci-and-utf8_general_ci-collations/</link>
		<comments>http://maisonbisson.com/blog/post/13859/the-difference-between-mysqls-utf8_unicode_ci-and-utf8_general_ci-collations/#comments</comments>
		<pubDate>Mon, 11 May 2009 14:30:57 +0000</pubDate>
		<dc:creator>Casey</dc:creator>
				<category><![CDATA[Dispatches]]></category>
		<category><![CDATA[collation]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[utf8]]></category>
		<category><![CDATA[utf8_general_ci]]></category>
		<category><![CDATA[utf8_unicode_ci]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/?p=13859</guid>
		<description><![CDATA[
MySQL answer: utf8_unicode_ci vs. utf8_general_ci.
Collation controls sorting behavior. Unicode rationalizes the character set, but doesn&#8217;t, on it&#8217;s own, rationalize sorting behavior for all the various languages it supports. utf8_general_ci (ci = case insensitive) is apparently a bit faster, but sloppier, and only appropriate for English language data sets.
]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="maisonbisson-13859"><!-- &nbsp; --></abbr>
<p>MySQL answer: <a title="Posteet: utf8_unicode_ci vs utf8_general_ci [charset] [collation] [interclassement] [mysql] [unicode] [utf8]" href="http://www.posteet.com/view/1340"><code>utf8_unicode_ci</code> vs. <code>utf8_general_ci</code></a>.</p>
<p><a title="Collation - Wikipedia, the free encyclopedia" href="http://en.wikipedia.org/wiki/Collation">Collation</a> controls sorting behavior. Unicode rationalizes the character set, but doesn&#8217;t, on it&#8217;s own, rationalize sorting behavior for all the various languages it supports. <code>utf8_general_ci</code> (ci = case insensitive) is apparently a bit faster, but sloppier, and only appropriate for English language data sets.</p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/blog/post/13859/the-difference-between-mysqls-utf8_unicode_ci-and-utf8_general_ci-collations/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Many Uses Of A PocketTorch</title>
		<link>http://maisonbisson.com/blog/post/13872/the-many-uses-of-a-pockettorch/</link>
		<comments>http://maisonbisson.com/blog/post/13872/the-many-uses-of-a-pockettorch/#comments</comments>
		<pubDate>Sat, 09 May 2009 18:02:19 +0000</pubDate>
		<dc:creator>Casey</dc:creator>
				<category><![CDATA[Questionable...funny. Pointless.]]></category>
		<category><![CDATA[melt a penny]]></category>
		<category><![CDATA[pocket torch]]></category>
		<category><![CDATA[PocketTorch]]></category>
		<category><![CDATA[torch]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/?p=13872</guid>
		<description><![CDATA[
Doesn&#8217;t everybody need a PocketTorch? It&#8217;s a “safe, practical tool,” they say. More amusingly, the list of suggested uses includes: melting your cache of gold, scaring grandma, lighting illegal fireworks, dental/lab work, and making friends jealous.
]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="maisonbisson-13872"><!-- &nbsp; --></abbr>
<a href="http://maisonbisson.com/blog/post/13872/the-many-uses-of-a-pockettorch/"><p><em>Click here to view the embedded video.</em></p></a>
<p>Doesn&#8217;t everybody need a <a title="PocketTorch" href="http://www.thepockettorch.com/">PocketTorch</a>? It&#8217;s a “safe, practical tool,” they say. More amusingly, the list of suggested uses includes: melting your cache of gold, scaring grandma, lighting illegal fireworks, dental/lab work, and making friends jealous.</p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/blog/post/13872/the-many-uses-of-a-pockettorch/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fun Threads For Librarians</title>
		<link>http://maisonbisson.com/blog/post/13847/fun-threads-for-librarians/</link>
		<comments>http://maisonbisson.com/blog/post/13847/fun-threads-for-librarians/#comments</comments>
		<pubDate>Wed, 06 May 2009 17:41:23 +0000</pubDate>
		<dc:creator>Casey</dc:creator>
				<category><![CDATA[Dispatches]]></category>
		<category><![CDATA[Libraries & Networked Information]]></category>
		<category><![CDATA[anarchist]]></category>
		<category><![CDATA[anarchist librarian]]></category>
		<category><![CDATA[bibliophibian]]></category>
		<category><![CDATA[hoodie]]></category>
		<category><![CDATA[lib20]]></category>
		<category><![CDATA[libraries]]></category>
		<category><![CDATA[library 2.0]]></category>
		<category><![CDATA[sweatshirt]]></category>

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


Who doesn&#8217;t want to be an anarchist librarian? Or a bibliophian?
]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="maisonbisson-13847"><!-- &nbsp; --></abbr>
<p><a href="http://www.topatoco.com/merchant.mvc?Screen=PROD&amp;Store_Code=TO&amp;Product_Code=CB-LIBRARIAN-HOOD&amp;Category_Code=WON"><img src="http://www.topatoco.com/graphics/00000001/cb-librarian-hood.gif" alt="LibrArian Hoodie" width="600" height="272" /></a></p>
<p><a href="http://www.topatoco.com/merchant.mvc?Screen=PROD&amp;Store_Code=TO&amp;Product_Code=WON-BIBLIOPHIBIAN&amp;Category_Code=WON"><img src="http://www.topatoco.com/graphics/00000001/won-biblio.gif" alt="Bibliophibian Shirt" width="600" height="277" /></a></p>
<p>Who doesn&#8217;t want to be an anarchist librarian? Or a bibliophian?</p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/blog/post/13847/fun-threads-for-librarians/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Photoshop Retouching Magic vs. Disasters</title>
		<link>http://maisonbisson.com/blog/post/13724/photoshop-retouching-magic-vs-disasters/</link>
		<comments>http://maisonbisson.com/blog/post/13724/photoshop-retouching-magic-vs-disasters/#comments</comments>
		<pubDate>Wed, 06 May 2009 15:29:15 +0000</pubDate>
		<dc:creator>Casey</dc:creator>
				<category><![CDATA[Dispatches]]></category>
		<category><![CDATA[disaster]]></category>
		<category><![CDATA[disasters]]></category>
		<category><![CDATA[photoshop]]></category>
		<category><![CDATA[photoshopped]]></category>
		<category><![CDATA[retouching]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/?p=13724</guid>
		<description><![CDATA[
Compare the retouching portfolio here against the regular posts at Photoshop Disasters.
]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="maisonbisson-13724"><!-- &nbsp; --></abbr>
<p>Compare the <a title="iWANEX STUDIO - Professional Photo Retouching Services" href="http://www.iwanexstudio.com/">retouching portfolio here</a> against the regular posts at <a title="PhotoshopDisasters" href="http://photoshopdisasters.blogspot.com/">Photoshop Disasters</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/blog/post/13724/photoshop-retouching-magic-vs-disasters/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What Is An Archive In The Digital Age?</title>
		<link>http://maisonbisson.com/blog/post/13870/what-is-an-archive-in-the-digital-age/</link>
		<comments>http://maisonbisson.com/blog/post/13870/what-is-an-archive-in-the-digital-age/#comments</comments>
		<pubDate>Mon, 04 May 2009 16:41:08 +0000</pubDate>
		<dc:creator>Casey</dc:creator>
				<category><![CDATA[Dispatches]]></category>
		<category><![CDATA[archive]]></category>
		<category><![CDATA[historical archive]]></category>
		<category><![CDATA[history]]></category>
		<category><![CDATA[libraries]]></category>
		<category><![CDATA[newspaper]]></category>
		<category><![CDATA[paperofrecord.com]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/?p=13870</guid>
		<description><![CDATA[
Jessamyn pointed out the dust up over the dissapearing of PaperOfRecord.com, a historical newspaper archive.
]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="maisonbisson-13870"><!-- &nbsp; --></abbr>
<p><a title="librarian.net » Blog Archive » finger pointing when digital archives disappear" href="http://www.librarian.net/stax/2790/finger-pointing-when-digital-archives-disappear/">Jessamyn pointed out</a> the <a title="News: Digital Archives That Disappear - Inside Higher Ed" href="http://www.insidehighered.com/news/2009/04/22/record">dust up</a> over the dissapearing of <a href="http://paperofrecord.com/">PaperOfRecord.com</a>, a historical newspaper archive.</p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/blog/post/13870/what-is-an-archive-in-the-digital-age/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How Much Do You Want That Job?</title>
		<link>http://maisonbisson.com/blog/post/13873/how-much-do-you-want-that-job/</link>
		<comments>http://maisonbisson.com/blog/post/13873/how-much-do-you-want-that-job/#comments</comments>
		<pubDate>Sat, 02 May 2009 20:11:02 +0000</pubDate>
		<dc:creator>Casey</dc:creator>
				<category><![CDATA[Dispatches]]></category>
		<category><![CDATA[funny]]></category>
		<category><![CDATA[job application]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/?p=13873</guid>
		<description><![CDATA[
One of the many odd questions this prank job application asks is: What Are You Willing To Wear  At Work? (Check All That Apply)

Paper Hat
Tie
Hairnet
Spandex
Singing Omelet Costume

]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="maisonbisson-13873"><!-- &nbsp; --></abbr>
<p><a href="http://maisonbisson.com/files/2009/04/funny-job-application.jpg"><img class="size-medium wp-image-13883 alignright" title="funny job application" src="http://maisonbisson.com/files/2009/04/funny-job-application-300x172.jpg" alt="funny job application" width="300" height="172" /></a>One of the many odd questions this <a title="http://cockeyed.com/pranks/job_application/job_Application_2pages.pdf" href="http://cockeyed.com/pranks/job_application/job_Application_2pages.pdf">prank job application</a> asks is: What Are You Willing To Wear  At Work? (Check All That Apply)</p>
<ul>
<li>Paper Hat</li>
<li>Tie</li>
<li>Hairnet</li>
<li>Spandex</li>
<li>Singing Omelet Costume</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/blog/post/13873/how-much-do-you-want-that-job/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress Action Ticketing API</title>
		<link>http://maisonbisson.com/blog/post/13862/wordpress-action-ticketing-api/</link>
		<comments>http://maisonbisson.com/blog/post/13862/wordpress-action-ticketing-api/#comments</comments>
		<pubDate>Thu, 30 Apr 2009 16:23:47 +0000</pubDate>
		<dc:creator>Casey</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[ticket]]></category>
		<category><![CDATA[ticketing]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/?p=13862</guid>
		<description><![CDATA[
This plugin is the next step after my proposal for a common invite API. Here&#8217;s how I described it when requesting hosting at the plugin directory:
A common framework for registering tickets that will be acted upon later. Use it to manage challenge/response interactions to confirm email addresses, phone numbers, IM screen names, Twitter accounts, etc. [...]]]></description>
			<content:encoded><![CDATA[<abbr class="unapi-id" title="maisonbisson-13862"><!-- &nbsp; --></abbr>
<p><a title="WordPress › wp-ticket-framework « WordPress Plugins" href="http://wordpress.org/extend/plugins/wp-ticket-framework/">This plugin</a> is the next step after my <a title="» Do We Need A WordPress Common Invite or Challenge-Response API? MaisonBisson.com" href="http://maisonbisson.com/blog/post/13744/do-we-need-a-wordpress-common-invite-or-challenge-response-api/">proposal for a common invite API</a>. Here&#8217;s how I described it when requesting hosting at the plugin directory:</p>
<blockquote><p>A common framework for registering tickets that will be acted upon later. Use it to manage challenge/response interactions to confirm email addresses, phone numbers, IM screen names, Twitter accounts, etc. Build an invite system around it, or use it as the foundation of a short URL system. It&#8217;s an extensible framework that takes cues from WordPress&#8217; cron and admin Ajax functions.</p>
<p>Tickets are unique 1-32 character strings associated with actions and some stored data. Upon receiving a ticket, the matching action is executed with the stored data as an argument. After receiving the action, a plugin can destroy the ticket (as for challenge/response actions), or or leave the ticket in place for repeated use (like redirecting to longer post permalinks for a short URL resolver).</p></blockquote>
<p>Here&#8217;s how it works:</p>
<p>Registering a ticket requires three things:</p>
<ul>
<li>The unique string that identifies the ticket</li>
<li>A string representing the action that will be executed when the ticket is called</li>
<li>Some data that will be passed to that action when the ticket is called</li>
</ul>
<p>And here it is in action:</p>
<pre class="brush: php;">$ticket = $wptix-&gt;register_ticket( 'action_name_string', $wptix-&gt;generate_md5(), array( 'data' =&gt; 'val', 'more_data' =&gt; 'another_val' ));</pre>
<p>To actually do anything with that ticket you&#8217;ll have to also register a function associated with the action name you gave when you registered it:</p>
<pre class="brush: php;">add_action( 'action_name_string', 'my_function_name' );</pre>
<p>WP Ticket Framework registers a URL base in the form of <code>http://site.net/do/any_ticket_string</code>, so you can call a ticket simply by visiting that URL, or you can call tickets within your code. The following demonstrates one method of handling ticket inputs as part of a larger form submission.</p>
<pre class="brush: php;">if( ( $ticket = $wptix-&gt;is_ticket( $_POST['phone_confirmation'] )) &amp;&amp; $ticket-&gt;arg['user_id'] == $current_user-&gt;ID ){
 $wptix-&gt;do_ticket( $_POST['phone_confirmation'] );
}else{
 $errors-&gt;add( 'user_phone', __( &quot;&lt;strong&gt;ERROR&lt;/strong&gt;: The confirmation code is invalid.&quot; ), array( 'form-field' =&gt; 'phone_confirmation' ) );
 return;
}</pre>
<p>Caveats:</p>
<ul>
<li>Tickets don&#8217;t have any built in expiration mechanism. You can, however, include an expiration time in data saved in the ticket and act on that accordingly.</li>
<li>Tickets don&#8217;t have any built in security mechanism. If only a certain user should be allowed to call a ticket, your code needs to be aware of that and enforce it.</li>
<li>Tickets are deleted after being called, though you can suppress that by calling <code>$wptix-&gt;clean_up_after( FALSE );</code>.</li>
<li>Tickets can only be queried by ticket string. If your application needs to keep track of open tickets for each user (as an example) it should also make a user meta entry about it.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/blog/post/13862/wordpress-action-ticketing-api/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>