Skip to main content

John Ferguson Smart

John is a freelance consultant specialising in Enterprise Java, Web Development, and Open Source technologies, currently based in Wellington, New Zealand. Well known in the Java community for his many published articles, John helps organisations to optimize their Java development processes and infrastructures and provides training and mentoring in open source technologies, SDLC tools, and agile development processes. John is principal consultant at Wakaleo Consulting, a company that provides consulting, training and mentoring services in Enterprise Java and Agile Development.

 

Articles

If you use Maven, or even if you just use Maven repositories for your dependency management, you should be using a Maven Repository Manager.
If you are a NetBeans user working with Maven, you're in luck with NetBeans 6.7.1! This latest release comes with a swathe of cool features to help you work with your Maven projects pretty much out-of-the-box.
Grails is an excellent, highly productive development framework that positively encourages good development and testing practices. This article shows how to set up a Continuous Integration build job to compile and test your Grails application in Hudson, for automated continuous integration.
Want to provide maps in your web application? The Google Maps API is straightforward to call from Java, and with an Ajax-ian approach, you can make it extra user-friendly. John Ferguson Smart shows you how to combine these approaches.
Jabber is a popular and widely supported XML-based API for exchanging instant messages. You could compose the messages by hand, but there's an alternative. John Ferguson Smart introduces the Smack API, which makes it easy to use Jabber services from Java.
Standards are so much easier to adhere to when your tools do it for you. Thanks to JAX-WS and its implementation in application servers like GlassFish, you can write web services as plain ol' Java objects, just by adding a few annotations. John Ferguson Smart shows how it's done.
The best way to integrate in a hurry is to have been doing it all along. This practice of continuous integration is greatly helped by automated tools to check out and build your team's code on a more or less constant basis. Apache Continuum offers a free and open source tool to do continuous...
Oftentimes, your new code replaces an older system whose data must be migrated to the new system. This isn't a process that gets a lot of thought, but John Ferguson Smart says it probably should. In this article, he shows how an iterative, test-driven approach can save you a lot of headaches...

Weblogs

Findbugs is one of my favorite static analysis tools. It's goal in life is to enables you to isolate and correct dangerous Java bugs in your code,...

Schemaspy is a little known but very useful database analysis tool that generates an interactive graphical representation of your database...

Easyb is a very cool way to test your Java application in BDD-style with Java. But wouldn't it be nice to be able to integrate your BDD stories into your Maven build process? The good news is,...

Maven archetypes are great. But remember how painful it is to create a new Maven project from the command line, with all those command-line options to remember? Enough to put off even the most...

After the Java Emerging Technologies Conference
2008 (JET 2008)
in Auckland, I will be giving a talk on Behavior Driven...

Hibernate 3 annotations are a great way to persist your domain model in a database backend. It's quite easy to have Hibernate generate or update the database schema as required, and not have to...

Unit testing is generally considered to be a key part of software development. But how is unit testing really practiced in the industry at the moment? Do you test your code at all? Do you write...

On September 17th I will be giving a talk on easyb, a new and very hip behavior driven development framework for Java, at the...

My friend Paul Duvall, principal author of that great Continuous Integration reference...

Behaviour-Driven Development, or BDD, is considered by many to be a natural extention of Test-Driven Development (or TDD). Test-Driven Development is about designing software with the tests in...

Traditionnally, there are two fundamental approaches when it comes to organising your development teams: the Architecture-Oriented approach and the Feature-Oriented approach. The first priviledges...

People often confuse performance and scalability testing, but they are actually quite different activities. Performance testing involves ensuring that your application responds to requests within...

The classic difference between integration and unit testing is that unit tests run in isolation, or near-isolation. Using an in-memory database for DAO unit tests. Using mocked-out components for...

For those who missed out on the first Java Power Tools Bootcamp in Wellington, another bootcamp has been scheduled in...

This being my first JavaOne, I wanted to share a few photos to give readers some general impressions.

JavaOne takes place in the Moscone center in downtown San Francisco.

...