<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>Renaissance Developer</title>
    <link href="http://www.exubero.com/blog/index.html"/>
    <link rel="self" href="http://www.exubero.com/blog/atom.xml"/>
    <updated>2008-04-13T21:54:35Z</updated>
    <author>
        <name>Joe Schmetzer</name>
        <email>joe@exubero.com</email>
    </author>
    <id>http://www.exubero.com/blog</id>

    <entry>
        <title>Jonathan Coulton in London</title>
        <link href="http://www.exubero.com/blog/20080309_Jonathan_Coulton_in_London.html"/>
        <id>tag:exubero.com,2008-03-09:/blog/20080309_Jonathan_Coulton_in_London.html</id>
        <updated>2008-03-09T00:00:00Z</updated>
        <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
            

<p>Wow, hey! <a href="http://www.jonathancoulton.com/">Jonathan Coulton</a> is
<a href="http://www.jonathancoulton.com/2008/02/29/london-calling">coming to
London</a>!. I've already <a href="http://www.jonathancoulton.com/2008/03/04/london-tickets-on-sale">booked
tickets</a> for a friend and I. I heartily recommend that anyone else come along
to see the <a href="http://potw.news.yahoo.com/s/potw/61785/how-to-become-a-rock-star">Godfather
of Geek Rock</a>.</p>


        </div></summary>
    </entry>

    <entry>
        <title>Updated CruiseControl Presentation</title>
        <link href="http://www.exubero.com/blog/20071122_Updated_CruiseControl_Presentation.html"/>
        <id>tag:exubero.com,2007-11-22:/blog/20071122_Updated_CruiseControl_Presentation.html</id>
        <updated>2007-11-22T00:00:00Z</updated>
        <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
            

<p>I just done a minor update to my <a href="/ccintro/ccintro-s5.html">Introduction
to CruiseControl</a> slide show. A huge "thank you" to
<a href="http://people.apache.org/~sgoeschl/">Siegfried Goeschl</a>, who sent me
his changes.</p>


        </div></summary>
    </entry>

    <entry>
        <title>Postfix SpamAssassin and SELinux</title>
        <link href="http://www.exubero.com/blog/20071016_Postfix_SpamAssassin_and_SELinux.html"/>
        <id>tag:exubero.com,2007-10-16:/blog/20071016_Postfix_SpamAssassin_and_SELinux.html</id>
        <updated>2007-10-16T00:00:00Z</updated>
        <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
            

<p>I've just had three very long nights in a row, configuring a new mail server
for <a href="http://www.lillifoot.co.uk">Lillifoot</a>, and trying to get
SpamAssassin working. It's finally working very sweetly, but I pulled a fair
amount of hair out getting there.</p>

<p>My configuration is as follows:</p>

<ul>
    <li><strong>Xen Hypervisor</strong>: Dual Core 3.0GHz Intel
    Pentium 2Gb. I'm currently only running the mailserver as a Xen guest on
    this right now, but I will add more virtual machines later.</li>
    <li><strong>Mailserver (Xen Guest)</strong>: I set up a guest and called it
    <code>mail.exubero.com</code>.</li>
    <li><strong>Operating System</strong>: I'm running
    <a href="http://www.centos.org/">Centos 5</a> in the Xen guest. I performed
    a clean minimal installation (headless), and disabled all services except
    sshd.</li>
    <li><strong>Services</strong>: On top of the above base, the following
    services were installed:
        <ul>
            <li><a href="http://www.postfix.org/">Postfix</a></li>
            <li><a href="http://spamassassin.apache.org/">SpamAssassin</a></li>
            <li><a href="http://www.procmail.org/">Procmail</a></li>
        </ul>
    </li>
</ul>

<p>I was able to install Postfix without too much trouble. After updating the
DNS MX records for exubero.com and lillifoot.co.uk to point to mail.exubero.com,
we're in business. There were a number of issues in the first day as I worked
the kinks out of the configuration (I'm only really an amateur mailserver
administrator).</p>

<p>What I hadn't previously appreciated was how much spam my previous ISP had
been catching. Not a huge amount, but still in the range of 20-30 per day. Not
a problem: off to install SpamAssassin.</p>

<p>I found a very good configuration guide for
<a href="http://traxel.com/doc/spamassassin-setup.html">Postfix, SpamAssassin
and Procmail</a> by Robert Bushman. There were very clear instructions with
easy to follow steps. All preparation steps worked fine, and I was able to
test the configuration without issue. However, after I enabled the
configuration in the running server, I got a strange error:</p>

<pre>pipe[4403]: fatal: pipe_command: execvp /usr/local/bin/sa-filter: Permission denied
postfix/pipe[4400]: 5ECB0186DD3: to=&lt;joe@example.com&gt;, relay=spamassassin, delay=3.4,
  delays=2.9/0.04/0/0.46, dsn=4.3.0, status=deferred (temporary failure.
  Command output: pipe: fatal: pipe_command: execvp /usr/local/bin/sa-filter:
  Permission denied )</pre>

<p>This is saying that the SpamAssassin filter (<code>sa-filter</code>) did not have
permissions to run.</p>

<p>The configuration in <code>master.cf</code> shows that the script is run using
the new "<code>filter</code>" user I created as per the instructions:</p>

<pre># Spam Filter
spamassassin unix - n n - - pipe
  user=filter argv=/usr/local/bin/sa-filter -f ${sender} -- ${recipient}</pre>

<p>Hmmmm... the script worked fine when I was testing it manually, and running
under the <code>filter</code> user. Check the script permissions:</p>

<pre>[joe@mail ~]$ ll /usr/local/bin/sa-filter
-rwxr-xr-- 1 filter filter 72 Oct 16 01:21 /usr/local/bin/sa-filter</pre>

<p>That looks good. I spent a long time researching this particular problem,
without much success. The logs were inconclusive, and I couldn't track down
anything useful. In the end, I reverted the Postfix configuration changes,
and left it for a day.</p>

