<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" version="2.0">

<channel>
	<title>The WGBH.org Development Blog</title>
	
	<link>http://devblog.wgbh.org</link>
	<description>Blogging about all things tech behind WGBH.org - and then some!</description>
	<pubDate>Thu, 04 Jun 2009 00:10:56 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/wgbhdevblog" type="application/rss+xml" /><item>
		<title>IMA Public Media Conference 2009 Review</title>
		<link>http://devblog.wgbh.org/2009/02/24/ima-public-media-conference-2009-review/</link>
		<comments>http://devblog.wgbh.org/2009/02/24/ima-public-media-conference-2009-review/#comments</comments>
		<pubDate>Tue, 24 Feb 2009 17:16:56 +0000</pubDate>
		<dc:creator>Phil</dc:creator>
		
		<category><![CDATA[Public Media]]></category>

		<category><![CDATA[#IMA09]]></category>

		<category><![CDATA[Adnaan Wasey]]></category>

		<category><![CDATA[American Public Media]]></category>

		<category><![CDATA[Andrew Kuklewicz]]></category>

		<category><![CDATA[Arizona State University]]></category>

		<category><![CDATA[At&T deck]]></category>

		<category><![CDATA[Atlanta]]></category>

		<category><![CDATA[BlackBerry]]></category>

		<category><![CDATA[Comatose]]></category>

		<category><![CDATA[Dan Goldman]]></category>

		<category><![CDATA[Doc Searls]]></category>

		<category><![CDATA[Drupal]]></category>

		<category><![CDATA[Facebook]]></category>

		<category><![CDATA[Flickr]]></category>

		<category><![CDATA[Georgia Public Broadcasting]]></category>

		<category><![CDATA[Google]]></category>

		<category><![CDATA[Google Reader]]></category>

		<category><![CDATA[ideastream]]></category>

		<category><![CDATA[IMA]]></category>

		<category><![CDATA[iPhone]]></category>

		<category><![CDATA[James Rutherford]]></category>

		<category><![CDATA[Jerry D'Antonio]]></category>

		<category><![CDATA[Jesse Thorn]]></category>

		<category><![CDATA[Joe Sheppa]]></category>

		<category><![CDATA[John Tynan]]></category>

		<category><![CDATA[Jr.]]></category>

		<category><![CDATA[JSON]]></category>

		<category><![CDATA[Julia Schrenkler]]></category>

		<category><![CDATA[Keith Hopper]]></category>

		<category><![CDATA[Kevin Dando]]></category>

		<category><![CDATA[KQED]]></category>

		<category><![CDATA[Margaret Rosas]]></category>

		<category><![CDATA[Martin Luther King]]></category>

		<category><![CDATA[Matt MacDonald]]></category>

		<category><![CDATA[Max Lager's]]></category>

		<category><![CDATA[Melinda Driscoll]]></category>

		<category><![CDATA[Minnesota Public Radio]]></category>

		<category><![CDATA[Mofuse]]></category>

		<category><![CDATA[News21]]></category>

		<category><![CDATA[NPR]]></category>

		<category><![CDATA[NPR API]]></category>

		<category><![CDATA[NPRML]]></category>

		<category><![CDATA[PBS]]></category>

		<category><![CDATA[peaches]]></category>

		<category><![CDATA[programmableweb]]></category>

		<category><![CDATA[PRX]]></category>

		<category><![CDATA[Public Media Conference]]></category>

		<category><![CDATA[Public Radio Tuner]]></category>

		<category><![CDATA[Quiddities]]></category>

		<category><![CDATA[Radio Engage]]></category>

		<category><![CDATA[RootCandy]]></category>

		<category><![CDATA[Ruby on Rails]]></category>

		<category><![CDATA[The Takeaway]]></category>

		<category><![CDATA[Tim Olson]]></category>

		<category><![CDATA[Todd Mundt]]></category>

		<category><![CDATA[Twitter]]></category>

		<category><![CDATA[Vivian Schiller]]></category>

		<category><![CDATA[WNET]]></category>

		<category><![CDATA[WordPress MU]]></category>

		<category><![CDATA[XML]]></category>

		<category><![CDATA[XSS]]></category>

		<category><![CDATA[YouTube]]></category>

		<category><![CDATA[Zach Brand]]></category>

		<guid isPermaLink="false">http://devblog.wgbh.org/?p=187</guid>
		<description><![CDATA[Last week, like many of you in the public media world, I attended the Integrated Media Association&#8217;s Public Media Conference 2009 in lovely Atlanta, Georgia. I leaned a number of things (like, for example, did you know they grow peaches in Georgia? Who knew?) A good time was seemingly had by all.
I flew down Tuesday [...]]]></description>
			<content:encoded><![CDATA[<p>Last week, like many of you in the public media world, I attended the <a href="http://www.integratedmedia.org" target="_blank">Integrated Media Association</a>&#8217;s <a href="http://www.integratedmedia.org/nav.cfm?cat=15&#038;subcat=116&#038;subsub=126" target="_blank">Public Media Conference 2009</a> in lovely <strong>Atlanta</strong>, Georgia. I leaned a number of things (like, for example, did you know they grow <strong>peaches</strong> in Georgia? Who knew?) A good time was seemingly had by all.</p>
<p>I flew down Tuesday night, so as to attend the <strong>Tech Summit</strong> on Wednesday, then hung around for most of the <strong>General Conference</strong>, going home Friday evening, so I missed the late Friday and Saturday morning sessions.</p>
<p>My strategy going into the conference boiled down to a three pronged attack:</p>
<p>(1) Learn as many cool <strong>technical tidbits</strong> as possible<br />
(2) Attend any session involving <a href="http://www.andycarvin.com/" target="_blank">Andy Carvin</a><br />
(3) Don&#8217;t miss out on any <strong>free food</strong> or <strong>coffee</strong></p>
<p>I am happy to say I feel as if I achieved these goals, though I did miss <strong>one</strong> Andy Carvin session. However, I didn&#8217;t miss any of the free food or coffee, so I&#8217;d call it a wash.</p>
<p>Anyway, what follows is a <strong>rough chronology</strong> of my time there and what notes I took at various sessions. My <strong>note taking skills</strong> have deteriorated a bit since I was last in school, so in some sessions I took good notes and in others not so good. Also, most of my note taking action took place on Tech Summit day, as you&#8217;ll see. <strong>Fair warning</strong>.</p>
<p>The IMA has an excellent <a href="http://wiki.integratedmedia.org/index.php?title=Main_Page" target="_blank">wiki</a> for the conference. <strong>Audio </strong>for a number of sessions is available <a href="http://wiki.integratedmedia.org/index.php?title=Main_Page#Conference_Sessions_Audio" target="_blank">here</a>. Also, <strong>video</strong> of some sessions are available right on the IMA home page.</p>
<p>Ready? Here we go:</p>
<p>I flew down late <strong>Tuesday</strong> afternoon and arrived on time and hassle free at the <a href="http://www.starwoodhotels.com/westin/property/overview/index.html?propertyID=1023" target="_blank">Westin Peachtree Plaza</a> right there in downtown Atlanta. I was given a lovely room on the <strong>43rd floor</strong>. </p>
<p><a href="http://www.flickr.com/photos/wgbh_devblog/3295321228/" target="_blank"><img src="http://devblog.wgbh.org/wp-content/uploads/2009/02/0218091248-300x225.jpg" alt="View from Westin Peachtree Plaza" title="View from Westin Peachtree Plaza" width="300" height="225" class="alignnone size-medium wp-image-203" /></a></p>
<p>A few <strong>interesting nuggets</strong> about this hotel. First of all, whomever designed sure liked <strong>concrete</strong>. The main lobby and lounge was crammed full of it. For example, take a gander at this <strong>coffee table</strong> in the lobby:</p>
<p><a href="http://www.flickr.com/photos/wgbh_devblog/3294496733/" target="_blank"><img src="http://devblog.wgbh.org/wp-content/uploads/2009/02/0219091720-300x225.jpg" alt="Concrete Coffee Table" title="Concrete Coffee Table" width="300" height="225" class="alignnone size-medium wp-image-205" /></a></p>
<p>I kid you not, that thing is a solid <strong>eight inches</strong> of concrete! Wow. <strong>Strange</strong>.</p>
<p>Secondly, I would be remiss if I didn&#8217;t point out (like many of us there did) that right across the street from the hotel is a <strong>Hooters</strong>. Seriously:</p>
<p><a href="http://www.flickr.com/photos/wgbh_devblog/3294496711" target="_blank"><img src="http://devblog.wgbh.org/wp-content/uploads/2009/02/0219091450a-300x225.jpg" alt="Hooters" title="Hooters" width="300" height="225" class="alignnone size-medium wp-image-207" /></a></p>
<p>For the record, I did <strong>not</strong> go there. Honest. No, really, I swear.</p>
<p>OK, moving on to more serious matters, <strong>Wednesday</strong> was <strong>Tech Summit</strong> day, organized by <a href="http://www.prx.org/" target="_blank">PRX</a>&#8217;s <strong>Andrew Kuklewicz</strong> (nice work, Andrew!). </p>
<p><a href="http://flickr.com/photos/wgbh_devblog/3295321136/" target="_blank"><img src="http://devblog.wgbh.org/wp-content/uploads/2009/02/0218090910-300x225.jpg" alt="Andrew Kuklewicz" title="Andrew Kuklewicz" width="300" height="225" class="alignnone size-medium wp-image-228" /></a></p>
<p>The summit started bright and early, with a keynote address, <strong>What Do They Want and How Do We Deliver</strong>, by <a href="http://toddmundt.com/blog/" target="_blank">Todd Mundt</a> of <a href="http://www.louisvillepublicmedia.org/" target="_blank">Louisville Public Media</a>.</p>
<p><a href="http://flickr.com/photos/wgbh_devblog/3295321158/" target="_blank"><img src="http://devblog.wgbh.org/wp-content/uploads/2009/02/0218090924-300x225.jpg" alt="Todd Mundt" title="Todd Mundt" width="300" height="225" class="alignnone size-medium wp-image-210" /></a></p>
<p>Todd said that LPM has moved to <strong>WordPress</strong> as their <strong>CMS</strong> and spent $12,000, for setup and custom theming. The front page is <strong>hand coded</strong> (yikes!), meaning that content is entered directly into code via the theme editor.</p>
<p>On <strong>Facebook</strong> they have one page for each of their three stations and they use <a href="http://www.facebook.com/apps/application.php?id=23798139265" target="_blank">RSS-Connect</a> to pull in content from the site. They are also on <strong>Twitter</strong> and pull site content through <a href="http://twitterfeed.com/" target="_blank">twitterfeed</a>. They find Twitter to be an excellent tool for listener interaction. This would turn out to be a recurrent theme throughout the conference.</p>
<p>Along with <strong>Graham Griffith</strong> Todd publishes <a href="http://themediavore.com/mediavore/" target="_blank">The Mediavore</a>, a hand-curated blog meant to highlight public media content outside of Louisville that could appeal to their listeners.</p>
<p>Todd noted that, in general, they are <em>not</em> seeing a lot of traction on their bogs. He says they get many more comments on news stories.</p>
<p>The next session was a <strong>CMS Roundtable</strong> discussion. First up was <strong>Dan Goldman</strong> of <a href="http://www.thirteen.org/" target="_blank">WNET New York&#8217;s thirteen.org</a>.</p>
<p><a href="http://flickr.com/photos/wgbh_devblog/3294496611/" target="_blank"><img src="http://devblog.wgbh.org/wp-content/uploads/2009/02/0218091056-300x225.jpg" alt="Dan Goldman" title="Dan Goldman" width="300" height="225" class="alignnone size-medium wp-image-217" /></a></p>
<p>They are now using <a href="http://mu.wordpress.org/" target="_blank">WordPress MU</a> (multi-user) as their CMS. They wanted a CMS that would impose the <strong>same structure</strong> and similar <strong>look and feel</strong> across all of their various sites (of which there many), so as to remove some control of these things from <strong>content producers</strong>. This would then let them focus on <strong>building community</strong> and audience.</p>
<p>They currently use WP MU to manage <strong>30-40</strong> sites, with more yet to be integrated, each of which uses one of two site templates. They built a custom <strong>migration tool</strong> to move existing sites to WP MU (basically via <strong>HTML scraping</strong>). New features that are coming up: full <strong>COVE</strong> integration (ongoing), sponsorship system, and personalization.</p>
<p>As an example, Dan showed us the <a href="http://www.pbs.org/wnet/wideangle/" target="_blank">Wide Angle</a> site where each episode is a blog, and the site itself is a blog of these blogs.</p>
<p><strong>Joe Sheppa</strong> and <strong>Jerry D&#8217;Antonio</strong> from <a href="http://ideastream.org/" target="_blank">ideastream</a> in Ohio discussed the use of <a href="http://expressionengine.com/" target="_blank">ExpressionEngine</a> as their CMS.</p>
<p>They currently run <strong>six sites</strong> using EE, content from each of which can be easily be shared across the other sites. They like EE&#8217;s <strong>templating language</strong>, which allows content producers to create dynamic content without having to know how to program. EE templates also allow the use of embedded <strong>PHP</strong>, which provides coders with even more ways to easily generate dynamic content.</p>
<p>Things then took a <strong>Drupal</strong> turn as <strong>James Rutherford</strong> of <a href="http://gpb.org/" target="_blank">Georgia Public Broadcasting</a> talked about their use of it. James gave a nice background on Drupal for those who may be not be familiar with it.</p>
<p>My friend <strong>Margaret Rosas</strong> of <a href="http://quiddities.com/" target="_blank">Quiddities</a> then got a little more into the Drupal weeds with a discussion of the <a href="http://radioengage.com/" target="_blank">Radio Engage</a> project which her company is working on.  </p>
<p><a href="http://flickr.com/photos/wgbh_devblog/3295321196/" target="_blank"><img src="http://devblog.wgbh.org/wp-content/uploads/2009/02/0218091141-300x225.jpg" alt="Margaret Rosas" title="Margaret Rosas" width="300" height="225" class="alignnone size-medium wp-image-224" /></a></p>
<p>Radio Engage is meant to solve many of the <strong>usability problems</strong> of Drupal by building a <strong>turn-key CMS/site</strong> based on Drupal geared towards public radio stations.</p>
<p>The package includes a number of the best <strong>contributed Drupal modules</strong> for public media stations, as well as an <strong>installation profile</strong>, and a more user-friendly <strong>administration theme</strong> (they are currently trying out the <a href="http://drupal.org/project/rootcandy" target="_blank">RootCandy</a> admin theme). The package will provide support for station management, member management, content management and audience engagement.</p>
<p>They envision using <strong>social bookmarking sites</strong> to bookmark interesting content, which can then be pulled into <strong>Google Reader</strong>, from which editorial staff can stars items to highlight which, finally, can then get pulled directly into Drupal. Likewise, they plan on using standard <strong>tagging</strong> of content on popular social networks (e.g. <strong>Flickr</strong>, Twitter) and third party sites by both station staff and audience members, which can then be pulled into Drupal and published in an automated fashion.</p>
<p>Closing out the round table was our host <strong>Andrew Kuklewicz</strong> of <strong>PRX</strong>, who spoke about their use of <a href="http://rubyonrails.org/" target="_blank">Ruby on Rails</a>. Andrew gave an overview of what RoR (or Rails) is (really a development platform, rather than a CMS). They like Rails for <strong>rapid development</strong> and change, and find it easy to modify and maintain plugins.</p>
<p>PRX currently uses <a href="http://wiki.rubyonrails.org/rails/pages/Comatose" target="_blank">Comatose</a>, a micro CMS, based on RoR, and they have integrated their site search with <a href="http://lucene.apache.org/solr/" target="_blank">Solr</a>.</p>
<p>After a semi-fine - but <strong>free</strong> - box lunch, I headed over to the <strong>Mobile Site and Service Development</strong> session. <strong>Melinda Driscoll</strong> of <a href="http://minnesota.publicradio.org/" target="_blank">Minnesota Public Radio</a> got the ball rolling with a discussion of the <a href="http://minnesota.publicradio.org/about/site/mobile/" target="_blank">MPR News mobile site</a>. It&#8217;s RSS based, using <a href="http://www.mofuse.com/" target="_blank">MoFuse</a>, and includes feeds for news, politics, business, arts &#038; culture, science, and their <a href="http://minnesota.publicradio.org/collections/special/columns/news_cut/" target="_blank">News Cut</a> blog. Traffic to the mobile site if less than 1% of total web site traffic, but continues to grow.</p>
<p><strong>Matt MacDonald</strong> of PRX then talked about the <a href="http://www.publicradiotuner.com/" target="_blank">Public Radio Tuner</a>, an <strong>iPhone</strong> application for playing  public radio streams originally developed by MPR. The <strong>beta</strong> was launched in November 2008. Currently more than 200 stations are involved.</p>
<p>Matt talked about some of the features now included in the tuner, such as <strong>search</strong>, save favorite stations, etc. They are encouraging <strong>feedback</strong> as to what stations would like to see in the tool. <strong>Version 2.0</strong> of the tuner will be released by May 31, 2009, at which point they will also make the <strong>source code available</strong>.</p>
<p><strong>Zach Brand</strong> of <a href="http://www.npr.org/" target="_blank">NPR</a> then discussed the <a href="http://www.npr.org/services/mobile/mobilewebandmobilevoice.html?ps=mobile2" target="_blank">NPR mobile site</a>. It was launched August 2007 and traffic has been steadily climbing since. In particular, they found getting on the <strong>AT&#038;T deck</strong> has led to a lot of growth.</p>
<p>Zach said they&#8217;ve found mobile visitors much more <strong>loyal</strong> and <strong>engaged</strong> than regular web visitors. 81% of the mobile audience comes from iPhone (61%) or <strong>BlackBerry</strong> (19%).</p>
<p>The <strong>NPR mobile iPhone application</strong> debuted in December 2008 and, interestingly, was created by an independent developer of his own volition, using the <strong>NPR API</strong>.</p>
<p><a href="http://blogs.law.harvard.edu/doc/" target="_blank">Doc Searls </a>then spoke but something came up at work that I had to help fix, meaning I took no notes during his time. Ahh, it&#8217;s great to be <strong>constantly connected</strong>, ain&#8217;t it?</p>
<p>The session was closed out by <a href="http://keithhopper.com" target="_blank">Keith Hopper</a> of <a href="http://www.publicinteractive.com/" target="_blank">Public Interactive</a> (which is itself now a part of NPR). Keith spoke more about the Public Radio Tuner and, in particular, about the <a href="http://keithhopper.com/blog/introducing-vrm-listen-log" target="_blank">VRM ListenLog</a>, which is coming in version 2.0. It will capture some of the <strong>listener history</strong>, and is meant to allow for the incorporation of <strong>user-driven functionality</strong> to the tuner. But it is really more than that as it&#8217;s <strong>open source</strong> and <strong>open standard</strong> so potentially <em>any</em> application will be able to write to and make use of it. </p>
<p>The last formal session of the Tech Summit that I attended was <strong>Developing and Using Widgets and APIs</strong>. <strong>Andrew Kuklewicz</strong> once again got things rolling with a nice primer/overview of widgets.</p>
<p><a href="http://flickr.com/photos/wgbh_devblog/3294496647/" target="_blank"><img src="http://devblog.wgbh.org/wp-content/uploads/2009/02/02180915271-300x225.jpg" alt="Andrew Kuklewicz" title="Andrew Kuklewicz" width="300" height="225" class="alignnone size-medium wp-image-237" /></a></p>
<p>Among the tools and applications that Andrew uses and recommended for widget development were the <a href="http://code.google.com/apis/ajax/playground/" target="_blank">Google AJAX API Playground</a>, <a href="http://www.google.com/uds/solutions/dynamicfeed/index.html" target="_blank">Google Dynamic Feed Control</a> for adding feeds to blogs and websites, and <a href="http://www.programmableweb.com/" target="_blank">ProgrammableWeb</a>, the <strong>Wikipedia</strong> for APIs.</p>
<p><strong>John Tynan</strong> of <strong>Arizona State University</strong> and <a href="http://newsinitiative.org/" target="_blank">News21</a> initiative then spoke about his experience building widgets. He recommended using <a href="http://pipes.yahoo.com/pipes/" target="_blank">Yahoo! Pipes</a> as a great way to transform <strong>XML</strong> data into <strong>JSON </strong>format, in order to get around <a href="http://en.wikipedia.org/wiki/Cross-site_scripting" target="_blank">XSS</a> issues.</p>
<p><strong>Zach Brand</strong> wrapped up the session by speaking about the <a href="http://www.npr.org/api" target="_blank">NPR API</a>. It was originally written to support NPR.org (which is now almost completely powered by it). The API makes available virtually all of the content on NPR.org, with lots of different ways to slice and dice the data (by lists, by topics, etc.). Zach spoke of some of the <strong>legal challenges</strong> involved with this venture (e.g. exclude rights-restricted content).</p>
<p>In order to use the API you must create an account on NPR.org. Currently there are <strong>1,300</strong> registered API users and requests are growing quickly. </p>
<p>They offer a sophisticated <strong>query builder</strong> and multiple <strong>output formats</strong>. <strong>NPRML</strong> is the default data output format, but they also offer data in a number of other formats, such as RSS, JSON, HTML, etc.</p>
<p>Future enhancements they envision include improved ingest of member station content (currently 14 stations contribute content), better integration with PI, the addition of other output formats (e.g. <strong>PBCore</strong>), offering video content and a full story HTML widget.</p>
<p>Zach also mentioned the <a href="http://www.npr.org/blogs/inside/" target="_blank">Inside NPR.org</a> blog (which I love).</p>
<p>The Tech Summit wrapped up with a <strong>Show Us Your Stuff</strong> session. By that point my note taking hand was tired out so I just sat back and enjoyed seeing what other folks are doing.</p>
<p>I ended the night by enjoying a nice <strong>dinner</strong> and adult beverage(s) at <a href="http://maxlagers.com/" target="_blank">Max Lager&#8217;s</a>. I recommend checking it out if you&#8217;re down there!</p>
<p>The <strong>General Conference</strong> kicked off on <strong>Thursday</strong> with some local Georgia musicians. They started off with <a href="http://en.wikipedia.org/wiki/Foggy_Mountain_Breakdown" target="_blank">Foggy Mountain Breakdown</a>. Can&#8217;t beat that for kickoff music!</p>
<p><strong>Tim Olson</strong> of <a href="http://www.kqed.org/" target="_blank">KQED</a> was among those giving the <strong>opening remarks</strong>. </p>
<p><a href="http://flickr.com/photos/wgbh_devblog/3294496665/" target="_blank"><img src="http://devblog.wgbh.org/wp-content/uploads/2009/02/0219090926-300x225.jpg" alt="Tim Olson" title="Tim Olson" width="300" height="225" class="alignnone size-medium wp-image-246" /></a></p>
<p>Following the keynote speeches I made my way over to <strong>A Social Media How-To: Choosing and Using the Right Tools</strong>, where I scored a coveted seat <strong>right near an outlet</strong>!</p>
<p><a href="http://flickr.com/photos/wgbh_devblog/3295321308/" target="_blank"><img src="http://devblog.wgbh.org/wp-content/uploads/2009/02/0219091153a-300x225.jpg" alt="Coveted Seat!" title="Coveted Seat!" width="300" height="225" class="alignnone size-medium wp-image-251" /></a></p>
<p><strong>Kevin Dando</strong> of <a href="http://www.pbs.org" target="_blank">PBS</a> started us off by speaking of his experience with several social networking tools. He recommended that on Facebook <strong>fan pages</strong> are a better choice than <strong>groups</strong>, explaining that fan pages have better <strong>search engine visibility</strong> and you can always <strong>direct message</strong> all fan page members, whereas you no longer can once a group becomes too big. He also said that <strong>targeted advertising</strong>, based on status updates and wall posts, are coming to Facebook, though it has not been announced yet.</p>
<p>When using <strong>YouTube</strong> Kevin recommended creating <strong>strategic video descriptions</strong> (e.g. putting your <strong>URL</strong> up front, putting clickable links in the description, i.e. include <em>http://</em>, etc.). He also recommended making use of <a href="http://www.youtube.com/blog?entry=IRJjhiDz6RU" target="_blank">YouTube Insight</a>, their free analytics tool, branding clips, and posting long form videos (which you can do, if you create a <strong>non-profit account</strong>).</p>
<p>Public media&#8217;s favorite social media expert <strong>Andy Carvin</strong> then shared some of his knowledge. He spoke of the importance of <strong>tagging</strong>, <strong>tagging</strong> and <strong>more tagging</strong>!</p>
<p><a href="http://flickr.com/photos/wgbh_devblog/3295321288" target="_blank"><img src="http://devblog.wgbh.org/wp-content/uploads/2009/02/0219091153-300x225.jpg" alt="Andy Carvin" title="Andy Carvin" width="300" height="225" class="alignnone size-medium wp-image-253" /></a></p>
<p>Andy also spoke of <a href="http://en.wikipedia.org/wiki/Crowdsourcing" target="_blank">crowdsourcing</a>, which is getting lots of people to contribute small bits to a collaborative work, and cited examples like <a href="http://ballotvox.prx.org/" target="_blank">BallotVox</a>, <a href="http://www.hurricanes08.org/" target="_blank">The Hurricane Information Center</a> and <a href="http://www.npr.org/templates/story/story.php?storyId=96349881" target="_blank">NPR.org&#8217;s Vote Report</a>; </p>
<p>Andy also went into some of the <strong>drawbacks</strong> of crowdsourcing such as the potential for <strong>inappropriate content</strong> and the need to have somebody <strong>curate</strong> of all that user-generated content. He also recommended the use of <strong>free widgets</strong> (see <a href="http://www.widgetbox.com/" target="_blank">widgetbox</a> for a good selection), picking unique tags and, or course, <strong>promotion</strong>!</p>
<p><strong>Julia Schrenkler</strong> of  MPR and <strong>American Public Media</strong> spoke about collaboration vs. conversation and <strong>John Tynan</strong> also shared his thoughts on social media tools. I must have been getting hungry for lunch because I stopped taking notes.</p>
<p>After a tasty <strong>boxed lunch</strong> for IMA member stations I spent the afternoon attending the <strong>Got Mobile?</strong> and <strong>AIR&#8217;s Producers - Moving the Communities of Tomorrow</strong> sessions. In retrospect, though the latter was interesting, I should have attended instead <strong>The Shape of Content to Come: Think About It! Build It!</strong> session. Not sure what I was thinking there.</p>
<p>That evening Georgia Public Broadcasting hosted a reception at the <a href="http://www.nps.gov/malu/" target="_blank">Martin Luther King, Jr. National Historical Site</a>, which was very interesting. I had no idea that MLK (along with his wife) is actually buried right there:</p>
<p><a href="http://flickr.com/photos/wgbh_devblog/3306141727/" target="_blank"><img src="http://devblog.wgbh.org/wp-content/uploads/2009/02/0219091753-300x225.jpg" alt="Martin Luther King, Jr. Burial Site" title="Martin Luther King, Jr. Burial Site" width="300" height="225" class="alignnone size-medium wp-image-260" /></a></p>
<p>The reception featured good food (including some sort of <strong>spicy chicken thing</strong> which was really good), good music and lots of interesting history!</p>
<p><strong>Friday</strong> was the final day of the conference for me and it started with the <strong>Public Media Metrics Breakfast</strong> followed by the opening session, but the highlight for me was the <strong>Social Media: What Worked and Lessons Learned</strong> session, once again featuring <strong>Andy Carvin</strong>, along with <strong>Jesse Thorn</strong> from <a href="http://maximumfun.org/" target="_blank">The Sound of Young America</a> and <strong>Adnaan Wasey</strong> from <a href="http://www.thetakeaway.org/" target="_blank">The Takeaway</a>. I didn&#8217;t take any notes here but just sat back and really enjoyed hearing how these fellas use social media. Great stuff.</p>
<p>My time at the conference ended with a nice <strong>spicy pork burrito</strong> for lunch, followed by part of the address given by <strong>Vivian Schiller</strong>, the <strong>new president</strong> of NPR. I had to cut out early to head to the airport and catch my flight home. Luckily, as on the way down, the travel went <strong>smoothly</strong> and I was back in cold and snowy <strong>Boston</strong> before I knew it.</p>
<p>Whew - I think that&#8217;s it! Gee, have I used enough <strong>tags</strong> on this post? Andy Carvin would be proud - or <strong>horrified</strong>.</p>
]]></content:encoded>
			<wfw:commentRss>http://devblog.wgbh.org/2009/02/24/ima-public-media-conference-2009-review/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Now Twittering for Work</title>
		<link>http://devblog.wgbh.org/2009/02/22/now-twittering-for-work/</link>
		<comments>http://devblog.wgbh.org/2009/02/22/now-twittering-for-work/#comments</comments>
		<pubDate>Mon, 23 Feb 2009 00:17:29 +0000</pubDate>
		<dc:creator>Phil</dc:creator>
		
		<category><![CDATA[Social Media]]></category>

		<category><![CDATA[Atlanta]]></category>

		<category><![CDATA[IMA]]></category>

		<category><![CDATA[Twitter]]></category>

		<category><![CDATA[WGBH Online]]></category>

		<guid isPermaLink="false">http://devblog.wgbh.org/?p=191</guid>
		<description><![CDATA[I love Twitter! I&#8217;ve been twittering (I prefer that term to the more accepted tweeting) for about two years now. Until now, I&#8217;ve been twittering outside of the the work context, i.e. not about my role as the Director of Technology for WGBH Online.  Twitter has been a fun experience for me, a place [...]]]></description>
			<content:encoded><![CDATA[<p>I love <a href="http://www.twitter.com" target="_blank">Twitter</a>! I&#8217;ve been <strong>twittering</strong> (I prefer that term to the more accepted <strong>tweeting</strong>) for about two years now. Until now, I&#8217;ve been twittering <a href="http://twitter.com/chumworth" target="_blank">outside of the the work context</a>, i.e. not about my role as the <strong>Director of Technology</strong> for <strong>WGBH Online</strong>.  Twitter has been a fun experience for me, a place where I&#8217;ve enjoyed writing about my life outside of work and making lots of interesting new friends. </p>
<p>In the aftermath of last week&#8217;s IMA <strong>Public Media Conference</strong> in <strong>Atlanta</strong> - where Twitter continued to get lots and lots of <strong>love</strong> - I have been inspired to start a <a href="http://twitter.com/PhilJohnsonWGBH" target="_blank">new Twitter account </a>devoted to my work here at WGBH. It should be a nice compliment to this here blog and another way to connect with more folks out there, both in  public media and elsewhere.</p>
<p>As you can see, I&#8217;ve added a <strong>Twitter badge</strong> to this blog, over there on the right. I&#8217;ve also started following those of you whom I already know about and could find on Twitter. If we&#8217;re not already connected on Twitter let&#8217;s make <strong>friends</strong>!</p>
<p>Speaking of the <strong>IMA</strong>, I&#8217;ll be writing about my experiences there in the next day or so. Not to give anything away just yet, but the one word I would use to describe the conference this year would be <strong>concrete</strong>.</p>
]]></content:encoded>
			<wfw:commentRss>http://devblog.wgbh.org/2009/02/22/now-twittering-for-work/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Project Dropout and the Public Media Conference</title>
		<link>http://devblog.wgbh.org/2009/02/13/project-dropout-and-the-public-media-conference/</link>
		<comments>http://devblog.wgbh.org/2009/02/13/project-dropout-and-the-public-media-conference/#comments</comments>
		<pubDate>Fri, 13 Feb 2009 16:44:00 +0000</pubDate>
		<dc:creator>Phil</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[CSS]]></category>

		<category><![CDATA[IMA]]></category>

		<category><![CDATA[Project Dropout]]></category>

		<category><![CDATA[Public Media Conference]]></category>

		<category><![CDATA[WBUR]]></category>

		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://devblog.wgbh.org/?p=176</guid>
		<description><![CDATA[ I&#8217;m happy to report that some PHP-based initiatives are still cooking! This week we launched one of those, Project Dropout.
Project Dropout is a collaboration between WGBH and our friends at WBUR looking at the student dropout crisis in Massachusetts. It includes a radio series, a television series and, if course, the blog. 
The blog [...]]]></description>
			<content:encoded><![CDATA[<p> I&#8217;m happy to report that some <strong>PHP</strong>-based initiatives are still cooking! This week we launched one of those, <a href="http://www.projectdropout.org/" target="_blank">Project Dropout</a>.</p>
<p>Project Dropout is a collaboration between <strong>WGBH</strong> and our friends at <a href="http://www.wbur.org" target="_blank">WBUR</a> looking at the <strong>student dropout crisis</strong> in Massachusetts. It includes a <a href="http://www.projectdropout.org/radio-series/" target="_blank">radio series</a>, a <a href="http://www.projectdropout.org/television-series/" target="_blank">television series</a> and, if course, the blog. </p>
<p>The blog was built using <strong>WordPress</strong>. As I&#8217;ve <a href="http://devblog.wgbh.org/2008/11/26/blogging-drupal-or-wordpress/" target="_blank">previously discussed</a>, we had to give some thought to whether to build this blog using <strong>Drupal</strong> or WordPress. We decided on WordPress for this project mainly because it&#8217;s meant to be a short lived, stand alone effort, quite distinct from <a href="http://www.wgbh.org" target="_blank">WGBH.org</a> (i.e. no shared templates or look and feel involved, no need to tightly integrate it with the rest of our main site, etc.). </p>
<p>Plus, by going with WordPress, much of the work (including <strong>theming</strong>) could be handled by others (both WGBH and WBUR staff) without requiring much work from <strong>Pete</strong> or I. That&#8217;s always a plus! My work involved <strong>installation and configuration</strong> and helping out with some of the trickier theming and <strong>CSS</strong> issues. All in all it&#8217;s been a smooth ride and a fun project to be involved with. Please check it out.</p>
<p>In other news, I&#8217;ll be attending the <strong>Intergrated Media Association</strong>&#8217;s <a href="http://www.integratedmedia.org/nav.cfm?cat=15&#038;subcat=116&#038;subsub=126" target="_blank">Public Media Conference</a> next week in <strong>Atlanta</strong>. I&#8217;ll be arriving Tuesday night so as to make the <a href="http://www.integratedmedia.org/nav.cfm?cat=15&#038;subcat=116&#038;subsub=196#IMA%20WEB%20TECH%20SEMINAR" target="_blank">Tech Summit</a> on Wednesday. I&#8217;ll be at the general conference as well, through Friday evening, when I return to <strong>Boston</strong>.</p>
<p>I&#8217;m looking forward to seeing some <strong>familiar faces</strong> and meeting new folks. If you see me wandering around, say hello! I&#8217;ll be the guy who looks kind of like this (<strong>minus the beard</strong>, which I just shaved off):</p>
<p><a href="http://www.flickr.com/photos/wgbh_devblog/2840178182/" target="_blank"><img src="http://devblog.wgbh.org/wp-content/uploads/2009/02/pj_confused-300x225.jpg" alt="Knocking on Wood" title="Knocking on Wood" width="300" height="225" class="alignnone size-medium wp-image-180" /></a></p>
<p>I hope to see a number of you there!</p>
]]></content:encoded>
			<wfw:commentRss>http://devblog.wgbh.org/2009/02/13/project-dropout-and-the-public-media-conference/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Blogging: Drupal or WordPress?</title>
		<link>http://devblog.wgbh.org/2008/11/26/blogging-drupal-or-wordpress/</link>
		<comments>http://devblog.wgbh.org/2008/11/26/blogging-drupal-or-wordpress/#comments</comments>
		<pubDate>Wed, 26 Nov 2008 16:22:14 +0000</pubDate>
		<dc:creator>Phil</dc:creator>
		
		<category><![CDATA[Drupal]]></category>

		<category><![CDATA[WordPress]]></category>

		<category><![CDATA[blogs]]></category>

		<category><![CDATA[Thanksgiving!]]></category>

		<guid isPermaLink="false">http://devblog.wgbh.org/?p=133</guid>
		<description><![CDATA[What better way to warm up for Thanksgiving then with some blogging tools talk! Always puts me in the holiday mood.
Anyway, so far as public broadcasters go, WGBH is one of the biggest, in terms of production, people, departments, projects, etc. and etc. This means that, in addition to our main web site, WGBH.org, there [...]]]></description>
			<content:encoded><![CDATA[<p>What better way to warm up for <strong>Thanksgiving</strong> then with some blogging tools talk! Always puts me in the holiday mood.</p>
<p>Anyway, so far as public broadcasters go, <strong>WGBH</strong> is one of the biggest, in terms of production, people, departments, projects, etc. and etc. This means that, in addition to our main web site, <a href="http://www.wgbh.org" target="_blank">WGBH.org</a>, there are any number of other <strong>related web sites</strong> out there floating around. The involvement of our group, <strong>WGBH Online</strong>, in these related web ventures ranges from <a href="http://www.wgbh.org/cainan/" target="_blank">full fledged ownership and support</a>, to <a href="http://forum.wgbh.org/wgbh/" target="_blank">technical consulting</a>, to completely <a href="http://lab.wgbh.org/" target="_blank">hands off</a>. </p>
<p>While the <strong>ongoing redesign</strong> of WGBH.org continues to trudge along and hang over our heads, there are a number of these other <strong>related projects</strong> which are coming on to our plate, to one degree or another. Many times, we are finding, these small web properties can really just be handled as <strong>blogs</strong>, whether the request is framed that way or not.</p>
<p>Of course, now that we have a <strong>Drupal production site</strong> up and running, supporting these related sites should be simple, no? If somebody here needs a blog, well, <strong>no problemo</strong>! Drupal can easily support <strong>multiple blogs</strong>, all under one code base, making for easy <strong>maintenance</strong>, <strong>theme sharing</strong>, <strong>logins</strong> and on and on, so that should be that, right?</p>
<p>Well, maybe. But <strong>maybe not</strong>. At least not always.</p>
<p>Recently, we have been tasked with supporting at least two new blogs. While our initial impulse (and general preference) is to build them in Drupal under the existing code base, further reflection has made  us think that <strong><a href="http://wordpress.org/" target="_blank">WordPress</a></strong> might, in some situations be the more practical choice.</p>
<p>Much as we love Drupal - and we do love Drupal so - when it comes to <strong>stand alone</strong>, easy to use <strong>blog-authoring</strong> tools WordPress is hard to beat. From it&#8217;s <strong>slick</strong> and user friendly <strong>administration tools</strong>, to its wide choice of <a href="http://wordpress.org/extend/plugins/" target="_blank">plugins</a> and <a href="http://wordpress.org/extend/themes/" target="_blank">themes</a> to its ease of <strong>installation</strong> and maintenance, there is much to like! </p>
<p>Personally, I use WordPress for several blogs and we even use WordPress for <strong>this here</strong> blog!</p>
<p>WordPress also has the advantage of already being familiar to many folks, of both the technical and (very) <strong>non-technical</strong> variety, so the <strong>learning curve</strong> is even smaller. </p>
<p>Drupal or WordPress for our global blogging needs is not a clear cut choice and so we are picking and choosing between them on a <strong>case-by-case</strong> basis. In each case there are several criteria that come into play:</p>
<p><em>Integration with WGBH.org</em></p>
<p>The first question is just how tightly the proposed blog is to be integrated with WGBH.org. Does it need to <strong>look and feel</strong> like the rest of the site? Does it need to pull/display/reference content from the main WGBH site? Should its content show up in searches on WGBH.org? Basically, the more <strong>tightly integrated</strong> it needs to be, the more we lean towards <strong>Drupal</strong>, since everything would be in the same content management system.</p>
<p><em>Development Needs</em></p>
<p>Does the WGBH <strong>Development</strong> (fundraising) department have requirements for the blog, such as being able to capture site visitor <strong>information and interactions</strong> (e.g. email addresses, comments, etc.)? Will the site require a <strong>login</strong>? Since our Drupal site will eventually be integrated with our CRM and membership applications (and support<strong> single sign on</strong> across these apps), Drupal is more attractive if Development imposes such needs.</p>
<p><em>Degree of Ownership</em></p>
<p>Does WGBH Online truly <strong>own</strong> this blog, as in is responsible for look and feel, content, and technical support and maintenance? Or is the blog really owned by a separate group with WGBH and WGBH Online is mainly providing <strong>technical support</strong>? In the former case we would go with Drupal; in the latter we <em>may</em> go with WordPress, depending on some of the other criteria mentioned here.</p>
<p><em>Flexibility</em></p>
<p>How <strong>flexible</strong> are the requirements, particularly pertaining to look and feel? Does the blog need a <strong>custom theme</strong>? Or can it use an existing, off the shelf theme? Are there special (and rigid) requirements outside traditional blog functionality? Essentially the more custom coding work that my group will have do the more likely we are to use Drupal. If we are going to use WordPress, we don&#8217;t want to spend much time writing custom code or themes for it. Any <strong>heavy technical lifting</strong> should remain in the Drupal realm.</p>
<p><em>Time to launch</em></p>
<p>How <strong>quickly</strong> does it need to be up and running? If it has to be ready to go soon - and assuming the type of flexibility mentioned above - WordPress is more attractive. The set up time can be quicker and the user learning curve smaller, in general. But, then again, we try not to let time constraints dictate everything, if we feel a little more time will lead to a better solution (like implementing in Drupal).</p>
<p>These are just some of the questions that we are starting to ask when approached with projects tangential to WGBH.org. We&#8217;re still trying to figure this out as we go along. As always we reserve the right to <strong>change our minds</strong> in the future&#8230;</p>
<p>Anybody else wrestling with this sort of dilemma? Please share&#8230;</p>
<p>Hope everyone has (or had) a great Thanksgiving!</p>
]]></content:encoded>
			<wfw:commentRss>http://devblog.wgbh.org/2008/11/26/blogging-drupal-or-wordpress/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Pass the Aspirin</title>
		<link>http://devblog.wgbh.org/2008/10/24/pass-the-aspirin/</link>
		<comments>http://devblog.wgbh.org/2008/10/24/pass-the-aspirin/#comments</comments>
		<pubDate>Fri, 24 Oct 2008 18:23:07 +0000</pubDate>
		<dc:creator>Phil</dc:creator>
		
		<category><![CDATA[Drupal]]></category>

		<category><![CDATA[PHP]]></category>

		<category><![CDATA[Television]]></category>

		<category><![CDATA[Views]]></category>

		<category><![CDATA[tags]]></category>

		<guid isPermaLink="false">http://devblog.wgbh.org/?p=102</guid>
		<description><![CDATA[For those of us in the northern hemisphere, fall has arrived! In between raking up and burning piles of leaves (and useless 401K statements), we here at WGBH Online have continued to fine tune our new(ish) TV Programs and Schedules pages.
As you may recall, not long after launch in August, we began to revisit the [...]]]></description>
			<content:encoded><![CDATA[<p>For those of us in the <strong>northern hemisphere</strong>, <strong>fall</strong> has arrived! In between raking up and burning piles of <strong>leaves</strong> (and useless <strong>401K statements</strong>), we here at <strong>WGBH Online</strong> have continued to fine tune our new(ish) <strong>TV Programs and Schedules</strong> pages.</p>
<p><a href="http://devblog.wgbh.org/2008/09/08/tag-youre-it/" target="_blank">As you may recall</a>, not long after launch in August, we began to revisit the whole notion of how we&#8217;re <strong>tagging</strong> our TV programs and episodes. The main reason was to improve the way we generate lists of <strong>related programs</strong>, so as to suggest to visitors other shows they might like. Our initial approach was simple: just tag the programs (not individual episodes) and use a  <strong>Drupal view</strong> to generate a list of up to three related programs.</p>
<p>But this soon proved restrictive. Sure, <a href="http://wwd.wgbh.org/tv/program/frontline" target="_blank">Frontline</a> is a <strong>News and Public Affairs</strong> program, but individual shows in the series can be about different things (<a href="http://wwd.wgbh.org/tv/program/frontline/growing-online" target="_blank">technology</a>, <a href="http://wwd.wgbh.org/tv/program/frontline/choice-2008" target="_blank">politics</a>, <a href="http://wwd.wgbh.org/tv/program/frontline/medicated-child" target="_blank">science</a>). So, we wanted to be able to capture this more detailed level of information and use it to generate more useful lists of related programs for our visitors.</p>
<p>After much thought and discussion (not to mention <strong>headaches</strong>), we came up with an expanded tagging scheme and more sophisticated program matching logic, which has now been implemented on the site. Here&#8217;s what we did:</p>
<p>We renamed our existing TV Program Genre vocabulary to <strong>TV Program Primary Genres</strong>. </p>
<p><a href="http://www.flickr.com/photos/wgbh_devblog/2969988500/" target="_blank"><img src="http://devblog.wgbh.org/wp-content/uploads/2008/10/tv_pp_genres.jpg" alt="TV Program Primary Genres" title="TV Program Primary Genres" width="500" height="245" class="alignnone size-full wp-image-107" /></a></p>
<p>The terms remained the same (a small set of high level classifications) and these are still only applied at the program level.</p>
<p>We then added a <strong>new</strong> vocabulary that can be applied to both TV programs and episodes: <strong>TV Program/Episode Secondary Genres</strong>.</p>
<p><a href="http://www.flickr.com/photos/wgbh_devblog/2969988532/in/photostream/" target="_blank"><img src="http://devblog.wgbh.org/wp-content/uploads/2008/10/tv_ps_genres.jpg" alt="TV Program/Episode Secondary Genres" title="TV Program/Episode Secondary Genres" width="500" height="391" class="alignnone size-full wp-image-109" /></a></p>
<p>This secondary list has many more terms that now allow for a more sophisticated level of classification. tags applied at the program level apply to all episodes in a series. Tags applied at the episode level are only applicable to that particular episode.</p>
<p>Once we had that in place we then had to think about how, using these tags and given a single program episode, we would define rules for identifying &#8220;related&#8221; programs and episodes. </p>
<p>This is where the <strong>aforementioned headaches</strong> started to kick in.</p>
<p>Once you started to think about it, all sorts of questions cropped up, like, which carries more weight, matching primary genre tags or secondary genre tags (or should they count equally)? Or, assuming two related programs have the same tags as the target episode, how to break the tie? Or, do we match an episode within one series to other episodes in that series or restrict it to episodes of other series?</p>
<p><strong>Pass the aspirin</strong>, because I&#8217;m getting a headache just thinking about it again.</p>
<p>Luckily, we have some <strong>fine folks</strong> working here who sat down and really noodled through this to come up with some <strong>matching logic</strong>. When written out, the matching rules looked something like this:</p>
<p>1. Match at the episode level<br />
2. Cull only from upcoming or recently-aired episodes<br />
3. Look for most tag matches, with all tags equally weighted<br />
4. Only allow one episode per program/series to appear in &#8220;You Might Also Like&#8221; box<br />
5. In a tie, give priority to episodes with same &#8220;Program Primary&#8221; tag<br />
6. If still a tie, give priority to episodes with exact same tag makeup (i.e. both have only one Primary tag)<br />
7. If still a tie, give priority to the episode with soonest upcoming airing.</p>
<p>The idea was then to use the tags and these rules to generate up to <strong>three matches</strong> for each episode to display in the &#8220;<strong>You might also like</strong>&#8221; block in the right hand rail.</p>
<p>Well, up to three matches, <em>unless</em> there were more than three episodes with the <strong>exact same tag structure</strong> as the target episode. In that case, we will display up to <strong>five</strong> such matches.</p>
<p><strong>No sweat</strong>!</p>
<p>In order to actually implement this, we could no longer just spit out the results from a view. <strong>Nope</strong>. Instead, we had to jump through a whole bunch of <strong>hoops</strong>. Here&#8217;s the thumbnail sketch of the implementation:</p>
<p>1. Given the tags for a target episode, query a <strong>view of TV programs</strong>, fetching all programs that match <strong>at least one</strong> Program Primary or Secondary tag.</p>
<p>2. Filter this list of programs, including only programs with an airing in our <strong>schedule data window</strong> (one week back, two weeks ahead). </p>
<p>3. Then count the <strong>exact</strong> number of tag matches and calculate a <strong>matching score</strong> for each program, based on the above rules. Then store the program in an array.</p>
<p><strong>NOTE</strong>: <em>I won&#8217;t go into the exact matching score formula here. Suffice it to say we came up with a formula that encapsulates the above matching and ordering rules. Please pass the aspirin again&#8230;</em></p>
<p>4. Next query a <strong>view of TV episodes</strong>, fetching all episodes that match at least one Episode Secondary genre of the episode in question.</p>
<p>5. Filter this list of episodes, including only those with an airing in our schedule data window. For each one count the exact number of matching genre tags for the episode and calculate the matching score. See if the episode&#8217;s parent program is already in the array of matching programs. If so, replace it with this episode if the matching score is <strong>higher</strong>.</p>
<p>6. Given the final array of matching episodes, <strong>reorder the array</strong> by the matching scores and display the top three (or five) entries!</p>
<p>The resulting <strong>PHP code</strong> to implement all of this ran to about <strong>240 lines</strong> and looked a little something like this:</p>
<p><a href="http://www.flickr.com/photos/wgbh_devblog/2969988550/in/photostream/" target="_blank"><img src="http://devblog.wgbh.org/wp-content/uploads/2008/10/related_program_code.jpg" alt="Related Program Code" title="Related Program Code" width="500" height="372" class="alignnone size-full wp-image-115" /></a></p>
<p>All that just to generate <strong>this</strong> on the front end:</p>
<p><a href="http://www.flickr.com/photos/wgbh_devblog/2969143215/in/photostream/" target="_blank"><img src="http://devblog.wgbh.org/wp-content/uploads/2008/10/related_programs_block.jpg" alt="Related Programs Block" title="Related Programs Block" width="142" height="118" class="alignnone size-full wp-image-116" /></a></p>
<p>Anybody know the <strong>limit</strong> on the number of aspirin you can take in one day?</p>
]]></content:encoded>
			<wfw:commentRss>http://devblog.wgbh.org/2008/10/24/pass-the-aspirin/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Site Maintenance Maintenance</title>
		<link>http://devblog.wgbh.org/2008/10/10/site-maintenance-maintenance/</link>
		<comments>http://devblog.wgbh.org/2008/10/10/site-maintenance-maintenance/#comments</comments>
		<pubDate>Fri, 10 Oct 2008 17:50:26 +0000</pubDate>
		<dc:creator>Phil</dc:creator>
		
		<category><![CDATA[Apache]]></category>

		<category><![CDATA[Drupal]]></category>

		<category><![CDATA[MySQL]]></category>

		<category><![CDATA[SVN]]></category>

		<category><![CDATA[database]]></category>

		<guid isPermaLink="false">http://devblog.wgbh.org/2008/10/10/site-maintenance-maintenance/</guid>
		<description><![CDATA[One great thing about Drupal is being able to easily put your site into site maintenance mode. For example, if you need to perform some site maintenance work (like installing core or contributed module code updates) you can easily put the site into this mode by clicking a button on the following form:

What this will [...]]]></description>
			<content:encoded><![CDATA[<p>One great thing about <strong>Drupal</strong> is being able to easily put your site into <strong>site maintenance mode</strong>. For example, if you need to perform some site maintenance work (like installing core or contributed module <strong>code updates</strong>) you can easily put the site into this mode by clicking a button on the following form:</p>
<p><a href="http://www.flickr.com/photos/wgbh_devblog/2928970939/" target="_blank"><img id="image100" src="http://devblog.wgbh.org/wp-content/uploads/2008/10/site_maintenance_form.jpg" alt="Site Maintenance Form" /></a></p>
<p>What this will do is then direct all <strong>anonymous</strong> and <strong>non-admin users</strong> to a page using your chosen theme with a message that you write, which you plug into the message box. For <a href="http://www.wgbh.org" target="_blank">WGBH.org</a>, the page looks like this:</p>
<p><a href="http://www.flickr.com/photos/wgbh_devblog/2928970907/in/photostream/" target="_blank"><img id="image101" src="http://devblog.wgbh.org/wp-content/uploads/2008/10/site_down.jpg" alt="Site Down" /></a></p>
<p>So - <strong>easy</strong>!</p>
<p>However, this page can&#8217;t be used for some types of site maintenance, like, for example, maintenance work that takes the <strong>database offline</strong>. No database, no Drupal-generated site maintenance page. <strong>Bummer</strong>.</p>
<p>We recently faced this problem when our fine friends in the <strong>WGBH IT department</strong> needed to do some <strong>MySQL</strong> maintenance work (they wanted to do a little cleanup and reorganization of the database files on the production server). Since this type of work comes up now and again, I wanted to devise an <strong>easy</strong> way to post the same site down page that all requests for the site would get directed to, with the minimal amount of work, so IT could incorporate it into their process for future maintenance work. I wanted a simple process to make everybody&#8217;s life as easy as possible.</p>
<p>My first thought was to have an alternate <strong>Apache config file</strong> for the site, which would point to a different <strong>document root</strong> that stored the site down code and graphics. This would work well enough, but would require stopping Apache and then restarting it using the new configuration file. Not too complicated, but still more steps then I wanted.</p>
<p>After some <strong>coffee</strong> and <strong>deep thinking</strong> the solution popped right out me: <strong>symbolic links</strong>! </p>
<p>The document root for the site is actually a symbolic link to the <strong>real</strong> directory of Drupal code. So, I figured, if we just <strong>change</strong> that link to point to a new document root, containing the site down code, then - <strong>bingo</strong> - we&#8217;d be done! That&#8217;s even easier than using an alternative Apache conf file.</p>
<p>So, this is what we did. There was just one other fine point here: <strong>where</strong> to put the site down directory?</p>
<p>Initially, I figured on a directory <strong>completely separate</strong> from the <strong>Drupal tree</strong>. However, that would then mean we&#8217;d need to copy all the required <strong>images</strong> and <strong>style sheets</strong> from the Drupal tree to the site down tree, making <strong>future maintenance</strong> a bit more work (we do tweak the site down page according to what&#8217;s going on at the time). Kind of a pain.</p>
<p>What we did instead was put the site down directory <strong>within</strong> the Drupal directory tree. That way the page code could reference the appropriate images and style sheets. Plus, that code then gets managed via <strong>SVN</strong> as part of our Drupal code base. The final approach, then, involved the following:</p>
<p>* Create a <em>site_down</em> directory under the top-level Drupal directory.<br />
* Create an <em>index.html</em> file in that directory that contains the source code from the Drupal-generated site maintenance page.<br />
* Tweak the <strong>source code</strong> to use absolute, rather than relative, links to images and CSS files.<br />
* Create an <em>.htaccess</em> file to make sure all page requests get redirected to the <em>index.html</em> page.</p>
<p><strong>Voila!</strong> Using this method, all IT had to do before performing their database maintenance was change the docroot&#8217;s symbolic link to point to the site down directory. Then, when the work was done, <strong>change the link back</strong>. No need to even stop/restart Apache.</p>
<p>So - once again - <strong>easy</strong>!</p>
<p>If only <strong>fixing the economy</strong> were so simple&#8230;</p>
<p>Do you have a different method for handling this sort of thing (or for fixing the economy)? Talk amongst yourselves then <strong>please share</strong>!</p>
]]></content:encoded>
			<wfw:commentRss>http://devblog.wgbh.org/2008/10/10/site-maintenance-maintenance/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Anatomy of An Upgrade</title>
		<link>http://devblog.wgbh.org/2008/09/19/anatomy-of-an-upgrade/</link>
		<comments>http://devblog.wgbh.org/2008/09/19/anatomy-of-an-upgrade/#comments</comments>
		<pubDate>Fri, 19 Sep 2008 17:54:34 +0000</pubDate>
		<dc:creator>Phil</dc:creator>
		
		<category><![CDATA[CCK]]></category>

		<category><![CDATA[Date]]></category>

		<category><![CDATA[Drupal]]></category>

		<category><![CDATA[Views]]></category>

		<guid isPermaLink="false">http://devblog.wgbh.org/2008/09/19/anatomy-of-an-upgrade/</guid>
		<description><![CDATA[One of the great things about open source software is, obviously, that there are all of these great people out there writing code and making it available to everyone. In the world of Drupal this means that there are tons of great contributed modules that are pretty much invaluable to a site like WGBH.org, like [...]]]></description>
			<content:encoded><![CDATA[<p>One of the great things about <strong>open source</strong> software is, obviously, that there are all of these great people out there writing code and making it available to <strong>everyone</strong>. In the world of <strong>Drupal</strong> this means that there are tons of great <a href="http://drupal.org/project/Modules" target="_blank">contributed modules</a> that are pretty much invaluable to a site like <a href="http://wwd.wgbh.org" target="_blank">WGBH.org</a>, like <a href="http://drupal.org/project/views" target="_blank">Views</a> and <a href="http://drupal.org/project/cck" target="_blank">CCK</a>.</p>
<p>It also means that those of us who have to maintain a Drupal site need to keep up with the <strong>improvements</strong> and <strong>changes</strong> to all of this code by periodically upgrading the code bade. Often times this usually just means grabbing the updated code and running the upgrade script. Things <strong>usually</strong> go pretty smoothly.</p>
<p>Except when they don&#8217;t.</p>
<p>Take, for example, the other day when I saw (thanks to the <a href="http://drupal.org/project/cvs_deploy" target="_blank">CVS Deploy</a> module) that there was a new <strong>release candidate</strong> version of CCK (from <em>6.x-2.0-rc6</em> to <em>6.x-2.0-rc7</em>). I went ahead and grabbed the new code and ran the upgrade script against my development installation (don&#8217;t want to do this on the live system!). Then I checked out our <a href="http://wwd.wgbh.org/tv/schedules" target="_blank">TV schedules grid</a> and it looked like so:</p>
<p><a href="http://www.flickr.com/photos/wgbh_devblog/2870035721/" target="_blank"><img id="image96" src="http://devblog.wgbh.org/wp-content/uploads/2008/09/cck_upgrade.jpg" alt="After Upgrading CCK" /></a></p>
<p>Using my <strong>years</strong> of <strong>web development</strong> experience and my highly developed <strong>technical acumen</strong> I quickly deduced that <strong>something was wrong</strong>! The quesiton was, what?</p>
<p>So I went to the <a href="http://drupal.org/project/issues/cck?categories=support&#038;states=all" target="_blank">issue queue for CCK</a> and found that, indeed, the latest RC version of CCK required <a href="http://drupal.org/node/306710#comment-1005984" target="_blank">the latest development version of Views</a>.</p>
<p>OK, since I&#8217;m reluctant to use <strong>development snapshots</strong> of modules, I figured that there would probably be a new RC version of Views coming out soon with the required fixes to allow CCK and Views to once again <strong>play nice</strong> together. Sure enough, in another day or two there was a new version of Views (<em>6.x-2.0-rc1</em> to <em>6.x-2.0-rc2</em>). I then upgraded Views (again, on the development suite) and got this:</p>
<p><a href="http://www.flickr.com/photos/wgbh_devblog/2870050761/" target="_blank"><img id="image97" src="http://devblog.wgbh.org/wp-content/uploads/2008/09/views_upgrade.jpg" alt="After Upgrading Views" /></a></p>
<p>Hmmm. <strong>Better</strong>, but still not quite right. Basically, there seemed to be a problem with passing in <strong>date arguments</strong> to the view used to generate the schedule grid; there was a similar problem with the <a href="http://wwd.wgbh.org/tv/schedules/fullday" target="_blank">full day schedules</a>.</p>
<p>Soooo, I then went to the <a href="http://drupal.org/project/issues/views?categories=support&#038;states=all" target="_blank">Views issue queue</a> and, sure enough, found out <a href="http://drupal.org/node/308423" target="_blank">there was a problem</a> with the new RC release of Views and it&#8217;s interaction with the <strong>Date module</strong>. Namely, that the <strong>date filters</strong> normally available to Views were now missing, which is what I saw.</p>
<p>Once again I figured that, rather than go to the development version of Date, I&#8217;d just <strong>hang tight</strong> and see if a new RC of Date was released soon. <strong>Bing</strong>, <strong>bang</strong>, <strong>boom</strong> - the next day it was! After then upgrading Date from <em>6.x-2.0-rc2</em> to <em>6.x-2.0-rc3</em> (and also upgrading Views <strong>again</strong>, as a new RC was released in the meantime, to <em>6.x-2.0-rc3</em>) and checking the site I saw&#8230;. this!</p>
<p><a href="http://www.flickr.com/photos/wgbh_devblog/2870058359/" target="_blank"><img id="image98" src="http://devblog.wgbh.org/wp-content/uploads/2008/09/upgrade_complete.jpg" alt="After Upgrading Date" /></a></p>
<p><strong>Whew</strong>! Everything was back to normal.</p>
<p>The lesson here? Some might look at this and say, boy, <strong>what a pain in the rear</strong> this open source stuff is! But <strong>not me</strong>. On the contrary, I think it demonstrates the greatness of open source and the community of people out there responding to problems, fixing bugs and generally making my life much easier. Sure, <strong>patience</strong> is sometimes required, but that&#8217;s a very small price to pay, in my opinion.</p>
<p>So, a <strong>big thanks</strong> to all the folks who build Drupal and Views and CCK and Date and all of those other modules! Well done, folks.</p>
]]></content:encoded>
			<wfw:commentRss>http://devblog.wgbh.org/2008/09/19/anatomy-of-an-upgrade/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Tag, You’re It!</title>
		<link>http://devblog.wgbh.org/2008/09/08/tag-youre-it/</link>
		<comments>http://devblog.wgbh.org/2008/09/08/tag-youre-it/#comments</comments>
		<pubDate>Mon, 08 Sep 2008 16:11:33 +0000</pubDate>
		<dc:creator>Phil</dc:creator>
		
		<category><![CDATA[Television]]></category>

		<category><![CDATA[Views]]></category>

		<category><![CDATA[tags]]></category>

		<guid isPermaLink="false">http://devblog.wgbh.org/2008/09/08/tag-youre-it/</guid>
		<description><![CDATA[The new WGBH TV Programs and Schedules module has been up and running on Drupal for almost a month now and - knock on wood - everything is working great! In fact, things have been going so well, operationally, at least, that all has been &#8230; quiet!
Quiet is good.
Now that this phase of the project [...]]]></description>
			<content:encoded><![CDATA[<p>The new <strong>WGBH TV Programs and Schedules</strong> module has been up and running on Drupal for almost a month now and - <a href="http://www.flickr.com/photos/wgbh_devblog/2840178182/" target="_blank">knock on wood</a> - everything is working great! In fact, things have been going so well, operationally, at least, that all has been &#8230; <strong>quiet</strong>!</p>
<p>Quiet is good.</p>
<p>Now that this phase of the project is all done we are turning our full attention towards the real goal: porting <strong>all</strong> of <a href="http://www.wgbh.org" target="_blank">WGBH.org</a> to <strong>Drupal</strong> and completely overhauling the information architecture and user interface. We&#8217;re currently busy doing <strong>content audits</strong>, <strong>wireframes</strong>, <strong>schedules</strong> and all that sort of fun site redesign stuff. Nothing is ready yet for actual development.</p>
<p>In the meantime, we&#8217;re also addressing a few small desired <strong>functionality changes</strong> to TV programs and schedules that we chose not to address during the build. At the top of the list is the way that we generated the list of related (i.e. <strong>You might also like</strong>) programs on our episode pages.</p>
<p><a href="http://www.flickr.com/photos/wgbh_devblog/2840119480" target="_blank"><img id="image93" src="http://devblog.wgbh.org/wp-content/uploads/2008/09/related_programs.jpg" alt="You Might Also Like" /></a></p>
<p>Currently, this list is generated <strong>automatically</strong> using <strong>tags</strong> applied at the <strong>program</strong> (series) level. We developed a simple <strong>TV Program Genre</strong> vocabularly to potentially apply to each program.</p>
<p><a href="http://www.flickr.com/photos/wgbh_devblog/2839313201" target="_blank"><img id="image94" src="http://devblog.wgbh.org/wp-content/uploads/2008/09/tv_program_genres.jpg" alt="TV Program Genres" /></a></p>
<p><strong>Content producers</strong> ultimately have the ability to override the automatically generated list if they like, but, for the most part, what you see is generated on the fly based on the tags.</p>
<p>The upshot here is that by only applying tags at the program/series level, each <strong>episode</strong> of a given series (e.g. all NOVA episodes) will display the <strong>same set</strong> of related programs. So while NOVA may generally be a science program, a given program may be focused on, say, a <a href="http://wwd.wgbh.org/tv/program/nova/einsteins-big-idea" target="_blank">physics problem</a>, but this isn&#8217;t reflected in the related programs list. Our tagging scheme doesn&#8217;t currently allow us to relate programs on a more granular level than the simple genres we&#8217;ve defined.</p>
<p>Initially, we had planned to support tagging at the <strong>episode level</strong> for the initial build for use in generating the related program list. However, when we sat down to hash out how it should work it quickly became clear that using tags at both the program and episode level made things <strong>far more complex</strong>.</p>
<p>For example, right now, with tags only at the program level, it&#8217;s pretty simple. On a given episode page, we fetch the tags on the parent program, then <strong>using a view</strong>, generate a list of other programs with the same tag(s) and display three of those. <strong>Easy-peasy</strong>!</p>
<p>But once you throw episodes into the mix you now have to make decisions on issues, like, do matches on program or episode level tags count more? Should we weigh episodes with matching tags that are part of the same series more - or less - than <strong>similarly tagged</strong> episodes from other series? Etc and etc.</p>
<p>So, we <strong>tabled the issue</strong> for the first release and just went with program level tags. Now we want to start tagging episodes and come up with rules to generate a more granular list of related programs. That&#8217;s something we&#8217;re hoping to work out this week.</p>
<p>Have you run into a similar problem? Any thoughts on how best to do this? <strong>Speak now</strong>!</p>
]]></content:encoded>
			<wfw:commentRss>http://devblog.wgbh.org/2008/09/08/tag-youre-it/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Keep on Searchin’</title>
		<link>http://devblog.wgbh.org/2008/08/22/keep-on-searchin/</link>
		<comments>http://devblog.wgbh.org/2008/08/22/keep-on-searchin/#comments</comments>
		<pubDate>Fri, 22 Aug 2008 17:05:46 +0000</pubDate>
		<dc:creator>Pete</dc:creator>
		
		<category><![CDATA[Drupal]]></category>

		<category><![CDATA[Television]]></category>

		<category><![CDATA[search]]></category>

		<guid isPermaLink="false">http://devblog.wgbh.org/2008/08/22/keep-on-searchin/</guid>
		<description><![CDATA[Visitors to WGBH.org often come to the site seeking out information about a specific TV program. Maybe they enjoy Frontline, and they want to find upcoming episodes.  Or they caught the last 5 minutes of a show about hot dogs, but they can&#8217;t remember the name of the program and they want to know [...]]]></description>
			<content:encoded><![CDATA[<p>Visitors to WGBH.org often come to the site seeking out information about a specific TV program. Maybe they enjoy <a href="http://wwd.wgbh.org/tv/program/frontline">Frontline</a>, and they want to find upcoming episodes.  Or they caught the last 5 minutes of a show about <a href="http://wwd.wgbh.org/tv/program/hot-dog-program">hot dogs</a>, but they can&#8217;t remember the name of the program and they want to know if will be airing again.</p>
<p>So one of the requirements of the TV Programs and Schedules was that we implement a scoped search â€“ an advanced search page that would only return a list of TV episodes in the results.</p>
<p><img alt="TV Search - NOVA" id="image91" src="http://devblog.wgbh.org/wp-content/uploads/2008/08/picture-1.png" /><br />
In the past, I&#8217;ve used some interesting modules that modify or expand upon the core Drupal search.  The <a href="http://drupal.org/project/views_fastsearch">Views Fast Search</a> module offers the flexibility to define the content you perform a search on, which really enhances the searching capabilities.  Unfortunately, the module is only available for Drupal 5 (although parts of Views Fast Search made it into Drupal 6). Drupal&#8217;s built-in advanced search form is also capable of limiting a search query to specific content types &#8212; there are <a href="http://drupal.org/node/141788">several different approaches to achieving this</a>.  And the <a href="http://drupal.org/project/search_block">Restricted Search</a> module allows administrators to exclude content types from the search index entirely.</p>
<p>But simply blocking other content types from the query won&#8217;t quite cut it for several reasons, and excluding content from the search index would not be a good long-term solution, because eventually we will need to make use of the full site search in addition to this scoped search.  Also, just to spice things up a bit, the additional criteria for the TV search specified that:</p>
<ul>
<li>â€¢ The search should only return TV Episode nodes.  The Airing and Program nodes do not show up in the search results, although they do play a factor in the indexing of the Episode nodes and the ordering of the results.</li>
<li>â€¢ Search results should include the program and episode title, a brief description, a link to the episode page on WGBH.org, and a link to the program web site, if there is one.</li>
<li>â€¢ In ordering the search results, keyword relevance is the most import factor, but upcoming airings are a close second.  For example, a search for &#8220;Curious George&#8221; would yield a long list of episodes for that program, but the episode that is airing this afternoon would be at the top of the list, followed by the episode airing tomorrow morning, and so on.</li>
</ul>
<p>The real heavy lifting of Drupal&#8217;s search mechanism can be broken down into two areas: the indexing of the nodes (<a href="http://api.drupal.org/api/function/hook_update_index/6">hook_update_index()</a>) and search query (<a href="http://api.drupal.org/api/function/hook_search/6">hook_search()</a>).  Both of which involve some code that quickly made my head hurt.  But as luck would have it, I pulled out our copy of <a href="http://www.drupalbook.com/">Pro Drupal Development</a> and discovered a whole chapter dedicated to search.  That, combined with Robert Douglass&#8217; very detailed blog post, <a href="http://acquia.com/blog/drupal-search-how-indexing-works"> Drupal Search: How indexing works</a>, worked wonders like a big bottle of ibuprofen.</p>
<p><span style="font-weight: bold">Indexing</span></p>
<p>When cron runs, Drupal will index any new nodes, and reindex nodes that have changed since the last run.  The title and body of a node, with all HTML tags intact, are parsed &#8212; Drupal uses the HTML tags to give additional weight to words.  Text in an H1 tag must be important, so those words would carry a very high score, while linked text would carry a lower score (although higher than plain text). Words that are bolded, italicized, or underlined also get a small boost.</p>
<p>This is why a node with &#8220;Nova&#8221; in the title scores higher than a node with &#8220;bossa-nova&#8221; in the description, when the search term is &#8220;Nova&#8221;.</p>
<p><span style="font-weight: bold">Overriding the Index</span></p>
<p>For our purposes, when we index an Episode node, we also want to include the title and description of the parent Program in that index.  It is entirely possible that an episode of Nova, for example, might not even mention the word &#8220;Nova&#8221; in the title or description, so we must include the Program title and description.</p>
<p>To achieve this we use <a href="http://api.drupal.org/api/function/hook_update_index/6">hook_update_index()</a> to loop through any new Episodes.  We load both the Episode node and the parent Program node, and then build a string with both the Program and Episode titles in H1 tags, and append the body of each node with all HTML tags intact.  That string is then passed off to <a href="http://api.drupal.org/api/function/search_index/6">search_index()</a> where each term is counted, scored, and added to the index.</p>
<p><span style="font-weight: bold">Search Query: Ordering the Results</span></p>
<p>As the requirements specified, the results of the search query should be weighted with keyword relevance and upcoming airing date being the primary factors in determining the order.</p>
<p>Keyword relevance, of course, is a standard part of the Drupal search ranking mechanism, but to affect the score based on upcoming airings, we construct an additional ranking query.  That query, which returns the difference of the upcoming airing timestamp and the end of the data window (or 1 if there are no upcoming airings), is passed to Drupal&#8217;s <a href="http://api.drupal.org/api/function/do_search/6">do_search()</a> function.  An array of node IDs is returned and passed off to the theme level.</p>
<p>One very nice thing about Drupal&#8217;s search is that this custom search was developed without impacting the existing full site search capability.  No core code needed to be touched, and in the future we can add scoped search to other areas (like Radio) by replicating several functions and adding a few case statements.</p>
]]></content:encoded>
			<wfw:commentRss>http://devblog.wgbh.org/2008/08/22/keep-on-searchin/feed/</wfw:commentRss>
		</item>
		<item>
		<title>The Eagle Has Landed!</title>
		<link>http://devblog.wgbh.org/2008/08/15/the-eagle-has-landed/</link>
		<comments>http://devblog.wgbh.org/2008/08/15/the-eagle-has-landed/#comments</comments>
		<pubDate>Fri, 15 Aug 2008 15:24:14 +0000</pubDate>
		<dc:creator>Phil</dc:creator>
		
		<category><![CDATA[Drupal]]></category>

		<category><![CDATA[Television]]></category>

		<guid isPermaLink="false">http://devblog.wgbh.org/2008/08/15/the-eagle-has-landed/</guid>
		<description><![CDATA[I don&#8217;t want to belabor the whole space travel analogy, but, what the heck - life is short! Let&#8217;s belabor-away!
Earlier this week we took one small step for TV schedules and one giant leap for WGBH.org by officially launching the new Drupal-based TV Programs and Schedules section of WGBH.org!

Aside from finding a significant bug literally [...]]]></description>
			<content:encoded><![CDATA[<p>I don&#8217;t want to belabor the whole <strong>space travel</strong> analogy, but, what the heck - life is short! Let&#8217;s belabor-away!</p>
<p>Earlier this week we took <strong>one small step</strong> for TV schedules and <strong>one giant leap</strong> for <a href="http://www.wgbh.org" target="_blank">WGBH.org</a> by officially launching the new <strong>Drupal</strong>-based <a href="http://wwd.wgbh.org" target="_blank">TV Programs and Schedules section of WGBH.org</a>!</p>
<p><a href="http://www.flickr.com/photos/wgbh_devblog/2765708638/" target="_blank"><img id="image88" src="http://devblog.wgbh.org/wp-content/uploads/2008/08/tv_schedules_launched.jpg" alt="New WGBH.org TV Schedules Launched!" /></a></p>
<p>Aside from finding a <strong>significant bug</strong> literally <strong>10 minutes</strong> before launch, it has all gone quite smoothly! Drupal is behaving like a champ and everything is humming along.</p>
<p>In fact, for a <strong>worry-wart</strong> like me, you could almost say it&#8217;s going too well.</p>
<p>So, now I&#8217;ve <strong>jinxed</strong> everything. Oh well. Like I said, life is short.</p>
<p>The list of people to thank for making this all happen so smoothly is long. At the top of the list is my friend and co-developer <strong>Pete Bull</strong> who did a great job from day one and has <strong>saved my bacon</strong> on a bunch of occasions already (including tracking down and fixing that aforementioned last minute pre-launch bug). Our good buddies in the <strong>IT department</strong>, especially, did a <strong>ton</strong> of work to get a whole new development, testing and production infrastructure in place for us, so a big thanks to <strong>Peter M.</strong>, <strong>Bruce D.</strong>, <strong>Sarah</strong>, <strong>Larissa</strong> and all those folks. You guys and gals <strong>rock</strong>.</p>
<p>Also, our project manager <strong>Louise</strong>, designer <strong>Tyler</strong>, WGBH Online Director <strong>Darleen</strong> and all of our patient content producers were great to work with under the sometimes-trying circumstances. Finally, but not leastly, our former director <strong>Bruce K.</strong> and my old buddy and our former designer <strong>Peter L.</strong> (note: WGBH apparently has a rule about employing a large number of guys named &#8220;Peter&#8221;) played big roles early on in the process.</p>
<p>There were also any number of outside folks who also helped out at different stages, including Drupal-gods <a href="http://robshouse.net/" target="_blank">Robert Douglass</a> and <a href="http://drupal.org/moshe" target="_blank">Moshe Weitzman</a> and the fine folks at <a href="http://www.lullabot.com/" target="_blank">Lullabot</a>. Of course, there&#8217;s also all the faceless folks in the <a href="http://www.drupal.org" target="_blank">Drupal community</a> who contribute modules, create patches and document all sort of helpful things. We love <strong>open source</strong>!</p>
<p>Whew! See, lots of people have contributed here.</p>
<p>Now, of course, the real fun begins: a <strong>full blown overhaul</strong> of all of WGBH.org, including new <strong>information architecture</strong>, <strong>look and feel</strong> and, of course, a complete port of, well, everything to Drupal.</p>
<p>Should be <strong>no sweat</strong>!</p>
<p>Sadly, though, unlike for the <strong>Apollo astronauts</strong>, there will be no <strong>ticker tape parade</strong>. Maybe next time&#8230;!</p>
]]></content:encoded>
			<wfw:commentRss>http://devblog.wgbh.org/2008/08/15/the-eagle-has-landed/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
