<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;A0MGR3w6eSp7ImA9WhRUE04.&quot;"><id>tag:blogger.com,1999:blog-2895343523394480614</id><updated>2012-01-24T06:23:46.211+13:00</updated><title>Richard Hulse</title><subtitle type="html">My thoughts about technology.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://richardhulse.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://richardhulse.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/2895343523394480614/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Richard Hulse</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>60</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/RichardHulse" /><feedburner:info uri="richardhulse" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;CEYGQHY8eSp7ImA9WhRWGE0.&quot;"><id>tag:blogger.com,1999:blog-2895343523394480614.post-9056719752836941097</id><published>2011-12-30T12:04:00.001+13:00</published><updated>2012-01-06T11:22:01.871+13:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-06T11:22:01.871+13:00</app:edited><title>My take on out-of-office replies</title><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2895343523394480614&amp;postID=9056719752836941097" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2895343523394480614/posts/default/9056719752836941097?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2895343523394480614/posts/default/9056719752836941097?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RichardHulse/~3/5Lrr1Ckx4HM/my-take-on-out-of-office-replies.html" title="My take on out-of-office replies" /><author><name>Richard Hulse</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><content type="html">About 5 years ago, when I got back from holiday, I had 1500 emails in my inbox. I had checked (but not answered) my email all through my break and I had worried about the growing backlog instead of enjoying the rest.



I did two things to fix this problem. The first was to start using operational accounts instead of personal accounts for work directly related to the website. The entire web team 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/yqgSysKPlEVRACRcZc4l4hNQtDc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/yqgSysKPlEVRACRcZc4l4hNQtDc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/yqgSysKPlEVRACRcZc4l4hNQtDc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/yqgSysKPlEVRACRcZc4l4hNQtDc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RichardHulse/~4/5Lrr1Ckx4HM" height="1" width="1"/&gt;</content><feedburner:origLink>http://richardhulse.blogspot.com/2011/12/my-take-on-out-of-office-replies.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkYAQn8yeCp7ImA9WhRXEkk.&quot;"><id>tag:blogger.com,1999:blog-2895343523394480614.post-5117582459818393852</id><published>2011-12-03T13:35:00.001+13:00</published><updated>2011-12-19T10:35:43.190+13:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-19T10:35:43.190+13:00</app:edited><title>How to Fix Loud TV commercials - Part 2: Measurements</title><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2895343523394480614&amp;postID=5117582459818393852" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2895343523394480614/posts/default/5117582459818393852?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2895343523394480614/posts/default/5117582459818393852?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RichardHulse/~3/bdiyHHfk7Ww/how-to-fix-loud-tv-commercials-part-2.html" title="How to Fix Loud TV commercials - Part 2: Measurements" /><author><name>Richard Hulse</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><content type="html">In part one of this series I gave an overview of the problem of loud TV commercials, or put more clearly, the inconsistent loudness of different items in a broadcast.

Before I dive into some solutions to the problem there are some audio concepts to understand. These relate to how audio is produced and measured. Inconsistent measurement and poor monitoring practices are at the core of the problem
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/gvUzk5Zm8wnFSGAO0Tte3RSDcYE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gvUzk5Zm8wnFSGAO0Tte3RSDcYE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/gvUzk5Zm8wnFSGAO0Tte3RSDcYE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gvUzk5Zm8wnFSGAO0Tte3RSDcYE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RichardHulse/~4/bdiyHHfk7Ww" height="1" width="1"/&gt;</content><feedburner:origLink>http://richardhulse.blogspot.com/2011/12/how-to-fix-loud-tv-commercials-part-2.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkABQnkzeip7ImA9WhRRGEo.&quot;"><id>tag:blogger.com,1999:blog-2895343523394480614.post-5669262171631767530</id><published>2011-12-03T10:41:00.001+13:00</published><updated>2011-12-03T14:12:33.782+13:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-03T14:12:33.782+13:00</app:edited><title>How to Fix Loud Commercials on TV - Part 1</title><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2895343523394480614&amp;postID=5669262171631767530" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2895343523394480614/posts/default/5669262171631767530?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2895343523394480614/posts/default/5669262171631767530?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RichardHulse/~3/J_dM-eagMMs/how-to-fix-loud-commercials-on-tv-part.html" title="How to Fix Loud Commercials on TV - Part 1" /><author><name>Richard Hulse</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total><content type="html">This is the first of a series of non-tech posts about the volume of commercials on TV - why they are too loud and how to stop the problem.