<p>Finally, researching a related but different problem, I came across a
reference to SELinux causing problems with Postfix. With this idea, I tried
changing the SELinux policy to "<code>permissive</code>"; suddenly,
everything starts working. Wheee! For some reason, SELinux wasn't logging
it's usual error messages to <code>/var/log/messages</code>.</p>

<p>Obviously, the more robust solution is to tweak the SELinux configuration
to allow the script to run while SELinux is enabled. Dear Lazyweb, If anyone
can help me on that one, send me an email and I'll post an update to this
article.</p>
        </div></summary>
    </entry>

    <entry>
        <title>Jonathan Coulton</title>
        <link href="http://www.exubero.com/blog/20070925_Jonathan_Coulton.html"/>
        <id>tag:exubero.com,2007-09-25:/blog/20070925_Jonathan_Coulton.html</id>
        <updated>2007-09-25T00:00:00Z</updated>
        <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
            

<p><a href="http://www.jonathancoulton.com/">Jonathan Coulton</a>'s music has
been playing pretty non-stop on my music player for the last week now. It's
great music, and the lyrics often have a perverse humour based on maths,
science fiction and other geeky subjects that really appeals to me. Who else
can sing about the Mandelbrot Set without sounding lame?</p>

<p>I've known about Jonathan Coulton for about two years now, after I first
heard about him after a mention about his song Code Monkey on the Java Posse, 
and then again later on Slashdot. I though Code Monkey was a great song at the 
time, but I didn't look any further then.</p>

<p>Recently, I heard reports of him wowing the crowd at
<a href="http://www.pennyarcadeexpo.com/">PAX</a>. One thing that really struck 
me was the description of his reaction to the size of the crowd, which was about
3000 (compared to his normal crowd of about 50-200). All of them were screaming
"all we want to do is eat your brains", which sounds grusome, but makes sense if
you know that particular song. All this prompted me to check out his music
again, which lead me to make my first music purchase in more than three years.
</p>

<p>One (other) thing which makes Jonathan's music relatively unusual is the fact
that he releases it under the Creative Commons. This means that people are free
to make non-commercial derivative works. As a result, there are many amateur and
semi-professional videos available, most of them linked from Jonathan's site.
Spiff does some excellent machinima videos using the World of Warcraft.</p>

<p>Some of my favorites:</p>

<ul>
    <li><a href="http://www.jonathancoulton.com/songdetails/The%20Future%20Soon">The Future Soon</a>
    (Ill probably be some kind of scientist building inventions in my space lab in space)</li>
    <li><a href="http://www.jonathancoulton.com/songdetails/Skullcrusher%20Mountain">Skullcrusher Mountain</a>
    (I made this half-pony half-monkey monster to please you)</li>
    <li><a href="http://www.jonathancoulton.com/songdetails/Mandelbrot%20Set">Mandelbrot Set</a>
    (Kickass fucking fractal!)</li>
    <li><a href="http://www.jonathancoulton.com/songdetails/Chiron%20Beta%20Prime">Chiron Beta Prime</a>
    (were working in a mine for our robot overlords. Did I say overlords? I meant protectors)</li>
</ul>

<p>Anyway, enough gushing on about music. More technical content to follow.</p>


        </div></summary>
    </entry>

    <entry>
        <title>Test Driven</title>
        <link href="http://www.exubero.com/blog/20070920_Test_Driven.html"/>
        <id>tag:exubero.com,2007-09-20:/blog/20070920_Test_Driven.html</id>
        <updated>2007-09-20T00:00:00Z</updated>
        <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
            

<p>This is one of those strange examples of synchronicity. I was moderating a
message on the <a href="http://tech.groups.yahoo.com/group/junit/">JUnit
discussion group</a>, when I came across a message by
<a href="http://radio.javaranch.com/lasse/">Lasse Koskela</a>, which reminded
me of his upcoming book: <a href="http://www.manning.com/koskela/">Test
Driven</a>. For a long time I had been planning to go and buy a copy, because
I'm very interested in the subject, and I thought it had been published (I'd
seen a message on his blog a few months prior that suggested that it was
imminent). A few minutes searching online was enough for me to find out that
it hadn't been published yet. That would have been the end of it for the moment,
except that a few minutes later, an email arrived from a chap at Manning (the
publishers). Lasse had suggested that I might be interested in looking at a
review copy, and would I be interested? Sweet!</p>

<p>So the state of play is this: I have a PDF copy of the draft manuscript,
which I've printed out so I can scrawl all over it. Should be fun, I'll
post a report later.</p>

        </div></summary>
    </entry>

    <entry>
        <title>Lillifoot Website</title>
        <link href="http://www.exubero.com/blog/20070909_Lillifoot_Website.html"/>
        <id>tag:exubero.com,2007-09-09:/blog/20070909_Lillifoot_Website.html</id>
        <updated>2007-09-09T00:00:00Z</updated>
        <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
            

<p>As I've hinted previouly, my wife and I opened up a new shoe store last
month: <a href="http://www.lillifoot.co.uk">Lillifoot</a>. A major reason why
I haven't been blogging as much lately is because I've been so busy with
Lillfoot. We've effectively set up a complete retail business from scratch.
It's been an incredible learning experience, as we've had to grapple with
real estate agents, builders, suppliers, staff, computer systems and processes.
This has been all the more stressful because neither Annie or I had any previous
experience retail, not to mention we're both still working in our day jobs.
Given the nature of this blog, I'll eventually get around to covering some of
the technical issues surrounding getting a new shoe store up and running.</p>

<p>This main point I'll mention today is the website. It's taken me quite a
few evenings, but I've finally got a design that I'm fairly happy with - though
a professional graphic designer might have a different opinion (hi Sol! Any
comments?).</p>

<p>As is usual with me, the site is fully standards based, using semantic markup
with cascading stylesheets. Clicking on "view source" shows a very sparse html
markup, which enormously simplies the maintenance of the site. Even with that,
I think that there is a certain attractive look to the site (though I might change
my mind about the hot pink in a month or two!). Stylesheets give you the freedom
to change you mind without too much work, though.</p>

