177 symposiums and 27,750 attendees since 2002

Michael Nygard

Agile technology leader and dynamicist

Michael Nygard
Michael strives to raise the bar and ease the pain for developers across the country. He shares his passion and energy for improvement with everyone he meets, sometimes even with their permission. Michael has spent the better part of 20 years learning what it means to be a professional programmer who cares about art, quality, and craft. He's always ready to spend time with other developers who are fully engaged and devoted to their work--the "wide awake" developers. On the flip side, he cannot abide apathy or wasted potential.

Michael has been a professional programmer and architect for nearly 20 years. During that time, he has delivered running systems to the U. S. Government, the military, banking, finance, agriculture, and retail industries. More often than not, Michael has lived with the systems he built. This experience with the real world of operations changed his views about software architecture and development forever.

He worked through the birth and infancy of a Tier 1 retail site and has often served as "roving troubleshooter" for other online businesses. These experiences give him a unique perspective on building software for high performance and high reliability in the face of an actively hostile environment.

Most recently, Michael wrote "Release It! Design and Deploy Production-Ready Software", a book that realizes many of his thoughts about building software that does more than just pass QA, it survives the real world. Michael previously wrote numerous articles and editorials, spoke at Comdex, and co-authored one of the early Java books.

Blog

Workmen, tools, etc.

Posted Wednesday, May 20, 2009

We've all heard the old saw, "It's a poor workman that blames his tools." Let's think about that for a minute. Does it actual mean that a skilled craftsman can do great more »

Minireview: Beginning Scala

Posted Monday, May 18, 2009

As you can probably tell from my recent posts, I've been learning Scala. I recently dug into another Scala book, Beginning Scala by David Pollak. Beginning Scala is a nice, gentle int more »

Units of Measure in Scala

Posted Thursday, May 7, 2009

Failure to understand or represent units has caused several major disasters, including the costly Ariane 5 disaster in 1996. This is one of those things that DSLs often get right, but mainstream programming languages just ignore. more »

Kudos to Relevance and Clojure

Posted Wednesday, May 6, 2009

It's been a while since I blogged anything, mainly because most of my work lately has either been mind-numbing corporate stuff, or so highly contextualized that it wouldn't be productive to write about. Something came up last wee more »

JAOO Australia in 1 Month

Posted Friday, April 3, 2009

The Australian JAOO conferences are now just one month away. I've wanted to get to Australia for at least ten years now, so I am thrilled to finally get there. I'll be delivering a tutorial on production ready software in both t more »

Quantum Backups

Posted Friday, March 20, 2009

Backups are the only macroscopic system we commonly deal with that exhibits quantum mechanical effects. This is odd enough that I've spent some time getting tangled up in these observations. Until you attempt a restore, a backup set is more »

Update: Sun Cloud API Not the Same as Amazon

Posted Thursday, March 19, 2009

It looks like the early reports that Sun's cloud API would be compatible with AWS resulted from the reporters' exuberance (or mere confusion.) It's actually nicer than Amazon's. It is based on the REST architectural style, with repres more »

Can you make that meeting?

Posted Wednesday, March 18, 2009

I'm convinced that the next great productivity revolution will be de-matrixing the organizations we've just spent ten years slicing and dicing. Yesterday, I ran into a case in point: What are the odds that three people can schedule a mee more »

Amazon as the new Intel

Posted Wednesday, March 18, 2009

Update: Please read this update. The information underlying this post was based on early, somewhat garbled, reports. A brief digression from the unpleasantness more »
Read More Blog Entries »

Presentations

Failures Come In Flavors (part 1)

The typical JEE application does not reach the fabled "five nines" of availability. Far from it. It's more like "double eights". more »

Failures Come In Flavors (part 2)

What can we do about the dismal uptime of typical applications? We are asked to provide "five nines", but only reach 88%, on average. Come learn how to prevent the Stability Antipatterns from biting you. more »

The 90-Minute Startup

