Maven Best Practices
Always use the maven-enforcer-plugin Enforce dependency convergence Otherwise it’s possible that you depend on two different jars which both depend on log4j. Which one gets used at compile time depends on a set of rules that you shouldn’t have to remember. They can both (!) get exported as transitive dependencies. Require plugin [...]
How to set up the rxvt terminal for Cygwin
Download and run the Cygwin setup file.
Select Install from Internet.
Enter C:\cygwin as the Root Directory.
When you get to the package list, search for rxvt and click the word skip so that it changes to a version number.
Add any other packages you want. I always install at least these:
git git-completion [...]
How to do Version Numbers
Motivation
Why do we bother with multi-part numbers at all? Why not just use use a single revision number, like version 123? The parts of a version number communicate the magnitude of the change between the two versions. In the case of a library, this translates to how difficult the upgrade will be, which in [...]
Binary and Source Backwards Compatibility
It’s pretty easy to break binary and source compatibility simultaneously. Remove one parameter from a public method or delete a method entirely and no existing code that used the method will compile or run. But how can we break just binary or just source compatibility but not both?
Tabs vs. Spaces
… and why I canโt just let it go.
Whitespace is ignored by the compiler so it’s purely for readability. It’s there for you. Variable names have meaning and describe the intention of code. Similarly, whitespace describes the structure of a program.
Risk Calculator
Run
Launch Risk Calculator
Additional Information
Subversion repository
Javadoc
Old releases
Configuration (dot) files
These are files I used to configure my command line environment, plus the scripts used to generate these pages. I’m always looking to improve my setup so please send me any useful tips.
Ant Timer
The Ant Timer is a plug-in that prints out diagnostic messages when ant targets and tasks take longer than the configured amount of time.
Universal toString()
UniversalToString is a java class that prints out the internal state of an object using reflection. The UniversalToString class builds a String by recursively traversing the contents of an object and printing out the names, types, and values of all of its fields.