<p>Still to do on the site: install Wordpress or Joomla! to enable people other
than me to update the site (and the news); get more pictures in the brand pages,
and get a webstore up and running. Plenty to do!</p>


        </div></summary>
    </entry>

    <entry>
        <title>phpMyFlatSite</title>
        <link href="http://www.exubero.com/blog/20070810_phpMyFlatSite.html"/>
        <id>tag:exubero.com,2007-08-10:/blog/20070810_phpMyFlatSite.html</id>
        <updated>2007-08-10T00:00:00Z</updated>
        <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
            

<p><a href="http://seriot.ch/">Nicolas Seriot</a> wrote to tell me about how he
has adapted the exubero stylesheet for his own software:
<a href="http://seriot.ch/software_server.php#mfs">phpMyFlatSite</a>. Not that
I'm biased, but it looks very good. :-)</p>


        </div></summary>
    </entry>

    <entry>
        <title>Nautilus Scripts for Subversion</title>
        <link href="http://www.exubero.com/blog/20070601_Nautilus_Scripts_for_Subversion.html"/>
        <id>tag:exubero.com,2007-06-01:/blog/20070601_Nautilus_Scripts_for_Subversion.html</id>
        <updated>2007-06-01T00:00:00Z</updated>
        <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
            

<p>I'm in the process of helping my wife start up a
<a href="http://www.lillifoot.co.uk/">new business venture</a> (more on that
later). As a result, we are hiring people to help us. At this stage, there is
a large amount of planning involved, and so I have set up a subversion repository
where we can share and collaborate on documents.</p>

<p>We have hired Lisa to work for us part time on marketing. She has her own
computer running Windows Vista. After getting her to install
<a href="http://tortoisesvn.tigris.org/">TortoiseSVN</a>, and giving her a short
training course, she was quickly up and running. As Lisa was already experienced
in using the File Explorer in windows, she was easily able to grasp the extra
functionality and purpose of TortoiseSVN. In this way, I think that TortoiseSVN
excels at being an incredibly useful piece of software with a minimal UI that
doesn't get in the way. Non-developers can easily use it.</p>

<p>We have also hired Jan as a new store manager. I provided her with a laptop
running Ubuntu Feisty. With OpenOffice installed, it makes an excellent document
writing tool, and virtually immune to the virus and malware problems that
plague Windows. I believed it would be just as usable, until I hit a snag: I
couldn't find an equivalent of TortoiseSVN for Linux. Although there are a large
number of <a href="http://subversion.tigris.org/links.html#clients">Subversion
clients</a>, most of them are aimed at developers. Non-developers are left to fend
for themselves among the complex user interface options that they don't really
care about or want to know.</p>