The problem of commercials being too loud is the result of an arms race, of sorts, that has its roots in practices that were set decades ago. But it is not a race to the top, to world domination, to commercial success. It is a race to the bottom, to the 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/GiUmc2MS1wgst-SRLjTTGLX8FSY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/GiUmc2MS1wgst-SRLjTTGLX8FSY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/GiUmc2MS1wgst-SRLjTTGLX8FSY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/GiUmc2MS1wgst-SRLjTTGLX8FSY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RichardHulse/~4/J_dM-eagMMs" height="1" width="1"/&gt;</content><feedburner:origLink>http://richardhulse.blogspot.com/2011/12/how-to-fix-loud-commercials-on-tv-part.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUcESHY5eip7ImA9WhRRE0g.&quot;"><id>tag:blogger.com,1999:blog-2895343523394480614.post-6837001398720327293</id><published>2011-11-27T13:47:00.001+13:00</published><updated>2011-11-27T14:23:29.822+13:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-27T14:23:29.822+13:00</app:edited><title>Latest Radio NZ Browser stats</title><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2895343523394480614&amp;postID=6837001398720327293" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2895343523394480614/posts/default/6837001398720327293?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2895343523394480614/posts/default/6837001398720327293?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RichardHulse/~3/Ojuk95xSo30/latest-radio-nz-browser-stats.html" title="Latest Radio NZ Browser stats" /><author><name>Richard Hulse</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><content type="html">The latest browser stats for www.radionz.co.nz show some interesting changes when compared to previous years.



Browser2011201020092008
IE41.250.65663
Firefox23.225.5227.527.73
Safari5.613.1105.66
Chrome13.88.754.21.47
Opera0.70.91.021.08


IE is in decline, and IE6 is currently 3.6% of total browser share. Operating system use is also changing.



OS2011201020092008
Windows728184.889.3

&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/iafwpi_QppGYrJ7Ss6DXUs7Jj2U/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/iafwpi_QppGYrJ7Ss6DXUs7Jj2U/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/iafwpi_QppGYrJ7Ss6DXUs7Jj2U/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/iafwpi_QppGYrJ7Ss6DXUs7Jj2U/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RichardHulse/~4/Ojuk95xSo30" height="1" width="1"/&gt;</content><feedburner:origLink>http://richardhulse.blogspot.com/2011/11/latest-radio-nz-browser-stats.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D08BRHk9fSp7ImA9WhRSGU8.&quot;"><id>tag:blogger.com,1999:blog-2895343523394480614.post-1001121887553327550</id><published>2011-11-22T14:22:00.001+13:00</published><updated>2011-11-22T14:37:35.765+13:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-22T14:37:35.765+13:00</app:edited><title /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2895343523394480614&amp;postID=1001121887553327550" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2895343523394480614/posts/default/1001121887553327550?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2895343523394480614/posts/default/1001121887553327550?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RichardHulse/~3/zj3DJRO-c0s/over-on-geekzone-has-posted-page-speed.html" title="" /><author><name>Richard Hulse</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-EZ-1AJcgDg8/Tsr56vObf8I/AAAAAAAAAEw/RSCsB4tR_Tw/s72-c/Average+page+speed.png" height="72" width="72" /><thr:total>2</thr:total><content type="html">
Over on Geekzone Mauricio has posted page speed info for his website.



Here is similar information for Radio New Zealand.



Average web page load time distribution in New Zealand:





All regions:









Slowest cities:























This is running on a server based at ICONZ running Rails 3.1.x.

The key thing we've done to make our site fast is reducing over-the-wire times by 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/WGaFrkwLtYDugamGUOY6Gno9JSE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WGaFrkwLtYDugamGUOY6Gno9JSE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/WGaFrkwLtYDugamGUOY6Gno9JSE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WGaFrkwLtYDugamGUOY6Gno9JSE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RichardHulse/~4/zj3DJRO-c0s" height="1" width="1"/&gt;</content><feedburner:origLink>http://richardhulse.blogspot.com/2011/11/over-on-geekzone-has-posted-page-speed.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk4BQn44eSp7ImA9WhdXE0Q.&quot;"><id>tag:blogger.com,1999:blog-2895343523394480614.post-4117422407783206059</id><published>2011-08-27T09:40:00.001+12:00</published><updated>2011-08-27T09:42:33.031+12:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-27T09:42:33.031+12:00</app:edited><title>Radio NZ's embedded player</title><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2895343523394480614&amp;postID=4117422407783206059" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2895343523394480614/posts/default/4117422407783206059?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2895343523394480614/posts/default/4117422407783206059?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RichardHulse/~3/lzxizBgfQs8/radio-nzs-embedded-player.html" title="Radio NZ's embedded player" /><author><name>Richard Hulse</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>2</thr:total><content type="html">Last week Radio New Zealand released its new embedded player to the general public.

The graphics were designed by Clemenger BBDO in Wellington and implemented in Flash by PixelDepth in Auckland. The player (and server software) took 3.5 person-days to code, implement and test.

The player can be used by anyone (subject to terms of use) to embed Radio NZ audio content on their web pages.

While 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/WDuTsxyAzScw7_4Fk7Q4KK_GvlA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WDuTsxyAzScw7_4Fk7Q4KK_GvlA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/WDuTsxyAzScw7_4Fk7Q4KK_GvlA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WDuTsxyAzScw7_4Fk7Q4KK_GvlA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RichardHulse/~4/lzxizBgfQs8" height="1" width="1"/&gt;</content><feedburner:origLink>http://richardhulse.blogspot.com/2011/08/radio-nzs-embedded-player.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C08NQH06eip7ImA9WhRWGUs.&quot;"><id>tag:blogger.com,1999:blog-2895343523394480614.post-8981779495989635448</id><published>2011-07-10T08:58:00.000+12:00</published><updated>2012-01-08T07:44:51.312+13:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-08T07:44:51.312+13:00</app:edited><title>Rebuilding Radio NZ - Part 12: Migrating Episodes</title><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2895343523394480614&amp;postID=8981779495989635448" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2895343523394480614/posts/default/8981779495989635448?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2895343523394480614/posts/default/8981779495989635448?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RichardHulse/~3/vvEH534HVQY/rebuilding-radio-nz-part-12-migrating.html" title="Rebuilding Radio NZ - Part 12: Migrating Episodes" /><author><name>Richard Hulse</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>3</thr:total><content type="html">The migration of programme episode content from MySource Matrix into our new Rails-based CMS has proven to be the largest and most complex task. This week I am going to dive heavily into the code we used to do this.

