Sunday, December 28, 2003

Saxon and resolver.jar

I've been doing some work which requires me to have local copies of dtd files due to limited connectivity. I've been using the Saxon XSLT processor as part of this work and been struggling to get catalog managers working correctly.

Richard Dallaway has an excellent document DTDs and XML Catalogs which provides many helpful clues as to how to proceed with getting the catalog system up and running for parsing and xsl-t.

The following is my addition for anyone trying to get this working with the command line version of Saxon :

java -cp .;./resolver.jar;./saxon7.jar net.sf.saxon.Transform \
-x \
-x \
mySource.xml myTransform.xsl

I was stuck for a while because I was using only the -r option, this appears to initially work but you need to also specify the -x and -y options to ensure that the SAX parsers used by the transformation engine are also catalog aware.

The next thing to get working was the Transformer within the code itself. I'd had no success by just setting the URIResolver on the TransformerFactory, but given that the above worked it was just a quick dive into the Saxon source to find the required extra params:

transformerFactory.setURIResolver(new CatalogResolver());



This solved my remaining problems and now I can deploy my application without having to ensure the public dtd host is always reachable.

Wednesday, December 24, 2003

Jira and Cookies

My evaluation of Jira is now complete and we have bought a copy for the project I am working on at the moment. It is a great issue tracker and has been very easy to integrate into our application. If you are involved in a commercial project that needs a strong issue tracking mechanism then for 1000USD it really isn't worth trying to write the functionality yourself.

It is easy to plug in your own authentication mechanisms (we had an existing EJB authenticator), but I do have one word of warning. Make sure that you take a look at the cookie handling that Seraph uses under the hood. You can easily replace the mechanisms that it uses, and you really should if the application you are using is at all sensitive.

Java Update/P900

Fired up my browser yesterday morning for the first time in a couple of days and found that the plugin is now able to update itself. I got a message in the toolbar telling me that an update was available and a few minutes later I was running the latest plugin version. All in all a very nice system when I'm running standalone, I'm not sure how happy I'd be if a major step was taken (to JRE 1.5 for example) if I was running a series of WebStart apps in an enterprise........

In other news, Christmas came early for me in the form of a new phone. A Sony Ericsson: P900 running MIDP2.0 . It replaces both my T68 which kept going through phases of not being able to make calls for 2-3 hours a day and my Zaurus which whilst fantastic managed to get to a state where the battery will not last a day, and leaving it for two days goes flat enough to loose data.

I've been playing with the P900 for a week, and I'm very much in love. Simple things like the "TODO" lists are really handy. It synchronises with tools like Outlook straight from the box, but I'm going to have to do a little work to get it talking properly to Evolution via SyncML. I will post further when I've cracked it.

Thursday, December 04, 2003

Mozilla Firebird and Adobe SVG plugin

Some of the work I am doing involves using svg graphics. Until today I've been trapped using IE rather than my ideal browser Firebird for viewing them.

However today i found that if you install Adobe SVG Beta 6 and then copy the NPSVG6.dll and files into Firebird/plugins. Restart Firebird, and you should find the plugin working!

NB. This doesn't work with version 3.0 for me, you need to use the version 6 beta.

Saturday, November 29, 2003


One of the projects I am working on at the moment needs an issue reporting and tracking system. I've been evaluating Jira from Atlassian to see if it meets our needs.

This is a fantastic product, which allows a great deal of flexibility for deployment. For example I've been able to configure it to use Oracle as a backend, run under JBoss and authenticate against my own mechanism in just two days, and most of the time I've spent has been learning how to use the application itself. I've been involved in other projects where a subset of the functionality provided by Jira has been written from scratch, and I can tell you the pricing of this is very good in comparison.

I certainly want to use this now, the only remaining question is how much effort it will be to integrate the look/feel of Jira with the application being written. I'll post again when I've found out.

Book Roundup

I've been a little lax recently reporting books I've been reading, time for a catch up :

The first is Overtaken by Alexi Sayle.
I've been a fan of his comedy for years, this is his first "straight" novel that I've read from him. The main theme of the book is the lead characters attempt to make an individual face up to his previous actions.
It has comic moments, but in general the novel is quite dark in content. I hugely enjoyed it and would say it is well worth investing the time to read it.

