<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

  <title><![CDATA[metade.org]]></title>
  <link href="http://blog.metade.org/atom.xml" rel="self"/>
  <link href="http://blog.metade.org/"/>
  <updated>2013-04-13T19:04:14+01:00</updated>
  <id>http://blog.metade.org/</id>
  <author>
    <name><![CDATA[Patrick Sinclair]]></name>
    
  </author>
  <generator uri="http://octopress.org/">Octopress</generator>

  
  <entry>
    <title type="html"><![CDATA[Leaving the BBC]]></title>
    <link href="http://blog.metade.org/leaving-the-bbc"/>
    <updated>2013-01-13T09:00:00+00:00</updated>
    <id>http://blog.metade.org/leaving-the-bbc</id>
    <content type="html"><![CDATA[<p>I joined the BBC as a software engineer in Future Media for Audio &amp; Music Interactive just over 5 years ago.</p>

<p>It was just before <a href="http://derivadow.com/2007/10/18/programme-support/">the first release</a> of <a href="http://www.bbc.co.uk/programmes">BBC Programmes</a>, and it was a couple of months before the <a href="http://www.bbc.co.uk/iplayer">iPlayer</a> streaming service on the web launched in December 2007.</p>

<p>I came to the BBC because having developed a number of research prototypes in academia for a few years, I wanted to build stuff with a significant number of real users. And I&#8217;ve certainly been able to do that, having worked:</p>

<ul>
<li>on a page for each artist on <a href="http://www.bbc.co.uk/music">BBC Music</a> and <a href="http://www.bbc.co.uk/programmes/b01pfbjw#segments">clickable tracklists for programmes pages</a></li>
<li>a year at <a href="http://www.bbc.co.uk/radio1/">Radio 1</a> working on things like the <a href="http://www.bbc.co.uk/radio1/chart/singles">chart</a>, <a href="http://www.bbc.co.uk/radio1/livelounge/">live lounge</a> and getting <a href="http://www.bbc.co.uk/blogs/radio/2011/02/using_twitter_to_control_a_slot-car_race_mistajam_vs_scott_mills.html">twitter to drive Scaletrix cars</a></li>
<li>on the <a href="http://www.bbc.co.uk/blogs/bbcinternet/2011/09/radio1_homepage_software_technical.html">Radio 1/1Xtra homepage</a> project</li>
<li>on a <a href="http://www.bbc.co.uk/radio1/bigweekend/2010/">number</a> of <a href="http://www.bbc.co.uk/music/festivals/glastonbury/2011/">music</a> <a href="http://www.bbc.co.uk/music/festivals/readingandleeds/2011/">events</a> sites, both in the good old static html days and with the new <a href="http://www.bbc.co.uk/events/e9wmxj">music</a> <a href="http://www.bbc.co.uk/events/edvg9r">events</a> platform</li>
<li>on <a href="http://www.bbc.co.uk/blogs/bbcinternet/2012/10/introducing_bbc_iplayer_radio.html">the launch</a> of <a href="http://www.bbc.co.uk/radio/">iPlayer Radio</a></li>
</ul>


<p>It&#8217;s been incredible. I&#8217;ve learnt so much, not just from the technical side but also as an individual. I&#8217;ve worked with really brilliant developers, designers and editorial - making great friends along the way. I&#8217;ve worked on some amazing projects, and written code that is used by millions of users each week.</p>

<p>However, all good things must come to an end and I&#8217;ve decided it&#8217;s time for me to move on.</p>

<p>Friday was the last day at the BBC for me, and today I&#8217;m starting as a technical lead at <a href="http://www.sidekickstudios.net">Sidekick Studios</a>.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Screecha - our Music Hack Day 2012 project]]></title>
    <link href="http://blog.metade.org/screecha-our-music-hack-day-2012-project"/>
    <updated>2012-11-26T00:00:00+00:00</updated>
    <id>http://blog.metade.org/screecha-our-music-hack-day-2012-project</id>
    <content type="html"><![CDATA[<p>Last weekend I participated in another <a href="http://london.musichackday.org/2012/index.php?page=Main+page">Music Hack Day</a>.</p>

<p>I managed to convince my girlfriend, the brilliant <a href="http://www.kirstenfletcher.com/">Kirsten Fletcher</a>, to join me. Kirsten is a freelance costume designer-maker, who is more used to working on theatre and movie productions than hack days.</p>

<h2>Screecha</h2>

<p><img src="http://blog.metade.org/images/screecha.jpeg" alt="Screecha - our Music Hack Day 2012 project" /></p>

<p>Together we made <a href="https://www.hackerleague.org/hackathons/music-hack-day-london/hacks/screecha">Screecha: an interactive musical toy aimed at children</a>. It’s a puppet that can house a smart phone in it’s belly and an app to go with it.</p>

<p>Using the app, children can:
- listen to their favourite songs (using the <a href="https://developer.spotify.com/technologies/web-api/">Spotify Metadata API</a> and Cocoalibspotify)
- view the lyrics as the song plays (using <a href="http://developer.echonest.com/">Echonest</a> and <a href="http://musixmatch.com/">Musixmatch</a>)
- record their own songs and upload them to <a href="http://soundcloud.com">SoundCloud</a>
- listen to the masterpieces they&rsquo;ve previously uploaded to SoundCloud</p>

<p>As a song plays, the puppet can be manipulated to sing along with the music.</p>

<h2>The idea</h2>

<p>The idea was mostly inspired by hanging out with some close friends who have a baby. They were talking about how many children’s songs and nursery rhymes were available on Spotify, which led us to think about a Spotify app as a physical toy.</p>

<p>We then started looking on other music services for children’s songs and came across a recording of a toddler singing <a href="https://soundcloud.com/micheletharp/twinkle-twinkle-little-star">“Twinkle, Twinkle Little Star” on SoundCloud</a>. That’s when we decided that the ability of recording and saving children’s performances would add an interesting angle to the hack.</p>

<h2>Hacking with a sewing machine</h2>

<p><img src="http://blog.metade.org/images/sewing_machine.jpeg" alt="Screecha - our Music Hack Day 2012 project" /></p>

<p>While I was was doing the usual coding activities involved in a hack day (basically throwing code together until it worked), Kirsten designed and built the puppet from scratch.</p>

<p>This obviously required a fair bit of planning and organisation upfront. She had to have an idea of what the puppet would look like in order to select which materials she’d need to bring to the hack day. She had to bring in her sewing machine (the first sewing machine at a Music Hack Day!) and a big bag of fabric as well as the other tools required to make the puppet.</p>

<p><img src="http://blog.metade.org/images/pattern_cutting.jpeg" alt="Screecha - our Music Hack Day 2012 project" /></p>

<p>It was really interesting to see the process that she took. Based on a simple sketch for the design, she created a pattern: a paper template from which she made the preliminary shape for the puppet. After some tweaking, she adjusted the pattern and cut the fabric for the final puppet prototype. Then it was a matter of sewing it all together and finishing it off.</p>

<p>It really made me appreciate how lucky software and web developers have it: all we need is a laptop and internet connection and we’re effectively limited by our imagination and ability.</p>

<h2>Hacking with iOS</h2>

<p><img src="http://blog.metade.org/images/screecha_sceenshot.jpg" alt="Screecha - our Music Hack Day 2012 project" /></p>

<p>The Screecha app was actually the first time I developed a native iOS application. It was implemented using PhoneGap, so most of the user interface was developed using HTML/CSS/Javascript and Twitter Bootstrap. However, I did have to integrate <a href="https://github.com/spotify/cocoalibspotify">cocoalibspotify</a> so I did get to tinker about with some Objective C.</p>

<p>As a Hackday prototype, it was actually a bit disappointing to have developed a proof of concept that couldn’t be shared or made publicly accessible. If I had to do it again, I think I would go down the mobile webapp route using the HTML5 Audio API.</p>

<h2>Focus</h2>

<p>From the start, we had a really clear idea of what we wanted to build: a puppet and a simple app that allowed you to play music, record sounds and upload them to SoundCloud.</p>

<p>We focused on implementing just that, resisting the temptation to add more features to the app or consider hacking some hardware into the puppet - there simply wouldn’t have been enough time to complete the prototype otherwise.</p>

<p>In my experience, good hacks can be the result of lots of iteration, last minute changes and a great deal of “hacking”. With Screecha, we took a good idea and focused on implementing just the essential features.</p>

<p><em>Screecha won an award from <a href="https://twitter.com/SpotifyPlatform/status/270232939898494977">Spotify for best use of the Spotify API</a>, and an award from <a href="https://twitter.com/SoundCloudAPI/status/270216164297306112">SoundCloud</a>.</em></p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Buy a brick ]]></title>
    <link href="http://blog.metade.org/buy-a-brick"/>
    <updated>2012-03-03T00:00:00+00:00</updated>
    <id>http://blog.metade.org/buy-a-brick</id>
    <content type="html"><![CDATA[<p><img src="http://blog.metade.org/images/buyabrick.png" alt="Buy a brick " /></p>

<p>A couple of years ago I helped develop a fundraising application for the <a href="http://www.childsifoundation.org/">Child’s i Foundation</a>, a charity and worldwide community aiming to build a home for abandoned babies in Uganda.</p>

<p>At the time the charity was raising money to set up a home in Kampala, so the team at Childsi came up with <a href="http://buyabrick.childsifoundation.org/">Buy a Brick</a>, a web app where users donate from £2.50 to £500 to purchase a brick to build a virtual wall.</p>

<p>In the 2 years since it launched, the Child’s i Foundation community has bought nearly 400 bricks, raised nearly £18,000!</p>

<p>I implemented the backend of the application in Ruby on Rails, in particular the integration with the payment gateway for processing donations. It was the first (and only) e-commerce website that I’ve ever deployed and maintained - I learnt a lot!</p>

<p>Over the last couple of weeks,  we’ve been tinkering with the application so it uses the <a href="http://apimanagement.justgiving.com/">Just Giving</a> donations API instead of the original payment gateway. We ended up using (and <a href="https://github.com/mintdigital/just_giving/pull/1">patching</a>) the <a href="http://rubygems.org/gems/just_giving/">Just Giving Ruby gem</a>, so the switch over was pretty simple to implement.</p>

<p>What wasn’t so simple was upgrading an old, pre-Bundler Rails 2.2 application to Rails 2.3 and getting the right combination of gems versions to play together on Heroku! But I got there in the end…</p>

<p>The application is at <a href="http://buyabrick.childsifoundation.org/">buyabrick.childsifoundation.org/</a> and the code is all on Github: <a href="https://github.com/childsi/buyabrick/">github.com/childsi/buyabrick/</a></p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[The new BBC Radio 1 and 1Xtra homepages]]></title>
    <link href="http://blog.metade.org/the-new-radio-1-and-1xtra-homepages"/>
    <updated>2011-10-05T00:00:00+01:00</updated>
    <id>http://blog.metade.org/the-new-radio-1-and-1xtra-homepages</id>
    <content type="html"><![CDATA[<p>Last week, Radio 1 and 1Xtra launched their new homepages:
- <a href="http://www.bbc.co.uk/radio1/">http://www.bbc.co.uk/radio1/</a>
- <a href="http://www.bbc.co.uk/1xtra/">http://www.bbc.co.uk/1xtra/</a></p>

<p>I’ve <a href="http://www.bbc.co.uk/blogs/bbcinternet/2011/09/radio1_homepage_software_technical.html">written a “under-the-hood” post on the BBC Internet blog</a>, describing how we approached the technical challenges to meet the editorial ambitions for the new homepage.</p>

<p>I was on attachment with the Radio 1 and 1Xtra Interactive team when the design was conceived, and although the site was built by the <a href="http://www.madebykite.com">fantastic team at Kite</a> I’ve been heavily involved throughout it’s development.</p>

<p><img src="http://blog.metade.org/images/BBC_-_Radio_1_20110930.png" alt="The new BBC Radio 1 and 1Xtra homepages" /></p>

<p>I might be a bit biased, but I think it’s pretty special! What I’m most happy with is how we’re pushing content to the page using <a href="http://www.bbc.co.uk/blogs/radiolabs/2009/11/pushfeeds.shtml">BBC PushFeeds</a> (i.e. <a href="http://xmpp.org/about-xmpp/technology-overview/pubsub/">XMPP PubSub</a> over <a href="http://en.wikipedia.org/wiki/WebSocket">Websockets</a> or Flash as a fallback) to enable the live experience. On top of that, we’ve delivered an admin system that allows producers to promote content to the homepages within seconds.</p>

<p><img src="http://blog.metade.org/images/BBC_-_Radio_1Xtra_20111005.png" alt="The new BBC Radio 1 and 1Xtra homepages" /></p>

<p>Track now playing information has been present on the BBC national radio networks sites for a number of years, but in the new homepage they are put into the spotlight. The beautiful packshots (album art) are mainly taken from the Radio 1/1Xtra charts and playlists.  Using <a href="http://musicbrainz.org/">MusicBrainz</a> identifiers we’re able to surface content from <a href="http://www.bbc.co.uk/music">BBC Music</a>, including artist biography, latest clips and album reviews.</p>

<p><img src="http://blog.metade.org/images/image003_570.jpg" alt="The new BBC Radio 1 and 1Xtra homepages" /></p>

<p>I believe this reinvents the way the stations present themselves online, and potentially on air. Whenever something happens in the studio, it’s on the website in seconds in the form of an update, photo or live video stream. The audience’s reaction to the show can be surfaced online in the form of their texts, tweets or Facebook comments.</p>

<p>It’s opened up a new toy box of possibilities, and I’m really looking forwards to see how both the audience and the stations engage with what we’ve built.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Young Rewired State 2011]]></title>
    <link href="http://blog.metade.org/young-rewired-state-2011"/>
    <updated>2011-08-25T00:00:00+01:00</updated>
    <id>http://blog.metade.org/young-rewired-state-2011</id>
    <content type="html"><![CDATA[<p>A few weeks ago I took part in <a href="http://youngrewiredstate.org/">Young Rewired State</a> (YRS), a week long hack event aimed at young developers aged between 15 and 18 and focused around Open Data.</p>

<p>Together with <a href="http://twitter.com/cholten99">Dave</a> and <a href="http://twitter.com/kerron">Kerron</a>, I was one of the mentors at the Young Rewired Blackfriars which was hosted at <a href="http://fluxx.uk.com/">Fluxx Studios</a>. Our group started by brainstorming during the first morning, focusing on 4/5 ideas which eventually led to 1 project: searching and visualising University course data.</p>

<p>The team built <a href="http://youngrewiredstate.org/projects/unimatch/">UniMatch</a>:</p>

<p><img src="http://blog.metade.org/images/unimatch.png" alt="Young Rewired State 2011" /></p>

<p>There’s a live demonstration available at <a href="http://unimatch.net/">http://unimatch.net/</a>.</p>

<p>I was really impressed by the <a href="http://twitter.com/yrsblackfriars">Fluxx Capacitors</a> team. I loved the way they came up with ideas during the brainstorming sessions - there was some really great things coming out of it. Coding wise, there was a wide range of abilities, from those who had been programming for years (i.e. since they were 10), some of them had tinkered with some HTML and CSS and others who hadn’t coded at all but were keen to learn. The more experienced ended up doing the heavy lifting on the server side and more advanced Javascript front end work, and the rest of them worked on designing the UI and then implementing the design and HTML/CSS.</p>

<p><img src="http://blog.metade.org/images/photo.JPG" alt="Young Rewired State 2011" /></p>

<p>There were some really ingenious approaches to working collaboratively too. When they started editing the code on a shared server space, they used a system consisting of wooden blocks for each of the components (e.g. HTML, CSS, database and server code) to prevent multiple people editing the same file at the same time.</p>

<p>As a mentor, it was brilliant to be able to point the more code-oriented people in the right way in terms of software development best practices such as source code control and web applications frameworks.</p>

<p>I wasn’t able to attend the presentation, but it’s available on the <a href="http://www.ustream.tv/channel/yrs2011">YRS UStream channel</a>. They did a fantastic pitch (<a href="http://www.ustream.tv/recorded/16449306">about 1h 9m mins in</a>), and came away with the <em>Most likely to be bought (code or concept)</em> prize. Great work Leon, Richard, Joanne, Hugo, Kerron and Priscilla!</p>

<p>Some of them are continuing to work on the project, so it’ll be interesting to see what they come up with.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[It's been a while]]></title>
    <link href="http://blog.metade.org/its-been-a-while"/>
    <updated>2011-08-02T00:00:00+01:00</updated>
    <id>http://blog.metade.org/its-been-a-while</id>
    <content type="html"><![CDATA[<p>I’ve written two blog posts in 3 years - I have to admit I’ve not been very good at this blogging thing!</p>

<p>I have been pretty busy over the last few years at the BBC. I did a lot of work on <a href="http://www.bbc.co.uk/music">BBC Music</a>, and I spent a year with the <a href="http://www.bbc.co.uk/radio1">Radio 1/1Xtra Interactive team</a> where I had lots of fun. More recently I’ve been working on the <a href="http://www.bbc.co.uk/music/festivals/glastonbury/2011/">music event sites</a>.</p>

<p>Away from work, I’ve been to a few hack days including a couple of <a href="http://musichackday.org/">Music Hack Days</a>, <a href="http://linkedgov.hackcamp.org.uk/hacks">Linked Gov Hack Camp</a> and a few <a href="http://rewiredstate.org/">Rewired State</a> events.</p>

<p>I’m going to try imposing a new rule on myself: I will force myself to write up anything I work on that I spend more than an hour on!</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[My Said.fm Radio Box Hack]]></title>
    <link href="http://blog.metade.org/my-saidfm-radio-box-hack"/>
    <updated>2011-04-19T00:00:00+01:00</updated>
    <id>http://blog.metade.org/my-saidfm-radio-box-hack</id>
    <content type="html"><![CDATA[<p><img src="http://blog.metade.org/images/GeoSoundboards_Radio_Box-Coffee_20110419.png" alt="My Said.fm Radio Box Hack" /></p>

<p>Photo by <a href="http://twitter.com/#!/fnirp">Jenny Ekelund</a></p>

<p>A few weeks ago I took part in the <a href="http://said.fm">Said.fm</a> <a href="http://blog.said.fm/radiobox-hacks-visualising-stories">Radio Box Hack weekend</a>, where I did some experiments with Mobile HTML5 geolocation and audio playback on mobile devices.</p>

<p>I had been playing with what I was calling a “GeoSoundBoard”, where users could walk around unlocking sounds when they reached certain locations. My demo was using sound clips from a <a href="http://www.bbc.co.uk/radio1/westwood/soundboard.shtml">BBC Radio 1 soundboard for Tim Westwood</a> - imagine walking around the corner and hearing Westwood drop a bomb!</p>

<p>You can <a href="http://geosoundboards.heroku.com/soundboards/westwood">try it out for yourself</a> - drag and drop the blue marker onto one of the nearby orange markers to hear it go off.</p>

<p>On my iPhone I found that while the HTML5 audio would play fine when I dragged and dropped the marker, it wouldn’t play when I actually walked towards one. I never got to the bottom of this issue but it’s likely to be because HTML5 audio playback on mobile devices must be triggered by direct user interaction to avoid excessive data charges or battery consumption.</p>

<p><img src="http://blog.metade.org/images/media_httpfarm6static_cvCBt.jpg" alt="My Said.fm Radio Box Hack" /></p>

<p>So at the Said.fm hack day I decided to change the UI so that it would display information about the track a user had unlocked such as an image and description and offer the option to play the track. I also wanted to prototype an authoring solution so that curators could produce audio playlists around a certain theme and scatter those tracks in the real world. And with Abdel&#8217;s help we got a more robust player implementation for the audio playback.</p>

<p>You can check out what we built at <a href="http://geosoundboards.heroku.com">http://geosoundboards.heroku.com</a>. It uses:
- Ruby and <a href="http://www.sinatrarb.com">Sinatra</a>
- <a href="http://jquerymobile.com/">JQuery Mobile</a>
- JPlayer for the audio playback (thanks <a href="http://twitter.com/abdels" title="Abdel">Abdel</a>!)
- Google Docs for the CMS <a href="http://geosoundboards.heroku.com/faqs">check out the instructions</a> and <a href="https://spreadsheets.google.com/pub?hl=en_GB&amp;hl=en_GB&amp;key=0Am0wZ9CftXYqdGwyd2FxeVBqWF80eVpsQTd4YURlaGc&amp;output=html">a sample playlist</a></p>

<p>And the <a href="https://github.com/metade/geosoundboards">source is on GitHub</a>.</p>

<p>Thanks to the Said.fm guys and all of the other Radio Box hackers - it was fun!</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[I'm at the Guardian South by South West Hack Day]]></title>
    <link href="http://blog.metade.org/im-at-the-guardian-south-by-south-west-hack-d"/>
    <updated>2011-02-12T00:00:00+00:00</updated>
    <id>http://blog.metade.org/im-at-the-guardian-south-by-south-west-hack-d</id>
    <content type="html"><![CDATA[<p>And I&#8217;m hacking some AudioBoo and Flickr stuff on posterous&#8230;</p>

<iframe marginheight="0" scrolling="no" src="http://bit.ly/hKI1sy" marginwidth="0" height="800" width="500"></iframe>

]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[We Need @ Social Innovation Camp]]></title>
    <link href="http://blog.metade.org/blog/2008/12/09/we-need-social-innovation-camp"/>
    <updated>2008-12-09T00:00:00+00:00</updated>
    <id>http://blog.metade.org/blog/2008/12/09/blog-2008-12-09-we-need-social-innovation-camp</id>
    <content type="html"><![CDATA[<p>This weekend I attended <a href="http://www.sicamp.org/">Social Innovation Camp</a>, (SICamp) where I had an absolutely fantastic time! SICamp is an experiment to bring together people over a weekend and get them to build/prototype web apps that will drive social change - check out what the Guardian had to say about it on <a href="http://www.guardian.co.uk/media/pda/2008/dec/06/socialinnovationcamp-startups">Saturday</a> and then on <a href="http://www.guardian.co.uk/media/pda/2008/dec/07/socialinnovationcamp-events">Sunday after the projects were presented</a>.</p>

<p>I worked on the <a href="http://www.we-need.org/">we-need.org</a> project, which was led by Craig Griffin from <a href="http://www.fresh-voice.com/">Fresh Voice</a>. The idea is to provide a web site where people with disabilities are able to express their needs through an accessible web interface rather than having their needs assessed by the system as it is currently (i.e. by filling in a 50-odd page form). The site would then aggregate and present interactive visualisations of the needs in a given community so they can be more efficiently handled. Hopefully the video of the pitch we presented on Sunday will be made available online soon, where our team explained the concept far better than I can!</p>

<p>For the weekend, we built a Ruby on Rails application where users could use a <a href="http://metade.org/code/weneed/edit.html">basic html form</a> to express their needs. We also experimented with a graphical radial interface which is better suited for people with certain types of disabilities. We used the Geokit Rails plugin to geocode users&#8217; addresses so that their needs could be plotted on a map. We used <a href="http://simile.mit.edu/exhibit/">Simile Exhibit</a> to prototype the <a href="http://metade.org/code/weneed">visualisation of the aggregated needs of communities on a map</a>.</p>

<p>As mentioned during the project presentation, we required some sample data so I put together some Ruby to randomly generate some users and their needs. So here is the infamous Ruby &#8220;random needs generator&#8221; one-liner:</p>

<p><code>(0..rand(3)).to_a.map { |a| rand(@@need_count)+1 }.uniq</code></p>

<p>I&#8217;ve bravely put all of the <a href="http://github.com/metade/weneed">we-need code on github</a>, but do keep in mind that it was all built in less than 24 hours!</p>

<p>I had a really amazing time, worked with some fantastic people on We Need and also really enjoyed the post-SICamp discussions in the pub on Sunday! Big thanks to the <a href="http://www.sicamp.org/?page_id=158">SICamp team</a> for organising everything - I&#8217;m already looking forward to the next SICamp meetup!</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[My take on regression testing CSS]]></title>
    <link href="http://blog.metade.org/blog/2008/11/15/my-take-on-regression-testing-css"/>
    <updated>2008-11-15T00:00:00+00:00</updated>
    <id>http://blog.metade.org/blog/2008/11/15/blog-2008-11-15-my-take-on-regression-testing-css</id>
    <content type="html"><![CDATA[<p>As we add new features to the <a href="http://www.bbc.co.uk/music/beta">BBC Music Beta</a>, we have more pages to check before making a new release.</p>

<p>We&#8217;re using <a href="http://en.wikipedia.org/wiki/Test-driven_development">test-driven-development</a> on the code generating the pages, but obviously these techniques don&#8217;t cover the visual appearance of the site. As we reuse the same visual modules on different pages across the site, CSS bugs creep up unexpectedly on different pages across the site.</p>

<p>For example, the code generating the links module is reused on three different pages:</p>

<ul>
<li><a href="http://www.bbc.co.uk/music/reviews/2h54">http://www.bbc.co.uk/music/reviews/2h54</a></li>
<li><a href="http://www.bbc.co.uk/music/artists/cc197bad-dc9c-440d-a5b5-d52ba2e14234">http://www.bbc.co.uk/music/artists/cc197bad-dc9c-440d-a5b5-d52ba2e14234</a></li>
<li><a href="http://www.bbc.co.uk/music/artists/cc197bad-dc9c-440d-a5b5-d52ba2e14234/links">http://www.bbc.co.uk/music/artists/cc197bad-dc9c-440d-a5b5-d52ba2e14234/links</a></li>
</ul>


<p>And to illustrate the problem, I just noticed a CSS quirk with the background of the links module on that third link. So I started thinking about how one might go about regression testing CSS and hacked a simple solution together using <a href="http://cutycapt.sourceforge.net/">CutyCapt</a>, <a href="http://www.imagemagick.org/script/compare.php">ImageMagick&#8217;s compare tool</a> and <a href="http://rake.rubyforge.org/">Ruby Rake</a>.</p>

<p>The result is illustrated here:</p>

<table>
  <tr>
    <td>
      Stable version of BBC Music Beta artist profile page
      <img src="http://blog.metade.org/images/media_httpfarm4static_hnIzy.jpg">
    </td>
    <td>
      Development Version of BBC Music Beta artist profile page 
      <img src="http://blog.metade.org/images/media_httpfarm4static_glxqk.jpg">
    </td>
    <td>
      Difference between the stable and development versions of the site
      <img src="http://blog.metade.org/images/media_httpfarm4static_aueIk.jpg"></td>
  </tr>
</table>


<p>The first image is a screen capture of the stable version of an artist&#8217;s profile page, taken directly from the live BBC Music Beta. The second image is taken from our development version of the site. The third image shows the difference between the two - in our upcoming release we are shuffling some of the modules around so these changes are very noticeable.</p>

<p>At the moment, my tool is very basic: you give it the stable and development host names, and a list of paths to test (<a href="http://www.metade.org/code/css-regression/music/pages.yml">example configuration</a>). It uses CutyCapt to pull down each of the paths from the stable and development hosts, and then runs the ImageMagick compare tool between each pair of images. It then produces a very simple <a href="http://www.metade.org/code/css-regression/music/">HTML file that displays all of the pages being tested</a>.</p>

<p>While we&#8217;re just using this tool informally at the moment, it&#8217;s already been really useful to catch unexpected CSS bugs on our site.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[From the International Semantic Web Conference 2008]]></title>
    <link href="http://blog.metade.org/blog/2008/10/27/from-the-international-semantic-web-conference-2008"/>
    <updated>2008-10-27T00:00:00+00:00</updated>
    <id>http://blog.metade.org/blog/2008/10/27/blog-2008-10-27-from-the-international-semantic-web-conference-2008</id>
    <content type="html"><![CDATA[<p>I&#8217;m at the <a href="http://iswc2008.semanticweb.org">International Semantic Web Conference</a> (ISWC 2008) in Karlsruhe, Germany.  I&#8217;m keeping notes of what&#8217;s going on here:</p>

<script src="http://gist.github.com/20069.js"></script>

]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[BBC Music/MusicBrainz bookmarklet]]></title>
    <link href="http://blog.metade.org/blog/2008/07/30/bbc-musicmusicbrainz-bookmarklet"/>
    <updated>2008-07-30T00:00:00+01:00</updated>
    <id>http://blog.metade.org/blog/2008/07/30/blog-2008-07-30-bbc-musicmusicbrainz-bookmarklet</id>
    <content type="html"><![CDATA[<p>At BBC Audio and Music Interactive, I&#8217;m one of the software engineers working on the <a href="http://www.bbc.co.uk/music/developers/are">BBC Music Discovery team</a>. This week we <a href="http://www.bbc.co.uk/blogs/bbcinternet/2008/07/bbc_music_artist_pages_beta.html">launched</a> the <a href="http://www.bbc.co.uk/music/beta/">BBC Music Beta</a>, which focuses in particular on publishing information about the artists broadcast on the BBC. You can read more about the site on <a href="http://derivadow.com/2008/07/28/the-all-new-bbc-music-site-where-programmes-meet-music-and-the-semantic-web/">Tom Scott&#8217;s blog</a> and <a href="http://www.bbc.co.uk/blogs/radiolabs/2008/07/music_beta_and_linked_data.shtml">BBC Radio Labs</a>.</p>

<p>Matthew Shorter describes at the <a href="http://www.bbc.co.uk/blogs/bbcinternet/matthew_shorter/">bottom of his post</a> how to use MusicBrainz to find a given artist. Here&#8217;s a little something to make that a touch easier: a BBC Music/MusicBrainz <a href="http://en.wikipedia.org/wiki/Bookmarklet">bookmarklet</a>!</p>

<p>Drag this <a href="">BBC Music/MusicBrainz</a> link to your bookmarks bar in your browser. Now, when you&#8217;re on an artist page (e.g. <a href="http://www.bbc.co.uk/music/artists/cc197bad-dc9c-440d-a5b5-d52ba2e14234">Coldplay</a>) click on the bookmarklet to switch between BBC Music and MusicBrainz artist page.</p>

<p>Enjoy!</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Improving music recommendations step one: ignoring bad data]]></title>
    <link href="http://blog.metade.org/blog/2008/06/26/improving-music-recommendations-step-one-ignoring-bad-data"/>
    <updated>2008-06-26T00:00:00+01:00</updated>
    <id>http://blog.metade.org/blog/2008/06/26/blog-2008-06-26-improving-music-recommendations-step-one-ignoring-bad-data</id>
    <content type="html"><![CDATA[<p>When I presented my music recommendations hack at Mashed last weekend, I showed some examples by randomly browsing around the artists and brands pages.</p>

<p>When I came to the <a href="http://www.bbc.co.uk/programmes/b006wq8d">Giles Peterson</a> show, I was surprised that the system was recommending artists such as &#8216;The Automatic&#8217; and &#8216;Arctic Monkeys&#8217;.</p>

<p>This struck me as extremely unusual recommendations for a show featuring &#8220;Latin, funk, soul and hip-hop&#8221;, but I suspected that the data rather than the system was at fault. I had a quick look at the source data that had been fed into the system for this show and found:
- The Wombats (1)
- My Chemical Romance (1)
- Hard-Fi (1)
- Gideon Conn (1)
- Armand Van Helden (1)
- Editors (1)</p>

<p>Looking at this list, it seems that the recommendations actually make sense: there is very little data for the show, and actually it doesn&#8217;t even look correct!</p>

<p>This data has been generated from the digital play out system but we are unable to track some of the shows, especially specialist music shows such as Giles Peterson. The DJ might play directly off their own vinyl/cd/computer/other crazy device, or the show might be pre-recorded.</p>

<p>So what I&#8217;ve done is simply ignore brands with a low average artist play count (brand/<a href="http://music-recommendations.metade.org/artists/f90e8b26-9e52-4669-a5c9-e28529c47894.json">artist</a>/<a href="http://music-recommendations.metade.org/recommend/lastfm/bbc_zanelowe.json">last.fm profile</a> URLs to get a JSON feed of the data.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[My Mashed 2008 Hack: Recommending BBC radio shows and artists  ]]></title>
    <link href="http://blog.metade.org/blog/2008/06/23/my-mashed-2008-hack-recommending-bbc-radio-shows-and-artists"/>
    <updated>2008-06-23T00:00:00+01:00</updated>
    <id>http://blog.metade.org/blog/2008/06/23/blog-2008-06-23-my-mashed-2008-hack-recommending-bbc-radio-shows-and-artists</id>
    <content type="html"><![CDATA[<p>I&#8217;ve just returned from <a href="http://mashed08.backnetwork.com/">Mashed 2008</a> where I formed part of the <a href="http://www.bbc.co.uk/blogs/radiolabs/2008/06/radio_labs_at_mashed_08.shtml">BBC Radio Labs</a> contingen</p>

<p>We were providing all sorts of fun things for people to play with, from <a href="http://mashed-audioandmusic.dyndns.org/#livestream">live BBC Radio audio streams</a>, <a href="http://mashed-audioandmusic.dyndns.org/#livexmpp">feeds of what track is being played over the air</a> and archives of both the audio and metadata feeds. All of the details are available on the <a href="http://mashed-audioandmusic.dyndns.org/">BBC Audio and Music Interactive at Mashed 2008</a> site.</p>

<p>One of the things that I was directly involved in was the &#8221;<a href="http://mashed-audioandmusic.dyndns.org/#brandsartists">How many times brands have played artists</a>&#8221; data set. By matching the music tracks played on air to <a href="http://musicbrainz.org">MusicBrainz</a> artists, and then work out which radio show the track was played on, we can build this index of which artists were played on what shows. For example, we can see which artist <a href="http://www.bbc.co.uk/programmes/b006wkqz">Jo Whiley</a> has played the most, or work out who&#8217;s been playing the <a href="http://musicbrainz.org/artist/ada7a83c-e3e1-40f1-93f9-3e73dbc9298a.html">Arctic Monkeys</a> the most.</p>

<p>It is also a great resource for recommending artists and shows and shows to people. So what I did for Mashed was feed this data into the <a href="http://semanticspace.forge.ecs.soton.ac.uk">Semantic Space</a> engine, developed at the <a href="http://www.ecs.soton.ac.uk">University of Southampton</a> by <a href="http://users.ecs.soton.ac.uk/jsh2/">Jon Hare</a>, and build a web app around it: <a href="http://music-recommendations.metade.org/">music-recommendations.metade.org</a>.</p>

<p>The site let&#8217;s you browse around artists and shows, and view lists of other artists and shows the system has recommended. It also provides recommendations based on a last.fm profile top artist feed.</p>

<p>There is a little more detail on how the <a href="http://music-recommendations.metade.org/">technique works on the site</a> (hint: it&#8217;s based on <a href="http://en.wikipedia.org/wiki/Latent_semantic_analysis">latent semantic analysis</a>), and I intend to carry on working with Jon to improve both the quality of the recommendations and how they are visualised.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Augmented Reality from BBC Radio 1: "Band In Your Hand"]]></title>
    <link href="http://blog.metade.org/blog/2008/05/11/augmented-reality-from-bbc-radio-1-band-in-your-hand"/>
    <updated>2008-05-11T00:00:00+01:00</updated>
    <id>http://blog.metade.org/blog/2008/05/11/blog-2008-05-11-augmented-reality-from-bbc-radio-1-band-in-your-hand</id>
    <content type="html"><![CDATA[<p>It&#8217;s brilliant to see the <a href="http://www.bbc.co.uk/radio1/bigweekend/2008/feature/bandinyourhand.shtml">&#8220;Band in Your Hand&#8221;</a> Augmented Reality feature built for Radio 1&#8217;s <a href="http://www.bbc.co.uk/radio1/bigweekend/">Big Weekend</a>. There&#8217;s even a video showing Scott Mills trying it out!</p>

<p>Read more about it on the <a href="http://www.bbc.co.uk/blogs/radiolabs/2008/05/radio_1s_band_in_your_hand.shtml">Radio Labs blog</a>.</p>

<p>While talking about Augmented Reality, I was browsing through the recent O&#8217;Reilly <a href="http://www.oreilly.com/catalog/9781934356036/">&#8220;Augmented Reality - a practical guide&#8221;</a> by Stephen Cawood and Mark Fiala. It looks like a great introduction to the subject, describing some of the new augmented reality frameworks that have improve on the trusty old <a href="http://www.hitl.washington.edu/artoolkit/">ARToolKit</a>. However, I felt that the demo application that the book presents could have explored the tangible augmented reality side of things more.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Leaving Southampton...]]></title>
    <link href="http://blog.metade.org/blog/2007/09/09/leaving-southampton"/>
    <updated>2007-09-09T00:00:00+01:00</updated>
    <id>http://blog.metade.org/blog/2007/09/09/blog-2007-09-09-leaving-southampton</id>
    <content type="html"><![CDATA[<p>After nearly 11 years at Southampton University, I am finally leaving and heading off to London.</p>

<p>It&#8217;s been quite a ride: starting as an undergraduate, doing my PhD, and then four great years as a research associate/fellow at both <a href="http://www.iam.ecs.soton.ac.uk">IAM</a> and <a href="http://www.lsl.ecs.soton.ac.uk">LSL</a>.</p>

<p>Tomorrow I start a new adventure, as a Software Engineer at Audio &amp; Music Interactive at the BBC&#8230;</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Every day should be Hack Day!]]></title>
    <link href="http://blog.metade.org/blog/2007/06/19/every-day-should-be-hack-day"/>
    <updated>2007-06-19T00:00:00+01:00</updated>
    <id>http://blog.metade.org/blog/2007/06/19/blog-2007-06-19-every-day-should-be-hack-day</id>
    <content type="html"><![CDATA[<p>Back from <a href="http://www.hackday.org">Hack Day London</a> - it was absolutely incredible! I had really great fun, did a lot of hacking/coding all night long!</p>

<p>I worked with <a href="http://users.ecs.soton.ac.uk/~jsh2">Jon Hare</a>, and we went for the augmented reality web service, which was pretty crazy. We made the <a href="http://artoolkit.sf.net">ARToolKit</a>, which you can see in the video below, into a web service!</p>

<object height="350" width="425">
<param name="movie" value="http://www.youtube.com/v/TqGAqAFlGg0">
<param name="wmode" value="transparent"> <embed src="http://www.youtube.com/v/TqGAqAFlGg0" type="application/x-shockwave-flash" wmode="transparent" height="350" width="425">
</object>


<p>Although it&#8217;s a little rough around the edges still, you can play with our hack online at: <a href="http://multimedia.ecs.soton.ac.uk/artheworld/">http://multimedia.ecs.soton.ac.uk/artheworld</a></p>

<p>I&#8217;ve also posted the slides from our 90 seconds presentation on Slideshare:</p>

<iframe src="http://www.slideshare.net/slideshow/embed_code/66038" width="427" height="356" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC;border-width:1px 1px 0;margin-bottom:5px" allowfullscreen webkitallowfullscreen mozallowfullscreen> </iframe>


<p> <div style="margin-bottom:5px"> <strong> <a href="http://www.slideshare.net/metade/hack" title="artheworld at hackdaylondon" target="_blank">artheworld at hackdaylondon</a> </strong> from <strong><a href="http://www.slideshare.net/metade" target="_blank">Patrick Sinclair</a></strong> </div></p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Fun Augmented Reality Stuff]]></title>
    <link href="http://blog.metade.org/blog/2007/06/12/fun-augmented-reality-stuff"/>
    <updated>2007-06-12T00:00:00+01:00</updated>
    <id>http://blog.metade.org/blog/2007/06/12/blog-2007-06-12-fun-augmented-reality-stuff</id>
    <content type="html"><![CDATA[<p>For my <a href="http://www.metade.org/research/phd/">PhD</a> I had loads of fun with  tangible augmented reality interfaces. I posted a couple of videos on my work onto Google Video a few weeks back, which shows the kinds of things I ended up doing:</p>

<iframe width="560" height="315" src="http://www.youtube.com/embed/x64nC1VMO8o?list=UUAaeetNuBExb12mF3oz9ZWA" frameborder="0" allowfullscreen></iframe>


<p>This work was done using the <a href="http://www.hitl.washington.edu/artoolkit/">ARToolKit</a>, an augmented reality toolkit that does the computer vision tracking of the marker cards you can see in the video.</p>

<p>I&#8217;m very tempted to build something based on this for Hack day!</p>

<p>In collaboration with a couple of guys from the research lab I work at, we recently had the crazy idea to make the ARToolkit into a web service.</p>

<p>The basic idea is as follows: you take a photo of an ARToolKit marker in a fun place, upload it to the web service and it renders some 3D content over the card using the ARToolKit.</p>

<p>I started putting together a basic web app using the Ruby <a href="http://code.whytheluckystiff.net/camping/">Camping</a> framework. I even managed to get it to upload result to Flickr if the user decided they liked the resulting image.</p>

<p>Here&#8217;s a <a href="http://www.metade.org/research/2007/artheworld-test.jpg">screenshot</a> of what we have so far, plus the <a href="http://flickr.com/photos/8483384@N07/">Flickr account</a> for the service.</p>

<p>The app still needs a lot of work (e.g. letting people choose which 3D model they want rendered), but the basics are there for a nice hack.</p>

<p>What we really need to do is work out an actual application/scenario for this - there probably isn&#8217;t one and it&#8217;s just a bit of fun, pointless hackery. But I&#8217;m quite intrigued to investigate some kind of whacky &#8220;physical meets the digital&#8221; experiment&#8230;</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[The Semantic Web: a Medical Perspective]]></title>
    <link href="http://blog.metade.org/blog/2007/06/09/the-semantic-web-a-medical-perspective"/>
    <updated>2007-06-09T00:00:00+01:00</updated>
    <id>http://blog.metade.org/blog/2007/06/09/blog-2007-06-09-the-semantic-web-a-medical-perspective</id>
    <content type="html"><![CDATA[<p>On Saturday I presented a guest lecture for a masters course on <a href="http://mim.med.up.pt/">Medical Informatics</a> at the Universidade do Porto, Portugal.</p>

<p>The title of the lecture was: &#8220;The Semantic Web: a Medical Perspective&#8221;.</p>

<p>I described the issues surrounding the sharing of data in the medical domain, and how the current web fails to address the needs of users wishing to integrate different data sets. I then introduced the semantic web, but I did it from the perspective of linking data rather than the top-down, formal ontologies and logic route.</p>

<p>Although presenting a full lecture was a new experience for me, I think it went well. I gave the presentation in English rather than try a mixture of rusty Portuguese/English, although looking back now perhaps I should have gone with the Portuguese. It&#8217;s so easy to drop in a typical English expressions or word that non-native English speakers won&#8217;t have a clue about!</p>

<p>I&#8217;ve made the slides for the presentation available here: <a href="http://www.metade.org/research/2007/semweb-medicine-notes.pdf">slides</a> (PDF, 7Mb).</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Alnwick to Edinburgh in 7 minutes]]></title>
    <link href="http://blog.metade.org/blog/2007/05/30/longhoughton-to-edinburgh-in-7-minutes"/>
    <updated>2007-05-30T00:00:00+01:00</updated>
    <id>http://blog.metade.org/blog/2007/05/30/blog-2007-05-30-longhoughton-to-edinburgh-in-7-minutes</id>
    <content type="html"><![CDATA[<iframe width="420" height="315" src="http://www.youtube.com/embed/GPTei47Hxew" frameborder="0" allowfullscreen></iframe>


<p>Back in the 1960s, my grandparents made <a href="http://www.youtube.com/watch?v=GPTei47Hxew">an incredible home video</a>. They recorded their trip from <a href="http://maps.google.co.uk/maps?f=q&amp;hl=en&amp;q=Longhoughton,+Alnwick,+Northumberland,+NE66&amp;sll=54.162434,-3.647461&amp;sspn=7.414808,21.75293&amp;ie=UTF8&amp;z=12&amp;iwloc=addr&amp;om=1"> Alnwick</a> to Edinburgh - a <a href="http://maps.google.co.uk/maps?f=d&amp;hl=en&amp;saddr=Longhoughton,+Alnwick,+Northumberland,+NE66&amp;daddr=Edinburgh&amp;sll=55.43007,-1.616483&amp;sspn=0.112208,0.33989&amp;ie=UTF8&amp;om=1&amp;z=9">trip of around 90 miles</a> reduced to 7 minutes!</p>

<p>From what I understand, they mounted the camera to the car&#8217;s dashboard and then my grandmother had to press the camera shutter every eight seconds or so. It&#8217;s amazing to see the old cars and trucks on the road, and then right at the end there&#8217;s a brand new Mini!</p>

<p>It&#8217;s also fun to see how little time they spend behind other cars - as soon as one comes up they&#8217;ve overtaken it!</p>
]]></content>
  </entry>
  
</feed>
