<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xml:base="http://codebaboon.com"  xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
 <title>Code Baboon</title>
 <link>http://codebaboon.com</link>
 <description></description>
 <language>en</language>
<item>
 <title>Frequency Of Characters In Drupal</title>
 <link>http://codebaboon.com/frequency-characters-drupal</link>
 <description>&lt;p&gt;I&#039;ve been thinking a lot about how we use keyboards, especially as coders, so I ran some frequency analysis on a Drupal installation to see how often certain characters are used, with a view to optimise my keyboard. Specifically, I was looking at non-letter characters (specials and numbers). The code that does this is available as a simple drush command &lt;a href=&quot;https://gist.github.com/1502846&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Here are the results:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://codebaboon.com/frequency-characters-drupal&quot; target=&quot;_blank&quot;&gt;read more&lt;/a&gt;&lt;/p&gt;</description>
 <comments>http://codebaboon.com/frequency-characters-drupal#comments</comments>
 <category domain="http://codebaboon.com/taxonomy/term/18">drupal</category>
 <category domain="http://codebaboon.com/tag/topic/frequency">frequency</category>
 <category domain="http://codebaboon.com/tag/topic/keyboards">keyboards</category>
 <category domain="http://codebaboon.com/tag/topic/rsi">RSI</category>
 <pubDate>Tue, 20 Dec 2011 19:40:56 +0000</pubDate>
 <dc:creator>Mark</dc:creator>
 <guid isPermaLink="false">160 at http://codebaboon.com</guid>
</item>
<item>
 <title>OSX: Remap Keys Microsoft Natural Keyboard</title>
 <link>http://codebaboon.com/osx-remap-keys-microsoft-natural-keyboard</link>
 <description>&lt;p&gt;Just a quick note for the internet at large: to remap the zoom, favorites, shortcut buttons, etc. on a Microsoft Natural Ergonomic Keyboard 4000, when using Apple OSX, you need to use &lt;a href=&quot;http://www.usboverdrive.com/&quot;&gt;USB Overdrive&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Just open the preferences pane, and hit the special key you want to modify. It appears in the list, and you can remap it to anything. Extremely useful.&lt;/p&gt;
&lt;p&gt;EDIT: For a more complex solution, which is powerful but harder to learn, try &lt;a href=&quot;http://www.orderedbytes.com/controllermate/&quot;&gt;ControllerMate&lt;/a&gt;.&lt;/p&gt;
</description>
 <comments>http://codebaboon.com/osx-remap-keys-microsoft-natural-keyboard#comments</comments>
 <category domain="http://codebaboon.com/taxonomy/term/22">apple</category>
 <category domain="http://codebaboon.com/tag/topic/lion">lion</category>
 <category domain="http://codebaboon.com/tag/topic/microsoft-natural-keyboard-4000">microsoft natural keyboard 4000</category>
 <category domain="http://codebaboon.com/tag/topic/osx">osx</category>
 <category domain="http://codebaboon.com/tag/topic/remap-keys">remap keys</category>
 <category domain="http://codebaboon.com/tag/topic/snow-leopard">snow leopard</category>
 <category domain="http://codebaboon.com/tag/topic/usb-overdrive">usb overdrive</category>
 <pubDate>Wed, 30 Nov 2011 21:39:52 +0000</pubDate>
 <dc:creator>Mark</dc:creator>
 <guid isPermaLink="false">159 at http://codebaboon.com</guid>
</item>
<item>
 <title>Performance testing Drupal using The Grinder</title>
 <link>http://codebaboon.com/performance-testing-drupal-using-grinder</link>
 <description>&lt;p&gt;I was unable to co-present at DrupalCon San Francisco due to a &lt;a href=&quot;http://en.wikipedia.org/wiki/2010_eruptions_of_Eyjafjallaj%C3%B6kull&quot;&gt;volcanic ash cloud&lt;/a&gt; that prevented anyone from flying out of London for a week, so David Strauss did my part instead along with Eric Baumes (CTO of The Economist). Thanks to The Internet Archive, the presentation is available and you can see David doing an excellent job with my slides. &lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.archive.org/details/PerformanceTestingTheEconomistOnlineUsingTheGrinder&quot;&gt;http://www.archive.org/details/PerformanceTestingTheEconomistOnlineUsingTheGrinder&lt;/a&gt;&lt;/p&gt;