For most programmes we have maintain a programme library of content dating back to the start of 2008. Some go back further. There are approximately 10,000 episodes from dozens of 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/9j5owMG_oV3izP6epg1qMCQAykY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/9j5owMG_oV3izP6epg1qMCQAykY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/9j5owMG_oV3izP6epg1qMCQAykY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/9j5owMG_oV3izP6epg1qMCQAykY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RichardHulse/~4/vvEH534HVQY" height="1" width="1"/&gt;</content><feedburner:origLink>http://richardhulse.blogspot.com/2011/07/rebuilding-radio-nz-part-12-migrating.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C08DQHc7cSp7ImA9WhRWGUs.&quot;"><id>tag:blogger.com,1999:blog-2895343523394480614.post-6025159437585908153</id><published>2011-06-28T06:22:00.000+12:00</published><updated>2012-01-08T07:44:31.909+13:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-08T07:44:31.909+13:00</app:edited><title>Rebuilding Radio NZ - Part 11: Editing Episodes</title><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2895343523394480614&amp;postID=6025159437585908153" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2895343523394480614/posts/default/6025159437585908153?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2895343523394480614/posts/default/6025159437585908153?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RichardHulse/~3/mMrnZVHQCGc/rebuilding-radio-nz-part-11-editing.html" title="Rebuilding Radio NZ - Part 11: Editing Episodes" /><author><name>Richard Hulse</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-8qnvF8EON2M/Tfwn96T5xbI/AAAAAAAAADw/4nVj_xUPSkI/s72-c/ntn+episode+ELF.png" height="72" width="72" /><thr:total>0</thr:total><content type="html">
I am jumping ahead to compare our new episode editing interface with the old one, leaving the implementation and migration of episodes for next time.

This is the top section of the programme episode editor in ELF, showing Nine To Noon for 16 June 2010:







It shows a link to the host, the current status of the page and edit/trash buttons. Audio for the episode is displayed on the page, and 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/GwryXAvhfB5ga3x3W-2XSwCiL1E/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/GwryXAvhfB5ga3x3W-2XSwCiL1E/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/GwryXAvhfB5ga3x3W-2XSwCiL1E/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/GwryXAvhfB5ga3x3W-2XSwCiL1E/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RichardHulse/~4/mMrnZVHQCGc" height="1" width="1"/&gt;</content><feedburner:origLink>http://richardhulse.blogspot.com/2011/06/rebuilding-radio-nz-part-11-editing.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C08HSHs6eip7ImA9WhRWGUs.&quot;"><id>tag:blogger.com,1999:blog-2895343523394480614.post-7519507251979656503</id><published>2011-06-18T16:51:00.001+12:00</published><updated>2012-01-08T07:43:59.512+13:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-08T07:43:59.512+13:00</app:edited><title>Rebuilding Radio NZ - Part 10: Going treeless and Modules</title><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2895343523394480614&amp;postID=7519507251979656503" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2895343523394480614/posts/default/7519507251979656503?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2895343523394480614/posts/default/7519507251979656503?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RichardHulse/~3/6QXSUjChpEA/rebuilding-radio-nz-part-10-going.html" title="Rebuilding Radio NZ - Part 10: Going treeless and Modules" /><author><name>Richard Hulse</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-O911-nqlIZg/TfweiD9XnwI/AAAAAAAAADo/-xE8H4lbaO0/s72-c/Nine+to+noon+tree.png" height="72" width="72" /><thr:total>0</thr:total><content type="html">One of the biggest time wasters (for us) in Matrix has been navigating the admin section of the site via a tree. Trees can be useful of many tasks, and for seeing the hierarchy of assets (and URLs). But when the number of items in the tree increases above a certain size it becomes harder to get to the one you want.

I should note that Matrix does have a 'simple edit interface' - a way to directly
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/6BtvwvtOQ7DEUp8YPeRe0m3GpKo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/6BtvwvtOQ7DEUp8YPeRe0m3GpKo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/6BtvwvtOQ7DEUp8YPeRe0m3GpKo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/6BtvwvtOQ7DEUp8YPeRe0m3GpKo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RichardHulse/~4/6QXSUjChpEA" height="1" width="1"/&gt;</content><feedburner:origLink>http://richardhulse.blogspot.com/2011/06/rebuilding-radio-nz-part-10-going.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0IFRHg_cSp7ImA9WhZbEko.&quot;"><id>tag:blogger.com,1999:blog-2895343523394480614.post-3636185475609193179</id><published>2011-06-17T11:26:00.004+12:00</published><updated>2011-06-17T13:51:55.649+12:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-17T13:51:55.649+12:00</app:edited><title>Upgrading to Formtastic 2.0</title><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2895343523394480614&amp;postID=3636185475609193179" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2895343523394480614/posts/default/3636185475609193179?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2895343523394480614/posts/default/3636185475609193179?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RichardHulse/~3/57-mrVtZ3l8/upgrading-to-formtastic-20.html" title="Upgrading to Formtastic 2.0" /><author><name>Richard Hulse</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><content type="html">I have been using Formtastic 1.2 for the Radio NZ site rebuild. I have a number of custom input types, customised via extending SemanticFormBuilder and adding my own methods. Justin outlined the changes a few months ago.