Cloud computing is taking the world by storm. Amazon's Web Services, EC2, and S3 provide completely virtual infrastructure, letting startup and existing companies create sites and web applications faster than ever before. In this session, Michael will more »

Failure Comes in Flavors: Part One

The typical JEE application does not reach the fabled "five nines" of availability. Far from it. It's more like "double eights". more »

Failure Comes in Flavors: Part Two

What can we do about the dismal uptime of typical applications? We are asked to provide "five nines", but only reach 88%, on average. Come learn how to prevent the Stability Antipatterns from biting you. more »

Design for Operations

If your software fails in production, nobody will care how great the development project was, or how well the system passed QA. Production operations, the domain of your systems' least-appreciated stakeholders, is where the rubber meets the road. Come l more »

Clouds, Grids, and Fog

Servers, storage, networking, backups... more »

Architect for Scale

Is your system small, medium, large, or super-size? Is traffic on it's way up? Architecture patterns and structures that work at one scale seldom work across all of them. more »

DSLs in Scala: Internal and External

We're no longer working in a single language. Programming today is about both consuming and creating languages. We've all heard a lot about domain specific languages (DSLs). more »

Failures Come In Flavors (part 1)

close

Michael Nygard By Michael Nygard
The typical JEE application does not reach the fabled "five nines" of availability. Far from it. It's more like "double eights". Come see why enterprise applications and web sites are only serving users 88% of the time instead of 99.999%.

Part 1 of 2

The bad news: applications are more complex and error-prone than ever. Site development projects are really enterprise application integration projects in disguise. SOA portends far-flung interdependencies among unreliable services. Failures will spread wider and wider, reaching across your company and even crossing boundaries between companies.

How do monumentally costly failures begin, develop, and spread?

Can they be averted?

Once you hit Release 1.0, your system will be living in the real world. It has to survive everything the messy, noisy real world can throw at it: from flash mobs to Slashdot. Once the public starts beating on your system, it has to survive--without you.

Did you know that just having your database behind a firewall can bring down your system? Ill show you that and many other risks to your system. You will learn the biggest risks to your system and how to counter them with stability design patterns. We'll talk about the best way to define the term "availability" and why the textbooks get it all wrong.

In this session, you will learn why the path to success begins with a failure-oriented mindset. I'll talk about numerous antipatterns that have caused and accelerated millions of dollars worth of system failures. I'll share some of my scars and war stories with you (don't worry, they're all suitable for polite company) in the hopes that you can avoid some of these costly disasters.


Failures Come In Flavors (part 2)

close

Michael Nygard By Michael Nygard
What can we do about the dismal uptime of typical applications? We are asked to provide "five nines", but only reach 88%, on average. Come learn how to prevent the Stability Antipatterns from biting you. Apply these Stability Patterns to contain damage, recover from shocks, and survive disasters.

Part 2 of 2


In part 1, we looked at common sources of system failure: those commonly created structures that exacerbate problems.

Now, we'll take on Stability Patterns that not only stop the antipatterns, but also add resilience to your system. Apply your new failure-oriented mindset to unchain yourself from the pager and save your company from embarrassing--and costly--disasters.

These patterns combat entire classes of failure modes, making your system robust against even unforeseen problems.

Books on design and architecture only tell you how to meet functional requirements. They help your software pass Quality Assurance. But painful experience has shown that "feature complete" is not even close to "production ready." After this talk, you'll be prepared to use your failure-oriented mindset to make your system a success.

The 90-Minute Startup

close

Michael Nygard By Michael Nygard
Cloud computing is taking the world by storm. Amazon's Web Services, EC2, and S3 provide completely virtual infrastructure, letting startup and existing companies create sites and web applications faster than ever before.

In this session, Michael will use cloud computing to create and deploy a fully-functional web site. You will learn how to create and run your own virtual infrastructure in the clouds.

It used to take weeks and months to stand up a new site. You had to buy hardware, rent (or build) space, rack, stack, and cable it, and then you'd finally get to start installing operating systems, databases, and so on.