&lt;div class=&quot;image&quot;&gt;
&lt;object width=&quot;480&quot; height=&quot;380&quot; classid=&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot;&gt;&lt;param value=&quot;true&quot; name=&quot;allowfullscreen&quot; /&gt;&lt;param value=&quot;always&quot; name=&quot;allowscriptaccess&quot; /&gt;&lt;param value=&quot;high&quot; name=&quot;quality&quot; /&gt;&lt;param value=&quot;true&quot; name=&quot;cachebusting&quot; /&gt;&lt;param value=&quot;#000000&quot; name=&quot;bgcolor&quot; /&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.archive.org/flow/flowplayer.commercial-3.2.1.swf&quot; /&gt;&lt;param value=&quot;config={&#039;key&#039;:&#039;#$aa4baff94a9bdcafce8&#039;,&#039;playlist&#039;:[&#039;format=Thumbnail?.jpg&#039;,{&#039;autoPlay&#039;:false,&#039;url&#039;:&#039;tue_1615_305_edited_512kb.mp4&#039;}],&#039;clip&#039;:{&#039;autoPlay&#039;:true,&#039;baseUrl&#039;:&#039;http://www.archive.org/download/PerformanceTestingTheEconomistOnlineUsingTheGrinder/&#039;,&#039;scaling&#039;:&#039;fit&#039;,&#039;provider&#039;:&#039;h264streaming&#039;},&#039;canvas&#039;:{&#039;backgroundColor&#039;:&#039;#000000&#039;,&#039;backgroundGradient&#039;:&#039;none&#039;},&#039;plugins&#039;:{&#039;controls&#039;:{&#039;playlist&#039;:false,&#039;fullscreen&#039;:true,&#039;height&#039;:26,&#039;backgroundColor&#039;:&#039;#000000&#039;,&#039;autoHide&#039;:{&#039;fullscreenOnly&#039;:true}},&#039;h264streaming&#039;:{&#039;url&#039;:&#039;http://www.archive.org/flow/flowplayer.pseudostreaming-3.2.1.swf&#039;}},&#039;contextMenu&#039;:[{},&#039;-&#039;,&#039;Flowplayer v3.2.1&#039;]}&quot; name=&quot;flashvars&quot; /&gt;&lt;embed src=&quot;http://www.archive.org/flow/flowplayer.commercial-3.2.1.swf&quot; type=&quot;application/x-shockwave-flash&quot; width=&quot;480&quot; height=&quot;380&quot; allowfullscreen=&quot;true&quot; allowscriptaccess=&quot;always&quot; cachebusting=&quot;true&quot; bgcolor=&quot;#000000&quot; quality=&quot;high&quot; flashvars=&quot;config={&#039;key&#039;:&#039;#$aa4baff94a9bdcafce8&#039;,&#039;playlist&#039;:[&#039;format=Thumbnail?.jpg&#039;,{&#039;autoPlay&#039;:false,&#039;url&#039;:&#039;tue_1615_305_edited_512kb.mp4&#039;}],&#039;clip&#039;:{&#039;autoPlay&#039;:true,&#039;baseUrl&#039;:&#039;http://www.archive.org/download/PerformanceTestingTheEconomistOnlineUsingTheGrinder/&#039;,&#039;scaling&#039;:&#039;fit&#039;,&#039;provider&#039;:&#039;h264streaming&#039;},&#039;canvas&#039;:{&#039;backgroundColor&#039;:&#039;#000000&#039;,&#039;backgroundGradient&#039;:&#039;none&#039;},&#039;plugins&#039;:{&#039;controls&#039;:{&#039;playlist&#039;:false,&#039;fullscreen&#039;:true,&#039;height&#039;:26,&#039;backgroundColor&#039;:&#039;#000000&#039;,&#039;autoHide&#039;:{&#039;fullscreenOnly&#039;:true}},&#039;h264streaming&#039;:{&#039;url&#039;:&#039;http://www.archive.org/flow/flowplayer.pseudostreaming-3.2.1.swf&#039;}},&#039;contextMenu&#039;:[{},&#039;-&#039;,&#039;Flowplayer v3.2.1&#039;]}&quot;&gt; &lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;
</description>
 <comments>http://codebaboon.com/performance-testing-drupal-using-grinder#comments</comments>
 <category domain="http://codebaboon.com/tag/topic/drupalcon">drupalcon</category>
 <category domain="http://codebaboon.com/tag/topic/presentation">presentation</category>
 <category domain="http://codebaboon.com/tag/topic/grinder">the grinder</category>
 <pubDate>Thu, 10 Feb 2011 11:53:36 +0000</pubDate>
 <dc:creator>Mark</dc:creator>
 <guid isPermaLink="false">158 at http://codebaboon.com</guid>
