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

	<title>Planet London Python</title>
	<link rel="self" href="http://londonpython.org.uk/atom.xml"/>
	<link href="http://londonpython.org.uk/"/>
	<id>http://londonpython.org.uk/atom.xml</id>
	<updated>2010-02-09T08:22:33+00:00</updated>
	<generator uri="http://www.planetplanet.org/">Planet/2.0 +http://www.planetplanet.org</generator>

	<entry>
		<title type="html">A Little Bit of Python Episode 4: A Pre-PyCon Special</title>
		<link href="http://feedproxy.google.com/~r/voidspace/~3/haqRGUvJPHo/arch_d7_2010_02_06.shtml"/>
		<id>http://feedproxy.google.com/~r/voidspace/~3/haqRGUvJPHo/arch_d7_2010_02_06.shtml</id>
		<updated>2010-02-08T00:13:48+00:00</updated>
		<content type="html">A Little Bit of Python is an occasional podcast on Python related topics with myself, Brett Cannon, Jesse Noller, Steve Holden and Andrew Kuchling. The website is in progress and apparently nearly ready, thanks to Jesse and various other people who we will thank as soon as it is done. ... [233 words]&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=haqRGUvJPHo:ndLyoYShnt0:F7zBnMyn0Lo&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=haqRGUvJPHo:ndLyoYShnt0:F7zBnMyn0Lo&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=haqRGUvJPHo:ndLyoYShnt0:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=haqRGUvJPHo:ndLyoYShnt0:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=haqRGUvJPHo:ndLyoYShnt0:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=haqRGUvJPHo:ndLyoYShnt0:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=haqRGUvJPHo:ndLyoYShnt0:dnMXMwOfBR0&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/voidspace?d=dnMXMwOfBR0&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/voidspace/~4/haqRGUvJPHo&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Fuzzyman</name>
			<uri>http://www.voidspace.org.uk/python/weblog/index.shtml</uri>
		</author>
		<source>
			<title type="html">The Voidspace Techie Blog</title>
			<subtitle type="html">Python Programming, news on the Voidspace Python Projects and all things techie.</subtitle>
			<link rel="self" href="http://feeds.feedburner.com/voidspace"/>
			<id>http://feeds.feedburner.com/voidspace</id>
			<updated>2010-02-08T02:22:07+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">ConfigObj 4.7.1 (and how to test warnings)</title>
		<link href="http://feedproxy.google.com/~r/voidspace/~3/PnQC1BTECdQ/arch_d7_2010_02_06.shtml"/>
		<id>http://feedproxy.google.com/~r/voidspace/~3/PnQC1BTECdQ/arch_d7_2010_02_06.shtml</id>
		<updated>2010-02-07T23:52:41+00:00</updated>
		<content type="html">I hate doing releases. I haven't managed to automate the whole process (I should probably work on that), although setup.py sdist upload certainly helps. ... [290 words]&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=PnQC1BTECdQ:xn9nyhK9vdM:F7zBnMyn0Lo&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=PnQC1BTECdQ:xn9nyhK9vdM:F7zBnMyn0Lo&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=PnQC1BTECdQ:xn9nyhK9vdM:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=PnQC1BTECdQ:xn9nyhK9vdM:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=PnQC1BTECdQ:xn9nyhK9vdM:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=PnQC1BTECdQ:xn9nyhK9vdM:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=PnQC1BTECdQ:xn9nyhK9vdM:dnMXMwOfBR0&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/voidspace?d=dnMXMwOfBR0&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/voidspace/~4/PnQC1BTECdQ&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Fuzzyman</name>
			<uri>http://www.voidspace.org.uk/python/weblog/index.shtml</uri>
		</author>
		<source>
			<title type="html">The Voidspace Techie Blog</title>
			<subtitle type="html">Python Programming, news on the Voidspace Python Projects and all things techie.</subtitle>
			<link rel="self" href="http://feeds.feedburner.com/voidspace"/>
			<id>http://feeds.feedburner.com/voidspace</id>
			<updated>2010-02-08T02:22:07+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Discover 0.3.2 and the load_tests protocol</title>
		<link href="http://feedproxy.google.com/~r/voidspace/~3/DsxgXf9syDo/arch_d7_2010_02_06.shtml"/>
		<id>http://feedproxy.google.com/~r/voidspace/~3/DsxgXf9syDo/arch_d7_2010_02_06.shtml</id>
		<updated>2010-02-07T23:25:47+00:00</updated>
		<content type="html">discover is a test discovery module for the standard library unittest test framework. Test discovery is built into unittest in Python 2.7 and 3.2. ... [335 words]&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=DsxgXf9syDo:gsXaetyeZ-k:F7zBnMyn0Lo&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=DsxgXf9syDo:gsXaetyeZ-k:F7zBnMyn0Lo&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=DsxgXf9syDo:gsXaetyeZ-k:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=DsxgXf9syDo:gsXaetyeZ-k:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=DsxgXf9syDo:gsXaetyeZ-k:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=DsxgXf9syDo:gsXaetyeZ-k:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=DsxgXf9syDo:gsXaetyeZ-k:dnMXMwOfBR0&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/voidspace?d=dnMXMwOfBR0&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/voidspace/~4/DsxgXf9syDo&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Fuzzyman</name>
			<uri>http://www.voidspace.org.uk/python/weblog/index.shtml</uri>
		</author>
		<source>
			<title type="html">The Voidspace Techie Blog</title>
			<subtitle type="html">Python Programming, news on the Voidspace Python Projects and all things techie.</subtitle>
			<link rel="self" href="http://feeds.feedburner.com/voidspace"/>
			<id>http://feeds.feedburner.com/voidspace</id>
			<updated>2010-02-08T02:22:07+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en-us">
		<title type="html">Links for 2010-02-05 [del.icio.us]</title>
		<link href="http://feedproxy.google.com/~r/SmallValuesOfCool/~3/1vcBXo-JeIg/brunns"/>
		<id>http://del.icio.us/brunns#2010-02-05</id>
		<updated>2010-02-06T08:00:00+00:00</updated>
		<content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.ianbicking.org/2010/01/29/new-way-to-deploy-web-apps/&quot;&gt;A new way to deploy web applications&lt;/a&gt;&lt;br /&gt;
Ian Bicking&amp;#039;s new webapp deployment tool; toppcloud.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://lifehacker.com/5451352/become-a-gmail-master-redux&quot;&gt;Become a Gmail Master Redux&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.nathanieljohnston.com/index.php/2009/08/generating-sequences-of-primes-in-conways-game-of-life/&quot;&gt;Generating Sequences of Primes in Conway&amp;rsquo;s Game of Life&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.downloadsquad.com/2010/02/04/movist-is-a-strong-vlc-alternative-for-mac/&quot;&gt;Movist&lt;/a&gt;&lt;br /&gt;
VLC alternative for Mac&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://simonwillison.net/2010/Feb/5/zeitgeist/&quot;&gt;What's hot? Introducing Zeitgeist&lt;/a&gt;&lt;br /&gt;
“When something appears on the Zeitgeist page, it’s because it performed better (got more attention) than the norm for that content type/section/day”. The application itself is written in Python and runs on Google App Engine.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://gist.github.com/289467&quot;&gt;Evolution of a Python programmer&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content>
		<author>
			<name>Simon Brunning</name>
			<uri>http://www.brunningonline.net/simon/blog/</uri>
		</author>
		<source>
			<title type="html">Small Values of Cool</title>
			<subtitle type="html">Simon Brunning - stuff that I find interesting</subtitle>
			<link rel="self" href="http://feeds.feedburner.com/SmallValuesOfCool"/>
			<id>http://feeds.feedburner.com/SmallValuesOfCool</id>
			<updated>2010-02-06T08:22:19+00:00</updated>
			<rights type="html">Copyright 2010</rights>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Another Day, Another Dojo</title>
		<link href="http://ramblings.timgolden.me.uk/2010/02/05/another-day-another-dojo/"/>
		<id>http://ramblings.timgolden.me.uk/2010/02/05/another-day-another-dojo/</id>
		<updated>2010-02-05T09:57:36+00:00</updated>
		<content type="html">&lt;p&gt;My first Dojo of 2010 yesterday, as I missed the January one (which is a shame as it sounded like fun). This was a return to the conventional Dojo style with pair-programming at the front, the task being to merge the Adventure Game efforts from the previous month&amp;#8217;s team-by-team effort. But first, a commercial break&amp;#8230; Jonathan Hartley advertised the upcoming &lt;a href=&quot;http://www.pyweek.org/&quot;&gt;PyWeek competition&lt;/a&gt; and demonstrated &lt;a href=&quot;http://code.google.com/p/brokenspell/&quot;&gt;his team&amp;#8217;s previous effort&lt;/a&gt; as well as the amusingly literal &lt;a href=&quot;http://www.pyweek.org/e/MurderCrow/&quot;&gt;Murder of Crows&lt;/a&gt; entry.&lt;/p&gt;
&lt;p&gt;Meanwhile, back at the Dojo&amp;#8230; Nicholas started off partly to set things up for people (like me, his co-pilot) who hadn&amp;#8217;t been there the month before. As we moved through the programming pairs, we did manage to get a working codeset together by merging the location-parsing code from one team with the &lt;a href=&quot;http://docs.python.org/library/cmd.html&quot;&gt;cmd&lt;/a&gt;-based loop from another. But it was clear that things were moving slowly and that the audience was somewhat disengaged&amp;#8230;&lt;/p&gt;
&lt;p&gt;So we finished off with a broad discussion of ways ahead, of what might work better, and of whether the artificial nature of the Dojo setting meant that people couldn&amp;#8217;t &amp;#8220;show off&amp;#8221;, so to speak, their natural coding style &amp;#8212; and ability. Michael G and others made a few cogent suggestions to the effect that smaller teams would work better but with some kind of DVCS (git seemed to be the front-runner) to assist the teams in collaborating. And it seemed that at least one team should be creatives, rather than coders.&lt;/p&gt;
&lt;p&gt;I enjoyed it, as ever, but it _is_ difficult to keep 20+ people in a medium-sized room totally engaged. Even with the best will in the world, it&amp;#8217;s hard to read code on a screen from some distance back. This was one of the reasons why a team-based approach met with broad approval. Also it is a little dispiriting when you&amp;#8217;re doing your best up front but half your &amp;#8220;audience&amp;#8221; is otherwise engaged.&lt;/p&gt;
&lt;p&gt;The point about how &amp;#8220;natural&amp;#8221; you should be in the Dojo was interesting. Everyone has a different way of coding, of approaching a problem, of looking for information and so on. Dave[*], the last pilot, mentioned that he&amp;#8217;d normally take much longer sizing a problem up but that having a time limit forced him into action sooner. But you&amp;#8217;re up there with a limit of 10 minutes, probably on someone else&amp;#8217;s machine, maybe on an &amp;#8220;alien&amp;#8221; operating system. You&amp;#8217;re fumbling with running up a command prompt; you&amp;#8217;re not sure how to bring up the Python docs; the keyboard shortcuts which your fingers remember don&amp;#8217;t work &amp;#8212; or worse, do something else entirely! We did discuss each person bringing up his own laptop, although that has obvious drawbacks of getting the projector to switch smoothly and so on. It was out of this discussion that the move towards a team-based approach next time arose.&lt;/p&gt;
&lt;p&gt;TJG&lt;/p&gt;
&lt;p&gt;[*] Dave, incidentally, was the programmer of the BBC version of the &lt;a href=&quot;http://en.wikipedia.org/wiki/Graphic_Adventure_Creator&quot;&gt;Graphics Adventure Creator&lt;/a&gt; &amp;#8212; did you know that?&lt;/p&gt;</content>
		<author>
			<name>Tim Golden</name>
			<uri>http://ramblings.timgolden.me.uk</uri>
		</author>
		<source>
			<title type="html">Moderate Realism » Tech</title>
			<subtitle type="html">The ramblings of Tim Golden</subtitle>
			<link rel="self" href="http://ramblings.timgolden.me.uk/category/tech/feed"/>
			<id>http://ramblings.timgolden.me.uk/category/tech/feed</id>
			<updated>2010-02-05T14:22:08+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en-us">
		<title type="html">Links for 2010-02-04 [del.icio.us]</title>
		<link href="http://feedproxy.google.com/~r/SmallValuesOfCool/~3/N7cyGssKVGY/brunns"/>
		<id>http://del.icio.us/brunns#2010-02-04</id>
		<updated>2010-02-05T08:00:00+00:00</updated>
		<content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.guardian.co.uk/lifeandstyle/lostinshowbiz/2010/feb/03/1&quot;&gt;Celebrities accessorise for Haiti&lt;/a&gt;&lt;br /&gt;
&amp;quot;To help raise funds for the victims of the Haiti earthquake,&amp;quot; begins a press release, &amp;quot;international actress and face of Mango, Scarlett Johansson has designed an exclusive handbag.&amp;quot; Ah.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://bldgblog.blogspot.com/2008/08/library-of-dust.html&quot;&gt;Library of Dust&lt;/a&gt;&lt;br /&gt;
*In 1913... an Oregon state psychiatric institution began to cremate the remains of its unclaimed patients. Their ashes were then stored inside individual copper canisters and moved into a small room, where they were stacked onto pine shelves...Over time, however, the canisters have begun to react chemically with the human ashes held inside them; this has thus created mold-like mineral outgrowths on the exterior surfaces of these otherwise gleaming cylinders.*&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.technologyreview.com/blog/arxiv/24763/?ref=rss&quot;&gt;The Curious Case of the Evolving Apostrophe&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://news.bbc.co.uk/1/hi/magazine/8495617.stm&quot;&gt;Last orders for pint glass as we know it?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://skepchick.org/blog/2010/02/what-pregnant-women-wont-tell-you-ever/&quot;&gt;What pregnant women won&amp;rsquo;t tell you. Ever.&lt;/a&gt;&lt;br /&gt;
Right, that&amp;#039;s it - I&amp;#039;m *never* getting pregnant.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.rocketpunk-manifesto.com/2010/02/nasa-change-of-orbit.html&quot;&gt;NASA: A Change of Orbit&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content>
		<author>
			<name>Simon Brunning</name>
			<uri>http://www.brunningonline.net/simon/blog/</uri>
		</author>
		<source>
			<title type="html">Small Values of Cool</title>
			<subtitle type="html">Simon Brunning - stuff that I find interesting</subtitle>
			<link rel="self" href="http://feeds.feedburner.com/SmallValuesOfCool"/>
			<id>http://feeds.feedburner.com/SmallValuesOfCool</id>
			<updated>2010-02-06T08:22:19+00:00</updated>
			<rights type="html">Copyright 2010</rights>
		</source>
	</entry>

	<entry xml:lang="en-US">
		<title type="html">Choose Python</title>
		<link href="http://feedproxy.google.com/~r/ForSomeValueOfMagic/~3/lMtO07cDc2A/choose-python.html"/>
		<id>tag:blogger.com,1999:blog-496482.post-5372457644149557948</id>
		<updated>2010-02-05T07:23:54+00:00</updated>
		<content type="html">Ethan Furman linked to &lt;a href=&quot;http://www1.american.edu/academic.depts/cas/econ/faculty/isaac/choose_python.pdf&quot;&gt;this &quot;Choose Python&quot; poster&lt;/a&gt; on comp.lang.python. While some of the humor might not mean much to people who &lt;i&gt;haven't&lt;/i&gt; chosen Python yet it certainly gave me a smile on a cold, grey morning.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/496482-5372457644149557948?l=holdenweb.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?a=lMtO07cDc2A:Tl3Lynl86P4:yIl2AUoC8zA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?d=yIl2AUoC8zA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?a=lMtO07cDc2A:Tl3Lynl86P4:Jy2wSXVWK38&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?i=lMtO07cDc2A:Tl3Lynl86P4:Jy2wSXVWK38&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/ForSomeValueOfMagic/~4/lMtO07cDc2A&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Steve</name>
			<email>noreply@blogger.com</email>
			<uri>http://holdenweb.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">For Some Value of &quot;Magic&quot;</title>
			<subtitle type="html">Python, software, open source, plus odd rants about almost anything</subtitle>
			<link rel="self" href="http://holdenweb.blogspot.com/atom.xml"/>
			<id>tag:blogger.com,1999:blog-496482</id>
			<updated>2010-02-06T14:23:16+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en-us">
		<title type="html">Links for 2010-02-03 [del.icio.us]</title>
		<link href="http://feedproxy.google.com/~r/SmallValuesOfCool/~3/QVIfQjqIqPs/brunns"/>
		<id>http://del.icio.us/brunns#2010-02-03</id>
		<updated>2010-02-04T08:00:00+00:00</updated>
		<content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.guardian.co.uk/commentisfree/2010/feb/03/homeopathy-overdose-hadley-freeman&quot;&gt;Me and my homeopathic overdose&lt;/a&gt;&lt;br /&gt;
Hadley on Homeopathy&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://showmewhatswrong.com/&quot;&gt;ShowMeWhatsWrong.com&lt;/a&gt;&lt;br /&gt;
&amp;quot;Generate a help URL so friends and family can send you instant screen recordings to help trouble shoot computer issues.&amp;quot;

Family tech-support - the bane of every IT person&amp;#039;s existence.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://sixrevisions.com/user-interface/rich-text-editors-for-2010-and-beyond/&quot;&gt;Rich-Text Editors for 2010 and Beyond&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.magpiebrain.com/2010/02/02/it-certification-considered-useless/&quot;&gt;IT Certification Considered Useless&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.nasa.gov/mission_pages/hubble/science/asteroid-20100202.html&quot;&gt;NASA - Suspected Asteroid Collision Leaves Trailing Debris&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.slate.com/id/2243112/pagenum/all/&quot;&gt;Kim Jong-il's regime is even weirder and more despicable than you thought&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://elegantcode.com/2009/11/11/cqrs-la-greg-young/&quot;&gt;CQRS &amp;agrave; la Greg Young&lt;/a&gt;&lt;br /&gt;
The Command and Query Responsibility Segregation (CQRS) pattern&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.guardian.co.uk/commentisfree/2010/feb/03/bbc-climate-change-denier&quot;&gt;Our licence fees pay for climate denial | Sunny Hundal | Comment is free | guardian.co.uk&lt;/a&gt;&lt;br /&gt;
&amp;quot;After watching last night&amp;#039;s Newsnight, I can only come to one conclusion: the BBC has become this country&amp;#039;s most pernicious climate-change-denying media outlet in the UK.&amp;quot;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.antipope.org/charlie/blog-static/2010/02/information-freedom-flame-bait.html&quot;&gt;Information, Freedom, Flame-bait&lt;/a&gt;&lt;br /&gt;
Information wants to be free, writers want to get paid.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://incubator.apache.org/thrift/&quot;&gt;Apache Thrift&lt;/a&gt;&lt;br /&gt;
&amp;quot;Thrift is a software framework for scalable cross-language services development. It combines a software stack with a code generation engine to build services that work efficiently and seamlessly between C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, Smalltalk, and OCaml.&amp;quot;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.technologyreview.com/blog/arxiv/24759/?ref=rss&quot;&gt;Physicist discovers how to teleport energy&lt;/a&gt;&lt;br /&gt;
I wonder if they can teleport some into me.&lt;/li&gt;
&lt;/ul&gt;</content>
		<author>
			<name>Simon Brunning</name>
			<uri>http://www.brunningonline.net/simon/blog/</uri>
		</author>
		<source>
			<title type="html">Small Values of Cool</title>
			<subtitle type="html">Simon Brunning - stuff that I find interesting</subtitle>
			<link rel="self" href="http://feeds.feedburner.com/SmallValuesOfCool"/>
			<id>http://feeds.feedburner.com/SmallValuesOfCool</id>
			<updated>2010-02-06T08:22:19+00:00</updated>
			<rights type="html">Copyright 2010</rights>
		</source>
	</entry>

	<entry xml:lang="en-us">
		<title type="html">Links for 2010-02-02 [del.icio.us]</title>
		<link href="http://feedproxy.google.com/~r/SmallValuesOfCool/~3/nm088AsK9OI/brunns"/>
		<id>http://del.icio.us/brunns#2010-02-02</id>
		<updated>2010-02-03T08:00:00+00:00</updated>
		<content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.guardian.co.uk/help/insideguardian/2010/feb/02/what-is-information-architecture&quot;&gt;What is 'Information Architecture'?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.punteney.com/writes/setting-django-slicehost-ubuntu-hardy-postgres-apa/&quot;&gt;Setting up Django on SliceHost with Ubuntu Hardy, Postgres, Apache, and Nginx&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content>
		<author>
			<name>Simon Brunning</name>
			<uri>http://www.brunningonline.net/simon/blog/</uri>
		</author>
		<source>
			<title type="html">Small Values of Cool</title>
			<subtitle type="html">Simon Brunning - stuff that I find interesting</subtitle>
			<link rel="self" href="http://feeds.feedburner.com/SmallValuesOfCool"/>
			<id>http://feeds.feedburner.com/SmallValuesOfCool</id>
			<updated>2010-02-06T08:22:19+00:00</updated>
			<rights type="html">Copyright 2010</rights>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">It Certification Considered Useless</title>
		<link href="http://feedproxy.google.com/~r/Magpiebrain/~3/Zw2-FHYsA-A/"/>
		<id>http://www.magpiebrain.com/?p=761</id>
		<updated>2010-02-02T21:38:16+00:00</updated>
		<content type="html">&lt;p&gt;&lt;a href=&quot;http://www.magpiebrain.com/wp-content/uploads/2010/02/93819794_6a49dc085c_b.jpg&quot;&gt;&lt;img src=&quot;http://www.magpiebrain.com/wp-content/uploads/2010/02/93819794_6a49dc085c_b-150x150.jpg&quot; alt=&quot;&quot; title=&quot;Scroll&quot; width=&quot;150&quot; height=&quot;150&quot; class=&quot;alignright size-thumbnail wp-image-763&quot; /&gt;&lt;/a&gt; A few years ago, I was sharing a drink with a friend of mine. He was about to become a fully qualified architect. In the UK, one cannot call themselves an architect without having carried out the full, three part course, which takes at least seven years. Typically, as the course involves working in the industry, architects often took more than seven years to complete their &amp;#8216;part three&amp;#8217; &amp;#8211; my friend completing it in the minimum possible time made him one of the youngest qualified architects in the country. As he was about to be fully qualified, he was explaining the need to get indemnity insurance, as his opinion as a qualified architect made him liable for the quality of advice given, even advice given informally down at the pub.&lt;/p&gt;