<p>Luckily, after a bit of extra digging, I found the
<a href="http://marius.scurtescu.com/node/85">Nautilus Scripts for Subversion</a>,
by Marius Scurtescu. From my (and Jan's!) point of view, they give almost the same
level of usabilty for a non-developer user. They're even
<a href="http://packages.ubuntu.com/feisty/devel/nautilus-script-collection-svn">
available on Feisty</a>.</p>

<p>I also found them suprising easy to extend. I was able to add two new commands
("Lock" and "Unlock") in moments by modifying existing scripts. I was also able
to fix a problem: stderr wasn't being redirected to the zenity input file in all
cases. A simple fix was to add a few <code>&amp;&gt;</code> about to redirect io
from svn correctly. </p>

<p>I have made my changes available: here are my
<a href="../nautilus-svn-scripts-0.9.2.joe.tar.gz">Updated Nautilus Scripts for
Subversion</a>. Marius, if you want to include these changes in your distribution,
feel free to take them from here.</p>

        </div></summary>
    </entry>

    <entry>
        <title>The Business Case for a Blog</title>
        <link href="http://www.exubero.com/blog/20070522_The_Business_Case_for_a_Blog.html"/>
        <id>tag:exubero.com,2007-05-22:/blog/20070522_The_Business_Case_for_a_Blog.html</id>
        <updated>2007-05-22T00:00:00Z</updated>
        <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
            

<p>The <a href="http://www.cluetrain.com/">Cluetrain Manifesto</a> struck a
chord with me when I first read it. In the eight years since it was published,
I sometimes see signs that companies have paid attention to that message.
More often, the same old closed shop business practices are seen.</p>

<p>A friend recently started a new business installing and servicing domestic
heating systems. Remembering the lessons of the Manifesto, I urged him to start
a blog. I put together the following issues he needs to consider. I think it
makes a good case why <em>any</em> business should consider creating a blog.
It was written with a domestic heating engineer in mind, but the ideas
translate to many other areas.</p>

<h4>Benefits of a Blog</h4>

<ul>
    <li><strong>Extra business</strong>: by updating your blog regularly (for
    example daily, weekly or monthly), you will gain an interested audience:
    <ul>
        <li>Clients and friends (and competitors) may subscribe to your blog (or
        at least look over it every now and then), to see what you've been up
        to. This will keep you fresh in people's minds.</li>
        <li>Search engines will notice that you update your site often, and
        start paying more attention to it, and raising it in the search
        rankings. People will find you this way.</li>
    </ul></li>

    <li><strong>Public exposure</strong>: there are no other heating installers
    who have any web presence at the moment (I've checked). You can be one of
    the first. Once again, search engines will reward your uniqueness (as long
    as you have interesting content - more on that later).</li>

    <li><strong>Customer confidence</strong>: potential customers can gain
    insight into the work that you do. Hopefully, they will gain some confidence
    in your work from reading your blog.</li>
</ul>

<h4>Costs of a Blog</h4>

<ul>
    <li>Time spent maintaining the diary, including writing entries and
    maintaining comments.</li>

    <li>If you become popular, you will have to get a more robust hosting
    solution. Although there are free blogging services, but it is much better
    to get all your content within your domain, as search engines will take
    note that your domain is updated regularly.</li>
</ul>

<h4>Risks of a Blog</h4>

<ul>
    <li><strong>Privacy concerns</strong>: you must be very scrupulous about
    not putting personal information about clients anywhere on your blog. You
    must state this clearly somewhere.</li>

    <li><strong>Loss of customer confidence</strong>: potential customers can
    be scared off if they read content that doesn't sound professional, or
    if private details of other clients are discussed. You need to be aware
    of how potential customers will view the information.</li> 
</ul>

<h4>What Content?</h4>

<p>As mentioned, keep your content work related, while avoiding any
confidential information. Some suggestions:</p>

<ul>
    <li>Where you were working (to the town/suburb, don't specify street
    address). This gives search engines a chance to show your site for relevant
    searches.</li>

    <li>What you did. Be specific. Give brand names and model numbers. Give out
    the dirt. What's crap? what do you avoid? What's a good brand or model?
    What's a good technique? What are the trade-offs when deciding one brand or
    technique over another? This is a chance to prove your expertise in a
    public forum. Done well, your blog and associated website can become a web
    authority on the subject.</li>

    <li>What went wrong, and how you fixed it. Show that you're proactive and
    get things done, customer centric, and so on.</li>

    <li>Add a client feature "Ask a Heating Engineer" or something equivalent.
    People can email you a question, and you can blog an answer.</li>
</ul>

<p>All these things will help enormously in promoting your site via search
engines. People will tend to search for suburbs and specific model numbers. If
you can give some useful experience and advice, you've effectively struck gold.
</p>

<h4>Taking a Long View</h4>

<p>The above advice must be taken as a long term strategy. It is a combination 
of white hat seach engine optimisation and hopefully interesting content. This
takes a long time to gain appreciable results.</p>

<p>In the case of my friend
<a href="http://www.gravestockheating.co.uk/stu/">Stu's blog</a>, he has been
posting entries for a couple of months now. Traffic is still very low, but
increasing rapidly each month. I was pleased to see that because of his
<a href="http://www.gravestockheating.co.uk/stu/2007/05/14/flushedwith-success/">latest
entry</a>, Google is now returning his blog on the first page for searching for
<a href="http://www.google.co.uk/search?q=magna+clean">magna clean</a>, and
it's the top result (right now) for the search
<a href="http://www.google.co.uk/search?q=magna+clean+power+flush">magna clean
power flush</a>. This trend will get much better as time goes on.</p>

        </div></summary>
    </entry>

    <entry>
        <title>Follically Challenged in a Hirsute World</title>
        <link href="http://www.exubero.com/blog/20070521_Follically_Challenged_in_a_Hirsute_World.html"/>
        <id>tag:exubero.com,2007-05-21:/blog/20070521_Follically_Challenged_in_a_Hirsute_World.html</id>
        <updated>2007-05-21T00:00:00Z</updated>
        <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
            

<p>As I mentioned before, I went to the 
<a href="http://javanicus.com/londonjava/items/207-index.html">LondonJava
Meetup</a> on Tuesday 1st May. In my usual tardy fashion, I'm finally writing
about the night (only three weeks late!).</p>

<p>Tim Bray turned up that night, along with many other regulars. By the end of
the night, I managed to work through discussions about CORBA, the weather in
Melbourne, XML, the performance of XMPP parsers (very fast, if done well),
dynamic languages in general (the phrase "Uniform Access Principle" was
mentioned in this context).</p>

<p>By 11pm there were 4 of us remaining: Jez Raynor, Simon Brunning, Tom White
and myself. I really enjoyed the night, and managed to add another blog feed to
my subscriptions (thanks Tom!).</p>

<p>Tim published a
<a href="http://www.tbray.org/ongoing/When/200x/2007/05/04/London">picture of
me</a> the night on his blog. This prompted an email from my friend
<a href="http://www.supplesoftware.com/">George Petrov</a> entitled "Shiny
Forehead". And that explains the title of the this entry tonight.</p>

        </div></summary>
    </entry>

    <entry>
        <title>LondonJava Meetup 1st May</title>
        <link href="http://www.exubero.com/blog/20070429_LondonJava_Meetup_1_May.html"/>
        <id>tag:exubero.com,2007-04-29:/blog/20070429_LondonJava_Meetup_1_May.html</id>
        <updated>2007-04-29T00:00:00Z</updated>
        <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
            

<p>It looks like there's another
<a href="http://javanicus.com/londonjava/items/207-index.html">LondonJava
Meetup</a> on Tuesday 1st May. It's been a while, so I think that it's high time
that I turned up.</p>


        </div></summary>
    </entry>

    <entry>
        <title>Why I Prefer Ant Over Maven</title>
        <link href="http://www.exubero.com/blog/20070313_Why_I_Prefer_Ant_Over_Maven.html"/>
        <id>tag:exubero.com,2007-03-13:/blog/20070313_Why_I_Prefer_Ant_Over_Maven.html</id>
        <updated>2007-03-13T00:00:00Z</updated>
        <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
            

<p><a href="http://ant.apache.org/">Ant</a> is a fairly mature software build
system. I use Ant in pretty much all of my Java projects.
<a href="http://maven.apache.org/">Maven</a> is a newer alternative to
Ant that has been gaining mindshare over recent years. As such, a collegue
recently asked me why don't we use Maven instead of Ant? On the surface, Maven
appears to be a good choice. It automatically handles many scenarios that must
be manually handled in Ant. However, there are a number of points that make
me quite hesitant to adopt Maven...</p>

<p>Before I go on, I will say that Maven is OK. In my opinion, build automation
is of prime importance. A Maven build can be Complete, Repeatable, Informative,
Schedulable, and Portable (the <em>CRISP</em> properties of a build that Mike
Clark defines). Given a choice between no automated build, and a Maven build,
there is only one sensible choice.</p>

<p>However, Ant is still my build system of choice, for the following
reasons:</p>

<ul>
    <li>Maven is harder to extend. Although it can handle probably 90% of
    projects directly. For the other 10%, it can be very difficult to adapt
    Maven. Although Maven does have a plugin framework, it is less mature than
    the Ant task API. (Note the strategic use of invented statistics in this
    paragraph).</li>

    <li>Maven uses a declarative style. Many people like the declarative style.
    On the other hand, Ant uses a more procedural style. Personally, I'm more 
    comfortably with the Ant style, as I can explicitly verify every single 
    step that an Ant build will perform. I can't say that for a Maven build.
    Its more of a "black box".</li>

    <li>I believe that the Ant development team has a much more robust and
    mature development methodology. I monitor both the Ant and Maven dev mailing
    lists. I'm much more impressed with the Ant group with their attention to
    detail (for example, backwards compatibility issues, updating documentation,
    release milestones). I will readily agree that Maven 2 is a huge improvement
    over Maven 1, but there are still a number of issues that make me wary:
    <ul>
        <li>Maven developers don't have cohesive release procedures. For
        example, Maven 2.0.5 was released a month ago, yet the Maven Antlib is
        still stuck at version 2.0.4. I can't determine when they're planning to
        release Maven Antlib 2.0.5.</li>

        <li>The Maven website lacks cohesion, which makes it hard to find 
        information (for example, try and find the documentation for the Maven
        Antlib from <a href="http://maven.apache.org/">http://maven.apache.org/</a>).
        There seem to be multiple links which lead back to exactly the same
        page, which is a well known mistake in navigation schemes. On the other
        hand, the Ant website has a terrible design, but at least I can find
        information on it.</li>

        <li>As of this moment (12th March 2007 14:44 GMT) the maven download
        page at
        <a href="http://maven.apache.org/download.html">http://maven.apache.org/download.html</a>
        is broken. Although I'm sure it will be fixed soon, these sort of
        mistakes seem to happen fairly often.</li>
    </ul></li>

    <li>Ant is ubiquitous in the Java development space. Every single Jave IDE
    integrates natively with Ant. The same cannot be said for Maven. Although
    there are a number of Maven plugins, none of them have the maturity or the
    features available in the Ant plugin ecosystem. For example, you can execute
    and debug Ant scripts in Eclipse (even setting breakpoints!). Another of my
    favourites: the
    <a href="http://www.yworks.com/en/products_antexplorer_about.htm">yWorks Ant
    Explorer</a> is just one example of the many third-party tools available.</li>
</ul>

<p>Anyway, on a more positive note, I think that the maven repository is
<em>very</em> well done. Being able to transparently retrieve dependencies
without any further intervention is a very powerful technique. I love the fact
that I can make use of the repository having to completely switch to Maven
through the use of the Maven Antlib. The Ant development team even abandoned
their own repository tasks they were preparing for version 1.7 because they
thought that the Maven repository did everything that they needed.</p>


        </div></summary>
    </entry>

    <entry>
        <title>Evangelism is War (updated)</title>
        <link href="http://www.exubero.com/blog/20070216_Evangelism_is_War_Updated.html"/>
        <id>tag:exubero.com,2007-02-16:/blog/20070216_Evangelism_is_War_Updated.html</id>
        <updated>2007-02-16T00:00:00Z</updated>
        <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
            

<p>This is fairly old news, but I was absolutely fascinated by the "secret"
Microsoft documents
<a href="http://edge-op.org/iowa/www.iowaconsumercase.org/011607/3000/PX03096.pdf">Evangelism
is War</a>. I think it's a very clear insight into why Microsoft is so
successful, as well as why they are viewed abhorred in some circles.</p>

<p>Hat tip to <a href="http://www.1060.org/blogxter/entry?publicid=ACFB34A604794311360E3D3B1F274522">Steve
Loughran</a>.</p>

<h4>Update (Monday, 5th March)</h4>

<p>As a number of you have mentioned, the link above to the Evangelism is War 
article is now invalid. The pdf was hosted on a website called
<a href="http://www.iowaconsumercase.com">Iowa Consumer Case</a>, which
contained all the public domain court documents from the <em>Comes vs
Microsoft</em> case. The entire website is now password protected, as reported on
<a href="http://www.theregister.co.uk/2007/02/20/microsoft_missing_archive/">The
Register</a> a couple of weeks ago. Apparently, Groklaw is collecting all the
documents on the page <a
href="http://www.groklaw.net/staticpages/index.php?page=2007021720190018">Comes
v. Microsoft Exhibits</a>, but the Evangelism is War page doesn't appear to be
there yet. If anyone knows the location of this document, sent me an email. In
the meantime, a good summary can be found on Amy Stephen's article "<a
href="http://community.nebraska.edu/amyblog/index.php/2007/01/20/state-of-iowa-consumers-sue-microsoft-for-acts-of-antitrust/">State
of Iowa Consumers sue Microsoft for Acts of Antitrust</a>".</p>

<h4>Second Update (Thursday, 8th March)</h4>

<p>Found it again, at <a href="http://edge-op.org/iowa/">http://edge-op.org/iowa/</a>.
I've updated the link above.</p>


        </div></summary>
    </entry>

    <entry>
        <title>Gravestock Heating</title>
        <link href="http://www.exubero.com/blog/20061017_Gravestock_Heating.html"/>
        <id>tag:exubero.com,2006-10-17:/blog/20061017_Gravestock_Heating.html</id>
        <updated>2006-10-17T00:00:00Z</updated>
        <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
            

<p>I've just finished a quick and relatively simple web design project I've done
for Stu, a good friend of mine. It's called 
<a href="http://www.gravestockheating.co.uk/">Gravestock Heating</a>.</p>

<p>Stu Gravestock is starting his new business providing domestic heating
services, such as central heating service and installation, gas breakdown work,
and a heap more. He did a fantastic job in installing a new heating system in my
new house. Now that he's decided to take the plunge and set up his own business,
I wish him the best of luck in the future.</p>

        </div></summary>
    </entry>

    <entry>
        <title>CITCON London 2006 Retrospective</title>
        <link href="http://www.exubero.com/blog/20061012_CITCON_London_2006_Retrospective.html"/>
        <id>tag:exubero.com,2006-10-12:/blog/20061012_CITCON_London_2006_Retrospective.html</id>
        <updated>2006-10-12T00:00:00Z</updated>
        <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
            

<div style="float: right; padding: 1em">
<a href="http://www.flickr.com/photos/87709569@N00/264259115/"
title="CITCON Banner" ><img class="border"
src="http://static.flickr.com/95/264259115_78a5e650e8_m.jpg" width="180"
height="240" alt="CITCON Banner" /></a>
</div>

<p>The Continuous Integration and Testing Conference (<a
href="http://www.citconf.com/">CITCON</a>) was on last Saturday. I've only
just got around to writing about it. There are already some other writeups
available from the <a href="http://www.citconf.com/wiki/index.php/Comments%20On%20The%20Web">Comments
on the Web</a> page on the wiki. Anyway, here's mine...</p>

<p>For me, the most unique thing about the conference was the manner in which
it was organised - using the <a href="http://www.citconf.com/openspace.php">OpenSpace
rules</a>. In summary, the rules are:</p>

<ul>
    <li>Whoever shows up is the right group</li>
    <li>Whatever happens is the only thing that could have</li>
    <li>Whenever it starts is the right time</li>
    <li>When it's over, it's over</li>
</ul>

<p>It was fascinating to see the OpenSpace rules in action. On the evening
before the conference, everyone met up at the hotel. Paul and Jeff started off
with by introducing themselves, and then asking everyone in the room to
introduce themselves as well. We then moved on to the creating the schedule. We
started off with a blank whiteboard for the schedule. Various people had
subjects they wanted to talk about (or hear about), and so they got up and
wrote down their subject on a sticky note, and put on an empty space on the
board. I thought that there might be some problems getting enough sessions,
but the board filled up quickly, and was in fact over-subscribed.</p>

<p>After the proposed sessions were posted, we broke up for drinks and informal
chats. Everyone had a chance to look at the sessions, and put a mark against
every session they thought they would like to see. Anyone could re-arrange (or
even combine) sessions on the schedule depending upon popularity, convenience
and personal whim. It sounds chaotic, but at the end, there was a remarkably
coherent set of subjects arranged. If you look at the <a title="CITCON Photos"
href="http://www.flickr.com/photos/87709569@N00/sets/72157594318666513/detail/">photo
set</a> I took, there are an interesting series of photos showing how the schedule
evolved over the evening and the morning afterwards.</p>

<p>Aside from the scheduling gymnastics, the sessions themselves were very free
flowing. Because there were no real "prepared speeches" or similar, each session
was very much a collaborative discussion on the agreed subject. I thought that
this had many positive and a few negative points. On the positive side:</p>

<ul>
    <li>Discussions were highly interactive, there was little monopolisation
    of discussions</li>
    <li>Attendees were drawn into contributing to the discussion just by the
    mere fact that they were there</li>
    <li>Participants were all very positive and receptive to any discussions</li>
</ul>

<p>I think the above points can be attributed to the fact that pretty much all
the participants in the conference had decided to attend out of their own
personal interest. They were all either deeply sympathetic to subject of the
conference, or highly interested in learning about it.</p>

<p>The <a href="http://en.wikipedia.org/wiki/Echo_chamber#As_a_metaphor">echo
chamber effect</a> is a phenomenon that people should be aware of in these
situations. I didn't see much in the way of conflicting or dissenting options
during the conference. This means that the subject under discussion is either
undisputed, or the people with negative opinions are not present.</p>

<p>On the negative side, the main issue I had was to do with the expertise of
participants in some sessions. Because there were no prepared presentations
before a session started, there was no real guarantee that there would be any
unique insights gained. Some sessions degenerated into a group of people sharing
war stories about problems they've encountered. However, even in these
situations, there was often insight to be gained into a specific problem.</p>

<p>With those points made, I think it was one of the most interesting and dynamic
conferences I've ever attended. I think that a lot of the attribution to this can
go to the OpenSpaces format and the fact that all the attendees were very
motivated on the subject.</p>

<p>These are the sessions that I attended:</p>

<ul>
    <li>09.00: Non-functional testing in a CI environment</li>
    <li>10.00: <a href="http://www.citconf.com/wiki/index.php/ContinuousCodePolicing">Continuous code policing</a></li>
    <li>11.00: Break</li>
    <li>11.30: <a href="http://www.citconf.com/wiki/index.php/AntManagingComplexBuilds">Managing complex builds with Ant</a></li>
    <li>12.30: Lunch</li>
    <li>13.30: How to write GUI tests</li>
    <li>14.30: <a href="http://www.citconf.com/wiki/index.php/ContinuousIntegrationAntipatterns">Continuous integration anti-patterns</a></li>
    <li>15:30: Break</li>
    <li>16:00: Build telemetry and statistics</li>
</ul>

<p>In three of the sessions I volunteers to take notes to publish on the wiki.
The session rooms all had projectors available, so I just plugged in my laptop
and typed notes on the big screen as people were talking. I thought that it was
a good way to capture the conversations as they happened.</p>

<p>I believe I got very good value out of all those sessions. In the non-functional
testing session I was able to ask people about strategies to start performance
testing in the environment at my new job. In the managing complex builds session,
I was able to have a good chat with the <a href="http://buildix.thoughtworks.com/">Buildix</a>
guys about their strategies.</p>

<p>In the end, it was great to meet so many CruiseControl enthusiasts, devs and
committers. I was hoping to get a good look at some alternaive <acronym
title="Continuous Integration">CI</acronym> servers, but I only really caught
a glimpse of the upcoming Atlassian Bamboo (which was interesting, all the same).</p>

        </div></summary>
    </entry>

    <entry>
        <title>X10, JavaComm Woes</title>
        <link href="http://www.exubero.com/blog/20061005_X10_JavaComm_Woes.html"/>
        <id>tag:exubero.com,2006-10-05:/blog/20061005_X10_JavaComm_Woes.html</id>
        <updated>2006-10-05T00:00:00Z</updated>
        <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
            

<p>It's like this, see: I've been longing for years to set set up some lava lamps
to indicate the current build status (as described by
<a href="http://www.developertesting.com/archives/month200404/20040401-eXtremeFeedbackForSoftwareDevelopment.html">Alberto
Savoia</a> and <a href="http://www.pragmaticautomation.com/cgi-bin/pragauto.cgi/Monitor/Devices/BubbleBubbleBuildsInTrouble.rdoc">Mike
Clark</a>). I'm an expert at <a href="http://cruisecontrol.sourceforge.net/">CruiseControl</a>,
which supports an <a href="http://cruisecontrol.sourceforge.net/main/configxml.html#x10">X10
publisher</a>. All good so far.</p>

<p>Now, to use X10 from Java, there are two libraries you need:</p>

<ul>
    <li>Jesse Peterson's pure Java implementation of the X10 protocol, which
    is available from <a href="http://www.jpeterson.com/">http://www.jpeterson.com/</a>.</li>
    <li>The Sun Communications API, available from
    <a href="http://java.sun.com/products/javacomm/">http://java.sun.com/products/javacomm/</a>.</li>
</ul>

<p>First problem: Jesse Peterson's website appears to have disappeared from the
net, and the domain is now parked.</p>

<p>Second problem: the Java Communications API download for Windows (which includes
the crucial win32com.dll file) appears to have been completely removed from the Sun
website.</p>

<p>Luckily, CruiseControl contains both x10.jar, comm.jar and win32com.dll in its
own download bundle (although the setup instructions are still missing).
Unfortunately, I couldn't finish setting up the equipment at this stage, as my
work duties intruded, but a number of people looked very interested in the lava
lamps that are sitting above my desk right now. I was hoping to have a successful
implemenation report to brag about at <a href="http://www.citconf.com">CITCON</a>,
but you can't win 'em all.</p>

<p>The main worry is that the current implementation appears to be completely
unsupported. If both the X10 library and the Java Communications API have been
withdrawn, I may have to find a more supported method for integrating the lamps
into the build process. It's very disappointing that the Java integration with
standard ports is still lacking after all these years.</p>

        </div></summary>
    </entry>

    <entry>
        <title>Using Pair Programming as an Excuse for Mandatory Overtime</title>
        <link href="http://www.exubero.com/blog/20060928_Using_Pair_Programming_as_an_Excuse_for_Mandatory_Overtime.html"/>
        <id>tag:exubero.com,2006-09-28:/blog/20060928_Using_Pair_Programming_as_an_Excuse_for_Mandatory_Overtime.html</id>
        <updated>2006-09-28T00:00:00Z</updated>
        <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
            

<p>I went to a job interview recently. I had applied for a role in a team that
worked on technically interesting projects, and they were very keen on the use
of agile methodologies. From my first impressions, it looked an ideal place to
work.</p>

<p>I thought I made a very good impression on technical part of the interview.
The interviewers even made reference to my
<a href="../junit/antipatterns.html">JUnit Anti-patterns</a> article in a very
positive manner, which I took to be good sign. It's hard to say sometimes, but
I don't think I really made any major mistakes during this phase of the
interview.</p>

<p>The one part of the interview that didn't seem to go down too well was the
discussion about working hours. The conversation went something like this:</p>

<blockquote><p><strong>Interviewer</strong>: "The core working hours are from 8am
to 6pm"</p></blockquote>

<blockquote><p><strong>Me</strong>: "8am is fine, but I need to leave around 5pm
to get home for 6pm (I like to at least <strong>see</strong> my kids before
bedtime). I'm quite happy to make up hours at other times, or from home"</p>
</blockquote>

<blockquote><p><strong>Interviewer</strong>: "We would prefer you stay until
6pm. We're an agile shop, everyone does pair programming. You need to be in
the office during our core hours programming"</p></blockquote>

<p>I stood my ground on the subject, as I care deeply about being home by 6pm.
We continued on to other issues, and the interview finished up an hour later.
I found out later that I wasn't offered the position. This was a vague
disappointment (no-one likes to be turned down), but the working hours issue
did make me a little wary of the place.</p>

<p>Some issues struck me:</p>

<ul>
    <li>In a bit managerial reverse judo, they turned one of the top agile
    methodologies (pair programming) into one of the worst excesses of
    un-enlightened management (mandatory overtime).</li>
    <li>Surely their developers don't actually pair program 100% of the time.
    What about bathroom breaks?</li>
    <li>Why on earth do they think they need 10 hour working day as standard?
    There is plenty of literature that suggests that this is not sustainable.
    I've done 10, 12 and even 14 hour working days for brief spurts, but not as
    a regular event. I do want to spend some of the weekday on family matters,
    as a matter of course.</li>
</ul>

<p>This was an investment bank, many of which are known for having a culture
of long working hours (although this wasn't my experience when I worked at UBS).
I have since spoken to other people who work at the place (Hi George! Hi Ben!),
and they tell me that it isn't really like that, either. Perhaps the question is
just thrown to interviewees to see how they react, and so it was my lack of
enthusiasm about long working hours that disqualified me from a job offer. Or
maybe it was something else completely.</p>

<p>Anyway, as a bit of happy ending, I did get a job offer at a
<a href="http://www.tudor.com/">different company</a>. It's very close to home,
so the issue of long commutes don't affect me, and it has a working environment
like none I've ever seen before. They did put me through an grueling interview
process, that went on for more than 10 hours. In the end, the payback for this
time is an excellent working environment close to home with some great people.
</p>


        </div></summary>
    </entry>

    <entry>
        <title>IE6 on Linux</title>
        <link href="http://www.exubero.com/blog/20060914_IE6_on_Linux.html"/>
        <id>tag:exubero.com,2006-09-14:/blog/20060914_IE6_on_Linux.html</id>
        <updated>2006-09-14T00:00:00Z</updated>
        <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
            

<p>This is excellent:
<a href="http://www.tatanka.com.br/ies4linux/index-en.html">IEs 4 Linux</a>.
This makes website compatability testing a whole lot easier for me.</p>


        </div></summary>
    </entry>

    <entry>
        <title>XTC and London 2.0</title>
        <link href="http://www.exubero.com/blog/20060906_XTC_and_London_2.0.html"/>
        <id>tag:exubero.com,2006-09-06:/blog/20060906_XTC_and_London_2.0.html</id>
        <updated>2006-09-06T00:00:00Z</updated>
        <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
            

<p>In one of those strange examples of synchronicity, I managed to attend two different geek meetups in London on the same night; one was planned (XTC), and the other was a pleasant surprise (London 2.0).</p>

<p>The initial meet-up I went to was the <a href="http://www.xpdeveloper.com/xpdwiki/Wiki.jsp?page=ExtremeTuesdayClub">Extreme Tuesday Club</a> (XTC), which is held in the Old Bank of England pub every Tuesday night. I had promised <a href="http://www.developertesting.com/archives/individual_weblogs-jeffrey_fredrick-index.html">Jeffrey Fredrick</a> that I would plug the <a href="http://www.citconf.com/">Continuous Integration and Testing Conference</a> at XTC.</p>

<p>After chatting to a number of people, I met <a href="http://www.thekua.com/">Patrick Kua</a> (a ThoughtWorker and fellow Australian), who just happened to mention that he was only dropping into XTC for a short time, as he was heading over the London 2.0 meet-up for a demonstration of Selenium. My ears pricked up at this one, and I followed Patrick all the way to the other side of the pub to check out the demo. Hmmmm... in hindsight, it might not have been synchronicity, but rather clever planning by <a href="http://www.magpiebrain.com/">Sam Newman</a>, who organises the London 2.0 meetups. I even managed to plug CITCON again there.</p>

<p>Some other random things that happened during the night...</p>
<ul>
  <li>I met a Python developer (Christian, I think) in rather awkward circumstances: he had interviewed me for a contract a few days earlier. We got on well at the time, and I must have made the right impression, because they ended up offering me the contract. The awkward part came because I was stalling on giving them an answer, while I'm still waiting on a response for an interview from another company. We had a good laugh.</li>
  <li>I learned a lot about a really clever technique for testing web applications across multiple browsers and platforms using <a href="http://www.openqa.org/selenium/">Selenium</a> and Parallels on a Macintosh. Jason Huggins had come over to London for the <a href="http://www.google.co.uk/intl/en/events/londontesters/speakers.html">Google Conference on Test Automation</a>. In preparation for the talk, he was showing all and sundry the nifty wizardry that he would be demonstrating at the conference.</li>
  <li>I found out that APL is still in use (which I was vaguely aware of), and making an impact within agile circles (which was a surprise!) I spoke to Stephen Taylor, who presented a talk at the subject during XP2006.</li>
  <li>I learned that if you meet a woman who calls herself "Dot", you definitely should <strong>not</strong> ask her "dot as in dot com?". Getting that same comment eight times in one night was starting to grate on her a bit.</li>
  <li>I found that there is a disturbing number of Australians loitering around London</li>
  <li>I had fun, and met a heap of interesting people (using the geek definition of "interesting", that is).</li>
</ul>


        </div></summary>
    </entry>

    <entry>
        <title>Unmask Password</title>
        <link href="http://www.exubero.com/blog/20060823_Unmask_Password.html"/>
        <id>tag:exubero.com,2006-08-23:/blog/20060823_Unmask_Password.html</id>
        <updated>2006-08-23T00:00:00Z</updated>
        <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
            

<p>I've been doing a lot of work around encryption lately. One of the tasks
involved creating a dialog allowing the user to enter their password for
encryption or decryption. One feature I put on this dialog was a "mask password"
checkbox. When checked, the password appears as asterisks, meaning the people
near the person are unable to see what is being typed. When unchecked, the
plaintext of the passphrase is visible.</p>

<p>During review, someone asked why this feature was even available? Wasn't
it a security hole?</p>

<p>The problem is that a cryptograpic key requires anywhere from 56 to 128 bits
of entropy, depending upon the algorithm. An 8 character password can have
anywhere from 8 to 40 bits of entropy, depending upon how rigorous the user is
in avoiding dictionary words, or variants thereof, and using non-alphabetic
characters. A much better strategy is for users to use unlimited length
passphrases, perhaps using "shocking nonsense" as a mnemonic. An interesting
discussion on this subject can be found in the
<a href="http://www.virtualschool.edu/mon/Crypto/PGPPassPhraseFAQ.html">PGP
Passphrase FAQ</a>.</p>
 
<p>The problem with unlimited length passphrases is that people (in general) are
terrible typists. Without the feedback of seeing exactly what they are typing,
they are unable to correctly type in long phrases without error.</p>
 
<p>Allowing the user to unmask the password as they are typing gives them the
confidence to use much more secure passphrases, with the added issue that they
must make sure that no-one is watching as they type. In general, this is
something the users are much more able to evaluating the risk. Considered
altogether, the actually <strong>increases</strong> the security of the entire
process.</p>


        </div></summary>
    </entry>

    <entry>
        <title>CITCON London 2006</title>
        <link href="http://www.exubero.com/blog/20060817_CITCON_London_2006.html"/>
        <id>tag:exubero.com,2006-08-17:/blog/20060817_CITCON_London_2006.html</id>
        <updated>2006-08-17T00:00:00Z</updated>
        <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
            

<p>The Continuous Integration and Testing Conference (CITCON) is hitting London
this October, and there's a fair chance that I'll put in an appearance (pending
my other obligations). Details are at
<a href="http://www.citconf.com/">http://www.citconf.com/</a>.</p>

        </div></summary>
    </entry>

</feed>
