<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Bradley Holt &#187; Open Standards</title>
	<atom:link href="http://bradley-holt.com/tag/open-standards/feed/" rel="self" type="application/rss+xml" />
	<link>http://bradley-holt.com</link>
	<description></description>
	<lastBuildDate>Thu, 17 May 2012 01:04:35 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>Top Five Posts of 2011</title>
		<link>http://bradley-holt.com/2011/12/top-five-posts-of-2011/</link>
		<comments>http://bradley-holt.com/2011/12/top-five-posts-of-2011/#comments</comments>
		<pubDate>Fri, 30 Dec 2011 17:15:32 +0000</pubDate>
		<dc:creator>Bradley Holt</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[AMQP]]></category>
		<category><![CDATA[CouchApp]]></category>
		<category><![CDATA[CouchDB]]></category>
		<category><![CDATA[Databases]]></category>
		<category><![CDATA[Domain-Driven Design]]></category>
		<category><![CDATA[FOSS]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[HTTP]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[NoSQL]]></category>
		<category><![CDATA[Open Standards]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP-QAT]]></category>
		<category><![CDATA[Quality Assurance]]></category>
		<category><![CDATA[RabbitMQ]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[Scaling]]></category>
		<category><![CDATA[Software Design]]></category>

		<guid isPermaLink="false">http://bradley-holt.com/?p=1480</guid>
		<description><![CDATA[Continuing a trend started by Cal Evans and then followed by Chris Cornutt, Matthew Turland, and Joe Devon; here are the top five most viewed posts from my blog in 2011. 5. CouchDB and Domain-Driven Design This post covered two topics that are of great interest to me. Document databases like CouchDB have much potential [...]]]></description>
			<content:encoded><![CDATA[<p>Continuing a trend started by <a href="http://blog.calevans.com/2011/12/29/top-three-posts-of-2011/">Cal Evans</a> and then followed by <a href="http://blog.phpdeveloper.org/?p=425">Chris Cornutt</a>, <a href="http://matthewturland.com/2011/12/29/top-10-posts-of-2011/">Matthew Turland</a>, and <a href="http://mysqltalk.wordpress.com/2011/12/30/top-posts-of-2011/">Joe Devon</a>; here are the top five most viewed posts from my blog in 2011.</p>
<h3>5. <a href="http://bradley-holt.com/2011/08/couchdb-and-domain-driven-design/">CouchDB and Domain-Driven Design</a></h3>
<p>This post covered two topics that are of great interest to me. Document databases like CouchDB have much potential when it comes to domain-driven design. The post outlined some techniques for serializing domain objects into CouchDB documents.</p>
<h3>4. <a href="http://bradley-holt.com/2011/07/addressing-the-nosql-criticism/">Addressing the NoSQL Criticism</a></h3>
<p>I heard a lot of NoSQL bashing this year at OSCON. As a result, I decided to write a rebuttal to many of the criticisms that I heard. This post inspired a lively <a href="http://bradley-holt.com/2011/07/addressing-the-nosql-criticism/#comments">comment thread</a>.</p>
<h3>3. <a href="http://bradley-holt.com/2011/07/testing-php-5-4/">Testing PHP 5.4</a></h3>
<p>This was a short post on how to help the <a href="http://qa.php.net/">PHP Quality Assurance Team</a> by running the tests for the latest development version of PHP 5.4. It covered downloading, compiling, and running the tests. Most importantly, it also covered reporting your test results.</p>
<h3>2. <a href="http://bradley-holt.com/2011/07/exploring-rabbitmq-and-php/">Exploring RabbitMQ and PHP</a></h3>
<p>I was exploring the possibility of using RabbitMQ for an upcoming project. I decided to post some notes on my experience getting started with RabbitMQ and integrating it with PHP. I haven&#8217;t ended up using RabbitMQ in production yet, but I&#8217;m confident that I&#8217;ll end up using it at some point.</p>
<h3>1. <a href="http://bradley-holt.com/2011/07/couchdb-jquery-plugin-reference/">CouchDB jQuery Plugin Reference</a></h3>
<p>I had been frustrated by the lack of documentation for the CouchDB jQuery plugin—so decided to write my own. After I wrote the blog post, <a href="http://www.maxogden.com/">Max Ogden</a> pointed me to <a href="http://arandomurl.com/">Dale Harvey</a>‘s <a href="https://github.com/daleharvey/jquery.couch.js-docs">documentation generator for jquery.couch.js</a> and a copy of the generated <a href="http://daleharvey.github.com/jquery.couch.js-docs/symbols/index.html">jQuery CouchDB documentation</a>. Max and Dale are also working on a more flexible jquery.couch2.js.</p>
]]></content:encoded>
			<wfw:commentRss>http://bradley-holt.com/2011/12/top-five-posts-of-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Defining a RESTful Framework</title>
		<link>http://bradley-holt.com/2011/08/defining-a-restful-framework/</link>
		<comments>http://bradley-holt.com/2011/08/defining-a-restful-framework/#comments</comments>
		<pubDate>Fri, 19 Aug 2011 17:41:49 +0000</pubDate>
		<dc:creator>Bradley Holt</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[HTTP]]></category>
		<category><![CDATA[Hypermedia]]></category>
		<category><![CDATA[Open Standards]]></category>
		<category><![CDATA[PHACTOR]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[Web Application Frameworks]]></category>

		<guid isPermaLink="false">http://bradley-holt.com/?p=1327</guid>
		<description><![CDATA[Web application frameworks have varying support for the concepts behind Representational State Transfer (REST). Most web application frameworks, if not all, allow you to create &#8220;fully&#8221; RESTful web applications. However, there does not seem to be a focus on explicitly applying RESTful principles. So, here are the key concepts that I&#8217;d like to see addressed: [...]]]></description>
			<content:encoded><![CDATA[<p>Web application frameworks have varying support for the concepts behind <a href="http://en.wikipedia.org/wiki/Representational_State_Transfer">Representational State Transfer</a> (REST). Most web application frameworks, if not all, allow you to create &#8220;fully&#8221; RESTful web applications. However, there does not seem to be a focus on explicitly applying RESTful principles. So, here are the key concepts that I&#8217;d like to see addressed:</p>
<ul>
<li>Embrace, and don&#8217;t abstract, the <a href="http://www.w3.org/Protocols/">Hypertext Transfer Protocol</a> (HTTP).</li>
<li>Focus on entities/resources—identified by full Uniform Resource Identifiers (URIs).</li>
<li>Use HTTP methods (<code>GET</code>, <code>POST</code>, <code>PUT</code>, <code>DELETE</code>, <code>OPTIONS</code>, <code>HEAD</code>) to perform operations on entities/resources.</li>
<li>Allow for self-described messages through the use of header fields, such as <code>Accept</code> and <code>Content-Type</code>.</li>
<li>Make <a href="http://www.amundsen.com/hypermedia/">hypermedia</a> controls a core concept (perhaps using <a href="http://amundsen.com/media-types/phactor/">PHACTOR</a> as a starting point), not just a byproduct of rendering.</li>
<li>Think of web applications as <a href="http://en.wikipedia.org/wiki/State_transition_system">state transition systems</a>. Representations of entities/resources are states, and hypermedia controls define the available state transitions.</li>
</ul>
<p>Benefits:</p>
<ul>
<li>Interoperability: Focusing on open standards allows for easier integration with other systems.</li>
<li>Cacheability: Embracing HTTP gives you many caching options, almost for free.</li>
<li>Testability: Self-contained and self-describing messages are very testable.  Decomposing a complex system into states and available state transitions  greatly reduces the complexity of the system and its tests.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://bradley-holt.com/2011/08/defining-a-restful-framework/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Exploring RabbitMQ and PHP</title>
		<link>http://bradley-holt.com/2011/07/exploring-rabbitmq-and-php/</link>
		<comments>http://bradley-holt.com/2011/07/exploring-rabbitmq-and-php/#comments</comments>
		<pubDate>Wed, 20 Jul 2011 22:10:38 +0000</pubDate>
		<dc:creator>Bradley Holt</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[AMQP]]></category>
		<category><![CDATA[FOSS]]></category>
		<category><![CDATA[Open Standards]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[RabbitMQ]]></category>

		<guid isPermaLink="false">http://bradley-holt.com/?p=1179</guid>
		<description><![CDATA[I&#8217;m exploring the possibility of using RabbitMQ for an upcoming project. RabbitMQ is a free/open source message broker platform. It uses the open Advanced Message Queuing Protocol (AMQP) standard and is written in Erlang using the Open Telecom Platform (OTP). It promises a high level of availability, throughput, scalability, and portability. Since it is built [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m exploring the possibility of using <a href="http://www.rabbitmq.com/">RabbitMQ</a> for an upcoming project. RabbitMQ is a free/open source message broker platform. It uses the open <a href="http://www.amqp.org/">Advanced Message Queuing Protocol</a> (AMQP) standard and is written in <a href="http://www.erlang.org/">Erlang using the Open Telecom Platform</a> (OTP). It promises a high level of availability, throughput, scalability, and portability. Since it is built using open standards, it is interoperable with other messaging systems and can be accessed from any platform.</p>
<p>I&#8217;ll be using RabbitMQ first from PHP, but I plan on using it to send and receive messages to and from other systems. Following are the steps I used to get RabbitMQ and PHP&#8217;s AMQP library setup on my development machine.</p>
<p>First, I installed RabbitMQ using MacPorts:</p>
<pre><code class="no-highlight">$ sudo port install rabbitmq-server</code></pre>
<p>Then, I started RabbitMQ:</p>
<pre><code class="no-highlight">$ sudo rabbitmq-server -detached</code></pre>
<p>Next, I installed the <a href="http://hg.rabbitmq.com/rabbitmq-c/">librabbitmq</a> library using a slight variation of the instructions on <a href="http://www.php.net/manual/en/amqp.installation.php">PHP&#8217;s AMQP Installation</a> page (you may need to install <a href="http://mercurial.selenic.com/">Mercurial</a> first):</p>
<pre><code class="no-highlight">$ hg clone http://hg.rabbitmq.com/rabbitmq-c/rev/3c549bb09c16 rabbitmq-c
$ cd rabbitmq-c
$ hg clone http://hg.rabbitmq.com/rabbitmq-codegen/rev/f8b34141e6cb codegen
$ autoreconf -i &amp;&amp; ./configure &amp;&amp; make &amp;&amp; sudo make install</code></pre>
<p>Then, I installed the AMQP extension using PECL:</p>
<pre><code class="no-highlight">$ sudo pecl install amqp-beta</code></pre>
<p>To test that everything works, I opened up two interactive PHP shells using <code>php -a</code>. I ran the following code in the first PHP shell:</p>
<pre><code class="php">$exchangeName = 'messages';
$routeKey = 'routeA';
$message = 'Hello, world.';
$connection = new AMQPConnection();
$connection-&gt;connect();
$exchange = new AMQPExchange($connection);
$exchange-&gt;declare($exchangeName);
</code></pre>
<p>I then ran the following code in the second PHP shell:</p>
<pre><code class="php">$exchangeName = 'messages';
$routeKey = 'routeA';
$connection = new AMQPConnection();
$connection-&gt;connect();
$queue = new AMQPQueue($connection);
$queue-&gt;declare($exchangeName);
$queue-&gt;bind($exchangeName, $routeKey);</code></pre>
<p>Back in the first PHP shell:</p>
<pre><code class="php">$exchange-&gt;publish($message, $routeKey);</code></pre>
<p>Back in the second PHP shell:</p>
<pre><code class="php">$message = $queue-&gt;get();
print_r($message);</code></pre>
<p>Here is the output I got from the print_r statement:</p>
<pre><code class="php">Array
(
    [routing_key] =&gt; routeA
    [exchange] =&gt; messages
    [delivery_tag] =&gt; 1
    [Content-type] =&gt; text/plain
    [count] =&gt; 0
    [msg] =&gt; Hello, world.
)</code></pre>
<p>There are several other options that can be set, and a lot more to learn about RabbitMQ and AMP. Check out the <a href="http://www.php.net/manual/en/book.amqp.php">documentation for PHP&#8217;s AMQP extension</a> for details about working with AMQP servers from PHP.</p>
]]></content:encoded>
			<wfw:commentRss>http://bradley-holt.com/2011/07/exploring-rabbitmq-and-php/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Behind The New VPR Homepage</title>
		<link>http://bradley-holt.com/2010/10/behind-the-new-vpr-homepage/</link>
		<comments>http://bradley-holt.com/2010/10/behind-the-new-vpr-homepage/#comments</comments>
		<pubDate>Mon, 11 Oct 2010 15:09:47 +0000</pubDate>
		<dc:creator>Bradley Holt</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Atom Syndication Format]]></category>
		<category><![CDATA[ClearBearing]]></category>
		<category><![CDATA[CouchDB]]></category>
		<category><![CDATA[FOSS]]></category>
		<category><![CDATA[Found Line]]></category>
		<category><![CDATA[HTTP]]></category>
		<category><![CDATA[Mobile Computing]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[Open Standards]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Public Media]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[Vermont]]></category>
		<category><![CDATA[VPR]]></category>
		<category><![CDATA[Zend Framework]]></category>

		<guid isPermaLink="false">http://bradley-holt.com/?p=888</guid>
		<description><![CDATA[Found Line had the privilege of designing and developing Vermont Public Radio&#8216;s (VPR) new homepage. VPR&#8217;s Online Manager, Jonathan Butler, wrote a blog post about how the redesigned homepage delivers more content to VPR.net visitors. Here I&#8217;ll talk about the technology behind this new homepage. Atom Syndication Format Most of VPR&#8217;s web content is currently [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://foundline.com/">Found Line</a> had the privilege of designing and developing <a href="http://www.vpr.net/">Vermont Public Radio</a>&#8216;s (VPR) new homepage. VPR&#8217;s Online Manager, Jonathan Butler, wrote a blog post about how the <a href="http://vprblog.blogspot.com/2010/10/new-vprnet-homepage.html">redesigned homepage delivers more content to VPR.net visitors.</a> Here I&#8217;ll talk about the technology behind this new homepage.</p>
<h3>Atom Syndication Format</h3>
<p>Most of VPR&#8217;s web content is currently stored in a proprietary content management system (CMS). The first step was publishing the needed content from the CMS out into an open format. VPR&#8217;s Dan Allen published from the CMS <a href="http://www.atomenabled.org/">Atom</a> feeds of the various content we would need for the new homepage.</p>
<h3>PHP and Zend Framework</h3>
<p>Once we had the needed Atom feeds, we created a <a href="http://framework.zend.com/">Zend Framework</a> web application to import these feeds. Components such as <a href="http://framework.zend.com/manual/en/zend.feed.reader.html">Zend_Feed_Reader</a> made the job easier. The weather data comes from the National Oceanic and Atmospheric Administration&#8217;s (NOAA) National Weather Service&#8217;s <a href="http://www.weather.gov/forecasts/xml/rest.php">National Digital Forecast Database XML/REST Service</a>. The market data comes from the <a href="http://code.google.com/apis/finance/">Google Finance API</a>.</p>
<h3>CouchDB</h3>
<p>All of the data (except for weather, which is pulled directly with a bit of caching) is stored in <a href="http://couchdb.apache.org/">CouchDB</a>. Since we&#8217;re storing documents with varying metadata (i.e. Atom entries) choosing a document-oriented database made a lot of sense. CouchDB&#8217;s map/reduce views make for very efficient queries. Its RESTful HTTP API provides a lot of options for scaling and caching. We&#8217;re caching documents within the Zend Framework application and conditionally requesting these documents from CouchDB with ETags when a cache is available. The current cache is simply file-based but we&#8217;re considering using <a href="http://memcached.org/">Memcached</a> for even better performance. On a related note, the homepage itself also supports conditional HTTP requests.</p>
<h3>Apache and nginx</h3>
<p>We had the pleasure of working with another great Vermont company, <a href="http://www.clearbearing.com/">ClearBearing</a>, on this project. ClearBearing handles the infrastructure layer for <a href="http://www.vpr.net/">VPR.net</a>. The current website was (and still is) served up by <a href="http://httpd.apache.org/">Apache</a>. ClearBearing already had <a href="http://nginx.org/">nginx</a> in place as a reverse proxy to handle caching. Since we weren&#8217;t replacing the entire CMS we needed a way for the existing CMS and this new application to coexist. We decided to host the new application separately (still administered by ClearBearing) and reverse proxy requests for certain URIs (primarily the homepage) to the new application. This provides a clean separation between the new application and the existing CMS while still allowing for them to be hosted on the same domain from an end-user perspective.</p>
<h3>Licensing</h3>
<p>You&#8217;ll notice that all of the standards used are open standards and all of the technologies used are free and open source software. Additionally, all of the code we have written for VPR is licensed to them under the permissive <a href="http://www.opensource.org/licenses/bsd-license.php">New BSD License</a>. This means that VPR is free to use this code however they want, study and modify the code, and redistribute the code as-is or modified. They can do all of this without paying additional licensing fees.</p>
<h3>Design</h3>
<p>While this post is primarily about the technology behind VPR&#8217;s new homepage, I should mention that Found Line&#8217;s <a href="http://foundline.com/people/jason-pelletier">Jason Pelletier</a> designed the new homepage and implemented all of its HTML and CSS. We worked closely with Jonathan Butler and John Van Hoesen, Vice President for News &amp; Programming, to make sure the new design meets the needs of website visitors and the organization.</p>
<h3>Next Steps</h3>
<p>The launch of this new homepage was just one iteration with many more to come. As Jonathan Butler mentioned in his blog post, VPR has plans to further improve online services for their listeners. Look for a redesigned VPR Classical page soon. There are also plans for better mobile access to VPR and VPR Classical programming. Fortunately much of the work that has been done can be leveraged to create additional online services for VPR&#8217;s listeners.</p>
<p>A special thanks for the <a href="http://www.vpr.net/support/">support of VPR&#8217;s listeners</a>—you made this new homepage possible! If you have questions, comments, complaints, or suggestions about the new homepage then please <a href="http://www.vpr.net/inside_vpr/contact_us/?subject=VPR+Homepage">contact VPR</a> directly with your feedback (although you&#8217;re welcome to comment here as well).</p>
]]></content:encoded>
			<wfw:commentRss>http://bradley-holt.com/2010/10/behind-the-new-vpr-homepage/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Open Source and Open Standards Bill</title>
		<link>http://bradley-holt.com/2010/01/open-source-and-open-standards-bill/</link>
		<comments>http://bradley-holt.com/2010/01/open-source-and-open-standards-bill/#comments</comments>
		<pubDate>Wed, 20 Jan 2010 22:33:00 +0000</pubDate>
		<dc:creator>Bradley Holt</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[FOSS]]></category>
		<category><![CDATA[Open Standards]]></category>
		<category><![CDATA[Vermont]]></category>

		<guid isPermaLink="false">http://bradley-holt.com/2010/01/open-source-and-open-standards-bill/</guid>
		<description><![CDATA[The other day there was a discussion on the VAGUE mailing list about an open source and open standards bill (H.516) [PDF] recently introduced in the Vermont General Assembly (a.k.a. legislature). It&#8217;s technically an amendment to an existing act and has the following stated purpose: This bill proposes to require the department of information and [...]]]></description>
			<content:encoded><![CDATA[<p>The other day there was a <a href="http://www.mail-archive.com/vague@list.uvm.edu/msg04871.html">discussion on the VAGUE mailing list</a> about an <a href="http://www.leg.state.vt.us/docs/2010/Bills/Intro/H-516.pdf">open source and open standards bill (H.516)</a> [PDF] recently introduced in the Vermont General Assembly (a.k.a. legislature). It&#8217;s technically an amendment to an existing act and has the following stated purpose:</p>
<blockquote><p>This bill proposes to require the department of information and innovation to advise against the acquisition by a state agency of proprietary software or software that operates by means of proprietary protocols when acceptable functionality can be achieved with open source software and open standard protocols and to ensure that the expected total life-cycle costs of software are fully evaluated prior to acquisition.</p>
</blockquote>
<p>Overall I see this as a positive move for the State of Vermont. It does not seem to put the requirement for open source and open standards ahead of the particular business needs at hand since it only &#8220;advise[s] against the acquisition by a state agency of proprietary software or software that operates by means of proprietary protocols when acceptable functionality can be achieved with open source software and open standard protocols.&#8221; However, Mitch Lieberman <a href="http://twitter.com/mjayliebs/status/7953236069">points out</a>:</p>
<blockquote><p>@<a href="http://twitter.com/BradleyHolt">BradleyHolt</a> functionality does not directly = biz value IMHO, biz value needs to include ROI of functions, thus includes TCO</p>
</blockquote>
<p>I agree with Mitch that the bill could do a better job of addressing not just functionality, but also return on investment (ROI) and total cost of ownership (TCO). These should be the primary considerations of any responsible organization in deciding what software to use. However, since it is the public&#8217;s money being used to purchase this software it is worth considering whether our resources are being used to further entrench proprietary software and standards, or whether we are instead enriching the public commons by supporting open source software and open standards.</p>
<p>In addition to the above, there are some details of the bill that demonstrate some possible misunderstandings of how open source software works. While it&#8217;s not anywhere in its text, the bill is described as being &#8220;An act relating to comparing the costs and benefits of downloading free open source software with purchasing proprietary computer software.&#8221; There are a couple of misconceptions in this one statement.  First, cost should not always be the primary motivation behind using open source software: the freedoms it gives you are just as important. In fact, not all proprietary software costs money and not all open source software is available free of charge.  Second, &#8220;downloading&#8221; is simply a means of distributing software. Proprietary software can often be downloaded. Open source software is sometimes distributed on a physical medium.</p>
<p>It&#8217;s not stated explicitly in the bill, but people sometimes think that if they release their own software under an open source license they are somehow giving up control of the licensed software project. While there are many benefits of giving up control (which are outside the scope of this blog post), it&#8217;s worth noting that you don&#8217;t have to. When you license your software you still own the copyright on that software. You can still do whatever you want with that software, including release it under a different license later. Once you accept outside contributions then you need to honor whatever license has been given to you be your contributors (unless they agree to transfer copyright to you, but this can be tricky). It&#8217;s your choice whether or not to accept those contributions in the first place. You are still completely in control (as long as you want to be) and have simply given others the possibility of benefiting from your work.</p>
]]></content:encoded>
			<wfw:commentRss>http://bradley-holt.com/2010/01/open-source-and-open-standards-bill/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Moving On</title>
		<link>http://bradley-holt.com/2009/12/moving-on/</link>
		<comments>http://bradley-holt.com/2009/12/moving-on/#comments</comments>
		<pubDate>Wed, 16 Dec 2009 18:29:00 +0000</pubDate>
		<dc:creator>Bradley Holt</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[FOSS]]></category>
		<category><![CDATA[Found Line]]></category>
		<category><![CDATA[Open Standards]]></category>

		<guid isPermaLink="false">http://bradley-holt.com/2009/12/moving-on/</guid>
		<description><![CDATA[Today is my last day at Vermont Oxford Network and I will now be working at Found Line full time. This was not a decision I took lightly. Vermont Oxford Network is a great place to work and they&#8217;ve got an excellent team. For the last four and half years I&#8217;ve been developing software that [...]]]></description>
			<content:encoded><![CDATA[<p>Today is my last day at <a href="http://www.vtoxford.org/">Vermont Oxford Network</a> and I will now be working at <a href="http://foundline.com/">Found Line</a> full time. This was not a decision I took lightly. Vermont Oxford Network is a great place to work and they&#8217;ve got an excellent team. For the last four and half years I&#8217;ve been developing software that improves health care for newborn infants. I feel like I&#8217;ve made a contribution beyond just the work. However,  it&#8217;s time to move on to something different.</p>
<p><a href="http://foundline.com/people/jason-pelletier">Jason</a> and I started Found Line almost five years ago and I&#8217;m looking forward to helping him and <a href="http://foundline.com/people/liz-schlegel">Liz</a> continue to grow the business. We&#8217;ve got some really great <a href="http://foundline.com/clients">clients</a> and I&#8217;m very happy to have more time to focus on their projects.  I&#8217;m also excited about the opportunity to work with free/open source software and open standards full time. So, time to go catch up on some work!</p>
]]></content:encoded>
			<wfw:commentRss>http://bradley-holt.com/2009/12/moving-on/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Free/Open Source and Proprietary Software Symbiosis</title>
		<link>http://bradley-holt.com/2009/07/freeopen-source-and-proprietary-software-symbiosis/</link>
		<comments>http://bradley-holt.com/2009/07/freeopen-source-and-proprietary-software-symbiosis/#comments</comments>
		<pubDate>Wed, 29 Jul 2009 23:31:00 +0000</pubDate>
		<dc:creator>Bradley Holt</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[FOSS]]></category>
		<category><![CDATA[Open Standards]]></category>

		<guid isPermaLink="false">http://bradley-holt.com/2009/07/freeopen-source-and-proprietary-software-symbiosis/</guid>
		<description><![CDATA[Last week on The Browser I was talking (again) about free/open source software and open standards. Jonathan Butler (the host) asked what my thoughts were about my iPod touch which is proprietary hardware and software. Paraphrasing my answer, I said that Apple has created a killer product and a big part of this is their [...]]]></description>
			<content:encoded><![CDATA[<p>Last week on <a href="http://thebrowser1059.wordpress.com/">The Browser</a> I was talking (again) about free/open source software and open standards. <a href="http://twitter.com/jonathanpb">Jonathan Butler</a> (the host) asked what my thoughts were about my iPod touch which is proprietary hardware and software. Paraphrasing my answer, I said that Apple has created a killer product and a big part of this is their complete control over the platform. However, long-term innovation can only be sustained by free/open source software and open standards.</p>
<p>I was thinking about that question after the show when I remembered something: there&#8217;s a ton of free/open source code in the iPhone and iPod touch. These devices run a version of OS X, parts of which come from the free/open source <a href="http://www.freebsd.org/">FreeBSD</a> operating system. Safari, the device&#8217;s web browser, uses the free/open source web browser engine <a href="http://webkit.org/">WebKit</a>. Contrary to popular belief, many free/open source software licenses allow you to make proprietary derivative works. Apple does <a href="http://www.opensource.apple.com/">contribute software</a> back to the free/open source community even though they are not always legally required to.</p>
<p>My point is not to praise Apple&#8217;s contributions. Likely these contributions are beneficial to them. If they branch a free/open source project and their branch strays too far from the original, they will have a hard time incorporating new features from these projects. Linus Torvalds (credited with developing the Linux kernel) recently <a href="http://www.osnews.com/story/21887/Linus_Microsoft_Hatred_Is_a_Disease_">commented</a> on Microsoft&#8217;s contribution of code to the Linux kernel:</p>
</p>
<blockquote><p>I agree that it&#8217;s driven by selfish reasons, but that&#8217;s how all open source code gets written! We all &#8220;scratch our own itches&#8221;. It&#8217;s why I started Linux, it&#8217;s why I started git, and it&#8217;s why I am still involved. It&#8217;s the reason for everybody to end up in open source, to some degree.</p></blockquote>
<p>Apple and other proprietary software companies (maybe even Microsoft) are starting to demonstrate an interesting symbioses with free/open source software. While I do think that free/open source software is better for &#8220;consumers&#8221; and beneficial to society in general I don&#8217;t think any of that is a necessary argument in support of free/open source software. I think that it is an approach that will ultimately create more value and be better at sustaining innovation than proprietary software. Smart software companies are starting to recognize this. Apple has reduced their upfront and ongoing research and development costs by tapping into free/open source software, even if the products they deliver to customers are proprietary. They also seem to understand the value of releasing some of their own software and modifications under free/open source licenses: they will get back more than they put in and the reward is greater than the risk.</p>
]]></content:encoded>
			<wfw:commentRss>http://bradley-holt.com/2009/07/freeopen-source-and-proprietary-software-symbiosis/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Open (local) Government</title>
		<link>http://bradley-holt.com/2009/04/open-local-government/</link>
		<comments>http://bradley-holt.com/2009/04/open-local-government/#comments</comments>
		<pubDate>Wed, 08 Apr 2009 01:51:00 +0000</pubDate>
		<dc:creator>Bradley Holt</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Accessibility]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[BTV]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[FOSS]]></category>
		<category><![CDATA[Open Standards]]></category>

		<guid isPermaLink="false">http://bradley-holt.com/2009/04/open-local-government/</guid>
		<description><![CDATA[Last night I went to the Burlington, Vermont City Council meeting to listen to our newly re-elected mayor, Bob Kiss, give his State of the City speech and watch the City Council attempt to elect a new council president. I said &#8220;attempt&#8221; because, after 14 rounds of voting, they were still deadlocked 7-7 for opposing [...]]]></description>
			<content:encoded><![CDATA[<p>Last night I went to the Burlington, Vermont City Council meeting to listen to our newly re-elected mayor, Bob Kiss, give his State of the City speech and watch the City Council attempt to elect a new council president. I said &#8220;attempt&#8221; because, after 14 rounds of voting, they were still deadlocked 7-7 for opposing candidates. However, that&#8217;s not what I want to talk about. In Mayor Bob Kiss&#8217; speech he made the following statement:</p>
<blockquote><p>My administration worked closely with the Open Government Committee formed by resolution of the City Council. In response to committee recommendations, we’ve included more information about public meetings on the City web-site and the Planning Department added a new section about proposed and pending zoning amendments. During the campaign it was clear that people want to know more about the activities of each city department. Over the next year we’ll look closely at how to finance and build a more uniform, responsive and user-friendly City website that will keep you better informed about public meetings and how you can participate in the process of government.</p></blockquote>
<p>I&#8217;m all for open government and the <a href="http://www.ci.burlington.vt.us/">City of Burlington, Vermont</a> could certainly use a better website. I&#8217;d like to give the city some advice on its priorities in building a better website. This blog post is my first round of advice, but I&#8217;d like to hear reactions from other web people in and around Burlington — or anyone else who has an interest in our city having a better website! This advice is based on the goals outlined by Mayor Bob Kiss: that the website is inline with the spirit of Open Government, is responsive, and is user-friendly.</p>
<p>First, the website must be accessible and use open standards. I put these two together because by using open standards the website can be accessible. Specifically, the website should use strictly semantic XHTML. This allows for its use in the widest range of user agents (browsers) by the widest range of user abilities (as opposed to disabilities). Its presentation should be progressively enriched through CSS and its behavior should be progressively enhanced through unobtrusive JavaScript. Progressive enhancement means that the website is useful, at its core, without any CSS or JavaScript. It becomes more useful through the use of CSS and then, perhaps, even more useful through the use of JavaScript. However, neither CSS nor JavaScript should be required to access the website&#8217;s content.</p>
<p>Second, the website should be built using free (as in freedom, not cost) and open source software. It is our government&#8217;s responsibility to use non-proprietary software wherever possible. When it comes to building websites and web applications, there are no excuses for not using free and open source software. The capabilities of the open web platforms available equal, or exceed, the capabilities of proprietary web platforms. Any custom software developed for the city&#8217;s website must be licensed to the city under a free and open source license (this does not mean that the city shouldn&#8217;t pay for this software to be developed).</p>
<p>Third, the city should embrace the concept of open linked data. This means that the city should publish data, not just content. This data should be both human and machine readable. This allows third parties to access raw data and repurpose this data in new and interesting ways. To this end, data and content should be either put in the public domain (which is probably the case already) or use a Creative Commons license. Where possible, the city&#8217;s website should consume open data published by others rather than duplicating effort. There are several technical approaches to publishing and consuming open linked data including Microformats and the Semantic Web.</p>
<p>I hope these recommendations are useful. Once I&#8217;ve heard some feedback from other web people, I&#8217;ll forward these recommendations to my city councilors and the mayor. Hopefully they&#8217;ll find it helpful in improving the city&#8217;s website!</p>
]]></content:encoded>
			<wfw:commentRss>http://bradley-holt.com/2009/04/open-local-government/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>The Web Is Not A Visual Medium</title>
		<link>http://bradley-holt.com/2009/03/the-web-is-not-a-visual-medium/</link>
		<comments>http://bradley-holt.com/2009/03/the-web-is-not-a-visual-medium/#comments</comments>
		<pubDate>Mon, 16 Mar 2009 22:50:00 +0000</pubDate>
		<dc:creator>Bradley Holt</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Accessibility]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Open Standards]]></category>
		<category><![CDATA[XHTML]]></category>

		<guid isPermaLink="false">http://bradley-holt.com/2009/03/the-web-is-not-a-visual-medium/</guid>
		<description><![CDATA[A claim you may have heard me make before is that the web is not a visual medium. Some of you know exactly what I mean and some of you probably think I&#8217;m nuts. For those of you who think I&#8217;m crazy, let me elaborate. You, like most people, probably experience the web visually. However, [...]]]></description>
			<content:encoded><![CDATA[<p>A claim you may have heard me make before is that the web is not a visual medium. Some of you know exactly what I mean and some of you probably think I&#8217;m nuts. For those of you who think I&#8217;m crazy, let me elaborate. You, like most people, probably experience the web visually. However, this visual aspect is only one facet of the web. Underneath the visual aspect you will find that the web is a structured, or <em>semantic</em>, medium. This means that people (or even machines) of varying capabilities (as opposed to disabilities), using all sorts of user agents (a fancy way of saying web browsers) can experience this same web non-visually. If built correctly, the same web page should be accessible to you visually as well as to visually impaired people, search engine robots, people that want to use text only web browsers, people using older versions of web browsers (backward compatibility), people using mobile devices, and user agents that weren&#8217;t even invented yet when the web page was first built (<a href="http://en.wikipedia.org/wiki/Forward_compatibility">forward compatibility</a>).</p>
<p>There&#8217;s one catch. There are <em>many</em> web sites and web applications built on the incorrect assumption that the web is a visual medium. The web designers and web developers who build these web sites and web applications <a href="http://store.mozilla.org/product.php?code=14%2013108&amp;catid=0">break the web</a>. In order to not break the web, web designers and web developers need to use open standards starting with <a href="http://bradley-holt.com/2008/03/plain-old-semantic-html-posh/">plain old semantic (X)HTML</a>. This <em>semantic</em> (X)HTML can then be <a href="http://www.alistapart.com/articles/understandingprogressiveenhancement">progressively enriched/enhanced</a> using <abbr title="Cascading Style Sheets">CSS</abbr> (for presentation) and JavaScript (for behavior). This approach works well with the concept of <a href="http://www.w3.org/TR/mobile-bp/#OneWeb">One Web</a> which &#8220;means making, as far as is reasonable, the same information and services available to users irrespective of the device they are using.&#8221;</p>
<p>Craig Cook has a good article about <a href="http://www.alistapart.com/articles/grokwebstandards">How to Grok Web Standards</a> in which he addresses many of these ideas and more. If you still think I&#8217;m crazy, hopefully it&#8217;s not because you think I&#8217;m wrong about the web not being a visual medium. If you don&#8217;t think I&#8217;m crazy then maybe in another blog post I&#8217;ll talk about why I think that content management systems (CMSs) in general, and WYSIWYG editors specifically, break the web.</p>
]]></content:encoded>
			<wfw:commentRss>http://bradley-holt.com/2009/03/the-web-is-not-a-visual-medium/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>The Social Graph</title>
		<link>http://bradley-holt.com/2009/03/the-social-graph/</link>
		<comments>http://bradley-holt.com/2009/03/the-social-graph/#comments</comments>
		<pubDate>Sun, 15 Mar 2009 23:58:00 +0000</pubDate>
		<dc:creator>Bradley Holt</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Open Standards]]></category>
		<category><![CDATA[Social Media]]></category>

		<guid isPermaLink="false">http://bradley-holt.com/2009/03/the-social-graph/</guid>
		<description><![CDATA[In my last post about the semantic web I mentioned the XFN project which allows individuals to define their relationships to others simply using semantically marked up hyperlinks. I also said that a global graph can be made of all of these relationships making the &#8220;walled gardens&#8221; of existing social networking sites obsolete. Before I [...]]]></description>
			<content:encoded><![CDATA[<p>In my last post about the <a href="http://bradley-holt.com/2009/02/getting-semantic/">semantic web</a> I mentioned the <abbr title="XHTML Friends Network">XFN</abbr> project which allows individuals to define their relationships to others simply using semantically marked up hyperlinks. I also said that a global graph can be made of all of these relationships making the &#8220;walled gardens&#8221; of existing social networking sites obsolete. Before I continue, I should probably mention that the word &#8220;graph&#8221; in this context refers to <a href="http://en.wikipedia.org/wiki/Graph_theory">graph theory</a> in computer science, not a chart or diagram (although these graphs could be visualized). At risk of over-simplifying: graph theory talks about how individual &#8220;nodes&#8221; connect to one another and how data can be extracted from looking at these connections.</p>
<p>Google has an interesting project called the <a href="http://code.google.com/apis/socialgraph/">Social Graph API</a> that lets developers &#8220;utilize public connections their users have already created in other web services. It makes information about public connections between people easily available and useful.&#8221; It uses public <abbr title="XHTML Friends Network">XFN</abbr> as well as <abbr title="Friend of a Friend">FOAF</abbr> data to accomplish this. <abbr title="Friend of a Friend">FOAF</abbr> is, interestingly enough, an example of something designed around the W3C&#8217;s Semantic Web specification. Here&#8217;s a <a href="http://www.youtube.com/watch?v=LabCylbapuM">video</a> that explains a bit about how Google&#8217;s Social Graph API works:</p>
<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/LabCylbapuM&amp;hl=en&amp;fs=1"><param name="allowFullScreen" value="true"><param name="allowscriptaccess" value="always"><embed src="http://www.youtube.com/v/LabCylbapuM&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object>
<p>The power of this open data is another example of <a href="http://johnboone.net/blog/?p=115">why facebook won’t last</a> as a walled garden. I don&#8217;t expect existing social networking sites to simply disappear. However, open standards like <abbr title="XHTML Friends Network">XFN</abbr>  and <abbr title="Friend of a Friend">FOAF</abbr> will help level the playing field amongst social networks by allowing even small social networks to benefit from the <a href="http://en.wikipedia.org/wiki/Network_effect">network effect</a>. Having lots of social networks trying out different things can only be good for innovation in the long run.</p>
]]></content:encoded>
			<wfw:commentRss>http://bradley-holt.com/2009/03/the-social-graph/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