&lt;p&gt;There has been a short history of various individuals, companies and professional bodies within IT attempting to define and issue certification. By and large, they have not caught on. There is no belief that software delivered by &amp;#8216;certified&amp;#8217; individuals is any better than that developed by uncertified individuals. Nor is there any evidence that in terms of getting jobs that certification counts for anything other than in specific, narrow (mostly vendor specific) technical domains &amp;#8211; something that few serious software professional would consider worthwhile. &lt;/p&gt;
&lt;p&gt;So, in general, why does certification exist? Societal pressure determines where certification is essential. It is important that key individuals in positions of power are properly vetted &amp;#8211; and recognised &amp;#8211; for the role they play in society. Which is why there are laws governing who can call themselves a lawyer, architect, engineer, surveyor. Which is why certified profesionals have responsibility placed upon them regarding the veracity of information and quality services they provide as a member of that profession. &lt;/p&gt;
&lt;p&gt;In terms of architecture &amp;#8211; in similar terms to medical doctors for example &amp;#8211; society has deemed the roles they play as being important enough that certification carries with it legally enforceable expectations regarding their competency. With this responsibility, comes recognition &amp;#8211; and a clear understanding as to how the profession is valued by society as a whole.&lt;/p&gt;
&lt;p&gt;Certification in the land of IT is not being driven by a need for society to ensure that we are doing our jobs properly &amp;#8211; to ensure that only competent individuals call themselves &amp;#8216;programmers&amp;#8217;, &amp;#8217;sysadmins&amp;#8217; or whatever. Nor is it being driven by a societal desire to recognise our contribution to society as as a whole. It is being driven by IT itself &amp;#8211; at best as a misguided attempt to recognise an ability in a certain set of skill, at worst as a way of generating money. As such, certification in the world of IT is a toothless concept, lacking in any sense of legitimacy, and distracts us from the more worthy goal of understanding how we contribute to the world around us, and how we grow competency to the point where we can even consider ourselves a profession at all. &lt;/p&gt;
&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?a=Zw2-FHYsA-A:j0mGMhvlbCE:yIl2AUoC8zA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?d=yIl2AUoC8zA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?a=Zw2-FHYsA-A:j0mGMhvlbCE:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?a=Zw2-FHYsA-A:j0mGMhvlbCE:D7DqB2pKExk&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?i=Zw2-FHYsA-A:j0mGMhvlbCE:D7DqB2pKExk&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?a=Zw2-FHYsA-A:j0mGMhvlbCE:dnMXMwOfBR0&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?d=dnMXMwOfBR0&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;</content>
		<author>
			<name>Sam Newman</name>
			<uri>http://www.magpiebrain.com</uri>
		</author>
		<source>
			<title type="html">Magpiebrain</title>
			<subtitle type="html">The blog of Sam Newman</subtitle>
			<link rel="self" href="http://feeds.feedburner.com/Magpiebrain"/>
			<id>http://feeds.feedburner.com/Magpiebrain</id>
			<updated>2010-02-02T22:22:04+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Interview with Pardus Linux</title>
		<link href="http://feedproxy.google.com/~r/voidspace/~3/V0hUHx2WObw/arch_d7_2010_01_30.shtml"/>
		<id>http://feedproxy.google.com/~r/voidspace/~3/V0hUHx2WObw/arch_d7_2010_01_30.shtml</id>
		<updated>2010-02-02T10:28:52+00:00</updated>
		<content type="html">I recently did an interview on Python with the Pardus Linux magazine. Pardus Linux is a distribution developed in Turkey (by the Turkish National Research Institute of Electronics and Cryptology) with the goal of being usable by &amp;quot;normal&amp;quot; people rather than just geeks. ... [3716 words]&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=V0hUHx2WObw:mxAxteqQU2A:F7zBnMyn0Lo&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=V0hUHx2WObw:mxAxteqQU2A:F7zBnMyn0Lo&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=V0hUHx2WObw:mxAxteqQU2A:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=V0hUHx2WObw:mxAxteqQU2A:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=V0hUHx2WObw:mxAxteqQU2A:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=V0hUHx2WObw:mxAxteqQU2A:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=V0hUHx2WObw:mxAxteqQU2A:dnMXMwOfBR0&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/voidspace?d=dnMXMwOfBR0&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/voidspace/~4/V0hUHx2WObw&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Fuzzyman</name>
			<uri>http://www.voidspace.org.uk/python/weblog/index.shtml</uri>
		</author>
		<source>
			<title type="html">The Voidspace Techie Blog</title>
			<subtitle type="html">Python Programming, news on the Voidspace Python Projects and all things techie.</subtitle>
			<link rel="self" href="http://feeds.feedburner.com/voidspace"/>
			<id>http://feeds.feedburner.com/voidspace</id>
			<updated>2010-02-08T02:22:07+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en-us">
		<title type="html">Links for 2010-02-01 [del.icio.us]</title>
		<link href="http://feedproxy.google.com/~r/SmallValuesOfCool/~3/LyCL0ViB7MI/brunns"/>
		<id>http://del.icio.us/brunns#2010-02-01</id>
		<updated>2010-02-02T08:00:00+00:00</updated>
		<content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.guardian.co.uk/lifeandstyle/2010/feb/01/acid-washed-denim-turnups-boots&quot;&gt;Acid-washed is an 'ironic' fashion, never meant to flatter&lt;/a&gt;&lt;br /&gt;
&amp;quot;Ironic fashion&amp;quot;? Good lord.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://daringfireball.net/linked/2010/01/31/amazon-capitulates&quot;&gt;Amazon 'Capitulates' to Macmillan&lt;/a&gt;&lt;br /&gt;
&amp;quot;Just me, or does it seem like an Apple device that won’t ship for another 53 days already upended Amazon’s Kindle business? What kind of sense does it make to accuse a publisher of having a “monopoly” over its own titles?&amp;quot;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.flickr.com/photos/qwghlm/4321307821/&quot;&gt;One day, all adverts will look like PowerPoint&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.guardian.co.uk/science/2010/feb/01/barack-obama-nasa-moon-budget&quot;&gt;Barack Obama to drop Nasa moon mission in budget cutbacks&lt;/a&gt;&lt;br /&gt;
Sad, but probably inevitable.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.artima.com/scalazine/articles/twitter_on_scala.html&quot;&gt;Twitter on Scala&lt;/a&gt;&lt;br /&gt;
Still mostly RoR.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://laughingsquid.com/san-franciscos-answer-to-westboro-baptist-church/&quot;&gt;San Francisco&amp;rsquo;s Answer to Westboro Baptist Church&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.washingtonpost.com/wp-dyn/content/article/2010/01/27/AR2010012704221.html&quot;&gt;Think iBooks Looks Familiar? You're Not The Only One.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://djangogigs.com/&quot;&gt;DjangoGigs.com&lt;/a&gt;&lt;br /&gt;
Does what it says on the tin.&lt;/li&gt;
&lt;/ul&gt;</content>
		<author>
			<name>Simon Brunning</name>
			<uri>http://www.brunningonline.net/simon/blog/</uri>
		</author>
		<source>
			<title type="html">Small Values of Cool</title>
			<subtitle type="html">Simon Brunning - stuff that I find interesting</subtitle>
			<link rel="self" href="http://feeds.feedburner.com/SmallValuesOfCool"/>
			<id>http://feeds.feedburner.com/SmallValuesOfCool</id>
			<updated>2010-02-06T08:22:19+00:00</updated>
			<rights type="html">Copyright 2010</rights>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Thief Level : Week 2</title>
		<link href="http://tartley.com/?p=1002"/>
		<id>http://tartley.com/?p=1002</id>
		<updated>2010-02-01T13:20:31+00:00</updated>
		<content type="html">&lt;p&gt;This week I spent a little while considering the backstory of the level, and now have at least a rudimentary scenario: Garrett the thief is taking an opportunistic foray into the local Shope of Curiosities, having heard that their prize exhibit, the McGuffin of Antioc, has been removed from its high-security public display, in order to be cleaned or maintained somewhere on-site.&lt;/p&gt;
&lt;p&gt;On top of this, I&amp;#8217;ve been refining the layout of the museum building, starting with the two-storey entrance hall, complete with a balcony running round it:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://tartley.com/wp-content/uploads/2010/02/w02-sketch-entrance.jpg&quot;&gt;&lt;img class=&quot;alignnone size-full wp-image-1003&quot; title=&quot;w02-sketch-entrance&quot; src=&quot;http://tartley.com/wp-content/uploads/2010/02/w02-sketch-entrance.jpg&quot; alt=&quot;sketch of museum's two-storey main entrance hall&quot; width=&quot;623&quot; height=&quot;416&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Plus, I&amp;#8217;ve been planning the possible routes a thief might take to get from one room to another. Generally, the conventional paths &amp;#8211; in through the main entrance and up the stairs and down the corridor &amp;#8211; will be blocked by guards. So the player has to clamber up the outside of the building, explore the roof, dangle from a rope, pick a lock, find a key in the janitor&amp;#8217;s quarters, which opens all the windows, and ledges outside a couple of windows lead somewhere interesting, etc.  I don&amp;#8217;t want it to turn into a key fetch quest, but at the same time, I don&amp;#8217;t want the player to be able to simply waltz all through the whole building. I&amp;#8217;ve tried to engineer a single interesting primary route through the building, with the possibility of a few minor variations so players feel like they can exercise some freedom and decision making.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://tartley.com/wp-content/uploads/2010/02/w02-sketch-ground-floor.jpg&quot;&gt;&lt;img class=&quot;alignnone size-full wp-image-1005&quot; title=&quot;w02-sketch-ground-floor&quot; src=&quot;http://tartley.com/wp-content/uploads/2010/02/w02-sketch-ground-floor.jpg&quot; alt=&quot;sketch of ground floor&quot; width=&quot;669&quot; height=&quot;444&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Having done all that, I&amp;#8217;m now quite happy that my plans are sufficient to produce a small but adequate level. I&amp;#8217;ll aim to get that complete, and any fancy window dressing I can layer on top will be a bonus.&lt;/p&gt;
&lt;p&gt;I completed the modelling of all the rooms in the building, and doorframes inbetween them. I applied some quick floorboard textures to differentiate the floors and ceilings from the walls. Here you can see the view from the main entrance, looking into the two-storey entrance hall, with the balcony around it visible up on the next level:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://tartley.com/wp-content/uploads/2010/02/w02-main-entrance.jpg&quot;&gt;&lt;img class=&quot;alignnone size-full wp-image-1006&quot; title=&quot;w02-main-entrance&quot; src=&quot;http://tartley.com/wp-content/uploads/2010/02/w02-main-entrance.jpg&quot; alt=&quot;main entraince with floorboards&quot; width=&quot;640&quot; height=&quot;480&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;And the view while approaching the top of the stairs, looking down over the balcony. There will be a railing when it&amp;#8217;s done:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://tartley.com/wp-content/uploads/2010/02/w02-top-of-stairs-balcony.jpg&quot;&gt;&lt;img class=&quot;alignnone size-full wp-image-1007&quot; title=&quot;w02-top-of-stairs-balcony&quot; src=&quot;http://tartley.com/wp-content/uploads/2010/02/w02-top-of-stairs-balcony.jpg&quot; alt=&quot;Approaching the top of the stairs&quot; width=&quot;640&quot; height=&quot;480&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Thanks heaps to Qolelis for a comment with a tip about textures on stairways, to rotate the texture 90 degrees on each stair&amp;#8217;s vertical rise. I only just saw that, but will definitely apply it this week.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update&lt;/strong&gt;: I feel a bit self-concious that I&amp;#8217;m creating the bare minimum that could qualify to be a Thief level. There is not yet a lively, engaging backstory to the level, complete with colorful characters, cleverly intertwined with the canon of the original game.&lt;/p&gt;
&lt;p&gt;Similarly, the mechanical contents of my level are as simple as possible. I haven&amp;#8217;t stretched myself, thinking of imaginative locations or motives for Garrett to explore. I do not plan to have any clever special objects or custom scripting in my level, defining dramatic changing mission objectives as the player reveals new information. It&amp;#8217;s a very straightforward &amp;#8216;get into a building, steal the loot, and get out&amp;#8217;.&lt;/p&gt;
&lt;p&gt;Partly this is very deliberate &amp;#8211; I want the level to be as minimal as it can possibly be, so as keep it achievable. But also, this is partly in response to my feeling that being creative is hard, especially when under pressure. Right now I feel as though I have enough to worry about just getting to grips with the minutia of the level editor. I almost feel as if I need to become comfortable with that before I can relax enough to get creative with it.&lt;/p&gt;
&lt;p&gt;This isn&amp;#8217;t entirely unexpected. Clearly one cannot do great work on one&amp;#8217;s first attempt. But at the same time, I don&amp;#8217;t want to just &amp;#8216;give up&amp;#8217; on the creative aspects. I want to do as good a job as I can do, under the constraints of a small, straightforward &amp;#8216;first time&amp;#8217; level done in a reasonable timeframe. So maybe I just need to keep iterating. Embelish the dramatic backstory little by little, see what occurs to me as I go on. Look for some flash of inspiration as I bury myself in the process. Fair enough. Baby steps.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update 2:&lt;/strong&gt; I created a quick TODO list, as a first approximation of how much work there is to be done. I ended up with a list of 67 mandatory items (eg. Add doors inside each door frame; First pass at lighting; Add balcony railing.) In addition I have 18 optional items (eg. Add carpets and rugs; Hide moss arrows in the garden; Entrance hall main exhibit.) The screenshots above represent about six completed items (eg. Dromed tutorials; first floor rooms; doorways and arches between rooms; staircase.) So at the current rate, it&amp;#8217;s roughly 28 weeks of work, which is double or triple what I&amp;#8217;d planned on. Hopefully my rate of completing items will increase substantially as I get into the groove. I&amp;#8217;ll have to monitor this going forward, and slash scope if I can&amp;#8217;t drastically accelerate.&lt;/p&gt;</content>
		<author>
			<name>Jonathan Hartley</name>
			<uri>http://tartley.com</uri>
		</author>
		<source>
			<title type="html">tartley.com</title>
			<subtitle type="html">A website dedicated to oneself has been described as the greatest act of hubris. Welcome aboard.</subtitle>
			<link rel="self" href="http://tartley.com/?feed=rss2"/>
			<id>http://tartley.com/?feed=rss2</id>
			<updated>2010-02-08T18:22:07+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en-us">
		<title type="html">Links for 2010-01-31 [del.icio.us]</title>
		<link href="http://feedproxy.google.com/~r/SmallValuesOfCool/~3/0TQrz8yFjAM/brunns"/>
		<id>http://del.icio.us/brunns#2010-01-31</id>
		<updated>2010-02-01T08:00:00+00:00</updated>
		<content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Acheulean&quot;&gt;Acheulean tools&lt;/a&gt;&lt;br /&gt;
I held one of these in my hand today.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://daringfireball.net/2010/01/blue_boxes&quot;&gt;Who Can Do Something About Those Blue Boxes?&lt;/a&gt;&lt;br /&gt;
Bye bye Flash.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.antipope.org/charlie/blog-static/2010/01/amazon-macmillan-an-outsiders.html&quot;&gt;Amazon, Macmillan: an outsider's guide to the fight&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content>
		<author>
			<name>Simon Brunning</name>
			<uri>http://www.brunningonline.net/simon/blog/</uri>
		</author>
		<source>
			<title type="html">Small Values of Cool</title>
			<subtitle type="html">Simon Brunning - stuff that I find interesting</subtitle>
			<link rel="self" href="http://feeds.feedburner.com/SmallValuesOfCool"/>
			<id>http://feeds.feedburner.com/SmallValuesOfCool</id>
			<updated>2010-02-06T08:22:19+00:00</updated>
			<rights type="html">Copyright 2010</rights>
		</source>
	</entry>

	<entry>
		<title type="html">A Little Bit of Python Episode 3</title>
		<link href="http://feedproxy.google.com/~r/voidspace/~3/ee0vjKVUcqA/arch_d7_2010_01_30.shtml"/>
		<id>http://feedproxy.google.com/~r/voidspace/~3/ee0vjKVUcqA/arch_d7_2010_01_30.shtml</id>
		<updated>2010-01-30T21:00:06+00:00</updated>
		<content type="html">A Little Bit of Python is an occasional podcast on Python related topics with myself, Brett Cannon, Jesse Noller, Steve Holden and Andrew Kuchling. We still don't have our own website although that is due to land any day now. ... [172 words]&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=ee0vjKVUcqA:wMTde1ykrWQ:F7zBnMyn0Lo&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=ee0vjKVUcqA:wMTde1ykrWQ:F7zBnMyn0Lo&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=ee0vjKVUcqA:wMTde1ykrWQ:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=ee0vjKVUcqA:wMTde1ykrWQ:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=ee0vjKVUcqA:wMTde1ykrWQ:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=ee0vjKVUcqA:wMTde1ykrWQ:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=ee0vjKVUcqA:wMTde1ykrWQ:dnMXMwOfBR0&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/voidspace?d=dnMXMwOfBR0&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/voidspace/~4/ee0vjKVUcqA&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Fuzzyman</name>
			<uri>http://www.voidspace.org.uk/python/weblog/index.shtml</uri>
		</author>
		<source>
			<title type="html">The Voidspace Techie Blog</title>
			<subtitle type="html">Python Programming, news on the Voidspace Python Projects and all things techie.</subtitle>
			<link rel="self" href="http://feeds.feedburner.com/voidspace"/>
			<id>http://feeds.feedburner.com/voidspace</id>
			<updated>2010-02-08T02:22:07+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">TypeError: object.__init__() takes no parameters</title>
		<link href="http://freshfoo.com/blog/object__init__takes_no_parameters"/>
		<id>http://freshfoo.com/blog/2010/01/30/object__init__takes_no_parameters</id>
		<updated>2010-01-30T19:07:00+00:00</updated>
		<content type="html">&lt;p&gt;At my employer we are in the process of migrating from Python 2.4 to
2.6. When running some existing code under Python 2.6 we started
getting DeprecationWarnings about &amp;quot;object.__new__() takes no
parameters&amp;quot; and &amp;quot;object.__init__() takes no parameters&amp;quot;.&lt;/p&gt;
&lt;p&gt;A simple example that triggers the warning:&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;MyClass&lt;/span&gt;(&lt;span class=&quot;nb&quot;&gt;object&lt;/span&gt;):

    &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;__new__&lt;/span&gt;(&lt;span class=&quot;n&quot;&gt;cls&lt;/span&gt;, &lt;span class=&quot;n&quot;&gt;a&lt;/span&gt;, &lt;span class=&quot;n&quot;&gt;b&lt;/span&gt;):
        &lt;span class=&quot;k&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;'MyClass.__new__'&lt;/span&gt;, &lt;span class=&quot;n&quot;&gt;a&lt;/span&gt;, &lt;span class=&quot;n&quot;&gt;b&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;super&lt;/span&gt;(&lt;span class=&quot;n&quot;&gt;MyClass&lt;/span&gt;, &lt;span class=&quot;n&quot;&gt;cls&lt;/span&gt;).&lt;span class=&quot;n&quot;&gt;__new__&lt;/span&gt;(&lt;span class=&quot;n&quot;&gt;cls&lt;/span&gt;, &lt;span class=&quot;n&quot;&gt;a&lt;/span&gt;, &lt;span class=&quot;n&quot;&gt;b&lt;/span&gt;)

    &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;__init__&lt;/span&gt;(&lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;, &lt;span class=&quot;n&quot;&gt;a&lt;/span&gt;, &lt;span class=&quot;n&quot;&gt;b&lt;/span&gt;):
        &lt;span class=&quot;k&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;'MyClass.__init__'&lt;/span&gt;, &lt;span class=&quot;n&quot;&gt;a&lt;/span&gt;, &lt;span class=&quot;n&quot;&gt;b&lt;/span&gt;
        &lt;span class=&quot;nb&quot;&gt;super&lt;/span&gt;(&lt;span class=&quot;n&quot;&gt;MyClass&lt;/span&gt;, &lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;).&lt;span class=&quot;n&quot;&gt;__init__&lt;/span&gt;(&lt;span class=&quot;n&quot;&gt;a&lt;/span&gt;, &lt;span class=&quot;n&quot;&gt;b&lt;/span&gt;)

&lt;span class=&quot;n&quot;&gt;obj&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;MyClass&lt;/span&gt;(&lt;span class=&quot;mi&quot;&gt;6&lt;/span&gt;, &lt;span class=&quot;mi&quot;&gt;7&lt;/span&gt;)
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This gives:&lt;/p&gt;
&lt;pre class=&quot;literal-block&quot;&gt;
$ python2.4 simple-warning.py
MyClass.__new__ 6 7
MyClass.__init__ 6 7

$ python2.6 simple-warning.py
MyClass.__new__ 6 7
simple-warning.py:5: DeprecationWarning: object.__new__() takes no parameters
  return super(MyClass, cls).__new__(cls, a, b)
MyClass.__init__ 6 7
simple-warning.py:9: DeprecationWarning: object.__init__() takes no parameters
  super(MyClass, self).__init__(a, b)
&lt;/pre&gt;
&lt;p&gt;It turns out that a &lt;a class=&quot;reference external&quot; href=&quot;http://svn.python.org/view?view=rev&amp;amp;revision=54539&quot;&gt;change to Python&lt;/a&gt; for 2.6 (and 3) means that
object.__new__ and object.__init__ no longer take arguments - a
TypeError is raised when arguments are passed. To avoid breaking too
much pre-existing code, there is a special case that will cause a
DeprecationWarning instead of TypeError if both __init__ and __new__
are overridden. This is the case we were running into with our code at
work.&lt;/p&gt;
&lt;p&gt;The reason for this change seems to make enough sense: object doesn't
do anything with arguments to __init__ and __new__ so it shouldn't
accept them. Raising an error when arguments are passed highlights
code where the code might be doing the wrong thing.&lt;/p&gt;
&lt;p&gt;Unfortunately this change also breaks Python's multiple inheritance in
a fairly serious way when cooperative &lt;a class=&quot;reference external&quot; href=&quot;http://docs.python.org/library/functions.html#super&quot;&gt;super&lt;/a&gt; calls are used. Looking
at the &lt;a class=&quot;reference external&quot; href=&quot;http://bugs.python.org/issue1683368&quot;&gt;ticket&lt;/a&gt; for this change, this issue was thought about but
perhaps the implications were not fully understood. Given that using
super with multiple inheritance is common and &amp;quot;correct&amp;quot; practice, it
would seem that this change to Python is a step backwards.&lt;/p&gt;
&lt;a href=&quot;http://freshfoo.com/blog/object__init__takes_no_parameters&quot;&gt;Read more...&lt;/a&gt;</content>
		<author>
			<name>Menno Smits</name>
			<email>menno AT freshfoo DOT com</email>
			<uri>http://freshfoo.com/blog</uri>
		</author>
		<source>
			<title type="html">Menno's Musings</title>
			<subtitle type="html">software | life | whatever</subtitle>
			<link rel="self" href="http://freshfoo.com/blog/index.atom"/>
			<id>http://freshfoo.com/blog/index.atom</id>
			<updated>2010-02-09T08:22:25+00:00</updated>
			<rights type="html">Copyright 2009 Menno Smits</rights>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">rst_break plugin for PyBlosxom</title>
		<link href="http://freshfoo.com/blog/rst_break-plugin"/>
		<id>http://freshfoo.com/blog/2010/01/30/rst_break-plugin</id>
		<updated>2010-01-30T15:29:00+00:00</updated>
		<content type="html">&lt;p&gt;I just scratched an itch by writing a small plugin for PyBlosxom that
