<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>Jason R Briggs &#187; python</title>
	<atom:link href="http://www.briggs.net.nz/log/category/python/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.briggs.net.nz/log</link>
	<description>by Jason R Briggs</description>
	<pubDate>Tue, 18 Nov 2008 23:48:32 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.3</generator>
	<language>en</language>
			<item>
		<title>Minor updates to stomp.py</title>
		<link>http://www.briggs.net.nz/log/2008/09/11/minor-updates-to-stomppy/</link>
		<comments>http://www.briggs.net.nz/log/2008/09/11/minor-updates-to-stomppy/#comments</comments>
		<pubDate>Wed, 10 Sep 2008 23:16:01 +0000</pubDate>
		<dc:creator>jrbriggs</dc:creator>
		
		<category><![CDATA[development]]></category>

		<category><![CDATA[python]]></category>

		<category><![CDATA[technical]]></category>

		<guid isPermaLink="false">http://www.briggs.net.nz/log/?p=385</guid>
		<description><![CDATA[I&#8217;ve just committed some minor updates to my Stomp client (stomp.py):
1.  removed the &#8216;lower()&#8217; on header keywords to support case-sensitive headers (patch submitted by Eugene S).
2.  added the facility to wait until the socket is connected before issuing a &#8220;CONNECT&#8221;
3.  removed the space between header and value (i.e. header: value becomes header:value) [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve just committed some minor updates to my Stomp client (<a href="http://www.briggs.net.nz/log/projects/stomppy/">stomp.py</a>):</p>
<p>1.  removed the &#8216;lower()&#8217; on header keywords to support case-sensitive headers (patch submitted by Eugene S).</p>
<p>2.  added the facility to wait until the socket is connected before issuing a &#8220;CONNECT&#8221;</p>
<p>3.  removed the space between header and value (i.e. header: value becomes header:value) which fixes an incompatibility with RabbitMQ</p>
<p>4.  added the missing connect headers (user/pass) to the &#8220;CONNECT&#8221; command (again fixes an incompatibility with Rabbit).</p>
<p>As usual changes are committed and you can get the latest version from my Mercurial repo <a href="http://www.briggs.net.nz/hg/stomp.py/raw-file/tip/stomp.py">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.briggs.net.nz/log/2008/09/11/minor-updates-to-stomppy/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Whoops&#8230;</title>
		<link>http://www.briggs.net.nz/log/2008/06/13/whoops/</link>
		<comments>http://www.briggs.net.nz/log/2008/06/13/whoops/#comments</comments>
		<pubDate>Thu, 12 Jun 2008 17:11:02 +0000</pubDate>
		<dc:creator>jrbriggs</dc:creator>
		
		<category><![CDATA[development]]></category>

		<category><![CDATA[python]]></category>

		<category><![CDATA[swfk]]></category>

		<category><![CDATA[technical]]></category>

		<guid isPermaLink="false">http://www.briggs.net.nz/log/?p=328</guid>
		<description><![CDATA[A recent file rearrangement on my server resulted in all the links for &#8220;Snake Wrangling for Kids&#8221; breaking.
The problem is fixed now, and the zip files should be accessible again.
]]></description>
			<content:encoded><![CDATA[<p>A recent file rearrangement on my server resulted in all the links for &#8220;<a href="http://www.briggs.net.nz/log/writing/snake-wrangling-for-kids/">Snake Wrangling for Kids</a>&#8221; breaking.</p>
<p>The problem is fixed now, and the zip files should be accessible again.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.briggs.net.nz/log/2008/06/13/whoops/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Snake Wrangling for OLPC?</title>
		<link>http://www.briggs.net.nz/log/2008/04/29/snake-wrangling-for-olpc/</link>
		<comments>http://www.briggs.net.nz/log/2008/04/29/snake-wrangling-for-olpc/#comments</comments>
		<pubDate>Mon, 28 Apr 2008 21:53:51 +0000</pubDate>
		<dc:creator>jrbriggs</dc:creator>
		
		<category><![CDATA[python]]></category>

		<category><![CDATA[swfk]]></category>

		<category><![CDATA[technical]]></category>

		<category><![CDATA[writing]]></category>

		<guid isPermaLink="false">http://www.briggs.net.nz/log/?p=304</guid>
		<description><![CDATA[In a moment of either inspiration or madness (I&#8217;m pinning my hopes on the fact that there&#8217;s a thin line between madness and genius), I decided to start work on a version of SWFK for the OLPC.
There are a couple of reasons why this is more of a challenge than the other versions of the [...]]]></description>
			<content:encoded><![CDATA[<p>In a moment of either inspiration or madness (I&#8217;m pinning my hopes on the fact that there&#8217;s a thin line between madness and genius), I decided to start work on a version of <a href="http://www.briggs.net.nz/log/writing/snake-wrangling-for-kids">SWFK</a> for the <a href="http://laptop.org/">OLPC</a>.</p>
<p>There are a couple of reasons why this is more of a challenge than the other versions of the book:</p>
<ol>
<li>I don&#8217;t have an OLPC</li>
<li>The version of Python installed on the OLPC includes neither Tkinter nor, more importantly, the <a href="http://docs.python.org/lib/module-turtle.html">turtle</a> module.</li>
</ol>
<p>The first point is easy to solve.  I&#8217;ve been running OLPC on <a href="http://www.virtualbox.org/">VirtualBox</a> (occasionally) for a few months now, so at least I have a vague idea of how to interact with the <a href="http://wiki.laptop.org/go/Category:Sugar">Sugar</a> interface. </p>
<p>The second point is slightly more problematic.  As far as I&#8217;m aware, the OLPC runs <a href="http://www.gtk.org/">GTK</a>, and so the <a href="http://www.pygtk.org/">pygtk</a> module is available &#8212; but I have yet to come across a turtle implementation for gtk (ignoring, for the moment, the TurtleArt activity already installed on the OLPC, which I don&#8217;t think is particularly useful for my purposes).</p>
<p>It seems like quite a fun project &#8212; implementing the turtle module using pygtk &#8212; until you consider the arcane pygtk API, the (IMHO) lack of reasonable documentation (I&#8217;m not particularly impressed by the pygtk reference manual&#8230; particularly the lack of index), and simple examples to expand from.</p>
<p>Technical issues aside, a week later, I&#8217;m considering the semantics of an OLPC edition of the book.   SWFK for Windows, Mac and Linux, all target the same fundamental audience.  An OLPC edition has a completely different potential audience.  The Western+English market is, no doubt, vanishingly small &#8212; so while, to date, I&#8217;ve had over 6500 downloads, I&#8217;m guessing an OLPC edition might garner less than 1-3% more.  The real market would be translated versions (assuming the interest in translating actually  results in translations) &#8212; but that begs another question: will kids in non-Western countries actually understand some of the references?  Is talk of DVD players, in-car computers, Nintendos, etc (i.e. some of the references in chapter one, for example), at all meaningful in the developing world?  I&#8217;m doubtful.</p>
<p>Which leads me to posit the question, is it worth the not-so-insignificant effort?  </p>
<p>What do you think?</p>
<p>Genius or madness?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.briggs.net.nz/log/2008/04/29/snake-wrangling-for-olpc/feed/</wfw:commentRss>
		</item>
		<item>
		<title>New Editions</title>
		<link>http://www.briggs.net.nz/log/2008/03/06/new-editions/</link>
		<comments>http://www.briggs.net.nz/log/2008/03/06/new-editions/#comments</comments>
		<pubDate>Wed, 05 Mar 2008 22:09:46 +0000</pubDate>
		<dc:creator>jrbriggs</dc:creator>
		
		<category><![CDATA[python]]></category>

		<category><![CDATA[swfk]]></category>

		<category><![CDATA[technical]]></category>

		<category><![CDATA[writing]]></category>

		<guid isPermaLink="false">http://www.briggs.net.nz/log/2008/03/06/new-editions/</guid>
		<description><![CDATA[Long awaited by&#8230; well a couple of people at least&#8230; I&#8217;ve recently been working on splitting out Snake Wrangling for Kids into 3 separate editions: one for Windows, one for Mac and one for Linux.
This proved rather more challenging than expected (rather characteristic of LaTeX as a whole actually), and I haven&#8217;t fully proofed the [...]]]></description>
			<content:encoded><![CDATA[<p>Long awaited by&#8230; well a couple of people at least&#8230; I&#8217;ve recently been working on splitting out <a href="http://www.briggs.net.nz/log/writing/snake-wrangling-for-kids">Snake Wrangling for Kids</a> into 3 separate editions: one for Windows, one for Mac and one for Linux.</p>
<p>This proved rather more challenging than expected (rather characteristic of LaTeX as a whole actually), and I haven&#8217;t fully proofed the final result yet.  Those interested can check out the new editions here:</p>
<p><a href="http://www.briggs.net.nz/log/wp-content/uploads/2008/03/swfk-linux.zip">SWFK - Linux Edition</a><br />
<a href="http://www.briggs.net.nz/log/wp-content/uploads/2008/03/swfk-mac.zip">SWFK - Mac Edition</a><br />
<a href="http://www.briggs.net.nz/log/wp-content/uploads/2008/03/swfk-win.zip">SWFK - Windows Edition</a></p>
<p>The Mercurial repository (<a href="http://www.briggs.net.nz/hg/swfk/">here</a>) containing the LaTeX source has also been updated with the latest changes.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.briggs.net.nz/log/2008/03/06/new-editions/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Public Repository</title>
		<link>http://www.briggs.net.nz/log/2008/02/19/public-repository/</link>
		<comments>http://www.briggs.net.nz/log/2008/02/19/public-repository/#comments</comments>
		<pubDate>Tue, 19 Feb 2008 00:01:53 +0000</pubDate>
		<dc:creator>jrbriggs</dc:creator>
		
		<category><![CDATA[python]]></category>

		<category><![CDATA[swfk]]></category>

		<category><![CDATA[technical]]></category>

		<category><![CDATA[writing]]></category>

		<guid isPermaLink="false">http://www.briggs.net.nz/log/2008/02/19/public-repository/</guid>
		<description><![CDATA[I&#8217;ve had a few requests to release the &#8220;source&#8221; to Snake Wrangling for Kids, by people interested in translating the text into another language.
SWFK is still a work in progress &#8212; although that progress has been rather slow since we moved to the UK &#8212; but I can&#8217;t see any reason why I should put [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve had a few requests to release the &#8220;source&#8221; to <a href="http://www.briggs.net.nz/log/writing/snake-wrangling-for-kids/">Snake Wrangling for Kids</a>, by people interested in translating the text into another language.</p>
<p>SWFK is still a work in progress &#8212; although that progress has been rather slow since we moved to the UK &#8212; but I can&#8217;t see any reason why I should put off releasing the LaTex source until some sort of mythical completion date, particularly not when there are willing participants out there.</p>
<p>So for those who are interested in translating SWFK to another language, the latex &#8220;source&#8221; can be found in the following Mercurial repository:</p>
<p><a href="http://www.briggs.net.nz/hg/swfk">http://www.briggs.net.nz/hg/swfk</a></p>
<p>Note that it isn&#8217;t &#8220;buildable&#8221; in its current state.  I haven&#8217;t added the image files yet because some of them are rather large (the cover alone is over 2MB) &#8212; the wonders of the EPS format.  Mercurial doesn&#8217;t seem to handle excessively large image files that well (at least not on my web host it doesn&#8217;t), so if anyone has ideas on that front, let me know.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.briggs.net.nz/log/2008/02/19/public-repository/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Counting the days - fixed bug in domyinvoice</title>
		<link>http://www.briggs.net.nz/log/2008/02/01/counting-the-days-fixed-bug-in-domyinvoice/</link>
		<comments>http://www.briggs.net.nz/log/2008/02/01/counting-the-days-fixed-bug-in-domyinvoice/#comments</comments>
		<pubDate>Thu, 31 Jan 2008 23:13:29 +0000</pubDate>
		<dc:creator>jrbriggs</dc:creator>
		
		<category><![CDATA[development]]></category>

		<category><![CDATA[do-my-invoice]]></category>

		<category><![CDATA[python]]></category>

		<category><![CDATA[technical]]></category>

		<guid isPermaLink="false">http://www.briggs.net.nz/log/2008/02/01/counting-the-days-fixed-bug-in-domyinvoice/</guid>
		<description><![CDATA[I&#8217;ve just fixed (rather hurriedly) an annoying bug in domyinvoice.com.  Invoices generated for a project with a daily rate (rather than hourly) were calculating the days incorrectly &#8212; basing the calculation on the number of tasks rather than the distinct list of days.  Easy to fix, but since I haven&#8217;t been doing any [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve just fixed (rather hurriedly) an annoying bug in <a href="http://www.domyinvoice.com">domyinvoice.com</a>.  Invoices generated for a project with a daily rate (rather than hourly) were calculating the days incorrectly &#8212; basing the calculation on the number of tasks rather than the distinct list of days.  Easy to fix, but since I haven&#8217;t been doing any Python for the last couple of months, it took a few hours longer than it should have.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.briggs.net.nz/log/2008/02/01/counting-the-days-fixed-bug-in-domyinvoice/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Climbing the Google ladder</title>
		<link>http://www.briggs.net.nz/log/2007/12/27/climbing-the-google-ladder/</link>
		<comments>http://www.briggs.net.nz/log/2007/12/27/climbing-the-google-ladder/#comments</comments>
		<pubDate>Wed, 26 Dec 2007 21:17:51 +0000</pubDate>
		<dc:creator>jrbriggs</dc:creator>
		
		<category><![CDATA[do-my-invoice]]></category>

		<category><![CDATA[python]]></category>

		<category><![CDATA[technical]]></category>

		<guid isPermaLink="false">http://www.briggs.net.nz/log/2007/12/27/climbing-the-google-ladder/</guid>
		<description><![CDATA[Do My Invoice, my web-based, RESTful invoicing solution, has been live for a couple of months now.   Admittedly there hasn&#8217;t yet been a large number of registrations, probably because I haven&#8217;t really promoted it other than through this low-traffic blog, and because I hope that word-of-mouth may eventually kick in and result in [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.domyinvoice.com">Do My Invoice</a>, my web-based, <a href="http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm">REST</a>ful invoicing solution, has been live for a couple of months now.   Admittedly there hasn&#8217;t yet been a large number of registrations, probably because I haven&#8217;t really promoted it other than through this low-traffic blog, and because I hope that word-of-mouth may eventually kick in and result in a few more paying customers.</p>
<p>Interestingly though, I&#8217;ve somehow made the <a href="http://www.google.com/search?q=web+based+invoicing&#038;hl=en&#038;safe=off&#038;start=10&#038;sa=N">second page</a> of Google results (currently sitting at position 16) for the keywords &#8220;web based invoicing&#8221;.<br />
However, for the term &#8220;web based invoice&#8221;, the site is either so far down the list it can&#8217;t be found, or it doesn&#8217;t appear at all.</p>
<p>Also interesting:  3 weeks ago, DMI was at position 83 for the search term &#8220;invoices&#8221;, yet I can&#8217;t find it anywhere in the first 100 pages now &#8212; obviously we hit a broken rung in the Google ladder and fell down a few hundred feet.</p>
<p>Completely off-topic, but one thing this has highlighted as a gap in Google&#8217;s toolset is &#8220;Search Within&#8221;.  It would be really useful to enter a few search terms, then find exactly where another term sat in those results.  In other words being able to enter something like: &#8220;<code>domyinvoice  within: web based invoicing</code>&#8220;, which gave you the results found within a set of results, along with the index positions.  Seems like a killer Google feature for web developers, marketers and the like.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.briggs.net.nz/log/2007/12/27/climbing-the-google-ladder/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Version 0.7</title>
		<link>http://www.briggs.net.nz/log/2007/11/28/version-07/</link>
		<comments>http://www.briggs.net.nz/log/2007/11/28/version-07/#comments</comments>
		<pubDate>Wed, 28 Nov 2007 11:03:17 +0000</pubDate>
		<dc:creator>jrbriggs</dc:creator>
		
		<category><![CDATA[python]]></category>

		<category><![CDATA[swfk]]></category>

		<category><![CDATA[technical]]></category>

		<category><![CDATA[writing]]></category>

		<guid isPermaLink="false">http://www.briggs.net.nz/log/2007/11/28/version-07/</guid>
		<description><![CDATA[I&#8217;ve just uploaded the latest version of SWFK.  This fixes a few issues with continuity (such as referring to functions before they were actually explained), adds a basic explanation about the use of brackets and order of operations (which I think was a serious omission given the context), and other minor grammatical and code [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve just uploaded the latest version of <a href="http://www.briggs.net.nz/log/writing/snake-wrangling-for-kids">SWFK</a>.  This fixes a few issues with continuity (such as referring to functions before they were actually explained), adds a basic explanation about the use of brackets and order of operations (which I think was a serious omission given the context), and other <em>minor</em> grammatical and code fixes.</p>
<p>The only major change is to add a few exercises to the end of some of the chapters, plus a new appendix for the answers.  This is a  work in progress.  Exercises are currently missing from Chapter 9, and possibly aren&#8217;t as detailed (nor fun) as they should be.</p>
<p>But they&#8217;re a start&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.briggs.net.nz/log/2007/11/28/version-07/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Announcing Version 0.6.1</title>
		<link>http://www.briggs.net.nz/log/2007/11/24/announcing-version-061/</link>
		<comments>http://www.briggs.net.nz/log/2007/11/24/announcing-version-061/#comments</comments>
		<pubDate>Sat, 24 Nov 2007 08:31:35 +0000</pubDate>
		<dc:creator>jrbriggs</dc:creator>
		
		<category><![CDATA[development]]></category>

		<category><![CDATA[python]]></category>

		<category><![CDATA[swfk]]></category>

		<category><![CDATA[technical]]></category>

		<category><![CDATA[writing]]></category>

		<guid isPermaLink="false">http://www.briggs.net.nz/log/2007/11/24/announcing-version-061/</guid>
		<description><![CDATA[The latest version of &#8220;Snake Wrangling for Kids&#8221; has been uploaded, and is now available on the main page.  This is the LaTeX conversion I mentioned in a previous post &#8212; but I&#8217;ve now applied a Python code checker to 99% of the example source code.  Hence I&#8217;ve fixed up a few omissions, [...]]]></description>
			<content:encoded><![CDATA[<p>The latest version of &#8220;Snake Wrangling for Kids&#8221; has been uploaded, and is now available on the <a href="http://www.briggs.net.nz/log/writing/snake-wrangling-for-kids">main page</a>.  This is the LaTeX conversion I mentioned in a previous post &#8212; but I&#8217;ve now applied a Python code checker to 99% of the example source code.  Hence I&#8217;ve fixed up a few omissions, bugs, and so on.</p>
<p>Automating the testing of example code proved more challenging than expected.  In the end, I failed miserably to get <a href="http://docs.python.org/lib/module-doctest.html">doctest</a> working they way I wanted, and had to roll my own testing code which works for a majority of the examples.  It&#8217;s not perfect, but picked up a few problems, so I&#8217;m reasonably happy with the end result&#8230; even if it is a complete hackjob.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.briggs.net.nz/log/2007/11/24/announcing-version-061/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Learning Curve</title>
		<link>http://www.briggs.net.nz/log/2007/11/18/learning-curve/</link>
		<comments>http://www.briggs.net.nz/log/2007/11/18/learning-curve/#comments</comments>
		<pubDate>Sun, 18 Nov 2007 02:10:38 +0000</pubDate>
		<dc:creator>jrbriggs</dc:creator>
		
		<category><![CDATA[development]]></category>

		<category><![CDATA[python]]></category>

		<category><![CDATA[swfk]]></category>

		<category><![CDATA[technical]]></category>

		<guid isPermaLink="false">http://www.briggs.net.nz/log/2007/11/18/learning-curve/</guid>
		<description><![CDATA[I started learning C programming in, or around, 1991.  Up until that point, I had been exposed to Basic, Pascal, Modula-2, and (I think) Prolog.  C was&#8230; somewhat of an eye-opener.  Anyone who has had to come to grips with pointers and memory management in C, will know what I mean (and [...]]]></description>
			<content:encoded><![CDATA[<p>I started learning C programming in, or around, 1991.  Up until that point, I had been exposed to Basic, Pascal, Modula-2, and (I think) Prolog.  C was&#8230; somewhat of an eye-opener.  Anyone who has had to come to grips with pointers and memory management in C, will know what I mean (and thank goodness for the Borland C IDE help system - unparalleled as a learning tool).</p>
<p>At University, we had papers that required learning a functional language and assembler, but neither of these were like the screaming brick wall that I hit in my second year when I decided to learn C.</p>
<p>Actually, since then, I can&#8217;t think of a single technology where I&#8217;ve experienced a similarly steep learning curve.</p>
<p>Until <a href="http://www.latex-project.org/">LaTeX</a>.</p>
<p>I knew what LaTeX was, of course.  But neither had the need, nor in fact, the interest, in learning it before.  But after deciding I needed to move <a href="http://www.briggs.net.nz/log/writing/snake-wrangling-for-kids">SWFK</a> out of the atrocious (and, from an automation perspective, useless) word processing format it&#8217;s in at the moment; and after a few aborted attempts to get some reasonable output from various docbook toolsets, I&#8217;ve been provided with just the incentive.</p>
<p>But the learning curve is excrutiating.</p>
<p>Get one thing working, and the next thing stops.  Change this and effect that.  It was all me, of course.  There&#8217;s nothing wrong with LaTeX after you get used to how it works.  But, oh that learning curve.  I haven&#8217;t felt such a need to scream and yell at my computer in a decade.</p>
<p>This is not to say things are perfect now.  I still can&#8217;t get the front cover to look centered (advice from a LaTeX guru would be greatly appreciated) and, at times, LaTeX seems to think it knows, better than I do, where to put figures.  Working out how to put visible spaces in a \verbatim block is also proving a little challenging.  But the overall result does look, in my opinion, <strong>much</strong> nicer.</p>
<p>Anyone interested in proofreading the new version, please let me know.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.briggs.net.nz/log/2007/11/18/learning-curve/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Vanilla Text Editor</title>
		<link>http://www.briggs.net.nz/log/2007/10/17/vanilla-text-editor/</link>
		<comments>http://www.briggs.net.nz/log/2007/10/17/vanilla-text-editor/#comments</comments>
		<pubDate>Wed, 17 Oct 2007 10:22:49 +0000</pubDate>
		<dc:creator>jrbriggs</dc:creator>
		
		<category><![CDATA[development]]></category>

		<category><![CDATA[python]]></category>

		<category><![CDATA[technical]]></category>

		<guid isPermaLink="false">http://www.briggs.net.nz/log/2007/10/17/vanilla-text-editor/</guid>
		<description><![CDATA[Some time ago I decided I needed a text editor with minimal distractions.  I can&#8217;t stand the sheer volume of buttons on the average word processor.  Even AbiWord, which is skeletal in comparison with OpenOffice or Word, is still too busy at times  (I miss Q&#038;A Write actually &#8212; the Word Processor [...]]]></description>
			<content:encoded><![CDATA[<p>Some time ago I decided I needed a text editor with minimal distractions.  I can&#8217;t stand the sheer volume of buttons on the average word processor.  Even AbiWord, which is skeletal in comparison with OpenOffice or Word, is still too busy at times  (I miss <em>Q&#038;A Write</em> actually &#8212; the Word Processor I used to use back in the days of MS-DOS).</p>
<p>A google search at the time turned up <a href="http://hogbaysoftware.com/products/writeroom">WriteRoom</a>, which is Mac-only.  But not much else.</p>
<p>So, of course, I developed my own alternative.</p>
<p>It didn&#8217;t quite fulfill the vision, so I dumped it in the &#8220;deprecated projects&#8221; list after it languished, unused.  But I&#8217;ve been coming back to the idea lately, and finally did a bit more research on the various buttons you can push in <a href="http://www.pygtk.org/">PyGTK</a>.</p>
<p>So, the <a href="http://www.briggs.net.nz/log/projects/vanilla">Vanilla</a> text editor is now -slightly- more supported than it was before (i.e. I&#8217;m probably going to use it myself), and is a bit closer to the vision.  It&#8217;s completely configurable (background and foreground colours, font, key map, etc are all set from an ini file), and now runs full screen (as it should&#8217;ve from the beginning).</p>
<p>Only the source is available at the moment (Python2.5 and PyGTK2.0 required), but I&#8217;ll eventually make a commercially supported package available if there&#8217;s any interest.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.briggs.net.nz/log/2007/10/17/vanilla-text-editor/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Mercurial repository for stomp.py</title>
		<link>http://www.briggs.net.nz/log/2007/09/05/mercurial-repository-for-stomppy/</link>
		<comments>http://www.briggs.net.nz/log/2007/09/05/mercurial-repository-for-stomppy/#comments</comments>
		<pubDate>Wed, 05 Sep 2007 09:28:59 +0000</pubDate>
		<dc:creator>jrbriggs</dc:creator>
		
		<category><![CDATA[development]]></category>

		<category><![CDATA[python]]></category>

		<category><![CDATA[technical]]></category>

		<guid isPermaLink="false">http://www.briggs.net.nz/log/2007/09/05/mercurial-repository-for-stomppy/</guid>
		<description><![CDATA[While I have pretty much all my code in source control of some kind (originally subversion, now mainly mercurial), the only repos that&#8217;s externally accessible is YAK for WordPress (currently a subversion repos hosted at Sourceforge).  For something like my quick (read hack-job) attempt at the Stomp protocol, that&#8217;s somewhat less than optimal, since [...]]]></description>
			<content:encoded><![CDATA[<p>While I have pretty much all my code in source control of some kind (originally subversion, now mainly mercurial), the only repos that&#8217;s externally accessible is <a href="http://www.briggs.net.nz/log/projects/yak-for-wordpress">YAK for WordPress</a> (currently a subversion repos hosted at Sourceforge).  For something like my quick (read hack-job) <a href="http://www.briggs.net.nz/log/projects/stomppy/">attempt</a> at the Stomp protocol, that&#8217;s somewhat less than optimal, since I do occasionally (i.e. like today) get updates &#8212; so either I have to upload multiple versions, or just overwrite the current version.  Which isn&#8217;t much use if someone wants to track back to previous revisions.</p>
<p>So, after coming across Bill de HÓra&#8217;s &#8220;<a href="http://www.dehora.net/journal/2007/01/mercurial_part_i.html">Mercurial First Impressions</a>&#8221; and subsequent &#8220;<a href="http://www.dehora.net/journal/2007/04/mercurial_part_ii.html">Setting up Mercurial on TextDrive</a>&#8221; a few weeks ago, it seemed a good time to do something about the situation.</p>
<p>Installation went reasonably well, apart from the obligatory, and rather obscure, Apache error: &#8220;Premature end of script headers&#8221; &#8212; where it took me an embarrassingly long amount of time to <a href="http://henrik.nyh.se/2007/04/premature-end-of-script-headers-for-cgi-can-be-directory-permissions">figure out</a> that the <em>hg</em> directory needed to be chmodded to 755 as well as the <em>hgwebdir.cgi</em> file (despite the fact I&#8217;d checked the file and directory permissions a couple of times during the process&#8230; sigh).</p>
<p>The URL for the stomp.py Mercurial <a href="http://www.briggs.net.nz/hg/stomp.py/">repository</a> is now:</p>
<p>http://www.briggs.net.nz/hg/stomp.py/</p>
<p>To checkout the latest copy you can use the following command:</p>
<pre>
<code>hg clone http://www.briggs.net.nz/hg/stomp.py stomppy</code>
</pre>
<p>After which <code>hg update</code> will keep you in sync with the (all too infrequent) changes.</p>
<p>Now have to decide whether I want to move YAK off sourceforge and into its own Mercurial repository.  The control-freak, tech-geek part of me, gleefully says yes.  The lazy, I&#8217;ve-got-too-much-other-stuff-to-do part says &#8220;pass&#8221;.<br />
Time will tell&#8230;  hopefully <b>before</b> I start arguing with myself.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.briggs.net.nz/log/2007/09/05/mercurial-repository-for-stomppy/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Mercurial nature</title>
		<link>http://www.briggs.net.nz/log/2007/08/19/mercurial-nature/</link>
		<comments>http://www.briggs.net.nz/log/2007/08/19/mercurial-nature/#comments</comments>
		<pubDate>Sat, 18 Aug 2007 21:56:03 +0000</pubDate>
		<dc:creator>jrbriggs</dc:creator>
		
		<category><![CDATA[development]]></category>

		<category><![CDATA[python]]></category>

		<category><![CDATA[technical]]></category>

		<guid isPermaLink="false">http://www.briggs.net.nz/log/2007/08/19/mercurial-nature/</guid>
		<description><![CDATA[I&#8217;ve been playing with Mercurial lately, after having previously tried Git out for a few weeks.
I must say, I prefer Mercurial, though I would be hard-pressed to quantify that into some kind of this-feature-is-better-than-that-feature list  (apart from the most obvious advantage that it&#8217;s cross platform, of course).  For some reason, it just feels [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been playing with <a href="http://www.selenic.com/mercurial/">Mercurial</a> lately, after having <a href="http://www.briggs.net.nz/log/2007/07/22/git-for-cvs-users/">previously</a> tried <a href="http://git.or.cz/">Git</a> out for a few weeks.</p>
<p>I must say, I prefer Mercurial, though I would be hard-pressed to quantify that into some kind of this-feature-is-better-than-that-feature list  (apart from the most obvious advantage that it&#8217;s cross platform, of course).  For some reason, it just feels right.  Which is weird, I know.</p>
<p>This is not to say Mercurial is perfect.  Because there are a few niggles.  The one that jumps immediately to mind is the fact that no matter where you are in a repository tree, <code>hg status</code> presents the list of changed files from the repository root &#8212; not the current context directory.  So if you then copy and paste a file name (with path) from that status list, to commit a single change, you get an error.  Because <code>subdir/filename</code> does not exist when you&#8217;re already in <code>subdir</code>.   Small niggle, but there it is.</p>
<p>Second problem I&#8217;ve had recently:  <code>hg rm file</code>, where file is the last in the directory.  Mercurial appears to remove the directory.  If you then try to commit, it throws its hands up in horror.  Again, only a minor annoyance.</p>
<p>Apart from that, I like Mercurial enough to migrate all my other personal projects off subversion.  I&#8217;d also be really interested to see how it handled a really large enterprise project, since subversion (at work) is groaning under the strain of handling that project.  Chances of that happening are minimal, and would require replicating almost 2 years worth of commits, to really test it, but it would be interesting to see the results&#8230;..</p>
]]></content:encoded>
			<wfw:commentRss>http://www.briggs.net.nz/log/2007/08/19/mercurial-nature/feed/</wfw:commentRss>
		</item>
		<item>
		<title>The Worst Thing about Python</title>
		<link>http://www.briggs.net.nz/log/2007/07/28/the-worst-thing-about-python/</link>
		<comments>http://www.briggs.net.nz/log/2007/07/28/the-worst-thing-about-python/#comments</comments>
		<pubDate>Sat, 28 Jul 2007 05:42:26 +0000</pubDate>
		<dc:creator>jrbriggs</dc:creator>
		
		<category><![CDATA[commentary]]></category>

		<category><![CDATA[python]]></category>

		<category><![CDATA[technical]]></category>

		<guid isPermaLink="false">http://www.briggs.net.nz/log/2007/07/28/the-worst-thing-about-python/</guid>
		<description><![CDATA[The worst thing about Python is that when you spend a lot of time working with other languages (in my case, Java), and you come back to work on a Python app, occasionally you forget that there&#8217;s usually a better way to do something.  Case in point:  creating a rather simplistic framework for [...]]]></description>
			<content:encoded><![CDATA[<p>The worst thing about Python is that when you spend a lot of time working with other languages (in my case, Java), and you come back to work on a Python app, occasionally you forget that there&#8217;s usually a better way to do something.  Case in point:  creating a rather simplistic framework for initialising an application (db connections, messaging, etc), only to realise a few days later that none of your dynamic loading of initialisation scripts is necessary in the slightest, when a module&#8217;s __init__ provides as much of that capability as might be needed.</p>
<p>Sigh.</p>
<p>On a completely unrelated note, a special thanks to the various people who&#8217;ve recently linked to this site (specifically to the <a href="http://www.briggs.net.nz/log/projects/yak-for-wordpress">YAK</a> page).  I was never that bothered by an abysmally low technorati ranking, but now find myself absurdly pleased when I&#8217;ve climbed up by about half-a-million.  </p>
<p>Well&#8230; I&#8217;m still in the 500,000s anyway, it&#8217;s an improvement.  A-list?  Can you say Z-list?  <img src='http://www.briggs.net.nz/log/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.briggs.net.nz/log/2007/07/28/the-worst-thing-about-python/feed/</wfw:commentRss>
		</item>
		<item>
		<title>logproxy project</title>
		<link>http://www.briggs.net.nz/log/2007/06/11/logproxy-project/</link>
		<comments>http://www.briggs.net.nz/log/2007/06/11/logproxy-project/#comments</comments>
		<pubDate>Mon, 11 Jun 2007 08:12:31 +0000</pubDate>
		<dc:creator>jrbriggs</dc:creator>
		
		<category><![CDATA[development]]></category>

		<category><![CDATA[internet]]></category>

		<category><![CDATA[python]]></category>

		<category><![CDATA[technical]]></category>

		<guid isPermaLink="false">http://www.briggs.net.nz/log/2007/06/11/logproxy-project/</guid>
		<description><![CDATA[One of my earliest posts (back when I was using blogger.com), was regarding a reverse logging proxy &#8212; a simple Python script to transparently log requests between a client and a server.  Very useful for debugging web service calls, to see what exactly what is being sent back and forth.
I&#8217;ve just added logproxy.py to [...]]]></description>
			<content:encoded><![CDATA[<p>One of my earliest <a href="http://www.briggs.net.nz/log/2005/08/02/reverse-logging-proxy/">posts</a> (back when I was using blogger.com), was regarding a reverse logging proxy &#8212; a simple Python script to transparently log requests between a client and a server.  Very useful for debugging web service calls, to see what exactly what is being sent back and forth.</p>
<p>I&#8217;ve just added <a href="http://www.briggs.net.nz/log/projects/logproxypy/">logproxy.py</a> to my <a href="http://www.briggs.net.nz/log/projects/">projects</a> page, after updating it to handle virtual hosts (in other words, when using Apache to serve more than one domain).</p>
<p>This is not quite as impressive a change as it might sound.  It basically means correctly setting the Host HTTP header, rather than defaulting to localhost&#8230;</p>
<p>Anyway, a few people appear to have found it useful, judging from my access logs, so this update might help someone else (it certainly helped me figure out why my wsgi app was failing to properly handle multipart form content).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.briggs.net.nz/log/2007/06/11/logproxy-project/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Templating Nirvana</title>
		<link>http://www.briggs.net.nz/log/2007/05/31/templating-nirvana/</link>
		<comments>http://www.briggs.net.nz/log/2007/05/31/templating-nirvana/#comments</comments>
		<pubDate>Thu, 31 May 2007 11:03:17 +0000</pubDate>
		<dc:creator>jrbriggs</dc:creator>
		
		<category><![CDATA[development]]></category>

		<category><![CDATA[python]]></category>

		<category><![CDATA[technical]]></category>

		<guid isPermaLink="false">http://www.briggs.net.nz/log/2007/05/31/templating-nirvana/</guid>
		<description><![CDATA[I&#8217;ve documented my quest for templating nirvana before (here, here, here and here&#8230; oh and also here), and thought I&#8217;d come to a reasonably satisfactory conclusion in some of my latter experiments.
My premise was that none of the templating engines currently available (you name the language/platform), come close to what I feel should be the [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve documented my quest for templating nirvana before (<a href="http://www.briggs.net.nz/log/2006/05/29/templating-revisited/">here</a>, <a href="http://www.briggs.net.nz/log/2006/05/30/templating-continued/">here</a>, <a href="http://www.briggs.net.nz/log/2006/06/10/templating-conclusions/">here</a> and <a href="http://www.briggs.net.nz/log/2006/05/16/fugly-templating/">here</a>&#8230; oh and also <a href="http://www.briggs.net.nz/log/2006/09/14/he-said-they-said/">here</a>), and thought I&#8217;d come to a reasonably satisfactory conclusion in some of my latter experiments.</p>
<p>My premise was that none of the templating engines currently available (you name the language/platform), come close to what I feel should be the fundamental goal of xml/xhtml templating &#8212; complete separation of markup from the code that populates it with dynamic data.  There are a few templating systems that come close (Tapestry&#8217;s templating in the Java world and HTMLTemplate in Python, for example), but none that pushed all the buttons I thought needed to be pushed.<br />
So, to this lofty ideal, I offered the idea of using a simple ID on elements and then putting all complexity in code to handle repeating of child elements, setting of attributes, setting node values, hiding elements, etc.</p>
<p>All in all it seemed to work for the (admittedly limited) cases I tried, but that&#8217;s the problem with grandiose schemes that are mainly based in the theoretical.  Come time to apply the ideas in a practical sense, and you suddenly discover you haven&#8217;t thought it through well enough.  Or to be more precise, <b>I</b> suddenly discovered <b>I</b> hadn&#8217;t thought it through well enough.</p>
<p>Case in point:  I believe that in some situations it should be easy to use a different template without having to make modifications to the generating code.  Which is where my simple IDs fall over in a quivering heap.  Here&#8217;s an example (contrived) which immediately breaks it:</p>
<pre>
<code>Example 1:
&lt;users&gt;
	&lt;user name="Joe Bloggs"&gt;
		&lt;address&gt;10 Test St&lt;/address&gt;
		&lt;city&gt;somewheresville&lt;/city&gt;
	&lt;/user&gt;
&lt;/user&gt;

Example 2:
&lt;html&gt;
&lt;body&gt;
	&lt;ul&gt;
		&lt;li&gt;Joe Bloggs
			&lt;ul&gt;
				&lt;li&gt;10 Test St&lt;/li&gt;
				&lt;li&gt;somewheresville&lt;/li&gt;
			&lt;/ul&gt;
		&lt;/li&gt;
	&lt;/ul&gt;
&lt;/body&gt;
&lt;/html&gt;</code>
</pre>
<p>The xml in example 1 uses an attribute for the user&#8217;s name.  The html in example 2 uses a textual element for the name, followed by another unorder list for the address elements.  I could make the examples more complicated to show even more disparities, but you hopefully get the idea:  if we&#8217;re just using an ID to distinguish elements, how do you say &#8220;set the attribute name to this value&#8221; for example 1 and &#8220;set the element value to this&#8221; for example 2, without having massively complicated code that either allows for both cases (and uses some kind of logic to figure out which should be applied), or has different code for each?  </p>
<p>It&#8217;s naff.  To put it politely.  Not to mention that littering a template with unnecessary IDs is just as ugly as littering it with code.</p>
<p>So, in no way have I managed to reach templating nirvana.  I have, however, demonstrated that if you&#8217;re not using this stuff in anger, there&#8217;s no way you&#8217;re going to come up with a good solution.  Certainly some of the templating systems I&#8217;ve used (JSF springing immediately to mind) tend to suggest that whomever came up with the concepts didn&#8217;t follow through and use them either.  So at least I&#8217;m in good company.</p>
<p><b><em>Enter the latest vain attempt.</em></b></p>
<p>My current thinking is that the template needs 3 ID attributes, one for repeating an element (rid), one for setting attributes (aid), and one for setting node values (eid).  This gives a reasonable amount of flexibility and allows for the same code to populate different templates.</p>
<p><a href="http://www.briggs.net.nz/log/wp-content/uploads/2007/05/templatepy.txt" title="template.py">This code</a> is very much a work in progress&#8230; and very much a completely inelegant mess.  But it does satisfy a couple of requirements:  1) I am actually using it, and 2) the same code can be used to populate a variety of templates without requiring code changes.<br />
It uses 4suite&#8217;s xpath to set values, and the use of xpath no doubt means performance will be adversely affected, but it&#8217;s a start.</p>
<p>In terms of the above examples, you might use this engine as follows:</p>
<pre>
<code>&lt;users rid="user-list"&gt;
	&lt;user aid="user-name" name=""&gt;
		&lt;address eid="user-address"&gt;&lt;/address&gt;
		&lt;city eid="user-city"&gt;&lt;/city&gt;
	&lt;/user&gt;
&lt;/user&gt;

&lt;html&gt;
&lt;body&gt;
	&lt;ul&gt;
		&lt;li rid="user-list" eid="user-name"&gt;
			&lt;ul&gt;
				&lt;li eid="user-address"&gt;&lt;/li&gt;
				&lt;li eid="user-city"&gt;&lt;/li&gt;
			&lt;/ul&gt;
		&lt;/li&gt;
	&lt;/ul&gt;
&lt;/body&gt;
&lt;/html&gt;

tmp = Templates()['users.xml']
tmp.repeat('user-list', 2)
tmp.setelement('user-name', 'Joe Bloggs', 1)
tmp.setattribute('user-name', 'name', 'Joe Bloggs', 1)
tmp.setelement('user-address', '10 Test St', 1)
...etc</code>
</pre>
<p>In the case of the first template, the attribute name is set with the value &#8220;Joe Bloggs&#8221;, and for the second template, the element value is used.  The idea is, don&#8217;t use the relevant ID (rid, eid, aid) if you don&#8217;t need to apply that value.</p>
<p>More to come as I iron out the wrinkles&#8230;</p>
<p>Note: the template engine uses the <a href="http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/66531">Borg</a> pattern.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.briggs.net.nz/log/2007/05/31/templating-nirvana/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Digest, basic&#8230;. IE7?</title>
		<link>http://www.briggs.net.nz/log/2007/05/12/digest-basic-ie7/</link>
		<comments>http://www.briggs.net.nz/log/2007/05/12/digest-basic-ie7/#comments</comments>
		<pubDate>Sat, 12 May 2007 04:55:37 +0000</pubDate>
		<dc:creator>jrbriggs</dc:creator>
		
		<category><![CDATA[development]]></category>

		<category><![CDATA[internet]]></category>

		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://www.briggs.net.nz/log/2007/05/12/digest-basic-ie7/</guid>
		<description><![CDATA[I&#8217;ve just discovered that my implementation of a Digest Authentication middleware for WSGI, which had been working perfectly with Firefox, fails miserably when I try it with IE.
A bit of googling finds the following&#8230;
http://www.eweek.com/article2/0%2C1895%2C1500432%2C00.asp
http://www.extremetech.com/article2/0,1697,20373,00.asp
&#8230;making me think that I&#8217;m basically stuffed, despite the fact that I followed the RFC. Excellent work Microsoft! (Sarcasm alert!)
Should&#8217;ve done some [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve just discovered that my implementation of a Digest Authentication middleware for WSGI, which had been working perfectly with Firefox, fails miserably when I try it with IE.</p>
<p>A bit of googling finds the following&#8230;</p>
<p><a href="http://www.eweek.com/article2/0%2C1895%2C1500432%2C00.asp">http://www.eweek.com/article2/0%2C1895%2C1500432%2C00.asp</a><br />
<a href="http://www.extremetech.com/article2/0,1697,20373,00.asp">http://www.extremetech.com/article2/0,1697,20373,00.asp</a></p>
<p>&#8230;making me think that I&#8217;m basically stuffed, despite the fact that I followed the RFC. Excellent work Microsoft! (Sarcasm alert!)</p>
<p>Should&#8217;ve done some reading first I think.</p>
<p>So now a decision.  Persevere with digest auth and upgrade (irreversibly?) to IE7 in the vain hope that it works, or roll back to Basic auth which will obviously support more browsers.</p>
<p>Much as I&#8217;d like to stick with digest (and see if my implementation works in IE7), I think Basic auth is the safer option (at least coupled with SSL), particularly when you look at browser <a href="http://www.w3schools.com/browsers/browsers_stats.asp">market share</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.briggs.net.nz/log/2007/05/12/digest-basic-ie7/feed/</wfw:commentRss>
		</item>
		<item>
		<title>mod_python and python2.5</title>
		<link>http://www.briggs.net.nz/log/2007/04/20/mod_python-and-python25/</link>
		<comments>http://www.briggs.net.nz/log/2007/04/20/mod_python-and-python25/#comments</comments>
		<pubDate>Fri, 20 Apr 2007 09:25:47 +0000</pubDate>
		<dc:creator>jrbriggs</dc:creator>
		
		<category><![CDATA[development]]></category>

		<category><![CDATA[python]]></category>

		<category><![CDATA[technical]]></category>

		<guid isPermaLink="false">http://www.briggs.net.nz/log/2007/04/20/mod_python-and-python25/</guid>
		<description><![CDATA[UPDATE:  Of course, the easier alternative, is just to upgrade to Kubuntu Feisty&#8230;  
More for my own reference than anything else&#8230;.
To get mod_python working with python2.5 on kubuntu:
1.  Install apache2, if you haven&#8217;t already.
2.  Install python2.5:

sudo apt-get install python2.5
sudo apt-get install python2.5-dev

Don&#8217;t get rid of python2.4, since it&#8217;s still used by [...]]]></description>
			<content:encoded><![CDATA[<p><em>UPDATE:  Of course, the easier alternative, is just to upgrade to Kubuntu Feisty&#8230; <img src='http://www.briggs.net.nz/log/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </em></p>
<p>More for my own reference than anything else&#8230;.</p>
<p>To get mod_python working with python2.5 on kubuntu:</p>
<p>1.  Install apache2, if you haven&#8217;t already.</p>
<p>2.  Install python2.5:</p>
<pre>
<code>sudo apt-get install python2.5
sudo apt-get install python2.5-dev</code>
</pre>
<p>Don&#8217;t get rid of python2.4, since it&#8217;s still used by a number of things.</p>
<p>3.  Change the symlink for /usr/bin/python to point at the new version:</p>
<pre>
<code>sudo rm /usr/bin/python
sudo ln -s /usr/bin/python2.5 /usr/bin/python</code>
</pre>
<p>4.  Install apache apxs2:</p>
<pre>
<code>sudo apt-get install apache2-threaded-dev</code>
</pre>
<p>5.  Download and extract the latest dist of <a href="http://www.modpython.org">mod_python</a>.  cd to that directory, configure and build:</p>
<pre>
<code>./configure
make</code>
</pre>
<p>6.  Possibly a controversial step: install modpython as normal (apt-get), then replace the shared-objects with the .so&#8217;s you&#8217;ve just  created:</p>
<pre>
<code>sudo apt-get install libapache2-mod-python</code>
</pre>
<p>From the downloaded modpython directory (i.e. where you ran configure &#038; make), copy the shared-object files:</p>
<pre>
<code>sudo cp src/mod_python.so /usr/lib/apache2/modules/
sudo cp dist/build/lib.linux-x86_64-2.5/mod_python/_psp.so /usr/lib/python2.4/site-packages/mod_python/</code>
</pre>
<p>Copy the mod-python directory from python2.4 site-packages to 2.5:</p>
<pre>
<code>sudo cp -R /usr/lib/python2.4/site-packages/mod_python/ /usr/lib/python2.5/site-packages/</code>
</pre>
<p>Restart apache and use modpython as normal&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.briggs.net.nz/log/2007/04/20/mod_python-and-python25/feed/</wfw:commentRss>
		</item>
		<item>
		<title>latest article</title>
		<link>http://www.briggs.net.nz/log/2006/11/10/latest-article/</link>
		<comments>http://www.briggs.net.nz/log/2006/11/10/latest-article/#comments</comments>
		<pubDate>Fri, 10 Nov 2006 06:34:45 +0000</pubDate>
		<dc:creator>jrbriggs</dc:creator>
		
		<category><![CDATA[articles]]></category>

		<category><![CDATA[python]]></category>

		<category><![CDATA[technical]]></category>

		<guid isPermaLink="false">http://www.briggs.net.nz/log/2006/11/10/latest-article/</guid>
		<description><![CDATA[My latest article, Getting Started with WSGI, (one of the numerous reasons I&#8217;ve been too busy to post lately) has just been published in O&#8217;Reilly&#8217;s ONLamp.
Actually, it&#8217;s not the main reason for not posting, since I wrote the piece back in July, but I&#8217;m still using it as an excuse until the next couple of [...]]]></description>
			<content:encoded><![CDATA[<p>My latest article, <a href="http://www.onlamp.com/pub/a/python/2006/11/09/getting-started-with-wsgi.html">Getting Started with WSGI</a>, (one of the numerous reasons I&#8217;ve been too busy to post lately) has just been published in O&#8217;Reilly&#8217;s <a href="http://www.onlamp.com">ONLamp</a>.</p>
<p>Actually, it&#8217;s not the main reason for not posting, since I wrote the piece back in July, but I&#8217;m still using it as an excuse until the next couple of projects come to fruition&#8230; <img src='http://www.briggs.net.nz/log/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.briggs.net.nz/log/2006/11/10/latest-article/feed/</wfw:commentRss>
		</item>
		<item>
		<title>simple REST testing tools</title>
		<link>http://www.briggs.net.nz/log/2006/08/06/simple-rest-testing-tools/</link>
		<comments>http://www.briggs.net.nz/log/2006/08/06/simple-rest-testing-tools/#comments</comments>
		<pubDate>Sun, 06 Aug 2006 09:55:11 +0000</pubDate>
		<dc:creator>jrbriggs</dc:creator>
		
		<category><![CDATA[REST]]></category>

		<category><![CDATA[python]]></category>

		<category><![CDATA[technical]]></category>

		<guid isPermaLink="false">http://www.briggs.net.nz/log/2006/08/06/simple-rest-testing-tools/</guid>
		<description><![CDATA[After a bit of googling, I have yet to find a command-line tool that simply handles HTTP requests.  There&#8217;s wget for retrieving files, curl for PUT and POST, but what to use for DELETE (or other HTTP methods)?  For that matter, I&#8217;d prefer to have a single tool, rather than 2 or 3.
I [...]]]></description>
			<content:encoded><![CDATA[<p>After a bit of googling, I have yet to find a command-line tool that <em><strong>simply</strong></em> handles HTTP requests.  There&#8217;s <a href="http://www.gnu.org/software/wget/">wget</a> for retrieving files, <a href="http://curl.haxx.se/">curl</a> for PUT and POST, but what to use for DELETE (or other HTTP methods)?  For that matter, I&#8217;d prefer to have a single tool, rather than 2 or 3.</p>
<p>I wrote a simple python script a while back &#8212; the last time I couldn&#8217;t find such a tool &#8212; and so now that I need to use it again, it seems like a good time to polish it up and release it (<a href="http://www.briggs.net.nz/log/products/wcall">here</a>).  Not before chopping out a bunch of specific hacks that really need tidying up before being included in released code, of course.</p>
<p>So if you need a basic tool for handling HTTP requests (GET, PUT, POST, DELETE) you may find it useful&#8230; rather than having to write the few lines of code yourself.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.briggs.net.nz/log/2006/08/06/simple-rest-testing-tools/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