Formtastic 2.0 RC just got released, and Justin points out:
Folks who subclassed SemanticFormBuilder and created their own custom inputs as methods will be in for some pain.
OK,
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/g1vI6g7RdujZR5mRm3Fj87C_uig/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/g1vI6g7RdujZR5mRm3Fj87C_uig/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/g1vI6g7RdujZR5mRm3Fj87C_uig/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/g1vI6g7RdujZR5mRm3Fj87C_uig/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RichardHulse/~4/57-mrVtZ3l8" height="1" width="1"/&gt;</content><feedburner:origLink>http://richardhulse.blogspot.com/2011/06/upgrading-to-formtastic-20.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C08FQng8eCp7ImA9WhRWGUs.&quot;"><id>tag:blogger.com,1999:blog-2895343523394480614.post-6406882563679434484</id><published>2011-06-11T11:57:00.000+12:00</published><updated>2012-01-08T07:43:33.670+13:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-08T07:43:33.670+13:00</app:edited><title>Rebuilding Radio NZ - Part 9: Highlights</title><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2895343523394480614&amp;postID=6406882563679434484" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2895343523394480614/posts/default/6406882563679434484?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2895343523394480614/posts/default/6406882563679434484?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RichardHulse/~3/iw_O8JXBu0Q/rebuilding-radio-nz-part-9-highlights.html" title="Rebuilding Radio NZ - Part 9: Highlights" /><author><name>Richard Hulse</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-SeIgfQX88oQ/TfKIE8fCvoI/AAAAAAAAADY/PHBRjUMyoOM/s72-c/highlight+tree.png" height="72" width="72" /><thr:total>1</thr:total><content type="html">Each week Radio NZ publishes highlights of upcoming programmes for print media, and these items are also used on the website. On the website these highlights are augmented by content from programmes with production cycles that make it impossible to meet print deadlines.

Highlights appear on the Radio NZ Home page, National home page, and Concert home page. Highlights are also display on 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/INd8_LIcF8eUm-SseXiXzCF9eGo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/INd8_LIcF8eUm-SseXiXzCF9eGo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/INd8_LIcF8eUm-SseXiXzCF9eGo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/INd8_LIcF8eUm-SseXiXzCF9eGo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RichardHulse/~4/iw_O8JXBu0Q" height="1" width="1"/&gt;</content><feedburner:origLink>http://richardhulse.blogspot.com/2011/06/rebuilding-radio-nz-part-9-highlights.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0AMQng7eyp7ImA9WhRWGUs.&quot;"><id>tag:blogger.com,1999:blog-2895343523394480614.post-8404144666240330058</id><published>2011-05-29T09:39:00.003+12:00</published><updated>2012-01-08T07:43:03.603+13:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-08T07:43:03.603+13:00</app:edited><title>Rebuilding Radio NZ - Part 8: Dealing with doubt</title><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2895343523394480614&amp;postID=8404144666240330058" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2895343523394480614/posts/default/8404144666240330058?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2895343523394480614/posts/default/8404144666240330058?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RichardHulse/~3/0dp6ahbOZq0/rebuilding-radio-nz-part-7-dealing-with.html" title="Rebuilding Radio NZ - Part 8: Dealing with doubt" /><author><name>Richard Hulse</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><content type="html">Any change is hard. Changing from technology you've known or used for a long time comes with a range of emotions which if not dealt with can derail a project as quickly as any technical problem.

During the course of the project to replace MySource Matrix with a bespoke solution (ELF) based on Rails I've experienced doubt, frustration and regret. Doubt that we'd ever finish the project, 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ckhnpxY4vjaSFKXXopclkhyDvWw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ckhnpxY4vjaSFKXXopclkhyDvWw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ckhnpxY4vjaSFKXXopclkhyDvWw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ckhnpxY4vjaSFKXXopclkhyDvWw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RichardHulse/~4/0dp6ahbOZq0" height="1" width="1"/&gt;</content><feedburner:origLink>http://richardhulse.blogspot.com/2011/05/rebuilding-radio-nz-part-7-dealing-with.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0AAQ349eCp7ImA9WhRWGUs.&quot;"><id>tag:blogger.com,1999:blog-2895343523394480614.post-2790851136157344977</id><published>2011-05-21T14:01:00.000+12:00</published><updated>2012-01-08T07:42:22.060+13:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-08T07:42:22.060+13:00</app:edited><title>Rebuilding Radio NZ - Part 7: iPhone App Data (and an iPhone app)</title><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2895343523394480614&amp;postID=2790851136157344977" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2895343523394480614/posts/default/2790851136157344977?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2895343523394480614/posts/default/2790851136157344977?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RichardHulse/~3/UN_9KT_CHUU/rebuilding-radio-nz-part-7-iphone-app.html" title="Rebuilding Radio NZ - Part 7: iPhone App Data (and an iPhone app)" /><author><name>Richard Hulse</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><content type="html">Late 2009 we were thinking about releasing an iPhone app. The main impediment was the complexity of providing audio data from Matrix quickly and reliably.

