Tim Ross has published his implementation of the Circuit Breaker pattern from Release It, complete with unit tests. I barely speak C#, so I'm not in any position to review his implementation, but I'm delighted to see it!
-
Tim Ross' C# Circuit Breaker -
The Pragmatic Architect on Security Catching up on some reading, I finally got a chance to read Ted Neward's article "Pragmatic Architecture: Security". It's very good. (Actually, the whole series is pretty good, and I recommend them all. At least as of February 2008... I make no assertions about future quality!) Ted nails it. I agree with all of the principles he identifies, and I particularly like his advice to "fail securely". I would add one more, though: Be visible.
Continue Reading » -
Two Books That Belong In Your Library I seldom plug books---other than my own, that is. I've just read two important books, however, that really deserve your attention. Concurrency, Everybody's Doing It The first is "Java Concurrency in Practice by Brian Goetz, Tim Peierls, Joshua Bloch, Joseph Bowbeer, David Holmes, and Doug Lea. I've been doing Java development for close to thirteen years now, and I learned an enormous amount from this fantastic book. For example, I knew what the textbook definition of a volatile variable was, but I never knew why I would actually want to use one.
Continue Reading » -
Well Begun Is Half Done How long is your checklist for setting up a new development environment? It might seem like a trivial thing, but setup costs are part of the overall friction in your project. I've seen three page checklists that required multiple downloads, logging in as several users (root and non-root), and hand-typing SQL strings to set up the local database server. I think the paragon of environment setup is the ubiquitous GNU autoconf system.
Continue Reading » -
"Release It" is a Jolt Award Finalist The Jolt Awards have been described as "the Oscar's of our industry". (Really. It's on the front page of the site.) The list of past book winners reads like an essential library for the software practitioner. Even the finalists and runners-up are essential reading. Release It has now joined the company of finalists. The competition is very tough... I've read "Beautiful Code" and "Manage It!", and both are excellent. I'll be on pins and needles until the awards ceremony on March 5th.
Continue Reading » -
Should Email Errors Keep Customers From Buying? Somewhere inside every commerce site, there's a bit of code sending emails out to customers. Email campaigning might have been in the requirements and that email code stands tall at the brightly-lit service counter. On the other hand, it might have been added as an afterthought, languishing in some dark corner with the "lost and found" department. Either way, there's a good chance it's putting your site at risk. The simplest way to code an email sending routine looks something like this:
Continue Reading » -
Two Sites, One Antipattern This week, I had Groundhog Day in December. I was visiting two different clients, but they each told the same tale of woe. At my first stop, the director of IT told me about a problem they had recently found and eliminated. They're a retailer. Like many retailers, they try to increase sales through "upselling" and "cross-selling". So, when you go to check out, they show you some other products that you might want to buy.
Continue Reading » -
Read-write splitting with Oracle Speaking of databases and read/write splitting, Oracle had a session at OpenWorld about it. Building a read pool of database replicas isn't something I usually think of doing with Oracle, mainly due to their non-zero license fees. It changes the scaling equation. Still, if you are on Oracle and the fees work for you, consider Active Data Guard. Some key facts from the slides: Average latency for replication was 1 secondThe maximum latency spike they observed was 10 seconds.
Continue Reading » -
Budgetecture and it's ugly cousins It's the time of year for family gatherings, so here's a repulsive group portrait of some nearly universal pathologies. Try not to read this while you're eating. Budgetecture We've all been hit with budgetecture. That's when sound technology choices go out the window in favor of cost-cutting. The conversation goes something like this. "Do we really need X?" asks the project sponsor. (A.k.a. the gold owner.) For "X", you can substitute nearly anything that's vitally necessary to make the system run: software licenses, redundant servers, offsite backups, or power supplies.
Continue Reading » -
Releasing a free SingleLineFormatter A number of readers have asked me for reference implementations of the stability and capacity patterns. I've begun to create some free implementations to go along with Release It. As of today, it just includes a drop-in formatter that you can use in place of the java.util.logging default (which is horrible). This formatter keeps all the fields lined up in columns, including truncating the logger name and method name if necessary.
Continue Reading »