<?xml version="1.0"?>
<rss version="2.0.">
  <channel>
    <title>Advogato blog for purcell</title>
    <link>http://www.advogato.org/person/purcell/</link>
    <description>Advogato blog for purcell</description>
    <language>en-us</language>
    <generator>mod_virgule</generator>
    <pubDate>Thu, 24 Jul 2008 19:46:55 GMT</pubDate>
    <item>
      <pubDate>Tue, 21 Feb 2006 13:04:15 GMT</pubDate>
      <title>21 Feb 2006</title>
      <link>http://www.advogato.org/person/purcell/diary.html?start=42</link>
      <guid>http://www.advogato.org/person/purcell/diary.html?start=42</guid>
      <description>&lt;p&gt;
In April I am co-hosting a &lt;a href="http://www.germanyonrails.com/" &gt;German-language Ruby on Rails workshop in Munich, Germany&lt;/a&gt;.  If you're interested in coming along, now's your chance to book a place before it's too late.

</description>
    </item>
    <item>
      <pubDate>Fri, 27 Jan 2006 20:07:25 GMT</pubDate>
      <title>27 Jan 2006</title>
      <link>http://www.advogato.org/person/purcell/diary.html?start=41</link>
      <guid>http://www.advogato.org/person/purcell/diary.html?start=41</guid>
      <description>&lt;p&gt;
In keeping with my tradition of posting here approximately once per year, I'm going to note for posterity what I've been up to in recent months.

&lt;p&gt;
In the last year I have divided my time between lucrative consulting clients and unpaid work on my own business.  My clients often hire me to help out on projects built primarily in Java; my theory is that rates for Java-related work outstrip those for other languages because they include "mental health danger money" that is required to compensate for loss of brain cells and pulled-out hair.

&lt;p&gt;
The greatest danger to a highly pragmatic consultant is the presence of Enterprise-minded "Architect" types.  The cult of Deep Knowledge surrounding - and cultivated by - these over-serious individuals hinders the consultant's goal of just doing what is most appropriate.  These types are characterised by the monotonically increasing complexity of their codebases, and their stressed response to requests for business-driven changes.

&lt;p&gt;
In contrast, bootstrapping my own business pays poorly but affords me the luxury of freely choosing and optimising my toolset, along with the satisfaction of moving faster and getting feedback sooner.  Powered by a heady cocktail of Darcs, Rails, PostgreSQL, Debian, Trac and coffee, I have single-handedly built and launched a commercial &lt;a href="http://sproglogs.com/" &gt;baby web log site&lt;/a&gt; in a matter of months.

&lt;p&gt;
I expect to soon be blogging on &lt;a href="http://www.sanityinc.com/" &gt;my own site&lt;/a&gt; about what has worked for me, in the hope that other enterprising programmers will be encouraged to step up to their obligation to maximise their creative output.
</description>
    </item>
    <item>
      <pubDate>Thu, 13 Jan 2005 00:00:49 GMT</pubDate>
      <title>13 Jan 2005</title>
      <link>http://www.advogato.org/person/purcell/diary.html?start=40</link>
      <guid>http://www.advogato.org/person/purcell/diary.html?start=40</guid>
      <description>I have now moved on from &lt;a href="http://www.thoughtworks.com/" &gt;ThoughtWorks&lt;/a&gt;, after making a great many wonderful friends. In recent months I have experienced a vigorously renewed interest in small projects built on open source and common sense, presumably in a reaction to a cumulative overdose of enterprise projects built on Java and waffle.