The project was shelved until mid 2010 until ELF was well underway, at which point we chose to work with Wellington company Southgate Labs.

Providing audio data from ELF would have been a relatively simple proposition except for one thing - 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/KMxk2fXnvn14wy1kmQ7mHDrY_wg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/KMxk2fXnvn14wy1kmQ7mHDrY_wg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/KMxk2fXnvn14wy1kmQ7mHDrY_wg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/KMxk2fXnvn14wy1kmQ7mHDrY_wg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RichardHulse/~4/UN_9KT_CHUU" height="1" width="1"/&gt;</content><feedburner:origLink>http://richardhulse.blogspot.com/2011/05/rebuilding-radio-nz-part-7-iphone-app.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0AFRn84fCp7ImA9WhRWGUs.&quot;"><id>tag:blogger.com,1999:blog-2895343523394480614.post-6526969428186355108</id><published>2011-05-14T10:15:00.001+12:00</published><updated>2012-01-08T07:41:57.134+13:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-08T07:41:57.134+13:00</app:edited><title>Rebuilding Radio NZ - Part 6: Schedules</title><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2895343523394480614&amp;postID=6526969428186355108" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2895343523394480614/posts/default/6526969428186355108?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2895343523394480614/posts/default/6526969428186355108?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RichardHulse/~3/KV-m8EvmakU/rebuilding-radio-nz-part-6-schedules.html" title="Rebuilding Radio NZ - Part 6: Schedules" /><author><name>Richard Hulse</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-3ImiooYOX2A/Tc2kH59n05I/AAAAAAAAADI/mxzd9rV1Bss/s72-c/first+schedules.png" height="72" width="72" /><thr:total>0</thr:total><content type="html">Schedules have always been an integral part of the Radio NZ site. This was always a popular section of site, and it got huge boost when The Listener trimmed its printed listings a few years ago.

Iteration 1

Schedules appeared on our first site in 1998.

The publishing process involved taking a Word document containing a week’s schedule (Saturday to Friday) and posting each day to the site. 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/7PkecaYwu-DcJ6E9wE6RU5hjd8A/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7PkecaYwu-DcJ6E9wE6RU5hjd8A/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/7PkecaYwu-DcJ6E9wE6RU5hjd8A/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7PkecaYwu-DcJ6E9wE6RU5hjd8A/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RichardHulse/~4/KV-m8EvmakU" height="1" width="1"/&gt;</content><feedburner:origLink>http://richardhulse.blogspot.com/2011/05/rebuilding-radio-nz-part-6-schedules.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0EMQH08eSp7ImA9WhRWGUs.&quot;"><id>tag:blogger.com,1999:blog-2895343523394480614.post-4489216248960692526</id><published>2011-05-07T12:11:00.000+12:00</published><updated>2012-01-08T07:41:21.371+13:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-08T07:41:21.371+13:00</app:edited><title>Rebuilding Radio NZ - Part 5: The Evolution of News</title><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2895343523394480614&amp;postID=4489216248960692526" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2895343523394480614/posts/default/4489216248960692526?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2895343523394480614/posts/default/4489216248960692526?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RichardHulse/~3/bWftJG9iHhc/rebuilding-radio-nz-part-5-evolution-of.html" title="Rebuilding Radio NZ - Part 5: The Evolution of News" /><author><name>Richard Hulse</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-_fsKOwp4zJI/TcSMSORRcUI/AAAAAAAAADE/EhbhTbo-uhg/s72-c/News+category+manager.png" height="72" width="72" /><thr:total>0</thr:total><content type="html">In previous parts of this series I have looked at the rationale behind replacing our off-the-shelf CMS with a bespoke solution.

This time it is news. The news section of the site has gone through two major iterations in Matrix before moving to ELF. This section has given us the most grief, both in terms of customisations required and performance problems.

Initial Design
Workflow is very 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/5d3PkQ92JxHydTe6Wf7YF6YsXQE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5d3PkQ92JxHydTe6Wf7YF6YsXQE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/5d3PkQ92JxHydTe6Wf7YF6YsXQE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5d3PkQ92JxHydTe6Wf7YF6YsXQE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RichardHulse/~4/bWftJG9iHhc" height="1" width="1"/&gt;</content><feedburner:origLink>http://richardhulse.blogspot.com/2011/05/rebuilding-radio-nz-part-5-evolution-of.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0EBRX4ycSp7ImA9WhRWGUs.&quot;"><id>tag:blogger.com,1999:blog-2895343523394480614.post-4395531514539181578</id><published>2011-04-30T10:50:00.004+12:00</published><updated>2012-01-08T07:40:54.099+13:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-08T07:40:54.099+13:00</app:edited><title>Rebuilding Radio NZ - Part 4: Content Extraction &amp; Recipes</title><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2895343523394480614&amp;postID=4395531514539181578" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2895343523394480614/posts/default/4395531514539181578?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2895343523394480614/posts/default/4395531514539181578?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RichardHulse/~3/sipDLZcMToU/rebuilding-radio-nz-part-4-content.html" title="Rebuilding Radio NZ - Part 4: Content Extraction &amp; Recipes" /><author><name>Richard Hulse</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-naIriZBmzlQ/TbHzzaDCHUI/AAAAAAAAACw/qJLmflHkIwU/s72-c/Screen+shot+2011-04-23+at+9.06.31+AM.png" height="72" width="72" /><thr:total>0</thr:total><content type="html">The next group of posts will deal with the migration of content. In each I’ll show how we were managing the particular content type in Matrix, the design of the content type in ELF, how we migrated the content, and how we manage the content now.

