<?xml version="1.0" encoding="ISO-8859-1"?>
<?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:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
		<channel>
		    <title>Associative Trails</title>
		    <link>http://www.associativetrails.com/</link>
		    <description>An internet consultancy that specialises in data-driven websites, Content Management Systems (CMS) and effective web communications. Experts in Coldfusion, XHTML, CSS, database design and web standards. Based in London, UK.</description>
		    <dc:language>en-uk</dc:language>
		    <dc:creator>Matt Perdeaux</dc:creator>
		    <dc:rights>Copyright 2009</dc:rights>
		    <dc:date>2009-11-14T11:20:23-00:00</dc:date>
		    <sy:updatePeriod>daily</sy:updatePeriod>
		    <sy:updateFrequency>1</sy:updateFrequency>
		    <sy:updateBase>2009-11-06T01:03:00-00:00</sy:updateBase><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/AssociativeTrails" type="application/rss+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item> <title>Collaboration with Universitat Pompeu Fabra (Barcelona)</title> <link>http://feedproxy.google.com/~r/AssociativeTrails/~3/6rXIApCLZX0/Collaboration-with-Universitat-Pompeu-Fabra-Barcelona</link> <guid isPermaLink="false">C827B418-5056-897F-EDA62B10D0993EDE@http://www.associativetrails.com/</guid> <content:encoded><![CDATA[<p>One of the nice things about running your own business is that you can occasionally decide to spend a bit of time doing a bit of research into stuff you find interesting. The <a href="http://www.normalisr.com">Normalisr</a> is an example of this - an application that I built to reflect some of my ideas on attention data and what could be measured in last.fm listening charts.</p><p>Well, it seems that it's not just me that found this particular idea interesting. I was recently contacted by a PhD student at the <a href="http://mtg.upf.edu/">Music Technology Group</a> of the <a href="http://www.upf.edu/en/">Universitat Pompeu Fabra</a> in Barcelona, who wanted to research people's views on the different approaches to ranking their music listening habits.</p><p>The upshot is a short survey that has just been added to the chart pages of the Normalisr, and we're hoping for around a thousand users to fill it in to give Dmitry a nice big chunk of data to analyse. So, if you are a user, please get over to the <a href="http://www.normalisr.com">Normalisr</a> and complete the survey.</p><img src="http://feeds.feedburner.com/~r/AssociativeTrails/~4/6rXIApCLZX0" height="1" width="1"/>]]></content:encoded> <dc:creator>Matt Perdeaux</dc:creator> <dc:subject>Mashups, Technology &amp; applications</dc:subject> <dc:date>2009-11-06T01:03:00-00:00</dc:date> <feedburner:origLink>http://www.associativetrails.com/blog/entry/Collaboration-with-Universitat-Pompeu-Fabra-Barcelona</feedburner:origLink></item> <item> <title>Setting up Apache monitoring with Munin</title> <link>http://feedproxy.google.com/~r/AssociativeTrails/~3/C615HzCrGOw/Setting-up-Apache-monitoring-with-Munin</link> <guid isPermaLink="false">2EE8445A-5056-897F-ED17E791313B8508@http://www.associativetrails.com/</guid> <content:encoded><![CDATA[<p><p>After a few solid days of Linux server wrangling, I found getting <a href="http://munin.projects.linpro.no/">Munin</a> to monitor our Apache server more hassle than I thought it would be.</p><p>Salient system details:</p><ul><li>Ubuntu Hardy</li><li><a href="http://nginx.net/">Nginx</a> web server (port 80) proxy</li><li>Apache web server (port 8080)</li></ul></p><p><p>So, if only for my own future reference, here's how I managed it:</p><ol><li>Make sure the <a href="http://ftp.ics.uci.edu/pub/websoft/libwww-perl/">WWW Protocol library for Perl</a> is installed:<br /><code>sudo apt-get install libwww-perl</code></li><li>Apache needs to be running mod_status (which serves of the stats that Munin draws charts for). Add the following somewhere in /etc/apache2/apache2.conf:<br /><code><br />ExtendedStatus On<br />&lt;Location /server-status&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;SetHandler server-status<br />&nbsp;&nbsp;&nbsp;&nbsp;Order deny,allow<br />&nbsp;&nbsp;&nbsp;&nbsp;Deny from all<br />&nbsp;&nbsp;&nbsp;&nbsp;Allow from 127.0.0.1<br />&lt;/Location&gt;<br /></code></li><li>Restart Apache:<br /><code>sudo /etc/init.d/apache2 restart</code><br /></li><li>The Munin plugins actually live in /usr/share/munin/plugins, and are symlinked to in /etc/munin/plugins:<br /><div style="overflow:scroll; white-space: nowrap;"><br /><code><br />sudo&nbsp;ln&nbsp;-s&nbsp;/usr/share/munin/plugins/apache_accesses&nbsp;/etc/munin/plugins/apache_accesses<br />sudo&nbsp;ln&nbsp;-s&nbsp;/usr/share/munin/plugins/apache_activity&nbsp;/etc/munin/plugins/apache_activity<br />sudo&nbsp;ln&nbsp;-s&nbsp;/usr/share/munin/plugins/apache_processes&nbsp;/etc/munin/plugins/apache_processes<br />sudo&nbsp;ln&nbsp;-s&nbsp;/usr/share/munin/plugins/apache_volume&nbsp;/etc/munin/plugins/apache_volume<br /></code><br /></div><br />NB - If you have uploaded any additional plugins, ensure root has execute permission:<br /><code>sudo chmod 755 apache_activity</code><br /></li><li>Make sure the Munin plugins are monitoring port 8080 - in this setup I've got Nginx on the default port. Add the following to /etc/munin/plugin-conf.d/munin-node:<br /><code><br />[apache_*]<br />env.ports 8080<br /></code><br /></li><li>Restart the Munin node:<br /><code>sudo /etc/init.d/munin-node restart</code><br /></li></ol></p><img src="http://feeds.feedburner.com/~r/AssociativeTrails/~4/C615HzCrGOw" height="1" width="1"/>]]></content:encoded> <dc:creator>Matt Perdeaux</dc:creator> <dc:subject>Sysadmin, Backend</dc:subject> <dc:date>2009-10-07T07:09:00-00:00</dc:date> <feedburner:origLink>http://www.associativetrails.com/blog/entry/Setting-up-Apache-monitoring-with-Munin</feedburner:origLink></item> <item> <title>New-look Normalisr launched</title> <link>http://feedproxy.google.com/~r/AssociativeTrails/~3/ivxFo4bTcC0/Newlook-Normalisr-launched</link> <guid isPermaLink="false">1AB239CA-5056-897F-ED0756F610532578@http://www.associativetrails.com/</guid> <content:encoded><![CDATA[<p><p>Hooray! It's live! Your all-new "<a href="http://www.normalisr.com/">Normalisr</a>" experience can now boast the following improvements:</p><br /><ul><li>A new URL - <a href="http://www.normalisr.com/">http://www.normalisr.com/</a></li><li>A slick new design, including gig photographs</li><li>Thumbnail views of artist and album charts</li><li>The ability to manually find artists and albums that come from last.fm without a proper Musicbrainz ID - we're hoping that this will improve the accuracy of your charts</li><li>Proper Unicode support (fingers crossed!)</li><li>A graphical widget of your artist chart to add to your blog or last.fm profile</li></ul><br /><p>We hope you enjoy it. If you have any questions, feedback or issues to report, please use the <a href="http://www.normalisr.com/feedback/">feedback form</a>.</p></p><p><p>PS - Here's a nice example of the widget:</p><br /><p><br /><a href="http://www.normalisr.com/?username=mattperdeaux"> <img src="http://media.normalisr.com/media/charts/mattperdeaux-overall-20.jpg" border="0" alt="mattperdeaux's Profile Page" /> </a><br /></p></p><img src="http://feeds.feedburner.com/~r/AssociativeTrails/~4/ivxFo4bTcC0" height="1" width="1"/>]]></content:encoded> <dc:creator>Matt Perdeaux</dc:creator> <dc:subject>Technology &amp; applications, Mashups</dc:subject> <dc:date>2009-10-03T08:56:00-00:00</dc:date> <feedburner:origLink>http://www.associativetrails.com/blog/entry/Newlook-Normalisr-launched</feedburner:origLink></item> <item> <title>Normaliser v2 in production</title> <link>http://feedproxy.google.com/~r/AssociativeTrails/~3/_cvbKC11vnA/Normaliser-v2-in-production</link> <guid isPermaLink="false">55576723-5056-897F-EDFBDE8F4DDB268C@http://www.associativetrails.com/</guid> <content:encoded><![CDATA[<p>After months of neglect, we've finally got round to working on an update to our <a href="http://www.associativetrails.com/stuff/normalisefm/">last.fm normaliser application</a>. We've decided to build the whole thing from the ground up using Python/Django, our new favourite toys. Version two will hopefully include the following improvements:</p><p><ul><li>Proper unicode support.</li><li>The ability to find artists & albums that have a blank Musicbrainz ID in last.fm. This will involve users doing an additional search for each artist, but it should vastly improve most people's charts. We will try to make the search process as easy as possible (see screenshots below).</li><li>A whizzy new design using gig photos from Flickr.</li><li>Updated XML format to mirror v2 of last.fm's data feeds (we will keep the older XML versions available on the same URL).</li><li>Hopefully, some form of export code that will allow charts to be shown on user blogs, etc.</li><li>We're still scratching our heads trying to think of ways we can make a few quid out of all the work we're putting into this...</li></ul></p><p>Anyway, some work in progress screenshots below.</p><p><p><strong>Homepage</strong><br /><img src="http://www.associativetrails.com/blogCFC/images/normaliser-home.jpg" width="500" height="278" alt="Homepage" /></p></p><p><p><strong>Artist chart listing</strong><br /><img src="http://www.associativetrails.com/blogCFC/images/normaliser-artist.jpg" width="500" height="838" alt="Artist chart" /></p><br /><p><strong>Album chart listing</strong><br /><img src="http://www.associativetrails.com/blogCFC/images/normaliser-album.jpg" width="500" height="838" alt="Album chart" /></p><br /><p><strong>Find an album in the Musicbrainz database</strong><br /><img src="http://www.associativetrails.com/blogCFC/images/normaliser-find.jpg" width="500" height="278" alt="Find an album" /></p></p><img src="http://feeds.feedburner.com/~r/AssociativeTrails/~4/_cvbKC11vnA" height="1" width="1"/>]]></content:encoded> <dc:creator>Matt Perdeaux</dc:creator> <dc:subject>Mashups, Technology &amp; applications</dc:subject> <dc:date>2009-08-26T01:04:00-00:00</dc:date> <feedburner:origLink>http://www.associativetrails.com/blog/entry/Normaliser-v2-in-production</feedburner:origLink></item> <item> <title>Smile - you're on Google Maps</title> <link>http://feedproxy.google.com/~r/AssociativeTrails/~3/eUn4LnP9mps/Smile--youre-on-Google-Maps</link> <guid isPermaLink="false">1E75F6E4-5056-897F-ED2091D15596E931@http://www.associativetrails.com/</guid> <content:encoded><![CDATA[<p>Google have <a href="http://londonist.com/2009/03/google_street_view_now_live_in_uk.php">just launched Street view in the UK</a>, which gives pretty informative street-level photographs as part of their mapping service. Funny little cars with weird rigs attached to them were scooting round London all last summer, capturing the photographs.</p><p>Of course, if you see one of those cars, chances are you may appear in the photographs they take. My wife remembered a particular location where we saw one last summer, and we've tracked ourselves down, strolling back home from a trip to Broadway Market in Hackney:</p><p><iframe width="425" height="240" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.com/maps/sv?cbp=12,34.79021625156689,,2,4.50684931506849&amp;cbll=51.532962,-0.065321&amp;panoid=&amp;v=1&amp;hl=en&amp;gl="></iframe><br /><small><a href="http://maps.google.com/?ie=UTF8&amp;layer=c&amp;cbll=51.532962,-0.065321&amp;panoid=ck471tsq_KJxWRKvRlSqzg&amp;cbp=12,34.79021625156689,,2,4.50684931506849&amp;ll=51.533029,-0.065274&amp;spn=0,359.984336&amp;z=16&amp;source=embed" style="color:#0000FF;text-align:left">View Larger Map</a></small></p><p>Which actually feels a bit strange. We've been Google-papped. Lucky it was my wife I was out with that day ;)</p><img src="http://feeds.feedburner.com/~r/AssociativeTrails/~4/eUn4LnP9mps" height="1" width="1"/>]]></content:encoded> <dc:creator>Matt Perdeaux</dc:creator> <dc:subject>London</dc:subject> <dc:date>2009-03-19T06:09:00-00:00</dc:date> <feedburner:origLink>http://www.associativetrails.com/blog/entry/Smile--youre-on-Google-Maps</feedburner:origLink></item> <item> <title>Django unit testing gotcha: test case methods run in alphabetical order</title> <link>http://feedproxy.google.com/~r/AssociativeTrails/~3/QLIQ9qfbFoI/Django-unit-testing-gotcha-test-case-methods-run-in-alphabetical-order</link> <guid isPermaLink="false">ED9D6DCE-5056-897F-ED8DA35784E0E2FF@http://www.associativetrails.com/</guid> <content:encoded><![CDATA[<p>After a good few hours of increasing frustration, I managed to work out why the Django unit tests I was working on were doing funny things. As it turns out, the individual test case methods are, by default, sorted alphabetically by the TestLoader.</p><p>This is worth knowing if you're testing things that rely on the tests being run in order, such as creating, editing and deleting of records in the database.</p><p>For instance:<br /><code><br />import unittest<br />from myapp.models import MyModel<br /><br />class MyModelTestCase(unittest.TestCase):<br />    def test_create_item(self):<br />        obj = MyModel.objects.create(title="hello")<br />        .... run tests ....<br /><br />    def test_edit_item(self):<br />        obj = MyModel.objects.get(id=1)<br />        obj.title = "goodbye"<br />        obj.save()<br />        .... run tests ....<br /><br />    def test_delete_item(self):<br />        obj = MyModel.objects.get(id=1)<br />        obj.delete()<br />        .... run tests ....<br /></code></p><p>In the above example, when the tests are sorted alphabetically, "test_create_item" is run first, but "test_delete_item" will be run before "test_edit_item", leading to a few unexpected test failures for no apparent reason.</p><p>It looks like this is all to do with the "sortTestMethodsUsing" attribute of the <a href="http://docs.python.org/library/unittest.html#unittest.TestLoader">TestLoader class</a>, and I daresay there is a way of overriding it in Django, but for now, I'm just happy knowing how my tests are being sorted so I can name them sensibly.</p><img src="http://feeds.feedburner.com/~r/AssociativeTrails/~4/QLIQ9qfbFoI" height="1" width="1"/>]]></content:encoded> <dc:creator>Matt Perdeaux</dc:creator> <dc:subject>Backend, Quality &amp; standards</dc:subject> <dc:date>2009-03-09T18:39:00-00:00</dc:date> <feedburner:origLink>http://www.associativetrails.com/blog/entry/Django-unit-testing-gotcha-test-case-methods-run-in-alphabetical-order</feedburner:origLink></item> <item> <title>Having fun with widows</title> <link>http://feedproxy.google.com/~r/AssociativeTrails/~3/c23zNuMxDYA/Fun-with-widows</link> <guid isPermaLink="false">6F68C5D0-5056-897F-ED46AF7240BB3065@http://www.associativetrails.com/</guid> <content:encoded><![CDATA[<p>It's amazing the little details your mind sometimes fixates upon when you're deeply into an intense coding phase. I'm currently building a news aggregator interface, and just can't make a seemingly trivial decision regarding headline typography.</p><p>The issue is all about <a href="http://en.wikipedia.org/wiki/Widows_and_orphans">widows</a> - single words that appear on their own when text wraps onto multiple lines. Design-wise, these are bad. So I've been using the rather nifty <a href="http://code.google.com/p/typogrify/">typogrify extension to Django</a> that makes it very simple to replace the final space in a block of dynamic text with a "&amp;nbsp;" so you don't need to worry about the final word wrapping onto its own line. </p><p>Fantastic, very straightforward, on to next thing. But, I simply cannot decide whether I should be doing this for headlines. The homepage of my app has 3 columns of imported feed content, with the most recent headline in quite large type. Depending on the headline content, the widow filter sometimes makes an obvious change to how the headline is rendered. The problem is, the relatively narrow column width means that it can often make the penultimate headline row seem a bit small.</p><p>For instance, the following before/after shows a pretty standard headline both with and without widow filtering:<br /><br /><br /><div style="float: left; margin: 0; padding: 0; width: 50%; text-align: center;"><br /><img src="http://www.associativetrails.com/blogCFC/images/ex2-withwidow.png" width="200" height="92" style="border: 1px solid #999; padding: 5px;" alt="widow" /><br />widow</div><div style="float: left; margin: 0; padding: 0; width: 50%; text-align: center;"><br /><img src="http://www.associativetrails.com/blogCFC/images/ex2-withoutwidow.png" width="200" height="92" style="border: 1px solid #999; padding: 5px;" alt="no widow" /><br />No widow</div><br style="clear:both;" /><br /></p><p>This one seems pretty cut and dried, the widowless headline looks better and is easier to read. But problems occur with this kind of example:<br /><br /><br /><div style="float: left; margin: 0; padding: 0; width: 50%; text-align: center;"><br /><img src="http://www.associativetrails.com/blogCFC/images/ex1-withwidow.png" width="200" height="92" style="border: 1px solid #999; padding: 5px;" alt="widow" /><br />widow</div><div style="float: left; margin: 0; padding: 0; width: 50%; text-align: center;"><br /><img src="http://www.associativetrails.com/blogCFC/images/ex1-withoutwidow.png" width="200" height="92" style="border: 1px solid #999; padding: 5px;" alt="no widow" /><br />No widow</div><br style="clear:both;" /><br /></p><p>To me, its not obvious which one of these headlines is easier to read. If I had a choice, I'd maybe go with the widow version. But this is all dynamic text, so I need to choose whether to run ALL headlines through the widow filter or not.</p><p>Currently, I am keeping the widow filter on. But I reserve the right to change my mind about five times a day before this thing is finished.</p><img src="http://feeds.feedburner.com/~r/AssociativeTrails/~4/c23zNuMxDYA" height="1" width="1"/>]]></content:encoded> <dc:creator>Matt Perdeaux</dc:creator> <dc:subject>Front-end, Design</dc:subject> <dc:date>2009-02-13T06:25:00-00:00</dc:date> <feedburner:origLink>http://www.associativetrails.com/blog/entry/Fun-with-widows</feedburner:origLink></item> <item> <title>Our latest project with Sheppard Robson gets some press</title> <link>http://feedproxy.google.com/~r/AssociativeTrails/~3/R-DFbRovH38/news</link> <guid isPermaLink="false">036A50B4-5056-897F-ED4C318DD2CB8354@http://www.associativetrails.com/</guid> <content:encoded><![CDATA[<p>The current issue of Construction Industry News (Feb 09) includes a great interview with Nick Dunn, IT Manager for Sheppard Robson. In the interview, Nick goes into some of the background behind the <a href="/products/sheppardrobsonIntranet">intranet we built for Sheppard Robson</a>, and explains its impact:</p><p>"We have a dedicated team of seven IT and CAD management personnel across our three offices and in terms of our most significant recent developments we have just launched a new company intranet, which was a major project that we were able to deliver on time and to budget."</p><p>"In terms of the motivation behind this initiative, when I joined in August 2007 the company's intranet was looking a bit tired and was being underused but since the overhaul our members of staff have been able to keep track of all of the latest developments and the communication streams within the group are now very much improved."</p><p>"One of the other key drivers behind the project was to incorporate a search engine that could help us to tap into the wealth of technical information that we have on the site and the feedback we have had since going live with this has been fantastic."</p><p>- Construction Industry News, February 2009, p73</p><img src="http://feeds.feedburner.com/~r/AssociativeTrails/~4/R-DFbRovH38" height="1" width="1"/>]]></content:encoded> <dc:creator>Matt Perdeaux</dc:creator> <dc:subject>Company news</dc:subject> <dc:date>2009-01-23T06:59:00-00:00</dc:date> <feedburner:origLink>http://www.associativetrails.com/news</feedburner:origLink></item> <item> <title>You know you're an ageing geek when...</title> <link>http://feedproxy.google.com/~r/AssociativeTrails/~3/v-zvdmEEltk/You-know-youre-an-ageing-geek-when</link> <guid isPermaLink="false">BBC6CE77-5056-897F-ED3E7FA46274A3CD@http://www.associativetrails.com/</guid> <content:encoded><![CDATA[<p>...you watch a video by the <a href="http://news.bbc.co.uk/1/hi/entertainment/7817603.stm">next big thing in pop music</a> and concentrate on the gadget rather than the fetching young lady or the tune.</p><p>How cool does the <a href="http://tenori-on.yamaha-europe.com/uk/">Yamaha Tenorion</a> look? Ms. Boots is quite a dab-hand at it too, if her <a href="http://uk.youtube.com/user/littlebootsvideos">YouTube channel</a> is anything to go by.</p><p><p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/N6tLRCDqJ2c&hl=en&fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/N6tLRCDqJ2c&hl=en&fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p></p><p>I vaguely remember a Shockwave app back in about '99 that used a similar interface to build up beats, but a full hardware sequencer with this interface is clearly a winner. Very happy with the <a href="http://www.amazon.co.uk/Little-Boots-EP/dp/B001OGRGWY/ref=sr_1_1?ie=UTF8&s=dmusic&qid=1231510976&sr=8-1">Little Boots EP</a> too.</p><p>BTW - Is it a bit weird to name yourself after an <a href="http://en.wikipedia.org/wiki/Caligula">insane Roman emperor</a>?</p><img src="http://feeds.feedburner.com/~r/AssociativeTrails/~4/v-zvdmEEltk" height="1" width="1"/>]]></content:encoded> <dc:creator>Matt Perdeaux</dc:creator> <dc:subject>Culture, Technology &amp; applications</dc:subject> <dc:date>2009-01-09T09:14:00-00:00</dc:date> <feedburner:origLink>http://www.associativetrails.com/blog/entry/You-know-youre-an-ageing-geek-when</feedburner:origLink></item> <item> <title>Finally completed the full set...</title> <link>http://feedproxy.google.com/~r/AssociativeTrails/~3/gs84OJbF2KY/Finally-completed-the-full-set</link> <guid isPermaLink="false">45BF6DEE-5056-897F-ED4A5A3D7CB39065@http://www.associativetrails.com/</guid> <content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/perdeaux/3115425947/" title="I finally made the full shield... by Matt Perdeaux, on Flickr"><img src="http://farm4.static.flickr.com/3085/3115425947_22f97abf97.jpg" width="500" height="384" alt="I finally made the full shield..." /></a></p><p>It took a few months, but I finally got freshly-minted versions to complete the jigsaw. I really quite like the new "tails" designs.</p><img src="http://feeds.feedburner.com/~r/AssociativeTrails/~4/gs84OJbF2KY" height="1" width="1"/>]]></content:encoded> <dc:creator>Matt Perdeaux</dc:creator> <dc:subject>Design</dc:subject> <dc:date>2008-12-17T11:18:00-00:00</dc:date> <feedburner:origLink>http://www.associativetrails.com/blog/entry/Finally-completed-the-full-set</feedburner:origLink></item></channel>
		</rss>