allows the &lt;a class=&quot;reference external&quot; href=&quot;http://pyblosxom.sourceforge.net/registry/text/rst.html&quot;&gt;rst&lt;/a&gt; (&lt;a class=&quot;reference external&quot; href=&quot;http://docutils.sourceforge.net/rst.html&quot;&gt;reStructured Text&lt;/a&gt;) and &lt;a class=&quot;reference external&quot; href=&quot;http://pyblosxom.sourceforge.net/registry/display/readmore.html&quot;&gt;readmore&lt;/a&gt; plugins to work
together &lt;a class=&quot;footnote-reference&quot; href=&quot;http://freshfoo.com/blog/index.atom#id2&quot; id=&quot;id1&quot;&gt;[1]&lt;/a&gt;. It defines a reST &amp;quot;break&amp;quot; directive which gets transformed
into the breakpoint string the readmore plugin looks out for. This
allows for &amp;quot;Read more...&amp;quot; breaks to be inserted in for reST based
articles.&lt;/p&gt;
&lt;p&gt;For further information see the &lt;a class=&quot;reference external&quot; href=&quot;http://freshfoo.com/code/&quot;&gt;Code&lt;/a&gt; page here and at the top of the
&lt;a class=&quot;reference external&quot; href=&quot;http://freshfoo.com/hg/pyblosxom-plugins/trunk/raw-file/9afdcd2bf738/rst_break/rst_break.py&quot;&gt;plugin&lt;/a&gt; itself.&lt;/p&gt;
&lt;table class=&quot;docutils footnote&quot; frame=&quot;void&quot; id=&quot;id2&quot; rules=&quot;none&quot;&gt;
&lt;colgroup&gt;&lt;col class=&quot;label&quot; /&gt;&lt;col /&gt;&lt;/colgroup&gt;
&lt;tbody valign=&quot;top&quot;&gt;
&lt;tr&gt;&lt;td class=&quot;label&quot;&gt;&lt;a class=&quot;fn-backref&quot; href=&quot;http://freshfoo.com/blog/index.atom#id1&quot;&gt;[1]&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Yes, the audience for this plugin is probably tiny!&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;</content>
		<author>
			<name>Menno Smits</name>
			<email>menno AT freshfoo DOT com</email>
			<uri>http://freshfoo.com/blog</uri>
		</author>
		<source>
			<title type="html">Menno's Musings</title>
			<subtitle type="html">software | life | whatever</subtitle>
			<link rel="self" href="http://freshfoo.com/blog/index.atom"/>
			<id>http://freshfoo.com/blog/index.atom</id>
			<updated>2010-02-09T08:22:25+00:00</updated>
			<rights type="html">Copyright 2009 Menno Smits</rights>
		</source>
	</entry>

	<entry xml:lang="en-us">
		<title type="html">Links for 2010-01-29 [del.icio.us]</title>
		<link href="http://feedproxy.google.com/~r/SmallValuesOfCool/~3/_CJP9mmmdQg/brunns"/>
		<id>http://del.icio.us/brunns#2010-01-29</id>
		<updated>2010-01-30T08:00:00+00:00</updated>
		<content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://daringfireball.net/2010/01/various_ipad_thoughts&quot;&gt;Daring Fireball: Various and Assorted Thoughts and Observations Regarding the Just-Announced iPad&lt;/a&gt;&lt;br /&gt;