&lt;p&gt;
A state of acute fatherhood has turned my mailbox into a black hole for communication about existing projects (&lt;a href="http://www.advogato.org/proj/PyUnit/" &gt;PyUnit&lt;/a&gt; in particular), but a good friend and I have still managed to write some useful open-source code. As yet unreleased and unlicenced, &lt;a href="http://airspeed.pythonconsulting.com/" &gt;Airspeed&lt;/a&gt; is an uncomplicated template library whose templates are compatible with those written for &lt;a href="http://jakarta.apache.org/velocity/" &gt;Velocity&lt;/a&gt;.
&lt;p&gt;
(Oh, and I also recently fixed up &lt;a href="http://www.advogato.org/proj/dbdoc/" &gt;dbdoc&lt;/a&gt; to generate Oracle schema documentation with Jython + zxJDBC -- this plugs nicely into Ant builds. Column comments are read directly from the schema when they are available. Code available on request, until I get time to cut a release.)</description>
    </item>
    <item>
      <pubDate>Sat, 18 Oct 2003 12:35:39 GMT</pubDate>
      <title>18 Oct 2003</title>
      <link>http://www.advogato.org/person/purcell/diary.html?start=39</link>
      <guid>http://www.advogato.org/person/purcell/diary.html?start=39</guid>
      <description>A colleague pointed me at &lt;a href="http://www.thinlet.com/" &gt;Thinlets&lt;/a&gt;, and I'm thoroughly impressed. Looks like a nice technology for those that can't decide between a web application and a 'traditional' GUI app. Compare heavyweight Swing and middleweight SWT with &lt;a href="http://www.thinlet.com/demo.html" &gt;this demo&lt;/a&gt;.</description>
    </item>
    <item>
      <pubDate>Tue, 23 Sep 2003 20:57:56 GMT</pubDate>
      <title>23 Sep 2003</title>
      <link>http://www.advogato.org/person/purcell/diary.html?start=38</link>
      <guid>http://www.advogato.org/person/purcell/diary.html?start=38</guid>
      <description>Today I tip my hat to Jonathan Ribbens, whose &lt;a href="http://jonpy.sourceforge.net/" &gt;jonpy&lt;/a&gt; project is a breath of fresh air for Python web programming.
&lt;p&gt;
I found Zope to be overblown, and the likes of Quixote to be too focused on page templating. Jon's work gives me what I need; servlet-style building blocks for crafting my own MVC web applications. He defines a common Request object that encapsulates the request/response data and logic, conveniently presenting query parameters, uploaded files and cookies. Adaptors for the disparate deployment models of FCGI, straight CGI and mod_python present the exact same Request interface to the developer's code. Wonderful.
&lt;p&gt;
As if that weren't enough, Jon throws in a web templating solution and an ingenious database connection pooling module.
&lt;p&gt;
The appearance of such a necessary and well-executed package in such a low-key form is typical of the no-nonsense Python world, though I can't help thinking that more of a song and dance is warranted in this case.</description>
    </item>
    <item>
      <pubDate>Tue, 9 Sep 2003 13:21:07 GMT</pubDate>
      <title>9 Sep 2003</title>
      <link>http://www.advogato.org/person/purcell/diary.html?start=37</link>
      <guid>http://www.advogato.org/person/purcell/diary.html?start=37</guid>
      <description>&lt;a href="http://www.php.net/" &gt;PHP&lt;/a&gt; is getting serious. For a long time it required a great deal of work to structure a large PHP application into a maintainable form, and every developer did it in his own 'special' way. Projects like &lt;a href="http://www.phpgroupware.org/" &gt;phpGroupWare&lt;/a&gt; produced frameworks for plugging applications into an assembly but apparently failed to evolve the definitive pattern for writing a generic PHP site.
&lt;p&gt;
Now &lt;a href="http://smarty.php.net" &gt;Smarty&lt;/a&gt; has arrived and has quickly become the definitive templating solution. This is a good thing, more because of the pattern it presents rather than the specific solution (since with discipline &lt;a href="http://www.massassi.com/php/articles/template_engines/" &gt;plain PHP&lt;/a&gt; can make a good templating language). Smarty nicely covers the V of &lt;a href="http://ootips.org/mvc-pattern.html" &gt;MVC&lt;/a&gt;, and a good C comes in the form of &lt;a href="http://phrame.sourceforge.net/" &gt;Phrame&lt;/a&gt;, which is a PHP port of Java's popular &lt;a href="http://jakarta.apache.org/struts/" &gt;struts&lt;/a&gt; framework. A nice simple M is left as an exercise for the reader, but plain objects and arrays work well for the majority of PHP applications.</description>
    </item>
    <item>
      <pubDate>Tue, 26 Aug 2003 10:10:35 GMT</pubDate>
      <title>26 Aug 2003</title>
      <link>http://www.advogato.org/person/purcell/diary.html?start=36</link>
      <guid>http://www.advogato.org/person/purcell/diary.html?start=36</guid>
      <description>I'm embarrassed to admit that the last time I took a serious look at CSS was in 1999, when I worked alongside two of the top DHTML/Javascript guys in the world -- &lt;a href="http://www.webreference.com/dhtml/" &gt;Peter Belesis&lt;/a&gt; and &lt;a href="http://www.m-files.com/" &gt;Giorgio Braga&lt;/a&gt;. At that time of Netscape 4 and IE 3/4, support for CSS was patchy and much sneakiness was necessary in order to get the right effect. (Somehow, Peter and Giorgio managed to construct an entire javascript-based presentation rendering engine, replete with animations and shared whiteboard conferencing.) As a bystander, I learnt to avoid CSS and instead rely on the old-fashioned HTML layout tricks of &amp;lt;table&amp;gt;-ing and transparent-pixeling pages to death.
