<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="/rss.xsl" media="screen"?>
<rss version="2.0" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule">
   <channel>
      <language>en</language>
      <creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/2.0/uk/</creativeCommons:license>
            <pubDate>Thu, 1 Jan 1970 00:00:00 +0000</pubDate>
      <lastBuildDate>Thu, 1 Jan 1970 00:00:00 +0000</lastBuildDate>
            <ttl>60</ttl>
      <docs>http://www.audioscrobbler.net/data/webservices</docs>      <title>Russ's Last.fm Journal</title>
      <link>http://www.last.fm/user/Russ/journal</link>
      <description>The Last.fm journal for Russ.
        Last.fm journals are a place to talk about all things music.</description>
      <item>
         <title>Portishead @ Brixton Academy</title>
         <link>http://www.last.fm/user/Russ/journal/2008/04/17/ze_portishead_%40_brixton_academy</link>
         <pubDate>Thu, 17 Apr 2008 23:34:58 +0000</pubDate>
         <guid isPermaLink="true">http://www.last.fm/user/Russ/journal/2008/04/17/ze_portishead_%40_brixton_academy</guid>
         <description><![CDATA[<div class="bbcode"><a href="http://www.last.fm/event/485281+Portishead" class="bbcode_event">Portishead @ Brixton Academy</a><br /><br />This gig was packed. I was stuck at the back with a load of people who were talking throughout the whole thing (why?).<br /><br />Damn, it was good.<br /><br />There are very few gigs, even for my favourite bands, where I walk out and wish it could have been twice as long - this was one of them.<br /><br />The music: people seemed a bit unusure about the new tracks. Maybe they hadn't heard them before - I had, and I thought they were ace. They started with <a title="Portishead &ndash; Silence" href="http://www.last.fm/music/Portishead/_/Silence" class="bbcode_track">Silence</a>, which I think is my favourite track on the new album. <a title="Portishead &ndash; Machine Gun" href="http://www.last.fm/music/Portishead/_/Machine+Gun" class="bbcode_track">Machine Gun</a> was much better live than it was on the album.<br /><br />The old tracks were good too - they were all altered slightly and that made them seem fresher, especially <a title="Portishead &ndash; Over" href="http://www.last.fm/music/Portishead/_/Over" class="bbcode_track">Over</a>, which had a different pace. They were all great though.<br /><br />Now I have to review the technical bits... The LX/visuals were pretty great - some of the best I've seen at this sort of gig.<br /><br />The sound was interesting - I think the Academy is a great-sounding venue (mainly because it's so big and interestingly-shaped), but to start with I thought the sound was a bit muddy. But it seems they were trying to emphasize Beth's voice over everything else. I dunno if it was an artistic choice or just a lack of time, but I think it worked quite well, at least in places. Certainly it's some of the best vocal mixing I've heard.<br /><br />I hope Portishead stick around and don't disappear for another 11 years. I especially hope they play at Glasto this year, because that'll be really special.</div>]]></description>
               </item>
      <item>
         <title>Postgres Connection Pools: Pgpool vs. PgBouncer</title>
         <link>http://www.last.fm/user/Russ/journal/2008/02/21/zd_postgres_connection_pools%3A_pgpool_vs._pgbouncer</link>
         <pubDate>Thu, 21 Feb 2008 17:03:41 +0000</pubDate>
         <guid isPermaLink="true">http://www.last.fm/user/Russ/journal/2008/02/21/zd_postgres_connection_pools%3A_pgpool_vs._pgbouncer</guid>
         <description><![CDATA[<div class="bbcode">We use <a href="http://www.postgresql.org/" rel="nofollow">Postgres</a> for a lot of stuff here. Since it's a multi-process database server (unlike  MySQL which is multi-threaded), creating a direct connection to Postgres is relatively slow.<br /><br />This can be worked around by using a connection pool server in front of the DB. Up until recently we used <a href="http://pgpool.projects.postgresql.org/" rel="nofollow">pgpool</a> for this. But it has a few disadvantages:<br /><br />* It's multi-process itself (although it preforks), so it eats quite a lot of RAM.<br />* Once you reach the maximum number of processes, it &quot;queues&quot; incoming connections in the OS accept queue, which is ugly.<br />* It has poor (but improving) instrumentation.<br /><br />Recently we switched to using <a href="https://developer.skype.com/SkypeGarage/DbProjects/PgBouncer" rel="nofollow">PgBouncer</a> from our friends at Skype. It fixes all these problems quite nicely:<br /><br />* It uses single-process event-based socket handling, using the excellent <a href="http://www.monkey.org/~provos/libevent/" rel="nofollow">libevent</a> like memcached. This means it uses several orders of magnitude less RAM than pgpool.<br />* It has configurable internal queuing, so your clients' connections don't time out if they're in the queue.<br />* It has good instrumentation in the form of an internal pseudo-database you can query.<br /><br />Now here are some pretty graphs. Spot where we changed:<br /><br /><img src="http://static.last.fm/russ/pgpoolvspgbouncer/load.png" /><br /><img src="http://static.last.fm/russ/pgpoolvspgbouncer/mem.png" /><br /><img src="http://static.last.fm/russ/pgpoolvspgbouncer/cpu.png" /></div>]]></description>
               </item>
      <item>
         <title>The Cinematic Orchestra - Live at the Barbican</title>
         <link>http://www.last.fm/user/Russ/journal/2007/05/07/zc_the_cinematic_orchestra_-_live_at_the_barbican</link>
         <pubDate>Mon, 7 May 2007 22:22:23 +0000</pubDate>
         <guid isPermaLink="true">http://www.last.fm/user/Russ/journal/2007/05/07/zc_the_cinematic_orchestra_-_live_at_the_barbican</guid>
         <description><![CDATA[<div class="bbcode"><a href="http://www.last.fm/event/73698+The+Cinematic+Orchestra+at+Barbican+Centre+on+6+May+2007" class="bbcode_event">Sun 6 May – The Cinematic Orchestra</a><br /><br />Here's (most of) the track listing, for those of you with the live CD:<br /><br /><strong><a href="http://musicbrainz.org/release/bda53589-880c-488a-8a18-9ac184bb4972.html" rel="nofollow">Disc 1</a></strong>:<br />1. <a title="The Cinematic Orchestra &ndash; The Awakening of a Woman" href="http://www.last.fm/music/The+Cinematic+Orchestra/_/The+Awakening+of+a+Woman" class="bbcode_track">The Awakening of a Woman</a> (<a title="The Cinematic Orchestra - Man With a Movie Camera" href="http://www.last.fm/music/The+Cinematic+Orchestra/Man+With+a+Movie+Camera" class="bbcode_album">Man With a Movie Camera</a>)<br />2. <a title="The Cinematic Orchestra &ndash; Child Song" href="http://www.last.fm/music/The+Cinematic+Orchestra/_/Child+Song" class="bbcode_track">Child Song</a> (<a title="The Cinematic Orchestra - Ma Fleur" href="http://www.last.fm/music/The+Cinematic+Orchestra/Ma+Fleur" class="bbcode_album">Ma Fleur</a>)<br />3. <a title="The Cinematic Orchestra &ndash; As the Stars Fall" href="http://www.last.fm/music/The+Cinematic+Orchestra/_/As+the+Stars+Fall" class="bbcode_track">As the Stars Fall</a> (<a title="The Cinematic Orchestra - Ma Fleur" href="http://www.last.fm/music/The+Cinematic+Orchestra/Ma+Fleur" class="bbcode_album">Ma Fleur</a>)<br />4. <a title="The Cinematic Orchestra &ndash; Familiar Ground" href="http://www.last.fm/music/The+Cinematic+Orchestra/_/Familiar+Ground" class="bbcode_track">Familiar Ground</a> (<a title="The Cinematic Orchestra - Ma Fleur" href="http://www.last.fm/music/The+Cinematic+Orchestra/Ma+Fleur" class="bbcode_album">Ma Fleur</a>)<br />5. <a title="The Cinematic Orchestra &ndash; Ode To The Big Sea" href="http://www.last.fm/music/The+Cinematic+Orchestra/_/Ode+To+The+Big+Sea" class="bbcode_track">Ode To The Big Sea</a> (<a title="The Cinematic Orchestra - Motion" href="http://www.last.fm/music/The+Cinematic+Orchestra/Motion" class="bbcode_album">Motion</a>)<br /><br /><strong><a href="http://musicbrainz.org/release/2f00c1d8-9b66-4d6e-be64-6070c7bd33cc.html" rel="nofollow">Disc 2</a></strong>:<br />1. <a title="The Cinematic Orchestra &ndash; Breathe" href="http://www.last.fm/music/The+Cinematic+Orchestra/_/Breathe" class="bbcode_track">Breathe</a> (<a title="The Cinematic Orchestra - Ma Fleur" href="http://www.last.fm/music/The+Cinematic+Orchestra/Ma+Fleur" class="bbcode_album">Ma Fleur</a>)<br />2. <a title="The Cinematic Orchestra &ndash; Man With A Movie Camera" href="http://www.last.fm/music/The+Cinematic+Orchestra/_/Man+With+A+Movie+Camera" class="bbcode_track">Man With A Movie Camera</a> (<a title="The Cinematic Orchestra - Man With a Movie Camera" href="http://www.last.fm/music/The+Cinematic+Orchestra/Man+With+a+Movie+Camera" class="bbcode_album">Man With a Movie Camera</a>) <br />3. <a title="The Cinematic Orchestra &ndash; To Build a Home" href="http://www.last.fm/music/The+Cinematic+Orchestra/_/To+Build+a+Home" class="bbcode_track">To Build a Home</a> (<a title="The Cinematic Orchestra - Ma Fleur" href="http://www.last.fm/music/The+Cinematic+Orchestra/Ma+Fleur" class="bbcode_album">Ma Fleur</a>) <br />4. <a title="The Cinematic Orchestra &ndash; Channel 1 Suite" href="http://www.last.fm/music/The+Cinematic+Orchestra/_/Channel+1+Suite" class="bbcode_track">Channel 1 Suite</a> (<a title="The Cinematic Orchestra - Motion" href="http://www.last.fm/music/The+Cinematic+Orchestra/Motion" class="bbcode_album">Motion</a>) <br />5. ?</div>]]></description>
               </item>
      <item>
         <title>Spam Filter Investigation</title>
         <link>http://www.last.fm/user/Russ/journal/2007/03/26/zb_spam_filter_investigation</link>
         <pubDate>Mon, 26 Mar 2007 00:10:05 +0000</pubDate>
         <guid isPermaLink="true">http://www.last.fm/user/Russ/journal/2007/03/26/zb_spam_filter_investigation</guid>
         <description><![CDATA[<div class="bbcode">In the recent (slightly problematic) version of the submissions server, we've added logging of items which are rejected by the spam filter for content reasons. I want to try and use these to evaluate whether we should remove some rules.<br /><br />Here is a little summary (URLs have been broken by me to stop them profiting off my pagerank and the forums' auto-linking).<br /><br /><strong>Top Rejected Artists:</strong><br /><br />  14633 various artists<br />   6193 various<br />   5662 va<br />   4970 artist<br />   3130 unknown artist<br />   2905 no artist<br />   1287 (+44)<br />   1175 unknown<br />    208 [amatory]<br />    182 various artists dubstep allstars vol. 4 - disc 2 (mixed by dj hatcha)<br />    133 [ingenting]<br />    132 mosaic.wav<br />    122 [game music]<br />    116 v/a<br />    106 (smog)<br />     88 noartist<br />     71 [spunge]<br />     66 [o3]<br />     58 http://spyd3 r.ru/ipbforum<br />     58 elliot goldenthal &amp; various artists<br />     50 [:sitd:]<br />     46 various artists jon brion<br />     45 [soundtrack]<br />     41 (la vela puerca)<br />     32 [www.potencia dance.com]<br />     32 (delerium)<br />     29 [raised fist]<br />     28 various artists - system recordings<br />     28 [unknown]<br />     28 (by dj morphologik)<br /><br /><strong>Top Rejected Tracks:</strong><br /><br />   1742 track 10<br />   1736 track 01<br />   1666 track 02<br />   1632 track 03<br />   1573 (antichrist television blues)<br />   1528 track 11<br />   1507 track 04<br />   1438 track 05<br />   1317 track 06<br />   1311 track 12<br />   1233 track 07<br />   1220 track 08<br />   1138 track 13<br />   1043 track 09<br />    977 track 1<br />    952 track 14<br />    896 track 2<br />    780 track 3<br />    721 track 15<br />    710 track 4<br />    706 track 6<br />    696 track 5<br />    618 track 16<br />    584 track 7<br />    566 audiotrack 01<br />    562 track 8<br />    535 track 9<br />    507 track 17<br />    496 audiotrack 02<br />    494 audiotrack 03<br /><br /><strong>Top tracks (ignoring &quot;Track&quot; and &quot;Audiotrack&quot; filters)</strong>:<br /><br />   1573 (antichrist television blues)<br />    351 (untitled)<br />    294 (nice dream)<br />    186 (sic)<br />    132 (exchange)<br />    130 (*fin)<br />    120 (intro)<br />    102 bohemian rhapsody.mp3<br />     78 albumwrap album<br />     77 (manifest)<br />     74 (10) and counting<br />     73 (515)<br />     71 (interlude)<br />     68 (c'estlavie; en)<br />     66 (d▒but)<br />     63 (hospital vespers)<br />     61 (letter from home)<br />     58 (intermission)<br />     56 childhood (1)<br />     54 (camel; ch)<br />     52 (hidden track)<br />     44 (unlisted)<br />     43 (12) bother<br />     42 (something)<br />     39 (past due)<br />     33 (a)<br />     31 (hidden finale)<br />     28 (subversive script)<br />     28 (b)<br />     27 (reverse)</div>]]></description>
               </item>
      <item>
         <title>PHP House of Horrors</title>
         <link>http://www.last.fm/user/Russ/journal/2006/11/13/za_php_house_of_horrors</link>
         <pubDate>Mon, 13 Nov 2006 17:45:36 +0000</pubDate>
         <guid isPermaLink="true">http://www.last.fm/user/Russ/journal/2006/11/13/za_php_house_of_horrors</guid>
         <description><![CDATA[<div class="bbcode">Two weeks late for hallowe'en, but here's my latest PHP nightmare. Consider the following two pieces of PHP4 code, from a singleton pattern (apologies for the formatting, I need to fix our BBCode):<br /><br /><strong>A:</strong><br /><code><br />    function &amp;instance() {<br />        global $httpmanager_instance;<br />        if (!isset($httpmanager_instance)) {<br />            $httpmanager_instance =&amp; new HTTPManager();<br />        }   <br />        return $httpmanager_instance;<br />    }  <br /></code><br /><br /><strong>B:</strong><br /><code><br />    function &amp;instance() {<br />        if (!isset($GLOBALS['httpmanager_instance'])) {<br />            $GLOBALS['httpmanager_instance'] =&amp; new HTTPManager();<br />        }<br />        return $GLOBALS['httpmanager_instance'];<br />    }<br /></code><br /><br />They're identical right? Wrong. &quot;global $var&quot; doesn't act the same as &quot;$GLOBALS['var']&quot;. <br /><br />In fact, &quot;global $var&quot; is equivalent to &quot;$var =&amp; $GLOBALS['var']&quot;, which means that example A above is equivalent to:<br /><br /><strong>A1:</strong><br /><code><br />    function &amp;instance() {<br />        $httpmanager_instance =&amp; $GLOBALS['httpmanager_instance'];<br />        if (!isset($httpmanager_instance)) {<br />            $httpmanager_instance =&amp; new HTTPManager();<br />        }   <br />        return $httpmanager_instance;<br />    } <br /></code><br /><br />Now it should be (more) obvious what is happening. $httpmanager_instance contains a <em>reference</em>, which is getting replaced when you use <strong>=&amp;</strong> on it, while the actual global variable remains empty. The answer in this case is to use <strong>=</strong> instead of <strong>=&amp;</strong>, because in that case, PHP will follow the reference and replace the original variable:<br /><br /><strong>A2:</strong><br /><code><br />    function &amp;instance() {<br />        global $httpmanager_instance;<br />        if (!isset($httpmanager_instance)) {<br />            $httpmanager_instance = new HTTPManager();<br />        }   <br />        return $httpmanager_instance;<br />    } <br /></code><br /><br />This is equivalent to B above.<br /><br />Now I'm not entirely sure <em>what</em> the PHP developers were thinking when they decided to make references and variables appear identical, but they certainly weren't following the <a href="http://catb.org/esr/writings/taoup/html/ch11s01.html" rel="nofollow">Rule of Least Surprise</a>...<br /><br />But PHP5 fixes all this, right?</div>]]></description>
               </item>
      <item>
         <title>New Audioscrobbler Protocol</title>
         <link>http://www.last.fm/user/Russ/journal/2006/10/03/z9_new_audioscrobbler_protocol</link>
         <pubDate>Tue, 3 Oct 2006 14:01:21 +0000</pubDate>
         <guid isPermaLink="true">http://www.last.fm/user/Russ/journal/2006/10/03/z9_new_audioscrobbler_protocol</guid>
         <description><![CDATA[<div class="bbcode">The first draft of the long-overdue Audioscrobbler Protocol 1.2 is out. Read more <a href="http://www.last.fm/forum/21716/_/176059">here</a> (comments in that thread, please).</div>]]></description>
               </item>
      <item>
         <title>Free Bonobo Ticket Tonight!</title>
         <link>http://www.last.fm/user/Russ/journal/2006/09/26/20z5lc_free_bonobo_ticket_tonight%21</link>
         <pubDate>Tue, 26 Sep 2006 11:58:51 +0000</pubDate>
         <guid isPermaLink="true">http://www.last.fm/user/Russ/journal/2006/09/26/20z5lc_free_bonobo_ticket_tonight%21</guid>
         <description><![CDATA[<div class="bbcode">I have one spare ticket to the <a href="http://www.last.fm/music/Bonobo" class="bbcode_artist">Bonobo</a> album launch party at The Luminaire in Kilburn tonight (September 26th). I got it for free, so I'm giving it away for free to the first comer.</div>]]></description>
               </item>
      <item>
         <title>Scrobbling Visualisations</title>
         <link>http://www.last.fm/user/Russ/journal/2006/09/13/z8_scrobbling_visualisations</link>
         <pubDate>Wed, 13 Sep 2006 23:02:13 +0000</pubDate>
         <guid isPermaLink="true">http://www.last.fm/user/Russ/journal/2006/09/13/z8_scrobbling_visualisations</guid>
         <description><![CDATA[<div class="bbcode">I've been working on geographic visualisations in my spare time. Here's an animation of the number of scrobbles over a 24-hour period:<br /><br />Still:<br /><br /><a href="http://static.last.fm/vis/scrobbles.gif"><img src="http://static.last.fm/vis/preview.gif" /></a><br /><br /><a href="http://static.last.fm/vis/scrobbles.gif">(click for the animation, 4MB animated GIF)</a></div>]]></description>
               </item>
      <item>
         <title>DeviantArt</title>
         <link>http://www.last.fm/user/Russ/journal/2006/08/15/z7_deviantart</link>
         <pubDate>Tue, 15 Aug 2006 10:41:01 +0000</pubDate>
         <guid isPermaLink="true">http://www.last.fm/user/Russ/journal/2006/08/15/z7_deviantart</guid>
         <description><![CDATA[<div class="bbcode"><a href="http://www.deviantart.com/" rel="nofollow">DeviantArt</a> has a new design. I really like it, it's got much better contrast than  their old site had, and they've got a nice depth effect going on now. Kind of like what the new Last.fm design did.<br /><br />I love their JS menus too.<br /><br />So what do the <a href="http://spyed.deviantart.com/journal/poll/164399/" rel="nofollow">users think</a> of the new design? It's almost a 50:50 split between love and hate. Kind of like what the new Last.fm design did.<br /><br />You can't please everyone.</div>]]></description>
               </item>
      <item>
         <title>Hardware</title>
         <link>http://www.last.fm/user/Russ/journal/2006/07/01/z6_hardware</link>
         <pubDate>Sat, 1 Jul 2006 16:46:57 +0000</pubDate>
         <guid isPermaLink="true">http://www.last.fm/user/Russ/journal/2006/07/01/z6_hardware</guid>
         <description><![CDATA[<div class="bbcode">For those of you who think it can't be so hard to run this site, here are a few facts for you:<br /><br />18 web nodes - newest ones are Dual-CPU dualcore Opteron 4GB RAM 1U.<br />12 profile database servers (soon to be Hadoop nodes) - 12-disk SCSI 8GB RAM dual Opteron 3U.<br />2 global database servers - 12-disk SCSI 16GB RAM dual Opteron 3U.<br />5 storage nodes - 12 SATA disks, 3TB each.<br />Plus another 20 or so general-purpose boxes for indexing, searching, charts, etc.<br /><br />We have 5 racks' worth of equipment spread across 2 datacenters in east London. All in all about 140 CPU cores and 230GB of RAM.<br /><br />Average bandwidth usage: 300 Megabits (10 megabits of that is solely HTML).<br />Total power supply: 24kW (102 amps), which probably costs us about £100/day.</div>]]></description>
               </item>
   </channel>
</rss>
