<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Quoderat</title>
	<atom:link href="http://quoderat.megginson.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://quoderat.megginson.com</link>
	<description>Open information and technology.</description>
	<lastBuildDate>Mon, 05 Dec 2011 09:40:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='quoderat.megginson.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Quoderat</title>
		<link>http://quoderat.megginson.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://quoderat.megginson.com/osd.xml" title="Quoderat" />
	<atom:link rel='hub' href='http://quoderat.megginson.com/?pushpress=hub'/>
		<item>
		<title>POST, PUT, idempotence, and self-identification</title>
		<link>http://quoderat.megginson.com/2011/11/17/post-put-idempotence-and-self-identification/</link>
		<comments>http://quoderat.megginson.com/2011/11/17/post-put-idempotence-and-self-identification/#comments</comments>
		<pubDate>Thu, 17 Nov 2011 22:42:40 +0000</pubDate>
		<dc:creator>David Megginson</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://quoderat.megginson.com/?p=538</guid>
		<description><![CDATA[I realize that the title of this posting might be a bit off-putting for non-RESTafarians, but it&#8217;s about a topic that matters to anyone building an application that uses simple web standards for updates. Background: how REST usually works There &#8230; <a href="http://quoderat.megginson.com/2011/11/17/post-put-idempotence-and-self-identification/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=quoderat.megginson.com&amp;blog=14988159&amp;post=538&amp;subd=quoderatech&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I realize that the title of this posting might be a bit off-putting for non-<a href="http://en.wikipedia.org/wiki/Representational_state_transfer">RESTafarians</a>, but it&#8217;s about a topic that matters to anyone building an application that uses simple web standards for updates.</p>
<div id="background">
<h2>Background: how REST usually works</h2>
<p>There are two <a href="http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol">HTTP methods</a> that you can use for adding/updating information on a web site:</p>
<dl>
<dt>PUT</dt>
<dd>PUT, when you know the address (URL) of the thing you&#8217;re adding/updating.</dd>
<dt>POST</dt>
<dd>POST, when you <em>don&#8217;t</em> know the address of the thing you&#8217;re adding/updating (you&#8217;re implicitly asking the server to assign a URL for you).</dd>
</dl>
<p>Since PUT refers to a specific URL, people say that it&#8217;s idempotent &mdash; that is, if you repeat the same operation three times, it won&#8217;t create three separate resources on the server (I&#8217;ve simplified the HTTP headers a fair bit in these examples):</p>
<pre>
PUT http://example.org/greetings/resource01.xml

&lt;greeting&gt;Hello!&lt;/greeting&gt;
</pre>
<pre>
PUT http://example.org/greetings/resource01.xml

&lt;greeting&gt;Hello!&lt;/greeting&gt;
</pre>
<pre>
PUT http://example.org/greetings/resource01.xml

&lt;greeting&gt;Hello!&lt;/greeting&gt;
</pre>
<p>The result is just <em>one</em> resource at <code>http://example.org/greetings/resource01.xml</code>.</p>
<p>POST, on the other hand, sends the request to one URL (or other address) that will place the resource at a <em>different</em> URL.  If PUT is like placing the resource in a file yourself, POST is like handing it to a file clerk.  As a result, POST is <em>not</em> guaranteed to be idempotent:</p>
<pre>
POST http://example.org/actions/add-greeting

&lt;greeting&gt;Hello!&lt;/greeting&gt;
</pre>
<pre>
PUT http://example.org/actions/add-greeting

&lt;greeting&gt;Hello!&lt;/greeting&gt;
</pre>
<pre>
PUT http://example.org/actions/add-greeting

&lt;greeting&gt;Hello!&lt;/greeting&gt;
</pre>
<p>In this case, HTTP itself makes no guarantee that this three-time repetition won&#8217;t result in representations of three different resources with the same content, say <code>http://example.org/greetings/resource01.xml</code>, <code>http://example.org/greetings/resource02.xml</code>, and <code>http://example.org/greetings/resource03.xml</code>.</p>
<p><!-- background -->
</div>
<div id="identification">
<h2>Self-identification</h2>
<p>So that&#8217;s it, as far as HTTP goes, because HTTP is just a <a href="http://en.wikipedia.org/wiki/Transport_layer">transport layer</a> &mdash; with a few exceptions (like re-encoding text files), it doesn&#8217;t care whether you&#8217;re using it to send a picture, video, web page, or XML file.  Because HTTP doesn&#8217;t know anything about your resource, it can&#8217;t make any guarantee about the idempotence of POST.</p>
<p>Let&#8217;s say, however, that you&#8217;re designing an XML-based web application where every resource has its own, internal unique identifier.  To take a simple example, let&#8217;s use <a href="http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2">ISO 3166-1 alpha2</a> country codes, such as &#8220;US&#8221; for the United States or &#8220;DE&#8221; for Germany.  Your XML files always contain the identifier in a place that the application can find it:</p>
<pre>
&lt;country ident="CN"&gt;
  &lt;name&gt;China&lt;/name&gt;
  &lt;population&gt;1338299500&lt;/population&gt;
  &lt;land-area unit="km2"&gt;9640011&lt;/land-area&gt;
&lt;/country&gt;
</pre>
<p>If your web application has a fixed URL scheme based on the ISO 3166 code, it will create this resource at (say) <code>http://example.org/countries/CN.xml</code> when you POST it. If you POST it a second time, it won&#8217;t create a second copy of the same information, because it has a fixed mapping between the code &#8220;CN&#8221; and the URL, and knows that this is a new representation of the same resource.  In other words, while HTTP itself can&#8217;t guarantee idempotence for a POST operation, the web application can.</p>
<p><!-- identification -->
</div>
<div id="design">
<h2>So now what?</h2>
<p>So for a web application like this, does it make sense to have both POST and PUT operations?  <a href="http://en.wikipedia.org/wiki/Resource_Description_Framework">RDF</a> fans would say clearly &#8220;yes&#8221;, since they would consider the URL &mdash; not the ISO 3166 code &mdash; to be the resource&#8217;s identifier, and I feel strong sympathy with that approach (URLs make great global identifiers for things).  There is, however, a down-side.  Let&#8217;s say I&#8217;m reading data from a legacy system that doesn&#8217;t know or care about URLs.  Does it make sense to force that system to duplicate my URL-construction algorithm, and know to PUT its updates for China to <code>http://example.org/countries/CN.xml</code>, for Canada to <code>http://example.org/countries/CA.xml</code>, etc.?  Or does it make sense just to let the client POST to a single URL, knowing that the application will enforce idempotence based on the domain-unique identifier in the XML file?</p>
<p>I actually haven&#8217;t made up my mind on this point yet. As I wrote in <a href="/2005/04/03/post-in-rest-create-update-or-action/">a 2005 posting</a>, real-world REST applications generally stick to GET for retrieval and POST for creation/updating/deletion, however inelegant that approach may be.  I hope things have improved in the last 6½ years, but I&#8217;m not confident that they have.</p>
<p>What do you think?  Is allowing both POST and PUT unnecessarily complicating the interface for the sake of RESTful purity, or is using only POST for creation and updating breaking the implied contract of HTTP and risking confusion among users?</p>
<p><!-- design -->
</div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/quoderatech.wordpress.com/538/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/quoderatech.wordpress.com/538/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/quoderatech.wordpress.com/538/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/quoderatech.wordpress.com/538/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/quoderatech.wordpress.com/538/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/quoderatech.wordpress.com/538/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/quoderatech.wordpress.com/538/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/quoderatech.wordpress.com/538/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/quoderatech.wordpress.com/538/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/quoderatech.wordpress.com/538/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/quoderatech.wordpress.com/538/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/quoderatech.wordpress.com/538/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/quoderatech.wordpress.com/538/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/quoderatech.wordpress.com/538/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=quoderat.megginson.com&amp;blog=14988159&amp;post=538&amp;subd=quoderatech&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://quoderat.megginson.com/2011/11/17/post-put-idempotence-and-self-identification/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c5f095286dd8a3f1dbbc047412a10fb3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">davidmegginson</media:title>
		</media:content>
	</item>
		<item>
		<title>MySQL wrapper script: variables from the command line</title>
		<link>http://quoderat.megginson.com/2011/06/21/mysql-wrapper-script-variables-from-the-command-line/</link>
		<comments>http://quoderat.megginson.com/2011/06/21/mysql-wrapper-script-variables-from-the-command-line/#comments</comments>
		<pubDate>Tue, 21 Jun 2011 19:30:59 +0000</pubDate>
		<dc:creator>David Megginson</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[databases]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://quoderat.megginson.com/?p=528</guid>
		<description><![CDATA[There&#8217;s a lot I like about PostgreSQL, and I&#8217;ll probably switch eventually, but for now, I&#8217;m still more comfortable with MySQL, especially its ability to update huge amounts of existing data in-place very quickly. I do have some technical gripes &#8230; <a href="http://quoderat.megginson.com/2011/06/21/mysql-wrapper-script-variables-from-the-command-line/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=quoderat.megginson.com&amp;blog=14988159&amp;post=528&amp;subd=quoderatech&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>There&#8217;s a lot I like about <a href="http://www.postgresql.org/">PostgreSQL</a>, and I&#8217;ll probably switch eventually, but for now, I&#8217;m still more comfortable with <a href="http://www.mysql.com/">MySQL</a>, especially its ability to update huge amounts of existing data in-place very quickly.</p>
<p>I do have some technical gripes with MySQL, though:</p>
<ul>
<li>InnoDB doesn&#8217;t support fulltext indexes, so I&#8217;ve forced to give up referential integrity for any table that needs fulltext searching.</li>
<li>The <code>mysql(1)</code> command-line tool doesn&#8217;t allow setting user variables on the command line when invoking a script.</li>
</ul>
<p>The first is too big a problem for me to take on right now, but the second looked like it just needed a bit of perl magic, so I wrote a wrapper script:</p>
<blockquote><p>
<a href="http://www.megginson.com/downloads/runmysql.gz">runmysql</a>
</p></blockquote>
<p>This script scans each command-line option for a string beginning with &#8220;@&#8221;, and pulls it out of the arguments before passing the rest on to mysql.  Any option in the format <var>@name=value</var> will be converted to a SQL variable declaration and passed to mysql; any other option gets passed through unmodified.</p>
<h2>Example</h2>
<p>Let&#8217;s say that you have a SQL script named <code>getstuff.sql</code>:</p>
<pre>
use mydatabase;

select * from Stuff where type=@type;
</pre>
<p>You can invoke this script like this:</p>
<pre>
runmysql @type=foo -X &lt; getstuff.sql
</pre>
<p>The script will run the command &#8220;mysql -X&#8221; (the &#8220;-X&#8221; means XML output &#8212; it&#8217;s just there to demonstrate how other options get passed through), and prepend a declaration to the SQL script, so that MySQL actually sees this:</p>
<pre>
set @type = 'foo';
use mydatabase;

select * from Stuff where type=@type;
</pre>
<p>That&#8217;s it, really.  Of course, it&#8217;s not that useful in a trivial script like this, but for scripts that load data from many different files (for example), it makes life much simpler.</p>
<br /> Tagged: <a href='http://quoderat.megginson.com/tag/databases/'>databases</a>, <a href='http://quoderat.megginson.com/tag/mysql/'>mysql</a>, <a href='http://quoderat.megginson.com/tag/perl/'>perl</a>, <a href='http://quoderat.megginson.com/tag/tips/'>tips</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/quoderatech.wordpress.com/528/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/quoderatech.wordpress.com/528/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/quoderatech.wordpress.com/528/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/quoderatech.wordpress.com/528/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/quoderatech.wordpress.com/528/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/quoderatech.wordpress.com/528/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/quoderatech.wordpress.com/528/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/quoderatech.wordpress.com/528/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/quoderatech.wordpress.com/528/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/quoderatech.wordpress.com/528/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/quoderatech.wordpress.com/528/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/quoderatech.wordpress.com/528/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/quoderatech.wordpress.com/528/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/quoderatech.wordpress.com/528/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=quoderat.megginson.com&amp;blog=14988159&amp;post=528&amp;subd=quoderatech&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://quoderat.megginson.com/2011/06/21/mysql-wrapper-script-variables-from-the-command-line/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c5f095286dd8a3f1dbbc047412a10fb3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">davidmegginson</media:title>
		</media:content>
	</item>
		<item>
		<title>Teachers, students, and online behaviour</title>
		<link>http://quoderat.megginson.com/2011/04/12/teachers-students-and-online-behaviour/</link>
		<comments>http://quoderat.megginson.com/2011/04/12/teachers-students-and-online-behaviour/#comments</comments>
		<pubDate>Tue, 12 Apr 2011 12:23:35 +0000</pubDate>
		<dc:creator>David Megginson</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://quoderat.megginson.com/?p=489</guid>
		<description><![CDATA[This passage recently appeared in a CBC story entitled &#8220;Ont. teachers advised not to tweet with students&#8220;: The Ontario College of Teachers says teachers should avoid connecting with their students on Facebook or Twitter. They are also told to avoid &#8230; <a href="http://quoderat.megginson.com/2011/04/12/teachers-students-and-online-behaviour/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=quoderat.megginson.com&amp;blog=14988159&amp;post=489&amp;subd=quoderatech&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>This passage recently appeared in a CBC story entitled &#8220;<a href="http://www.cbc.ca/news/canada/ottawa/story/2011/04/12/teachers-twitter-facebook.html">Ont. teachers advised not to tweet with students</a>&#8220;:</p>
<blockquote><p>
The Ontario College of Teachers says teachers should avoid connecting with their students on Facebook or Twitter.</p>
<p>They are also told to avoid contacting them on LinkedIn, Flickr, YouTube and MySpace.
</p></blockquote>
<p>It&#8217;s a great idea to offer guidelines for how teachers communicate with vulnerable pre-College/University students; it&#8217;s too bad that the College revealed little other than its own ignorance in the way it wrote them.  In a sense, that&#8217;s our fault in IT, because we call a whole bunch of unrelated things &#8220;social media&#8221;, so we can hardly expect teacher-bureaucrats to distinguish between broadcasting publicly over Twitter and exchanging secrets with a select group of friends over Facebook.</p>
<h2>Not where you are, but what you&#8217;re doing</h2>
<p>So, let&#8217;s forget about red herrings like online vs. offline, social media, etc., and instead, propose two simple questions a teacher has to answer:</p>
<ol>
<li>
<p>Is it all taking place in the public view (can the student&#8217;s parents, my colleagues, my principal, etc. follow the exchange)?</p>
</li>
<li>
<p>Is it related to my role as a teacher (am I using this information to help teach, or do I have non-professional motives)?</p>
</li>
</ol>
<p>If the answer to both these questions is &#8220;yes&#8221;, then the communication is probably appropriate, whether it&#8217;s through the spoken word, paper, Twitter, Facebook, or any channel.</p>
<h2>Good and bad communication</h2>
<p>Here are some examples of how the questions play out:</p>
<ul>
<li>
<p>It is OK, and often desirable, for a student to read public school-related information posted by a teacher, whether it&#8217;s on a bulletin board in the hallway, a Twitter feed, a blog, or a posting in a Facebook group.  &#8220;Public&#8221; means that the parents and principal can read it too.  It&#8217;s a good way for a teacher to communicate with the students (deadlines, assignments, study hints, etc.) and encourage discussion.</p>
</li>
<li>
<p>It is usually OK for a teacher to read public information posted by a student, whether it&#8217;s a letter to the editor in a newspaper, a Twitter feed, or a posting in a Facebook group.  The key is whether the information is related to the teacher&#8217;s role &mdash; for example, reading a feed of public political. literary or math tweets from a student is being a good teacher; scouring tweets (or any other public information, such as Google Streetview or the phone book) for personal information is stalking.</p>
</li>
<li>
<p>It is probably not OK for a teacher to open private communication channels with a student, where the communication can&#8217;t be seen by other teachers, parents, etc.  This would include passing private notes in the student&#8217;s locker, exchanging email (unless the parent or another teacher is CC&#8217;d on it), becoming Facebook friends, chatting privately using Jabber or MSN, or exchanging SMS text messages.  This is a bad idea even if the communication is meant to be strictly professional, because it leaves students open to manipulation, and teachers open to accusation.</p>
</li>
</ul>
<p>Sound reasonable?  It&#8217;s not the <em>platform</em> (Twitter, Facebook, etc.) but the <em>activity</em> that matters.  As long as you keep everything out in plain view, talking and exchanging information is a good thing, online or otherwise.</p>
<br /> Tagged: <a href='http://quoderat.megginson.com/tag/news/'>news</a>, <a href='http://quoderat.megginson.com/tag/web/'>web</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/quoderatech.wordpress.com/489/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/quoderatech.wordpress.com/489/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/quoderatech.wordpress.com/489/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/quoderatech.wordpress.com/489/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/quoderatech.wordpress.com/489/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/quoderatech.wordpress.com/489/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/quoderatech.wordpress.com/489/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/quoderatech.wordpress.com/489/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/quoderatech.wordpress.com/489/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/quoderatech.wordpress.com/489/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/quoderatech.wordpress.com/489/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/quoderatech.wordpress.com/489/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/quoderatech.wordpress.com/489/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/quoderatech.wordpress.com/489/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=quoderat.megginson.com&amp;blog=14988159&amp;post=489&amp;subd=quoderatech&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://quoderat.megginson.com/2011/04/12/teachers-students-and-online-behaviour/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c5f095286dd8a3f1dbbc047412a10fb3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">davidmegginson</media:title>
		</media:content>
	</item>
		<item>
		<title>The last time I voted Conservative &#8230;</title>
		<link>http://quoderat.megginson.com/2011/04/10/the-last-time-i-voted-conservative/</link>
		<comments>http://quoderat.megginson.com/2011/04/10/the-last-time-i-voted-conservative/#comments</comments>
		<pubDate>Sun, 10 Apr 2011 16:45:53 +0000</pubDate>
		<dc:creator>David Megginson</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://quoderat.megginson.com/?p=473</guid>
		<description><![CDATA[[Blushing update: a reliable source informs me that I misremembered the question I asked 23 years ago &#8212; updated below (different, but closely-related issue).] &#8230; (Progressive Conservative at the time) was the 1988 federal election. I&#8217;d grown up in Kingston &#8230; <a href="http://quoderat.megginson.com/2011/04/10/the-last-time-i-voted-conservative/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=quoderat.megginson.com&amp;blog=14988159&amp;post=473&amp;subd=quoderatech&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>[<em><strong>Blushing update:</strong> a reliable source informs me that I misremembered the question I asked 23 years ago &mdash; updated below (different, but closely-related issue).</em>]</p>
<p>&#8230; (Progressive Conservative at the time) was the 1988 federal election.  I&#8217;d grown up in Kingston as a <a href="http://en.wikipedia.org/wiki/Red_tory">Red Tory</a> (socially left, fiscally right), working on campaigns for <a href="http://en.wikipedia.org/wiki/Flora_MacDonald_(politician)">Flora Macdonald</a> and <a href="http://en.wikipedia.org/wiki/Keith_Norton">Keith Norton</a> before I was old enough to vote, but by age 24, living in downtown Toronto, I&#8217;d drifted around the political spectrum and generally voted NDP or Liberal, with an occasional crush on Green.</p>
<p>In particular, I disliked our current Progressive Conservative Prime Minister, <a href="http://en.wikipedia.org/wiki/Brian_Mulroney">Brian Mulroney</a>, because he&#8217;d pushed out <a href="http://en.wikipedia.org/wiki/Joe_clark">Joe Clark</a>, the last of the great Red Tories.  Still, on principal, I always tried to learn something about the local candidates, because in the Westminster System that we follow in Canada, no one votes for a party or leader &mdash; we elect local representatives for each Riding, and the government is whoever can convince enough MPs (of any party) to support them.</p>
<h2>A direct question</h2>
<p>So one day, I was walking down Yonge Street and I ran into the local Progressive Conservative candidate, <a href="http://en.wikipedia.org/wiki/David_MacDonald_(politician)">David MacDonald</a>.  MacDonald was an ordained United Church minister at a time when the church was torn apart over the issue of <em>gay ordination</em>; he was also running in a Riding that had both a large gay community (we called it just &#8220;Church and Wellesley&#8221; at the time &mdash; the nickname <em>Gay Village</em> wasn&#8217;t current yet, at least not in the hetero community) and a large, often homophobic Catholic immigrant community; finally, he was running for a party that wasn&#8217;t exactly in the vanguard of the gay rights movement.</p>
<p>I decided, then, as a cocky 24-year-old, to give him a chance to prove himself with a simple Shibboleth question that would piss off half his church, half his potential supporters, and some faction of his party no matter how he answered it:</p>
<blockquote><p>
<del>Do you support same-sex marriage?</del><br />
<ins>Do you support ordaining gays and lesbians as ministers?</ins>
</p></blockquote>
<h2>A direct answer</h2>
<p>The normal political instinct would be to waffle and try to come up with a wimpy compromise answer (&#8220;I support the aspirations, but it&#8217;s a difficult question and we need time &#8230;&#8221; kind of BS).  The second instinct would be to be bluntly opposed, in line with the majority of Canadians 23 years ago.  But MacDonald gave his answer loudly and without hesitation:</p>
<blockquote><p>
Yes, I support it fully.
</p></blockquote>
<p>That&#8217;s the kind of courage I love to see from a politician in any party.  When I combined that direct and honest answer (which I happened to agree with) with the fact he had real political experience as a cabinet minister under Joe Clark, I decided that even a 24-year-old Toronto grad student could, I guess, vote Tory just <em>once</em>.</p>
<h2>Aftermath</h2>
<p>MacDonald won the election and went on to become a cabinet minister during Mulroney&#8217;s second term, acting as a moderate voice from <em>inside</em> the cabinet room, where he could do the most good.  I had mixed feelings about Mulroney&#8217;s government, but I was always happy to know that MacDonald was there to speak for me.</p>
<p>Today, I am still a fan of voting local first, and national second.  We need good people in Parliament, willing to represent their constituents.  I do care about what party those people belong to, but it&#8217;s a secondary consideration. Sure, most MPs vote with their parties, but first, there has to be a consensus in cabinet and in caucus, and the more moderate, reasonable voices you elect there, the less likely that Layton can nationalize Canadian industry, Iggy can start a new war in the Middle East, Harper can ban abortion, or whatever nightmare scenario you happen to have in mind.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/quoderatech.wordpress.com/473/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/quoderatech.wordpress.com/473/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/quoderatech.wordpress.com/473/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/quoderatech.wordpress.com/473/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/quoderatech.wordpress.com/473/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/quoderatech.wordpress.com/473/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/quoderatech.wordpress.com/473/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/quoderatech.wordpress.com/473/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/quoderatech.wordpress.com/473/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/quoderatech.wordpress.com/473/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/quoderatech.wordpress.com/473/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/quoderatech.wordpress.com/473/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/quoderatech.wordpress.com/473/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/quoderatech.wordpress.com/473/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=quoderat.megginson.com&amp;blog=14988159&amp;post=473&amp;subd=quoderatech&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://quoderat.megginson.com/2011/04/10/the-last-time-i-voted-conservative/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c5f095286dd8a3f1dbbc047412a10fb3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">davidmegginson</media:title>
		</media:content>
	</item>
		<item>
		<title>How can I make money from writing sonnets?</title>
		<link>http://quoderat.megginson.com/2011/03/01/how-can-i-make-money-from-writing-sonnets/</link>
		<comments>http://quoderat.megginson.com/2011/03/01/how-can-i-make-money-from-writing-sonnets/#comments</comments>
		<pubDate>Tue, 01 Mar 2011 19:37:12 +0000</pubDate>
		<dc:creator>David Megginson</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[business]]></category>

		<guid isPermaLink="false">http://quoderat.megginson.com/?p=450</guid>
		<description><![CDATA[I&#8217;ve written a sonnet, and I think it&#8217;s very good. Now I&#8217;d like to get paid for it so that I can quit my job and live off the revenue. Any suggestions? Perhaps you&#8217;ve asked this question yourself: just substitute &#8230; <a href="http://quoderat.megginson.com/2011/03/01/how-can-i-make-money-from-writing-sonnets/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=quoderat.megginson.com&amp;blog=14988159&amp;post=450&amp;subd=quoderatech&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img src="http://quoderatech.files.wordpress.com/2011/03/shakespeare.jpg?w=233&#038;h=300" alt="William Shakespeare" title="William Shakespeare" width="233" height="300" class="alignright size-medium wp-image-453" />I&#8217;ve written a sonnet, and I think it&#8217;s very good.  Now I&#8217;d like to get paid for it so that I can quit my job and live off the revenue.  Any suggestions?</p>
<p>Perhaps you&#8217;ve asked this question yourself: just substitute &#8220;iPhone app&#8221;, &#8220;blog&#8221;, &#8220;web site&#8221;, &#8220;Twitter mashup&#8221;, etc. for &#8220;sonnet&#8221;. You have a right to be proud that your app/blog/site is wonderful, but why won&#8217;t anyone pay you for it?</p>
<h2 id="systems">A pat on the head for young Billy</h2>
<p>In school, when you did good work, you got rewarded, because school is a system designed to encourage you to do your best (at least, a good school is).  In a job, when you do good work, you may get noticed and rewarded, depending on how much value your manager puts on continuing to treat you like a school student.</p>
<p>Outside of these artificially-constructed systems, however, nobody beyond friends and family gives a shit that you did something good &mdash; as Don Draper said on <cite>Mad Men</cite> &#8220;There is no system.  The universe is indifferent.&#8221;  </p>
<h2 id="rewards">Don&#8217;t go past the fence!</h2>
<p>Still, many brave or foolish people venture outside the school/employment sandbox every year, and the moment they go out the gate, they are hit with two shocks at once:</p>
<ol>
<li>Nobody wants to give them money.</li>
<li>Nobody wants to give them praise.</li>
</ol>
<p>If you&#8217;re going to have a chance of success, you recover from this shock, forget about chasing after praise (it&#8217;s mostly worthless), grit your teeth, and learn through trial and error how to provide enough value to other people that they&#8217;re willing to give you money in exchange.  </p>
<p>That&#8217;s hard work &mdash; <em>very</em> hard work &mdash; and the heart of it is not simply promoting a product or service, but spending months and years developing real business relationships with people, and even more importantly, learning (and caring about) what those people &mdash; <em>not</em> you &mdash; want and need.</p>
<h2 id="shortcuts">Shortcuts</h2>
<p>Many people aren&#8217;t ready to face that kind of a shock, though, and at that point, they&#8217;re an easy mark for anything that promises an alternative to the hard (but necessary) work of actually dealing with people and caring about what they want.  Every year, there seems to be at least one fad that promises a shortcut:</p>
<ul>
<li>You can run Google ads (or others) on your blog or web site, and Google will take care of finding and billing the customers, then will send you a monthly cheque.</li>
<li>You can write a Twitter mashup or Facebook app, where Twitter or Facebook members will take care of the hard work of marketing for you, and you can then get enough visitors to cash in on those adds (or sell subscriptions through PayPal, etc.).</li>
<li>You can post a video to YouTube, and get a share of ad revenue if it goes viral (insert buzzwords like &#8220;social media&#8221; where appropriate).</li>
<li>You can write an iPhone or Android mobile app, and Apple or Google will find and bill your customers for you.</li>
</ul>
<p>All of these promise money (however little they actually deliver), but more importantly, they promise that you can stay in a safe, non-Don-Draper-esque world like the one you remember from school or work: the world where you can get an A+ for doing a <em>very good job</em> on your essay, or a bonus for working <em>extra hard</em> on the ACME account.  Effectively, Google, Apple, or some other organization becomes your teacher/parent/boss, dishing out rewards in the form of money and/or pageviews.  </p>
<p>That&#8217;s a world most people understand; it&#8217;s a system where most people feel safe; but it&#8217;s no way to sell a sonnet.</p>
<h2 id="sell">Shakespeare</h2>
<p>To be honest, we don&#8217;t know if Shakespeare ever made money from his sonnets, but he did make a living from his plays &#8230; well, not so much from his plays, as from putting them on.  It turns out that around the end of the 16th and beginning of the 17th century, Londoners sometimes wanted to get out of the house and <em>do</em> something, but you can go to only so many bear-baitings and Morris dances before a certain <em>ennui</em> sets in.</p>
<p>Shakespeare didn&#8217;t just sit in a lonely garret writing plays to for someone else to put on (the 1600 equivalent of writing mobile apps for the iTunes store): as an actor, as part-owner of the Lord Chamberlain&#8217;s Men (later King&#8217;s Men), and as an investor in the Globe Theatre, Shakespeare threw himself directly into the hard work of forming relationships and dealing with his customers.  He made enough money to go back to his home town and buy the second-largest house &mdash; a mansion, really &mdash; and lord it over everyone he grew up with.</p>
<p>After all that work, perhaps he wrote his sonnets just for fun.</p>
<p><em>(This post was inspired partly by my life partner, Bonnie Robinson, and the long hours she&#8217;s putting into <a href="http://sweettartstakeaway.com/">Sweet Tarts Takeaway</a>.)</em></p>
<br /> Tagged: <a href='http://quoderat.megginson.com/tag/business/'>business</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/quoderatech.wordpress.com/450/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/quoderatech.wordpress.com/450/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/quoderatech.wordpress.com/450/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/quoderatech.wordpress.com/450/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/quoderatech.wordpress.com/450/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/quoderatech.wordpress.com/450/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/quoderatech.wordpress.com/450/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/quoderatech.wordpress.com/450/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/quoderatech.wordpress.com/450/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/quoderatech.wordpress.com/450/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/quoderatech.wordpress.com/450/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/quoderatech.wordpress.com/450/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/quoderatech.wordpress.com/450/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/quoderatech.wordpress.com/450/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=quoderat.megginson.com&amp;blog=14988159&amp;post=450&amp;subd=quoderatech&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://quoderat.megginson.com/2011/03/01/how-can-i-make-money-from-writing-sonnets/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c5f095286dd8a3f1dbbc047412a10fb3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">davidmegginson</media:title>
		</media:content>

		<media:content url="http://quoderatech.files.wordpress.com/2011/03/shakespeare.jpg?w=233" medium="image">
			<media:title type="html">William Shakespeare</media:title>
		</media:content>
	</item>
		<item>
		<title>The zero-home experiment</title>
		<link>http://quoderat.megginson.com/2011/02/15/the-zero-home-experiment/</link>
		<comments>http://quoderat.megginson.com/2011/02/15/the-zero-home-experiment/#comments</comments>
		<pubDate>Tue, 15 Feb 2011 14:01:57 +0000</pubDate>
		<dc:creator>David Megginson</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[ottawa startups]]></category>
		<category><![CDATA[usability]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://quoderat.megginson.com/?p=436</guid>
		<description><![CDATA[Yesterday a new web series launched, Sweet Tarts Takeaway. I helped to set up its web site. Too many clicks After making one mockup of the home page, we realized that it would take three clicks for a user simply &#8230; <a href="http://quoderat.megginson.com/2011/02/15/the-zero-home-experiment/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=quoderat.megginson.com&amp;blog=14988159&amp;post=436&amp;subd=quoderatech&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Yesterday a new web series launched, <cite><a href="http://sweettartstakeaway.com">Sweet Tarts Takeaway</a></cite>. I helped to set up its web site.</p>
<h2>Too many clicks</h2>
<div id="attachment_440" class="wp-caption alignright" style="width: 310px"><a href="http://sweettartstakeaway.com"><img src="http://quoderatech.files.wordpress.com/2011/02/elevator.png?w=300&#038;h=172" alt="" title="Sweet Tarts Takeaway" width="300" height="172" class="size-medium wp-image-440" /></a><p class="wp-caption-text">Copyright © 2011 by YOW! Productions.  Used with permission.</p></div>
<p>After making one mockup of the home page, we realized that it would take three clicks for a user simply to start watching this week&#8217;s episode:</p>
<ol>
<li>Click on &#8220;episodes&#8221; on the home page.</li>
<li>Click on the latest episode at the top of the episodes page.</li>
<li>Click on the video to start it playing.</li>
</ol>
<p>For a web series, where the main point is to let people watch a new episode every week, this made no sense. We thought about a couple of options:</p>
<ul>
<li>We could embed a direct link to the current episode on the home page.</li>
<li>We could embed the current episode itself on the home page.</li>
</ul>
<h2>Broken links and bookmarks</h2>
<p>The first option still required two clicks.  The second option had more subtle problems: let&#8217;s say that I went to sweettartstakeaway.com, watched the current episode, liked it, and sent you the link.  Two days later, you open your email, click on the link, and see an entirely <em>different</em> episode, because the current episode has changed.</p>
<p>This isn&#8217;t a merely abstract problem.  Blogging sites (like those based on WordPress) typically put copies of the newest content on the home page.  I have followed hundreds of links to blog postings over the past few years, only to find that someone had linked to the blog&#8217;s <em>home page</em> instead of the specific blog posting, and the posting I wanted had long fallen off the home page.  Even search engine results do that sometimes.</p>
<h2>The <em>zero</em> option</h2>
<p>The solution we finally came up with seems simple only in retrospect &mdash; throw out the home page.  </p>
<p>When you direct your browser to <a href="http://sweettartstakeaway.com">sweettartstakeaway.com</a>, instead of yawning at a promotional page telling you how wonderful the web site is, you get  redirected automatically to the current episode page (on February 14, 2011, that was <a href="http://sweettartstakeaway.com/episodes/01">/episodes/01</a>).  Next Monday, you&#8217;ll be redirected to a different episode, and so on, for all 18 episodes. (We&#8217;re using a 307 redirect, for anyone who cares about HTTP status codes.)</p>
<h2>Give them what they want, not what <em>you</em> want</h2>
<p>With a web series, you know there&#8217;s one activity most visitors care about: watching this week&#8217;s episode.  When you <em>do</em> know that, why not let them start there, instead of forcing them to crawl through an ego-driven &#8220;home page&#8221; telling them how wonderful you are?</p>
<p>When the series is finished, and we archive it, we may add a home page then to give historical context for the whole series, with links to episodes.  For now, though, it will be interesting to see how our <em>zero-home</em> experiment works out.</p>
<br /> Tagged: <a href='http://quoderat.megginson.com/tag/ottawa-startups/'>ottawa startups</a>, <a href='http://quoderat.megginson.com/tag/usability/'>usability</a>, <a href='http://quoderat.megginson.com/tag/web/'>web</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/quoderatech.wordpress.com/436/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/quoderatech.wordpress.com/436/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/quoderatech.wordpress.com/436/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/quoderatech.wordpress.com/436/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/quoderatech.wordpress.com/436/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/quoderatech.wordpress.com/436/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/quoderatech.wordpress.com/436/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/quoderatech.wordpress.com/436/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/quoderatech.wordpress.com/436/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/quoderatech.wordpress.com/436/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/quoderatech.wordpress.com/436/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/quoderatech.wordpress.com/436/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/quoderatech.wordpress.com/436/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/quoderatech.wordpress.com/436/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=quoderat.megginson.com&amp;blog=14988159&amp;post=436&amp;subd=quoderatech&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://quoderat.megginson.com/2011/02/15/the-zero-home-experiment/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c5f095286dd8a3f1dbbc047412a10fb3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">davidmegginson</media:title>
		</media:content>

		<media:content url="http://quoderatech.files.wordpress.com/2011/02/elevator.png?w=300" medium="image">
			<media:title type="html">Sweet Tarts Takeaway</media:title>
		</media:content>
	</item>
		<item>
		<title>Is fluid layout old-fashioned?</title>
		<link>http://quoderat.megginson.com/2011/02/09/is-fluid-layout-old-fashioned/</link>
		<comments>http://quoderat.megginson.com/2011/02/09/is-fluid-layout-old-fashioned/#comments</comments>
		<pubDate>Wed, 09 Feb 2011 17:04:56 +0000</pubDate>
		<dc:creator>David Megginson</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[usability]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://quoderat.megginson.com/?p=425</guid>
		<description><![CDATA[No one would mistake me for a graphic designer &#8212; I believe that no merely visual design can match the breathtaking beauty of a properly-normalized database schema &#8212; but still, I recently found myself helping someone design a simple theme &#8230; <a href="http://quoderat.megginson.com/2011/02/09/is-fluid-layout-old-fashioned/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=quoderat.megginson.com&amp;blog=14988159&amp;post=425&amp;subd=quoderatech&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>No one would mistake me for a graphic designer &mdash; I believe that no merely visual design can match the breathtaking beauty of a properly-normalized database schema &mdash; but still, I recently found myself helping someone design a simple theme for a Drupal web site.  </p>
<p>The site owner was visually-focussed (poor woman, stuck with me as designer!), and had very specific ideas about where layout items and whitespace should go, so I decided that while I have issues with fixed-width layouts like the [in]famous <a href="http://960.gs/">960 grid</a>, I shouldn&#8217;t make her suffer for my beliefs: I designed a fixed-width, em-based layout for her.</p>
<p>Two weeks later, she got in touch and said &#8220;I&#8217;m really sorry, but &#8230;&#8221;.  She had been looking at the web site on a laptop up to that point, but the first time she opened it on her big monitor at work, it looked like garbage, a tiny strip surrounded by huge bands of whitespace.</p>
<h2>Window size: an obsolete problem?</h2>
<p>I mention this story because I just read a <a href="http://www.gantry-framework.org/documentation/joomla/advanced/960-grid-system">web page</a> that suggests that <em>fluid</em> layouts &mdash; web-page layouts that adjust themselves to fit the width of the browser window &mdash; are passé:</p>
<blockquote><p>
With the advancement in displays and the cheap prices of large 22&#8243; and 24&#8243; displays fluid layouts have quickly become more a hinderance than a help because you don&#8217;t run your browser full screen anymore. You generally run your browser alongside your mail client, your IM client, iTunes, etc. You find a common size for your browser that accommodates most sites, and you leave it at that width.
</p></blockquote>
<p>Well, apparently not.  At least, not in this case.  The argument seems to be that users will conform to the needs of designers, by carefully resizing their browser windows to make the designs look good, but the web site owner I&#8217;m working with wasn&#8217;t one of those people, and I suspect that not all her visitors will be, either.</p>
<h2>Rogues&#8217; gallery</h2>
<p>The designer of the web site proclaiming the demise of fluid layout probably hoped his or her site would look like this:</p>
<p><a href="http://quoderatech.files.wordpress.com/2011/02/fixed-normal.png"><img src="http://quoderatech.files.wordpress.com/2011/02/fixed-normal.png?w=640&#038;h=313" alt="" title="Fixed-width layout in an ideally-sized browser window." width="640" height="313" class="alignnone size-full wp-image-426" /></a></p>
<p>This is what you&#8217;d see on a typical laptop screen, or on a window sized smaller on a big screen.  It&#8217;s beautiful &mdash; I freely admit that I could never design such a nice-looking web site.  </p>
<p>Now, here&#8217;s how the same site would look in a large browser window on a large monitor:</p>
<p><a href="http://quoderatech.files.wordpress.com/2011/02/fixed-big.png"><img src="http://quoderatech.files.wordpress.com/2011/02/fixed-big.png?w=640&#038;h=313" alt="" title="Fixed-width layout in a very large browser window." width="640" height="313" class="alignnone size-full wp-image-427" /></a></p>
<p>OK, even I (and probably my guinea pig) can design something nicer-looking than that.  Damn those uncooperative users!  Why do they forget to size their browser windows properly?</p>
<p>Now, let&#8217;s go down-market, and see how the same site might look in a browser window on a tiny netbook (where the user doesn&#8217;t have the option of choosing a bigger window size):</p>
<p><a href="http://quoderatech.files.wordpress.com/2011/02/fixed-small.png"><img src="http://quoderatech.files.wordpress.com/2011/02/fixed-small.png?w=640&#038;h=313" alt="" title="Fixed-width layout in a very small browser window." width="640" height="313" class="alignnone size-full wp-image-428" /></a></p>
<p>Not nearly as bad as the big screen, but awkward &mdash; I can sort-of see what the designer was trying to do, but I have to scroll around to get the whole effect: it&#8217;s like looking at the Mona Lisa in 5 cm² segments.</p>
<h2>Fluid vs fixed-width is a trade-off</h2>
<p>I&#8217;m not going to conclude by saying &#8220;fixed-width bad, fluid layout good&#8221;, or any such oversimplification, but instead, to suggest that the tradeoff that existed between the two ten years ago still exists today:</p>
<ul>
<li>If you want a web site that&#8217;s a respectable <strong>B-</strong> in a wide range of screen sizes, use a fluid layout (it&#8217;s not an accident that that&#8217;s what popular sites like Google use).</li>
<li>If you want a web site that&#8217;s a spectacular <strong>A+</strong> in one screen size, and a dismal <strong>D-</strong> in all others, use a fixed-width layout.</li>
</ul>
<p>If you need to demonstrate that you are capable of stunning visual beauty, if you know that most of your users will be viewing the site on a certain type of device, or if you just want to stoke your ego by winning design awards (and you know the resolution the selection jury will be using to view sites), then fixed-width can be a great choice.  For me, however, usability trumps style, so I&#8217;ll stick with fluid-width when I can.</p>
<p>And yes, for the record, you&#8217;re reading this blog (as of 2011-02-09) in a fixed-width layout.  I just use the default theme on wordpress.com with a custom picture in the banner, because I&#8217;m not really all that visually-focussed.  Maybe some day I&#8217;ll get around to seeing if I choose a WordPress theme with a fluid layout here, too.</p>
<br /> Tagged: <a href='http://quoderat.megginson.com/tag/design/'>design</a>, <a href='http://quoderat.megginson.com/tag/usability/'>usability</a>, <a href='http://quoderat.megginson.com/tag/web/'>web</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/quoderatech.wordpress.com/425/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/quoderatech.wordpress.com/425/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/quoderatech.wordpress.com/425/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/quoderatech.wordpress.com/425/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/quoderatech.wordpress.com/425/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/quoderatech.wordpress.com/425/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/quoderatech.wordpress.com/425/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/quoderatech.wordpress.com/425/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/quoderatech.wordpress.com/425/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/quoderatech.wordpress.com/425/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/quoderatech.wordpress.com/425/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/quoderatech.wordpress.com/425/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/quoderatech.wordpress.com/425/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/quoderatech.wordpress.com/425/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=quoderat.megginson.com&amp;blog=14988159&amp;post=425&amp;subd=quoderatech&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://quoderat.megginson.com/2011/02/09/is-fluid-layout-old-fashioned/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c5f095286dd8a3f1dbbc047412a10fb3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">davidmegginson</media:title>
		</media:content>

		<media:content url="http://quoderatech.files.wordpress.com/2011/02/fixed-normal.png" medium="image">
			<media:title type="html">Fixed-width layout in an ideally-sized browser window.</media:title>
		</media:content>

		<media:content url="http://quoderatech.files.wordpress.com/2011/02/fixed-big.png" medium="image">
			<media:title type="html">Fixed-width layout in a very large browser window.</media:title>
		</media:content>

		<media:content url="http://quoderatech.files.wordpress.com/2011/02/fixed-small.png" medium="image">
			<media:title type="html">Fixed-width layout in a very small browser window.</media:title>
		</media:content>
	</item>
		<item>
		<title>Coming soon &#8230; something sweet</title>
		<link>http://quoderat.megginson.com/2011/01/03/coming-soon-something-sweet/</link>
		<comments>http://quoderat.megginson.com/2011/01/03/coming-soon-something-sweet/#comments</comments>
		<pubDate>Mon, 03 Jan 2011 17:06:53 +0000</pubDate>
		<dc:creator>David Megginson</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[kulcher]]></category>
		<category><![CDATA[ottawa startups]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://quoderat.megginson.com/?p=416</guid>
		<description><![CDATA[My sweetie has been leading a group of talented Ottawa-area actors and crew members to create a new web series, Sweet Tarts Takeaway. I&#8217;ll post again when the web series goes live in a couple of months. In the meantime, &#8230; <a href="http://quoderat.megginson.com/2011/01/03/coming-soon-something-sweet/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=quoderat.megginson.com&amp;blog=14988159&amp;post=416&amp;subd=quoderatech&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://SweetTartsTakeaway.com/"><img src="http://quoderatech.files.wordpress.com/2011/01/sweet-tarts.jpg?w=640" alt="" title="Sweet Tarts Takeaway"   class="alignleft size-full wp-image-420" /></a></p>
<p>My sweetie has been leading a group of talented Ottawa-area actors and crew members to create a new web series, <cite><a href="http://SweetTartsTakeaway.com/">Sweet Tarts Takeaway</a></cite>.  </p>
<p>I&#8217;ll post again when the web series goes live in a couple of months.  In the meantime, you can get updates by following <a href="http://www.twitter.com/">@TartTweets</a> on Twitter, or by joining the <a href="http://www.facebook.com/pages/Sweet-Tarts-Takeaway/120067378004441">Sweet Tarts Facebook Group</a>.</p>
<br /> Tagged: <a href='http://quoderat.megginson.com/tag/kulcher/'>kulcher</a>, <a href='http://quoderat.megginson.com/tag/ottawa-startups/'>ottawa startups</a>, <a href='http://quoderat.megginson.com/tag/web/'>web</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/quoderatech.wordpress.com/416/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/quoderatech.wordpress.com/416/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/quoderatech.wordpress.com/416/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/quoderatech.wordpress.com/416/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/quoderatech.wordpress.com/416/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/quoderatech.wordpress.com/416/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/quoderatech.wordpress.com/416/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/quoderatech.wordpress.com/416/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/quoderatech.wordpress.com/416/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/quoderatech.wordpress.com/416/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/quoderatech.wordpress.com/416/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/quoderatech.wordpress.com/416/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/quoderatech.wordpress.com/416/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/quoderatech.wordpress.com/416/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=quoderat.megginson.com&amp;blog=14988159&amp;post=416&amp;subd=quoderatech&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://quoderat.megginson.com/2011/01/03/coming-soon-something-sweet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c5f095286dd8a3f1dbbc047412a10fb3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">davidmegginson</media:title>
		</media:content>

		<media:content url="http://quoderatech.files.wordpress.com/2011/01/sweet-tarts.jpg" medium="image">
			<media:title type="html">Sweet Tarts Takeaway</media:title>
		</media:content>
	</item>
		<item>
		<title>SQL and simple polymorphism</title>
		<link>http://quoderat.megginson.com/2010/09/25/sql-and-simple-polymorphism/</link>
		<comments>http://quoderat.megginson.com/2010/09/25/sql-and-simple-polymorphism/#comments</comments>
		<pubDate>Sat, 25 Sep 2010 22:36:23 +0000</pubDate>
		<dc:creator>David Megginson</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[databases]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://quoderat.megginson.com/?p=403</guid>
		<description><![CDATA[SQL is about tables and sets. Object-oriented programing is about types, subtypes, and polymorphism. There are nasty, nasty frameworks available to try to move between the two worlds (say, by serializing and deserializing Java objects) &#8212; this posting, however, is &#8230; <a href="http://quoderat.megginson.com/2010/09/25/sql-and-simple-polymorphism/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=quoderat.megginson.com&amp;blog=14988159&amp;post=403&amp;subd=quoderatech&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://en.wikipedia.org/wiki/SQL">SQL</a> is about tables and sets.  Object-oriented programing is about types, subtypes, and <a href="http://en.wikipedia.org/wiki/Type_polymorphism">polymorphism</a>. There are nasty, nasty frameworks available to try to move between the two worlds (say, by serializing and deserializing Java objects) &mdash; this posting, however, is not about those.  Instead, it&#8217;s about how to make SQL support the basic benefits of polymorphism in what we might call a SQL-y way, independent of any programming language.</p>
<h3 id="similar">Similar entities</h3>
<p>Imagine that you want to deal with a set of geographical entities, similar to what I handle in <a href="http://www.ourairports.com/">OurAirports</a>:</p>
<ul>
<li>cities</li>
<li>airports</li>
<li>navigation transmitters</li>
<li>points of interest (e.g. buildings, etc.)</li>
</ul>
<p>The normal object-oriented approach would be to create a base class such as &#8220;Location&#8221; with all the properties these have in common (unique id, latitude, longitude, elevation, name, description, etc.) and then create subclasses adding additional information for each one (such as frequencies for the navigation transmitters, or identifiers for the airport).  The <del>normal</del> <ins>naive</ins> SQL approach, on the other hand, is to repeat the information in four separate tables.</p>
<h3 id="base">The base table</h3>
<p>SQL can, however, handle polymorphism in a fairly elegant way &mdash; I think database people call these &#8220;disjoint subtypes&#8221;, but feel free to ignore that term.  Instead of a base class, we create a base table (I&#8217;m using the MySQL dialect, but most SQLs should have similar capabilities):</p>
<pre>
create table Locations (
  id bigint primary key auto_increment,
  type enum ('airport', 'city', 'poi', 'navaid') not null,
  latitude_deg double not null,
  longitude_deg double not null,
  elevation_m int not null,
  title varchar(128) not null,
  description text not null,
  # add indices as needed
);
</pre>
<p>(A purer implementation would use a separate <var>LocationTypes</var> table for flexibility, rather than the enum value &mdash; I&#8217;ll probably do that in OurAirports, but it would make these examples a bit more verbose.)</p>
<h3 id="subtype">The subtype tables</h3>
<p>Next, create a table for each of your subtypes, where the primary key is also a foreign key pointing to the Locations table:</p>
<pre>
create table Airports (
  id bigint primary key,
  iati_code char(3),
  icao_code char(4),
  local_code varchar(4),
  # etc.
  foreign key id references Locations(id)
);
</pre>
<p>Using the same id for the base and derived table ensures that each entity has an id that is unique across all subtables, and simplifies SQL statements for accessing and modifying the tables.</p>
<h3 id="polymorphism">Polymorphism</h3>
<p>Now, when you want to deal with locations in general, regardless of subtype, simply query the Locations table:</p>
<pre>
select L.* from Locations L where latitude_deg &gt; 60;
</pre>
<p>You can update base information without even knowing the subtype:</p>
<pre>
update Locations set latitude_deg=45.5 where id=111;
</pre>
<p>When you want to deal with a specific kind of location, do a simple join:</p>
<pre>
select L.*, A.* from Locations L
join Airports A on L.id=A.id
where A.latitude_deg &gt; 60;
</pre>
<h3 id="views">Views</h3>
<p>To make this even easier, define a view containing the join:</p>
<pre>
drop view if exists AirportsView;
create view AirportsView as
select * from Locations L
join Airports A on L.id=A.id;
</pre>
<p>Now you can simply query AirportsView as if it were a single table:</p>
<pre>
select * from AirportsView where latitude_deg&gt;60;
</pre>
<h3 id="crud">Inserting and deleting</h3>
<p>Inserting is slightly more complex, because it involves two steps: first, create the base entry, then link to it from the derived entry:</p>
<pre>
insert into Locations
 (latitude_deg, longitude_deg, elevation_m, name)
values
 (45.5, -75.5, 100, 'Sample Airport');

insert into Airports (id, iata_code) values
(last_insert_id(), 'AAA');
</pre>
<p>Stored procedures and/or triggers can automate this fairly nicely, if you don&#8217;t want to have to embed too much database logic in application code.  Deletion similarly requires two steps:</p>
<pre>
delete from Airports where id=111;

delete from Locations where id=111;
</pre>
<p>A simple post-deletion trigger for Airports, though, could automate this and avoid the risk of mistakes in source code.</p>
<h3 id="ourairports">Eating the dogfood</h3>
<p>Unfortunately, I didn&#8217;t design OurAirports this way from the start, so I have a bit of refactoring to do.  When I&#8217;m finished, however, I expect mapping to be much simpler, since I will no longer have to execute 5 or 6 separate queries to find all the icons to display on a map.  If anyone has any better ideas, please let me know; otherwise, stay tuned.</p>
<br /> Tagged: <a href='http://quoderat.megginson.com/tag/databases/'>databases</a>, <a href='http://quoderat.megginson.com/tag/programming/'>programming</a>, <a href='http://quoderat.megginson.com/tag/tips/'>tips</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/quoderatech.wordpress.com/403/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/quoderatech.wordpress.com/403/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/quoderatech.wordpress.com/403/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/quoderatech.wordpress.com/403/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/quoderatech.wordpress.com/403/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/quoderatech.wordpress.com/403/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/quoderatech.wordpress.com/403/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/quoderatech.wordpress.com/403/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/quoderatech.wordpress.com/403/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/quoderatech.wordpress.com/403/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/quoderatech.wordpress.com/403/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/quoderatech.wordpress.com/403/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/quoderatech.wordpress.com/403/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/quoderatech.wordpress.com/403/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=quoderat.megginson.com&amp;blog=14988159&amp;post=403&amp;subd=quoderatech&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://quoderat.megginson.com/2010/09/25/sql-and-simple-polymorphism/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c5f095286dd8a3f1dbbc047412a10fb3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">davidmegginson</media:title>
		</media:content>
	</item>
		<item>
		<title>Amazon EC2 &#8220;micro instances&#8221; vs. Google App Engine</title>
		<link>http://quoderat.megginson.com/2010/09/09/amazon-ec2-micro-instances-vs-google-app-engine/</link>
		<comments>http://quoderat.megginson.com/2010/09/09/amazon-ec2-micro-instances-vs-google-app-engine/#comments</comments>
		<pubDate>Thu, 09 Sep 2010 13:21:08 +0000</pubDate>
		<dc:creator>David Megginson</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://quoderat.megginson.com/?p=393</guid>
		<description><![CDATA[A note in my inbox this morning announced that Amazon&#8217;s EC2 virtual computer hosting service now supports &#8220;micro instances&#8221; for $0.02/hour ($0.03/hour if you&#8217;re confused enough to want to host a web site using Windows): Instances of this family provide &#8230; <a href="http://quoderat.megginson.com/2010/09/09/amazon-ec2-micro-instances-vs-google-app-engine/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=quoderat.megginson.com&amp;blog=14988159&amp;post=393&amp;subd=quoderatech&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>A note in my inbox this morning announced that Amazon&#8217;s EC2 virtual computer hosting service now supports &#8220;<a href="http://aws.amazon.com/ec2/#instance">micro instances</a>&#8221; for $0.02/hour ($0.03/hour if you&#8217;re confused enough to want to host a web site using Windows):</p>
<blockquote><p>
Instances of this family provide a small amount of consistent CPU resources and allow you to burst CPU capacity when additional cycles are available. They are well suited for lower throughput applications and web sites that consume significant compute cycles periodically.</p>
<ul>
<li>Micro Instance 613 MB of memory, up to 2 ECUs (for short periodic bursts), EBS storage only, 32-bit or 64-bit platform.</li>
</ul>
</blockquote>
<h3 id="pricing">Pricing</h3>
<p>$0.02/hour = $0.48/day =~ <strong>$14.50/month</strong>.  </p>
<p>A small standard on-demand EC2 instance is $0.085/hour (~$61.50/month), so this is a huge price drop for web sites that don&#8217;t really need much computing power, who make up a very <a href="http://en.wikipedia.org/wiki/Long_Tail">long tail</a>).  The most obvious target is ISPs who offer shared hosting for low-traffic web sites for $10-20/month.</p>
<h3 id="free-as-in-beer">Competing with free</h3>
<p>A less obvious, but perhaps more important target for Amazon EC2 micro instances is Google App Engine.  As I explained in a previous posting (<a href="http://quoderat.megginson.com/2009/07/18/costing-out-google-app-engine/">Costing out Google App Engine</a>, July 2009), Google can afford to offer <em>free</em> hosting up to about 5 million pageviews/month &mdash; enough traffic to pay a modest salary from ad revenue &mdash; because they know that most sites will use Google AdWords, and Google will get a cut of the advertising revenue.  Amazon EC2 can&#8217;t offer free cloud hosting the same way, because it would <em>still</em> be Google getting the advertising revenue.</p>
<h3 id="free-as-in-speech">Four other kinds of &#8220;free&#8221;</h3>
<p>By offering such a low price tier, Amazon is probably gambling that people are willing to pay &lt;$15/month for four freedoms that Google App Engine doesn&#8217;t deliver:</p>
<ol>
<li>Freedom to use languages/environments other than Python and Java.</li>
<li>Freedom to install out-of-the-box software like MySQL, Apache, PHP, Drupal, and WordPress, etc.</li>
<li>Freedom from having to mess around in the App Engine sandbox with the data store, etc.</li>
<li>Freedom to move the application to a <em>different</em> ISP without major modifications.</li>
</ol>
<p>I suspect that for many users, the ability to just drop in an app without having to spend weeks messing around with JVM-limited language ports like JRuby will be outweigh the price of three beers each month.  Of course, thousands of ISPs already offer that freedom through shared hosting accounts, often at a lower price and with decent personal technical support.  What else does AWS offer <em>this group</em> that the ISPs don&#8217;t?</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/quoderatech.wordpress.com/393/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/quoderatech.wordpress.com/393/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/quoderatech.wordpress.com/393/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/quoderatech.wordpress.com/393/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/quoderatech.wordpress.com/393/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/quoderatech.wordpress.com/393/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/quoderatech.wordpress.com/393/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/quoderatech.wordpress.com/393/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/quoderatech.wordpress.com/393/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/quoderatech.wordpress.com/393/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/quoderatech.wordpress.com/393/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/quoderatech.wordpress.com/393/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/quoderatech.wordpress.com/393/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/quoderatech.wordpress.com/393/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=quoderat.megginson.com&amp;blog=14988159&amp;post=393&amp;subd=quoderatech&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://quoderat.megginson.com/2010/09/09/amazon-ec2-micro-instances-vs-google-app-engine/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c5f095286dd8a3f1dbbc047412a10fb3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">davidmegginson</media:title>
		</media:content>
	</item>
		<item>
		<title>Google Voice (sort-of) available in Canada</title>
		<link>http://quoderat.megginson.com/2010/08/27/google-voice-sort-of-available-in-canada/</link>
		<comments>http://quoderat.megginson.com/2010/08/27/google-voice-sort-of-available-in-canada/#comments</comments>
		<pubDate>Sat, 28 Aug 2010 01:04:22 +0000</pubDate>
		<dc:creator>David Megginson</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[business]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[voip]]></category>

		<guid isPermaLink="false">http://quoderat.megginson.com/?p=388</guid>
		<description><![CDATA[I installed the Google Chat Voice plugin today, and found that I was able to make free Google Voice calls from Canada to both a US and a Canadian POTS number. I&#8217;m still unable to register for Google Voice at &#8230; <a href="http://quoderat.megginson.com/2010/08/27/google-voice-sort-of-available-in-canada/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=quoderat.megginson.com&amp;blog=14988159&amp;post=388&amp;subd=quoderatech&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I installed the <a href="http://www.google.com/chat/voice/">Google Chat Voice</a> plugin today, and found that I was able to make free Google Voice calls from Canada to both a US and a Canadian <a href="http://en.wikipedia.org/wiki/Plain_old_telephone_service">POTS</a> number.  I&#8217;m still unable to register for Google Voice at <a href="http://www.google.com/voice/">google.com/voice</a>, and I cannot use the Google Voice app on my Android phone, but at least I can initiate a call from inside GMail on my laptop now.</p>
<p>Does this mean that Google is about to roll out full Google Voice support for Canada, or just that they forgot to plug a hole in the code that that&#8217;s supposed to prevent non-US accounts from using the service?  </p>
<p>Google Voice on my Android phone would be fantastic, because I could make unlimited North American phone calls on (say) a 6 GB, $30/month data plan instead of paying the <a href="http://wirelessnorth.ca/2010/08/27/its-2010-and-canadians-pay-the-highest-cell-phone-bills-in-the-world/">world&#8217;s highest cell phone bills</a> for (limited) voice and long distance.  I&#8217;m sure <a href="http://www.rogers.com">Rogers</a> and other mobile carriers won&#8217;t be happy about that, but I hope their lobbyists can&#8217;t stop it.</p>
<br /> Tagged: <a href='http://quoderat.megginson.com/tag/business/'>business</a>, <a href='http://quoderat.megginson.com/tag/mobile/'>mobile</a>, <a href='http://quoderat.megginson.com/tag/news/'>news</a>, <a href='http://quoderat.megginson.com/tag/voip/'>voip</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/quoderatech.wordpress.com/388/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/quoderatech.wordpress.com/388/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/quoderatech.wordpress.com/388/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/quoderatech.wordpress.com/388/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/quoderatech.wordpress.com/388/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/quoderatech.wordpress.com/388/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/quoderatech.wordpress.com/388/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/quoderatech.wordpress.com/388/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/quoderatech.wordpress.com/388/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/quoderatech.wordpress.com/388/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/quoderatech.wordpress.com/388/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/quoderatech.wordpress.com/388/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/quoderatech.wordpress.com/388/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/quoderatech.wordpress.com/388/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=quoderat.megginson.com&amp;blog=14988159&amp;post=388&amp;subd=quoderatech&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://quoderat.megginson.com/2010/08/27/google-voice-sort-of-available-in-canada/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c5f095286dd8a3f1dbbc047412a10fb3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">davidmegginson</media:title>
		</media:content>
	</item>
		<item>
		<title>RIP Java, 1995-2010</title>
		<link>http://quoderat.megginson.com/2010/08/13/rip-java-1995-2010/</link>
		<comments>http://quoderat.megginson.com/2010/08/13/rip-java-1995-2010/#comments</comments>
		<pubDate>Fri, 13 Aug 2010 20:54:37 +0000</pubDate>
		<dc:creator>David Megginson</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[rights]]></category>

		<guid isPermaLink="false">http://quoderat.megginson.com/?p=381</guid>
		<description><![CDATA[Java is dead. A lot of developers have thought they were too hip for Java, but I still liked it. I implemented SAX in Java first of all, and have developed software in Java and encouraged my enterprise customers to &#8230; <a href="http://quoderat.megginson.com/2010/08/13/rip-java-1995-2010/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=quoderat.megginson.com&amp;blog=14988159&amp;post=381&amp;subd=quoderatech&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://quoderatech.files.wordpress.com/2010/08/java.jpg"><img src="http://quoderatech.files.wordpress.com/2010/08/java.jpg?w=640" alt="" title="Java"   class="alignleft size-full wp-image-383" /></a></p>
<p>Java is dead.</p>
<p>A lot of developers have thought they were too hip for Java, but I still liked it.  I implemented <a href="http://en.wikipedia.org/wiki/Simple_API_for_XML">SAX</a> in Java first of all, and have developed software in Java and encouraged my enterprise customers to use it for many years, sometimes in 9-figure projects at Fortune-500 companies &mdash; it&#8217;s a great, mature platform, with a lot of tools for managing large projects and development teams, and it has unit-testing and IDE support that is second to none.</p>
<p>But now, Oracle (which recently bought Sun) has <a href="http://www.informationweek.com/news/software/open_source/showArticle.jhtml?articleID=226700231&amp;cid=RSSfeed_IWK_All">decided to sue Google for using Java in Android</a>, even though (a) Sun long ago open sourced Java, and (b) Google built its own VM anyway.  I very much hope that Oracle will suffer the same humiliating, crushing, well-deserved defeat that <a href="http://en.wikipedia.org/wiki/SCO-Linux_controversies">the SCO group suffered</a> when it went after Linux with its own bogus law suits, but it will take years for that to happen.  The Android and Blackberry mobile operating systems will be fine, and Java (of a sort) will live on there (though I still <a href="http://quoderat.megginson.com/2010/01/10/one-app-store-to-rule-them-all/">recommend web apps instead of phone apps</a>), but the days of Java and Eclipse in the enterprise are finished.</p>
<p>In the meantime, there are lots of open alternatives to Java, and the litigation risks of using Java have suddenly become far too high.  In my consulting work, I&#8217;ll reluctantly have to advise customers not to use Java for any new projects, and to consider migrating older projects to a different platform.  If you&#8217;re a big company or government, you just can&#8217;t afford the risk that Oracle will come after you, too.</p>
<p>I&#8217;m sorry the end was so sudden and messy, but still, it was a great 15 years.  Thanks to James Gosling and all the other people in the Java community for the memories and opportunities.</p>
<br /> Tagged: <a href='http://quoderat.megginson.com/tag/news/'>news</a>, <a href='http://quoderat.megginson.com/tag/programming/'>programming</a>, <a href='http://quoderat.megginson.com/tag/rights/'>rights</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/quoderatech.wordpress.com/381/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/quoderatech.wordpress.com/381/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/quoderatech.wordpress.com/381/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/quoderatech.wordpress.com/381/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/quoderatech.wordpress.com/381/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/quoderatech.wordpress.com/381/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/quoderatech.wordpress.com/381/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/quoderatech.wordpress.com/381/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/quoderatech.wordpress.com/381/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/quoderatech.wordpress.com/381/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/quoderatech.wordpress.com/381/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/quoderatech.wordpress.com/381/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/quoderatech.wordpress.com/381/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/quoderatech.wordpress.com/381/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=quoderat.megginson.com&amp;blog=14988159&amp;post=381&amp;subd=quoderatech&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://quoderat.megginson.com/2010/08/13/rip-java-1995-2010/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c5f095286dd8a3f1dbbc047412a10fb3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">davidmegginson</media:title>
		</media:content>

		<media:content url="http://quoderatech.files.wordpress.com/2010/08/java.jpg" medium="image">
			<media:title type="html">Java</media:title>
		</media:content>
	</item>
		<item>
		<title>Mobile users want fresh data</title>
		<link>http://quoderat.megginson.com/2010/08/09/mobile-users-want-fresh-data/</link>
		<comments>http://quoderat.megginson.com/2010/08/09/mobile-users-want-fresh-data/#comments</comments>
		<pubDate>Mon, 09 Aug 2010 13:35:48 +0000</pubDate>
		<dc:creator>David Megginson</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://quoderat.megginson.com/?p=343</guid>
		<description><![CDATA[Summary: Mobile web users&#8217; needs differ by more than UI features (small touch screen): they may check information more often, and expect it to be fresher. Last night, I finally got around to installing Google Analytics on ourairports.mobi, the mobile &#8230; <a href="http://quoderat.megginson.com/2010/08/09/mobile-users-want-fresh-data/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=quoderat.megginson.com&amp;blog=14988159&amp;post=343&amp;subd=quoderatech&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<blockquote><p>
<strong>Summary:</strong> Mobile web users&#8217; needs differ by more than UI features (small touch screen): they may check information more often, and expect it to be fresher.
</p></blockquote>
<p>Last night, I finally got around to installing Google Analytics on <a href="http://ourairports.mobi/">ourairports.mobi</a>, the mobile version (for pre-smartphones) of <a href="http://www.ourairports.com/">ourairports.com</a>, and this morning, I got my first stats: all of <strong>3</strong> visits yesterday (vs. 1,677 for the non-mobile site).</p>
<p>I expect that number to climb when the site is collecting stats for a complete 24-hour day, but already, I&#8217;ve noticed a significant difference in use:</p>
<table>
<col align="left"></col>
<col align="right"></col>
<col align="right"></col>
<col align="right"></col>
<tbody>
<tr>
<th>Site</th>
<th>Visits</th>
<th>Page views</th>
<th>Pages/visit</th>
</tr>
<tr>
<td>Mobile</td>
<td style="text-align:right;">3</td>
<td style="text-align:right;">93</td>
<td style="text-align:right;">31.00</td>
</tr>
<tr>
<td>Desktop</td>
<td style="text-align:right;">1,677</td>
<td style="text-align:right;">4,748</td>
<td style="text-align:right;">2.83</td>
</tr>
</tbody>
</table>
<p>Of course, the mobile sample is too small to be statistically significant, but it still made me think about how a mobile user will use the site:</p>
<ul>
<li>A desktop user at home may check information for an airport once while planning a flight (as pilot or airline passenger).</li>
<li>A mobile user, at or on the way to the airport, will keep checking for changes (new weather forecast, NOTAMs, etc.), constantly updating the same few pages.</li>
</ul>
<p>A closer look at the analytics confirms that hypothesis, with a small number of airports updated multiple times (there were four pageviews for <a href="http://ourairports.mobi/airports/YPEF/">Sunbury Airfield</a> in Australia, for example).</p>
<p><strong>Further hypothesis:</strong> timely data is important for all web users, but it may be disproportionately important for mobile users.  If this is true, it&#8217;s probably worth spending less time trying to make your mobile site (or app) look like a fourth-year graphic design college project, and more time making sure that it has the best, and most recent information.</p>
<p>I&#8217;ll watch the analytics for ourairports.mobi over the next month to see if this trend continues.</p>
<br /> Tagged: <a href='http://quoderat.megginson.com/tag/mobile/'>mobile</a>, <a href='http://quoderat.megginson.com/tag/web/'>web</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/quoderatech.wordpress.com/343/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/quoderatech.wordpress.com/343/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/quoderatech.wordpress.com/343/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/quoderatech.wordpress.com/343/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/quoderatech.wordpress.com/343/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/quoderatech.wordpress.com/343/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/quoderatech.wordpress.com/343/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/quoderatech.wordpress.com/343/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/quoderatech.wordpress.com/343/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/quoderatech.wordpress.com/343/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/quoderatech.wordpress.com/343/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/quoderatech.wordpress.com/343/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/quoderatech.wordpress.com/343/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/quoderatech.wordpress.com/343/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=quoderat.megginson.com&amp;blog=14988159&amp;post=343&amp;subd=quoderatech&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://quoderat.megginson.com/2010/08/09/mobile-users-want-fresh-data/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c5f095286dd8a3f1dbbc047412a10fb3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">davidmegginson</media:title>
		</media:content>
	</item>
		<item>
		<title>Evil or misunderstood? Google and net neutrality</title>
		<link>http://quoderat.megginson.com/2010/08/08/evil-or-misunderstood/</link>
		<comments>http://quoderat.megginson.com/2010/08/08/evil-or-misunderstood/#comments</comments>
		<pubDate>Sun, 08 Aug 2010 18:14:50 +0000</pubDate>
		<dc:creator>David Megginson</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[rights]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://quoderat.megginson.com/?p=290</guid>
		<description><![CDATA[So what happened last week?  Did Google backtrack after getting caught trying to be evil about net neutrality and the mobile internet, or were they a victim of a misunderstanding (gleefully amplified by blood-thirsty Apple and RIM supporters)? Net neutrality &#8230; <a href="http://quoderat.megginson.com/2010/08/08/evil-or-misunderstood/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=quoderat.megginson.com&amp;blog=14988159&amp;post=290&amp;subd=quoderatech&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img class="alignright" title="Lord Byron" src="http://quoderatech.files.wordpress.com/2010/08/lord-byron1.jpg?w=640" alt="" /></p>
<p>So what happened last week?  Did Google <a href="http://www.nytimes.com/2010/08/08/opinion/08cringeley.html">backtrack after getting caught trying to be evil</a> about net neutrality and the mobile internet, or were they a <a href="http://www.eweek.com/c/a/Government-IT/The-Truth-About-Google-Verizon-and-Net-Neutrality-371606/">victim of a misunderstanding</a> (gleefully amplified by blood-thirsty Apple and RIM supporters)?</p>
<p><strong>Net neutrality</strong> is a crucial issue for those of us who care about open information.  We believe that the Internet is a public thoroughfare, where every information provider has the same access.  Competing web sites shouldn&#8217;t have their traffic slowed down because Google or Microsoft paid more money to Verizon, Rogers, or Bell, any more than you should have to pull to the side of the road to let someone in a more expensive car pass you.</p>
<h3>Carriers in search of a business plan</h3>
<p>For obvious reasons, the Internet providers don&#8217;t see it that way. They&#8217;ve ended up stuck in the rut of commodity service, with the inevitable race to the bottom for price, and are desperate to find some new revenue.  The mobile Internet providers are a little better off because they can at least lock customers into three-year contracts by giving them subsidized smartphones, but it&#8217;s still clear that someone like Verizon would be thrilled be able to take a big bag of money from Google in exchange for letting Google sites load a little faster than anyone else&#8217;s.</p>
<p>It turns out, though, that that&#8217;s not what Google was trying to do.</p>
<h3>Neutral in <span style="text-decoration:underline;">what sense</span>?</h3>
<p>The Google-Verizon kerfuffle draws attention to a different, and trickier part of the debate.  What if, instead of discriminating by provider (Google vs Facebook), carriers discriminated by traffic <em>type</em>? In other words, what if streaming audio and video got priority handling to avoid jerky playback, while e-mail was delayed an extra 2-4 seconds? All streaming video would get the same treatment, whether it comes from YouTube or a student&#8217;s dorm-room start-up, and all e-mail would get the same treatment, whether it&#8217;s from IBM or a LOL cats fan list.</p>
<p>According to Google&#8217;s CEO, Eric Schmidt, <a href="http://arstechnica.com/tech-policy/news/2010/05/fcc-on-net-neutrality-yes-we-can.ars">this is what Verizon and Google were talking about all along</a>: not favouring one provider over another, but favouring one <em>content type</em> over another.</p>
<h3>Is it still evil?</h3>
<p>I expect that many people who support net neutrality for providers won&#8217;t feel so strongly about net neutrality for content types, because it doesn&#8217;t have the same appearance of unfairness.</p>
<p>Going back to the thoroughfare analogy, we have sidewalks where only pedestrians are allowed, paths where only cyclists are allowed, crossings that pedestrians aren&#8217;t allowed to use, and superhighways where only motor vehicles are allowed.  Buses and carpoolers are sometimes allowed to use a faster lane, trucks are sometimes required to stay in the slower lanes, and so on.  Why can&#8217;t we have different lanes for different kinds of network traffic, too?</p>
<h3>Net neutrality makes sense for content types, too</h3>
<p>There are, however, four compelling arguments in favour of net neutrality by content type as well as provider:</p>
<ol>
<li><strong>Pandora&#8217;s Box</strong> — it seems straight-forward enough to give streaming video priority over email, but how far might carriers take it?  Will carriers throttle IM during the next G8 summit to make it harder for protesters to organize?  Will government regulators prefer content types that are more popular among the old than the young?</li>
<li><strong>Business/content-type alignment</strong> — as the owner of the world&#8217;s top video site, Google has a strong interest in making video on the mobile web faster, even if it means that its competitors&#8217; videos are faster too. This kind of thing could turn evil fast — imagine Adobe and Apple in a bidding war to determine whether Flash should be delivered faster or slower than other content types, or the recording industry lobbying to throttle bittorrent so much that it becomes useless.</li>
<li><strong>Innovation</strong> — the Internet already existed when HTML and HTTP arrived on the scene 20 years ago.  If the net hadn&#8217;t been neutral then, perhaps priority would have gone to important existing protocols like telnet and FTP, and HTTP (and HTML) might have been slow enough to turn off early adopters.  We don&#8217;t know what The Next Big Thing will be, but we do know that regulators respond slowly to change.  Why shut the door on innovation?</li>
<li><strong>Routing around censorship</strong> — seriously, how long will it take a few enterprising developers to realize that they can build an &#8220;accelerated download&#8221; app that allows other traffic to masquerade as video (or whatever has top priority).  Seconds?  Less?  You can make anything look like anything else on the Internet, and everyone thinks that his/her traffic is most important.</li>
</ol>
<h3>It&#8217;s OK to be wrong sometimes</h3>
<p>Google is a company that <a href="http://googlesystem.blogspot.com/2010/08/failure-is-always-option-at-google.html">embraces failure</a>, which, perhaps, is why it has so many successes: Google puts products out early, lets us play with them, then feeds the ones that succeed (e.g. Gmail) and kills the ones that don&#8217;t (e.g. Wave).</p>
<p>Perhaps Google is willing to try the same thing with ideas — they&#8217;re not necessarily evil for suggesting dropping net neutrality for content types, but they <em>are</em> wrong.  Let&#8217;s treat the whole thing as a failed project and move on, concentrating on making the net (mobile or desktop) faster for all providers, and all content types.</p>
<br /> Tagged: <a href='http://quoderat.megginson.com/tag/mobile/'>mobile</a>, <a href='http://quoderat.megginson.com/tag/news/'>news</a>, <a href='http://quoderat.megginson.com/tag/rights/'>rights</a>, <a href='http://quoderat.megginson.com/tag/web/'>web</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/quoderatech.wordpress.com/290/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/quoderatech.wordpress.com/290/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/quoderatech.wordpress.com/290/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/quoderatech.wordpress.com/290/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/quoderatech.wordpress.com/290/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/quoderatech.wordpress.com/290/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/quoderatech.wordpress.com/290/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/quoderatech.wordpress.com/290/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/quoderatech.wordpress.com/290/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/quoderatech.wordpress.com/290/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/quoderatech.wordpress.com/290/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/quoderatech.wordpress.com/290/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/quoderatech.wordpress.com/290/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/quoderatech.wordpress.com/290/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=quoderat.megginson.com&amp;blog=14988159&amp;post=290&amp;subd=quoderatech&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://quoderat.megginson.com/2010/08/08/evil-or-misunderstood/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c5f095286dd8a3f1dbbc047412a10fb3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">davidmegginson</media:title>
		</media:content>

		<media:content url="http://quoderatech.files.wordpress.com/2010/08/lord-byron1.jpg" medium="image">
			<media:title type="html">Lord Byron</media:title>
		</media:content>
	</item>
		<item>
		<title>Balisage 2010 Silent Auction</title>
		<link>http://quoderat.megginson.com/2010/08/01/balisage-2010-silent-auction/</link>
		<comments>http://quoderat.megginson.com/2010/08/01/balisage-2010-silent-auction/#comments</comments>
		<pubDate>Sun, 01 Aug 2010 19:03:17 +0000</pubDate>
		<dc:creator>David Megginson</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[conferences]]></category>

		<guid isPermaLink="false">http://www.megginson.com/blogs/quoderat/?p=262</guid>
		<description><![CDATA[The Balisage 2010 conference runs next week in beautiful Montreal, focusing on XML and other markup technologies. I cannot make it this year, unfortunately, but I gave some help (far too little) to Sam Wilmott to organize the silent auction. &#8230; <a href="http://quoderat.megginson.com/2010/08/01/balisage-2010-silent-auction/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=quoderat.megginson.com&amp;blog=14988159&amp;post=265&amp;subd=quoderatech&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.megginson.com/downloads/balisage-poster.pdf"><img src="http://www.megginson.com/img/balisage-poster.png" alt="Balisage Silent Auction Poster" align="left" /></a></p>
<p>The <a href="http://www.balisage.net/">Balisage 2010</a> conference runs next week in beautiful Montreal, focusing on XML and other markup technologies.  I cannot make it this year, unfortunately, but I gave some help (far too little) to <a href="http://www.wilmott.ca/">Sam Wilmott</a> to organize the <a href="http://www.balisage.net/2010/Auction.html">silent auction</a>.</p>
<p>The Balisage silent auction will raise money to help students and other young, up-and-coming markup stars to defray the cost of attending the conference: the auction includes O&#8217;Reilly books, various enterprise software licenses, and geeky memorabilia.  We&#8217;re encouraging participants to splurge, and try to outdo each-other by <em>overpaying</em> for things.  Most of us can&#8217;t afford to blow $20-50M on a bizjet, but we can certainly drop $50 on a $25 O&#8217;Reilly book and then brag about it to our friends.</p>
<p><img src="http://www.montrealstrip.ca/wp-content/gallery/bar-exxxotica/bar-exxxotica.jpg" alt="Montreal strip club" width="100" height="75" align="right" /></p>
<p>Think of it this way — Montreal, with its Vegas-of-the-North attitude towards sin, offers far less savoury places to stick a few $20 bills.  Why not put them somewhere that you won&#8217;t have to lie about when you get home?</p>
<br /> Tagged: <a href='http://quoderat.megginson.com/tag/conferences/'>conferences</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/quoderatech.wordpress.com/265/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/quoderatech.wordpress.com/265/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/quoderatech.wordpress.com/265/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/quoderatech.wordpress.com/265/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/quoderatech.wordpress.com/265/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/quoderatech.wordpress.com/265/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/quoderatech.wordpress.com/265/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/quoderatech.wordpress.com/265/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/quoderatech.wordpress.com/265/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/quoderatech.wordpress.com/265/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/quoderatech.wordpress.com/265/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/quoderatech.wordpress.com/265/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/quoderatech.wordpress.com/265/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/quoderatech.wordpress.com/265/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=quoderat.megginson.com&amp;blog=14988159&amp;post=265&amp;subd=quoderatech&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://quoderat.megginson.com/2010/08/01/balisage-2010-silent-auction/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c5f095286dd8a3f1dbbc047412a10fb3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">davidmegginson</media:title>
		</media:content>

		<media:content url="http://www.megginson.com/img/balisage-poster.png" medium="image">
			<media:title type="html">Balisage Silent Auction Poster</media:title>
		</media:content>

		<media:content url="http://www.montrealstrip.ca/wp-content/gallery/bar-exxxotica/bar-exxxotica.jpg" medium="image">
			<media:title type="html">Montreal strip club</media:title>
		</media:content>
	</item>
		<item>
		<title>The past, future, and present of mobile apps</title>
		<link>http://quoderat.megginson.com/2010/05/16/the-past-future-and-present-of-mobile-apps/</link>
		<comments>http://quoderat.megginson.com/2010/05/16/the-past-future-and-present-of-mobile-apps/#comments</comments>
		<pubDate>Sun, 16 May 2010 22:35:33 +0000</pubDate>
		<dc:creator>David Megginson</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.megginson.com/blogs/quoderat/?p=259</guid>
		<description><![CDATA[Now that I&#8217;ve had a few weeks to play with my Nexus One, I&#8217;m starting to grok the gut-level experience of living with a smart phone. I understand why people download apps, how it feels to have the Internet with &#8230; <a href="http://quoderat.megginson.com/2010/05/16/the-past-future-and-present-of-mobile-apps/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=quoderat.megginson.com&amp;blog=14988159&amp;post=259&amp;subd=quoderatech&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img src="http://upload.wikimedia.org/wikipedia/commons/thumb/2/22/Nexus_One.png/200px-Nexus_One.png" alt="Nexus One" width="100" align="right" /></p>
<p>Now that I&#8217;ve had a few weeks to play with my <a href="http://www.google.com/phone">Nexus One</a>, I&#8217;m starting to grok the gut-level experience of living with a smart phone.  I understand why people download apps, how it feels to have the Internet with me everywhere, and what it&#8217;s like to experience the web by touch on a screen that&#8217;s only a few centimetres square.</p>
<h3 id="past">Past</h3>
<p>Device-specific apps are sweet and shiny at first, but after a couple of weeks, it becomes obvious that many of them are the encore of the floppy-based PC shareware world of the 1980s and early 1990s (<span style="color:green;">SEND $5 TO GET RID OF THE ANNOYING ADS!</span> <span style="color:red;">ONLY $10 FOR THE FULL VERSION!</span>).</p>
<p>Discovering an interesting app through Apple&#8217;s or Android&#8217;s market (or taking a picture of a barcode on your computer screen) is surprisingly awkward compared to just following a link from one web site to another, and as we&#8217;ve learned from the postal service, the telegraph, the telephone, email, and the web, connectivity always wins in the end.</p>
<h3 id="future">Future</h3>
<p>Web apps run everywhere and connect to each-other seamlessly, and HTML5 allows a well-written web app to do <em>almost</em> everything a closed, device-specific app can do on a smart phone — many of the mobile web sites I&#8217;ve used (hello, <a href="http://m.google.com/">Google</a>!) are as good as or better than the corresponding device-specific apps.  There are some things, though, that make mobile web apps stand apart:</p>
<ul>
<li>The built-in buttons on your smartphone are tied to the browser, not to the app, so the Android menu or search button (for example) brings up a browser menu or search box, not an app one.</li>
<li>For good security reasons, a web app will probably never have as much access to the filesystem and device hardware as a closed device-specific app (do you want a malicious web app to be able to turn on your video camera when you&#8217;re browsing in bed?  do you ever consider that when you give a downloaded app access to your camera?).</li>
<li>While HTML5 supports notifications, you have to actually be on the web page to receive them.  That can be fixed by allowing the browser to launch web pages automatically on start/restart, but it&#8217;s still more awkward than an autostart app.</li>
<li>Web app processes need to be managed from inside the browser, not from a device-wide process manager.</li>
<li>As far as I know, there&#8217;s no way for a web app to install its own icon on the device home screen &#8212; the user has to install it manually (though it&#8217;s pretty easy).</li>
</ul>
<p>I don&#8217;t consider most of these to be a big deal, but they do point to the fact that no matter how much extra functionality HTML5 provides, web apps have a different world view: they&#8217;re nodes in a huge network, not standalone silos.</p>
<h3 id="present">Present</h3>
<p>I&#8217;ll probably have to continue to use a device-specific app for anything related to playing music or capturing photos/video for a while longer, and I&#8217;ll hang onto the Android WiFi analyzer I&#8217;m running on my phone.  Android has a lot of the same apps that show up in iPhone commercials (like <a href="http://www.urbanspoon.com/">Urban Spoon</a>), but while they&#8217;re pretty, they&#8217;re limited in the end — there&#8217;s way more out there on the web than there will ever be an an app store.</p>
<p>If you&#8217;re an person or organization that wants to interact with people on mobile devices, you have two choices:</p>
<ol>
<li>You can develop and maintain separate apps for iPhone, Android, Blackberry, Palm, and any other smart-phone OS&#8217;s that may come along, and let the phone vendors be gatekeepers between you and your users.</li>
<li>You can run a single mobile web app on your own server, one that&#8217;s only a click away from any other web site that links to it.</li>
</ol>
<p>The first option lets you force an icon onto the users desktop, but the direct development costs and opportunity costs of losing inbound links and search-engine love just seem too high.</p>
<br /> Tagged: <a href='http://quoderat.megginson.com/tag/mobile/'>mobile</a>, <a href='http://quoderat.megginson.com/tag/web/'>web</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/quoderatech.wordpress.com/259/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/quoderatech.wordpress.com/259/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/quoderatech.wordpress.com/259/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/quoderatech.wordpress.com/259/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/quoderatech.wordpress.com/259/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/quoderatech.wordpress.com/259/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/quoderatech.wordpress.com/259/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/quoderatech.wordpress.com/259/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/quoderatech.wordpress.com/259/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/quoderatech.wordpress.com/259/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/quoderatech.wordpress.com/259/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/quoderatech.wordpress.com/259/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/quoderatech.wordpress.com/259/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/quoderatech.wordpress.com/259/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=quoderat.megginson.com&amp;blog=14988159&amp;post=259&amp;subd=quoderatech&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://quoderat.megginson.com/2010/05/16/the-past-future-and-present-of-mobile-apps/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c5f095286dd8a3f1dbbc047412a10fb3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">davidmegginson</media:title>
		</media:content>

		<media:content url="http://upload.wikimedia.org/wikipedia/commons/thumb/2/22/Nexus_One.png/200px-Nexus_One.png" medium="image">
			<media:title type="html">Nexus One</media:title>
		</media:content>
	</item>
		<item>
		<title>The thing about creativity &#8230;</title>
		<link>http://quoderat.megginson.com/2010/01/29/the-thing-about-creativity/</link>
		<comments>http://quoderat.megginson.com/2010/01/29/the-thing-about-creativity/#comments</comments>
		<pubDate>Sat, 30 Jan 2010 00:16:12 +0000</pubDate>
		<dc:creator>David Megginson</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[rights]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.megginson.com/blogs/quoderat/?p=258</guid>
		<description><![CDATA[I left this comment on Simon St-Laurent&#8217;s interesting and thoughtful post How dare Apple &#8230; (which, in turn, was partly a response to Tim Bray&#8217;s post Nothing Creative). I don&#8217;t believe that most things, including the iPad, are obviously right &#8230; <a href="http://quoderat.megginson.com/2010/01/29/the-thing-about-creativity/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=quoderat.megginson.com&amp;blog=14988159&amp;post=258&amp;subd=quoderatech&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.megginson.com/img/ipad.jpg" alt="Steve Jobs with iPad" align="right" /></p>
<blockquote style="font-style:italic;font-size:smaller;color:#444444;"><p>I left this comment on Simon St-Laurent&#8217;s interesting and thoughtful post <a href="http://broadcast.oreilly.com/2010/01/how-dare-apple.html">How dare Apple &#8230;</a> (which, in turn, was partly a response to Tim Bray&#8217;s post <a href="http://www.tbray.org/ongoing/When/201x/2010/01/27/iPad">Nothing Creative</a>).</p>
<p>I don&#8217;t believe that most things, including the iPad, are obviously right or wrong, but I do have serious concerns that go beyond simply not being able to code on an iPad (at least, until <em>there&#8217;s an app for that</em>).  I&#8217;m copying my comment here to give it a more permanent home.  If I hadn&#8217;t posted this yet, I&#8217;d edit it to tone down the emotional language 10% or so, but still, it&#8217;s a fair reflection of my thoughts and concerns, not about the iPad itself (it&#8217;s just another consumer device), but about the way people are starting to talk and think about issues that are very important to me, like software freedom:</p></blockquote>
<p>The thing about creativity is that it responds poorly to central planning and central control. I have no problem with the fact that the iPad isn&#8217;t developer-friendly &#8212; I can buy a Netbook with twice the power for half the price and code on it (and, BTW, that netbook makes just as simple a consumer device).</p>
<p>My problem is the idea that a single Apple politburo controls everything that can appear on the device. Is that the future? Even in the bad old days of TV, before cable, there were 3 1/2 US networks to choose from, not just one &#8211; you had to watch TV outside the US to see just how bad things could get with a single, government-controlled broadcaster (I grew up in Canada, but close enough to watch the US stations, thank god).</p>
<p>Apple&#8217;s obsession with central control goes beyond software to hardware. There must be some kind of port for the optional keyboard to plug into, but no way it&#8217;s going to be USB or Firewire, because that might let someone use an *unplanned* creative device on the iPad, someone creative daring not to give Apple its cut (and veto). If I build something clever for creative people using a USB interface, it will work with desktop towers, notebooks, netbooks, and even some small portable devices, but *not* with the iPad.</p>
<p>Apple has some smart people working there, but they won&#8217;t always have the best ideas, and Apple has thrown up too many barriers to other people with smart ideas. The best apps in the future are going to come from a couple of students coding in a dorm room, and they might just be so annoyed by Apple censorship that they defect to a freer platform. It&#8217;s sad that things have gotten to the point that even Windows is a freer platform than Apple.</p>
<br /> Tagged: <a href='http://quoderat.megginson.com/tag/mobile/'>mobile</a>, <a href='http://quoderat.megginson.com/tag/rights/'>rights</a>, <a href='http://quoderat.megginson.com/tag/web/'>web</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/quoderatech.wordpress.com/258/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/quoderatech.wordpress.com/258/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/quoderatech.wordpress.com/258/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/quoderatech.wordpress.com/258/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/quoderatech.wordpress.com/258/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/quoderatech.wordpress.com/258/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/quoderatech.wordpress.com/258/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/quoderatech.wordpress.com/258/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/quoderatech.wordpress.com/258/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/quoderatech.wordpress.com/258/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/quoderatech.wordpress.com/258/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/quoderatech.wordpress.com/258/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/quoderatech.wordpress.com/258/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/quoderatech.wordpress.com/258/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=quoderat.megginson.com&amp;blog=14988159&amp;post=258&amp;subd=quoderatech&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://quoderat.megginson.com/2010/01/29/the-thing-about-creativity/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c5f095286dd8a3f1dbbc047412a10fb3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">davidmegginson</media:title>
		</media:content>

		<media:content url="http://www.megginson.com/img/ipad.jpg" medium="image">
			<media:title type="html">Steve Jobs with iPad</media:title>
		</media:content>
	</item>
		<item>
		<title>What&#039;s the value of a life?</title>
		<link>http://quoderat.megginson.com/2010/01/17/whats-the-value-of-a-life/</link>
		<comments>http://quoderat.megginson.com/2010/01/17/whats-the-value-of-a-life/#comments</comments>
		<pubDate>Sun, 17 Jan 2010 18:10:29 +0000</pubDate>
		<dc:creator>David Megginson</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.megginson.com/blogs/quoderat/?p=257</guid>
		<description><![CDATA[What&#8217;s your life worth to you? &#8220;Priceless&#8221; is the obvious answer, but in reality, you put a price on your life all the time. Safety vs. money Here&#8217;s a simple example: let&#8217;s say that you want to go on a &#8230; <a href="http://quoderat.megginson.com/2010/01/17/whats-the-value-of-a-life/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=quoderat.megginson.com&amp;blog=14988159&amp;post=257&amp;subd=quoderatech&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>What&#8217;s your life worth to you? &#8220;Priceless&#8221; is the obvious answer, but in reality, you put a price on your life all the time.</p>
<h3>Safety vs. money</h3>
<p>Here&#8217;s a simple example: let&#8217;s say that you want to go on a two-hour scheduled flight, and that the odds of you dying on the flight come out to about 1 in 1 million (it&#8217;s actually lower, but let&#8217;s keep the math simple).  Your ticket costs $400 with taxes.</p>
<p>Now, I start an airline that adds all kinds of extra safety features and procedures, and over the years, it proves itself twice as safe as the average, so your odds of dying are only 1 in 2 million.  However, your ticket would cost $600 with taxes on my airline.</p>
<p>Will you buy the more expensive ticket?  If not, then you&#8217;ve decided that your life is worth less than $200 million dollars (for every million people who paid the extra $200, one would be saved from death, in the unlikely event that I managed to get the simple math right) &mdash; a big number, still, but no longer &#8220;priceless&#8221;.  Decide how much extra you <em>would</em> pay for the ticket ($5? $10? $50?) and multiply by 1 million &mdash; that&#8217;s what your life&#8217;s worth to you.</p>
<h3>Safety vs. time and pleasure</h3>
<p>Of course, time is as much of a commodity as money.  How much time do you save by flying between cities instead of taking the train, or driving across town instead of taking the bus?  How much extra risk of death did you assume by making that choice?  Again, you can do the math, and decide what value (in saved time) you put on your life. Ditto for your hobbies &mdash; downhill skiing is more dangerous than playing Wii, but you&#8217;ve decided that the value of your life is less than the extra enjoyment divided by the extra risk of dying (where risk is &lt; 1.0).</p>
<h3>It&#8217;s perfectly normal</h3>
<p>Risk taking is normal for humans, and most of the time we don&#8217;t actually do the math &mdash; we just make a snap judgement of the value of our lives and the effects of our choices based on instinct.  This matters, though, because we (where &#8220;we&#8221; = American, Canadian, British, Australian, etc) are now electing governments that promise to spend more money to make us <em>safer</em>, and much of that money ends up going into blowing up central Asian villages, spying on our communications, and groping us at airports.</p>
<h3>Valuing lives</h3>
<p>Is it helping?  If we&#8217;d spent the same amount of money building better flu clinics, fast intercity trains or even better-lit intersections, could we have saved more lives in our own countries?  If we&#8217;d invested even one percent of that money into sewers, clean water or earthquake-resistant hospitals for the developing world, how many lives could we have saved there?</p>
<p>Putting a dollar value on a life isn&#8217;t a crass, corporate, conservative thing &mdash; it&#8217;s a way of deciding where to spend money most effectively.  If I could save one life for every $2 million spent on road improvements, and one life for every $200 million spent on improved airport security, where should I spend that money?</p>
<h3>Where are people dying?</h3>
<p>Let&#8217;s end with fatality numbers for the U.S. in 2001, the worst year for terrorism on U.S. soil:</p>
<p><strong>Influenza and pneumonia:</strong> <a href="http://www.wrongdiagnosis.com/f/flu/deaths.htm">63,730</a></p>
<p><strong>Traffic accidents:</strong> <a href="http://www-fars.nhtsa.dot.gov/Main/index.aspx">42,196</a></p>
<p><strong>Terrorist attacks:</strong> 2,973</p>
<p>If you&#8217;d had billions of dollars to spend to save lives nine years ago, where would you have spent it first?  Where would you spend it now?  That depends not only on the overall numbers, of course, but the amount you have to spend to save each life.  I&#8217;m not sure we know that, but I suspect that it&#8217;s much higher for anti-terrorism efforts than for basic road or healthcare improvements.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/quoderatech.wordpress.com/257/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/quoderatech.wordpress.com/257/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/quoderatech.wordpress.com/257/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/quoderatech.wordpress.com/257/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/quoderatech.wordpress.com/257/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/quoderatech.wordpress.com/257/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/quoderatech.wordpress.com/257/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/quoderatech.wordpress.com/257/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/quoderatech.wordpress.com/257/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/quoderatech.wordpress.com/257/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/quoderatech.wordpress.com/257/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/quoderatech.wordpress.com/257/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/quoderatech.wordpress.com/257/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/quoderatech.wordpress.com/257/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=quoderat.megginson.com&amp;blog=14988159&amp;post=257&amp;subd=quoderatech&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://quoderat.megginson.com/2010/01/17/whats-the-value-of-a-life/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c5f095286dd8a3f1dbbc047412a10fb3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">davidmegginson</media:title>
		</media:content>
	</item>
		<item>
		<title>One app store to rule them all &#8230;</title>
		<link>http://quoderat.megginson.com/2010/01/10/one-app-store-to-rule-them-all/</link>
		<comments>http://quoderat.megginson.com/2010/01/10/one-app-store-to-rule-them-all/#comments</comments>
		<pubDate>Sun, 10 Jan 2010 22:01:54 +0000</pubDate>
		<dc:creator>David Megginson</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[business]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[rights]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.megginson.com/blogs/quoderat/?p=256</guid>
		<description><![CDATA[During my university studies, I first encountered the idea of the Myth of Progress — in 19th and 20th centuries a lot of people assumed that the world generally gets better each generation (aside from occasional blips like depressions or &#8230; <a href="http://quoderat.megginson.com/2010/01/10/one-app-store-to-rule-them-all/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=quoderat.megginson.com&amp;blog=14988159&amp;post=256&amp;subd=quoderatech&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>During my university studies, I first encountered the idea of the <a href="http://en.wikipedia.org/wiki/Myth_of_Progress">Myth of Progress</a> — in 19th and 20th centuries a lot of people assumed that the world generally gets better each generation (aside from occasional blips like depressions or world wars), with less bigotry, better medicine, new technology, etc., but there&#8217;s no guarantee that any next generation will build on and improve the accomplishments of the previous one, and history&#8217;s movement may be more akin to a <a href="http://en.wikipedia.org/wiki/Random_walk">random walk</a>.</p>
<p><strong>Case in point:</strong> in the information technology world, the greatest accomplishment of the most talented coders and business people in GenX was replacing the Baby Boomers&#8217; nasty old platform-dependent shrink-wrapped computer applications with open web applications that could run anywhere, from a Windows desktop to a Linux cell phone.  Write once, run all over the place on any hardware/OS you want.  GMail instead of Eudora.  Wikipedia instead of Encarta.  Cool, eh?</p>
<p><strong>So GenY comes along</strong> and says &#8220;hey: instead of encouraging people to browse the web with open standards, let&#8217;s build proprietary applications that run on only one type of mobile phone.  And we&#8217;ll allow only <strong><a href="http://en.wikipedia.org/wiki/ITunes_Store">one store</a></strong> to sell those applications for each type of phone, and every proprietary, platform-specific app will have to be preapproved and precensored by the phone manufacturer, who will extort^H^H^H^H^H^H be gladly offered a cut of sales.&#8221;  Even Microsoft in its monopolistic hey-day — before it became the toothless lion it is today — never had the balls to try anything like that with Windows apps.</p>
<p><strong>Who, ten years ago</strong>, would have predicted an IT catastrophe like this after so much progress and hope? It&#8217;s enough to make a person cry.  Let&#8217;s encourage those GenY&#8217;ers who taken up the torch and continue to work on the dream of an open web.</p>
<br /> Tagged: business, mobile, rights, web <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/quoderatech.wordpress.com/256/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/quoderatech.wordpress.com/256/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/quoderatech.wordpress.com/256/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/quoderatech.wordpress.com/256/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/quoderatech.wordpress.com/256/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/quoderatech.wordpress.com/256/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/quoderatech.wordpress.com/256/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/quoderatech.wordpress.com/256/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/quoderatech.wordpress.com/256/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/quoderatech.wordpress.com/256/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/quoderatech.wordpress.com/256/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/quoderatech.wordpress.com/256/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/quoderatech.wordpress.com/256/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/quoderatech.wordpress.com/256/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=quoderat.megginson.com&amp;blog=14988159&amp;post=256&amp;subd=quoderatech&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://quoderat.megginson.com/2010/01/10/one-app-store-to-rule-them-all/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c5f095286dd8a3f1dbbc047412a10fb3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">davidmegginson</media:title>
		</media:content>
	</item>
		<item>
		<title>A farewell to tabs</title>
		<link>http://quoderat.megginson.com/2009/08/05/a-farewell-to-tabs/</link>
		<comments>http://quoderat.megginson.com/2009/08/05/a-farewell-to-tabs/#comments</comments>
		<pubDate>Wed, 05 Aug 2009 12:32:12 +0000</pubDate>
		<dc:creator>David Megginson</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.megginson.com/blogs/quoderat/?p=252</guid>
		<description><![CDATA[I&#8217;ve used tabbed layouts in web sites for a while without thinking much about it. I find them less obtrusive than menus, and have always believed that the idiom was familiar to nearly all users because of desktop applications. Here&#8217;s &#8230; <a href="http://quoderat.megginson.com/2009/08/05/a-farewell-to-tabs/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=quoderat.megginson.com&amp;blog=14988159&amp;post=252&amp;subd=quoderatech&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve used tabbed layouts in web sites for a while without thinking much about it.  I find them less obtrusive than menus, and have always believed that the idiom was familiar to nearly all users because of desktop applications.  Here&#8217;s an example of the tabbed interface at <a href="http://www.ourairports.com/">OurAirports</a> as of 5 August, 2009:</p>
<p><img src="http://www.megginson.com/img/ourairports-tabs.png" alt="OurAirports tabs, 2009-08-05" /></p>
<p>The &#8220;Airport&#8221; tab has bold text, and a white background that runs smoothly into the rest of the page, while the other tabs have a light-blue background, blue text, and a line at the bottom separating them from the page — that should make it obvious to everyone that &#8220;Airport&#8221; represents the current page, while the others represent alternative pages that you can view by clicking on them.</p>
<p>Right?</p>
<p>Err, maybe not.  Even though it doesn&#8217;t look linky, the active tab is still, by a lucky coincidence, a link, so I was able to track it using the Google Analytics <cite>Site Overlay</cite> out-link tracker (note that it&#8217;s not actually a click tracker, even if it looks like one).  I have over 40,000 airport pages like this, so I can&#8217;t check every one, but the few dozen I looked at all told the same, sad story&#8230;</p>
<h3>People don&#8217;t get tabbed interfaces</h3>
<p>On most airport pages, the majority of user clicks were on the active &#8220;Airport&#8221; tab.  In other words, people go to the page, see the word &#8220;Airport&#8221; in bold in a prominent position, and click on it.  They <em>don&#8217;t</em> notice that it&#8217;s the active tab — maybe they don&#8217;t know that it&#8217;s a tab at all.  They just figure that it must have more information about the airport they&#8217;re looking at.</p>
<p>For example, on the <a href="http://www.ourairports.com/airports/EGLL/">Heathrow Airport</a> page over the past month, Google Analytics tracked 17 outlinks to the same page (via the active &#8220;Airport&#8221; tab), 5 to airport arrivals, 4 to airport departures, and 0-2 for every other link.</p>
<p>Once they click on what I thought they&#8217;d recognize as the active airport tab, the same page just reloads.  Blech.  I assume that&#8217;s when they get sick of the site, and go back to their Google search results to find a better page about the airport.</p>
<h3>Tabs encourage information clutter</h3>
<p>So the tabbed interface just leads to confusion and frustration from many of the visitors to my web site.  But there&#8217;s another problem evident from the the outlink stats: tabs encourage a designer to present too many options in too many contexts.  The tabs are all visible on every page they cover, but most of the time, they represent information that the users don&#8217;t actually need, and there&#8217;s no clear visual cue that some of the tabs (e.g. arrivals and departures) are a lot more interesting than others (e.g. the airport page&#8217;s change history).</p>
<p>Here, for example, are the last month&#8217;s outlink counts for each of the tabs on the <a href="http://www.ourairports.com/airports/KMYR/">Myrtle Beach International Airport</a> page:</p>
<table>
<thead>
<tr>
<th>Tab</th>
<th># followed</th>
</tr>
</thead>
<tbody>
<tr>
<td>Airport</td>
<td>33</td>
</tr>
<tr>
<td>Arrivals</td>
<td>36</td>
</tr>
<tr>
<td>Departures</td>
<td>12</td>
</tr>
<tr>
<td>Pilot info</td>
<td>0</td>
</tr>
<tr>
<td>Visitors</td>
<td>4</td>
</tr>
<tr>
<td>Nearby airports</td>
<td>7</td>
</tr>
<tr>
<td>Nearby members</td>
<td>1</td>
</tr>
<tr>
<td>Changes</td>
<td>0</td>
</tr>
<tr>
<td>Edit</td>
<td>0</td>
</tr>
</tbody>
</table>
<p>For reasons I don&#8217;t understand, this was the most-visited airport page on OurAirports last month, with 371 pageviews (300 uniques).  It&#8217;s a little atypical, in that the active tab is not the most clicked (though it&#8217;s still unacceptably high), but otherwise, it shows the picture well.  The &#8220;Pilot info&#8221; tab has existed for only a few days, so we can leave it out, but in general, it&#8217;s clear that the main thing accomplished by the tabs is showing a lot of links at the top of every page that no one actually wants to use.  I suspect that even the four clicks on the &#8220;Visitors&#8221; tab were accidental — instead of trying to see what OurAirports members have visited the airport, people were probably just looking for visitor information.</p>
<h3>How to redesign?</h3>
<p>So if (a) tabs aren&#8217;t actually intuitive for most of my visitors, and (b) they fail to distinguish useful/popular information from more esoteric information, then they have to go.  It&#8217;s going to take me a while to redesign the site, but what I think I&#8217;ll do is highlight the 3-5 most useful actions for each type of page in a side bar beside the map, like this:</p>
<blockquote><p><strong>Show me&#8230;</strong></p>
<ul>
<li>arrivals or departures</li>
<li>visitor comments</li>
<li>pilot information</li>
<li>nearby airports</li>
<li>points of interest</li>
<li>more&#8230;</li>
</ul>
</blockquote>
<p>A list like this, as opposed to tabs, provides a clear call to action for a page visitor, providing more detailed options in language that will make sense to them.  It highlights useful information they might have missed in a tab (e.g. pilot info) or a section lower on the page (e.g. Visitor comments), and hides stuff they rarely need in a menu that appears only on demand, when they click &#8220;More&#8230;&#8221;.</p>
<p>Farewell, tabs.  Even if you weren&#8217;t helpful, you were fun to design with CSS and rounded-corner images.</p>
<br /> Tagged: web <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/quoderatech.wordpress.com/252/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/quoderatech.wordpress.com/252/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/quoderatech.wordpress.com/252/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/quoderatech.wordpress.com/252/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/quoderatech.wordpress.com/252/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/quoderatech.wordpress.com/252/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/quoderatech.wordpress.com/252/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/quoderatech.wordpress.com/252/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/quoderatech.wordpress.com/252/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/quoderatech.wordpress.com/252/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/quoderatech.wordpress.com/252/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/quoderatech.wordpress.com/252/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/quoderatech.wordpress.com/252/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/quoderatech.wordpress.com/252/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=quoderat.megginson.com&amp;blog=14988159&amp;post=252&amp;subd=quoderatech&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://quoderat.megginson.com/2009/08/05/a-farewell-to-tabs/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c5f095286dd8a3f1dbbc047412a10fb3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">davidmegginson</media:title>
		</media:content>

		<media:content url="http://www.megginson.com/img/ourairports-tabs.png" medium="image">
			<media:title type="html">OurAirports tabs, 2009-08-05</media:title>
		</media:content>
	</item>
	</channel>
</rss>
