Posts in category 'tools'


Faster Builds via Concurrency

Recently I have been looking for ways to make a Java build run faster. This is something I seem to do at least once a year, typically as a result of the application’s production code base and automated test suite both growing in size over time. The build had previously already been split into multiple […]

Software Documentation Templates

I am a believer in minimizing software documentation that lives outside the code. This does not, however, mean no documentation. There are a number of reasons why documentation can be useful, especially for larger organizations: Documentation is more effective than code at communicating high-level or cross-cutting design and operational concerns. Larger organizations or distributed organizations […]

Avoiding Caching To Improve Hibernate Performance

I was recently doing some performance tuning and made the surprising discovery that doing less caching in Hibernate actually improved performance in a particular scenario. When I discovered the problem this seemed very counter-intuitive. In fact, my original design maximized the use of caching in order to improve performance, but the opposite happened in practice. […]

The Five Commandments of Version Control

Effective use of version control is a fundamental development practice, especially if there is more than one person working on the same code base. Below are the standard rules I use for the proper use of version control in the style of biblical old testament commandments. I like imagining an authoritative voice booming these commandments […]

Using Ivy to Manage Build Dependencies

Ivy is a tool for managing build dependencies within the Ant build tool. In this article I share my experiences using Ivy and provide recommendations on what to do and not do. This article is not a tutorial on using Ivy: for that see the Ivy documentation. Before getting into the specifics of Ivy, the […]

Why You Should Be Using FindBugs

Build automation has been the theme of my recent learning activities, so when I came across multiple positive references to a tool called FindBugs I decided to give it a try. My conclusion: FindBugs is worth using on all Java projects. Read below for the details. FindBugs is a Java static analysis tool that scans […]

Resume Calculator

I have added a new software utility called Resume Calculator to my Software page. Resume Calculator reads resumes in XML format and calculates the total months and years of experience across specified resume entries. This is useful for responding to formal requests for proposal that require named resources to specify years of experience across various […]

How to Add Logging to Ant Builds

The Apache Ant build tool is a great aid in automating builds and deployments. When the build fails, however, diagnosing the problem can be painful – especially if it only occurs intermittently. Logging details of the Ant build can therefore be useful. By default Ant writes informational messages to the console. While this is usually […]

The Power of Search

My appreciation of the power of search, particularly for developing software, has grown over the last few years. The wise use of search can significantly increase your effectiveness as a developer, acting like an amplifier or expansion unit for your brain. Search allows you to navigate faster, remember easier, and know more. I spend most […]

Automated Deploys using SSH and Ant

I am a big proponent of automating the building and deployment of application code: this minimizes the chance of human error and ensures a consistent process is followed. Last year I wrote an article about automatically deploying code via FTP using the Java-based Apache Ant build tool. Since then I have needed to deploy to […]

Version Information WordPress Plugin

I have added a new WordPress plugin called Version Information to my Software page. This plugin displays version and configuration information for WordPress, PHP, MySQL, and the web server. A summary is displayed in the Site Admin dashboard and more details are displayed under a Version Information page under the Site Admin Plugins menu This […]

EnvGen Version 1.1 Available

I have just released version 1.1 of EnvGen. It is available for download from my Software page. I have fixed a defect preventing it from working under Java version 1.4, and I have added support for comments and blank lines to the properties CSV spreadsheet file. EnvGen is an Ant task for generating different versions […]

Development Tools Should Use Text Files

Here is a request to all vendors of development tools: please persist code to text files. Over the last few years, I have encountered an alarming number of tools that do not use text files. Some examples are: A reporting tool that stores report definitions as binary files. A data modeling tool that persists models […]

EnvGen – the Environment-Specific File Generator

I have added a new software utility called EnvGen to my Software page. EnvGen is an Ant task for generating different versions of the same file parameterized for different environments (i.e. development, test, and production). File generation is done using FreeMarker, a template engine with a full-featured templating language. You specify environment-specific properties in a […]

Automating FTP with ANT

This article describes how to automate the transfer of files between servers via FTP using the Java-based ANT build tool. I have been using ANT to do automated FTP for a number of years now, and will share some of the lessons and limitations I have discovered. ANT provides a FTP task. It requires the […]

Assembling a Free Development Tool Set

In my article on personal learning by doing, I wrote about the importance of personal development projects for professional development and mentioned that I maintain a complete development environment at home assembled from free, open-source tools. In this article I present the tools that I use and find the most valuable, focused particularly on Java […]

Tips for Using Log4j

Log4j is a logging framework for Java, part of Apache’s suite of logging frameworks for various languages. While using log4j on various applications, I have had to figure out how to do certain things that were not clearly documented, possibly because the full manual for log4j is only available commercially. Before showing what I have […]

My Experience with Subversion

Subversion is open source version control software that has significantly gained in popularity over the last few years as a replacement for CVS. I have been using Subversion for a while for my personal projects at home. It has generally worked well, but I have encountered a few difficulties along the way. One reason I […]

Running WordPress 2.0 under IIS

WordPress is the blogging / content management software I use to run this site. WordPress was designed to run under the Apache web server. However, the hosting company for my website uses Microsoft’s IIS web server to serve most content, including PHP files which WordPress uses. Setting up WordPress to work under IIS was non-trivial, […]