Getting the content out
There were two options for getting the content out of Matrix. 

The first was a custom script that we could use for exporting 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/oSoJfpJ3PBxhu0kyuc1oMN5VO7E/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/oSoJfpJ3PBxhu0kyuc1oMN5VO7E/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/oSoJfpJ3PBxhu0kyuc1oMN5VO7E/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/oSoJfpJ3PBxhu0kyuc1oMN5VO7E/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RichardHulse/~4/sipDLZcMToU" height="1" width="1"/&gt;</content><feedburner:origLink>http://richardhulse.blogspot.com/2011/04/rebuilding-radio-nz-part-4-content.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0EGRX49fSp7ImA9WhRWGUs.&quot;"><id>tag:blogger.com,1999:blog-2895343523394480614.post-3885425484834599173</id><published>2011-04-23T09:07:00.009+12:00</published><updated>2012-01-08T07:40:24.065+13:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-08T07:40:24.065+13:00</app:edited><title>Rebuilding Radio NZ - Part 3: Groundwork</title><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2895343523394480614&amp;postID=3885425484834599173" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2895343523394480614/posts/default/3885425484834599173?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2895343523394480614/posts/default/3885425484834599173?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RichardHulse/~3/reCNuRHfndk/rebuilding-radio-nz-part-3-groundwork.html" title="Rebuilding Radio NZ - Part 3: Groundwork" /><author><name>Richard Hulse</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><content type="html">In part 3 of this series I'll be covering setting up our new app, and looking at some of the design considerations. I have bumped recipes to next week.



If you are looking for advice on which CMS to get, or not get, this is the wrong place. This series looks at how we at Radio NZ are solving our particular business problems. You mileage can and will vary. You have been warned.



Note: I use 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/hFcCrHYjt5OUAwMSRgClcgF9Ni8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/hFcCrHYjt5OUAwMSRgClcgF9Ni8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/hFcCrHYjt5OUAwMSRgClcgF9Ni8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/hFcCrHYjt5OUAwMSRgClcgF9Ni8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RichardHulse/~4/reCNuRHfndk" height="1" width="1"/&gt;</content><feedburner:origLink>http://richardhulse.blogspot.com/2011/04/rebuilding-radio-nz-part-3-groundwork.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0INRH8zeyp7ImA9WhRWGUs.&quot;"><id>tag:blogger.com,1999:blog-2895343523394480614.post-4481181653051803472</id><published>2011-04-09T11:08:00.012+12:00</published><updated>2012-01-08T07:39:55.183+13:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-08T07:39:55.183+13:00</app:edited><title>Rebuilding Radio NZ - Part 2: The Birth of ELF</title><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2895343523394480614&amp;postID=4481181653051803472" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2895343523394480614/posts/default/4481181653051803472?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2895343523394480614/posts/default/4481181653051803472?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RichardHulse/~3/017uPEz6X8g/rebuilding-radio-nz-part-2-birth-of-elf.html" title="Rebuilding Radio NZ - Part 2: The Birth of ELF" /><author><name>Richard Hulse</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><content type="html">
In this second part I'll be talking about the birth of ELF.

Warning



Even though its a drag, I'm repeating this disclaimer.



There is no such thing as instant pudding. You cannot copy what someone else does and get the same result.

This post is about a specific site with its own special functional requirements and traffic loads. radionz.co.nz is a public broadcaster's website that includes
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/KS3p6ez5v5xYB75j1ENSQdRE1HA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/KS3p6ez5v5xYB75j1ENSQdRE1HA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/KS3p6ez5v5xYB75j1ENSQdRE1HA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/KS3p6ez5v5xYB75j1ENSQdRE1HA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RichardHulse/~4/017uPEz6X8g" height="1" width="1"/&gt;</content><feedburner:origLink>http://richardhulse.blogspot.com/2011/04/rebuilding-radio-nz-part-2-birth-of-elf.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0ICQXY-eCp7ImA9WhRWGUs.&quot;"><id>tag:blogger.com,1999:blog-2895343523394480614.post-161450881770563358</id><published>2011-04-09T10:09:00.005+12:00</published><updated>2012-01-08T07:39:20.850+13:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-08T07:39:20.850+13:00</app:edited><title>Rebuilding Radio NZ - Part 1</title><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2895343523394480614&amp;postID=161450881770563358" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2895343523394480614/posts/default/161450881770563358?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2895343523394480614/posts/default/161450881770563358?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RichardHulse/~3/968aNLaWDnU/rebuilding-radio-nz-part-1.html" title="Rebuilding Radio NZ - Part 1" /><author><name>Richard Hulse</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><content type="html">This is the first in a series of posts explaining how (and why) we are rebuilding www.radionz.co.nz. I'll be examining the technology behind it and looking at some of the difficult choices we've made along the way.