</item>
<item>
 <title>The Economist: Testing Drupal using Selenium</title>
 <link>http://codebaboon.com/economist-testing-drupal-using-selenium</link>
 <description>&lt;div class=&quot;image&quot;&gt;&lt;img width=&quot;100&quot; height=&quot;91&quot; class=&quot;inline&quot; title=&quot;selenium-logo-small.png&quot; alt=&quot;selenium-logo-small.png&quot; src=&quot;http://codebaboon.com/sites/all/files/selenium-logo-small.png&quot; /&gt;&lt;/div&gt;
&lt;p&gt;Selenium is an automated software testing framework for web applications. It drives a real browser automatically, as if a real person was doing the clicking and typing. We use it here at &lt;a href=&quot;http://www.economist.com&quot;&gt;The Economist&lt;/a&gt; for functional / black-box / acceptance testing, the kind of tests that are repetitive and time-consuming to step through manually.&lt;/p&gt;
&lt;p&gt;We’ve setup a system that runs our full suite of regression tests in parallel, using virtual machines in the Rackspace cloud, on every commit to trunk. The entire suite takes just under 8 minutes to run, which is the length of the longest test. A screencast of each individual test run is captured in full motion MP4 video, and made available as a build artifact in Hudson for anyone to download and watch. The video is captured at full resolution (1200 x 2000), but you can see a scaled down version below of an actual test running on Economist.com:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://codebaboon.com/economist-testing-drupal-using-selenium&quot; target=&quot;_blank&quot;&gt;read more&lt;/a&gt;&lt;/p&gt;</description>
 <comments>http://codebaboon.com/economist-testing-drupal-using-selenium#comments</comments>
 <category domain="http://codebaboon.com/taxonomy/term/26">Drupal Planet</category>
 <category domain="http://codebaboon.com/tag/topic/selenium-zoetrope">selenium zoetrope</category>
 <category domain="http://codebaboon.com/tag/topic/economist">the economist</category>
 <pubDate>Mon, 17 Jan 2011 16:16:07 +0000</pubDate>
 <dc:creator>Mark</dc:creator>
 <guid isPermaLink="false">157 at http://codebaboon.com</guid>
</item>
<item>
 <title>The Economist: Testing Drupal</title>
 <link>http://codebaboon.com/economist-testing-drupal</link>
 <description>&lt;div class=&quot;image&quot;&gt;&lt;img src=&quot;/sites/all/files/hudson-screenshot.png&quot; alt=&quot;hudson-screenshot.png&quot; title=&quot;hudson-screenshot.png&quot; width=&quot;400&quot; height=&quot;298&quot; class=&quot;inline&quot; /&gt;&lt;/div&gt;
&lt;p&gt;You want to test your Drupal code? We’ve learned how to do it, the hard way, through 3 years of experience with continuous integration at The Economist. And I can distill our current approach into a few short paragraphs:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://codebaboon.com/economist-testing-drupal&quot; target=&quot;_blank&quot;&gt;read more&lt;/a&gt;&lt;/p&gt;</description>
 <comments>http://codebaboon.com/economist-testing-drupal#comments</comments>
 <category domain="http://codebaboon.com/tag/topic/ci">ci</category>
 <category domain="http://codebaboon.com/taxonomy/term/18">drupal</category>
 <category domain="http://codebaboon.com/tag/topic/selenium">selenium</category>
 <category domain="http://codebaboon.com/tag/topic/testing">testing</category>
 <pubDate>Thu, 13 Jan 2011 14:40:36 +0000</pubDate>
 <dc:creator>Mark</dc:creator>
 <guid isPermaLink="false">156 at http://codebaboon.com</guid>
</item>
<item>
 <title>The Economist: Human testing</title>
 <link>http://codebaboon.com/economist-human-testing</link>
 <description>&lt;p&gt;We have a fun concept here that we call a “human test instance”. Anyone can create an entire copy of Economist.com, running in the cloud, on a subdomain of their choice, on a branch of their choice, with just a few clicks in Hudson. “Human testing” implies that the instance is used by a human to do manual testing, however we use a human test instance to run automated Selenium tests, and each one also effectively tests the process of running the update functions every day.&lt;/p&gt;