You might recognise Danny Wallace as Dave Gormans flatmate from Are You Dave Gorman? a fantastic live show that made its way to print a couple of years ago.
Join Me is the story of a collective (not a cult - well maybe) which Danny started by accident. His journey to collect more members is great fun, and the idea of building a huge "Karma Army" performing random acts of kindness on Fridays might yet save the world!

Showbusiness: The Diary of a Rock'n'roll Nobody is a book by Mark Radcliffe. Better known for his DJ work on Radio1 with his partner this is a book detailing his musical exploits. The catalogue of musical failures he has been involved with are laugh out loud funny, and the fact he kept going back for more shows his devotion to music. Mark and Lard are the funniest thing on radio, and this book is hugely amusing.

The latest Bill Bryson (A Short History of Nearly Everything) is a huge tomb packed with an enormous amount of information. It's a book that I found to dry to read in one burst. In the end I read it over a couple of months in several spurts. The style is as ever strong, even when dealing with some fairly weighty topics. I'm not sure I'd recommend this, it certainly isn't as entertaining as his other works. That said I was sat watching QI (a BBC2 quiz hosted by Stephen Fry) two weeks ago and found I could answer several of the questions - all that knowledge came from this book so at least I learnt something.

Sunday, October 19, 2003


I noticed an article on The Server Side about the lack of J2EE components available. Someone pointed out displaytag.
I'd not heard of it before, but really wish I had. It is a JSP Tag Library that allows you to generate good looking tables with little effort.
It integrates reasonably well with struts although I am having some minor troubles with "Save as CSV". You get paging and sorting columns for free on anything that supports Comparator. All in all it looks great and I wish I'd found it months ago.
Try the demo tables running from Sourceforge.

Tuesday, October 07, 2003

CruiseControl and CheckStyle

I started a new project recently, and found it rather frustrating that my CheckStyle output wasn't appearing in my CruiseControl output jsp files.

The problem turned out to be that the output of the checkstyle tests was being brought inline into the build log rather than written externally i.e. I needed to change the checkstyle report to behave as follows :

< checkstyle config="./">
< fileset dir="${src.path}" includes="**/*.java"/>
< formatter type="xml" toFile="${junit.log.location}/CheckstyleErrors.xml"/>
< /checkstyle

and then merge in the xml file via the CruiseControl config file.

Saturday, September 27, 2003

Canoo WebTest

One of our customers recently asked for code-coverage figures for our internal test process, and like many this meant we bought a copy of Clover to see how well we have been doing.

For some time I've been trying to find a solution that I'm happy with for testing a deployed application to prove use-cases and increase code coverage.
In the past we have used latka along with JUnit. Whilst reasonable happy with that solution, it became a little tricky to get a non-coder to write sensible tests with it, and the promise of being able to take recorded JMeter scripts and replay them never really came together for me.

I also spent a little time with MaxQ, which worked well as a proxy recorder, but the level of knowledge to hack the python scripts created was again a little high for what I wanted from the test team.

The good new is that Canoo WebTest seems to fit the bill perfectly. Whilst it isn't integrated with JUnit, it is a set of tags which extend ant. This means our test-team who already have XML knowledge can write groups of tests which represent use-cases for the application and test easily with only ant required. This means it is trivial to add this to our Cruise control build system. The only thing lacking at the moment from my point of view is a mechanism to take these tests and then run multiple instances of them for load-testing the application.

Sunday, September 14, 2003


I'm at least two years late to this particular party, but xdoclet seems to be as good as everyone says.
Three years of tinkering with ejb/servlet/struts deployment descriptors can seriously scar a man, so on the latest project I've started I decided to see what the fuss was about.
I don't think I shall be going back!