These days, none of that is necessary. You can run a real business on the net without ever owning anything. Best of all, you can be up and running in a single day.

A day? Trivial you say? OK, we'll make it an hour and a half, with time for questions.

Failure Comes in Flavors: Part One

close

Michael Nygard By Michael Nygard
The typical JEE application does not reach the fabled "five nines" of availability. Far from it. It's more like "double eights". Come see why enterprise applications and web sites are only serving users 88% of the time instead of 99.999%.

The bad news: applications are more complex and error-prone than ever. Site development projects are really enterprise application integration projects in disguise. SOA portends far-flung interdependencies among unreliable services. Failures will spread wider and wider, reaching across your company and even crossing boundaries between companies.

How do monumentally costly failures begin, develop, and spread?

Can they be averted?

Once you hit Release 1.0, your system will be living in the real world. It has to survive everything the messy, noisy real world can throw at it: from flash mobs to Slashdot. Once the public starts beating on your system, it has to survive--without you.

Did you know that just having your database behind a firewall can bring down your system? Ill show you that and many other risks to your system. You will learn the biggest risks to your system and how to counter them with stability design patterns. We'll talk about the best way to define the term "availability" and why the textbooks get it all wrong.



In this session, you will learn why the path to success begins with a failure-oriented mindset. I'll talk about numerous antipatterns that have caused and accelerated millions of dollars worth of system failures. I'll share some of my scars and war stories with you (don't worry, they're all suitable for polite company) in the hopes that you can avoid some of these costly disasters.

Failure Comes in Flavors: Part Two

close

Michael Nygard By Michael Nygard
What can we do about the dismal uptime of typical applications? We are asked to provide "five nines", but only reach 88%, on average. Come learn how to prevent the Stability Antipatterns from biting you. Apply these Stability Patterns to contain damage, recover from shocks, and survive disasters.

In part 1, we looked at common sources of system failure: those commonly created structures that exacerbate problems.

Now, we'll take on Stability Patterns that not only stop the antipatterns, but also add resilience to your system. Apply your new failure-oriented mindset to unchain yourself from the pager and save your company from embarrassing--and costly--disasters.

These patterns combat entire classes of failure modes, making your system robust against even unforeseen problems.



Books on design and architecture only tell you how to meet functional requirements. They help your software pass Quality Assurance. But painful experience has shown that "feature complete" is not even close to "production ready." After this talk, you'll be prepared to use your failure-oriented mindset to make your system a success.

Design for Operations

close

Michael Nygard By Michael Nygard
If your software fails in production, nobody will care how great the development project was, or how well the system passed QA. Production operations, the domain of your systems' least-appreciated stakeholders, is where the rubber meets the road. Come learn how to build your systems to thrive in Operations.




We will explore the most critical foundations for success in Operations: transparency, control, deployments, and configuration.

Along the way, we'll see some of the organizational dysfunction that prevents smooth, successful operations. You'll learn what you can do today to avoid these dysfunctions, even if you've inherited a legacy of distrust between Development and Operations.

If you don't want to wear a pager for the rest of your life, this session is for you.

Clouds, Grids, and Fog

close

Michael Nygard By Michael Nygard
Servers, storage, networking, backups... they're all vanishing into the "clouds". Cloud Computing is the emerging architecture for massive, scalable infrastructure that your company doesn't have to own or operate.

From the "zero servers" web startup to the corporate IT department battling server-sprawl, cloud computing has many manifestations. This session will differentiate among the various types of cloud computing and describe applicable use cases.


The term "Cloud Computing" can be applied to everything from Software-as-a-Service (formerly known as Application Service Provider) to virtual infrastructure, grid computing, and even remote backup services. Some of these make sense, but some are just bandwagon-jumping and buzzword bingo.

In this session, Michael will discuss the ingredients of real cloud computing and how you can apply it to gain competitive advantage. He will show several cloud computing structures and discuss applications that fit each of these models. Finally, he will also talk about some of the pitfalls and problems that cloud computing customers can encounter.

Architect for Scale

close

