Posts made in 2008

« Older Posts   

Using the “Next Step” to Improve Your Focus and Productivity

I have discovered a powerful technique for improving my focus and productivity on work tasks that I call the Next Step. I have been consistently using this technique for a while now and I am quite pleased with its benefits. How Does it Work? The basic concept is simple: clearly identify the next task you […]

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 […]

Simple XML Parsing using JAXB

I recently needed to parse a XML file using Java for a utility I was writing. A couple of years ago I used dom4j to parse XML (and wrote an article about it). I figured there had to be a more modern approach, similar to how Hibernate 3.0 can map POJOs (plain old Java objects) […]

Continuous Improvement Experiments

If, like me, you believe strongly in championing continuous improvement then an obvious question is how exactly can continuous improvement be implemented? One answer I have come up with is something I call continuous improvement experiments – CIE for short. What is a Continuous Improvement Experiment? The idea is simple: a CIE provides guidance via […]

Becoming a Champion of Continuous Improvement

I am pleased to announce that I am a Champion of Continuous Improvement. The story of how I became such a champion starts a few months ago when I spent some time reflecting on my mission / purpose / vision as a professional software developer and architect. I was inspired to do so by two […]

The Most Effective Method of Quality Assurance

The goal of quality assurance (QA) activities is to ensure that a particular work product is of sufficient quality. Work product most typically refers to the software making up the system, but can also be applied to related documentation (requirements or design) or even processes. Two common methods for doing QA are reviews and testing, […]

Cyclic Incremental Growth in Software Systems

I recently read an interesting research paper titled Metrics and Laws of Software Evolution – The Nineties View by Lehman et al in the 1997 proceedings of the Software Metrics Symposium that discusses eight laws of software evolution. One set of graphs within the paper jumped out at me: they show the incremental growth of two systems over a series of releases. The graphs shared a common pattern: releases with higher than average incremental growth tended to alternate with one or more releases with lower than average growth. What are the implications of this commonly observed behavior for developing and using software? How can we use this pattern to our advantage? Read on to see my answers to these questions.

Our Mission as Software Developers

What is your mission as a software developer? What motivates you? I recently reflected on my values and goals as a software developer and ended up creating my own personal mission statement. I feel that one of the clauses in my mission is broadly applicable – certainly to my team and department at work, and […]

Personal Development for Software Developers

I am a big believer in the value of personal development, especially for software developers. I have already written a a number of articles relating to personal development, most of which focus more on professional development for your career. The full scope of personal development, however, is much broader. It is applicable to all aspects […]

Time Reporter Version 1.1 Available

I have just released version 1.1 of my Time Reporter utility. It is available for download from my Software page. The significant changes in this release are: I added support for time adjustments by which you can explicitly specify an amount of time (positive or negative) to add to a task. I improved handling of […]

Celebrating 100 Posts

This is post number 100 on my website! To celebrate I am going to take a look back at my previous posts. My prior posts add up to approximately 70,000 words or 250 pages – that is the size of a book! At approximately one hour per page that equals approximately six weeks of full-time […]

Exposing Mutable Objects as Public Properties

I recently had an interesting design discussion with a coworker in which we discussed the pros and cons of exposing mutable objects as public properties of a class. This article provides my thoughts on the subject. An immutable class (or object) is one whose state cannot be changed once the instance is constructed. Mutable objects […]

Version Information WordPress Plugin Version 1.1 Available

I have just released version 1.1 of my Version Information WordPress plugin. It is available for download from my Software page. For this release I made updates for WordPress 2.5 and 2.6, primarily around the display of information.

The Source Code is the Design

I first came across the thought-provoking article What Is Software Design? by Jack Reeves as an appendix titled “The Source Code Is the Design” in the book Agile Software Development: Principles, Patterns, and Practices The article was written in 1992 so ignore the references to C++ (I mentally translated them to Java) and instead focus […]

Why is Estimating so Difficult?

Working as a software developer offers many challenges ranging from tracking down an elusive defect in third-party software to trying to determine what a client really wants. Perhaps the most difficult challenge, however, is succeeding as an oracle who can accurately divine the future – more commonly referred to as creating an estimate. A layperson […]

Syntax Highlighting on the Web

I have finally added syntax highlighting to my website using Google Code Prettify. My code examples will now be nicely colored based on syntax. Integrated development environments have been doing this for at least ten years. When I was first introduced to syntax highlighting in IDEs I found it a tremendous productivity boost for reading […]

A Love of Learning

I recently attended a convocation ceremony at the University of Alberta for the Faculty of Medicine and Dentistry where I noticed one theme that was emphasized throughout the ceremony: life-long learning. The speakers emphasized that the graduates should strive to remain eternal students, keeping the passion and excitement about learning and their profession that they […]

Assessing Service Oriented Architecture

I have always been skeptical of Service Oriented Architecture (SOA) and web services since they first came on the scene. This was not necessarily a rational skepticism, but was instead more of a visceral response to all the hype. As the years passed by, SOA and web services stuck around and I heard it mentioned […]

Working with Java 5 Annotations

Annotations are a new language feature introduced in Java 5 that allows Java code elements such as classes or methods to be annotated with structured metadata. This metadata can then be used at compile-time or at run-time by other code. Annotations are commonly used to provide configuration information for infrastructure frameworks to provide cross-cutting functionality. […]

Creating Custom Tags Using JSP

Java Server Pages (JSP) is a Java technology for rendering dynamic web pages. Unlike servlets written directly in Java, JSP files contain special markup to identify java or JSP code. The normal (non-markup) text is interpreted as HTML. Early in JSP’s evolution, custom tags were introduced as a way of providing reusable functionality, particularly reusable […]

« Older Posts