Some interesting stuff here, both pro and con.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://xkcd.com/695/&quot;&gt;Spirit&lt;/a&gt;&lt;br /&gt;
The little rover that could. :-(&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://unwarrantedinsults.blogspot.com/2010/01/jd-salinger.html&quot;&gt;Unwarranted Insults: JD Salinger&lt;/a&gt;&lt;br /&gt;
&amp;quot;Katie Price has published nine books in the last five years you know. Just saying.&amp;quot;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.tuaw.com/2010/01/28/adobe-speaks-up-about-flash-on-the-ipad/&quot;&gt;Adobe speaks up about Flash on the iPad&lt;/a&gt;&lt;br /&gt;
Strangely enough, they aren&amp;#039;t happy bunnies.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://sites.google.com/a/thoughtworks.com/sites/&quot;&gt;ThoughtWorks Sites&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://news.bbc.co.uk/1/hi/sci/tech/8485669.stm&quot;&gt;Laser fusion test results raise energy hopes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.technologyreview.com/blog/arxiv/24737/&quot;&gt;RFID Data Reveals London's Polycentric Pattern of Commuting&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.boingboing.net/2010/01/28/mute-button.html&quot;&gt;Mute button&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.bpython-interpreter.org/&quot;&gt;bpython&lt;/a&gt;&lt;br /&gt;
Fancy interface to the Python interpreter&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://diveintomark.org/archives/2010/01/29/tinkerers-sunset&quot;&gt;Tinkerer&amp;rsquo;s Sunset&lt;/a&gt;&lt;br /&gt;
When DVD Jon was arrested after breaking the CSS encryption algorithm, he was charged with “unauthorized computer trespassing.” That led his lawyers to ask the obvious question, “On whose computer did he trespass?” The prosecutor’s answer: “his own.”

If that doesn’t make your heart skip a beat, you can stop reading now.&lt;/li&gt;
&lt;/ul&gt;</content>
		<author>
			<name>Simon Brunning</name>
			<uri>http://www.brunningonline.net/simon/blog/</uri>
		</author>
		<source>
			<title type="html">Small Values of Cool</title>
			<subtitle type="html">Simon Brunning - stuff that I find interesting</subtitle>
			<link rel="self" href="http://feeds.feedburner.com/SmallValuesOfCool"/>
			<id>http://feeds.feedburner.com/SmallValuesOfCool</id>
			<updated>2010-02-06T08:22:19+00:00</updated>
			<rights type="html">Copyright 2010</rights>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Howto bundle binary dependancies with py2exe, et al.</title>
		<link href="http://tartley.com/?p=997"/>
		<id>http://tartley.com/?p=997</id>
		<updated>2010-01-27T22:26:00+00:00</updated>
		<content type="html">&lt;p&gt;Hey. I notice that &lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/py2exe-users&quot;&gt;py2exe-users&lt;/a&gt; has a recent question that seems to be about how to correctly bundle the required Microsoft C runtime DLL with executables generated from Python scripts.&lt;/p&gt;
&lt;p&gt;Last month I updated the py2exe wiki tutorial to cover this issue, as best as I was able. Since people are still asking questions about it, I figured I&amp;#8217;d promote that change a little.&lt;/p&gt;
&lt;p&gt;Check out the new, revamped &lt;a href=&quot;http://www.py2exe.org/index.cgi/Tutorial&quot;&gt;py2exe tutorial page&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;That is all.&lt;/p&gt;</content>
		<author>
			<name>Jonathan Hartley</name>
			<uri>http://tartley.com</uri>
		</author>
		<source>
			<title type="html">tartley.com</title>
			<subtitle type="html">A website dedicated to oneself has been described as the greatest act of hubris. Welcome aboard.</subtitle>
			<link rel="self" href="http://tartley.com/?feed=rss2"/>
			<id>http://tartley.com/?feed=rss2</id>
			<updated>2010-02-08T18:22:07+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en-US">
		<title type="html">iPad Name Already in Use</title>
		<link href="http://feedproxy.google.com/~r/ForSomeValueOfMagic/~3/qL9CTG9Gnis/ipad-name-already-in-use.html"/>
		<id>tag:blogger.com,1999:blog-496482.post-2351009357040710050</id>
		<updated>2010-01-27T14:41:24+00:00</updated>
		<content type="html">One thing that Apple appears to have lost sight of in all the thrills of &lt;a href=&quot;http://www.macworld.com/article/145938/2010/01/tabletannouncement1.html&quot;&gt;announcing their new tablet computer&lt;/a&gt; is that Widgetaria, presumably an Apple business partner, &lt;a href=&quot;http://www.apple.com/downloads/dashboard/business/ipad.html&quot;&gt;already promotes software called iPad&lt;/a&gt;. I wonder if they care?&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/496482-2351009357040710050?l=holdenweb.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?a=qL9CTG9Gnis:ndEhSEEDrIU:yIl2AUoC8zA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?d=yIl2AUoC8zA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?a=qL9CTG9Gnis:ndEhSEEDrIU:Jy2wSXVWK38&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?i=qL9CTG9Gnis:ndEhSEEDrIU:Jy2wSXVWK38&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/ForSomeValueOfMagic/~4/qL9CTG9Gnis&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Steve</name>
			<email>noreply@blogger.com</email>
			<uri>http://holdenweb.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">For Some Value of &quot;Magic&quot;</title>
			<subtitle type="html">Python, software, open source, plus odd rants about almost anything</subtitle>
			<link rel="self" href="http://holdenweb.blogspot.com/atom.xml"/>
			<id>tag:blogger.com,1999:blog-496482</id>
			<updated>2010-02-06T14:23:16+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">pyCUDA on Windows and Mac for super-fast Python math using CUDA</title>
		<link href="http://ianozsvald.com/2010/01/26/pycuda-on-windows-and-mac-for-super-fast-python-math-using-cuda/"/>
		<id>http://ianozsvald.com/?p=820</id>
		<updated>2010-01-26T13:01:22+00:00</updated>
		<content type="html">&lt;p&gt;I&amp;#8217;ve just started to play with &lt;a href=&quot;http://mathema.tician.de/software/pycuda&quot;&gt;pyCUDA&lt;/a&gt; which lets you run parallel math operations on a &lt;a href=&quot;http://en.wikipedia.org/wiki/CUDA&quot;&gt;CUDA&lt;/a&gt;-compliant NVidia graphics card through Python.&lt;/p&gt;
&lt;p&gt;CUDA stands for Compute Unified Device Architecture &amp;#8211; it is an architecture that lets us program the Graphics Processing Unit (GPU) on a high powered graphics card to do scientific or graphical math calculations rather than the usual texture processing for games.  In essence it is a mini supercomputer that is specialised just for fast math operations &amp;#8211; if you can figure out how to use it.&lt;/p&gt;
&lt;p&gt;The goal is to off-load the CPU-intensive calculations for two of my clients (a physics company and a flood modelling company) to achieve 10* to 100* speed-ups using commodity graphics cards.&lt;/p&gt;
&lt;p&gt;pyCUDA makes it easy to interactively program a CUDA device rather than hitting C++ code with the slow write/compile/debug loop.  Recent MacBooks (mine was bought in January 2009) have NVidia cards with CUDA-compatible devices built-in (mine is a &lt;a href=&quot;http://en.wikipedia.org/wiki/GeForce_9_Series#9400M_G.5B37.5D&quot;&gt;9400M&lt;/a&gt;).  For my desktop computer I have a &lt;a href=&quot;http://en.wikipedia.org/wiki/GeForce_9_Series#GeForce_9800_GT&quot;&gt;9800 GT&lt;/a&gt; (costing £100).&lt;/p&gt;
&lt;p&gt;It turns out that this is bleeding-edge stuff &amp;#8211; getting pyCUDA compiled on my MacBook and Win XP machine took &lt;a href=&quot;http://tiker.net/pipermail/pycuda_tiker.net/2010-January/000857.html&quot;&gt;some&lt;/a&gt; &lt;a href=&quot;http://tiker.net/pipermail/pycuda_tiker.net/2010-January/000866.html&quot;&gt;time&lt;/a&gt; (forum posts for Mac and Windows issues) thankfully the group is helpful and the &lt;a href=&quot;http://wiki.tiker.net/PyCuda&quot;&gt;wiki&lt;/a&gt; has an installation section for Windows, Mac and Linux and some reasonable &lt;a href=&quot;http://documen.tician.de/pycuda/index.html&quot;&gt;documentation&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Right now I&amp;#8217;ve got as far as running some of the demo code on my MacBook (showing a 5* speed-up over the CPU) and my desktop (showing a 30* speed-up over the CPU).  I&amp;#8217;ll report more as I progress.&lt;/p&gt;
&lt;p&gt;Update &amp;#8211; pyCUDA works inside &lt;a href=&quot;http://ipython.scipy.org/&quot;&gt;IPython&lt;/a&gt; too, lovely.&lt;/p&gt;
&lt;p&gt;Update &amp;#8211; I don&amp;#8217;t have OpenGL working for gl_interop.py but as noted &lt;a href=&quot;http://www.mail-archive.com/pycuda@tiker.net/msg00586.html&quot;&gt;here &lt;/a&gt; you need &amp;#8220;CUDA_ENABLE_GL = True&amp;#8221; in siteconf.py and you need &lt;a href=&quot;http://pyopengl.sourceforge.net/&quot;&gt;PyOpenGL&lt;/a&gt; installed.  When rebuilding my MSVC threw a hissy fit, it isn&amp;#8217;t essential to my work so I&amp;#8217;m skipping this demo.&lt;/p&gt;
&lt;hr /&gt;
Ian produces professional screencasts (&lt;a href=&quot;http://procasts.co.uk/examples.html&quot; title=&quot;Professional screencast production&quot;&gt;ProCasts&lt;/a&gt;), writes &lt;a href=&quot;http://TheScreencastingHandbook.com&quot; title=&quot;Screencasting Tutorial eBook&quot;&gt;The Screencasting Handbook&lt;/a&gt;, programs Python, researches Artificial Intelligence (&lt;a href=&quot;http://morconsulting.com&quot; title=&quot;Artificial Intelligence consultant&quot;&gt;Mor Consulting&lt;/a&gt;) and is also a sea-side dweller and consumer of fine coffees.</content>
		<author>
			<name>Ian Ozsvald</name>
			<uri>http://ianozsvald.com</uri>
		</author>
		<source>
			<title type="html">Entrepreneurial Geekiness » Python</title>
			<subtitle type="html">My thoughts on screencasting, ProCasts and high-tech entrepreneurship</subtitle>
			<link rel="self" href="http://ianozsvald.com/category/python/feed/"/>
			<id>http://ianozsvald.com/category/python/feed/</id>
			<updated>2010-02-09T04:22:25+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Creating a Level for Thief 2</title>
		<link href="http://tartley.com/?p=958"/>
		<id>http://tartley.com/?p=958</id>
		<updated>2010-01-25T13:50:26+00:00</updated>
		<content type="html">&lt;p&gt;After &lt;a href=&quot;http://tartley.com/?p=956&quot;&gt;Sinister Ducks&lt;/a&gt;, my &lt;a href=&quot;http://www.gamedevlessons.com/&quot;&gt;videogame creation mentor&lt;/a&gt; suggested that I create a mod for an existing game, in order to distance myself a little from the programming aspects of creating a game, and instead spend a little time considering the gameplay and the art and the music from the perspective of the user. Sounds like useful advice.&lt;/p&gt;
&lt;p&gt;So, the last couple of weeks I&amp;#8217;ve been working through the &lt;a href=&quot;http://www.jasonotto.net/tutorials/CompleteTut.htm&quot;&gt;tutorials&lt;/a&gt; for &lt;a href=&quot;http://en.wikipedia.org/wiki/DromEd&quot;&gt;DromEd&lt;/a&gt;, the notoriously cranky level editor for vintage sneak-em-up &lt;a href=&quot;http://en.wikipedia.org/wiki/Thief:_The_Dark_Project&quot;&gt;Thief: The Dark Project&lt;/a&gt;. (Specifically for the sequel, &lt;a href=&quot;http://en.wikipedia.org/wiki/Thief_II:_The_Metal_Age&quot;&gt;Thief 2: The Metal Age&lt;/a&gt;, which has a slightly improved engine and editor.) I chose this for three reasons:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Released in 1998, &lt;em&gt;Thief&lt;/em&gt; is old enough that the assets are simple &lt;a href=&quot;http://www.mobygames.com/game/windows/thief-ii-the-metal-age/screenshots/gameShotId,7666/&quot;&gt;low-fidelity geometry and bitmaps&lt;/a&gt;. These are easy enough for me to create and edit, plus if I intersperse existing game assets with my own shoddy creations, there won&amp;#8217;t be a tremendously jarring disparity in apparent quality.&lt;/li&gt;
&lt;li&gt;Even though &lt;em&gt;Thief&lt;/em&gt; is ten years old and the company that created it long gone, there&amp;#8217;s still &lt;a href=&quot;http://www.ttlg.com/&quot;&gt;a thriving community&lt;/a&gt; of amateur afficionados, churning out &lt;a href=&quot;http://www.ttlg.com/forums/showthread.php?p=1508201&quot;&gt;new missions&lt;/a&gt; at the rate of several per month, many of which are of exceedingly high quality &amp;#8211; in some cases exceeding that of the original game. I&amp;#8217;ll be in good company, will have some meaningful feedback, and will have forums to turn to when I get into difficulties.&lt;/li&gt;
&lt;li&gt;Last but not least, &lt;em&gt;Thief&lt;/em&gt; is one of my favourite games of all time. The emphasis on sneaking around and avoiding confrontation suits my sensibilities. Your protagonist, Garrett, is a marvellous, mercenary character. Best of all, in &lt;em&gt;Thief 1&lt;/em&gt;, it reveals unexpected depth halfway through &amp;#8211; the player&amp;#8217;s expectations of a succession of simple heists takes a strange twist when the powerful storyline reveals itself.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Having finished the tutorials, this weekend I broke ground on creating my own level, or &amp;#8216;fan-mission&amp;#8217; (FM), in the parlance:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://tartley.com/../wp-content/uploads/2010/01/dromed-sm.png&quot;&gt;&lt;img title=&quot;dromed-sm&quot; src=&quot;http://tartley.com/../wp-content/uploads/2010/01/dromed-sm.png&quot; alt=&quot;Designing a Thief2 Level in DromEd&quot; width=&quot;643&quot; height=&quot;502&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m using the DromEd Toolkit, which is DromEd with some third-party patches and bugfixes applied to it. My first impressions with DromEd are that it&amp;#8217;s very clunky and ugly, and startlingly lacking in documentation. I&amp;#8217;ve taken to dipping into the configuration files to see what keyboard commands exist to experiment with. There are a bewildering variety of binary patches to modify the executable in various exciting ways, and forum posts about it, although helpful and prolific, seem fragmentary and rife with broken links. I&amp;#8217;ve still no idea whether I ought to be using &lt;em&gt;Dromed Delux&lt;/em&gt; instead, nor where I should get that from. It&amp;#8217;s a glorious chaotic riot, and it&amp;#8217;s a little intimidating.&lt;/p&gt;
&lt;p&gt;Still, having said that, the binary patches have all worked fine for me, and the more I use the editor, the more it&amp;#8217;s starting to grow on me.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m setting my FM in a museum. There&amp;#8217;s already an existing museum mission out there, but as opposed to its marble-halled austerity, I&amp;#8217;m imagining this will be more like the cramped, cosy, wood-panneled chaotic collection of something like the wonderful &lt;a href=&quot;http://www.britishtours.com/360/soane-museum.html&quot;&gt;Sir John Soane&amp;#8217;s Museum&lt;/a&gt; in London.&lt;/p&gt;
&lt;p&gt;So progress as of week 1 looks like this: I&amp;#8217;ve carved out some very basic geometry to form a stocky museum building. Here you can just about make out a hole in the brick facade that will form the front entrance. This is not the entrance that the player will likely be using:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://tartley.com/wp-content/uploads/2010/01/front-entrance.jpg&quot;&gt;&lt;img class=&quot;alignnone size-full wp-image-991&quot; title=&quot;front-entrance&quot; src=&quot;http://tartley.com/wp-content/uploads/2010/01/front-entrance.jpg&quot; alt=&quot;&quot; width=&quot;640&quot; height=&quot;480&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This is all very crude thus far &amp;#8211; with repeating textures on large surfaces, and plain uniform lighting. There are a complete set of mostly rectangular ground-floor rooms, with interconnecting doorways. The highlight of my modelling to date is this stairway leading up to the (otherwise nonexistant) next floor.&lt;br /&gt;
&lt;span&gt;&lt;span&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://tartley.com/wp-content/uploads/2010/01/stairway.jpg&quot;&gt;&lt;img class=&quot;alignnone size-full wp-image-992&quot; title=&quot;stairway&quot; src=&quot;http://tartley.com/wp-content/uploads/2010/01/stairway.jpg&quot; alt=&quot;&quot; width=&quot;640&quot; height=&quot;480&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m not so happy with the wood texture I chose &amp;#8211; I&amp;#8217;ll go back and look for something more uniform. But I am happy with the way the stairs flair out at the bottom. I realised in the process of creating this that this makes it possible to fit a flight of stairs into a smaller space than would otherwise be possible, by allowing the bottom few steps to gracefully project out into the corridor.&lt;/p&gt;
&lt;p&gt;Having finished this last night, I then dreamed about geometric operations on three dimensional spaces, which I think is a good sign.&lt;/p&gt;</content>
		<author>
			<name>Jonathan Hartley</name>
			<uri>http://tartley.com</uri>
		</author>
		<source>
			<title type="html">tartley.com</title>
			<subtitle type="html">A website dedicated to oneself has been described as the greatest act of hubris. Welcome aboard.</subtitle>
			<link rel="self" href="http://tartley.com/?feed=rss2"/>
			<id>http://tartley.com/?feed=rss2</id>
			<updated>2010-02-08T18:22:07+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Build Pattern: Chained Continuous Build</title>
		<link href="http://feedproxy.google.com/~r/Magpiebrain/~3/DJ6uLSdAglg/"/>
		<id>http://www.magpiebrain.com/?p=744</id>
		<updated>2010-01-24T18:22:36+00:00</updated>
		<content type="html">&lt;p&gt;&lt;a href=&quot;http://www.magpiebrain.com/wp-content/uploads/2010/01/pipeline-flickr-Stuck-in-Customs.jpg&quot;&gt;&lt;img class=&quot;alignleft size-thumbnail wp-image-694&quot; title=&quot;The Steam Pipeline&quot; src=&quot;http://www.magpiebrain.com/wp-content/uploads/2010/01/pipeline-flickr-Stuck-in-Customs-150x150.jpg&quot; alt=&quot;Pipeline from Flickr user Stuck in Customs&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt; One of the problems quickly encountered when any new team adopts a Continuous Build is that builds become slow. Enforcing a &lt;a title=&quot;Magpiebrain: Build Pattern: Build Time Limit&quot; href=&quot;http://www.magpiebrain.com/2010/01/16/build-pattern-build-time-limit/&quot;&gt;Build Time Limit&lt;/a&gt; can help, but ultimately if all of your Continuous Build runs as one big monolithic block, there are limits to what you can do to decrease build times.&lt;/p&gt;
&lt;p&gt;One of the main issues is that you don&amp;#8217;t get fast feedback to tell you when there is an issue &amp;#8211; by breaking up a monolithic build you can gain fast feedback without reducing code coverage, and often without any complex setup.&lt;/p&gt;
&lt;p&gt;In a &lt;strong&gt;Chained Continuous Build&lt;/strong&gt;, multiple build stages are chained together in a flow. The goal is for the earlier stages to provide the fastest feedback possible, so that build breakages can be detected early. For example, a simple flow might first compile the software and run the unit tests, with the next stage running the slower end-to-end tests.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.magpiebrain.com/wp-content/uploads/2010/01/Simple.gif&quot;&gt;&lt;img class=&quot;aligncenter size-full wp-image-748&quot; title=&quot;Simple Build Chain&quot; src=&quot;http://www.magpiebrain.com/wp-content/uploads/2010/01/Simple.gif&quot; alt=&quot;&quot; width=&quot;294&quot; height=&quot;94&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;With the chain, a downstream stage only runs if the previous stage passed &amp;#8211; so in the above example, the end-to-end stage only runs if the build-and-test stage passes. &lt;/p&gt;
&lt;h3&gt;Handling Breaks&lt;/h3&gt;
&lt;p&gt;As with a Continuous Build you need to have a clear escalation process by which the whole team understands what to do in case of a break. Most teams I have worked with tend to stick to the rule of downing tools to fix the build if any part of the Continuous Build is red &amp;#8211; which is strongly recommended. It is important that if you do decide to split your continuous build into a chain that you don&amp;#8217;t let the team ignore builds that happen further along the chain.&lt;/p&gt;
&lt;h3&gt;Build Artifacts Once vs Rebuild&lt;/h3&gt;
&lt;p&gt;It is strongly suggested that you build the required artifacts once, and pass them along the chain. Rebuilding artifacts takes time &amp;#8211; and the whole point of a chained build is to improve feedback. Additionally getting into the habit of building an artifact once, and once only, will help when you start considering creating a proper Build Pipeline (see below).&lt;/p&gt;
&lt;h3&gt;And Build Pipelines&lt;/h3&gt;
&lt;p&gt;Note that a chained build is not necessarily the same thing as a Build Pipeline. A Chained Continuous Build simply represents one or more Continuous Builds in series, whereas a Build Pipeline fully models all the stages a software artifact moves from development right through to production. One or more Chained Continuous Builds may form part of a Build Pipeline, and a simplistic Build Pipeline might not represent anything other than Chained Continuous Builds, but Build Pipelines will often incorporate activities more varied than compilation or test running.&lt;/p&gt;
&lt;h3&gt;Fast Feedback vs Fast Total Build Time&lt;/h3&gt;
&lt;p&gt;One thing to note is that by breaking a big build up into smaller sections to improve fast feedback, counterintuitively you may well end up increasing overall build time. The time to build and pass artifacts from one stage to another adds time, as does dispatching calls to build processes further down the chain. This balance has to be considered &amp;#8211; consider being conservative in the splits you make, and always keep an eye on the total duration of your build chain.&lt;/p&gt;
&lt;h3&gt;Tool Support&lt;/h3&gt;
&lt;p&gt;Tooling can be complex. Simple straight-line chains can be relatively easily build using most continuous build systems. For example a common approach is to have one build check in some artifact which is the trigger point for another Continuos Build to run. Such approaches have the downside that the chain isn&amp;#8217;t explicitly modelled, and reporting of the current state of the chain ends up having to be jury rigged, typically through custom dashboards. More complex still is dealing with branching chains.&lt;/p&gt;
&lt;p&gt;Continuous Build systems have got more mature of late, with many of them supporting simple Chained Continuous Builds out of the box. &lt;a title=&quot;TeamCity Build Chains and Enhanced Build Dependencies support&quot; href=&quot;http://www.jetbrains.com/teamcity/features/continuous_integration.html#Build_Chains_and_Enhanced_Build_Dependencies&quot;&gt;TeamCity&lt;/a&gt;, &lt;a title=&quot;Hudson Downstream-Ext Plugin&quot; href=&quot;http://wiki.hudson-ci.org/display/HUDSON/Downstream-Ext+Plugin&quot;&gt;Hudson&lt;/a&gt; and &lt;a title=&quot;Cruise Features&quot; href=&quot;http://www.thoughtworks-studios.com/cruise-release-management/features-benefits&quot;&gt;Cruise&lt;/a&gt; and others all have some form of (varying) support. Cruise probably has the best support for running stages in parallel (caveat: Cruise is written by ThoughtWorks, the company I currently work for), and has some of the better support for visualising the chains, but given the way all of these tools are moving expect support in this area to get much better over time.&lt;/p&gt;
&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?a=DJ6uLSdAglg:4HxRdOEDqWo:yIl2AUoC8zA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?d=yIl2AUoC8zA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?a=DJ6uLSdAglg:4HxRdOEDqWo:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?a=DJ6uLSdAglg:4HxRdOEDqWo:D7DqB2pKExk&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?i=DJ6uLSdAglg:4HxRdOEDqWo:D7DqB2pKExk&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?a=DJ6uLSdAglg:4HxRdOEDqWo:dnMXMwOfBR0&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?d=dnMXMwOfBR0&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;</content>
		<author>
			<name>Sam Newman</name>
			<uri>http://www.magpiebrain.com</uri>
		</author>
		<source>
			<title type="html">Magpiebrain</title>
			<subtitle type="html">The blog of Sam Newman</subtitle>
			<link rel="self" href="http://feeds.feedburner.com/Magpiebrain"/>
			<id>http://feeds.feedburner.com/Magpiebrain</id>
			<updated>2010-02-02T22:22:04+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">IMAPClient 0.5.2</title>
		<link href="http://freshfoo.com/blog/IMAPClient-0.5.2"/>
		<id>http://freshfoo.com/blog/2010/01/24/IMAPClient-0.5.2</id>
		<updated>2010-01-24T17:58:00+00:00</updated>
		<content type="html">&lt;p&gt;IMAPClient 0.5.2 has just been released. This release fixes 2 bugs
(&lt;a class=&quot;reference external&quot; href=&quot;http://imapclient.freshfoo.com/ticket/28&quot;&gt;#28&lt;/a&gt; and &lt;a class=&quot;reference external&quot; href=&quot;http://imapclient.freshfoo.com/ticket/33&quot;&gt;#33&lt;/a&gt;).  Much thanks to Fergal Daly and Mark Eichin for
reporting these bugs.&lt;/p&gt;
&lt;p&gt;Install from the &lt;a class=&quot;reference external&quot; href=&quot;http://freshfoo.com/projects/IMAPClient/IMAPClient-0.5.2.tar.gz&quot;&gt;tarball&lt;/a&gt; or &lt;a class=&quot;reference external&quot; href=&quot;http://freshfoo.com/projects/IMAPClient/IMAPClient-0.5.2.zip&quot;&gt;zip&lt;/a&gt; or upgrade using easy_install or pip.&lt;/p&gt;</content>
		<author>
			<name>Menno Smits</name>
			<email>menno AT freshfoo DOT com</email>
			<uri>http://freshfoo.com/blog</uri>
		</author>
		<source>
			<title type="html">Menno's Musings</title>
			<subtitle type="html">software | life | whatever</subtitle>
			<link rel="self" href="http://freshfoo.com/blog/index.atom"/>
			<id>http://freshfoo.com/blog/index.atom</id>
			<updated>2010-02-09T08:22:25+00:00</updated>
			<rights type="html">Copyright 2009 Menno Smits</rights>
		</source>
	</entry>

	<entry xml:lang="en-US">
		<title type="html">Register for PyCon, or the Kitten Gets It</title>
		<link href="http://feedproxy.google.com/~r/ForSomeValueOfMagic/~3/8Gx0-qhOqIo/register-for-pycon-or-kitten-gets-it.html"/>
		<id>tag:blogger.com,1999:blog-496482.post-7848115737773799437</id>
		<updated>2010-01-22T21:14:47+00:00</updated>
		<content type="html">&lt;div class=&quot;separator&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://1.bp.blogspot.com/_JT1n2tt-4Wg/S0UxVwTiXuI/AAAAAAAAAWM/hwfxAOUdusc/s1600-h/kitten2.jpg&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://1.bp.blogspot.com/_JT1n2tt-4Wg/S0UxVwTiXuI/AAAAAAAAAWM/hwfxAOUdusc/s640/kitten2.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot;&gt;&lt;span&gt;&lt;i&gt;Just sayin', it might be better if you planned to attend the conference. &lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot;&gt;&lt;br /&gt;
&lt;/div&gt;It's not that I like harming innocent small furry creatures, it's just that there are still thousands of Python users and potential Python users who still don't know what excellent value for money the conference is, or how much fun you can have there.&lt;br /&gt;
&lt;br /&gt;
PyCon is in Atlanta this year, and despite the parlous state of the world economy there's a chance that it will be the biggest Python event ever. But hey, we all know that size isn't everything.&lt;br /&gt;
&lt;br /&gt;
Although I was notionally on the program committee, and did at least register my opinions of the talks I was allocated by the submissions scheme, I (yet again) didn't manage to make a single meeting due to pressure of other business.&amp;nbsp; I'm actually not too unhappy about that, given the incredibly difficult task that the committee had to perform in order to ... well, I was going to say &quot;sort the wheat from the chaff&quot;, but in fact there was so little chaff that wouldn't really be an appropriate analogy.&lt;br /&gt;
&lt;br /&gt;
A number of people have blogged already about &lt;i&gt;Five PyCon Talks You Must Not Miss&lt;/i&gt;, but since there's still a few hours to get in at the early bird rate I thought I'd throw out my list of unmissables from &lt;a href=&quot;http://us.pycon.org/2010/conference/talks/&quot;&gt;the extensive list of talks&lt;/a&gt;. How's that for arrogance?&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&lt;b&gt;A Short Pinax Tutorial&lt;/b&gt;, Danny Greenfeld&lt;/i&gt;. I have heard Danny speak at local Python user groups. If I had time I would be attending the half day Pinax tutorial that he and James Tauber are giving, but this is the second best way to find out how to get started with Pinax.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;i&gt;What Every Developer Should Know About Database Scalability&lt;/i&gt;&lt;/b&gt;,&lt;i&gt;&lt;b&gt; &lt;/b&gt;Jonathan Ellis&lt;/i&gt;. This one will be straight from the horse's mouth - it's always worth hearing Jonathan's summaries of his immense practical experience.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;i&gt;IronPython Tooling&lt;/i&gt;&lt;/b&gt;&lt;i&gt;, Dino E Viehland&lt;/i&gt;. As a Windows user who has hardly touched IronPython so far I am interested in finding out what my options are. Nobody is likely to know better than Dino, who is probably the most prominent member of the Microsoft development team.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;i&gt;Scaling Python Webapps from Zero to 50 Million Users - A Top-Down Approach&lt;/i&gt;&lt;/b&gt;&lt;i&gt;, Jinal Jhaveri&lt;/i&gt;. Although I haven't heard Jinal speak before I can't resist the lure of hearing what someone with really high-volume Python web experience has to say. &lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;i&gt;Why Not Run All Your Tests All the Time? A Study of Continuous Integration Systems&lt;/i&gt;&lt;/b&gt;&lt;i&gt;, Titus C Brown&lt;/i&gt;. Ever since I hear Titus' tutorial (with Grig Gheorghiu) on testing a couple of year's ago I've wanted to hear what he has to say about CI. This is my chance.&lt;br /&gt;
&lt;br /&gt;
Alas, five talks isn't anywhere near enough to encompass everything I want to hear, and I am also keenly anticipating &lt;i&gt;Turtles All The Way Down: Demystifying Deferreds&lt;/i&gt;, &lt;i&gt;Decorators, and Declarations&lt;/i&gt;, &lt;i&gt;Pay Only for What You Eat: A Tour of the Repoze.BFG Repository and Philosophy&lt;/i&gt;, &lt;i&gt;On The Subject Of Source Code&lt;/i&gt;, &lt;i&gt;Python's Dusty Corners&lt;/i&gt;, &lt;i&gt;Debating 'til Dawn: Topics to Keep You Up All Night&lt;/i&gt;, &lt;i&gt;Powerful Pythonic Patterns&lt;/i&gt; and &lt;i&gt;Tests and Testability&lt;/i&gt;.&amp;nbsp; This is going to be a knockout conference even before you consider all the amazing things that will be happening in Open Space.&lt;br /&gt;
&lt;br /&gt;
You really have to be there. And you'll be helping to save a poor kitten that never did anyone any harm in its life!&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/496482-7848115737773799437?l=holdenweb.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?a=8Gx0-qhOqIo:dwm1Ovb0MBI:yIl2AUoC8zA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?d=yIl2AUoC8zA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?a=8Gx0-qhOqIo:dwm1Ovb0MBI:Jy2wSXVWK38&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?i=8Gx0-qhOqIo:dwm1Ovb0MBI:Jy2wSXVWK38&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/ForSomeValueOfMagic/~4/8Gx0-qhOqIo&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Steve</name>
			<email>noreply@blogger.com</email>
			<uri>http://holdenweb.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">For Some Value of &quot;Magic&quot;</title>
			<subtitle type="html">Python, software, open source, plus odd rants about almost anything</subtitle>
			<link rel="self" href="http://holdenweb.blogspot.com/atom.xml"/>
			<id>tag:blogger.com,1999:blog-496482</id>
			<updated>2010-02-06T14:23:16+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Musicians : wake up!</title>
		<link href="http://tartley.com/?p=980"/>
		<id>http://tartley.com/?p=980</id>
		<updated>2010-01-22T09:43:24+00:00</updated>
		<content type="html">&lt;p&gt;I left this as a comment &lt;a href=&quot;http://www.tbray.org/ongoing/When/201x/2010/01/21/On-Books&quot;&gt;somewhere else&lt;/a&gt;, in response to someone complaining about how:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&amp;#8220;&amp;#8230;musicians are asked to just get over the fact that no one pays for music&amp;#8230; [it is] my hope that someday more people make the same realization that unless people to help finance records, you&amp;#8217;ll never get that fantastic song you can&amp;#8217;t stop listening to all summer.&amp;#8221;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Hey there. I really disagree that the onus is on the rest of society to solve all musicians&amp;#8217; problems. People have been copying my work on the internet for decades now. I&amp;#8217;m a computer programmer. We&amp;#8217;re in exactly the same boat as musicians &amp;#8211; probably more so, and have been there for longer. But we manage to get by.&lt;/p&gt;
&lt;p&gt;Some programmers attempt to stop copying of their work, but this is rarely successful. Others take a different tack. We&amp;#8217;ve had to adapt. We acknowledge that our work will be routinely pirated on the internet, and we adopt our business model accordingly. We have to make and sell different sizes and types of tools than we were accustomed to making, and sell them through different channels. We have had to find other ways of charging for our work. My own company gives away our software for free. We embrace piracy as inevitable, and use it as a promotional tool.&lt;/p&gt;
&lt;p&gt;This is difficult. It is counter-intuitive, grounded as we all are in the scarcity economy of the physical world. It requires us to change our attitudes and outlook and behaviour. Sometimes we fail. We are still figuring out the realities of our markets in a post-internet world.  But &lt;em&gt;goddammit&lt;/em&gt; we are trying and sometimes we try things and they work. The software business is more diverse and thriving than it ever has been &amp;#8211; despite all our work being just as freely copyable (and freely copied) as music.&lt;/p&gt;
&lt;p&gt;The financial hardship that musicians are feeling has always been felt by musicians. Copying music on the internet has not made this any worse than it always was. This is simply the cost of choosing to be a musician.&lt;/p&gt;
&lt;p&gt;Musicians must adapt, just like programmers have. It saddens me to see so few musicians even try. Is it really true that computer programmers are more flexible and adaptable and imaginative than musicians. Who would have thunk it?&lt;/p&gt;
&lt;p&gt;Embracing piracy as a promotional tool can allow bands to make more money on live shows than they have ever made selling records, but still, the majority of musicians sit around, complacent, thinking that the responsibility lies on the rest of society, to put things back the way they were before the internet.&lt;/p&gt;
&lt;p&gt;No. I for one refuse. Adapt or die &amp;#8211; if you can&amp;#8217;t make it, someone else will take your place. By definition, that someone will be more adaptable, imaginative, risk-taking and dynamic. Isn&amp;#8217;t that supposed to be what our creatives are good at?&lt;/p&gt;
&lt;p&gt;People will doubtless think I&amp;#8217;m being harsh &amp;#8211; imposing my tyranny on struggling musicians. But I&amp;#8217;m not. When I say &amp;#8220;adapt or die&amp;#8221;, I&amp;#8217;m not imposing my will. I&amp;#8217;m merely reminding you of reality. If we were talking about a guitarist who couldn&amp;#8217;t play the guitar, we would all agree that they have put themselves in a bit of a paradoxical situation, and that they must either adapt (learn to play) or die (stop being a guitarist.)&lt;/p&gt;
&lt;p&gt;This is how competition works. Competition might seem harsh, but it&amp;#8217;s best for everyone in the long run. The poor guitarists are eventually persuaded by market realities to stop being guitarists and try being something else. The good guitarists get rewarded, and the standard of music available to the world is increased as a result.&lt;/p&gt;
&lt;p&gt;Instead of untalented guitarists, today we are talking about musicians who would like to get paid, but who don&amp;#8217;t want to expend any energy on figuring out how they will get paid. Can you see the paradoxical situation they have put themselves in? This attitude is entirely understandable and human &amp;#8211; I also would enjoy locking myself in my room and making beautiful computer programs which nobody else need ever see. But if I expect to get paid for making computer programs, then I must interface with the reality of the world around me. It&amp;#8217;s no use me simply wishing that High St stores will start selling my software in shrinkwrapped boxes again &amp;#8211; those days are long gone. Instead, I must figure out what programs people want, and produce them in a timely manner at high quality, promote them somehow, and figure out my angle on how I&amp;#8217;m going to get people to pay.&lt;/p&gt;
&lt;p&gt;It is not too much for us to ask musicians to also have to conform to reality like this. If they want to make money, and the means of making money from music are changing, then they will have to expend a little energy figuring out how they are going to get people to pay. If they don&amp;#8217;t want to think about that at all, then fine, they won&amp;#8217;t get paid. Adapt or die, we&amp;#8217;ll all be better off for it.&lt;/p&gt;</content>
		<author>
			<name>Jonathan Hartley</name>
			<uri>http://tartley.com</uri>
		</author>
		<source>
			<title type="html">tartley.com</title>
			<subtitle type="html">A website dedicated to oneself has been described as the greatest act of hubris. Welcome aboard.</subtitle>
			<link rel="self" href="http://tartley.com/?feed=rss2"/>
			<id>http://tartley.com/?feed=rss2</id>
			<updated>2010-02-08T18:22:07+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">MSWindows Programming : Propogating child process exit values out of .bat scripts</title>
		<link href="http://tartley.com/?p=966"/>
		<id>http://tartley.com/?p=966</id>
		<updated>2010-01-21T20:04:25+00:00</updated>
		<content type="html">&lt;p&gt;&amp;#8220;God &lt;em&gt;dammit&lt;/em&gt;. Why won&amp;#8217;t you just DO what I WANT you hopeless pile of crap!&amp;#8221;&lt;/p&gt;
&lt;p&gt;So goes the refrain. I think you know where I&amp;#8217;m coming from. Yet again, I have ended up learning far more about crappy DOS scripting than I ever wanted to know.&lt;/p&gt;
&lt;p&gt;So I&amp;#8217;m writing a program to automate some small task on Windows. One of the jobs of this tool is to modify the current environment. But I don&amp;#8217;t know how a child process in Windows can modify the environment of it&amp;#8217;s parent (namely the command-line shell that invoked it.) Can it be done?&lt;/p&gt;
&lt;p&gt;So I hack a ghastly workaround: Wrap the script in a .bat file. A .bat file is invoked from the command-line in the same process as the shell, so any change it makes to the environment are made to the environment of the invoking shell itself. This also has the advantage that the tool can now be invoked by typing &amp;#8216;toolname&amp;#8217;, just like on other platforms, as opposed to &amp;#8216;toolname.py&amp;#8217; or even &amp;#8216;python toolname.py&amp;#8217;. So I wrap my Python script &amp;#8216;toolname.py&amp;#8217; with a new file, &amp;#8216;toolname.bat&amp;#8217;, living in the same directory:&lt;/p&gt;
&lt;pre class=&quot;brush: plain;&quot;&gt;
:: first run our tool
python &amp;quot;%~dp0%~n0.py&amp;quot; %*

:: then make any changes to the environment
set THIS=THAT
&lt;/pre&gt;
&lt;p&gt;The %~dp0 and %~n0 gobbledygook is a batch file way of referencing the same drive, path and filename (minus extension) as the current script, to which I add &amp;#8216;.py&amp;#8217; to run toolname.py. Easy enough.&lt;/p&gt;
&lt;p&gt;There&amp;#8217;s a minor problem: The environment changes that need to be made depend on what goes on inside toolname.py. So I have that Python write a new batch file to the temp directory, containing all the &amp;#8217;set&amp;#8217; commands which will replace the hardcoded  &amp;#8217;set THIS=THAT&amp;#8217; in the above script. Then we call that new temporary bat file from here:&lt;/p&gt;
&lt;pre class=&quot;brush: plain;&quot;&gt;
:: first run our tool
python &amp;quot;%~dp0%~n0.py&amp;quot; %*

:: then make any changes to the environment
call %Temp%\%~n0-setvar.bat
&lt;/pre&gt;
&lt;p&gt;Which is good enough. Presumably it will barf all over the place if run concurrently. But there&amp;#8217;s a more pressing problem. I need the exit value of this tool to be equal to the exit value from toolname.py. Currently, the exit value of this .bat script is always zero, because the &amp;#8216;call&amp;#8217; command at the end is always successful.&lt;/p&gt;
&lt;p&gt;One solution I&amp;#8217;ve seen used is to remember the exit value from toolname.py, and then use the DOS exit command to propagate this value out to our caller:&lt;/p&gt;
&lt;pre class=&quot;brush: plain;&quot;&gt;
:: first run our tool
python &amp;quot;%~dp0%~n0.py&amp;quot; %*
set EXITVAL=%ERRORLEVEL%

:: then make any changes to the environment
call %Temp%\%~n0-setvar.bat

exit %EXITVAL%
&lt;/pre&gt;
&lt;p&gt;The problem with this is that &amp;#8216;exit&amp;#8217; doesn&amp;#8217;t do what you think it does. It doesn&amp;#8217;t just stop interpreting the current script, rather it terminates the current interpreter, ie. the shell that is running the script. If you run this from a command-line, since Windows doesn&amp;#8217;t differentiate between a console and a shell, your window disappears. &lt;em&gt;Sigh&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;The exit command has a fix for this: It takes a switch &amp;#8216;/B&amp;#8217;, that causes it to just end the current script, rather than killing the shell. But now, it ignores any %EXITVAL% parameter you try to feed it, so the exit value of your batch file is always zero.&lt;/p&gt;
&lt;p&gt;This is what I get for developing software on Windows. Nothing ever works the way it ought to. It&amp;#8217;s as though everything were designed to oppose simple engineering idioms, like composing systems out of small, interchangeable parts.&lt;/p&gt;
&lt;p&gt;So here&amp;#8217;s what I finally did. The exit value of running a batch script can be set without using the hopelessly brain-dead &amp;#8216;exit&amp;#8217; command. It is equal to the exit value of the last process the script invokes. So instead of exit, simply find a process that will exit with the value you need, and invoke it as the final command in your batch script:&lt;/p&gt;
&lt;pre class=&quot;brush: plain;&quot;&gt;
:: first run our tool
python &amp;quot;%~dp0%~n0.py&amp;quot; %*
set EXITVAL=%ERRORLEVEL%

:: then make any changes to the environment
call %Temp%\%~n0-setvar.bat

:: and propagate the exit value to our invoker
python -c &amp;quot;import sys; sys.exit(%EXITVAL%)&amp;quot;
&lt;/pre&gt;
&lt;p&gt;Bingo. I now have a Python process that can modify the environment of its invoking shell, and propagates the correct exit value out of the wrapping DOS script. [Short bow. Applause. Roses. etc.]&lt;/p&gt;</content>
		<author>
			<name>Jonathan Hartley</name>
			<uri>http://tartley.com</uri>
		</author>
		<source>
			<title type="html">tartley.com</title>
			<subtitle type="html">A website dedicated to oneself has been described as the greatest act of hubris. Welcome aboard.</subtitle>
			<link rel="self" href="http://tartley.com/?feed=rss2"/>
			<id>http://tartley.com/?feed=rss2</id>
			<updated>2010-02-08T18:22:07+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">My Fonts Look Crap. I blame Windows and ATI.</title>
		<link href="http://tartley.com/?p=959"/>
		<id>http://tartley.com/?p=959</id>
		<updated>2010-01-20T20:21:09+00:00</updated>
		<content type="html">&lt;p&gt;I know, I &lt;em&gt;know&lt;/em&gt;. But I use Windows for 8 hours a day at work. So what do you do?&lt;/p&gt;
&lt;p&gt;Here&amp;#8217;s the poster-boy for programmer-friendly fonts, your friend and mine, everyone loves him, &lt;strong&gt;Inconsolata&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;(&lt;strong&gt;Update:&lt;/strong&gt; I evidently have some javascript or CSS trickery that squashes these images horizonally if your browser is narrow, to make them fit in the window. Since I&amp;#8217;m banging on about microscopic differences between microscopic fonts, then if you&amp;#8217;ve got this far you probably ought to make sure your browser window is wide enough.)&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://tartley.com/wp-content/uploads/2010/01/inconsolata-11.png&quot;&gt;&lt;img class=&quot;size-full wp-image-960 alignnone&quot; title=&quot;inconsolata-11&quot; src=&quot;http://tartley.com/wp-content/uploads/2010/01/inconsolata-11.png&quot; alt=&quot;inconsolata-11&quot; width=&quot;616&quot; height=&quot;335&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I don&amp;#8217;t know about you, but to me that looks unutterably crap. Wonky and irregular. On the right of the orange line is what it looks like with ClearType turned off. Meh. Presumably I&amp;#8217;m doing it wrong, somehow, but unless I figure out how, Inconsolata can fuck right off.&lt;/p&gt;
&lt;p&gt;So then I fire up the trusty fallback, &lt;strong&gt;Consolas&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://tartley.com/wp-content/uploads/2010/01/consolas-10.png&quot;&gt;&lt;img class=&quot;alignnone size-full wp-image-961&quot; title=&quot;consolas-10&quot; src=&quot;http://tartley.com/wp-content/uploads/2010/01/consolas-10.png&quot; alt=&quot;consolas-10&quot; width=&quot;616&quot; height=&quot;335&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This is better, certainly, but the letters look cramped. For the number of visible lines in a window that size, the letters are awful small. Again, on the right of the line is ClearType turned off &amp;#8211; which in this case distinctly worse.&lt;/p&gt;
&lt;p&gt;So I continue peering at a succession of monospaced idiocy, eventually ending up on &lt;strong&gt;DejaVu Sans Mono&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://tartley.com/wp-content/uploads/2010/01/deja-vu-sans-mono-9.png&quot;&gt;&lt;img class=&quot;alignnone size-full wp-image-962&quot; title=&quot;deja-vu-sans-mono-9&quot; src=&quot;http://tartley.com/wp-content/uploads/2010/01/deja-vu-sans-mono-9.png&quot; alt=&quot;deja-vu-sans-mono-9&quot; width=&quot;616&quot; height=&quot;331&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This still isn&amp;#8217;t perfect, but it&amp;#8217;s the best I can find. Note that it bears out my impression of Consolas being cramped &amp;#8211; even though the letters are substantially larger, we still manage to fit an extra line of text in. This time, turning ClearType off (right of the line) makes it a little crisper, and a little more wonky, but not much.&lt;/p&gt;
&lt;p&gt;This isn&amp;#8217;t just in Vim. It looks like this in all applications. I&amp;#8217;ve tried running the &lt;a href=&quot;http://www.microsoft.com/typography/ClearTypePowerToy.mspx&quot;&gt;ClearType Tuning Powertool&lt;/a&gt;, to no avail. Admittedly, all these fonts start to look a damn sight better when I increase the size a few notches. But that&amp;#8217;s bugger all use really, isn&amp;#8217;t it? Maybe I should be digging out some mono fonts designed especially to be viewed at small sizes? Oooh, now that&amp;#8217;s actually not a bad idea: How about those Android fonts everyone&amp;#8217;s banging on about? &lt;strong&gt;Droid Sans Mono:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;http://tartley.com/wp-content/uploads/2010/01/droid-sans-mono-101.png&quot;&gt;&lt;img class=&quot;alignnone size-full wp-image-964&quot; title=&quot;droid-sans-mono-10&quot; src=&quot;http://tartley.com/wp-content/uploads/2010/01/droid-sans-mono-101.png&quot; alt=&quot;droid-sans-mono-10&quot; width=&quot;616&quot; height=&quot;331&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This isn&amp;#8217;t bad, but does contain all the old &amp;#8216;zero vs upper-case O&amp;#8217; and &amp;#8216;one versus lower-case L&amp;#8217; ambiguities. I think I&amp;#8217;ll stick with DejaVu Sans Mono.&lt;/p&gt;
&lt;p&gt;Does Inconsolata work OK on Windows for everyone else?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update&lt;/strong&gt;: Gerry suggested trying out Proggy Fonts (thanks!). These are bitmap fonts (unless you want to do without extended characters) so they won&amp;#8217;t scale. Nevertheless, here&amp;#8217;s how some representative fonts from there look. First up, &lt;strong&gt;Proggy Clean slashed zero:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://tartley.com/wp-content/uploads/2010/01/proggy-clean-sz.png&quot;&gt;&lt;img class=&quot;alignnone size-full wp-image-994&quot; title=&quot;proggy-clean-sz&quot; src=&quot;http://tartley.com/wp-content/uploads/2010/01/proggy-clean-sz.png&quot; alt=&quot;proggy-clean-sz font&quot; width=&quot;616&quot; height=&quot;325&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I love the crisp clarity of a pixel-perfect bitmap font with no scaling or anti-aliasing. On the downside, I have a feeling that the characters&amp;#8217; shapes aren&amp;#8217;t quite as well-formed and beautiful as &lt;em&gt;DejaVu&lt;/em&gt;. Not sure whether or not this would bug me. Next up, &lt;strong&gt;Proggy Opti:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://tartley.com/wp-content/uploads/2010/01/proggy-opti.png&quot;&gt;&lt;img class=&quot;alignnone size-full wp-image-995&quot; title=&quot;proggy-opti&quot; src=&quot;http://tartley.com/wp-content/uploads/2010/01/proggy-opti.png&quot; alt=&quot;proggy-opti font&quot; width=&quot;616&quot; height=&quot;331&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Color me impressed. &lt;em&gt;Opti&lt;/em&gt; still has the wonderful pixel-perfect clarity of &lt;em&gt;Proggy Clean&lt;/em&gt;, and manages to fit four extra lines of text into the same sized window. Obviously in order to achieve this, the characters are smaller than &lt;em&gt;Deja Vu&lt;/em&gt;, but this is no bad thing. I would have liked to scale Deja Vu down a tad from the size you see it above, but if I try, the letters start to become a little distorted and indistinct. I might well give Opti a spin for a few days, see how it wears on me. Thanks for the suggestion Gerry!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;file://C:/DOCUME%7E1/jhartley/LOCALS%7E1/Temp/moz-screenshot.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;</content>
		<author>
			<name>Jonathan Hartley</name>
			<uri>http://tartley.com</uri>
		</author>
		<source>
			<title type="html">tartley.com</title>
			<subtitle type="html">A website dedicated to oneself has been described as the greatest act of hubris. Welcome aboard.</subtitle>
			<link rel="self" href="http://tartley.com/?feed=rss2"/>
			<id>http://tartley.com/?feed=rss2</id>
			<updated>2010-02-08T18:22:07+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en-uk">
		<title type="html">Tip: creating a Xapian database in Python</title>
		<link href="http://www.peterbe.com/plog/tip-creating-a-xapian-database-in-python"/>
		<id>http://www.peterbe.com/plog/tip-creating-a-xapian-database-in-python</id>
		<updated>2010-01-18T23:00:00+00:00</updated>
		<content type="html">&lt;p&gt;This cost me some hair-pulling today as I was trying to write a custom test runner for a Django project I'm working on that creates a test &lt;a href=&quot;http://xapian.org/&quot;&gt;Xapian&lt;/a&gt; database just for running the tests. Basically, you can't do this:
&lt;br /&gt;&lt;div class=&quot;my_code_default&quot;&gt;&amp;nbsp;&lt;span class=&quot;p_36&quot;&gt;os&lt;/span&gt;&lt;span class=&quot;p_38&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;p_36&quot;&gt;mkdir&lt;/span&gt;&lt;span class=&quot;p_38&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;p_36&quot;&gt;database_file_path&lt;/span&gt;&lt;span class=&quot;p_38&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;
&lt;/p&gt;
&lt;p&gt;Because if you do you end up getting these strange DatabaseOpeningError exceptions. So, here's how you do it:
&lt;br /&gt;&lt;div class=&quot;my_code_default&quot;&gt;&amp;nbsp;&lt;span class=&quot;p_43&quot;&gt;import&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;p_36&quot;&gt;xapian&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&lt;span class=&quot;p_36&quot;&gt;xapian&lt;/span&gt;&lt;span class=&quot;p_38&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;p_36&quot;&gt;WritableDatabase&lt;/span&gt;&lt;span class=&quot;p_38&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;p_36&quot;&gt;database_file_path&lt;/span&gt;&lt;span class=&quot;p_38&quot;&gt;,&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;p_36&quot;&gt;xapian&lt;/span&gt;&lt;span class=&quot;p_38&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;p_36&quot;&gt;DB_CREATE_OR_OPEN&lt;/span&gt;&lt;span class=&quot;p_38&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;
&lt;/p&gt;
&lt;p&gt;Hopefully by blogging about this some other poor coder will save some time. &lt;/p&gt;</content>
		<author>
			<name>Peter Bengtsson</name>
			<uri>http://www.peterbe.com</uri>
		</author>
		<source>
			<title type="html">Peterbe.com</title>
			<subtitle type="html">Peter Bengtssons's personal homepage about little things that concern him.</subtitle>
			<link rel="self" href="http://www.peterbe.com/rss.xml?oc=Python&amp;oc=Zope"/>
			<id>http://www.peterbe.com/rss.xml?oc=Python&amp;oc=Zope</id>
			<updated>2010-02-09T08:22:14+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en-US">
		<title type="html">Welcome BlueBream</title>
		<link href="http://feedproxy.google.com/~r/ForSomeValueOfMagic/~3/4nUY4S2TNrs/welcome-blubream.html"/>
		<id>tag:blogger.com,1999:blog-496482.post-1965110892870455832</id>
		<updated>2010-01-17T21:37:30+00:00</updated>
		<content type="html">Finally, a chance to start afresh with a promising set of technologies that has consistently been under-utilized. I am not even going to mention the old&amp;nbsp; name of the project, simply say that if you use Python you have likely heard of it. I have blogged&amp;nbsp; in the past about the confusion of search results.&amp;nbsp; Hopefully under the new name the vast preponderance of search results will be accurate and useful. So go &lt;a href=&quot;http://bluebream.posterous.com/&quot;&gt;meet BlueBream&lt;/a&gt;.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/496482-1965110892870455832?l=holdenweb.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?a=4nUY4S2TNrs:3OWiKcIGq20:yIl2AUoC8zA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?d=yIl2AUoC8zA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?a=4nUY4S2TNrs:3OWiKcIGq20:Jy2wSXVWK38&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?i=4nUY4S2TNrs:3OWiKcIGq20:Jy2wSXVWK38&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/ForSomeValueOfMagic/~4/4nUY4S2TNrs&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Steve</name>
			<email>noreply@blogger.com</email>
			<uri>http://holdenweb.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">For Some Value of &quot;Magic&quot;</title>
			<subtitle type="html">Python, software, open source, plus odd rants about almost anything</subtitle>
			<link rel="self" href="http://holdenweb.blogspot.com/atom.xml"/>
			<id>tag:blogger.com,1999:blog-496482</id>
			<updated>2010-02-06T14:23:16+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Organisation Antipattern: Chase The Ball</title>
		<link href="http://feedproxy.google.com/~r/Magpiebrain/~3/ny-PGhLbwDc/"/>
		<id>http://www.magpiebrain.com/?p=681</id>
		<updated>2010-01-17T14:57:58+00:00</updated>
		<content type="html">&lt;p&gt;&lt;a rel=&quot;attachment wp-att-680&quot; href=&quot;http://www.magpiebrain.com/2010/01/17/organsiation-antipattern-chase-the-ball/football/&quot;&gt;&lt;img class=&quot;alignleft size-thumbnail wp-image-680&quot; title=&quot;Kids Football&quot; src=&quot;http://www.magpiebrain.com/wp-content/uploads/2010/01/football-150x150.jpg&quot; alt=&quot;Football - from flickr user mosilager&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;Have you ever watched young children play football (of Soccer for our Atlantic cousins)? During the game, you can be certain of one thing &amp;#8211; most of the team on both sides will be doing nothing but chasing the ball. There is no thought about the bigger picture, no tactical decision making (let alone anything as grand as strategy). they only thought on everyone&amp;#8217;s minds is that &amp;#8220;We need to get the ball&amp;#8221;.&lt;/p&gt;
&lt;p&gt;This thinking in children is understandable. Less clear can be the basis for this kind of behaviour within an organisation.&lt;/p&gt;
&lt;p&gt;Typically, the &amp;#8216;lets drop everything and Chase The Ball&amp;#8217; mentality comes from organisations which are primarily reactive, rather than proactive. Companies which exist almost always in crisis mode typically have a reactive attitude &amp;#8211; working in teams like this can feel like you&amp;#8217;re being buffeted by forces outside of your control, running from one disaster to another, never making progress towards where you need to go.&lt;/p&gt;
&lt;p&gt;Small organisations that have got big often never get out of there reactive, firefighting mentality. All that happens is that more people are fighting the same fire.&lt;/p&gt;
&lt;p&gt;To be clear I&amp;#8217;m not talking about the problem being a single focus. I&amp;#8217;m talking about a team or organisation fixating on a single focus which isn&amp;#8217;t actually aligned with the longer term objectives. A bunch of kids chasing the ball need to think about winning the game, not getting the ball. Likewise an organisation needs to have clear line of sight to what its goals are, and always understand how what they are doing now gets them to where they want to go.&lt;/p&gt;
&lt;p&gt;There will always be urgent, short term things that need to be addressed. The important thing is that they are dealt with in proportion, without loosing sight of the overall objectives. Ring-fence team members (making sure they aren&amp;#8217;t always the same people) to Chase The Ball, and leave the larger organisation to focus on winning the game, or better yet winning the league.&lt;/p&gt;
&lt;p class=&quot;update&quot;&gt;Update: Fixed typo, thanks Ben and Julian!&lt;/p&gt;
&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?a=ny-PGhLbwDc:6Lq6I8pHk1s:yIl2AUoC8zA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?d=yIl2AUoC8zA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?a=ny-PGhLbwDc:6Lq6I8pHk1s:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?a=ny-PGhLbwDc:6Lq6I8pHk1s:D7DqB2pKExk&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?i=ny-PGhLbwDc:6Lq6I8pHk1s:D7DqB2pKExk&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?a=ny-PGhLbwDc:6Lq6I8pHk1s:dnMXMwOfBR0&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?d=dnMXMwOfBR0&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;</content>
		<author>
			<name>Sam Newman</name>
			<uri>http://www.magpiebrain.com</uri>
		</author>
		<source>
			<title type="html">Magpiebrain</title>
			<subtitle type="html">The blog of Sam Newman</subtitle>
			<link rel="self" href="http://feeds.feedburner.com/Magpiebrain"/>
			<id>http://feeds.feedburner.com/Magpiebrain</id>
			<updated>2010-02-02T22:22:04+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en-US">
		<title type="html">So, One of Life's Little Frustrations ...</title>
		<link href="http://feedproxy.google.com/~r/ForSomeValueOfMagic/~3/Sbdy5b6xFvM/so-one-of-lifes-little-frustrations.html"/>
		<id>tag:blogger.com,1999:blog-496482.post-2132675180285228333</id>
		<updated>2010-01-17T07:31:23+00:00</updated>
		<content type="html">... is the way Vista insists on taking the numbers in my filenames as numbers, thereby sorting them in precisely no convenient order. These files, however, are effectively named using a Hamming Code, so 62 &lt;i&gt;&lt;b&gt;is&lt;/b&gt;&lt;/i&gt; actually greater than 212, just like XP always knew. I just know this is going to turn out to be one of those awful tweaks that I should have put in three minutes after starting Vista.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://3.bp.blogspot.com/_JT1n2tt-4Wg/S1MBil3_7LI/AAAAAAAAAWU/VXNOHIuvlqE/s1600-h/WindowsFrustration1-17-2010+7-17-35+AM.png&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://3.bp.blogspot.com/_JT1n2tt-4Wg/S1MBil3_7LI/AAAAAAAAAWU/VXNOHIuvlqE/s640/WindowsFrustration1-17-2010+7-17-35+AM.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;I don't think we'll bother those nice Python people with that one. Which probably dooms this post to have me as the single reader.&lt;br /&gt;
&lt;br /&gt;
Sudden pleasant thought. I will email the client to whom I first promised this work and then they will know that work is not only underway but almost complete. I have to finish this today or send an incomplete deliverable, since the client has paid for the classes, which have been delivered.&lt;br /&gt;
&lt;br /&gt;
Happy Sunday. And people think that consulting is a part-time job ...&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/496482-2132675180285228333?l=holdenweb.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?a=Sbdy5b6xFvM:iE83X2KgNIE:yIl2AUoC8zA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?d=yIl2AUoC8zA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?a=Sbdy5b6xFvM:iE83X2KgNIE:Jy2wSXVWK38&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?i=Sbdy5b6xFvM:iE83X2KgNIE:Jy2wSXVWK38&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/ForSomeValueOfMagic/~4/Sbdy5b6xFvM&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Steve</name>
			<email>noreply@blogger.com</email>
			<uri>http://holdenweb.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">For Some Value of &quot;Magic&quot;</title>
			<subtitle type="html">Python, software, open source, plus odd rants about almost anything</subtitle>
			<link rel="self" href="http://holdenweb.blogspot.com/atom.xml"/>
			<id>tag:blogger.com,1999:blog-496482</id>
			<updated>2010-02-06T14:23:16+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en-US">
		<title type="html">Not Really Python, But ...</title>
		<link href="http://feedproxy.google.com/~r/ForSomeValueOfMagic/~3/ym5494s1qSg/nit-really-python-but.html"/>
		<id>tag:blogger.com,1999:blog-496482.post-4834655279143851857</id>
		<updated>2010-01-17T00:39:50+00:00</updated>
		<content type="html">We interrupt the newly established Python-only regime with a message from your fellow human-beings in Haiti.&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;&lt;b&gt;&lt;span&gt;if YouGiveAShit:&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; visit(&quot;&lt;a href=&quot;http://pyfound.blogspot.com/2010/01/haitis-problems.html&quot;&gt;http://pyfound.blogspot.com/2010/01/haitis-problems.html&lt;/a&gt;&quot;)&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
'Nuff said. This is a long-term project.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/496482-4834655279143851857?l=holdenweb.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?a=ym5494s1qSg:7hx8frxua-s:yIl2AUoC8zA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?d=yIl2AUoC8zA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?a=ym5494s1qSg:7hx8frxua-s:Jy2wSXVWK38&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?i=ym5494s1qSg:7hx8frxua-s:Jy2wSXVWK38&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/ForSomeValueOfMagic/~4/ym5494s1qSg&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Steve</name>
			<email>noreply@blogger.com</email>
			<uri>http://holdenweb.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">For Some Value of &quot;Magic&quot;</title>
			<subtitle type="html">Python, software, open source, plus odd rants about almost anything</subtitle>
			<link rel="self" href="http://holdenweb.blogspot.com/atom.xml"/>
			<id>tag:blogger.com,1999:blog-496482</id>
			<updated>2010-02-06T14:23:16+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Build Pattern: Build Time Limit</title>
		<link href="http://feedproxy.google.com/~r/Magpiebrain/~3/LFV1rzANqkk/"/>
		<id>http://www.magpiebrain.com/?p=689</id>
		<updated>2010-01-16T21:31:15+00:00</updated>
		<content type="html">&lt;p&gt;&lt;a rel=&quot;attachment wp-att-688&quot; href=&quot;http://www.magpiebrain.com/2010/01/16/build-pattern-build-time-limit/clock-flickr-laffy4k/&quot;&gt;&lt;img class=&quot;alignright size-thumbnail wp-image-688&quot; title=&quot;Clock&quot; src=&quot;http://www.magpiebrain.com/wp-content/uploads/2010/01/clock-flickr-laffy4k-150x150.jpg&quot; alt=&quot;Clock - from flickr user laffy4k&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt; Anyone who has worked in a team which uses a Continuous Build inevitably starts to learn about the cost of a long running build:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;More time between checkin and a report of a failure&lt;/li&gt;
&lt;li&gt;Higher chance of Continuous Build containing multiple checkins, increasing the chance of an integration break and complicating rollback&lt;/li&gt;
&lt;li&gt;Fixing a build related to a checkin made much earlier decreases productivity, leading to a reduction in productivity&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There are other &amp;#8216;build&amp;#8217; times to be aware of. A long &lt;a title=&quot;magpiebrain: Build Pattern: Checkin Gate&quot; href=&quot;http://www.magpiebrain.com/2007/01/29/build-pattern-checkin-gate/&quot;&gt;Checkin Gate&lt;/a&gt; build leads to an increased chance of someone else checking in before you, increasing the chance of an integration break when you do checkin. It also disrupts the developers normal flow &amp;#8211; they cannot easily work on new code, so effectively have to down tools waiting for the Checkin Gate has finished. You also need to consider the time taken to run a single test &amp;#8211; be it a small-scoped unit test, or a larger end to end test.&lt;/p&gt;
&lt;p&gt;No matter what the build is, a long build interrupts programmer flow, decreasing focus, and therefore decreasing productivity.&lt;/p&gt;
&lt;h3&gt;Different Builds, Different Limits&lt;/h3&gt;
&lt;p&gt;As a team, you should decide on acceptable &lt;strong&gt;Build Time Limit&lt;/strong&gt; for each &amp;#8216;build&amp;#8217; &amp;#8211; for example individual tests, Checkin Gates, and stages in your continuous build. You may even consider failing these builds if those time limits fail. Setting the Build Time Limit at the right level &amp;#8211; and keeping it there &amp;#8211; will help keep productivity high.&lt;/p&gt;
&lt;p&gt;Different builds get run with different frequencies. The more often a build is run, the faster it needs to be. Experience suggests the following time limits:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Single small-scoped unit test &amp;#8211; sub-second&lt;/li&gt;
&lt;li&gt;End-to-end test &amp;#8211; a few seconds&lt;/li&gt;
&lt;li&gt;Checkin Gate &amp;#8211; 30 seconds to a couple of minutes at most&lt;/li&gt;
&lt;li&gt;Continuous Build &amp;#8211; a handful of minutes&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;When your Continuous Build is part of a larger Build Pipeline, you may find it useful to set Build Time Limits for each stage in the pipeline. One might argue that enforcing Build Time Limits for each stage of a Build Pipeline &amp;#8211; manual or automated &amp;#8211; may be overkill, but having some reporting of when a limit is exceeded will help directly highlight bottlenecks in creating production deployable software.&lt;/p&gt;
&lt;h3&gt;Team Ownership&lt;/h3&gt;
&lt;p&gt;Teams must take ownership of ensuring that the Build Time Limit is enforced. Further, they should always look for opportunities to reduce them further. Any decision to increase any Build Time Limit should be taken by the whole team &amp;#8211; likewise any decrease in a Built Time Limit with decreases test coverage should be agreed with all. Everyone should be empowered however to look for quick wins.&lt;/p&gt;
&lt;p&gt;Some teams find the need for a Build Tzar/Build Cop role &amp;#8211; someone who is in charge of the health of the build. I consider such roles as being short term measures only, and should certainly be considered an anti-pattern if they exist for any length of time. At the extreme end of this spectrum is the dedicated build team. Empowering the whole team is key.&lt;/p&gt;
&lt;h3&gt;Making Things Faster&lt;/h3&gt;
&lt;p&gt;There are a number of ways of making individual tests fast, which will depend both on the nature of the technology being used and the way it is being used. Consider making a Checkin Gate fast using a &lt;a title=&quot;magpiebrain: Build Pattern: Movable Checkin Gate&quot; href=&quot;http://www.magpiebrain.com/2010/01/10/build-pattern-movable-checkin-gate/&quot;&gt;Movable Checkin Gate&lt;/a&gt;. Long Continuous Build times can be mitigated through the use of a &lt;a href=&quot;http://www.magpiebrain.com/2010/01/24/build-pattern-chained-continuous-build/&quot; title=&quot;Magpiebrain - Build Pattern: Chained Continuous Build&quot;&gt;Chained Continuous Build&lt;/a&gt;, perhaps as part of a larger Build Pipeline. &lt;/p&gt;
&lt;p&gt;You may also want to simply remove tests that are slow but provide little coverage. Often, it may even be the case that slow running tests represent a performance issue in the system itself.&lt;/p&gt;
&lt;p&gt;Some teams have also shown significant speed improvements by using the right hardware &amp;#8211; such as faster CPUs, RAM disks or SSD drives. However simply throwing hardware at the problem can help speed a Continuous Build up, but this does little to affect the build time on local development machines &amp;#8211; a situation where your continuous build is faster than your local development build is the opposite of what you want.&lt;/p&gt;
&lt;h3&gt;Further Reading&lt;/h3&gt;
&lt;p&gt;For more concrete evidence on how build times can influence the productivity of teams, &lt;a href=&quot;http://www.grahambrooks.com/&quot;&gt;Graham Brook&amp;#8217;s&lt;/a&gt; paper for Agile 2008, &lt;a href=&quot;http://portal.acm.org/citation.cfm?id=1443512&quot;&gt;Team Pace &amp;#8211; Keeping Build Times Down&lt;/a&gt;, details experiences of working with two different teams and the impact of long (and short) build times on the development team. Thanks also go to Graham for reviewing an earlier draft of this article.&lt;/p&gt;
&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?a=LFV1rzANqkk:NX_oLxO98H4:yIl2AUoC8zA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?d=yIl2AUoC8zA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?a=LFV1rzANqkk:NX_oLxO98H4:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?a=LFV1rzANqkk:NX_oLxO98H4:D7DqB2pKExk&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?i=LFV1rzANqkk:NX_oLxO98H4:D7DqB2pKExk&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?a=LFV1rzANqkk:NX_oLxO98H4:dnMXMwOfBR0&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?d=dnMXMwOfBR0&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;</content>
		<author>
			<name>Sam Newman</name>
			<uri>http://www.magpiebrain.com</uri>
		</author>
		<source>
			<title type="html">Magpiebrain</title>
			<subtitle type="html">The blog of Sam Newman</subtitle>
			<link rel="self" href="http://feeds.feedburner.com/Magpiebrain"/>
			<id>http://feeds.feedburner.com/Magpiebrain</id>
			<updated>2010-02-02T22:22:04+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en-US">
		<title type="html">Definitely Not P*thon</title>
		<link href="http://feedproxy.google.com/~r/ForSomeValueOfMagic/~3/TwMBK9o_r5o/definitely-not-pthon.html"/>
		<id>tag:blogger.com,1999:blog-496482.post-7001044915858924960</id>
		<updated>2010-01-16T17:34:02+00:00</updated>
		<content type="html">And, to&amp;nbsp; complete my test of the feed reconfiguration I am going to post something that &lt;i&gt;isn't&lt;/i&gt; about the P-language and ensure that it doesn't show up in Planet P*thon.&lt;br /&gt;
&lt;br /&gt;
To make ad hominem remarks about the collective denizens of the planet would be like talking behind their backs - and besides, what if the test fails?&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/496482-7001044915858924960?l=holdenweb.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?a=TwMBK9o_r5o:Yx1vBbT_mU4:yIl2AUoC8zA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?d=yIl2AUoC8zA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?a=TwMBK9o_r5o:Yx1vBbT_mU4:Jy2wSXVWK38&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?i=TwMBK9o_r5o:Yx1vBbT_mU4:Jy2wSXVWK38&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/ForSomeValueOfMagic/~4/TwMBK9o_r5o&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Steve</name>
			<email>noreply@blogger.com</email>
			<uri>http://holdenweb.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">For Some Value of &quot;Magic&quot;</title>
			<subtitle type="html">Python, software, open source, plus odd rants about almost anything</subtitle>
			<link rel="self" href="http://holdenweb.blogspot.com/atom.xml"/>
			<id>tag:blogger.com,1999:blog-496482</id>
			<updated>2010-02-06T14:23:16+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en-US">
		<title type="html">Just the Python, Please</title>
		<link href="http://feedproxy.google.com/~r/ForSomeValueOfMagic/~3/W7xSqaNgnPw/just-python-please.html"/>
		<id>tag:blogger.com,1999:blog-496482.post-4657433902679646637</id>
		<updated>2010-01-15T18:51:11+00:00</updated>
		<content type="html">The webmasters are having a spring clean and &lt;i&gt;suggested&lt;/i&gt; that I might like to provide a &quot;pure Python&quot; feed. Michael Foord pointed out that such feeds existed already. If you want to skip the irrelevant waffling and occasional foray into politics then from now on Planet Python should see such a feed.&lt;br /&gt;
&lt;br /&gt;
Direct subscribers wanting only Python can follow&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a class=&quot;moz-txt-link-freetext&quot; href=&quot;http://holdenweb.blogspot.com/search/label/python&quot;&gt;http://holdenweb.blogspot.com/search/label/python&lt;/a&gt; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;a class=&quot;moz-txt-link-freetext&quot; href=&quot;http://holdenweb.blogspot.com/feeds/posts/default/-/python&quot;&gt;http://holdenweb.blogspot.com/feeds/posts/default/-/python&lt;/a&gt;&lt;br /&gt;
if they prefer.&lt;br /&gt;
&lt;br /&gt;
Other blogs:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://yorksamerica.blogspot.com/&quot;&gt;A Yorkshireman in America&lt;/a&gt; where the rabid politics really live&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://onyourdesktop.blogspot.com/&quot;&gt;On Your Desktop&lt;/a&gt; lame celebrity desktop blog&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://pycon.blogspot.com/&quot;&gt;PyCon&lt;/a&gt; conferences - you probably get this via the Planet&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href=&quot;http://pyfound.blogspot.com/&quot;&gt;Python Software Foundation News&lt;/a&gt; others contribute more than I do&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/496482-4657433902679646637?l=holdenweb.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?a=W7xSqaNgnPw:K_vXo3ugvyU:yIl2AUoC8zA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?d=yIl2AUoC8zA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?a=W7xSqaNgnPw:K_vXo3ugvyU:Jy2wSXVWK38&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?i=W7xSqaNgnPw:K_vXo3ugvyU:Jy2wSXVWK38&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/ForSomeValueOfMagic/~4/W7xSqaNgnPw&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Steve</name>
			<email>noreply@blogger.com</email>
			<uri>http://holdenweb.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">For Some Value of &quot;Magic&quot;</title>
			<subtitle type="html">Python, software, open source, plus odd rants about almost anything</subtitle>
			<link rel="self" href="http://holdenweb.blogspot.com/atom.xml"/>
			<id>tag:blogger.com,1999:blog-496482</id>
			<updated>2010-02-06T14:23:16+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Rewrites and New Year Resolutions</title>
		<link href="http://feedproxy.google.com/~r/Magpiebrain/~3/HzaaS0R3I2M/"/>
		<id>http://www.magpiebrain.com/?p=671</id>
		<updated>2010-01-14T09:23:40+00:00</updated>
		<content type="html">&lt;p&gt;The reason so many New Year Resolutions get dropped, is because people start doing something out of the ordinary (for them) in order to institute a change, but never make that change a habit. It&amp;#8217;s the reason dieting does not work &amp;#8211; you shouldn&amp;#8217;t &lt;em&gt;go&lt;/em&gt; on a diet, you should &lt;em&gt;change&lt;/em&gt; your diet. The former implies a one-off activity that will somehow leave you better off &amp;#8211; and it may for a short period of time. The later states that you will change your habits, so that now on you will do something differently, from this point forward.&lt;/p&gt;
&lt;p&gt;When people embark on a &lt;a href=&quot;http://www.magpiebrain.com/2010/01/10/the-great-rewrite/&quot; title=&quot;Magpiebrain: The Great Rewrite&quot;&gt;Great Rewrite&lt;/a&gt;, they are undertaking the equivalent of a crash diet. Sure, you loose a few pounds, but when the old habits come back, and the diet has finished, all those pounds come back.  Rather than kid yourself that by starting afresh you&amp;#8217;ll learn from your old mistakes, start making changes in what you do now. In other words work to change the diet you have, the system you have &amp;#8211; that will lead to habit change which will stick. It&amp;#8217;ll also force you to deal with the problems you caused in the first place.&lt;/p&gt;
&lt;p&gt;Working to change the system you have now has other benefits &amp;#8211; other than being more likely to institute a change that sticks. It makes it easier for the whole team to be involved with the change, rather than leaving some people supporting the old system. It allows you to trade-off delivering new features and bug-fixes against architectural changes. But perhaps most importantly it helps create a team which understands that fixing a situation &amp;#8211; improving it for the better &amp;#8211; is possible and achievable.&lt;/p&gt;
&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?a=HzaaS0R3I2M:-axVf9UIxvo:yIl2AUoC8zA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?d=yIl2AUoC8zA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?a=HzaaS0R3I2M:-axVf9UIxvo:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?a=HzaaS0R3I2M:-axVf9UIxvo:D7DqB2pKExk&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?i=HzaaS0R3I2M:-axVf9UIxvo:D7DqB2pKExk&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?a=HzaaS0R3I2M:-axVf9UIxvo:dnMXMwOfBR0&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?d=dnMXMwOfBR0&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;</content>
		<author>
			<name>Sam Newman</name>
			<uri>http://www.magpiebrain.com</uri>
		</author>
		<source>
			<title type="html">Magpiebrain</title>
			<subtitle type="html">The blog of Sam Newman</subtitle>
			<link rel="self" href="http://feeds.feedburner.com/Magpiebrain"/>
			<id>http://feeds.feedburner.com/Magpiebrain</id>
			<updated>2010-02-02T22:22:04+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">I Am Not Sam Newman</title>
		<link href="http://feedproxy.google.com/~r/Magpiebrain/~3/-OoxtCM4vHc/"/>
		<id>http://www.magpiebrain.com/?p=668</id>
		<updated>2010-01-14T08:29:57+00:00</updated>
		<content type="html">&lt;p&gt;It has come to this. After many years of mis-directed mail, I have finally decided to put pen to paper (well, photon to monitor, but you get the idea) and state that I Am Not Sam Newman.&lt;/p&gt;
&lt;p&gt;World, here me now. It is possible &amp;#8211; nay likely &amp;#8211; that more than one person has the same combination of first and last names as another individual. We know for example that there are at least 54 &lt;a href=&quot;http://www.davegorman.com/projects_are_you_dave_gorman.html&quot;&gt;Dave Gormans&lt;/a&gt; in the world. That bloke went to the trouble of creating an entire TV series about the fact that the whole first name/surname thing doesn&amp;#8217;t not guarantee a unique identifier for human beings. The Chinese, to their credit, have &lt;a href=&quot;http://www.hindu.com/2007/06/30/stories/2007063050611100.htm&quot;&gt;worked this out a while ago&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Now I&amp;#8217;m trying to be nice about it. I have decided not to publish the emails from people asking me if I want to do documentary voice overs, well-wishers hoping my testicles get better soon (well, I think they meant &lt;a href=&quot;http://wwos.ninemsn.com.au/article.aspx?id=387970&quot;&gt;prostate&lt;/a&gt;), or the offers to speak on the corporate circuit about my hilarious non-pc anecdotes about how I once called &lt;a href=&quot;http://www.heraldsun.com.au/sport/afl/sam-newman-criticised-by-abcs-media-watch/story-e6frf8w6-1225778160576&quot;&gt;someone a monkey&lt;/a&gt;. Others, in a similar position to me, have &lt;a href=&quot;http://www.tony-hawks.com/skateboarding.php&quot;&gt;very much gone on the offensive&lt;/a&gt; in this regard, but I&amp;#8217;m not quite as funny as Tony Hawks (the comedian, not the skateboarder). &lt;/p&gt;
&lt;p&gt;So, oh blogosphere, here my cry &amp;#8211; I Am Not &lt;a href=&quot;http://www.google.com/search?client=safari&amp;#038;rls=en&amp;#038;q=sam+newman&amp;#038;ie=UTF-8&amp;#038;oe=UTF-8&quot;&gt;&lt;em&gt;That&lt;/em&gt; Sam Newman&lt;/a&gt; &amp;#8211; the controversial Australian sports personality. And for the record, despite the fact that I live in the UK, I&amp;#8217;m not the &lt;a href=&quot;http://samnewman.co.uk/&quot;&gt;&lt;em&gt;other&lt;/em&gt; Sam Newman&lt;/a&gt; either &amp;#8211; the Actor known for his voice over work, appearances in Holby City and the forthcoming lead role of Prince Andrei in War &amp;#038; Peace starring Brenda Blethyn and Malcolm McDowell.&lt;/p&gt;
&lt;p&gt; I Am &lt;a href=&quot;http://www.magpiebrain.com/about&quot;&gt;&lt;em&gt;this&lt;/em&gt;&lt;/a&gt; Sam Newman.&lt;/p&gt;
&lt;p&gt;But yes, I am related to Paul Newman. Feel free to forward on any royalty cheques my way.&lt;/p&gt;
&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?a=-OoxtCM4vHc:PapNNDjFhJM:yIl2AUoC8zA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?d=yIl2AUoC8zA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?a=-OoxtCM4vHc:PapNNDjFhJM:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?a=-OoxtCM4vHc:PapNNDjFhJM:D7DqB2pKExk&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?i=-OoxtCM4vHc:PapNNDjFhJM:D7DqB2pKExk&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?a=-OoxtCM4vHc:PapNNDjFhJM:dnMXMwOfBR0&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?d=dnMXMwOfBR0&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;</content>
		<author>
			<name>Sam Newman</name>
			<uri>http://www.magpiebrain.com</uri>
		</author>
		<source>
			<title type="html">Magpiebrain</title>
			<subtitle type="html">The blog of Sam Newman</subtitle>
			<link rel="self" href="http://feeds.feedburner.com/Magpiebrain"/>
			<id>http://feeds.feedburner.com/Magpiebrain</id>
			<updated>2010-02-02T22:22:04+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en-US">
		<title type="html">Links for 2010-01-12 [del.icio.us]</title>
		<link href="http://feedproxy.google.com/~r/ForSomeValueOfMagic/~3/0C_NcSYqaAo/steve.holden"/>
		<id>http://del.icio.us/steve.holden#2010-01-12</id>
		<updated>2010-01-13T08:00:00+00:00</updated>
		<content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://content.usatoday.com/communities/ondeadline/post/2009/11/panel-british-police-routinely-arrest-people-just-to-get-dna-samples/1&quot;&gt;British police arrest people just for DNA samples&lt;/a&gt;&lt;br /&gt;
Institutionalized racism in the British police service&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.tvidesign.co.uk/blog/improve-your-jquery-25-excellent-tips.aspx&quot;&gt;Improve your jQuery - 25 excellent tips&lt;/a&gt;&lt;br /&gt;
Good stuff from the jQuery world&lt;/li&gt;
&lt;/ul&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/ForSomeValueOfMagic/~4/0C_NcSYqaAo&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Steve</name>
			<email>noreply@blogger.com</email>
			<uri>http://holdenweb.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">For Some Value of &quot;Magic&quot;</title>
			<subtitle type="html">Python, software, open source, plus odd rants about almost anything</subtitle>
			<link rel="self" href="http://holdenweb.blogspot.com/atom.xml"/>
			<id>tag:blogger.com,1999:blog-496482</id>
			<updated>2010-02-06T14:23:16+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en-gb">
		<title type="html">WildlifeNearYou: It began on a fort...</title>
		<link href="http://simonwillison.net/2010/Jan/12/wildlifenearyou/"/>
		<id>http://simonwillison.net/2010/Jan/12/wildlifenearyou/</id>
		<updated>2010-01-12T22:53:20+00:00</updated>
		<content type="html">&lt;p&gt;Back in October 2008, myself and 11 others set out on the first &lt;a href=&quot;http://devfort.com/&quot;&gt;/dev/fort&lt;/a&gt; expedition. The idea was simple: gather a dozen geeks, rent a fort, take food and laptops and see what we could build in a week.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/nataliedowne/4269421697/in/set-72157623197922000/&quot;&gt;&lt;img src=&quot;http://simonwillison.net/static/2010/fort-clonque.jpg&quot; width=&quot;450&quot; height=&quot;186&quot; alt=&quot;Fort Clonque&quot; title=&quot;Fort Clonque, by Natalie Downe&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The fort was &lt;a href=&quot;http://www.anotherurl.com/travel/fort_clonque/handbook.htm&quot;&gt;Fort Clonque&lt;/a&gt; on &lt;a href=&quot;http://en.wikipedia.org/wiki/Alderney&quot;&gt;Alderney&lt;/a&gt; in the Channel Islands, managed by the &lt;a href=&quot;http://www.landmarktrust.org.uk/&quot;&gt;Landmark Trust&lt;/a&gt;. We spent an incredibly entertaining week there exploring Nazi bunkers, cooking, eating and coding up a storm. It ended up taking &lt;em&gt;slightly&lt;/em&gt; longer than a week to finish, but 14 months later the result of our combined efforts can finally be revealed: &lt;a href=&quot;http://www.wildlifenearyou.com/&quot;&gt;WildlifeNearYou.com&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;WildlifeNearYou is a site for people who like to see animals. Have you ever wanted to know where your nearest Llama is? Search for &quot;&lt;a href=&quot;http://www.wildlifenearyou.com/search/?q=llamas+near+brighton&quot;&gt;llamas near brighton&lt;/a&gt;&quot; and you'll see that there's one 18 miles away at &lt;a href=&quot;http://www.wildlifenearyou.com/gb/ashdown-forest-llama-farm/&quot;&gt;Ashdown Forest Llama Farm&lt;/a&gt;. Or you can see &lt;a href=&quot;http://www.wildlifenearyou.com/fr/&quot;&gt;all the places we know about in France&lt;/a&gt;, or &lt;a href=&quot;http://www.wildlifenearyou.com/simon/tripbook/&quot;&gt;all the trips I've been on&lt;/a&gt;, or &lt;a href=&quot;http://www.wildlifenearyou.com/animals/red-panda/&quot;&gt;everywhere you can see a Red Panda&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The data comes from user contributions: you can use WildlifeNearYou to track your trips to wildlife places and list the animals that you see there. We can only tell you about animals that someone else has already spotted.&lt;/p&gt;

&lt;p&gt;Once you've added some trips, you can import your Flickr photos and match them up with trips and species. We'll be adding a feature in the future that will push machine tags and other metadata back to Flickr for you, if you so choose.&lt;/p&gt;

&lt;p&gt;You can read more about WildlifeNearYou on the site's &lt;a href=&quot;http://www.wildlifenearyou.com/about/&quot;&gt;about page&lt;/a&gt; and &lt;a href=&quot;http://www.wildlifenearyou.com/about/faq/&quot;&gt;FAQ&lt;/a&gt;. Please don't hesitate to send us &lt;a href=&quot;http://www.wildlifenearyou.com/feedback/&quot;&gt;feedback&lt;/a&gt;!&lt;/p&gt;

&lt;h4&gt;What took so long?&lt;/h4&gt;

&lt;p&gt;So why did it take so long to finally launch it? A whole bunch of reasons. Week long marathon hacking sessions are an amazing way to generate a ton of interesting ideas and build a whole bunch of functionality, but it's very hard to get a single cohesive whole at the end of it. Tying up the loose ends is a pretty big job and is severely hampered by the fort residents returning to their real lives, where hacking for 5 hours straight on a cool easter egg suddenly doesn't seem quite so appealing. We also got stuck in a cycle of &quot;just one more thing&quot;. On the fort we didn't have internet access, so internet-dependent features like Freebase integration, Google Maps, Flickr imports and OpenID had to be left until later (&quot;they'll only take a few hours&quot; no longer works once you're off /dev/fort time).&lt;/p&gt;

&lt;p&gt;The biggest problem though was perfectionism. The longer a side-project drags on for, the more important it feels to make it &quot;just perfect&quot; before releasing it to the world. Finally, on New Year's Day, &lt;a href=&quot;http://natbat.net/&quot;&gt;Nat&lt;/a&gt; and I decided we had had enough. Our resolution was to &quot;ship the thing within a week, no matter what state it's in&quot;. We're a few days late, but it's finally live.&lt;/p&gt;

&lt;p&gt;WildlifeNearYou is by far the most fun website I've ever worked on. To all twelve of my &lt;a href=&quot;http://www.wildlifenearyou.com/about/#team_avatars&quot;&gt;intrepid fort companions&lt;/a&gt;: congratulations - we made a thing!&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/cindyli/3072532829/in/set-72157610369683426/&quot;&gt;&lt;img src=&quot;http://simonwillison.net/static/2010/devfort-group.jpg&quot; width=&quot;450&quot; height=&quot;300&quot; alt=&quot;Group photo at the Fort&quot; title=&quot;Group photo at the fort, by Cindy Li&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;!-- &lt;p&gt;&lt;a href=&quot;http://simonwillison.net/2010/Jan/12/wildlifenearyou/#comments&quot;&gt;&lt;img src=&quot;http://simonwillison.net/2010/Jan/12/wildlifenearyou/badge.png&quot; alt=&quot;Number of comments&quot;&gt;&lt;/a&gt;&lt;/p&gt; --&gt;</content>
		<author>
			<name>Simon Willison</name>
			<uri>http://simonwillison.net/</uri>
		</author>
		<source>
			<title type="html">Simon Willison's Weblog Entries</title>
			<subtitle type="html">PHP, XML, CSS and general web development</subtitle>
			<link rel="self" href="http://feeds.simonwillison.net/swn-entries"/>
			<id>http://simonwillison.net/</id>
			<updated>2010-02-06T16:22:24+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">A little thing about cron</title>
		<link href="http://freshfoo.com/blog/crontab-updates"/>
		<id>http://freshfoo.com/blog/2010/01/12/crontab-updates</id>
		<updated>2010-01-12T13:20:00+00:00</updated>
		<content type="html">&lt;p&gt;Here's something I just learned the hard way.&lt;/p&gt;
&lt;p&gt;If you edit a crontab with &amp;quot;crontab -e&amp;quot;, cron won't reload the updated
crontab immediately. Changes will be read at 1 second past the next
minute boundary. For example, if you change the crontab at 10:54:32,
cron will reload it at 10:55:01. This means if you're trying to test
how something runs under cron and you're impatient so you set that
thing to run at the next minute, you won't see it run!&lt;/p&gt;
&lt;p&gt;I spent a good half hour chasing my tail on this one. Set the
test entry to run 2 minutes ahead instead.&lt;/p&gt;</content>
		<author>
			<name>Menno Smits</name>
			<email>menno AT freshfoo DOT com</email>
			<uri>http://freshfoo.com/blog</uri>
		</author>
		<source>
			<title type="html">Menno's Musings</title>
			<subtitle type="html">software | life | whatever</subtitle>
			<link rel="self" href="http://freshfoo.com/blog/index.atom"/>
			<id>http://freshfoo.com/blog/index.atom</id>
			<updated>2010-02-09T08:22:25+00:00</updated>
			<rights type="html">Copyright 2009 Menno Smits</rights>
		</source>
	</entry>

	<entry xml:lang="en-US">
		<title type="html">Links for 2010-01-11 [del.icio.us]</title>
		<link href="http://feedproxy.google.com/~r/ForSomeValueOfMagic/~3/rVY9Gky8izg/steve.holden"/>
		<id>http://del.icio.us/steve.holden#2010-01-11</id>
		<updated>2010-01-12T08:00:00+00:00</updated>
		<content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.abc.net.au/unleashed/stories/s2789405.htm&quot;&gt;A war already lost&lt;/a&gt;&lt;br /&gt;
Been saying this all along&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.indiangeek.net/programmer-competency-matrix/&quot;&gt;Programmer Competency Matrix&lt;/a&gt;&lt;br /&gt;
Maybe needs some tweaking, but a useful set of categorizations&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.idrewthis.org/d/20040402.html&quot;&gt;Terror in Perspective&lt;/a&gt;&lt;br /&gt;
People have such a hard time being rational about terrorism&lt;/li&gt;
&lt;/ul&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/ForSomeValueOfMagic/~4/rVY9Gky8izg&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Steve</name>
			<email>noreply@blogger.com</email>
			<uri>http://holdenweb.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">For Some Value of &quot;Magic&quot;</title>
			<subtitle type="html">Python, software, open source, plus odd rants about almost anything</subtitle>
			<link rel="self" href="http://holdenweb.blogspot.com/atom.xml"/>
			<id>tag:blogger.com,1999:blog-496482</id>
			<updated>2010-02-06T14:23:16+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Psyco 2 Binaries for Windows and Python 2.4, 2.5 and 2.6</title>
		<link href="http://feedproxy.google.com/~r/voidspace/~3/k8ti35mJ0cs/arch_d7_2010_01_09.shtml"/>
		<id>http://feedproxy.google.com/~r/voidspace/~3/k8ti35mJ0cs/arch_d7_2010_01_09.shtml</id>
		<updated>2010-01-12T00:16:10+00:00</updated>
		<content type="html">Pysco is a specializing compiler (a kind of JIT) for Python written by Armin Rigo. The difficulty of maintaining and extending psyco was one of the motivating factors behind the inception of PyPy. ... [191 words]&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=k8ti35mJ0cs:7UsFj5hEA9g:F7zBnMyn0Lo&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=k8ti35mJ0cs:7UsFj5hEA9g:F7zBnMyn0Lo&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=k8ti35mJ0cs:7UsFj5hEA9g:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=k8ti35mJ0cs:7UsFj5hEA9g:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=k8ti35mJ0cs:7UsFj5hEA9g:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=k8ti35mJ0cs:7UsFj5hEA9g:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=k8ti35mJ0cs:7UsFj5hEA9g:dnMXMwOfBR0&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/voidspace?d=dnMXMwOfBR0&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/voidspace/~4/k8ti35mJ0cs&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Fuzzyman</name>
			<uri>http://www.voidspace.org.uk/python/weblog/index.shtml</uri>
		</author>
		<source>
			<title type="html">The Voidspace Techie Blog</title>
			<subtitle type="html">Python Programming, news on the Voidspace Python Projects and all things techie.</subtitle>
			<link rel="self" href="http://feeds.feedburner.com/voidspace"/>
			<id>http://feeds.feedburner.com/voidspace</id>
			<updated>2010-02-08T02:22:07+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Clojure editor/IDE options – IntelliJ v Emacs</title>
		<link href="http://feedproxy.google.com/~r/Magpiebrain/~3/qWbecPQBZb0/"/>
		<id>http://www.magpiebrain.com/?p=664</id>
		<updated>2010-01-11T08:11:08+00:00</updated>
		<content type="html">&lt;p&gt;So all the cool Clojure kids keep wanting me to use Emacs. The problem is that I haven&amp;#8217;t used Emacs for the last 10 years &amp;#8211; since, in fact, I had to support a C application on about 7 different flavours of UNIX. As you can imagine, I&amp;#8217;ve since expunged many of those past memories.&lt;/p&gt;
&lt;p&gt;My IDE of choice &amp;#8211; ever since I joined ThoughtWorks &amp;#8211; has been IntelliJ. Yes, I had to spend my time in the wilderness with Eclipse, long enough that I feel well placed to compare the two and consider IntelliJ superior for the languages I use often. &lt;a href=&quot;http://plugins.intellij.net/plugin/?id=4050&quot;&gt;La Clojure&lt;/a&gt; now seems to play nicely with IntelliJ&amp;#8217;s &lt;a href=&quot;http://www.jetbrains.com/idea/free_java_ide.html&quot;&gt;Community Edition&lt;/a&gt;, so I&amp;#8217;m giving that a try.&lt;/p&gt;
&lt;p&gt;Ultimately, I&amp;#8217;m learning a new language, one which often requires my brain to work in a quite different fashion than it is used to. As such, I&amp;#8217;m trying to limit the number of new things I have to deal with. If, however, I&amp;#8217;m missing out on something by not using Emacs, I may be persuaded to give it a go. So can anyone out there tell me what I&amp;#8217;m missing?&lt;/p&gt;
&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?a=qWbecPQBZb0:PN7EEs6NHac:yIl2AUoC8zA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?d=yIl2AUoC8zA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?a=qWbecPQBZb0:PN7EEs6NHac:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?a=qWbecPQBZb0:PN7EEs6NHac:D7DqB2pKExk&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?i=qWbecPQBZb0:PN7EEs6NHac:D7DqB2pKExk&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?a=qWbecPQBZb0:PN7EEs6NHac:dnMXMwOfBR0&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?d=dnMXMwOfBR0&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;</content>
		<author>
			<name>Sam Newman</name>
			<uri>http://www.magpiebrain.com</uri>
		</author>
		<source>
			<title type="html">Magpiebrain</title>
			<subtitle type="html">The blog of Sam Newman</subtitle>
			<link rel="self" href="http://feeds.feedburner.com/Magpiebrain"/>
			<id>http://feeds.feedburner.com/Magpiebrain</id>
			<updated>2010-02-02T22:22:04+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en-US">
		<title type="html">Links for 2010-01-10 [del.icio.us]</title>
		<link href="http://feedproxy.google.com/~r/ForSomeValueOfMagic/~3/4YWzpV82-iQ/steve.holden"/>
		<id>http://del.icio.us/steve.holden#2010-01-10</id>
		<updated>2010-01-11T08:00:00+00:00</updated>
		<content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.breakthematrix.com/Alternatives/Top-10-Cannabis-Studies-the-Government-Wished-it-Had-Never-Funded&quot;&gt;Top 10 Cannabis Studies the Government Wished it Had Never Funded&lt;/a&gt;&lt;br /&gt;
Sigh.  The insane &amp;quot;war on drugs&amp;quot; continues.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://gas2.org/2009/07/31/natural-gas-conversions-could-cost-a-couple-hundred/&quot;&gt;Natural Gas Conversions Could Cost a Couple Hundred : Gas 2.0&lt;/a&gt;&lt;br /&gt;
If this is even remotely close to true it is insane&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.telegraph.co.uk/topics/weather/6950788/Snow-stories-rare-self-rolling-snow-balls-found-in-UK.html&quot;&gt;Snow stories: rare self-rolling snow balls found in UK - Telegraph&lt;/a&gt;&lt;br /&gt;
Shows how unusual current weather conditions are&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://abstrusegoose.com/215&quot;&gt;Artificial&lt;/a&gt;&lt;br /&gt;
Fair point?&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://clips.rofl.to/clip/the-luckiest-man-ever&quot;&gt;The Luckiest Man EVER - Video, Clip - ROFL.TO&lt;/a&gt;&lt;br /&gt;
Somebody up there likes him&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://origamiboulder.com/&quot;&gt;Origami Boulder Company&lt;/a&gt;&lt;br /&gt;
Have loved this site for ten years&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.pluto.it/files/meeting1999/atti/no-patents/brevetti/docs/knuth_letter_en.html&quot;&gt;Letter to the Patent Office from Professor Donald Knuth. Programming Freedom.N11.Feb95.&lt;/a&gt;&lt;br /&gt;
Exactly&lt;/li&gt;
&lt;/ul&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/ForSomeValueOfMagic/~4/4YWzpV82-iQ&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Steve</name>
			<email>noreply@blogger.com</email>
			<uri>http://holdenweb.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">For Some Value of &quot;Magic&quot;</title>
			<subtitle type="html">Python, software, open source, plus odd rants about almost anything</subtitle>
			<link rel="self" href="http://holdenweb.blogspot.com/atom.xml"/>
			<id>tag:blogger.com,1999:blog-496482</id>
			<updated>2010-02-06T14:23:16+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">A Rambling Recording on Member Lookup in Python (podcast)</title>
		<link href="http://feedproxy.google.com/~r/voidspace/~3/_Y87LN511NA/arch_d7_2010_01_09.shtml"/>
		<id>http://feedproxy.google.com/~r/voidspace/~3/_Y87LN511NA/arch_d7_2010_01_09.shtml</id>
		<updated>2010-01-10T20:25:22+00:00</updated>
		<content type="html">I was thinking about the Python object model, in part as a result of my post on The Python Class Statement. Python is a really easy language to learn, but it also has advanced features like its protocols, descriptors and metaclasses, that make the full object model pretty complex - and that's before you start looking at the corner cases. ... [539 words]&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=_Y87LN511NA:4Ggy50kGghI:F7zBnMyn0Lo&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=_Y87LN511NA:4Ggy50kGghI:F7zBnMyn0Lo&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=_Y87LN511NA:4Ggy50kGghI:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=_Y87LN511NA:4Ggy50kGghI:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=_Y87LN511NA:4Ggy50kGghI:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=_Y87LN511NA:4Ggy50kGghI:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=_Y87LN511NA:4Ggy50kGghI:dnMXMwOfBR0&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/voidspace?d=dnMXMwOfBR0&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/voidspace/~4/_Y87LN511NA&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Fuzzyman</name>
			<uri>http://www.voidspace.org.uk/python/weblog/index.shtml</uri>
		</author>
		<source>
			<title type="html">The Voidspace Techie Blog</title>
			<subtitle type="html">Python Programming, news on the Voidspace Python Projects and all things techie.</subtitle>
			<link rel="self" href="http://feeds.feedburner.com/voidspace"/>
			<id>http://feeds.feedburner.com/voidspace</id>
			<updated>2010-02-08T02:22:07+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Build Pattern: Movable Checkin Gate</title>
		<link href="http://feedproxy.google.com/~r/Magpiebrain/~3/YaaZk2xOFEQ/"/>
		<id>http://www.magpiebrain.com/?p=657</id>
		<updated>2010-01-10T19:48:08+00:00</updated>
		<content type="html">&lt;p&gt;The &lt;a href=&quot;http://www.magpiebrain.com/2007/01/29/build-pattern-checkin-gate/&quot;&gt;Checkin Gate&lt;/a&gt; defines a set of tests which need to pass before a developer checks in. Typically, the tests are a subset of the total test suite &amp;#8211; selected to provide a good level of coverage, whilst running in a short space of time.&lt;/p&gt;
&lt;p&gt;There is an inherent trade-off with a Checkin Gate though &amp;#8211; you may end up having blank spots in your coverage of the gate itself, which can increase the frequency of build breakages in your Continuous Build. By applying a Movable Checkin Gate, you attempt to offset this shortcoming by changing what is in the Checkin Gate suite.&lt;/p&gt;
&lt;h3&gt;Selection Based On Planned Work&lt;/h3&gt;
&lt;p&gt;Periodically, you assess the kinds of work coming up. If you are using an iterative development process, you may do this at the beginning of each iteration. Based on the kinds of changes the team will be working on during the next period, select tests which cover these areas of code, removing others which cover functionality unlikely to change. The theory is that you are selecting tests that cover areas of code which are most likely to get broken. The tests should be selected such that they don&amp;#8217;t exceed your &lt;a href=&quot;http://www.magpiebrain.com/2010/01/16/build-pattern-build-time-limit/&quot;&gt;Build Time Limit&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;After each movement of the site driving the Checkin Gate, you can assess the success by looking at the failure rate of the Continuous Build.&lt;/p&gt;
&lt;p&gt;The key is to have a series of well categorized tests &amp;#8211; tagging could work well here. &lt;/p&gt;
&lt;h3&gt;Selection Based On Build Failure&lt;/h3&gt;
&lt;p&gt;An alternative technique for selecting the makeup of the Checkin Gate can be based on build failures. If tests not in the Checkin Gate start failing in your Continuous Build, put them into the Checkin Gate suite, swapping out other tests to keep you below your Build Time Limit. &lt;/p&gt;
&lt;h3&gt;Updates&lt;/h3&gt;
&lt;p&gt;Added link to the new Build Time Limit Pattern.&lt;/p&gt;
&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?a=YaaZk2xOFEQ:0XDe3k23O04:yIl2AUoC8zA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?d=yIl2AUoC8zA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?a=YaaZk2xOFEQ:0XDe3k23O04:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?a=YaaZk2xOFEQ:0XDe3k23O04:D7DqB2pKExk&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?i=YaaZk2xOFEQ:0XDe3k23O04:D7DqB2pKExk&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?a=YaaZk2xOFEQ:0XDe3k23O04:dnMXMwOfBR0&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?d=dnMXMwOfBR0&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;</content>
		<author>
			<name>Sam Newman</name>
			<uri>http://www.magpiebrain.com</uri>
		</author>
		<source>
			<title type="html">Magpiebrain</title>
			<subtitle type="html">The blog of Sam Newman</subtitle>
			<link rel="self" href="http://feeds.feedburner.com/Magpiebrain"/>
			<id>http://feeds.feedburner.com/Magpiebrain</id>
			<updated>2010-02-02T22:22:04+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Data Transformation and Language Syntax</title>
		<link href="http://feedproxy.google.com/~r/Magpiebrain/~3/sNDjn6NY-_w/"/>
		<id>http://www.magpiebrain.com/?p=648</id>
		<updated>2010-01-10T18:33:28+00:00</updated>
		<content type="html">&lt;p&gt;I&amp;#8217;m currently working on a personal project by way of learning Clojure &amp;#8211; it&amp;#8217;s actually a program to match up my itemised phone bill against my list of contacts to help me expense my calls. I find it best to have a real-world problem I need to solve to learn a new programming language. The problem itself is rather dull, but it did give me a chance to consider an issue I&amp;#8217;ve hit with many other languages.&lt;/p&gt;
&lt;p&gt;One of the core parts of my telephone expense program is the process of normalising phone numbers so I can match them up. What I am trying to do is something long the lines of:&lt;/p&gt;
&lt;pre class=&quot;brush: plain&quot;&gt;
Strip spaces, then add the missing area code, then internationalize it
&lt;/pre&gt;
&lt;p&gt;So in Clojure there are a number of functions I&amp;#8217;ve written, each of which take, and return, a string (the program is nowhere near finished, so consider this to be virtually pseudo code) :&lt;/p&gt;
&lt;pre class=&quot;brush: clojure&quot;&gt;
(defn #^String normalize [str]
  (internationalize (add-missing-areacode (strip-spaces str))))
&lt;/pre&gt;
&lt;p&gt;In Java, this would look like:&lt;/p&gt;
&lt;pre class=&quot;brush: java&quot;&gt;
public String normalize(String str) {
  return internationalize(addMissingAreaCode(stripSpaces(str)));
}
&lt;/pre&gt;
&lt;p&gt;The problem is that I, and most of the western world, read from left to right &amp;#8211; with both Java and Clojure I&amp;#8217;m having to read from right to left to determine what is being done. One system I use frequently has a construct which matches what I&amp;#8217;m after &amp;#8211; UNIX:&lt;/p&gt;
&lt;pre class=&quot;brush: bash&quot;&gt;
strip-spaces &quot;44 1230 9183&quot; | add-area-code | internationalize
&lt;/pre&gt;
&lt;p&gt;So what other languages support this kind of construct? I suspect I could coax Scala into doing something like this, and it seems that it is right up Python&amp;#8217;s alley (Django&amp;#8217;s excellent templating system has &lt;a href=&quot;http://docs.djangoproject.com/en/dev/ref/templates/builtins/&quot; title=&quot;Built-in template tags and filters&quot;&gt;filters&lt;/a&gt; which do exactly that). But if I want to use Clojure, am I stuck with this inside-out programming model? What other JVM-based languages would help me here &amp;#8211; &lt;a href=&quot;http://ioke.org/&quot;&gt;Ioke&lt;/a&gt; perhaps? It seems right up &lt;a href=&quot;http://code.google.com/p/anic/&quot;&gt;AINC&amp;#8217;s&lt;/a&gt; alley, but that syntax makes me want to cry&amp;#8230;&lt;/p&gt;
&lt;p class=&quot;update&quot;&gt;Update 11 Jan 2010: Thanks to &lt;a href=&quot;http://exploringclojure.blogspot.com/&quot;&gt;Matt&lt;/a&gt; for &lt;a href=&quot;http://exploringclojure.blogspot.com/2010/01/function-chaining.html&quot; title=&quot;Exploring Clojure: function composition&quot;&gt;pointing me&lt;/a&gt; towards Clojure&amp;#8217;s &amp;#8216;&lt;code&gt;-&gt;&lt;/code&gt;&amp;#8216; macro. This looks pretty close to what I&amp;#8217;m after. So I *think* I should be able to do something along the lines of:&lt;/p&gt;
&lt;pre class=&quot;brush: clojure&quot;&gt;
(-&gt; phoneNumber stripSpaces addAreaCode internationalize)
&lt;/pre&gt;
&lt;p&gt;Which is very cool.&lt;/p&gt;
&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?a=sNDjn6NY-_w:Cg2meMAYXkc:yIl2AUoC8zA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?d=yIl2AUoC8zA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?a=sNDjn6NY-_w:Cg2meMAYXkc:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?a=sNDjn6NY-_w:Cg2meMAYXkc:D7DqB2pKExk&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?i=sNDjn6NY-_w:Cg2meMAYXkc:D7DqB2pKExk&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?a=sNDjn6NY-_w:Cg2meMAYXkc:dnMXMwOfBR0&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?d=dnMXMwOfBR0&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;</content>
		<author>
			<name>Sam Newman</name>
			<uri>http://www.magpiebrain.com</uri>
		</author>
		<source>
			<title type="html">Magpiebrain</title>
			<subtitle type="html">The blog of Sam Newman</subtitle>
			<link rel="self" href="http://feeds.feedburner.com/Magpiebrain"/>
			<id>http://feeds.feedburner.com/Magpiebrain</id>
			<updated>2010-02-02T22:22:04+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">The Great Rewrite</title>
		<link href="http://feedproxy.google.com/~r/Magpiebrain/~3/XppwbYT1UYs/"/>
		<id>http://www.magpiebrain.com/?p=503</id>
		<updated>2010-01-10T15:29:28+00:00</updated>
		<content type="html">&lt;p&gt;There is a rustle in the posit-in notes. The water cooler ripples. USB-powered missile launchers inexplicably fire, whilst nerf guns jam mid-battle. There is the smell of sulfur in the air. The Great Rewrite Approaches.&lt;/p&gt;
&lt;p&gt;The signs were there. Grumbling from the developers &amp;#8211; sometimes new to the project. &amp;#8220;This code is horrible!&amp;#8221;, &amp;#8220;Completely unfit for purpose!&amp;#8221;, &amp;#8220;If only we could start again&amp;#8230;&amp;#8221;.&lt;/p&gt;
&lt;p&gt;Delays to new functionality are laid at the door of the code. The one and only solution now on offer is to rewrite the entire codebase &amp;#8211; nothing short of this will help. Eventually, managers are won over, and The Great Rewrite begins.&lt;/p&gt;
&lt;p&gt;It is an epic undertaking. Some poor fools have to stay behind and look after the existing system, whilst others forge ahead into a brave, new world, leaving the horrid, old, decrepit and so uncool system behind.&lt;/p&gt;
&lt;p&gt;Morale soars &amp;#8211; the developers have a spring in their step. The business, initially, is confident. &amp;#8220;Don&amp;#8217;t worry &amp;#8211; the new version is right around the corner!&amp;#8221; they are told. Meanwhile support for the existing system is suffering &amp;#8211; the team maintaining the existing codebase is a fraction of the size it used to be, and most of the senior technical people have to be on the rewrite.&lt;/p&gt;
&lt;p&gt;The natives grow restless &amp;#8211; the system they use, day in, day out, isn&amp;#8217;t moving on. Feature requests seem to disappear into a black hole. &amp;#8220;Soon&amp;#8221; they are promised. &amp;#8220;Soon, all your dreams will come true! Once The New System is launched, what you want is top of the list!&amp;#8221;.&lt;/p&gt;
&lt;p&gt;Months pass. And still, the rewrite continues. But it is closer now &amp;#8211; inching towards readiness. Finally, long overdue, The New System is ready. The users are excited &amp;#8211; all the recent troubles are to cease, as The Great Rewrite is over. &lt;/p&gt;
&lt;p&gt;And now, the launch day.&lt;/p&gt;
&lt;p&gt;There are bugs. Things that used to work, don&amp;#8217;t work any more. There are few, if any new features. The system is new, but doesn&amp;#8217;t offer the users anything new &amp;#8211; but they have to learn to get to grips with The New System. The disgruntled emails start.&lt;/p&gt;
&lt;p&gt;&amp;#8220;Don&amp;#8217;t worry!&amp;#8221; says the Project Manager. Now The Great Rewrite has finished, the new features will arrive any day now!&lt;/p&gt;
&lt;p&gt;And some of them do. Initially, at least, new features are easier than before to create, and ship. But after time, the same problems with the code base emerge. It turns out that having the same group of people building the same old system without changing their approach or ideas doesn&amp;#8217;t lead to a different type of system. They never had to deal with the old issues head-on, they just sidestepped them, pressing on into the greenfield.&lt;/p&gt;
&lt;p&gt;More time passes. Features take longer to ship, the code is harder to deal with. And once again, talk turns to another Great Rewrite&amp;#8230;&lt;/p&gt;
&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?a=XppwbYT1UYs:75KRZUekDoo:yIl2AUoC8zA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?d=yIl2AUoC8zA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?a=XppwbYT1UYs:75KRZUekDoo:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?a=XppwbYT1UYs:75KRZUekDoo:D7DqB2pKExk&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?i=XppwbYT1UYs:75KRZUekDoo:D7DqB2pKExk&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?a=XppwbYT1UYs:75KRZUekDoo:dnMXMwOfBR0&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/Magpiebrain?d=dnMXMwOfBR0&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;</content>
		<author>
			<name>Sam Newman</name>
			<uri>http://www.magpiebrain.com</uri>
		</author>
		<source>
			<title type="html">Magpiebrain</title>
			<subtitle type="html">The blog of Sam Newman</subtitle>
			<link rel="self" href="http://feeds.feedburner.com/Magpiebrain"/>
			<id>http://feeds.feedburner.com/Magpiebrain</id>
			<updated>2010-02-02T22:22:04+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Notes on the Python Class Statement</title>
		<link href="http://feedproxy.google.com/~r/voidspace/~3/y7-c3169YBw/arch_d7_2010_01_09.shtml"/>
		<id>http://feedproxy.google.com/~r/voidspace/~3/y7-c3169YBw/arch_d7_2010_01_09.shtml</id>
		<updated>2010-01-10T13:49:13+00:00</updated>
		<content type="html">Python classes are created at runtime, usually when you execute a script, or import the module they are defined in. Class creation is done primarily with the class statement. ... [889 words]&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=y7-c3169YBw:qfrec8KwoNw:F7zBnMyn0Lo&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=y7-c3169YBw:qfrec8KwoNw:F7zBnMyn0Lo&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=y7-c3169YBw:qfrec8KwoNw:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=y7-c3169YBw:qfrec8KwoNw:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=y7-c3169YBw:qfrec8KwoNw:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=y7-c3169YBw:qfrec8KwoNw:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=y7-c3169YBw:qfrec8KwoNw:dnMXMwOfBR0&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/voidspace?d=dnMXMwOfBR0&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/voidspace/~4/y7-c3169YBw&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Fuzzyman</name>
			<uri>http://www.voidspace.org.uk/python/weblog/index.shtml</uri>
		</author>
		<source>
			<title type="html">The Voidspace Techie Blog</title>
			<subtitle type="html">Python Programming, news on the Voidspace Python Projects and all things techie.</subtitle>
			<link rel="self" href="http://feeds.feedburner.com/voidspace"/>
			<id>http://feeds.feedburner.com/voidspace</id>
			<updated>2010-02-08T02:22:07+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Release: ConfigObj 4.7.0 and validate 1.0.1</title>
		<link href="http://feedproxy.google.com/~r/voidspace/~3/08gNAV1rIh0/arch_d7_2010_01_09.shtml"/>
		<id>http://feedproxy.google.com/~r/voidspace/~3/08gNAV1rIh0/arch_d7_2010_01_09.shtml</id>
		<updated>2010-01-10T00:14:15+00:00</updated>
		<content type="html">I've just released ConfigObj 4.7.0 and validate 1.0.1. ConfigObj is an easy to use configuration file reader and writer module. ... [576 words]&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=08gNAV1rIh0:94MptoAhgfM:F7zBnMyn0Lo&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=08gNAV1rIh0:94MptoAhgfM:F7zBnMyn0Lo&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=08gNAV1rIh0:94MptoAhgfM:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=08gNAV1rIh0:94MptoAhgfM:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=08gNAV1rIh0:94MptoAhgfM:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=08gNAV1rIh0:94MptoAhgfM:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=08gNAV1rIh0:94MptoAhgfM:dnMXMwOfBR0&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/voidspace?d=dnMXMwOfBR0&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/voidspace/~4/08gNAV1rIh0&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Fuzzyman</name>
			<uri>http://www.voidspace.org.uk/python/weblog/index.shtml</uri>
		</author>
		<source>
			<title type="html">The Voidspace Techie Blog</title>
			<subtitle type="html">Python Programming, news on the Voidspace Python Projects and all things techie.</subtitle>
			<link rel="self" href="http://feeds.feedburner.com/voidspace"/>
			<id>http://feeds.feedburner.com/voidspace</id>
			<updated>2010-02-08T02:22:07+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Sinister Redux</title>
		<link href="http://tartley.com/?p=956"/>
		<id>http://tartley.com/?p=956</id>
		<updated>2010-01-09T15:57:47+00:00</updated>
		<content type="html">&lt;p&gt;A few months ago, &lt;a href=&quot;http://millenniumhand.co.uk/&quot;&gt;Glenn&lt;/a&gt; and &lt;a href=&quot;http://www.babbageclunk.com/&quot;&gt;Christian&lt;/a&gt; and &lt;a href=&quot;http://freshfoo.com&quot;&gt;Menno&lt;/a&gt; and myself created &lt;em&gt;Sinister Ducks&lt;/em&gt;, a game with some quacking, for &lt;a href=&quot;http://www.pyweek.org/9/&quot;&gt;PyWeek 9&lt;/a&gt;, a contest to write a game in Python in a week. It plays a little like a simplified version of the arcade classic &lt;a href=&quot;http://en.wikipedia.org/wiki/Joust_%28video_game%29&quot;&gt;Joust&lt;/a&gt; &amp;#8211; press fire to flap. When birds collide, the highest one wins, while the lowest one sheds feathers and plummets to the ground.&lt;/p&gt;
&lt;p&gt;Since the competition, I&amp;#8217;ve been polishing and refactoring for my own edification in odd hours here and there, and I&amp;#8217;m pleased to declare that process finished. Behold, Sinister Ducks 1.0.2:&lt;/p&gt;
&lt;p&gt;&lt;img class=&quot;alignnone&quot; title=&quot;Sinister Ducks 1.0.2&quot; src=&quot;http://brokenspell.googlecode.com/svn/trunk/docs/screenshots/screenshot-final-1.0.2.jpg&quot; alt=&quot;Sinister Ducks 1.0.2&quot; width=&quot;1030&quot; height=&quot;793&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Things I added since the competition include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fixed the game being so ridiculously easy that one could play it interminably&lt;/li&gt;
&lt;li&gt; There are now lives, and an actual Game Over screen and everything&lt;/li&gt;
&lt;li&gt;Completely reworked how the gameplay works in regard to attacking ducks and collecting feathers &amp;#8211; our previous mechanic didn&amp;#8217;t work very well. The feathers now temporarily boost a score multiplier, displayed top-left. Attacking other birds yields more points for successful chained consecutive attacks, without collecting any feathers along the way. But you can only &lt;em&gt;get&lt;/em&gt; feathers in the first place by attacking birds. It&amp;#8217;s your job to figure out the resulting best-scoring dynamic.&lt;/li&gt;
&lt;li&gt;Understand and enjoying the scoring dynamic is aided with little floating numbers showing the value of each bird you defeat.&lt;/li&gt;
&lt;li&gt;Enemy birds now come in larger waves as time goes on, and one or two of the sinister ducks are angry and &lt;em&gt;fast&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;The game speed is now scaled by the time between refreshes, so it now runs perfectly fine on slow machines or VMs that can&amp;#8217;t make 60fps, or if your monitor has an unusual refresh rate, or even if you disabled vsync in your graphics drivers to yield hundreds of frames per second.&lt;/li&gt;
&lt;li&gt;Refactoring and OpenGL performance fixes (those sprites are texture-mapped quads, under the covers.) so that it&amp;#8217;s now massively faster than it should ever need to be. The refresh rate with vsync disabled on my own 5 year old lappy is about 400fps.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can download a Windows binary to download, unzip and double-click. On Linux or Macs it should run from source code, if you can be bothered to install the dependencies first, as described in the &lt;a href=&quot;http://brokenspell.googlecode.com/svn/trunk/README.txt&quot;&gt;README&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The game&amp;#8217;s only website is its &lt;a href=&quot;http://code.google.com/p/brokenspell/&quot;&gt;Google Code repository&lt;/a&gt;, from where you can download it.&lt;/p&gt;</content>
		<author>
			<name>Jonathan Hartley</name>
			<uri>http://tartley.com</uri>
		</author>
		<source>
			<title type="html">tartley.com</title>
			<subtitle type="html">A website dedicated to oneself has been described as the greatest act of hubris. Welcome aboard.</subtitle>
			<link rel="self" href="http://tartley.com/?feed=rss2"/>
			<id>http://tartley.com/?feed=rss2</id>
			<updated>2010-02-08T18:22:07+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">PyCrypto 2.1.0 Binaries for Windows 32bit Python 2.6, 2.5 and 2.4</title>
		<link href="http://feedproxy.google.com/~r/voidspace/~3/HFXVJrq_LVI/arch_d7_2010_01_09.shtml"/>
		<id>http://feedproxy.google.com/~r/voidspace/~3/HFXVJrq_LVI/arch_d7_2010_01_09.shtml</id>
		<updated>2010-01-09T15:57:29+00:00</updated>
		<content type="html">PyCrypto is a Python cryptography package originally created by Andrew Kuchling and now maintained by Dwayne C. Litzenberger. For a while I've been hosting Windows binaries for version 2.0.1. ... [126 words]&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=HFXVJrq_LVI:EmIoDaVIqyM:F7zBnMyn0Lo&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=HFXVJrq_LVI:EmIoDaVIqyM:F7zBnMyn0Lo&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=HFXVJrq_LVI:EmIoDaVIqyM:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=HFXVJrq_LVI:EmIoDaVIqyM:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=HFXVJrq_LVI:EmIoDaVIqyM:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=HFXVJrq_LVI:EmIoDaVIqyM:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=HFXVJrq_LVI:EmIoDaVIqyM:dnMXMwOfBR0&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/voidspace?d=dnMXMwOfBR0&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/voidspace/~4/HFXVJrq_LVI&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Fuzzyman</name>
			<uri>http://www.voidspace.org.uk/python/weblog/index.shtml</uri>
		</author>
		<source>
			<title type="html">The Voidspace Techie Blog</title>
			<subtitle type="html">Python Programming, news on the Voidspace Python Projects and all things techie.</subtitle>
			<link rel="self" href="http://feeds.feedburner.com/voidspace"/>
			<id>http://feeds.feedburner.com/voidspace</id>
			<updated>2010-02-08T02:22:07+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en-US">
		<title type="html">Links for 2010-01-07 [del.icio.us]</title>
		<link href="http://feedproxy.google.com/~r/ForSomeValueOfMagic/~3/gs6vJ6fuDbM/steve.holden"/>
		<id>http://del.icio.us/steve.holden#2010-01-07</id>
		<updated>2010-01-08T08:00:00+00:00</updated>
		<content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.bbc.co.uk/iplayer/console/bbc_radio_fourfm&quot;&gt;BBC iPlayer Console - Listen live - BBC Radio 4 FM&lt;/a&gt;&lt;br /&gt;
Brilliant!&lt;/li&gt;
&lt;/ul&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/ForSomeValueOfMagic/~4/gs6vJ6fuDbM&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Steve</name>
			<email>noreply@blogger.com</email>
			<uri>http://holdenweb.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">For Some Value of &quot;Magic&quot;</title>
			<subtitle type="html">Python, software, open source, plus odd rants about almost anything</subtitle>
			<link rel="self" href="http://holdenweb.blogspot.com/atom.xml"/>
			<id>tag:blogger.com,1999:blog-496482</id>
			<updated>2010-02-06T14:23:16+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Fun with Unicode, Latin-1 and a C1 Control Code</title>
		<link href="http://feedproxy.google.com/~r/voidspace/~3/KXHHPqpbp88/arch_d7_2010_01_02.shtml"/>
		<id>http://feedproxy.google.com/~r/voidspace/~3/KXHHPqpbp88/arch_d7_2010_01_02.shtml</id>
		<updated>2010-01-07T12:42:27+00:00</updated>
		<content type="html">Unicode is a rabbit-warren of complexity; almost fractal in nature, the more you learn about it the more complexity you discover. Anyway, all that aside you can have great fun (i.e. ... [554 words]&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=KXHHPqpbp88:uSourtwfvec:F7zBnMyn0Lo&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=KXHHPqpbp88:uSourtwfvec:F7zBnMyn0Lo&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=KXHHPqpbp88:uSourtwfvec:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=KXHHPqpbp88:uSourtwfvec:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=KXHHPqpbp88:uSourtwfvec:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=KXHHPqpbp88:uSourtwfvec:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=KXHHPqpbp88:uSourtwfvec:dnMXMwOfBR0&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/voidspace?d=dnMXMwOfBR0&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/voidspace/~4/KXHHPqpbp88&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Fuzzyman</name>
			<uri>http://www.voidspace.org.uk/python/weblog/index.shtml</uri>
		</author>
		<source>
			<title type="html">The Voidspace Techie Blog</title>
			<subtitle type="html">Python Programming, news on the Voidspace Python Projects and all things techie.</subtitle>
			<link rel="self" href="http://feeds.feedburner.com/voidspace"/>
			<id>http://feeds.feedburner.com/voidspace</id>
			<updated>2010-02-08T02:22:07+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en-US">
		<title type="html">Links for 2010-01-06 [del.icio.us]</title>
		<link href="http://feedproxy.google.com/~r/ForSomeValueOfMagic/~3/qTlvv2dMF84/steve.holden"/>
		<id>http://del.icio.us/steve.holden#2010-01-06</id>
		<updated>2010-01-07T08:00:00+00:00</updated>
		<content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://holdenweb.blogspot.com/2010/01/register-for-pycon-or-kitten-gets-it.html&quot;&gt;Register for PyCon, or the Kitten Gets It&lt;/a&gt;&lt;br /&gt;
Please, please, pretty please!&lt;/li&gt;
&lt;/ul&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/ForSomeValueOfMagic/~4/qTlvv2dMF84&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Steve</name>
			<email>noreply@blogger.com</email>
			<uri>http://holdenweb.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">For Some Value of &quot;Magic&quot;</title>
			<subtitle type="html">Python, software, open source, plus odd rants about almost anything</subtitle>
			<link rel="self" href="http://holdenweb.blogspot.com/atom.xml"/>
			<id>tag:blogger.com,1999:blog-496482</id>
			<updated>2010-02-06T14:23:16+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en-US">
		<title type="html">Absent DB API Test Files Fixed</title>
		<link href="http://feedproxy.google.com/~r/ForSomeValueOfMagic/~3/9ei-W9xrSoU/absent-db-api-test-files-fixed.html"/>
		<id>tag:blogger.com,1999:blog-496482.post-3503684675969559051</id>
		<updated>2010-01-07T01:41:59+00:00</updated>
		<content type="html">I saw a somewhat annoying comment from a web site reader recently:&lt;br /&gt;
&lt;pre&gt;The following message was received via the web site.

From:       
Email:      
Subject:    /PyConTX2007/dbapi.tgz  Not Available
Telephone:&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;
I am grateful to the anonymous commenter for letting me know that I'd failed to redirect certain essential links in the recent web site migration.&lt;br /&gt;
&lt;br /&gt;
It would have been even better if I could have replied to the comment to let my reader know that the problem is fixed (which it now appears to be). Alas he or she left absolutely no contact information whatsoever.So all I can do is record the fix and hope that this file wasn't being urgently sought (which I doubt it was).&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/496482-3503684675969559051?l=holdenweb.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?a=9ei-W9xrSoU:zyr5JyGRqkA:yIl2AUoC8zA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?d=yIl2AUoC8zA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?a=9ei-W9xrSoU:zyr5JyGRqkA:Jy2wSXVWK38&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?i=9ei-W9xrSoU:zyr5JyGRqkA:Jy2wSXVWK38&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/ForSomeValueOfMagic/~4/9ei-W9xrSoU&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Steve</name>
			<email>noreply@blogger.com</email>
			<uri>http://holdenweb.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">For Some Value of &quot;Magic&quot;</title>
			<subtitle type="html">Python, software, open source, plus odd rants about almost anything</subtitle>
			<link rel="self" href="http://holdenweb.blogspot.com/atom.xml"/>
			<id>tag:blogger.com,1999:blog-496482</id>
			<updated>2010-02-06T14:23:16+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Current State of Unladen Swallow (Towards a Faster Python)</title>
		<link href="http://feedproxy.google.com/~r/voidspace/~3/-cyi7P7JuOc/arch_d7_2010_01_02.shtml"/>
		<id>http://feedproxy.google.com/~r/voidspace/~3/-cyi7P7JuOc/arch_d7_2010_01_02.shtml</id>
		<updated>2010-01-07T01:35:39+00:00</updated>
		<content type="html">I'm helping to organise the Python Language Summit that precedes the PyCon Conference this year. One of the first topics we'll be discussing is &amp;quot;Python 3 adoption and tools and the Python language moratorium&amp;quot; which will include representatives of the major Python implementations telling us the current state of their implementation and their plans or progress for supporting Python 3. ... [561 words]&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=-cyi7P7JuOc:gDgevwJLb6A:F7zBnMyn0Lo&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=-cyi7P7JuOc:gDgevwJLb6A:F7zBnMyn0Lo&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=-cyi7P7JuOc:gDgevwJLb6A:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=-cyi7P7JuOc:gDgevwJLb6A:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=-cyi7P7JuOc:gDgevwJLb6A:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=-cyi7P7JuOc:gDgevwJLb6A:gIN9vFwOqvQ&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=-cyi7P7JuOc:gDgevwJLb6A:dnMXMwOfBR0&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/voidspace?d=dnMXMwOfBR0&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/voidspace/~4/-cyi7P7JuOc&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Fuzzyman</name>
			<uri>http://www.voidspace.org.uk/python/weblog/index.shtml</uri>
		</author>
		<source>
			<title type="html">The Voidspace Techie Blog</title>
			<subtitle type="html">Python Programming, news on the Voidspace Python Projects and all things techie.</subtitle>
			<link rel="self" href="http://feeds.feedburner.com/voidspace"/>
			<id>http://feeds.feedburner.com/voidspace</id>
			<updated>2010-02-08T02:22:07+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en-US">
		<title type="html">Two Days Left to be a PyCon Early Bird</title>
		<link href="http://feedproxy.google.com/~r/ForSomeValueOfMagic/~3/2BYY436vpIg/two-days-left-to-be-pycon-early-bird.html"/>
		<id>tag:blogger.com,1999:blog-496482.post-4706266501495566342</id>
		<updated>2010-01-05T12:39:25+00:00</updated>
		<content type="html">Just a quick reminder that &lt;a href=&quot;https://us.pycon.org/2010/register/&quot;&gt;PyCon early bird registrations&lt;/a&gt; end on January 6, so you don't have long to take advantage of these rates. Quick! Before you forget!&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/496482-4706266501495566342?l=holdenweb.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?a=2BYY436vpIg:aX8f-HAVs7U:yIl2AUoC8zA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?d=yIl2AUoC8zA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?a=2BYY436vpIg:aX8f-HAVs7U:Jy2wSXVWK38&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/ForSomeValueOfMagic?i=2BYY436vpIg:aX8f-HAVs7U:Jy2wSXVWK38&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/ForSomeValueOfMagic/~4/2BYY436vpIg&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Steve</name>
			<email>noreply@blogger.com</email>
			<uri>http://holdenweb.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">For Some Value of &quot;Magic&quot;</title>
			<subtitle type="html">Python, software, open source, plus odd rants about almost anything</subtitle>
			<link rel="self" href="http://holdenweb.blogspot.com/atom.xml"/>
			<id>tag:blogger.com,1999:blog-496482</id>
			<updated>2010-02-06T14:23:16+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en-US">
		<title type="html">Links for 2010-01-04 [del.icio.us]</title>
		<link href="http://feedproxy.google.com/~r/ForSomeValueOfMagic/~3/SXx_Hgk3yiI/steve.holden"/>
		<id>http://del.icio.us/steve.holden#2010-01-04</id>
		<updated>2010-01-05T08:00:00+00:00</updated>
		<content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.pdnphotooftheday.com/2009/06/1551&quot;&gt;20 Forgotten Photos from the Apollo 11 Mission&lt;/a&gt;&lt;br /&gt;
Memories of a bolder age&lt;/li&gt;
&lt;/ul&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/ForSomeValueOfMagic/~4/SXx_Hgk3yiI&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Steve</name>
			<email>noreply@blogger.com</email>
			<uri>http://holdenweb.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">For Some Value of &quot;Magic&quot;</title>
			<subtitle type="html">Python, software, open source, plus odd rants about almost anything</subtitle>
			<link rel="self" href="http://holdenweb.blogspot.com/atom.xml"/>
			<id>tag:blogger.com,1999:blog-496482</id>
			<updated>2010-02-06T14:23:16+00:00</updated>
		</source>
	</entry>

</feed>
