Development/Testing Efficiency and using Selenium Firefox plugin

One of the snippets of advice in the Neal Ford's Productive Programmer (reviewed here) was to use the Selenium firefox plugin to speed up repetative testing processes

To paraphrase Neal Ford....

So imagine a wizard like set of screens and you are testing step 3, you have to repeatedly fillout the forms for steps 1 and 2 to see the latest change you have made for step3.
With each change and test you think - 'ah just one more change and I'll be done....' ten changes later you are still working on this!

I found myself in just such a loop and eventually downloaded and installed the Selenium plugin to firefox and created a macro to run through steps 1 and 2.

No setup is required. You will find the plugin under the tools menu and it opens a popup window already in 'record' mode for the current site you have open. Go through the screens as normal and Selenium records all clicks and key strokes.

Next time you need to test just click on play in the Selenium popup window.

This was a really big time saver - I wish I had done it right from the start!

Migrating to SVN 1.5 on Linux from SVN older version on Windows

This is coming up for us and just wondered if anyone out there has already done this and has any pointers, gotchas, tips, tricks or anything else to contribute to our happiness.

I understand that SVN 1.5 is a fairly major release which incorporates new merging facilities.

We will also need to update the eclipse plugin 'subclipse' that we use to a compatible version. I have started looking at the version we need but think just the latest (1.4.5) will work best. Currently we are using 1.2.4 because we are pointing to our pre 1.5 repository.

Book Recommendation - The Productive Programmer, Neal Ford , O'Reilly [ISBN: 978-0-596-51978-0]

This book is an easy to read set of hints tips tools and theory to make you as productive as possible in your development work.
It is in two parts.

Part 1 highlights a whole series of tools (the 'Mechanics') to make you more productive.

Part 2 focus on various practices to make you more productive.

Neal uses Windows, OSX, and other Linux flavours in his day to day work so he mentions tools on all 3, or sometimes just hidden features of the OS itself. Some stuff I already knew but I found a wealth of goodies which I have been trying out since.

He structures these tips around the headings of

  • Acceleration - doing stuff quicker
  • Focus - doing stuff without distractions
  • Automation - getting the computer to do the hard work
  • Canonicality - making sure we have just one copy of things
The Canonical section was particularly interesting with good examples from his experience (which I could relate to) of times when not having central, common copies of certain resources can trip up and delay or damage development. Source control is the obvious example, but Neal has several more.

Part two of the book looks less at the Mechanics and more at how you work; the 'Practice' of being a productive programmer. Again some of his topics were familiar to me already, such as Test Driven Development, but most had new slants.

He ends this section with some interesting views on how programming languages are developing for the future. Neal sees more domain specific languages and that these will be used in combinations to solve problems.

The book has is own wiki at http://productiveprogrammer.com for you to contribute or discuss the topics raised.

Every development team should read this!

SVN plugin subclipse: implementation of 'replace'

If you are working on a file in your project in eclipse and for some reason you need to change the contents of that file to be the contents of the same file but a different revision within the repository, then you would think that the Replace with, Branch/Tag or Revision would do what you need.

I find however that the implementation of this function is not quite as expected (and not the same as when using the same function under CVS).

I would expect that the contents of the current revision are replaced with those of the selected revision (just as though you have made these changes by manual editing) and that as a result this file now needs to be committed.

Now this is exactly what happens if you choose the Revison option - that is a revision in the same branch. You are shown a list of revisions and if you right click you can 'Get revision' or 'Get contents' - Get contents replaces your current files contents withe the selected revision contents and leaves your local copy in need of a commit.

If you select a revision from another Branch/Tag then a 'switch' command is run and your local copy is switched to that branch. You will notice that the SVN icon changes to blue. If you team, update this project, your file switches back to the one on your own branch.

Does anyone else think this behavior is incorrect?

Railo Keynote at Scotch on the Rocks

Gert announces that Railo joins JBoss.org and therefore Railo is fully open source....

For a proper analysis of this announcement see my colleague Peter's post here

SVN eclipse plugins. Subclipse and Subversive. Conclusion