&lt;div class=&quot;image&quot;&gt;&lt;img src=&quot;/sites/all/files/hudson-butler.png&quot; alt=&quot;hudson-butler.png&quot; title=&quot;hudson-butler.png&quot; width=&quot;96&quot; height=&quot;96&quot; class=&quot;inline&quot; /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;http://codebaboon.com/economist-human-testing&quot; target=&quot;_blank&quot;&gt;read more&lt;/a&gt;&lt;/p&gt;</description>
 <comments>http://codebaboon.com/economist-human-testing#comments</comments>
 <category domain="http://codebaboon.com/tag/topic/ci">ci</category>
 <category domain="http://codebaboon.com/taxonomy/term/18">drupal</category>
 <category domain="http://codebaboon.com/tag/topic/hudson">hudson</category>
 <category domain="http://codebaboon.com/tag/topic/economist">the economist</category>
 <pubDate>Tue, 11 Jan 2011 16:16:46 +0000</pubDate>
 <dc:creator>Mark</dc:creator>
 <guid isPermaLink="false">155 at http://codebaboon.com</guid>
</item>
<item>
 <title>The Economist: Coding workflow</title>
 <link>http://codebaboon.com/economist-coding-workflow</link>
 <description>&lt;p&gt;Economist developers are a big, distributed lot. At one point we had 4 teams doing development in 4 different timezones from San Francisco to London. As you might imagine, this presents some extremely interesting challenges, like source code control and maintaining communication channels between teams to reduce the amount of toe stepping and work duplication going on.&lt;/p&gt;
&lt;p&gt;The single tool that has had the largest positive impact on code quality and general sanity has been Launchpad. We switched from Subversion to Bazaar / Launchpad in March 2010 and although we didn’t do any official metrics, I would guess we have slashed the defect rate by at least half since doing that.&lt;/p&gt;
&lt;div class=&quot;image&quot;&gt;&lt;img src=&quot;/sites/all/files/bazaar-logo.png&quot; alt=&quot;bazaar-logo.png&quot; title=&quot;bazaar-logo.png&quot; width=&quot;119&quot; height=&quot;121&quot; class=&quot;inline&quot; /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;http://codebaboon.com/economist-coding-workflow&quot; target=&quot;_blank&quot;&gt;read more&lt;/a&gt;&lt;/p&gt;</description>
 <comments>http://codebaboon.com/economist-coding-workflow#comments</comments>
 <category domain="http://codebaboon.com/tag/topic/bazaar">bazaar</category>
 <category domain="http://codebaboon.com/taxonomy/term/18">drupal</category>
 <category domain="http://codebaboon.com/tag/topic/launchpad">launchpad</category>
 <category domain="http://codebaboon.com/tag/topic/economist">the economist</category>
 <pubDate>Tue, 11 Jan 2011 15:38:24 +0000</pubDate>
 <dc:creator>Mark</dc:creator>
 <guid isPermaLink="false">154 at http://codebaboon.com</guid>
</item>
<item>
 <title>The Economist: Local environments</title>
 <link>http://codebaboon.com/economist-local-environments</link>
 <description>&lt;p&gt;Running an out-of-the-box stack like MAMP may be fine for part-time tinkerers, but if you’re writing code for a serious site you’ll quickly realise that it’s important to develop against the same version of the stack that’s running in the production environment. You’d be amazed at how many subtle bugs emerge between two minor point releases of PHP, APC, MySQL or any other of the myriad components. Catching them early is crucial, and the easiest way to do that is to use a virtualised developer environment. A good choice for Apple OSX is VMWare Fusion:&lt;/p&gt;
&lt;div class=&quot;image&quot;&gt;&lt;img src=&quot;/sites/all/files/vmware-fusion-centos.png&quot; alt=&quot;vmware-fusion-centos.png&quot; title=&quot;vmware-fusion-centos.png&quot; width=&quot;405&quot; height=&quot;326&quot; class=&quot;inline&quot; /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;http://codebaboon.com/economist-local-environments&quot; target=&quot;_blank&quot;&gt;read more&lt;/a&gt;&lt;/p&gt;</description>
 <comments>http://codebaboon.com/economist-local-environments#comments</comments>
 <category domain="http://codebaboon.com/taxonomy/term/18">drupal</category>
 <category domain="http://codebaboon.com/tag/topic/local-enviornments">local enviornments</category>
 <category domain="http://codebaboon.com/tag/topic/economist">the economist</category>
 <pubDate>Tue, 11 Jan 2011 14:33:35 +0000</pubDate>
 <dc:creator>Mark</dc:creator>
 <guid isPermaLink="false">153 at http://codebaboon.com</guid>