Michael Nygard By Michael Nygard
Is your system small, medium, large, or super-size? Is traffic on it's way up?

Architecture patterns and structures that work at one scale seldom work across all of them. A communication style that's appropriate for small websites will probably fail badly if you apply it to world-wide networks of computers. Likewise, structures that work for large-scale systems are probably too complex and expensive to be worth it for small sites.


In this talk, Michael will discuss the notion of "design envelopes" for architectures. He will explore several common scaling strategies and map them to different system scales.

During this session, Michael will present reference architectures for systems at a variety of scales. It's sometimes possible to scale smoothly from range to range, but it can be extremely disruptive if you don't plan for it.

Along the way, he'll also address the different dimensions of scalability problems: traffic, content, data volume, and operations.

DSLs in Scala: Internal and External

close

Michael Nygard By Michael Nygard
We're no longer working in a single language. Programming today is about both consuming and creating languages.

We've all heard a lot about domain specific languages (DSLs). So much so, in fact, that it seems like more people are talking about it than doing it. In this session, Michael will present a real domain with familiar problems. He'll then demonstrate both an internal DSL and an external DSL that solve the same problem. Along the way, we'll cover fluent interfaces, composing multiple DSLs, and the very cool parser combinators.

If you've ever left a DSL talk wondering when we're ever going to get past the "coffee ordering DSL" or the "Waffle House breakfast DSL", then you will want to see this session.

This session walks through the creation of a domain model with an internal DSL based on a fluent interface in Scala. Although this is not an introduction to Scala, the necessary Scala concepts will be covered sufficiently for anyone to follow.

After demonstrating the domain and the internal DSL, Michael will use parser combinators to build a grammar in just a few lines of code. This grammar will lex and parse the input files, along with constructing domain objects for further use.

Prerequisite: None.



Michael's NFJS Schedule

Seattle, WA
Apr 3 - 5, 2009

Reston, VA
Apr 24 - 26, 2009

Calgary, Alberta
Sep 25 - 27, 2009

Minneapolis, MN
Oct 2 - 4, 2009


Books

by Bryan Morgan, Michael Morrison, Michael T. Nygard, Dan Joshi, Tom Trinko, and Mike Cohn

Java Developer's Reference Buy from Amazon
Price: $59.99
  • Java Professional Developer's Reference contains cross references and jump tables to help the reader locate the Java function. The reader is given a complete reference to the Java language installation, other language migrations and integration, the Java compiler, Java application development, the Java interpreter and applet viewer, HTML browers and more.

by Michael Nygard

Release It!: Design and Deploy Production-Ready Software (Pragmatic Programmers) Buy from Amazon
List Price: $34.95
Price: $23.07
You Save: $11.88 (34%)
  • Whether it's in Java, .NET, or Ruby on Rails, getting your
    application ready to ship is only half the battle. Did you design
    your system to survive a sudden rush of visitors from Digg or
    Slashdot? Or an influx of real world customers from 100 different
    countries? Are you ready for a world filled with flakey networks,
    tangled databases, and impatient users?


    If you're a developer and don't want to be on call at 3AM for the
    rest of your life, this book will help.


    In Release It!, Michael T. Nygard shows you how to design and
    architect your application for the harsh realities it will face.
    You'll learn how to design your application for maximum uptime,
    performance, and return on investment.


    Mike explains that many problems with systems today start with the
    design:


    "It's disconnected from the real world. It's the same as cars
    designed solely in the cool comfort of the lab-they look great in
    models and CAD systems, but don't work well in the real world. You
    want a car designed by somebody who knows that oil changes are always
    3,000 miles late; that the tires must work just as well on the last
    sixteenth of an inch of tread as on the first; and that you will
    certainly, at some point, stomp on the brakes while you're holding an
    Egg McMuffin in one hand and a cell phone in the other."


    With a combination of case studies and practical advice, Patterns to
    follow and Anti-Patterns to avoid, Release It! will help you manage
    the pitfalls that cost companies huge amounts of time and money each
    year.