As I've blogged here before, there are two SVN plugins available for eclipse, subclipse or subversive. We started using subclipse because on balance it seemed to have most supporters. So we used that for a few weeks.
I should explain that we use branches extensively in the development process we use and so we also have to merge these branches back to the trunk. The merging facility of our chosen plugin becomes perhaps one of the most vital parts since this is the trickiest operation and you need all the help you can get!
Using CVS (as we did before SVN) the CVS process within eclipse (I won't say plugin because it is part of the core eclipse build) creates a tag of root_branchname when you create the branch and then when you come to merge defaults to merging from that tag to the current HEAD revision. In the currently, SVN requires you to identify the revision number prior to the root of the branch as the source of the merge. This is more fiddly than I would like, with no defaults and every chance of an inexperienced developer getting something wrong.
Finding the source revision was not always straight forward on some machines we had to use tortoisesvn to look this up as subclipse seemed to be unable to list it correctly. Not only do you have to select the source revision in the branch but also the target revision in the trunk. The target revision is 99.9% going to be the HEAD revision of the TRUNK but this is not the default so you have to remember to set that as well. The merge is always carried out, even when there is a conflict. In CVS you had the chance to review and edit conflicts prior to the merge being done.
These issues made me take a second look at subversive. To start with it seemed a better plugin. You can always find the source revision although in principle the same issues of having to get this right remain. When you merge the merge is not carried out rather you get to review each change and copy these over one by one and then mark each merged file using 'mark as merged'. For small merges this works well, but for larger ones or for branches that have lived longer (time apart from the trunk) there may be a lot of changes in any given file - some have happened on the branch and some on the trunk. Here a major subversive flaw appears - the conflict editor view does not distinguish which changes have happened on the branch and which are from the trunk. This is vital to a complex merge, since you want to focus on the branch changes and be able to assume that changes already on the trunk are good (reviewed by someone else). Subversive also had some 'features' related to how you merged folder trees you had to select the folders beneath the top folder rather than the the top folder else it took a very long time to merge. These issues finally drove me back to subclipse. I'm more used to the selection of revision numbers now and my clean install always seems to be able to list the revisions clearly. Best of all the conflict editor clearly colours the changes black for changes on the trunk, blue for branch changes and red for branch changes that conflict.
The next release of SVN promises better merge control from the repository so these issues may all vanish.

SVN - using apache webdav memory leak

We have been using SVN for the last few months, now having been CVS users for about 3 years before that. While SVN is a sensible choice for the future, we are finding a few weaknesses in the current implementation and I will be posting details of these over the next few days.

The first issue is that running apache webdav on windows server 2003 we find that it slowly consumes more and more memory until it runs very slowly and eventually stops other processes running correctly.

We have reduced the thread limit in the hope that it will force apache to create a new process once this limit is reached but it does not seem to do that.

We continue the search for a good solution to this...

Senior CF Developer Wanted — Croydon, Surrey, UK

I am the System Manager working for the company that is hiring below and thought an advert on my blog would be a great way to reach a large group of CF developers

Senior CF Developer wanted — Croydon, Surrey, UK

Who are we?

We are a well established, international, multi-million pound group of companies, working mainly in the Business Travel sector. We have offices around the world. This position is based at our offices in Croydon, Surrey in the UK. You can check out a couple of the websites of the companies within the group iapa.com, prioritypass.com

What is the role?

We run a number of membership systems with a combined global membership in excess of 1 million. We run public websites and distributed backoffice systems all written in Coldfusion. Currently these run on CF7 (moving to CF8 after the first updater :-). Some of our code base is fairly new and some a few years old and in need of a re-write. We are currently investing more heavily in our systems so that we can deliver a more professional, more efficient and more cost effective service to the business. To facilitate this we have a new IT Solutions Director in place and have recruited a project manager dedicated to the IT department. We are now looking for 2 senior CF developers who can bring industry best practice to our operation and help us to become a leading CF development site.

This is a great opportunity to influence the way our CF development department grows and develops.

What do we offer?

  • A competitive salary
  • Medical Insurance
  • Contributory pension scheme
  • Life assurance
  • 25 days holiday
  • Corporate discount at Virgin Health Clubs
  • Discounted travel insurance
  • Friendly working environment and a great team!

What skills do you need?

  • A passion for developing great code
  • Demonstrable CF coding skills
  • Demonstrable in depth knowledge of the CF language
  • Strong HTML, AJAX, JavaScript and CSS knowledge
  • Strong SQL and general RDBMS knowledge
  • Experience of the full development life cycle
  • A passion for new technology and applying it to best effect.
  • An understanding of development methodologies processes and best practice.

What skills would be a bonus?

  • Fusebox5 framework
  • SVN
  • CFEclipse
  • JIRA (issue tracking system)
  • Selenium (automated testing tool)

How to Apply

If you are interested and live within a reasonable commute to Croydon and are eligible to work in the UK then please forward your CV including full contact details to michael [dot] traher [at] iapa [dot] co [dot] uk, detailing your current salary, your desired salary and your availability / notice period.

Switching from CVS to SVN

We are in the process of switching from CVS to SVN as our source control system. It is nearly four years ago that we first started using CVS and it has served us well. The main two reasons for changing are

  • that SVN is an active project that continues to improve and be developed
  • that using svn with apache allows much better/granular/easy to administer access control than CVS


  • There does appear to be a downside and that is simply that the Eclipse plugins are just not quite as sweet as the integrated CVS interface that comes bundled with Eclipse. As I get to grips with it more I will post the main issues here and to the appropriate mailing lists. At least these are active projects which can only improve.

Shame on Adobe for PDF support in CF

We have a system that has to produce fairly complex personalized documents as output. We produce these as HTML, with the help of CFML of course. We found however that printing these direct could not really be handled by the combination of browser and printer especially as we had different paper sizes and printers to deal with. So we decided to convert the output to PDF and let Acrobat deal with the printing. The actual printing works well and is faster and easier to manage. The problem comes in converting the HTML to PDF. We are running on the latest patched version of CFMX7, but would have upgraded to 8 if this had solved the problems. What we found was that CFDOCUMENT did not correctly honour the CSS in our documents in fact it seemed buggy adding spaces at random to the output. We also tried a tag called CFX_PDF, but this also lacks sufficient CSS support. After trying several tools we settled on ActivePDF which seems to have very good and complete CSS support. Importantly ActivePDF was the only product that properly honoured CSS page breaks. Without this, producing multi-page documents from HTML on different printers on both A4 and Letter size paper is virtually impossible. It seems a great shame that Adobe has NOT produced the best tool for handling PDF in CF. I look forward to more investment from Adobe in this area for future releases.

More Entries

BlogCFC was created by Raymond Camden. This blog is running version 5.9.003. Contact Blog Owner