Warning
This post is about a specific site with its own special functional requirements and traffic loads. radionz.co.nz is a public broadcaster's website that includes news, audio 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/9X1Gcc_CU_qyFq0Z-IC7HHokscM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/9X1Gcc_CU_qyFq0Z-IC7HHokscM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/9X1Gcc_CU_qyFq0Z-IC7HHokscM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/9X1Gcc_CU_qyFq0Z-IC7HHokscM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RichardHulse/~4/968aNLaWDnU" height="1" width="1"/&gt;</content><feedburner:origLink>http://richardhulse.blogspot.com/2011/04/rebuilding-radio-nz-part-1.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU8CSHw9fip7ImA9WxFSEkw.&quot;"><id>tag:blogger.com,1999:blog-2895343523394480614.post-2978498301682076611</id><published>2010-04-10T14:30:00.006+12:00</published><updated>2010-04-14T16:04:29.266+12:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-14T16:04:29.266+12:00</app:edited><title>Showing hash differences in Ruby tests</title><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2895343523394480614&amp;postID=2978498301682076611" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2895343523394480614/posts/default/2978498301682076611?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2895343523394480614/posts/default/2978498301682076611?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RichardHulse/~3/dH0LvzfyOd0/showing-hash-differences-in-ruby-tests.html" title="Showing hash differences in Ruby tests" /><author><name>Richard Hulse</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><content type="html">Today I was writing some tests for a Rails plugin I'm working on. The test had to compare a hash output by a method with an expected hash.This is reasonably standard stuff - when assertion_equal failed it printed out the expected and provided data. The problem in my case was that the hashes have about 50 elements, and I only want the difference to be shown in the test output.I knocked up this 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/hS4fT6QQPknpEEQxDDzvakWP7cg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/hS4fT6QQPknpEEQxDDzvakWP7cg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/hS4fT6QQPknpEEQxDDzvakWP7cg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/hS4fT6QQPknpEEQxDDzvakWP7cg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RichardHulse/~4/dH0LvzfyOd0" height="1" width="1"/&gt;</content><feedburner:origLink>http://richardhulse.blogspot.com/2010/04/showing-hash-differences-in-ruby-tests.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkQMRHg9fSp7ImA9WxBaEE8.&quot;"><id>tag:blogger.com,1999:blog-2895343523394480614.post-3053016442788261417</id><published>2010-03-20T08:18:00.003+13:00</published><updated>2010-03-20T08:53:05.665+13:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-20T08:53:05.665+13:00</app:edited><title>The New Accessibility Wave</title><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2895343523394480614&amp;postID=3053016442788261417" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2895343523394480614/posts/default/3053016442788261417?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2895343523394480614/posts/default/3053016442788261417?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RichardHulse/~3/uiBSXE9_Ilc/new-accessibility-wave.html" title="The New Accessibility Wave" /><author><name>Richard Hulse</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><content type="html">There is a new accessibility imperative.You may have heard of it: Mobile.The mobile user experience is fundamentally different from browsing the web on a desktop grade computer and a standard web browser.Touch devices do not have a keyboard. You cannot control + click. You cannot right click. You cannot click and drag items. (Usually). Non-touch platforms have other challenges. Some do not 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/K7tGcK_WP-T-2yCEGo7l7hTKOeg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/K7tGcK_WP-T-2yCEGo7l7hTKOeg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/K7tGcK_WP-T-2yCEGo7l7hTKOeg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/K7tGcK_WP-T-2yCEGo7l7hTKOeg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RichardHulse/~4/uiBSXE9_Ilc" height="1" width="1"/&gt;</content><feedburner:origLink>http://richardhulse.blogspot.com/2010/03/new-accessibility-wave.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUUNSXk_cSp7ImA9WxNWEE4.&quot;"><id>tag:blogger.com,1999:blog-2895343523394480614.post-2285240568503612068</id><published>2009-10-09T09:15:00.004+13:00</published><updated>2009-10-09T09:21:38.749+13:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-09T09:21:38.749+13:00</app:edited><title>How to Remember CSS Shorcut Order</title><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2895343523394480614&amp;postID=2285240568503612068" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2895343523394480614/posts/default/2285240568503612068?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2895343523394480614/posts/default/2285240568503612068?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RichardHulse/~3/KM0Wp7gMlDI/how-to-remember-css-shorcut-order.html" title="How to Remember CSS Shorcut Order" /><author><name>Richard Hulse</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>2</thr:total><content type="html">I have always had trouble remembering the correct order for CSS shortcuts like this:margin: 3px 4px 2px 3px;The order is Top, Right, Bottom, Left.I have just found two ways to remember this.The first is using the word trouble:T R o u B L eThe consonants give the order.The second (pointed out by a colleague this morning) is using a clockface starting at the top and going clockwise.12 is at the 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/GcI2R_x-7ufZKeJoEyESEXTmEvQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/GcI2R_x-7ufZKeJoEyESEXTmEvQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/GcI2R_x-7ufZKeJoEyESEXTmEvQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/GcI2R_x-7ufZKeJoEyESEXTmEvQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RichardHulse/~4/KM0Wp7gMlDI" height="1" width="1"/&gt;</content><feedburner:origLink>http://richardhulse.blogspot.com/2009/10/how-to-remember-css-shorcut-order.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkEMRnc9fCp7ImA9WxNTE00.&quot;"><id>tag:blogger.com,1999:blog-2895343523394480614.post-7147259241537467467</id><published>2009-08-13T20:22:00.007+12:00</published><updated>2009-08-15T13:44:47.964+12:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-15T13:44:47.964+12:00</app:edited><title>Speeding up content delivery on the Radio NZ website</title><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2895343523394480614&amp;postID=7147259241537467467" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2895343523394480614/posts/default/7147259241537467467?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2895343523394480614/posts/default/7147259241537467467?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RichardHulse/~3/345q5zxzmy0/speeding-up-content-delivery-on-radio.html" title="Speeding up content delivery on the Radio NZ website" /><author><name>Richard Hulse</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>3</thr:total><content type="html">We've made a few changes to the way content is served on radionz.co.nz1. The first is that all static content is now served from a separate domain (static.radionz.net.nz). We are using Nginx for this task because it is faster and more light-weight than Apache.One benefit is that the browser can make more connections to the site for downloading page elements in parallel.The second reason we used a
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/_IBG63cQTTO3kDukljDF1N4P5QA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_IBG63cQTTO3kDukljDF1N4P5QA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/_IBG63cQTTO3kDukljDF1N4P5QA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_IBG63cQTTO3kDukljDF1N4P5QA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RichardHulse/~4/345q5zxzmy0" height="1" width="1"/&gt;</content><feedburner:origLink>http://richardhulse.blogspot.com/2009/08/speeding-up-content-delivery-on-radio.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0QFR3c7eCp7ImA9WxJUEEU.&quot;"><id>tag:blogger.com,1999:blog-2895343523394480614.post-2468069650489360842</id><published>2009-07-09T09:00:00.004+12:00</published><updated>2009-07-09T09:41:56.900+12:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-09T09:41:56.900+12:00</app:edited><title>Browser and OS trends visitor trends at Radio NZ</title><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2895343523394480614&amp;postID=2468069650489360842" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2895343523394480614/posts/default/2468069650489360842?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2895343523394480614/posts/default/2468069650489360842?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RichardHulse/~3/qwjWJVPCgOg/browser-and-os-trends-visitor-trends-at.html" title="Browser and OS trends visitor trends at Radio NZ" /><author><name>Richard Hulse</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><content type="html">Yesterday I took a look back at browser and OS usage changes over the last couple of years to evaluate any useful trends.Here are the browser stats from the last month, and the same period 1 &amp;amp; 2 year's ago:Type200720082009IE70%65%58%Firefox22%27%27%Safari4%5.4%8.6%Chrome--3.1%Opera.93%1%.96%IE version 5.x is virtually extinct.Looking at the underlying data I'd draw the following conclusions:IE 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/G41GZUXfT8zM1-oVDmRroec8JEk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/G41GZUXfT8zM1-oVDmRroec8JEk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/G41GZUXfT8zM1-oVDmRroec8JEk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/G41GZUXfT8zM1-oVDmRroec8JEk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RichardHulse/~4/qwjWJVPCgOg" height="1" width="1"/&gt;</content><feedburner:origLink>http://richardhulse.blogspot.com/2009/07/browser-and-os-trends-visitor-trends-at.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0MMQXc4fSp7ImA9WxJVFko.&quot;"><id>tag:blogger.com,1999:blog-2895343523394480614.post-7534701836166526890</id><published>2009-07-04T14:43:00.001+12:00</published><updated>2009-07-04T14:44:40.935+12:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-04T14:44:40.935+12:00</app:edited><title>Rails Active Directory Authentication</title><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2895343523394480614&amp;postID=7534701836166526890" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2895343523394480614/posts/default/7534701836166526890?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2895343523394480614/posts/default/7534701836166526890?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RichardHulse/~3/BDxan87L7wE/rails-active-directory-authentication.html" title="Rails Active Directory Authentication" /><author><name>Richard Hulse</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><content type="html">Radio New Zealand has released a rails plugin to allows user to authenticating to Active Directory from a Rails Application.We use it with the restful authentication plugin to allow a single set of credentials to be used for each person, regardless of the application.Michael Koziarski wrote the plugin, and we (RNZ) are releasing it under the MIT license.The source is available on GitHub.
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/AAf5sMdTwRCRCldVlZj_mnSfgw8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/AAf5sMdTwRCRCldVlZj_mnSfgw8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/AAf5sMdTwRCRCldVlZj_mnSfgw8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/AAf5sMdTwRCRCldVlZj_mnSfgw8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RichardHulse/~4/BDxan87L7wE" height="1" width="1"/&gt;</content><feedburner:origLink>http://richardhulse.blogspot.com/2009/07/rails-active-directory-authentication.html</feedburner:origLink></entry></feed>