&lt;p&gt;
So call me slow, but yesterday I decided to catch up and give CSS another chance. What did I discover? The little kid grew up, browser support is now widespread and generally excellent, and I can finally cast aside my table and transparent pixel baggage. At the end of the day, it boils down to throwing away unnecessary code, and that's one of the best things that can happen to a hacker.
&lt;p&gt;
What I'm wondering now, though, is how to avoid delaying this kind of enlightenment in future. At some hard-to-define point, using a particular technology flips from being a liability to a superability. I want to define that point for myself.</description>
    </item>
    <item>
      <pubDate>Thu, 21 Aug 2003 21:48:52 GMT</pubDate>
      <title>21 Aug 2003</title>
      <link>http://www.advogato.org/person/purcell/diary.html?start=35</link>
      <guid>http://www.advogato.org/person/purcell/diary.html?start=35</guid>
      <description>The Coolest Software Ever Award, for today at least, goes to &lt;a href="http://www.hubbe.net/~hubbe/x2vnc.html" &gt;x2vnc&lt;/a&gt; (that's &lt;a href="http://www.hubbe.net/~hubbe/win2vnc.html" &gt;Win2vnc&lt;/a&gt; for you Windows people). Now I can use my debianised ThinkPad's wonderful keyboard and trackpoint to control its nasty Windows desktop neighbour without needing to do the keyboard shuffle every 10 seconds. Very civilised.</description>
    </item>
    <item>
      <pubDate>Wed, 20 Aug 2003 22:08:46 GMT</pubDate>
      <title>20 Aug 2003</title>
      <link>http://www.advogato.org/person/purcell/diary.html?start=34</link>
      <guid>http://www.advogato.org/person/purcell/diary.html?start=34</guid>
      <description>I've been hacking on &lt;a href="http://gaim.sf.net/" &gt;gaim&lt;/a&gt; to add a Yahoo-IM-style display of status messages. No other open source IM client has that, but Yahoo IM users often end up changing their status messages for entertainment value.
&lt;p&gt;
Alongside that, I've set up &lt;a href="http://www.pythonconsulting.com/" &gt;pythonconsulting.com&lt;/a&gt; to cover my Python-related consulting work; if you're looking for a Python expert, I might be able to find time for you.
&lt;p&gt;
(Linux weenies take note: I'm hosting a number of sites on a User Mode Linux virtual machine at &lt;a
href="http://www.bytemark-hosting.co.uk/r/freedom"&gt;Bytemark&lt;/a&gt; -- I can't recommend them highly enough for their fast, personal and expert service.)
</description>
    </item>
    <item>
      <pubDate>Sun, 20 Apr 2003 19:30:38 GMT</pubDate>
      <title>20 Apr 2003</title>
      <link>http://www.advogato.org/person/purcell/diary.html?start=33</link>
      <guid>http://www.advogato.org/person/purcell/diary.html?start=33</guid>
      <description>My photography website is now live, at &lt;a href="http://www.purcellimages.com/" &gt;www.purcellimages.com&lt;/a&gt;, for those who may care to take a look. This has been an exercise in discovering why the PHP/MySQL combination is so popular. Developing the site has been a breeze in comparison to the equivalent task using Java, but I'm shocked by the limitations of PHP; I particularly miss exceptions.</description>
    </item>
  </channel>
</rss>