</item>
<item>
 <title>Cookie debugging fun</title>
 <link>http://codebaboon.com/cookie-debugging-fun</link>
 <description>&lt;p&gt;Yesterday we debugged a problem of a cookie inexplicably disappearing. It turned out that an invalid favicon.ico link was causing the issue (!). The CDN module rewrites the favicon link in the &lt;head&gt; to be served from media.economist.com:&lt;/head&gt;&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;codeblock&quot;&gt;&lt;code&gt;&lt;span style=&quot;color: #000000&quot;&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;&amp;lt;?php&lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;link rel&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&quot;shortcut icon&quot; &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;href&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&quot;http://media.economist.com/sites/all/themes/econ/favicon.ico&quot; &lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&quot;image/x-icon&quot; &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;/&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;The CDN, however, wasn&#039;t configured to serve .ico files, so it was issuing a redirect to &lt;a href=&quot;http://www.economist.com&quot; title=&quot;http://www.economist.com&quot;&gt;http://www.economist.com&lt;/a&gt; (the homepage). That caused weirdness with the favicon in general, although sometimes it would appear, presumably by magic. &lt;/p&gt;
&lt;p&gt;When going to a &lt;a href=&quot;http://www.economist.com/world/africa&quot;&gt;channel page&lt;/a&gt;, the cookie would be initially set by the first set of response headers, then the favicon would load a redirect to the homepage, which immediately clears the cookie (correct behaviour). However, there are no visible side effects that anything is going wrong except an occasionally wonky favicon.&lt;/p&gt;
&lt;p&gt;Let&#039;s just say that debugging this was... non-trivial. &lt;/p&gt;
</description>
 <comments>http://codebaboon.com/cookie-debugging-fun#comments</comments>
 <category domain="http://codebaboon.com/tag/topic/cookie">cookie</category>
 <category domain="http://codebaboon.com/taxonomy/term/18">drupal</category>
 <category domain="http://codebaboon.com/tag/topic/favicon">favicon</category>
 <category domain="http://codebaboon.com/tag/topic/html">html</category>
 <pubDate>Wed, 20 Oct 2010 09:44:37 +0000</pubDate>
 <dc:creator>Mark</dc:creator>
 <guid isPermaLink="false">152 at http://codebaboon.com</guid>
</item>
<item>
 <title>Technical debt &amp; refactoring</title>
 <link>http://codebaboon.com/technical-debt-refactoring</link>
 <description>&lt;p&gt;Here&#039;s my attempt at bringing to life the &quot;Technical Debt&quot; analogy. I wrote this and circulated it around at The Economist to help others understand why refactoring code is so important, especially when doing agile. Repeatedly prioritising short-term wins, without stopping to consider a codebase&#039;s architecture, results in an unmaintainable system:&lt;/p&gt;
&lt;p&gt;The manufacturing of cars at Legacy Motors (LM) was all done by a team of talented engineers and designers, who hand-made each vehicle to an exact customer specification. All was well, until one day, the shareholders, wanting to expand business, came up with a plan to increase sales: they decided to invest in an assembly line. By getting the team to build machines that build cars, instead of having the engineers build the cars themselves, they could greatly increase their CPM (Cars Per Month) and vastly expand business.&lt;/p&gt;
&lt;div class=&quot;image&quot;&gt;&lt;img src=&quot;/sites/all/files/robot-car.jpg&quot; alt=&quot;robot-car.jpg&quot; title=&quot;robot-car.jpg&quot; width=&quot;400&quot; height=&quot;267&quot; class=&quot;inline&quot; /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;http://codebaboon.com/technical-debt-refactoring&quot; target=&quot;_blank&quot;&gt;read more&lt;/a&gt;&lt;/p&gt;</description>
 <comments>http://codebaboon.com/technical-debt-refactoring#comments</comments>
 <category domain="http://codebaboon.com/tag/topic/refactoring">refactoring</category>
 <category domain="http://codebaboon.com/tag/topic/software">software</category>
 <category domain="http://codebaboon.com/tag/topic/strategy">strategy</category>
 <category domain="http://codebaboon.com/tag/topic/technical-debt">technical debt</category>
 <pubDate>Sun, 17 Oct 2010 10:12:24 +0000</pubDate>
 <dc:creator>Mark</dc:creator>
 <guid isPermaLink="false">151 at http://codebaboon.com</guid>
</item>
</channel>
</rss>
