Michael Nygard.com

About Michael

I've joined the amazing team at Relevance, Inc.. At Relevance, we deliver software solutions to help you grow your business. Want to know what we're about? Take a look at our blog, or listen to the ThinkRelevance podcast.

I've been a professional programmer and architect for over 15 years. In that time, I've delivered systems to the U. S. Government, the military, banking, finance, agriculture, and retail industries. Along the way, I have shared my painfully-won experience by mentoring, writing, and speaking.

My work has spanned domains as diverse as B2B exchanges, retail commerce sites, travel and leisure sites, an information brokerage, and applications for the military and intelligence communities.

My Books

Books In My Library

Recent Bookmarks

Release It!

Release It!

Release It! Design and Deploy Production-Ready Software comes from my extensive experience living with systems in production. I've often been the one to get woken up at three in the morning when some supposedly 24x7 system goes down.

Other books on design and architecture only tell you how to meet functional requirements. They help your software pass QA. In "Release It!", I'll show you how to make your software production ready. If you don't want to wear an electronic leash, you need this book.


Some selected reviews:

Steve Vinoski says Release It! Is Truly Excellent.

Ted Neward calls Release It a book every developer must read.

Java Ranch gives it a perfect 10.

The venerable German magazine "c't" reviewed it over the summer. The review is paid content, but I'm told it was favorable.


Agile Operations in the Enterprise

Agile Operations and DevOps offer huge benefits to organizations of all size. It seems much easier to accomplish in startups than large enterprises, though. In this article, I examine some of the challenges presented by moving to agile operations in an established, large organization.

Agile, Architecture and the 5am Production Problem

This problem vexed me for several days. In this article, I ask whether we need to find new practices, consistent with agile values, that would let us prevent this type of problem. While the problem itself didn't arise from using agile methods---in fact, it was a distinctly non-agile project---I do wonder whether we can find an agile, pragmatic approach to architecture that would let us avoid this type of headache without incurring BAUF (Big Architecture Up Front).

Master Merlin's New I/O Classes

An introduction to the NIO classes added to Java 1.4 (which was code-named "Merlin"). A fun piece to write and an early source of information about this important package.

The "selector" architecture of asynchronous I/O in NIO was based on earlier UNIX constructs that I had used to multiplex keyboard, network, and inter-process communication in a single-threaded console application. This article let me dust off some of those old memories, while also appreciating how far we've come... that stuff was hard to do in straight UNIX/C programming!

The code in this article was written against the beta release of NIO. About three days after this article hit the front page, Sun released the GA version and broke all the sample code.

Test Infect Your Enterprise JavaBeans

This article presents a technique for what we now call in-container testing of EJBs, using a servlet to trigger the execution of unit tests.

This approach to unit testing worked for a time. Since J2EE 1.2, however, the separation of contexts between the container and the individual applications makes the specific configuration in the article ineffective.

Furthermore, I now believe that in-container testing is not a good approach. First, it requires too much startup and shutdown time, which makes you likely to run the tests less often. Second, it encourages context-dependence in both the unit tests and in the objects being tested.

From TheFeature.com

Mobile Devices Are Mobile Code
Interaction, Usability, and the Dancing Elephant
Credibility in Cooltown
Data Swarms
Who Owns the Digital You?

From WirelessDevNet.com

Are We There Yet?
The Winter of Their Content
Digital Divergence
Java 2 Micro Edition