That said, not being totally familiar with it left me struggling for a couple of hours on Friday trying to work out none of my struts actions where appearing in struts-config.xml. Imagine my delight to find that after messing with merge files and tracing everything under the sun I found the @struts tags where in a comment block that started /* rather than /** .

I guess you can shoot yourself in the foot with any tool you use!

Friday, September 05, 2003


After my holiday, I needed persuading to start work again. Cue the purchase of ViewSonic VP211b. I've been using it for a day now, and I'm in love :)

21.3" at 1600x1200 running fine with both my XP and Linux box. Nice little feature of a USB2 4 port hub built into it, which saves diving down into the cable zone for plugging cameras etc in. So far its perfect, will post again if this changes.

Friday, August 15, 2003

Eclipse Templating

I've been using Eclipse as my primary development environmentfor about a year now. I moved over from Netbeans along with most of the development team I work in. Despite using it for a year, I've only just found out quite how powerful the template mechanism is.

The Ctl-Space code complete option also works for user definable templates and these can contain replaceable variables. For example adding a template for generating a test for a getter/setter operation on a string is as easy as follows :

Generate a new template (windows->preference, Java-Editor-Templates) with the following content named teststr

/** Test the get/set method for ${var}.*/
public void testGetSet${var}
${obj} obj=new ${obj}();

// do set
obj.set${var}("test value");

// check
if(!pbj.get${var}().equals("test value"))
fail("get/set failed for ${var}.");

Now in the source edit window type teststr then Ctl-Space. This inserts the template, typing FirstName Tab User will then insert the following into your code:

/** Test the get/set method for FirstName.*/
public void testGetSetFirstName
User obj=new User ();

// do set
obj.setFirstName("test value");

// check
if(!pbj.getFirstName().equals("test value"))
fail("get/set failed for FirstName.");

Clearly this is a simple example, but even this is a big time saver.

Tuesday, August 05, 2003

Mplayer and Streaming audio

I was talking with a pal yesterday about listening to radio streams from my RedHat 9 box. I promised I'd write up a couple of quick tips on getting it all going. I listen to most things through mplayer rather than messing around with Real Player etc.

Most radio streams are made a little hard to find by the content producers, you have to trawl through the html in the pages to get links (CTL-U) on Mozilla. If the stream is a .ram or .rmp link, use curl to open the url. The contents of that can then be passed to mplayer.

eg. The source to the bbc radio player whilst launching radio 4 shows as the link to the live stream.

Opening that url with curl gives rtsp://*/ev7/live24/radio4/live/r4_dsat_g2.ra.

I then squirrel that away for future reference (they do change it occasionally) in a shell script that runs mplayer as follows :

mplayer -cache 64 rtsp://*/ev7/live24/radio4/live/r4_dsat_g2.ra

Friday, July 18, 2003

Presentation Help

My earlier post about JavaOne, and the general standard of the sessions being stronger this time led to me being mailed this. It is a presentation by Mark Jason Dominus on how to give a technical presentation. the slides are good and a video of the presentation is available from here.

Friday, July 11, 2003

More Linux Stuff

The hot spell of weather in the UK left my home office unbearable earlier this week. I decided that the time had come to consolidate all the network printers and mail service onto the RedHat server so I could switch off a couple of boxes.

I managed to get the printers running under Samba really quickly with no problems, the fun started when I tried to see the shares from the XP system. It took ages to work out that the issue was simply the firewall on the RedHat box stopping the UDP browse requests. For future reference I needed to open UDP 137-139 and TCP 161.

For several years I�ve been using VPOP3 on an XP box as a local pop3 cache from my Demon accounts. VPOP3 is a great piece of software and I�d recommend it to anyone who needs to manage a small number of accounts, moving away from this was purely to turn a machine off rather than to any comment on the software.

I�ve been using SpamAssassin from my email client Evolution for some time, but decided as part of this install to run it on every piece of incoming mail.

The setup I�ve ended up with is fetchmail picking up the mail from a series of POP/IMAP servers with the families mail accounts on them. A simple cron script picks mail up from these every 20mins or so. All the mail is then filtered through SpamAssasin via procmail. I�ve about 6months worth of spam/ham that I�ve used to train up the Bayesian filters and the strike rate seems pretty good.

Mail is then presented to the local network via pop3s. Everything seems to be holding together well, and not leaving the extra two machines on has made a big difference to the room temperature!

Monday, June 23, 2003


