<?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; Blog</title>
	<atom:link href="http://maisonbisson.com/blog/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>Sun, 09 Jun 2013 21:03:28 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Peeking into other people&#8217;s photo rigs</title>
		<link>http://maisonbisson.com/post/16944/peeking-into-other-peoples-photo-rigs/</link>
		<comments>http://maisonbisson.com/post/16944/peeking-into-other-peoples-photo-rigs/#comments</comments>
		<pubDate>Sun, 09 Jun 2013 21:03:28 +0000</pubDate>
		<dc:creator>Casey Bisson</dc:creator>
				<category><![CDATA[Photoblog]]></category>
		<category><![CDATA[kap]]></category>
		<category><![CDATA[kite aerial photography]]></category>
		<category><![CDATA[pap]]></category>
		<category><![CDATA[photography]]></category>
		<category><![CDATA[pole aerial photography]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/?p=16944</guid>
		<description><![CDATA[This all started because I went looking for a way to remote trigger a Panasonic Lumix LX 3. The internet is pretty certain that the only way to do it is mount a servo to mechanically press the shutter button. Sad. But that led me into Cris Benton&#8216;s world of photography from poles. Yes, he [...]]]></description>
				<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://maisonbisson.com/files/2013/06/4833201960_5219bc6be6_o.jpg" class="highslide-image" onclick="return hs.expand(this);"><img class="aligncenter  wp-image-16948" alt="4833201960_5219bc6be6_o" src="http://maisonbisson.com/files/2013/06/4833201960_5219bc6be6_o-1024x646.jpg" width="574" height="362" /></a></p>
<p>This all started because I went looking for a way to remote trigger a Panasonic Lumix LX 3. The internet is pretty certain that the only way to do it is <a href="http://www.flickr.com/photos/kap_cris/3154193529/ ">mount a servo to mechanically press the shutter button</a>. Sad.</p>
<p>But that led me into <a href="http://www.flickr.com/photos/kap_cris/">Cris Benton</a>&#8216;s world of <a href="http://www.flickr.com/search/?q=PAP+LX3&amp;w=26103250@N00&amp;s=int">photography from poles</a>. Yes, he <a href="http://www.flickr.com/photos/kap_cris/4832591047/">mounts his camera</a> at the end of a <a href="http://www.flickr.com/photos/kap_cris/3681959928/">carp fishing pole</a>&nbsp;(a noun so unknown to me I almost put it in quotes) to <a href="http://www.flickr.com/photos/26103250@N00/3213935710/">loft it up to 30&#8242; in the air</a>. <a href="http://www.flickr.com/photos/kap_cris/4833201960/">His pole rig</a> seems very well thought out. As for carp poles, they&#8217;re <a href="http://www.amazon.co.uk/Thompson-Gangster-Including-Extra-Fishing/dp/B0014FVYIC/?tag=maisonbisson-20">easy to find in the UK</a>, but <a href="http://www.amazon.com/s/?field-keywords=Ron+Thompson&amp;tag=maisonbisson-20">Amazon&#8217;s US store knows nothing of it</a>&nbsp;and I can&#8217;t find any US distributors.</p>
<p>Still, my searching did lead me to&nbsp;<a href="http://www.flickr.com/photos/tahitipix/">Pierre Lesage</a>, who&#8217;s also done his share of both <a href="http://www.flickr.com/photos/tahitipix/8951782139/">KAP</a> and <a href="http://www.flickr.com/photos/tahitipix/4260561917/">PAP</a> (<a href="http://www.flickr.com/photos/tahitipix/4257995927/">behind that scene</a>). <a href="http://www.flickr.com/photos/tahitipix/4067313806/">His KAP rig</a>&nbsp;has me realizing how many things I&#8217;ve been doing wrong. Simple additions to my kit would include decent gloves for easier handling of the line and a harness+carabiner to hold the kite and give my hands a break.</p>
<p style="text-align: center;"><a href="http://maisonbisson.com/files/2013/06/4067313806_43a9119758_o.jpg" class="highslide-image" onclick="return hs.expand(this);"><img class="aligncenter  wp-image-16949" alt="4067313806_43a9119758_o" src="http://maisonbisson.com/files/2013/06/4067313806_43a9119758_o-1024x710.jpg" width="655" height="454" /></a></p>
<p>More significant additions to my kit might include a proper camera mount (I hang my Go Pro like a pendulum now). <a href="http://www.kapshop.com">KAPshop</a> is a nicely organized UK distributor for all things KAP, BAP, and PAP, but many of their products come from <a href="http://www.brooxes.com/">Brooxes</a>, which <a href="http://www.brooxes.com/newsite/BBKK/KITS.html">sells kits</a>&nbsp;in $US with domestic shipping. Their SERVO-BEAK appears to be exactly what I need:</p>
<p><a href="http://maisonbisson.com/files/2013/06/servoBEAKf.jpg" class="highslide-image" onclick="return hs.expand(this);"><img class="aligncenter size-full wp-image-16954" alt="servoBEAKf" src="http://maisonbisson.com/files/2013/06/servoBEAKf.jpg" width="432" height="366" /></a></p>
<p>Extra: discussion of <a href="http://www.flickr.com/groups/843626@N22/discuss/72157611291607599/">infrared photography with an LX3</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/post/16944/peeking-into-other-peoples-photo-rigs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Speeding up MySQL joins on tables with TEXT columns, maybe</title>
		<link>http://maisonbisson.com/post/16930/speeding-up-mysql-joins/</link>
		<comments>http://maisonbisson.com/post/16930/speeding-up-mysql-joins/#comments</comments>
		<pubDate>Thu, 30 May 2013 01:50:57 +0000</pubDate>
		<dc:creator>Casey Bisson</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[high performance mysql]]></category>
		<category><![CDATA[High Performance WordPress]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[mysql optimization]]></category>
		<category><![CDATA[mysql performance]]></category>
		<category><![CDATA[wordpress performance]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/?p=16930</guid>
		<description><![CDATA[The thing about WordPress&#8217; DB schema is that TEXT and VARCHAR content is mixed in the posts table (to say nothing of the frustrations of DATETIME columns). That&#8217;s not such a problem for a blog with a few hundred posts, but it&#8217;s a different matter when you have a few hundred thousand posts. And it wouldn&#8217;t even [...]]]></description>
				<content:encoded><![CDATA[<p>The thing about <a href="http://codex.wordpress.org/Database_Description">WordPress&#8217; DB schema</a> is that TEXT and VARCHAR content is mixed in the <a href="http://codex.wordpress.org/Database_Description#Table:_wp_posts">posts table</a> (to say nothing of the frustrations of DATETIME columns). That&#8217;s not such a problem for a blog with a few hundred posts, but it&#8217;s a different matter when you have a few hundred thousand posts. And it wouldn&#8217;t even be a problem then, except for this quirk in <a href="http://dev.mysql.com/doc/refman/5.5/en/blob.html">MySQL</a>:</p>
<blockquote><p>Instances of <code>BLOB</code> or <code>TEXT</code> columns in the result of a query that is processed using a temporary table causes the server to use a table on disk rather than in memory because the <code>MEMORY</code> storage engine does not support those data types (see <a title="8.4.3.3. How MySQL Uses Internal Temporary Tables" href="http://dev.mysql.com/doc/refman/5.5/en/internal-temporary-tables.html">Section 8.4.3.3, “How MySQL Uses Internal Temporary Tables”</a>). Use of disk incurs a performance penalty, so include <code>BLOB</code> or <code>TEXT</code> columns in the query result only if they are really needed. For example, avoid using <a title="13.2.9. SELECT Syntax" href="http://dev.mysql.com/doc/refman/5.5/en/select.html"><code>SELECT *</code></a>, which selects all columns.</p></blockquote>
<p>Please note that this is not the same as <a href="http://www.mysqlperformanceblog.com/2009/03/05/what-does-using-filesort-mean-in-mysql/">using filesort</a>, there&#8217;s no setting for max memory or heap table size that will fix it, and it&#8217;s a frustration that grows with your tables. Simply put, if you do a join on a table with a TEXT column on it, you&#8217;re going to end up with a temporary table on disk along the way.</p>
<p>That&#8217;s when <a href="http://www.bigdbahead.com/?p=121">Matthew Yonkovit</a> points out what you might already be thinking:</p>
<blockquote><p>If your using lots of text fields, doing lots of sorting, group by’s, etc you may see a nice performance boost by pointing over your tmpdir to tmpfs.</p></blockquote>
<p>And at <a href="http://2bits.com/articles/reduce-your-servers-resource-usage-moving-mysql-temporary-directory-ram-disk.html">2bits</a> you&#8217;ll find graphical proof, &#8220;note how many slowqueries per second before and after the change:&#8221;</p>
<p><a href="http://maisonbisson.com/files/2013/05/mysql-ramdisk-mysql_slowqueries-day.png" class="highslide-image" onclick="return hs.expand(this);"><img class="aligncenter size-full wp-image-16931" alt="mysql-ramdisk-mysql_slowqueries-day" src="http://maisonbisson.com/files/2013/05/mysql-ramdisk-mysql_slowqueries-day.png" width="495" height="264" /></a></p>
<p>But in the <a href="http://dev.mysql.com/doc/refman/5.0/en/temporary-files.html">MySQL docs</a> I found:</p>
<blockquote><p>If the MySQL server is acting as a replication slave, you should not set &#8211;tmpdir to point to a directory on a memory-based file system or to a directory that is cleared when the server host restarts. A replication slave needs some of its temporary files to survive a machine restart so that it can replicate temporary tables or LOAD DATA INFILE operations. If files in the temporary file directory are lost when the server restarts, replication fails.</p></blockquote>
<p>And if I stopped there I&#8217;d feel lost, but then I found this from <a href="http://themattreid.com/wordpress/2011/04/04/mysql-and-ramdisk-or-how-to-make-tmpdir-usage-queries-faster/">Matt Reid</a>:</p>
<blockquote><p>there is an option for slaves to use their own tmpdir location. If you read the rest of the manual… <a href="http://dev.mysql.com/doc/refman/5.0/en/replication-options-slave.html#option_mysqld_slave-load-tmpdir">http://dev.mysql.com/doc/refman/5.0/en/replication-options-slave.html#option_mysqld_slave-load-tmpdir</a></p></blockquote>
<p>So does any of this work? I don&#8217;t know yet.</p>
<p>Whatever performance I do gain, it&#8217;ll likely just be a stop-gap. The real solution to the complex joins I&#8217;m doing (<a href="http://wordpress.org/plugins/scriblio/">this is why</a>, <a href="http://pro.gigaom.com/analysts/">here&#8217;s a small implementation</a>) will be to move them out of MySQL and into something like <a href="http://sphinxsearch.com">Sphinx</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/post/16930/speeding-up-mysql-joins/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What is the difference utf8_unicode_ci and utf8_general_ci?</title>
		<link>http://maisonbisson.com/post/16920/what-is-the-difference-utf8_unicode_ci-and-utf8_general_ci/</link>
		<comments>http://maisonbisson.com/post/16920/what-is-the-difference-utf8_unicode_ci-and-utf8_general_ci/#comments</comments>
		<pubDate>Sat, 23 Mar 2013 04:21:16 +0000</pubDate>
		<dc:creator>Casey Bisson</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[collation]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[unicode]]></category>
		<category><![CDATA[utf8]]></category>
		<category><![CDATA[utf8_general_ci]]></category>
		<category><![CDATA[utf8_unicode_ci]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/?p=16920</guid>
		<description><![CDATA[From the MySQL manual: For any Unicode character set, operations performed using the xxx_general_ci collation are faster than those for the xxx_unicode_ci collation. For example, comparisons for the utf8_general_ci collation are faster, but slightly less correct, than comparisons for utf8_unicode_ci. They have a amusing &#8220;examples of the effect of collation&#8221; set on &#8220;sorting German umlauts,&#8221; [...]]]></description>
				<content:encoded><![CDATA[<p>From <a href="http://dev.mysql.com/doc/refman/5.0/en/charset-unicode-sets.html">the MySQL manual</a>:</p>
<blockquote><p>For any Unicode character set, operations performed using the <code>xxx_general_ci</code> collation are faster than those for the <code>xxx_unicode_ci</code> collation. For example, comparisons for the <code>utf8_general_ci</code> collation are faster, but slightly less correct, than comparisons for <code>utf8_unicode_ci</code>.</p></blockquote>
<p>They have a amusing &#8220;<a href="http://dev.mysql.com/doc/refman/5.0/en/charset-collation-effect.html">examples of the effect of collation</a>&#8221; set on &#8220;sorting German umlauts,&#8221; but it unhelpfully uses <code>latin1_*</code> collations. And another table that helpfully explains:</p>
<blockquote><p>A difference between the collations is that this is true for utf8_general_ci:</p>
<p><code>ß = s</code></p>
<p>Whereas this is true for utf8_unicode_ci, which supports the German DIN-1 ordering (also known as dictionary order):</p>
<p><code>ß = ss</code></p></blockquote>
<p>This <a href="http://forums.mysql.com/read.php?103,187048,188748">forum post adds more info</a>, but nowhere do they explain how a &#9731; sorts against &#9729; or &#9925;.</p>
<p>How much faster is <code>utf8_general_ci</code> than <code>utf8_unicode_ci</code>, though? An August 2010 <a href="http://forums.mysql.com/read.php?103,381394,381615">message in the MySQL forums</a> seems to suggest the performance for specific operations could be 30% faster, but then dismisses the performance difference as unimportant compared to good indexing and writing efficient queries.</p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/post/16920/what-is-the-difference-utf8_unicode_ci-and-utf8_general_ci/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Canon + iOS tethering solutions</title>
		<link>http://maisonbisson.com/post/16905/canon-ios-tethering-solutions/</link>
		<comments>http://maisonbisson.com/post/16905/canon-ios-tethering-solutions/#comments</comments>
		<pubDate>Mon, 04 Mar 2013 00:09:15 +0000</pubDate>
		<dc:creator>Casey Bisson</dc:creator>
				<category><![CDATA[Photoblog]]></category>
		<category><![CDATA[camera control]]></category>
		<category><![CDATA[canon]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[tethering]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/?p=16905</guid>
		<description><![CDATA[There&#8217;s magic that happens inside the camera. Yes, magic. Most cameras expose the controls to that magic via some knobs and buttons and a small LCD screen. The knobs and other physical controls we like, but the screen pales in comparison to those on our iPhones. And that&#8217;s the thing, the hundreds of apps on [...]]]></description>
				<content:encoded><![CDATA[<p>There&#8217;s magic that happens inside the camera. Yes, magic. Most cameras expose the controls to that magic via some knobs and buttons and a small LCD screen. The knobs and other physical controls we like, but the screen pales in comparison to those on our iPhones. And that&#8217;s the thing, the hundreds of apps on our iPhones leaves us wondering why our DSLRs aren&#8217;t an open platform, ready to be reshaped by one app after another.</p>
<p>Studio shooters have long enjoyed <a href="http://www.apple.com/uk/pro/techniques/aperture/tethered.html">tethered shooting</a>, perhaps similar solutions for smartphones will open up our cameras to proper fiddling?</p>
<p>I <a href="http://maisonbisson.com/post/16416/usb-camera-control/">delved into this some time ago</a>, but since then&nbsp;<a href="http://www.cameramator.com/">Cameramator</a> launched <a href="http://www.kickstarter.com/projects/urashid/cameramator-wireless-tethered-photography">on Kickstarter</a> and is planned to ship in March 2013. It promises wireless tethering support for iOS and other devices.&nbsp;Meanwhile,&nbsp;<a href="http://www.camranger.com">CamRanger</a> is shipping and they promise an iOS solution, but its software support is currently limited to a <a href="http://www.camranger.com/downloads/">beta version for MacOS X</a> (oh the irony, that a product could ship first on Mac OS X and I&#8217;m sad I&#8217;m complaining because it&#8217;s not available on iOS).</p>
<p>There are also <a href="http://arstechnica.com/gadgets/2013/01/another-cloud-account-or-why-i-didnt-buy-an-eye-fi-card/">WiFi SD cards</a> that offer no camera control, but do allow one to see the images as they&#8217;re taken.</p>
<p>And because we&#8217;re already adding doodads to our cameras, let&#8217;s complete the assemblage by adding the phone itself to it. <a href="http://photojojo.com/store/awesomeness/look-lock/">This mount</a> might do the trick.</p>
<p>Update: here&#8217;s a <a href="https://vimeo.com/60302876">CamRanger video review</a>, clearly it does work on iOS:</p>
<p><iframe src="http://player.vimeo.com/video/60302876" width="500" height="281" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/post/16905/canon-ios-tethering-solutions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Testing apply_filters() times</title>
		<link>http://maisonbisson.com/post/16894/testing-apply_filters-times/</link>
		<comments>http://maisonbisson.com/post/16894/testing-apply_filters-times/#comments</comments>
		<pubDate>Fri, 15 Feb 2013 15:27:31 +0000</pubDate>
		<dc:creator>Casey Bisson</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[apply_filters]]></category>
		<category><![CDATA[optimization]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[performance optimization]]></category>
		<category><![CDATA[performance test]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[wp]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/?p=16894</guid>
		<description><![CDATA[Testing how long it takes to assign a variable versus assigning through WordPress&#8217; apply_filters(). Filters are core to WordPress, but I haven&#8217;t yet looked at the total number of apply_filters() calls used throughout the code. The answer to this question is that calling a non-existing filter before assignment is about 21 times more costly than [...]]]></description>
				<content:encoded><![CDATA[<p>Testing how long it takes to assign a variable versus assigning through WordPress&#8217; <code><a href="http://codex.wordpress.org/Function_Reference/apply_filters">apply_filters()</a></code>. <a href="http://codex.wordpress.org/Plugin_API#Filters">Filters are core to WordPress</a>, but I haven&#8217;t yet looked at the total number of <code>apply_filters()</code> calls used throughout the code. The answer to this question is that calling a non-existing filter before assignment is about 21 times more costly than simply assigning it. That&#8217;s nothing compared to the cost of actually doing some filtering, however. </p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
require 'wp-load.php'; 

$start_time = $end_time = $i = $assigned_a = $assigned_b = $assigned_c = 0;

$start_time = microtime( TRUE );
for( $i = 0; $i &lt;= 100000; $i++)
{
    $assigned_a = 'This is a string &amp; stuff!';
}
$end_time = microtime( TRUE );
echo 'Test A: '. ( $end_time - $start_time ) .&quot; seconds \n\n&quot;;
//Test A: 0.011314868927002 seconds 


$start_time = microtime( TRUE );
for( $i = 0; $i &lt;= 100000; $i++)
{
    $assigned_b = apply_filters( 'this_is_not_a_real_filter' , 'This is a string &amp; stuff!' );
}
$end_time = microtime( TRUE );
echo 'Test B: '. ( $end_time - $start_time ) .&quot; seconds \n\n&quot;;
//Test B: 0.23782300949097 seconds 


$start_time = microtime( TRUE );
for( $i = 0; $i &lt;= 100000; $i++)
{
    $assigned_c = apply_filters( 'sanitize_title_with_dashes' , 'This is a string &amp; stuff!' );
}
$end_time = microtime( TRUE );
echo 'Test B: '. ( $end_time - $start_time ) .&quot; seconds \n\n&quot;;
//Test C: 12.843906879425 seconds 
</pre>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/post/16894/testing-apply_filters-times/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Clarity from a distance</title>
		<link>http://maisonbisson.com/post/16883/clarity-from-a-distance/</link>
		<comments>http://maisonbisson.com/post/16883/clarity-from-a-distance/#comments</comments>
		<pubDate>Mon, 11 Feb 2013 04:13:40 +0000</pubDate>
		<dc:creator>Casey Bisson</dc:creator>
				<category><![CDATA[Photoblog]]></category>
		<category><![CDATA[aerial photography]]></category>
		<category><![CDATA[astronauts]]></category>
		<category><![CDATA[camera]]></category>
		<category><![CDATA[international space station]]></category>
		<category><![CDATA[ISS]]></category>
		<category><![CDATA[Kodak]]></category>
		<category><![CDATA[nasa]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/?p=16883</guid>
		<description><![CDATA[The sky looks big from earth, but it&#8217;s rather different the other way around. I&#8217;m not saying it&#8217;s not quite an experience, but inspecting the metadata on this photo of New York and surroundings taken on Christmas day, 2000, during the first International Space Station mission surprised me. To wit: it&#8217;s only a 180mm lens. [...]]]></description>
				<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://maisonbisson.com/files/2013/02/ISS001-E-5508.jpg" class="highslide-image" onclick="return hs.expand(this);"><img class="aligncenter  wp-image-16884" alt="ISS001-E-5508" src="http://maisonbisson.com/files/2013/02/ISS001-E-5508-1024x700.jpg" width="614" height="420" /></a></p>
<p>The sky looks big from earth, but it&#8217;s rather different the other way around. I&#8217;m not saying it&#8217;s not quite an experience, but inspecting the metadata on <a href="http://eol.jsc.nasa.gov/scripts/sseop/photo.pl?mission=ISS001&amp;roll=E&amp;frame=5508">this photo of New York and surroundings</a> taken on Christmas day, 2000, during the first International Space Station mission surprised me.</p>
<p>To wit: it&#8217;s only a 180mm lens. Granted, that&#8217;s on an old <a href="http://en.wikipedia.org/wiki/Kodak_DCS_400_series">Kodak DCS460 digital camera</a> (a <a href="http://www.flickr.com/photos/gisleh/14573519">Nikon body with Kodak imaging unit attached</a>) with a 1.3x crop factor, so the effective focal length was about 235mm.</p>
<p>Still, think about it: if you were a space tourist, you could look down on the world with a fairly average digital camera today and snap photos of your home town while it passed the window. If you want to pack light, <a href="http://panasonic.net/avc/lumix/compact/zs30_tz40/index.html">this pocket-sized camera</a> has a 560mm equivilent maximum zoom and 18 megapixel sensor. That beats the ISS astronaut&#8217;s camera with triple the pixels and better than double the focal length. Plus, it weighs and probably costs a lot less. Much less.</p>
<p>Extra: the longer lens and smaller angle of view on your camera would nearly fill the frame with the island of Manhattan, giving about six times the detail of this photo.</p>
<p>Astronomers talk about the effects of atmosphere on our observations of the stars saying it&#8217;s easier to see into a pool than to see out. This picture certainly makes the earth look a lot closer to the astronaut than space looks to me on the ground.</p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/post/16883/clarity-from-a-distance/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>3rd party JS libraries cause downtime</title>
		<link>http://maisonbisson.com/post/16880/3rd-party-js-libraries-cause-downtime/</link>
		<comments>http://maisonbisson.com/post/16880/3rd-party-js-libraries-cause-downtime/#comments</comments>
		<pubDate>Fri, 08 Feb 2013 05:13:12 +0000</pubDate>
		<dc:creator>Casey Bisson</dc:creator>
				<category><![CDATA[Dispatches]]></category>
		<category><![CDATA[3rd party javascripts]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[bugs]]></category>
		<category><![CDATA[downtime]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[Facebook Connect]]></category>
		<category><![CDATA[fail]]></category>
		<category><![CDATA[failure]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/?p=16880</guid>
		<description><![CDATA[Facebook Connect went down hard tonight. HuffPo reports that their site was redirecting to a Facebook error page, even when people weren&#8217;t attempting to log in. Yep. Busted third-party JavaScript brings portions of the Internet to its knees: huffingtonpost.com/2013/02/07/fac… &#8212; Kent Brewster (@kentbrew) February 8, 2013 It makes me more comfortable with our decision to strip [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://gigaom.com/2013/02/07/glitch-temporarily-halts-users-from-accessing-sites-through-facebook-login/">Facebook Connect went down hard tonight</a>. HuffPo reports that their site was <a href="http://www.huffingtonpost.com/2013/02/07/facebookmageddon-apparent_n_2641615.html">redirecting to a Facebook error page</a>, even when people weren&#8217;t attempting to log in.</p>
<blockquote class="twitter-tweet" width="500"><p>Yep. Busted third-party JavaScript brings portions of the Internet to its knees: <a href="http://t.co/vblEZ6h3" title="http://www.huffingtonpost.com/2013/02/07/facebookmageddon-apparent_n_2641615.html">huffingtonpost.com/2013/02/07/fac…</a></p>
<p>&mdash; Kent Brewster (@kentbrew) <a href="https://twitter.com/kentbrew/status/299727592158797824">February 8, 2013</a></p></blockquote>
<p><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script></p>
<p>It makes me more comfortable with our decision to <a href="http://kitchen.gigaom.com/2013/01/18/new-windows-or-not/">strip so many 3rd party javascripts from GigaOM</a> during our last redesign.</p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/post/16880/3rd-party-js-libraries-cause-downtime/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Camera frustrations and other first world problems</title>
		<link>http://maisonbisson.com/post/16790/camera-frustrations-and-other-first-world-problems/</link>
		<comments>http://maisonbisson.com/post/16790/camera-frustrations-and-other-first-world-problems/#comments</comments>
		<pubDate>Sat, 02 Feb 2013 19:14:47 +0000</pubDate>
		<dc:creator>Casey Bisson</dc:creator>
				<category><![CDATA[Photoblog]]></category>
		<category><![CDATA[camera]]></category>
		<category><![CDATA[cameras]]></category>
		<category><![CDATA[canon]]></category>
		<category><![CDATA[comparison]]></category>
		<category><![CDATA[EOS M]]></category>
		<category><![CDATA[Lumix LX7]]></category>
		<category><![CDATA[NEX 7]]></category>
		<category><![CDATA[Panasonic]]></category>
		<category><![CDATA[Rebel T4i]]></category>
		<category><![CDATA[sony]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/?p=16790</guid>
		<description><![CDATA[I&#8217;m not a camera pro. I have some photos on Flickr, but it&#8217;s just for fun, so I don&#8217;t really need a new camera. But I do want one. Thing is, there a lot of cameras out there, but none of them has the Goldilocks factor. None has the right mix of features, size, and [...]]]></description>
				<content:encoded><![CDATA[<p>I&#8217;m not a camera pro. I have <a href="http://www.flickr.com/photos/maisonbisson/">some photos on Flickr</a>, but it&#8217;s just for fun, so I don&#8217;t really need a new camera. But I do want one. Thing is, there a lot of cameras out there, but none of them has the Goldilocks factor. None has the right mix of features, size, and price that makes me happy.</p>
<p>I now have an old <a href="http://en.wikipedia.org/wiki/Canon_EOS_400D">Canon Rebel XTi</a>, <a href="http://en.wikipedia.org/wiki/Panasonic_Lumix_DMC-LX3">Panasonic Lumix LX3</a>, and <a href="http://en.wikipedia.org/wiki/GoPro#HD_HERO2_Professional_cameras">GoPro HD Hero 2</a> in my camera bag, but I began to feel an itch when I realized <a href="http://en.wikipedia.org/wiki/Canon_EF_50mm_lens#EF_50mm_f.2F1.8_II">my 50mm F1.8</a> was broken in some way. It&#8217;s a laughably cheap lens with plastic mount, so it&#8217;s not surprising that I might have broken it over the years, but the discovery sullied my feelings about the body as well.</p>
<p>Here&#8217;s what I&#8217;m looking for (roughly in priority order):</p>
<ul>
<li>Sufficient manual control to shoot in aperture priority all the time with EV adjustment</li>
<li>Autofocus</li>
<li>Wide angle</li>
<li>Fast lens</li>
<li>Compact</li>
<li>Big sensor</li>
<li>Easy custom white balance controls</li>
<li>Remote trigger</li>
<li>Affordability (intentionally undefined)</li>
<li>Articulated screen</li>
<li>Compatibility with some flash system, maybe</li>
<li>GPS</li>
</ul>
<p>I have and love a <a href="http://en.wikipedia.org/wiki/Canon_EF-S_10-22mm_lens">Canon EF-S 10-22mm</a>, so there is that reason to stick with Canon, but I&#8217;m not married to it. I would consider the <a href="http://www.amazon.com/Sony-NEX-7-Compact-Interchangeable-Camera/dp/B005IHAIEI/?tag=maisonbisson-20">Sony NEX 7</a> and <a href="http://www.amazon.com/Sony-SEL1018-10-18mm-Wide-Angle-Zoom/dp/B0096W1ONK/?tag=maisonbisson-20">10-18mm lens</a>, for example, but that combo totals very near $2,000 and violates my vague notion of affordability. And please don&#8217;t suggest I can save money by using my Canon 10-22mm on the Sony body with an adapter, as I&#8217;d lose autofocus with combo. Another strike against the NEX is the relatively slow maximum aperture of <a href="http://store.sony.com/c/Alpha-NEX-E-mount-Lenses/en/c/S_NEX_eMount">the lens lineup</a>. The 10-22mm is F3.5-4.5, but there are plenty of faster lenses in the Canon lineup at other focal lengths (such as my cheap 50mm, and the one I&#8217;d likely replace it with).</p>
<p>I really like the compact size of my LX3, and the new <a href="http://www.amazon.com/Panasonic-DMC-LX7K-Digital-Intelligent-3-0-inch/dp/B008MB719C/?tag=maisonbisson-20">Lumix LX7</a> looks like <a href="http://www.dpreview.com/articles/2367736880/roundup-enthusiast-zoom-compact-cameras">a good upgrade</a>. Its 24mm lens is just within my requirements, but its F1.4 maximum aperture is the best of the pack. The lens isn&#8217;t interchangeable, but it&#8217;s a lens I can be happy with and the size is perfect. The sensor is small compared even to <a href="http://en.wikipedia.org/wiki/APS-C">APS-C</a> standards, but bigger than on a point-n-shoot and big enough to get some shallow depth of field effects. On the down side it doesn&#8217;t appear to support any sort of remote triggering and I don&#8217;t feel there&#8217;s a good flash system for a strobe novice like myself to connect with.</p>
<p><a href="http://www.amazon.com/Canon-Compact-Systems-Camera-3-0-Inch/dp/B008NENG1A/?tag=maisonbisson-20">Canon&#8217;s new EOS M</a> interchangeable lens compact looks interesting. It has the same imaging sensor, processor, and menu controls as the <a href="http://www.amazon.com/Canon-Digital-Camera-3-inch-Touchscreen/dp/B00894YYP6/?tag=maisonbisson-20">Rebel T4i</a>, but in a smaller package without the mirror. Unfortunately, it also lacks many of the controls the Rebel has, so even putting the EOS M into aperture priority mode requires some surprising menu gymnastics. It also doesn&#8217;t appear to have any option for remote triggering and no articulated screen. With an adapter it can mount my 10-22mm with autofocus and other features, so at least there&#8217;s that.</p>
<p>The <a href="http://www.amazon.com/Canon-Digital-Camera-3-inch-Touchscreen/dp/B00894YYP6/?tag=maisonbisson-20">Rebel T4i</a> the <a href="http://www.amazon.com/Canon-Compact-Systems-Camera-3-0-Inch/dp/B008NENG1A/?tag=maisonbisson-20">EOS M</a> is descended from might be a good choice. In my list of wants it only misses with <a href="http://www.youtube.com/watch?v=bq3yzTPb1Ng">famously complex custom white balance controls</a> and its large size compared to the others I&#8217;ve considered so far. Hate me if you want, but shooting RAW means shooting slowly and promising yourself you&#8217;ll balance your images when you get home. I like the option to shoot RAW, but my default is JPEG.</p>
<p>I&#8217;ve looked at Panasonic and Olympus Micro Four Thirds cameras. There are some very good models among them, and there&#8217;s at least one good wide angle lens available as well. Like the NEX, however, the lens lineup appears slow, but combined with the smaller sensor size of these cameras it will be even more difficult to get depth of field effects from these cameras. These cameras also face the same price issue as the NEX: my 10-22mm lens is incompatible and I&#8217;ll have to buy a replacement, significantly increasing the price.</p>
<p>The following table scores these cameras on my feature list. The total assumes equal weight for all features, which is not necessarily reasonable, but gives me something to work with.</p>
<p><strong>Feature comparison</strong></p>
<table cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="20%"><b>Camera</b></td>
<td valign="top" width="20%"><a href="http://www.amazon.com/Panasonic-DMC-LX7K-Digital-Intelligent-3-0-inch/dp/B008MB719C/?tag=maisonbisson-20"><b>Lumix LX7</b></a></td>
<td valign="top" width="20%"><a href="http://www.amazon.com/Canon-Compact-Systems-Camera-3-0-Inch/dp/B008NENG1A/?tag=maisonbisson-20"><b>Canon EOS M</b></a></td>
<td valign="top" width="20%"><a href="http://www.amazon.com/Canon-Digital-Camera-3-inch-Touchscreen/dp/B00894YYP6/?tag=maisonbisson-20"><b>Canon Rebel T4i</b></a></td>
<td valign="top" width="20%"><a href="http://www.amazon.com/Sony-NEX-7-Compact-Interchangeable-Camera/dp/B005IHAIEI/?tag=maisonbisson-20"><b>Sony NEX 7</b></a></td>
</tr>
<tr>
<td valign="top"><b>Manual control</b></td>
<td valign="top">1</td>
<td valign="top">0.5</td>
<td valign="top">1</td>
<td valign="top">1</td>
</tr>
<tr>
<td valign="top"><b>Autofocus</b></td>
<td valign="top">1</td>
<td valign="top">1</td>
<td valign="top">1</td>
<td valign="top">1</td>
</tr>
<tr>
<td valign="top"><b>Wide angle</b></td>
<td valign="top">1</td>
<td valign="top">1</td>
<td valign="top">1</td>
<td valign="top">1</td>
</tr>
<tr>
<td valign="top"><b>Fast lens</b></td>
<td valign="top">1</td>
<td valign="top">0.5</td>
<td valign="top">0.5</td>
<td valign="top">0.5</td>
</tr>
<tr>
<td valign="top"><b>Compact</b></td>
<td valign="top">1</td>
<td valign="top">0.5</td>
<td valign="top">0</td>
<td valign="top">0.5</td>
</tr>
<tr>
<td valign="top"><b>Big sensor</b></td>
<td valign="top">0.5</td>
<td valign="top">1</td>
<td valign="top">1</td>
<td valign="top">1</td>
</tr>
<tr>
<td valign="top"><b>Easy custom white balance</b></td>
<td valign="top">1</td>
<td valign="top">0</td>
<td valign="top">0</td>
<td valign="top">0</td>
</tr>
<tr>
<td valign="top"><b>Remote trigger</b></td>
<td valign="top">0</td>
<td valign="top">0.5</td>
<td valign="top">1</td>
<td valign="top">0.5</td>
</tr>
<tr>
<td valign="top"><b>Affordability</b></td>
<td valign="top">1</td>
<td valign="top">0.5</td>
<td valign="top">1</td>
<td valign="top">0</td>
</tr>
<tr>
<td valign="top"><b>Articulated screen</b></td>
<td valign="top">0</td>
<td valign="top">0</td>
<td valign="top">1</td>
<td valign="top">1</td>
</tr>
<tr>
<td valign="top"><b>Compatibility with some flash system, maybe</b></td>
<td valign="top">0</td>
<td valign="top">1</td>
<td valign="top">1</td>
<td valign="top">0.5</td>
</tr>
<tr>
<td valign="top"><b>GPS</b></td>
<td valign="top">0</td>
<td valign="top">0</td>
<td valign="top">0</td>
<td valign="top">0</td>
</tr>
<tr>
<td valign="top"><b>Total feature score</b></td>
<td valign="top">7.5</td>
<td valign="top">6.5</td>
<td valign="top">8.5</td>
<td valign="top">7</td>
</tr>
</tbody>
</table>
<p><strong>Price comparison, with lens</strong></p>
<table cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="20%"><b>Camera</b></td>
<td valign="top" width="20%"><a href="http://www.amazon.com/Panasonic-DMC-LX7K-Digital-Intelligent-3-0-inch/dp/B008MB719C/?tag=maisonbisson-20"><b>Lumix LX7</b></a></td>
<td valign="top" width="20%"><a href="http://www.amazon.com/Canon-Compact-Systems-Camera-3-0-Inch/dp/B008NENG1A/?tag=maisonbisson-20"><b>Canon EOS M</b></a></td>
<td valign="top" width="20%"><a href="http://www.amazon.com/Canon-Digital-Camera-3-inch-Touchscreen/dp/B00894YYP6/?tag=maisonbisson-20"><b>Canon Rebel T4i</b></a></td>
<td valign="top" width="20%"><a href="http://www.amazon.com/Sony-NEX-7-Compact-Interchangeable-Camera/dp/B005IHAIEI/?tag=maisonbisson-20"><b>Sony NEX 7</b></a></td>
</tr>
<tr>
<td valign="top"><b>Camera price</b></td>
<td valign="top">$449.00</td>
<td valign="top">$714.00</td>
<td valign="top">$648.00</td>
<td valign="top">$1,098.00</td>
</tr>
<tr>
<td valign="top"><b>Lens</b></td>
<td valign="top">Built-in 24-90mm F1.4-2.3</td>
<td valign="top"><a href="http://en.wikipedia.org/wiki/Canon_EF-S_10-22mm_lens">10-22mm</a> (with <a href="http://www.amazon.com/gp/product/B008NF8CEK/?tag=maisonbisson-20">adapter</a>)</td>
<td valign="top"><a href="http://en.wikipedia.org/wiki/Canon_EF-S_10-22mm_lens">10-22mm F3.5-4.5</a> (16-35mm equivalent)</td>
<td valign="top"><a href="http://www.amazon.com/Sony-SEL1018-10-18mm-Wide-Angle-Zoom/dp/B0096W1ONK/?tag=maisonbisson-20">10-18mm F4</a> (15-27mm equivalent)</td>
</tr>
<tr>
<td valign="top"><b>Lens price</b></td>
<td valign="top">$0.00</td>
<td valign="top">$868.97</td>
<td valign="top">$679.00</td>
<td valign="top">$848.00</td>
</tr>
<tr>
<td valign="top"><b>Total with lens</b></td>
<td valign="top">$449.00</td>
<td valign="top">$1,582.97</td>
<td valign="top">$1,327.00</td>
<td valign="top">$1,946.00</td>
</tr>
<tr>
<td valign="top"><b>Total to me</b></td>
<td valign="top">$449.00</td>
<td valign="top">$903.97</td>
<td valign="top">$648.00</td>
<td valign="top">$1,946.00</td>
</tr>
</tbody>
</table>
<p>The EOS M lens price includes adapter. The price to me assumes I&#8217;ll use my 10-22mm lens on cameras its compatible with, rather than buy another.</p>
<p>The results of these tables easily excludes Sony, but also shows how nearly perfect the LX7 is for me. Yes, the Rebel T4i scores better, but I&#8217;d happily give up flash system compatibility for compact size, and that evens the scores. The LX7&#8242;s compact size is truly remarkable. While the other options are compact with certain lenses, the LX7 is the most compact, almost-pocketable option for all the focal lengths it supports. The EOS M or NEX 7 might look small with a pancake lens, but not with my 10-22mm or a fast 50mm. And more than just compact, the LX7 lens is fast throughout its range, and much faster at the wide end than any of the other options in this list. Sadly, the LX7 doesn&#8217;t appear to have any option to trigger the shutter remotely (the EOS M and NEX 7 support infrared remotes, the Rebel T4i supports both wired and wireless remotes).</p>
<p>So what are these cameras missing? What would make the decision easy for any of them?</p>
<ul>
<li>I would buy the LX7 in an instant if it had some option for a remote shutter trigger.</li>
<li>The NEX 7 would be great if it were compatible with Canon lenses.</li>
<li>The EOS M would be great if it had working manual controls and an articulated screen (two features Sony was able to squeeze into the NEX 7). Support for wired remotes would be great too, but I&#8217;d honestly jump at this if it just supported better manual control and didn&#8217;t appear to be hobbled for marketing purposes.</li>
<li>The Rebel T4i appears to be a great camera, just significantly larger than the other contenders and larger than I want. My current Rebel stayed at home when I <a href="http://www.flickr.com/photos/maisonbisson/sets/72157632638439186/">went to Europe with my LX3 (and iPhone) recently</a>.</li>
</ul>
<p>As it is, any purchase now feels like settling.</p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/post/16790/camera-frustrations-and-other-first-world-problems/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Testing file include times for a file that may or may not exist</title>
		<link>http://maisonbisson.com/post/16784/testing-file-include-times-for-a-file-that-may-or-may-not-exist/</link>
		<comments>http://maisonbisson.com/post/16784/testing-file-include-times-for-a-file-that-may-or-may-not-exist/#comments</comments>
		<pubDate>Thu, 31 Jan 2013 18:01:44 +0000</pubDate>
		<dc:creator>Casey Bisson</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[error suppression]]></category>
		<category><![CDATA[errors]]></category>
		<category><![CDATA[include]]></category>
		<category><![CDATA[optimization]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[performance optimization]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[reading files]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/?p=16784</guid>
		<description><![CDATA[Question: Should you check for a file before attempting to include it, or just suppress errors? Calling file_exists requires stating it twice if the file does exist, so that could take longer. Answer: the file_exists pattern is more than five times faster than the @include pattern for a file that doesn&#8217;t exist, and not substantially [...]]]></description>
				<content:encoded><![CDATA[<p>Question: Should you check for a file before attempting to include it, or just suppress errors? Calling <code>file_exists</code> requires <code>stat</code>ing it twice if the file does exist, so that could take longer. Answer: the <code>file_exists</code> pattern is more than five times faster than the <code>@include</code> pattern for a file that doesn&#8217;t exist, and not substantially slower when the file does exist.</p>
<p>The test:</p>
<pre class="brush: php; title: ; notranslate">
&amp;lt;?php

$start_time = $end_time = $i = 0;

$start_time = microtime( TRUE );
for( $i = 0; $i &amp;lt;= 100000; $i++)
{
	include __DIR__ . '/config.php';
}
$end_time = microtime( TRUE );
echo 'Test 1: '. ( $end_time - $start_time ) .&amp;quot; seconds \n\n&amp;quot;;
//Test 1: 13.27784204483 seconds 


$start_time = microtime( TRUE );
for( $i = 0; $i &amp;lt;= 100000; $i++)
{
	@include __DIR__ . '/config.php';
}
$end_time = microtime( TRUE );
echo 'Test 2: '. ( $end_time - $start_time ) .&amp;quot; seconds \n\n&amp;quot;;
//Test 2: 13.47793507576 seconds 


$start_time = microtime( TRUE );
for( $i = 0; $i &amp;lt;= 100000; $i++)
{
	@include __DIR__ . '/nonexistant-file.php';
}
$end_time = microtime( TRUE );
echo 'Test 3: '. ( $end_time - $start_time ) .&amp;quot; seconds \n\n&amp;quot;;
// Test 3: 3.8437511920929 seconds 


$start_time = microtime( TRUE );
for( $i = 0; $i &amp;lt;= 100000; $i++)
{
	if( file_exists( __DIR__ . '/config.php' ) )
	{
		include __DIR__ . '/config.php';	
	}
}
$end_time = microtime( TRUE );
echo 'Test 4: '. ( $end_time - $start_time ) .&amp;quot; seconds \n\n&amp;quot;;
// Test 4: 14.759271144867 seconds 


$start_time = microtime( TRUE );
for( $i = 0; $i &amp;lt;= 100000; $i++)
{
	if( file_exists( __DIR__ . '/nonexistant-file.php' ) )
	{
		include __DIR__ . '/nonexistant-file.php';	
	}
}
$end_time = microtime( TRUE );
echo 'Test 5: '. ( $end_time - $start_time ) .&amp;quot; seconds \n\n&amp;quot;;
// Test 5: 0.74464702606201 seconds 
</pre>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/post/16784/testing-file-include-times-for-a-file-that-may-or-may-not-exist/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>An American iPhone in Europe</title>
		<link>http://maisonbisson.com/post/16779/an-american-iphone-in-europe/</link>
		<comments>http://maisonbisson.com/post/16779/an-american-iphone-in-europe/#comments</comments>
		<pubDate>Sun, 20 Jan 2013 16:49:14 +0000</pubDate>
		<dc:creator>Casey Bisson</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Travel]]></category>
		<category><![CDATA[europe]]></category>
		<category><![CDATA[european data plans]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[mobile data]]></category>
		<category><![CDATA[mobile internet]]></category>
		<category><![CDATA[prepaid SIM]]></category>
		<category><![CDATA[using iPhone abroad]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/?p=16779</guid>
		<description><![CDATA[By way of update on my earlier post after researching options for AT&#38;T iPhone users in Europe (with an unlocked phone), I ended up not bothering with local SIM cards in either The Netherlands or France. A savvy user should be able to find a local pay as you go SIM plan that&#8217;s less expensive [...]]]></description>
				<content:encoded><![CDATA[<p>By way of update on my earlier post after <a href="http://maisonbisson.com/blog/post/16346/using-your-iphone-in-europe/">researching options for AT&amp;T iPhone users in Europe</a> (with an unlocked phone), I ended up not bothering with local SIM cards in either The Netherlands or France. A savvy user should be able to find a local pay as you go SIM plan that&#8217;s less expensive than <a href="http://www.wireless.att.com/learn/international/roaming/affordable-world-packages.jsp#data">AT&amp;T&#8217;s data roaming packages</a>, but I&#8217;m that user and know very little about the local operators (not even all their names). I decided at the start to pay $60 for AT&amp;T&#8217;s 300MB international roaming package so that I could enjoy internet access while traveling through Germany and upon my arrival in The Netherlands. Thanks to WiFi and my short stay there, I used relatively little of that 300MB.</p>
<p>In London, however, I had both more time and big plans to explore the city, so with expectations of heavy mobile maps use and web searching I sought out a SIM. Several wireless operators have shops at <a href="http://en.wikipedia.org/wiki/Victoria_station_(London)">Victoria Station</a>, where I was able to quickly browse options. What I found was a plan from <a href="http://www.three.co.uk">Three</a> that offered <a href="http://store.three.co.uk/SIM_Only/Pay_Monthly/iPhone?sort=priceValue-ascending&amp;deviceType=SIM_ONLY&amp;deviceType=SIM_ONLY&amp;bestFor=iPhone">unlimited data, 200 minutes of voice, and 5000 text messages</a> for just £12.90 (£15 after tax, additional £1 for SIM card if you don&#8217;t already have one from Three). Even after currency conversion the plan is a steal, though I did later discover <a href="https://twitter.com/ThreeUKSupport/statuses/286848217923088385">the carrier block some websites</a>. The linked tweet is somebody else&#8217;s experience, I encountered blocking when trying to access <a href="http://www.flickr.com">Flickr</a> at times, though not consistently and I was still able to <a href="http://www.flickr.com/photos/maisonbisson/archives/date-taken/2012/12/#photo_8305354754">post my photos</a>.</p>
<p>The active wireless competition in London and wide variety of operators may have spoiled me for Paris. I found far fewer operators, and the plans less attractive. In an <a href="http://www.orange.fr">Orange</a> store I was told their network was incompatible with my iPhone. I wish I&#8217;d gotten to the bottom of that, but the crowded store, my poor language skills, and anxious wife pushed me the other direction. <a href="http://mobile-shop.orange.fr/telephones-portables/1/Apple/7/nouveaute">They do offer iPhones</a>, so whatever the misunderstanding was, it&#8217;s something that can probably be worked out. I looked elsewhere, but the need to find a local carrier diminished as time moved on. I was only in Paris for a few days, and with almost 200MB remaining in my AT&amp;T international data package, the value of a local carrier versus continued parsimonious use of the AT&amp;T package was shifting towards the later.</p>
<p>And now that I&#8217;ve received my AT&amp;T bill, it alls seems to have worked out.</p>
<p>I was happy to have my old iPhone 4 back in my hands, now unlocked and ready to accept a local SIM. Three&#8217;s plan allowed me unlimited data, which I shared with other devices via my iPhone&#8217;s WiFi. My iPhone 5 is still locked on AT&amp;T, but the international roaming package was convenient and met my needs &#8212; so long as I was careful. Unsurprisingly, my Verizon iPad 3 found no signal in Europe. I&#8217;m told it can accept a SIM card and connect to 3G networks, but I didn&#8217;t try that. My wife&#8217;s Verizon iPhone 4 was pretty much useless when not tethered to WiFi, except as a watch.</p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/post/16779/an-american-iphone-in-europe/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SVN or git?</title>
		<link>http://maisonbisson.com/post/16749/svn-or-git/</link>
		<comments>http://maisonbisson.com/post/16749/svn-or-git/#comments</comments>
		<pubDate>Sat, 19 Jan 2013 19:50:53 +0000</pubDate>
		<dc:creator>Casey Bisson</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[religious wars]]></category>
		<category><![CDATA[repos]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[version control]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/?p=16749</guid>
		<description><![CDATA[@film_firl poked @WordPressVIP to ask @wordpressvip @mjangda @viper007bond MOOOOVE TO GIT!!! she half-kids. No really, please? &#8212; Christina Warren (@film_girl) January 18, 2013 @nacin piled on with @viper007bond @film_girl @mjangda VIP aside, it&#8217;s fairly crazy that WordPress.com hasn&#8217;t migrated. SVN != tenable dev environment. &#8212; Andrew Nacin (@nacin) January 18, 2013 @Viper007Bond tried to defend the team, and [...]]]></description>
				<content:encoded><![CDATA[<p><a href="https://twitter.com/film_girl">@film_firl</a> poked <a href="https://twitter.com/WordPressVIP">@WordPressVIP</a> to ask</p>
<blockquote class="twitter-tweet" data-in-reply-to="292306750722420737" width="500"><p>@<a href="https://twitter.com/wordpressvip">wordpressvip</a> @<a href="https://twitter.com/mjangda">mjangda</a> @<a href="https://twitter.com/viper007bond">viper007bond</a> MOOOOVE TO GIT!!! she half-kids. No really, please?</p>
<p>&mdash; Christina Warren (@film_girl) <a href="https://twitter.com/film_girl/status/292395216504225792" data-datetime="2013-01-18T22:17:06+00:00">January 18, 2013</a></p></blockquote>
<p><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script></p>
<p><a href="https://twitter.com/nacin">@nacin</a> piled on with</p>
<blockquote class="twitter-tweet" data-in-reply-to="292396973082951681" width="500"><p>@<a href="https://twitter.com/viper007bond">viper007bond</a> @<a href="https://twitter.com/film_girl">film_girl</a> @<a href="https://twitter.com/mjangda">mjangda</a> VIP aside, it&#8217;s fairly crazy that <a href="http://t.co/oIxgpD1s" title="http://WordPress.com">WordPress.com</a> hasn&#8217;t migrated. SVN != tenable dev environment.</p>
<p>&mdash; Andrew Nacin (@nacin) <a href="https://twitter.com/nacin/status/292398461972799488" data-datetime="2013-01-18T22:30:00+00:00">January 18, 2013</a></p></blockquote>
<p><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script></p>
<p><a href="https://twitter.com/Viper007Bond">@Viper007Bond</a> tried to defend the team, and added</p>
<blockquote class="twitter-tweet" data-in-reply-to="292395216504225792" width="500"><p>@<a href="https://twitter.com/film_girl">film_girl</a> @<a href="https://twitter.com/wordpressvip">wordpressvip</a> @<a href="https://twitter.com/mjangda">mjangda</a> That said transitioning is not always worth it. Read this cautionary tale from Etsy: <a href="http://t.co/fNvTU5wm" title="http://codeascraft.etsy.com/2011/12/02/moving-from-svn-to-git-in-1000-easy-steps/">codeascraft.etsy.com/2011/12/02/mov…</a></p>
<p>&mdash; Alex Mills (@Viper007Bond) <a href="https://twitter.com/Viper007Bond/status/292396167399104512" data-datetime="2013-01-18T22:20:53+00:00">January 18, 2013</a></p></blockquote>
<p><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script></p>
<blockquote class="twitter-tweet" data-in-reply-to="292398461972799488" width="500"><p>@<a href="https://twitter.com/nacin">nacin</a> @<a href="https://twitter.com/film_girl">film_girl</a> @<a href="https://twitter.com/mjangda">mjangda</a> Our deploy code is actually just &#8220;svn up&#8221; x 1000 servers.</p>
<p>&mdash; Alex Mills (@Viper007Bond) <a href="https://twitter.com/Viper007Bond/status/292399186983391233" data-datetime="2013-01-18T22:32:53+00:00">January 18, 2013</a></p></blockquote>
<p><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script></p>
<p>GigaOM is in the process of migrating to git. Our <a href="http://gigaom.com/2013/01/07/one-design-any-screen-introducing-gigaoms-new-look-and-feel/">recent redesign</a> all happened in git, and the last of our properties will be moved as soon as a few long-running feature branches are launched. Our motivation is <a href="http://codeascraft.etsy.com/2011/12/02/moving-from-svn-to-git-in-1000-easy-steps/">not unlike Etsy&#8217;s</a>: &#8220;re-examining and adding new tools to the mix seem[s] like a healthy trait to have in our culture, [and] the switch to Git would <a title="optimizing for developer happiness" href="http://codeascraft.etsy.com/2011/06/06/optimizing-for-developer-happiness/" target="_blank">increase engineer happiness</a>.&#8221;</p>
<p>But the switch isn&#8217;t all wins. Git has <a href="http://maisonbisson.com/blog/post/16710/theres-no-git-cp-filename/">no equivalent to svn cp</a>, which would have helped preserve file history through the <a href="http://kitchen.gigaom.com/2013/01/07/in-with-the-new/">refactoring we did for the redesign</a>. Even git mv is <a href="http://stackoverflow.com/a/2314757">sloppy about preserving file histories</a>. Just as frustrating, if not more so, are the hoops git users have to jump through to get what svn users enjoy with <a href="http://svnbook.red-bean.com/en/1.7/svn.advanced.externals.html">svn:externals</a>.</p>
<p>Git has a number of useful features, not least of which is Github itself. I like git, but to claim it&#8217;s unequivocally better than svn is a leap too far.</p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/post/16749/svn-or-git/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Where did all the votes go?</title>
		<link>http://maisonbisson.com/post/16741/where-did-all-the-votes-go/</link>
		<comments>http://maisonbisson.com/post/16741/where-did-all-the-votes-go/#comments</comments>
		<pubDate>Tue, 18 Dec 2012 04:46:22 +0000</pubDate>
		<dc:creator>Casey Bisson</dc:creator>
				<category><![CDATA[Libraries & Networked Information]]></category>
		<category><![CDATA[Politics & Controversy]]></category>
		<category><![CDATA[data]]></category>
		<category><![CDATA[election history]]></category>
		<category><![CDATA[voting history]]></category>
		<category><![CDATA[zip code]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/?p=16741</guid>
		<description><![CDATA[What happens to voting data after the election is over? What happens to all those certified results by polling place? How is it that there&#8217;s so much coverage leading up to and on the night of the election, but this guy seems to be one of the few sources of historical voting data? Amusingly, I [...]]]></description>
				<content:encoded><![CDATA[<p>What happens to voting data after the election is over? What happens to all those certified results by polling place? How is it that there&#8217;s so much coverage leading up to and on the night of the election, but <a href="http://www.uselectionatlas.org">this guy</a> seems to be one of the few sources of historical voting data? Amusingly, I found it linked <a href="http://www.loc.gov/rr/program/bib/elections/statistics.html">on the Library of Congress&#8217; website</a>!</p>
<p>There&#8217;s some very old sources from <a href="http://www.poppyware.com/bowditch/maps/elections/sources.html">E. Bowditch J. McConnel</a>, who wrote some papers on <a href="http://www.poppyware.com/bowditch/maps/elections/elect_top.html">voting patterns up to the 2000 election</a>. The Census Bureau reports in detail on who registered and voted (including age, race, education, sex, marital status, veteran status, and more), but not how they voted, and not by geography.</p>
<p>OpenSecrets.org has political contribution stats by zip code (interesting: my <a href="http://www.opensecrets.org/address/summary.php?zip=03103">last ZIP Code in NH</a> contributes considerably less than <a href="http://www.opensecrets.org/address/summary.php?zip=94105">my current zip code</a>). Their data is based on the <a href="http://www.fec.gov/finance/disclosure/ftpdet.shtml">disclosure files</a> managed and distributed by the Federal Election Commission.</p>
<p>Perhaps I&#8217;m just looking in the wrong place to find party aggregated registration information or vote histories by county or ZIP code?</p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/post/16741/where-did-all-the-votes-go/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>On wp_enqueue_scripts and admin_enqueue_scripts</title>
		<link>http://maisonbisson.com/post/16734/on-wp_enqueue_scripts-and-admin_enqueue_scripts/</link>
		<comments>http://maisonbisson.com/post/16734/on-wp_enqueue_scripts-and-admin_enqueue_scripts/#comments</comments>
		<pubDate>Thu, 13 Dec 2012 16:33:31 +0000</pubDate>
		<dc:creator>Casey Bisson</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[guidelines]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[standards]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/?p=16734</guid>
		<description><![CDATA[An argument has erupted over the WordPress actions&#160;wp_enqueue_scripts and admin_enqueue_scripts vs. init. One of the points was about specificity, and how wp_enqueue_scripts and admin_enqueue_scripts can reduce ambiguity. I didn&#8217;t realize I had strong opinions on it until the issue was pressed, but it turns out I think wp_enqueue_scripts and admin_enqueue_scripts are unnecessary and unfortunate additions [...]]]></description>
				<content:encoded><![CDATA[<p>An argument has erupted over the <a href="http://codex.wordpress.org/Plugin_API/Action_Reference">WordPress actions</a>&nbsp;<code>wp_enqueue_scripts</code> and <code>admin_enqueue_scripts</code> vs. <code>init</code>. One of the points was about specificity, and how <code>wp_enqueue_scripts</code> and <code>admin_enqueue_scripts</code> can reduce ambiguity.</p>
<p>I didn&#8217;t realize I had strong opinions on it until the issue was pressed, but it turns out I think <code>wp_enqueue_scripts</code> and <code>admin_enqueue_scripts</code> are unnecessary and unfortunate additions to the actions API.</p>
<p>Here&#8217;s what I wrote in that discussion thread:</p>
<blockquote><p>Is <a href="http://www.youtube.com/watch?v=2XbCWmY0eqY">Spatula City</a> the store that&#8217;s most specifically targeted to the sale of fine spatulas? Yep. But is it the only place you should expect to find spatulas? No. Can you assume that spatulas are not used in a given town if there&#8217;s no Spatula City there? No. Would you expect to find grill forks at Spatula City? No. Would it be a waste of time to stop at both the [grocery|hardware|kitchen] store and Spatula City? Yes.</p></blockquote>
<p>I&#8217;m expecting somebody to tell me how I&#8217;m wrong, but why not just hook to the <code>init</code> action for all script and style enqueues? It&#8217;s certainly less confusing than doing <code>wp_enqueue_style()</code> inside the <code>wp_enqueue_scripts</code> action (even though <a href="http://codex.wordpress.org/Function_Reference/wp_enqueue_style#Using_a_Hook">the codex recommends that semantic ambiguity</a>!). I also suspect it&#8217;s more performant to do an <code>if( is_admin() )</code> test inside an <code>init</code> action than to <code>add_action()</code> on a different action and allow WP to execute the full chain of code necessary for it.</p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/post/16734/on-wp_enqueue_scripts-and-admin_enqueue_scripts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>@Adam: I&#8217;d seen `git log –find-copies` and its friends, but my frustration is that I have to know to look for copies to find them, whereas the svn approach made that history very obvious.

@Casey: the issue is that I want to split one file that&#8217;s grown too large into two and preserve the history in both.

In short, I want to be able to do the equivalent of `svn log filename` that will tell me the full history of the file, including the file it was copied from and its history too.</title>
		<link>http://maisonbisson.com/post/16710/theres-no-git-cp-filename/comment-page-1/#comment-1025787</link>
		<comments>http://maisonbisson.com/post/16710/theres-no-git-cp-filename/comment-page-1/#comment-1025787#comments</comments>
		<pubDate>Wed, 05 Dec 2012 04:01:49 +0000</pubDate>
		<dc:creator>Casey Bisson</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[argh]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[version control]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/talkbox/adam-id-seen-git-log-find-copies-and-its-friends-but-my-frustration-is-that-i-have-to-know-to-look-for-copies-to-find-them-whereas-the-svn-approach-made-that-history-very-obvious-ca/</guid>
		<description><![CDATA[@Adam: I&#8217;d seen `git log –find-copies` and its friends, but my frustration is that I have to know to look for copies to find them, whereas the svn approach made that history very obvious. @Casey: the issue is that I want to split one file that&#8217;s grown too large into two and preserve the history [...]]]></description>
				<content:encoded><![CDATA[<p>@Adam: I&#8217;d seen `git log –find-copies` and its friends, but my frustration is that I have to know to look for copies to find them, whereas the svn approach made that history very obvious.</p>
<p>@Casey: the issue is that I want to split one file that&#8217;s grown too large into two and preserve the history in both.</p>
<p>In short, I want to be able to do the equivalent of `svn log filename` that will tell me the full history of the file, including the file it was copied from and its history too.</p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/post/16710/theres-no-git-cp-filename/comment-page-1/#comment-1025787/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Confirming that object references in arrays are preserved while cloning the arrays</title>
		<link>http://maisonbisson.com/post/16723/confirming-that-object-references-in-arrays-are-preserved-while-cloning-the-arrays/</link>
		<comments>http://maisonbisson.com/post/16723/confirming-that-object-references-in-arrays-are-preserved-while-cloning-the-arrays/#comments</comments>
		<pubDate>Fri, 23 Nov 2012 18:16:33 +0000</pubDate>
		<dc:creator>Casey Bisson</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[assignment]]></category>
		<category><![CDATA[object references]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[test]]></category>
		<category><![CDATA[variable references]]></category>
		<category><![CDATA[variables]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/?p=16723</guid>
		<description><![CDATA[A short test to confirm references are preserved in cloned arrays. The result is: Now let&#8217;s mess with one piece of that to check if the object was passed by reference or got cloned: Confirmed, the object is passed by reference, even though the array that contained it was cloned:]]></description>
				<content:encoded><![CDATA[<p>A short test to confirm references are preserved in cloned arrays.</p>
<pre class="brush: php; title: ; notranslate">
// create a stdClass object (using my lazy way of coercing arrays to objects)
$object = (object) array( 'thing' =&gt; 'original' );

// add that object to an array element
$array = array( 'object_one' =&gt; $object );

// clone the array by assignment to a new variable
$array_two = $array;

// add a new copy of the original object to a new element in the new array
$array_two['object_two'] = $object;

// show what we have so far
var_dump( $object , $array , $array_two );
</pre>
<p>The result is:</p>
<pre class="brush: plain; title: ; notranslate">
object(stdClass)#1 (1) {
  [&quot;thing&quot;]=&gt;
  string(8) &quot;original&quot;
}
array(1) {
  [&quot;object_one&quot;]=&gt;
  object(stdClass)#1 (1) {
    [&quot;thing&quot;]=&gt;
    string(8) &quot;original&quot;
  }
}
array(2) {
  [&quot;object_one&quot;]=&gt;
  object(stdClass)#1 (1) {
    [&quot;thing&quot;]=&gt;
    string(8) &quot;original&quot;
  }
  [&quot;object_two&quot;]=&gt;
  object(stdClass)#1 (1) {
    [&quot;thing&quot;]=&gt;
    string(8) &quot;original&quot;
  }
}
</pre>
<p>Now let&#8217;s mess with one piece of that to check if the object was passed by reference or got cloned:</p>
<pre class="brush: php; title: ; notranslate">
// change one of the objects in the second array
$array_two['object_two']-&gt;thing = 'array_two,object_two';

// see that all the references to that object have been changed
var_dump( $object , $array , $array_two );
</pre>
<p>Confirmed, the object is passed by reference, even though the array that contained it was cloned:</p>
<pre class="brush: plain; title: ; notranslate">
object(stdClass)#1 (1) {
  [&quot;thing&quot;]=&gt;
  string(20) &quot;array_two,object_two&quot;
}
array(1) {
  [&quot;object_one&quot;]=&gt;
  object(stdClass)#1 (1) {
    [&quot;thing&quot;]=&gt;
    string(20) &quot;array_two,object_two&quot;
  }
}
array(2) {
  [&quot;object_one&quot;]=&gt;
  object(stdClass)#1 (1) {
    [&quot;thing&quot;]=&gt;
    string(20) &quot;array_two,object_two&quot;
  }
  [&quot;object_two&quot;]=&gt;
  object(stdClass)#1 (1) {
    [&quot;thing&quot;]=&gt;
    string(20) &quot;array_two,object_two&quot;
  }
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/post/16723/confirming-that-object-references-in-arrays-are-preserved-while-cloning-the-arrays/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ignoring noise in svn diffs</title>
		<link>http://maisonbisson.com/post/16721/ignoring-noise-in-svn-diffs/</link>
		<comments>http://maisonbisson.com/post/16721/ignoring-noise-in-svn-diffs/#comments</comments>
		<pubDate>Wed, 21 Nov 2012 17:13:01 +0000</pubDate>
		<dc:creator>Casey Bisson</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[end of line markers]]></category>
		<category><![CDATA[eol style]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[trailing whitespace]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/?p=16721</guid>
		<description><![CDATA[svn diff -x "-bw --ignore-eol-style" is your friend when somebody decides to change the end of line style and strip all trailing whitespace from the files in your repo.]]></description>
				<content:encoded><![CDATA[<p><code>svn diff -x "-bw --ignore-eol-style"</code> is your friend when somebody decides to change the end of line style and strip all trailing whitespace from the files in your repo.</p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/post/16721/ignoring-noise-in-svn-diffs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Is Perl the best solution to write code that needs setuid?</title>
		<link>http://maisonbisson.com/post/16718/is-perl-the-best-solution-to-write-code-that-needs-setuid/</link>
		<comments>http://maisonbisson.com/post/16718/is-perl-the-best-solution-to-write-code-that-needs-setuid/#comments</comments>
		<pubDate>Wed, 21 Nov 2012 16:18:21 +0000</pubDate>
		<dc:creator>Casey Bisson</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[command line]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[setuid]]></category>
		<category><![CDATA[unix]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/?p=16718</guid>
		<description><![CDATA[A bunch of searching the web for things related to setuid and shell scripts lead me to this answer in Stack Exchange: Perl explicitly supports setuid scripts in a secure way.]]></description>
				<content:encoded><![CDATA[<p>A bunch of searching the web for things related to setuid and shell scripts lead me to this <a href="http://unix.stackexchange.com/questions/364/allow-setuid-on-shell-scripts">answer in Stack Exchange</a>:</p>
<blockquote><p>Perl explicitly supports setuid scripts in a secure way. In fact, your script can run setuid even if your OS ignored the setuid bit on scripts. This is because perl ships with a setuid root helper that performs the necessary checks and reinvokes the interpreter on the desired scripts with the desired privileges. This is explained in the perlsec manual. It used to be that setuid perl scripts needed #!/usr/bin/suidperl -wT instead of #!/usr/bin/perl -wT, but on most modern systems, #!/usr/bin/perl -wT is sufficient.</p></blockquote>
<p>There was a comment on that answer suggesting the situation had changed recently, but <a href="http://perldoc.perl.org/perlsec.html">the Perl docs assure me it still works</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/post/16718/is-perl-the-best-solution-to-write-code-that-needs-setuid/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>There&#8217;s no &#8216;git cp filename&#8217;?</title>
		<link>http://maisonbisson.com/post/16710/theres-no-git-cp-filename/</link>
		<comments>http://maisonbisson.com/post/16710/theres-no-git-cp-filename/#comments</comments>
		<pubDate>Mon, 19 Nov 2012 05:04:48 +0000</pubDate>
		<dc:creator>Casey Bisson</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[argh]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[version control]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/?p=16710</guid>
		<description><![CDATA[Does git really not have a way to copy files with history?]]></description>
				<content:encoded><![CDATA[<p>Here&#8217;s a sequence of unbelievable things:</p>
<ol>
<li>Yes, despite a lifetime in Subversion, I&#8217;m really this new to git!</li>
<li>I&#8217;m going to link to Livejournal in this post!</li>
<li>Git really doesn&#8217;t have an equivalent to <code>svn cp filename</code>!</li>
</ol>
<p>I spent a surprisingly long time reviewing the man pages and surfing the internet to confirm this, but git really assumes you&#8217;ll never want to copy a file with history. Here&#8217;s <a href="http://markpasc.livejournal.com/186489.html">that Livejournal link</a> I promised, where&nbsp;markpasc has similar complaints &#8212; from 2008, no less.</p>
<p>I was looking for a way to copy a file with history because I needed to break a single file into multiple pieces. In my Subversion days I would have done a <code>svn cp old-file.php new-file.php</code>. From there I could prune <code>old-file.php</code> and <code>new-file.php</code>&nbsp;down to what I needed while preserving the full history for all the code that remained.</p>
<p>Or perhaps I&#8217;m missing something?</p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/post/16710/theres-no-git-cp-filename/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Aww, I got thanked!</title>
		<link>http://maisonbisson.com/post/16495/aww-i-got-thanked/</link>
		<comments>http://maisonbisson.com/post/16495/aww-i-got-thanked/#comments</comments>
		<pubDate>Fri, 16 Nov 2012 04:34:29 +0000</pubDate>
		<dc:creator>Casey Bisson</dc:creator>
				<category><![CDATA[Photoblog]]></category>
		<category><![CDATA[kickstarter]]></category>
		<category><![CDATA[motion control]]></category>
		<category><![CDATA[photography]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/?p=16495</guid>
		<description><![CDATA[I recently backed the Syrp Genie, one of a handful of recent motion control timelapse projects on Kickstarter. It&#8217;s well past its expected ship date, but they done a good job of keeping backers updated on progress and just today they shared photos of the box that will soon be on it&#8217;s way to me. [...]]]></description>
				<content:encoded><![CDATA[<p>I recently backed the <a href="http://www.kickstarter.com/projects/syrp/genie-motion-control-time-lapse-device">Syrp Genie</a>, one of a handful of recent <a href="http://maisonbisson.com/blog/post/16308/motion-control-timelapse-projects-on-kickstarter/">motion control timelapse projects on Kickstarter</a>. It&#8217;s well past its expected ship date, but they done a good job of keeping backers updated on progress and just today they shared photos of the box that will soon be on it&#8217;s way to me. They&#8217;ve thanked backers with a card in every one of them.</p>
<p><a href="http://maisonbisson.com/files/2012/11/image-181179-full.jpg" class="highslide-image" onclick="return hs.expand(this);"><img class="aligncenter size-full wp-image-16496" title="image-181179-full" src="http://maisonbisson.com/files/2012/11/image-181179-full.jpg" alt="" width="560" height="373" /></a></p>
<p>If you look closely, you&#8217;ll see my name straddling the &#8220;thanks&#8221; in the center.</p>
<p><a href="http://maisonbisson.com/files/2012/11/image-181180-full.jpg" class="highslide-image" onclick="return hs.expand(this);"><img class="aligncenter size-full wp-image-16497" title="image-181180-full" src="http://maisonbisson.com/files/2012/11/image-181180-full.jpg" alt="" width="560" height="335" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/post/16495/aww-i-got-thanked/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Greetings Library Scientist</title>
		<link>http://maisonbisson.com/post/16470/greetings-library-scientist/</link>
		<comments>http://maisonbisson.com/post/16470/greetings-library-scientist/#comments</comments>
		<pubDate>Tue, 13 Nov 2012 20:02:41 +0000</pubDate>
		<dc:creator>Casey Bisson</dc:creator>
				<category><![CDATA[Libraries & Networked Information]]></category>
		<category><![CDATA[Politics & Controversy]]></category>
		<category><![CDATA[conference hacking]]></category>
		<category><![CDATA[future libraries]]></category>
		<category><![CDATA[gamification]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[hacking]]></category>
		<category><![CDATA[Heidi Dolomore]]></category>
		<category><![CDATA[lib20]]></category>
		<category><![CDATA[libraries]]></category>
		<category><![CDATA[library 2.0]]></category>
		<category><![CDATA[library science]]></category>
		<category><![CDATA[Osum Library Labs]]></category>
		<category><![CDATA[Patrick Remer]]></category>
		<category><![CDATA[Paula MacKinnon]]></category>
		<category><![CDATA[strategic planning]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/?p=16470</guid>
		<description><![CDATA[The California Library Association is pretty much like every other regional library association I&#8217;ve seen, not least because their most visible presence is their&#160;annual conference. It may be the season, but the CLA is more politically active than others I&#8217;ve known. At their core, most such associations exist to promote&#160;efficient transfer of operational knowledge from [...]]]></description>
				<content:encoded><![CDATA[<p>The <a href="http://cla-net.org">California Library Association</a> is pretty much like every other regional library association I&#8217;ve seen, not least because their most visible presence is their&nbsp;<a href="http://conference.cla-net.org">annual conference</a>. It may be the season, but the CLA is <a href="http://www.cla-net.org/displaycommon.cfm?an=1&amp;subarticlenbr=523">more politically active</a> than others I&#8217;ve known. At their core, most such associations exist to promote&nbsp;efficient transfer of operational knowledge from one library to another, from one generation to another.</p>
<h3 id="libraries-today" >Libraries today</h3>
<p>Unfortunately, in less than a generation&#8217;s time, the very foundations of libraries has been rocked by technological, legal, and economic changes unlike any these organizations have seen before.</p>
<p>New technologies are raising questions about the very purpose for which libraries were founded. Copy protection in most ebooks makes them difficult (<a href="http://librarianinblack.net/librarianinblack/2012/08/ebookssuckitude.html">impossible or illegal</a>) to lend in public libraries, and even as libraries struggle with that, the natural shape of knowledge is changing. Video games are a new form of literature, while internet-only content is often every bit as valuable for library patrons as books or ebooks.</p>
<p>Ebooks pose their own set of technological and legal limits, but now the <a href="http://en.wikipedia.org/wiki/First-sale_doctrine">right of first sale</a> that allows libraries to buy and circulate printed books has <a href="http://copyfight.corante.com/archives/2011/09/09/silly_people_books_are_for_reading.php">been repealed in the US Second Court of Appeals</a>.</p>
<p>And if that weren&#8217;t enough, libraries are bound by <a href="http://freerangelibrarian.com/2010/11/20/scilkenslaw/">historical public expectations</a> (“If the service in question was the only service offered, could the library get local tax dollars to do it?” The answer for everything except book-lending is “not likely.”) and a&nbsp;stagnant economy that has hamstrung library funding, forcing many libraries to cut back staff and hours.</p>
<h3 id="hacking-conferences-to-hack-li" >Hacking conferences to hack libraries</h3>
<p>John Maeda, RISD President and <a href="http://creativeleadership.com">all around smart guy</a>, <a href="http://gigaom.com/2012/11/05/good-design-can-improve-leadership-by-making-big-data-accesible/">spoke at GigaOM&#8217;s RoadMap conference</a> last week about (among other things) the difference between startups and &#8220;endups.&#8221;&nbsp;<a href="http://punchcut.com/perspectives/posts/sketching-roadmap">Joe Pemberton summarized</a> it:</p>
<p><a href="http://maisonbisson.com/files/2012/11/tumblr_md18oriaGk1qz6i2to1_1280.jpg" class="highslide-image" onclick="return hs.expand(this);"><img class="aligncenter size-large wp-image-16473" title="tumblr_md18oriaGk1qz6i2to1_1280" src="http://maisonbisson.com/files/2012/11/tumblr_md18oriaGk1qz6i2to1_1280-1024x768.jpg" alt="" width="500" height="375" /></a></p>
<p>Libraries are optimized for stability; optimized to be low-cost distributors of culture and knowledge in each community. That optimization has worked well when the legal, economic, and technical foundations were solid. It&#8217;s also crippling innovation in the face of the real crisis libraries are now struggling with.</p>
<p>Addressing this isn&#8217;t as simple as minimizing costs for established services. Addressing this requires real strategic planning to identify and leverage opportunities, or at least to prepare for challenges. But how?</p>
<p>The answer, of course, is to turn it into a game. You&#8217;ll have to commit yourself to renting a very expensive booth at the conference, you&#8217;ll have to staff it for three days, and you&#8217;ll have to be the most cheerful and energetic person in the exhibit hall. You are, after all, hacking for good.</p>
<p><a href="http://osumlibrarylabs.com">Osum Library Labs</a> is the result:</p>
<blockquote><p><a title="Contact" href="http://osumliblabs.wordpress.com/about/">Osum scientists</a>&nbsp;created a Library Science Periodic Table of Elements populated with&nbsp;<a href="http://en.wikipedia.org/wiki/PEST_analysis">external factors (and predictions)</a>&nbsp;that affect California communities, and by extension, California libraries (like “wearable computers” or “low science test scores among 2nd graders”). Visitors to the Osum booth will receive element trading cards, along with a&nbsp;<a href="http://osumliblabs.files.wordpress.com/2012/10/osumlibrarylogo_bg12.jpg" class="highslide-image" onclick="return hs.expand(this);">Library Science</a>&nbsp;sticker that can be worn on conference badges (so everyone knows you’re a scientist!) and an observation log.</p>
<p>Recruits will seek out other Library Scientists at the conference. When scientists meet, their elements cause a chemical reaction! Scientists will exchange cards and discuss hypotheses: What happens when the two elements interact? How can libraries respond? Scientists can record their hypotheses and observations on the observation log. Osum Labs will compile and analyze the results. As a reward for their scientific research, each observation log returned to the Osum booth counts as an entry into a drawing for the grand prize trophy for the Nobel Prize for Library Science.</p></blockquote>
<p>Heidi Dolomore, Patrick Remer, Paula MacKinnon, and some fellow travelers put it all together (word is that Patrick did the graphic design). Here&#8217;s what it looked like:</p>
<ul>
<li>&#8220;Greetings library scientist,&#8221; Patrick exclaimed to draw unsuspecting conference attendees into the booth.
<p><a title="Patrick explains by misterbisson, on Flickr" href="http://www.flickr.com/photos/maisonbisson/8177782206/"><img src="http://farm9.staticflickr.com/8199/8177782206_2c09b4bbeb_n.jpg" alt="Patrick explains" width="320" height="260" /></a></li>
<li>He was prepared for each librarian with a sticker in hand. He&#8217;d place it on their badge while explaining the game.
<p><a title="Library Science! by misterbisson, on Flickr" href="http://www.flickr.com/photos/maisonbisson/8177752221/"><img src="http://farm9.staticflickr.com/8198/8177752221_49164dd550_n.jpg" alt="Library Science!" width="240" height="320" /></a></li>
<li>This periodic table is not technically periodic, as one attendee&nbsp;pointed out proudly, but it&#8217;s colorful and fun way to track the element cards you&#8217;re trading.
<p><a title="Periodic table of elements (that may disrupt libraries) by misterbisson, on Flickr" href="http://www.flickr.com/photos/maisonbisson/8177782708/"><img src="http://farm9.staticflickr.com/8207/8177782708_387eae407e_n.jpg" alt="Periodic table of elements (that may disrupt libraries)" width="320" height="234" /></a></li>
<li>The element trading cards represent actual and imagined conditions that may affect libraries.
<p><a title="Element trading cards by misterbisson, on Flickr" href="http://www.flickr.com/photos/maisonbisson/8177752881/"><img src="http://farm9.staticflickr.com/8198/8177752881_8b94b1f48b_n.jpg" alt="Element trading cards" width="240" height="320" /></a></li>
<li>The trophy for the Nobel Prize for Library Science goes to the library scientist with the most innovative reactions and thorough observations.
<p><a title="Nobel Prize for Library Science trophy! by misterbisson, on Flickr" href="http://www.flickr.com/photos/maisonbisson/8177783882/"><img src="http://farm9.staticflickr.com/8481/8177783882_d0c366b49c_n.jpg" alt="Nobel Prize for Library Science trophy!" width="204" height="320" /></a></li>
</ul>
<p>We&#8217;ll see this again, hopefully at another conference, but I expect somebody else will copy it for a management training seminar. I&#8217;m not saying good things about management seminars, just that mimicry is flattery. Nice work Heidi, Patrick, and Paula!</p>
<p>(Aside:&nbsp;Jennifer Palkha, founder of Code For America, <a href="http://gigaom.com/2012/11/05/dont-laugh-code-for-america-thinks-government-can-be-beautiful/">had a lot to say in this space too</a>.)</p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/post/16470/greetings-library-scientist/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Our Arbitrary Alphabet</title>
		<link>http://maisonbisson.com/post/16460/our-arbitrary-alphabet/</link>
		<comments>http://maisonbisson.com/post/16460/our-arbitrary-alphabet/#comments</comments>
		<pubDate>Tue, 06 Nov 2012 15:27:07 +0000</pubDate>
		<dc:creator>Casey Bisson</dc:creator>
				<category><![CDATA[Libraries & Networked Information]]></category>
		<category><![CDATA[alphabet]]></category>
		<category><![CDATA[alphabetization]]></category>
		<category><![CDATA[arbitrary]]></category>
		<category><![CDATA[chaos]]></category>
		<category><![CDATA[order]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/?p=16460</guid>
		<description><![CDATA[We have been gaslighted by the alphabet and now believe the arbitrary string of letters is actually organized according to some plan.]]></description>
				<content:encoded><![CDATA[<p>We have been gaslighted by the alphabet and now believe the arbitrary string of letters is actually organized according to some plan.</p>
<p><a href="http://www.e-flux.com/journal/alphabetization-part-two-hegemonic-language-and-arbitrary-order/">Hegemonic Language and Arbitrary Order</a></p>
<blockquote><p>The signs used in writing originate in arbitrary decisions, but the connection with arbitrariness is lost when convention takes over. The convention of long usage kills even the memory of the initial arbitrariness of the signs and gives them an objective and seemingly inevitable presence. Order is thereby preserved.</p></blockquote>
<p>Rhythm and rhyme lend an aura of intention to it all (<a href="http://en.wikipedia.org/wiki/Once_in_a_Lifetime_(Talking_Heads_song)#Production">cf. Brian Eno&#8217;s lyrics on Once in a Lifetime</a>).</p>
<p><a href="http://www.psychologytoday.com/blog/thinking-about-kids/201011/why-is-the-alphabet-in-alphabetical-order">Why is the alphabet in alphabetical order?</a></p>
<blockquote><p>And why is the alphabet in the order it is?  It has been in more or less the same order for thousands of years, with roots in early alphabets in their ordering.  But why are they organized the way THEY are?  Probably (no one knows for sure) because it’s easy to memorize in that order. Currently, we stop at the rhymes and give it a bouncy little rhythm (abCdefG hiJklmnoP qrS tuV wX Y and Z).   We have created a semblance of order from chaos – an arbitrary collection of nonsense sounds. The cognitive psychologists among us might note that there ae 7 chunks (consonant with the magic number of things we can remember &#8211; 7 plus or minus 2).</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/post/16460/our-arbitrary-alphabet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Strange things running on my Mac</title>
		<link>http://maisonbisson.com/post/16458/strange-things-running-on-my-mac/</link>
		<comments>http://maisonbisson.com/post/16458/strange-things-running-on-my-mac/#comments</comments>
		<pubDate>Sun, 04 Nov 2012 13:17:03 +0000</pubDate>
		<dc:creator>Casey Bisson</dc:creator>
				<category><![CDATA[Dispatches]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[imac]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[mac os]]></category>
		<category><![CDATA[mac os X]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/?p=16458</guid>
		<description><![CDATA[My iMac screen is dark and isn&#8217;t lighting up like I expect it to when I tap the keyboard. I can, however, SSH into it and see what it&#8217;s doing when not responding to me. I found GoogleSoftwareUpdateAgent running, this FAQ item vaguely tells me it&#8217;s part of Chrome, and that if I try to uninstall it [...]]]></description>
				<content:encoded><![CDATA[<p>My iMac screen is dark and isn&#8217;t lighting up like I expect it to when I tap the keyboard. I can, however, SSH into it and see what it&#8217;s doing when not responding to me.</p>
<p>I found GoogleSoftwareUpdateAgent running, <a href="http://support.google.com/installer/bin/answer.py?hl=en&amp;answer=100386">this FAQ item</a> vaguely tells me it&#8217;s part of Chrome, and that if I try to uninstall it without also uninstalling Chrome it will simply &#8220;be reinstalled after a few hours.&#8221;</p>
<p>Two instances of PTPCamera are running. This may be related to <a href="http://en.wikipedia.org/wiki/Picture_Transfer_Protocol">Picture Transfer Protocol</a> used in some cameras and has caused more than a few people to <a href="https://discussions.apple.com/thread/3821361?start=0&amp;tstart=0">ask why it&#8217;s running</a>.</p>
<p>com.apple.iCloudHelper is using a lot of CPU (100% of one of the cores). Googling for it reveals other people <a href="https://discussions.apple.com/thread/4194186?start=45&amp;tstart=0">inspecting their systems while the screen refuses to awaken</a>. I&#8217;m guessing it&#8217;s related to, um, iCloud and syncing, but the interwebs don&#8217;t say much more about it and killing it didn&#8217;t fix the problem.</p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/post/16458/strange-things-running-on-my-mac/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Action Camera Market Not Yet Saturated, According To Sony</title>
		<link>http://maisonbisson.com/post/16424/action-camera-market-not-yet-saturated-according-to-sony/</link>
		<comments>http://maisonbisson.com/post/16424/action-camera-market-not-yet-saturated-according-to-sony/#comments</comments>
		<pubDate>Mon, 24 Sep 2012 03:12:10 +0000</pubDate>
		<dc:creator>Casey Bisson</dc:creator>
				<category><![CDATA[Photoblog]]></category>
		<category><![CDATA[action camera]]></category>
		<category><![CDATA[GoPro]]></category>
		<category><![CDATA[sony]]></category>
		<category><![CDATA[video camera]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/?p=16424</guid>
		<description><![CDATA[I wondered if the GoPro-style action camera market had already become saturated back in January, now I&#8217;ve learned that Sony apparently doesn&#8217;t think so. At least one imagines that&#8217;s the conclusion they came to before deciding to join the competition with a camera of their own. They call it the Action Cam, and it clearly [...]]]></description>
				<content:encoded><![CDATA[<p>I wondered if the <a href="http://gopro.com">GoPro</a>-style action camera market had <a href="http://maisonbisson.com/blog/post/16098/action-cameras/">already become saturated</a> back in January, now I&#8217;ve learned that Sony apparently doesn&#8217;t think so. At least one imagines that&#8217;s the conclusion they came to before deciding to join the competition with a camera of their own. They call it the <a href="http://store.sony.com/p/Action-Cam%2C-Compact%2C-Rugged%2C-HD-video%2C-action-camcorder%2C-Go-Pro%2C-Skateboarding%2C-Cycling%2C-Hiking%2C-Wi-Fi%2C-AS15/en/p/HDRAS15/B#specifications">Action Cam</a>, and it clearly takes its design cues from <a href="http://contour.com">Contour</a>.</p>
<p>What does Sony offer to stand apart from the <a href="http://maisonbisson.com/blog/post/16098/action-cameras/">established players</a>? 120 frames per second at 720p, WiFi, and SteadyShot is what they&#8217;d say, though SteadyShot takes the angle of view from 170° down to 120°. It doesn&#8217;t do meaningful still photos or timelapse.</p>
<p>It <a href="http://www.amazon.com/Sony-HDR-AS15-Action-Video-Camera/dp/B0090EC5MS/?tag=maisonbisson-20">releases on September 24 for $270 if you&#8217;re still interested</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/post/16424/action-camera-market-not-yet-saturated-according-to-sony/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>USB Camera Control</title>
		<link>http://maisonbisson.com/post/16416/usb-camera-control/</link>
		<comments>http://maisonbisson.com/post/16416/usb-camera-control/#comments</comments>
		<pubDate>Sun, 23 Sep 2012 16:48:57 +0000</pubDate>
		<dc:creator>Casey Bisson</dc:creator>
				<category><![CDATA[Photoblog]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[camera control]]></category>
		<category><![CDATA[Canon EOS]]></category>
		<category><![CDATA[remote control]]></category>
		<category><![CDATA[timelapse]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/?p=16416</guid>
		<description><![CDATA[Problem The Canon EOS M doesn&#8217;t include a remote shutter release cable port, and the on-camera controls don&#8217;t expose features such as bulb-mode exposures. Further, simple remote shutter release doesn&#8217;t support the sophisticated camera control necessary to do timelapses with complex exposures. What kind of complex exposures? Imagine a timelapse going from day to night. During daylight [...]]]></description>
				<content:encoded><![CDATA[<h3 id="problem" >Problem</h3>
<p>The <a href="http://www.dpreview.com/previews/canon-eos-m/">Canon EOS M</a> doesn&#8217;t include a remote shutter release cable port, and the on-camera controls don&#8217;t expose features such as bulb-mode exposures. Further, simple remote shutter release doesn&#8217;t support the sophisticated camera control necessary to do timelapses with complex exposures.</p>
<p>What kind of complex exposures? Imagine a timelapse going from day to night. During daylight the exposure might be f8, 1/1000 second at ISO 100, but the night exposure might require f4 1/15 second at ISO 400. That&#8217;s three stops change in ISO, six stops change in exposure time, and two stops change in aperture, totaling 11 stops difference. You can&#8217;t rely on auto exposure during a timelapse because it can result in exposures that pump up and down as clouds pass by, but changing the exposure manually during that time can result in dramatic shifts. An automated tool adjust the exposure based on the metered reading, but limit changes to no more than 1/4 stop over 30 frames, for instance. (Note, those exposure values are totally pulled out of my ass and they don&#8217;t even look right to me now, but you got the point.)</p>
<h3 id="prior-art" >Prior art</h3>
<p><a href="http://www.ononesoftware.com/products/dslr-camera-remote">DSLR Camera Remote</a> is a commercial software product that demonstrates what can be done when interacting with a camera over the USB port. <a href="http://gphoto.org/">Libgphoto</a> appears to support similar <a href="http://gphoto.org/doc/remote/">remote control</a> of cameras over the USB port (<a href="http://gphoto.org/doc/manual/FAQ.html">FAQ</a>), though without the pretty app. <a href="http://svbreakaway.info/tp-cc.php">This guy wrote about building a camera controller</a>, but the approach was focused on triggering the shutter switch, rather than controlling camera features. The proliferation of DSLR-wielding filmmakers has created a market for <a href="http://www.okii.net/product_p/fc1.htm">USB focus controllers</a>.</p>
<h3 id="requirements" >Requirements</h3>
<ul>
<li>USB control of Canon EOS cameras, including control of aperture, exposure time, focus, ISO speed (optional), and display of last shot taken (or live preview, if available).</li>
<li>Ability to receive exposure trigger commands from another timing device, such as an intervalometer or motion control equipment, and execute that exposure trigger on the camera via the USB interface.</li>
<li>Interact with a client device via WiFi.</li>
<li>Be battery powered and run for 12 hours on battery power.</li>
</ul>
<h3 id="option-1" >Option 1</h3>
<p>Build a compact solution. A web app interacting with <a href="http://gphoto.org/">libgphoto</a> on a <a href="https://www.gumstix.com/store/product_info.php?products_id=266">Gumstix Overo</a> (with <a href="https://www.gumstix.com/store/product_info.php?products_id=239">Pinto</a> for USB , and maybe a <a href="https://www.gumstix.com/store/product_info.php?products_id=230">Tobi</a> and <a href="https://www.gumstix.com/store/product_info.php?products_id=70">5V US Power Adapter</a> while building it) running <a href="http://wiki.gumstix.org/index.php?title=Installing_Ubuntu_10.04_on_Gumstix_Overo#Ubuntu_on_Overo_COM">Ubuntu</a>.</p>
<p>The Gumstix computer on module has built-in WiF, and the Pinto board&#8217;s <a href="http://en.wikipedia.org/wiki/USB_On-The-Go">USB OTG</a> should support the required camera connectivity. The hardware cost starts at about $300, without a housing or battery.</p>
<p>This could be a very elegant solution, especially with a well-designed app and housing. The entire device might be made tripod mountable with the camera, so cables can be kept short and the device&#8217;s visibility minimized. Achieving that elegance, however, would demand significant effort.</p>
<h3 id="option-2" >Option 2</h3>
<p>Assemble off-shelf components. An <a href="http://usa.asus.com/Eee/Eee_PC/">Asus Eee PC netbook</a> (<a href="http://www.amazon.com/X101CH-EU17-BK-10-1-Inch-Netbook-Matte-Black/dp/B0071N6AC6/?tag=maisonbisson-20">store</a>) or <a href="http://www.fit-pc.com/web/">fit PC</a> (<a href="http://www.amazon.com/CompuLab-fit-PC2i-Diskless-Atom-Z530/dp/B003KJ8GM2/?tag=maisonbisson-20">store</a>) running Windows and the DSLR Camera Remote server (though a <a href="http://store.apple.com/us/browse/home/shop_mac/family/mac_mini">Mac Mini</a> or <a href="http://store.apple.com/us/browse/home/shop_mac/family/macbook_air">MacBook Air</a> could probably fill the bill as well, I just feel bad relegating a nice machine to dumb work). Power consumption will be greater than with Option 1 and a larger battery will be required in addition to the computer host to run for 12 hours.</p>
<p>This option is probably the fastest solution, but lacks the potential elegance and compactness of the first. Packing all the equipment into the wilderness and preventing theft in the city will be a greater challenge.</p>
<h3 id="conclusion" >Conclusion</h3>
<p>My searches for existing products may have been incomplete, but assuming that there is no existing product to do what I need, and assuming libgphoto can support the required camera control, option 1 appears to be the best solution in the long term. Anybody want to help? Is it work doing a Kickstarter?</p>
<h3 id="update-option-3" >Update, option 3</h3>
<p>Give up on the exposure control requirements and focus on shutter triggering. <a href="http://www.gentles.ltd.uk">Gentles</a> offers <a href="http://www.gentles.ltd.uk/gentled/index.htm">devices</a> that can <a href="http://www.gentles.ltd.uk/gentled/shutterplus.htm">trigger the shutter via the IR remote</a> on many cameras. It&#8217;s some pretty straightforward kit, but there&#8217;s no option to manage the exposure via that interface.</p>
]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/post/16416/usb-camera-control/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Geography vs. Stereotypes</title>
		<link>http://maisonbisson.com/post/16364/geography-vs-stereotypes/</link>
		<comments>http://maisonbisson.com/post/16364/geography-vs-stereotypes/#comments</comments>
		<pubDate>Thu, 13 Sep 2012 19:14:07 +0000</pubDate>
		<dc:creator>Casey Bisson</dc:creator>
				<category><![CDATA[Dispatches]]></category>
		<category><![CDATA[funny]]></category>
		<category><![CDATA[mapping]]></category>
		<category><![CDATA[maps]]></category>
		<category><![CDATA[prejudices]]></category>
		<category><![CDATA[social geography]]></category>
		<category><![CDATA[stereotypes]]></category>

		<guid isPermaLink="false">http://maisonbisson.com/?p=16364</guid>
		<description><![CDATA[Alphadesigner is trying to put a finger on it with his Mapping Stereotypes series. Others, including how Americans see Europe and the world according to America, are not nearly as well designed. We&#8217;d be fools, however, to think we invented the idea of mapping our prejudices. This Flickr set of maps from 1870 through 1915 is good evidence of that.]]></description>
				<content:encoded><![CDATA[<p><a href="http://alphadesigner.com/about/">Alphadesigner</a> is trying to put a finger on it with his <a href="http://alphadesigner.com/mapping-stereotypes/">Mapping Stereotypes</a> series. Others, including <a href="http://webatlantis.org/2010/05/14/how-americans-see-europe/">how Americans see Europe</a> and <a href="http://interculturalmeanderings.wordpress.com/2011/07/18/why-americans-view-the-world-as-geography-cartoons-depict/">the world according to America</a>, are not nearly as well designed. We&#8217;d be fools, however, to think we invented the idea of mapping our prejudices. This <a href="http://www.flickr.com/photos/linderesa/sets/72157628082092611/detail/">Flickr set of maps from 1870 through 1915 is good evidence of that</a>.</p>

<a href='http://maisonbisson.com/post/16364/geography-vs-stereotypes/world-according-to-the-united-states-of-america/' title='World According to the United States of America'><img width="150" height="150" src="http://maisonbisson.com/files/2012/09/world-according-to-the-united-states-of-america-150x150.jpg" class="attachment-thumbnail" alt="World According to the United States of America" /></a>
<a href='http://maisonbisson.com/post/16364/geography-vs-stereotypes/comic-map-of-europe-at-war/' title='comic-map-of-europe-at-war'><img width="150" height="150" src="http://maisonbisson.com/files/2012/09/comic-map-of-europe-at-war-150x150.jpg" class="attachment-thumbnail" alt="comic-map-of-europe-at-war" /></a>
<a href='http://maisonbisson.com/post/16364/geography-vs-stereotypes/the-world-according-to-america/' title='the-world-according-to-america'><img width="150" height="150" src="http://maisonbisson.com/files/2012/09/the-world-according-to-america-150x150.jpg" class="attachment-thumbnail" alt="the-world-according-to-america" /></a>
<a href='http://maisonbisson.com/post/16364/geography-vs-stereotypes/map-how-americans-see-europe/' title='map-how-americans-see-europe'><img width="150" height="150" src="http://maisonbisson.com/files/2012/09/map-how-americans-see-europe-150x150.jpg" class="attachment-thumbnail" alt="map-how-americans-see-europe" /></a>

]]></content:encoded>
			<wfw:commentRss>http://maisonbisson.com/post/16364/geography-vs-stereotypes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>