Well the Jet-Lag from the return flight from JavaOne is finally beginning to fade. I thought I should make a note of what I thought the significant announcements seemed to be:

  • Sun want to get Java being used by significantly more developers. They are claiming 3million now and are aiming for 10 million. Project Rave is one of the ways they are tying to do this (IMHO aimed squarely at the VB crowd). Many on the language enhancements for the 1.5 (Tiger) release are aimed to make the language easier to use.

  • Fantastic news - Java is going to be more friendly on the desktop, double clicking the tray icon isn't going to launch the console anymore - it will do something the end users understand! In general Sun seem to have recognised that the Java brand needs to be articulated to the public at large. The launch of as an end user destination is another part of this stratergy (along with a cool Matrix inspired advert "Java is Everywhere" - wonder if we will ever see that in the UK?)

  • Dell/HP are putting the Java runtime onto every machine they ship, I guess this may put some pressure on the other vendors and will help with the fact that Microsoft are no longer bundling it in with the OS.

  • Mac hardware looks really cool and appears to run all the tools I use daily really well - very very tempting, if I could connect back to the vpn of one of my customers with it then it is looking really compelling.

  • General comments, the attendance was down from when I attended last (2001) but it is still a very big conference. The quality of the technical sessions was stronger than last time (I left fewer sessions early this time).

    Friday, May 23, 2003

    Pattern Recognition - William Gibson

    Pattern Recognition
    The three authors I've enjoyed most in the last few years have been Neal Stephenson, Iain Banks and William Gibson. I must admit to a feeling a little fear when I found that Pattern Recognition was set in the present as opposed to his earlier work. If you like his work, don't be put off by this and go buy it.

    The main storyline is about the search for the author of small fragments of film ("footage") which are dropped annonymously onto the internet. The woman searching for this author works in advertising and has an allergic response to the advertising logos which cover our planet.

    Pattern Recognition replaces Dead Air as the best read I've had this year........but Neal Stephenson is due to release Quicksilver in October.

    Eclipse Profiler

    I've a need for a profiler at the moment in the past I've had a demo of the excellent JProfiler which would certainly do the trick. However I came accross Eclipse Profiler Plugin which is a Sourceforge hosted project provided under the CPL license.

    I got it up and running quickly on my XP machine, but I've not yet got it going successfully on my Redhat 9 box, I'm seeing a minor problem with the native gnu-linux component. The things I've found so far seem to indicate that its strong enough as a performance monitor and it also seems to allow instance counting. A couple of nice feature I spotted on the instance counting screens includes filtering the objects by the length of time they have been around (good for ignoring short lived objects).

    I'll provide more info when I've spent some time running it on some of the larger JBoss projects I'm working with.

    Saturday, May 03, 2003

    Salmon Of Doubt

    The Salmon Of Doubt
    I read The Salmon Of Doubt during a couple of flights I took a couple of weeks ago. I've enjoyed all the Douglas Adams books throughout my adult life, I read them in my teens and then re-read them in my late twenties after seeing him give a keynote speech at JavaOne.

    The introduction to the book from Stephen Fry, the articles on technology, hitchhikers movie, life in California and the charity work he has done are all fascinating and make up two thirds of the book. The last third of the book is an attempt to put together a series of draft chapters found on Douglas Adams Mac (nearly typed PC - he would turn in his grave) after his untimely death. It's a gallant attempt, but ultimately its an unfinished story that hasn't been polished the way his other writing has been.

    If you must read the incomplete novel, read it first, then go to the start of the book and read the smaller articles you'll end up feeling a wholfinish feeling more upbeat - me I'm off to read The Meaning of Liff again.

    Thursday, April 10, 2003

    Rally School

    On Monday myself and six colleagues spent a fantastic day at the Shropshire Rally School. A full day spent learning to drive classic Ford RS Escorts through a rally stage with an exceptional instructor who is competing at high levels. The bottom line is that we all had the most fantastic time, and would all recommend it to anyone who fancies giving it a try.

    The total distance spent in the cars was around 30km, split into eight runs through the day. At the end of the day the instructor drives you through the stage to show you how it should be done. We all found this an exhilerating and amazingly humbling experience. Despite having improved continuously through the day with the tuition provided the very first corner with the instructor shows you how little you know! Danni took the car I'd driven all day through each corner of the stage with corner entry speeds that seemed like twice anything I had been able to achieve and exit speeds that seemed three to four time faster.

    The whole party managed to get sunburnt which is quite an achievement in the UK in early April. We travelled down the night before and stayed at the Hanmer Hotel which was very pleasent.

    Saturday, April 05, 2003

    RedHat 9.0

    I just used BitTorrent to download the latest RedHat ISO images. BitTorrent is a swarming P2P client which you can download/share specific files from as needed. The process was absolutely painless, I left it running for 48 hours, and when I came back I had all three cd images (1769.2MB) ready to burn. I'm not sure how long the downloads actually took - I deliberately left the client up so folks could upload from me for a period after I'd got the full set. Whenever I examined it, the figures certainly suggested that I was downloading at approx 30kB/s and uploading at around 20kB/s which seemed to pretty much saturate my ADSL link.

    I upgraded my development machine at home with the ISO images - everything was painless except for my XF86Config getting stomped on by the installer (thank heavens for backups!). Its a fairly lightly configured box really only running cvs and my Java development tools (Eclipse) along with Evolution and Mozilla. The one thing I did spot instantly was that the fonts in Mozilla seem to be much clearer than before - I assume this means I'm finally running a copy of Gnome that supports ant-aliasing.

    Wednesday, April 02, 2003

    Cruisecontrol Upgrade

    I decided to bite the bullet today and upgrade our Cruisecontrol environment from 2.0 to 2.02 today. I decided to after finding that we just couldn't live with ant v1.4.1 and the old version of junit that used assert rather than assertTrue.

    In the hope of saving others pain and as a little Google bait I'll describe the main issue I had when this was complete. There has been a change in the point releases that has introduced some options for cutting down the size of the logs that cruise produces. The effect on my project was that none of the ant output from the build was written to the console during the build cycle. Whilst this isn't a major problem, our build process is fairly complex and the clean build running all tests/deploying the application takes around an hour - which is a very long time to take on faith that everything is going well. It is especially frustrating if you are tinkering with the build file itself.The good news is that although this is the default behaviour it can be changed by altering the antbuilder tag.

    i.e. change

    <ant buildfile="mybuilder.xml" target="cruisebuild" multiple="2"/>


    <ant buildfile="mybuilder.xml" target="cruisebuild" multiple="2" useLogger="false"/>

    Thursday, March 27, 2003

    Got News?

    I've been playing catchup with RSS technology recently. Whilst playing around with feed generation/consupmption I found NewsMonster aggregation tool.

    It integrates into the Mozilla sidebar mechanism, when asked to aggregate channels it launches a Java process via Web-Start (although this is in the process of being replaced) to pull down article summaries etc. With current events its very useful to be able to get the sets of headlines from multiple news sites at once. It also allows content extraction down to PDA style devices although I've not spent time with this yet. The author also has some really cool plans for building a ratings/reputation system - its already a useful tool and the future looks very interesting.

    Kevin Burton the author has posted an interesting article about the project on infoanarchy.

    Sunday, March 23, 2003

    Getting punch working on a Zaurus

    As threatened earlier I'm writing up my experiences on how to get a midp applicaiton called Punch up and running

    on the Zaurus. If you haven't seen Punch before its well worth a look, it is a time management application that simply allows you to "punch" in and out of projects. At the end of a week you can get elapsed hours on the projects you are working on. I find it extremely useful for sorting out my weekly timesheets, so getting it working on the Zaurus was a priority for me.

    The Java development environment provided with the Zaurus is Personal Java as oppposed to MIDP, so the first step was to get a working MIDP environment

    running. Step forward Me4Se a library that provides exactly what we need i.e. an environment capable of running Midlets under Personal Java.

    The first was to test running punch on my laptop under that environment. the bad news was that I got instant errors to do with persisting information. After

    having a trace through the source and a word with Richard it turned out that this is a bug in Me4Se which he has reported. There is a simple work-around of creating the
    directories that will be needed at run-time which I will come back too later.

    Now I had a working version on my laptop, it was time to get a package together that would run on the Zaurus. I don't pretend to fully understand the full

    package mechanism for ipk files, but I've managed to get something working after doing the following steps.

    You need a file structure like the following :














    The control file contains the following information :

    Package: Punch

    Installed-Size: 146k

    Filename: ./punch-cvm_1.0_arm.ipk

    Version: 1.0

    Architecture: Arm

    Maintainer: Paul Goulbourn

    Description: Puch Timekeeping Application

    Section: Java

    This file simply details what the application itself is/who maintains it etc.

    The punch.desktop file simply contains a description of how the application is presented in the Zaurus and how to launch it i.e.

    [Desktop Entry]

    Comment=Java Punch Application




    The remaining file I needed to create was the shell script to launch the file :


    $QPEDIR/bin/evm -Xprogress:2900 -XappName=$0 -cp \ /home/QtPalmtop/java/punch.jar:/home/QtPalmtop/java/ \ -Drms.dir=/home/root/Documents/rms org.me4se.MIDletRunner \ net.sourceforge.punch.midp.PunchClockMIDLet

    evm is the Java runtime environment for the Zaurus, and rms.dir is the location that the Me4Se environment uses to store data.

    The work-around discussed above comes into play here - You need to manually create the directories that the midplet uses to do this ensure that

    /home/root/Documents/rms/Sys and /home/root/Documents/Project exist on the target Zaurus.

    Now all we need to do is turn this directory structure into our ipk :

    [c:\documents and settings\pgoulbou\desktop\punch\ipk]tar cvf control.tar ./control


    [c:\documents and settings\pgoulbou\desktop\punch\ipk]dos2unix .\home\QTPalmtop\bin\

    [c:\documents and settings\pgoulbou\desktop\punch\ipk]tar cvf data.tar ./home













    [c:\documents and settings\pgoulbou\desktop\punch\ipk]gzip control.tar

    [c:\documents and settings\pgoulbou\desktop\punch\ipk]gzip data.tar

    [c:\documents and settings\pgoulbou\desktop\punch\ipk]tar cvf punch.tgz ./control.tar.gz


    [c:\documents and settings\pgoulbou\desktop\punch\ipk]tar cvf punch.tgz ./control.tar.gz ./data.tar.gz



    [c:\documents and settings\pgoulbou\desktop\punch\ipk]gzip punch.tgz

    [c:\documents and settings\pgoulbou\desktop\punch\ipk]move punch.tgz punch.tar

    C:\Documents and Settings\pgoulbou\Desktop\punch\ipk\punch.tgz -> C:\Documents and Settings\pgoulbou\Desktop\punch\ipk\punch.tar

    1 file moved

    [c:\documents and settings\pgoulbou\desktop\punch\ipk]gzip punch.tar

    [c:\documents and settings\pgoulbou\desktop\punch\ipk]move punch.tar.gz punch-cvm_1.0_arm.ipk

    C:\Documents and Settings\pgoulbou\Desktop\punch\ipk\punch.tar.gz -> C:\Documents and Settings\pgoulbou\Desktop\punch\ipk\punch-cvm_1.0_arm.ipk

    1 file moved

    This leaves us with an ipk file which can be installed directly onto a Zaurus. The punch application lives under the Jeode tab and is launched from the punch icon.

    At some point I'd like to spend some time extending the punch project to run in native mode under Personal Java, and I believe Richard is doing some work on the synchronisation of Punch with server side components.

    Sunday, March 16, 2003

    It Works - update

    I lied - looks like blogger doesn't like opera for functions like delete!
    It Works

    I've been asked if the zaurus works with the blogger site. Well the proof is in the posting! Seriously though, it does work but the two thumb keyboard means that its a little painful.
    Gadget Time

    Zaurus PDA
    My Palm V has finally become unusable - the internal rechargable battery seems to have a life of less than a day, so I've been hunting for a replacement. After a lot of research I've ended up getting a Sharp Zaurus 5500 along with a Socket low power CF card.

    I spent a long time lusting after the Sony/Ericsson P800 but the lack of any 802.11b card or flat rate affordable GPRS bundles in the uk finally put me off. Sharp are releasing an improved version of the Zaurus (5600) in the Asian and US market at the end of March so I decided to pick up the current version at a bargin price.

    My first impressions have been very good. Getting the wireless card working was trivial, and the supplied version of Opera is fine for casual browsing. I've found the ability to drop down to the linux shell to use familiar tools like ifconfig useful for getting home/office connectivity sorted out very helpful.

    The built in software seems OK, maybe a little less intuative than the palm. However the inclusion of Personal Java gives me a development platform where I can "scratch any itch" with any missing functionality. I've already had some success getting the MIDP application Punch up and running for project time management. I'll write up how I created a deployable package to do this at a later date.

    Saturday, February 22, 2003

    Super Cool?

    Lian Li PC60 Aluminium Case
    I finally get around to updating the PC my wife and daughter use in the office this week. After a lot of deliberation I picked up a cheap (�125) bundle of motherboard/fan/Athlon 2100+ from Maplin Electronics along with a Lian-Li PC-60 aluminum case.

    I'm really impressed by the case, it has 4 built in fans but I've only needed to connect two of them to keep the temperature stable. The fans are thermostatically controlled and it means the PC is almost silent. To put this into perspective the fan on the graphics card in the PC I work on is louder than the entire system, and I've had to press the eject button on the cd-drive to see if the system is even powered up.

    Saturday, February 15, 2003

    Book Review - High Society

    High Society Book Cover

    I've just finished reading High Society by Ben Elton. It is a novel exploring the full legalisation of drugs from differing points of view.

    It isn't a laugh-out-loud novel like Popcorn was, but you remain interested in the characters development throughout the book. As with his previous work it is immensely topical and is a positive addition to the debate. I found it an entertaining read and it certainly made me think about what is politically a taboo subject.

    Friday, February 14, 2003

    More On Test Trauma

    Well it turns out that the latka integration with cruise control wasn't so straightforward after all. Whilst everything runs fine from a commandline version of ant life is not so straightforward in the version of cruisecontrol we are using. The issue boils down to the fact that our current version of cruisecontrol is based upon ant 1.4, and the latka environment uses 1.5. I've tried installing ant 1.5 into cruise control, but then I fell fowl of some differences in logging which meant I got no output from cruisecontrol. looks like its time to upgrade to cruise-control 2.0.2 which is based upon ant 1.5.1 which should solve the issue.

    Saturday, February 01, 2003

    Test Trauma
    All the development done on the projects I'm involved with at the moment run through the cruisecontrol system for continuos integration. I'll provide more of the details on this at some point in the future, but put simply this system means that as soon as a developer commits a change into cvs, our ant build is automatically run on the changes. Our build consists of several phases including:-

  • checking the source changes meet our rules via checkstyle
  • the compilation/javadoc phase
  • Junit tests on the undeployed code
  • deployment of code
  • more Junit tests on the deployed ejbs

  • We have also been performing adhoc tests on the running application with JMeter. The problem we have had up until now has been integratign these web functional tests into the build process.i.e. simulating a user walking through the site with some validation processes like page content, timings etc. The good news is that a colleague showed me latka, which is exactly what we needed. The tests are simply defined via an xml control file. The test file contruction is straightforward enough to hand off to a non-coder for existing stuff (the rule now is that a new servlet/jsp page created by a developer should have these tests as well). These tests run within the JUnit framework and therefore integrate into the build perfectly after deployment.

    Things get better though, work is progressing on a tool that can convert recorded JMeter tests and convert them directly into Latka scripts. We are still at an early stage with this, but it really looks like a powerful tool.

    Monday, January 27, 2003

    JBoss Help
    I got some useful feedback on the questions about seeing what is going on under the bonnet in JBoss. Apparently I'm not missing anything and the solution is to roll your own cache/pool implementation that provides some statistics. Sounds like this is my chance to put something back into the JBoss project. As an interim solution its also been suggested to me to add a simple static to the classes I want to monitor and then maintain/log a count through the ejbCreate,ejbRemove,ejbActivate,ejbPassivate methods.

    Saturday, January 25, 2003

    Looking under the bonnet in JBoss
    I've recently moved an application over to JBoss as part of replacing a Corba application. Everything is going well and performing fine, but I've one nagging question. Other EJB servers I've used have provided some kind of interface into the container that tells you how many beans of a particular type are active, the usage levels of the database pools etc. I'm aware of the /jmx-console/ support for viewing the services through JMX, but I've not been able to find this information. If you know better then let me know.
    Wrong Day to Start
    I finally choose to post some content....and then suddenly half the root nameservers fall off the internet. Info at Slashdot, maybe someone is trying to tell me something.

    I guess I should explain why I've finally decided to maintain a blog. To be honest I've always been a little sceptical about blogging, but recently I've started finding useful information in other peoples blogs. As an attempt to put something back I'll try to write a few words on what I've been up to. If you find anything interesting contact me.