Billing
I mentioned in my previous post that the billing project is making progress and that we are clearing some hurdles. It's interesting because right now it's both lots of coding and lots of (re)design work. Our initial attempt at the new billing platform ended up using the wrong solution (or perhaps I should say, we used the solution incorrectly). For our database layer, we chose to use Rose::DB. Unfortunately, both our inexperience with Rose, and our quest (yes, a quest) to also use Moose at the same time ended up causing a far greater increase in complexity than anyone had expected, and a significant impact on performance.
Recently we started replacing that database layer with our own thin layer built on top of a query generator (SQL::Abstract). It's going much easier. It's made more of the platform transparent, and makes it easier to both see the design, and recognize other design possibilities.
Recently I've been (re)reading Robert Martin's book Clean Code (I'll write a review of it once I am done). I don't agree with everything in the book, but it's after having to really think about what he's saying, and comparing it to what we're trying to accomplish at work.
Interestingly, something I came across in it really helped pull together a design idea/problem we're facing - how to keep a clean separation between our data access layers and our business logic. Fortunately I came across the chapter that includes a brief discussion of the DECORATOR pattern, which after some thought and a few scribbled diagrams, and some further reading on the web, has become the leading candidate for solving this separation problem. (For the curious, we now want to wrap our business layer with a Data Access Object, which in turn may end up being wrapped within a caching layer). The wikipedia page I linked to above has a reasonable explanation of the design pattern. Personally I found the description within Head First Design Patterns to be a bit more practical for my tastes.
Readings
Inviting Disaster is the book that describes what engineers and software developers rarely openly admit :-).
The book reviews various failures/disasters caused by what initially might be thought of as equipment failure, but quickly becomes a view on how poor training, communication, and an outright ignorance of potential problems leads to disasters that could have been avoided. It's amazing how many of the systems people design and spend enormous amounts of money to produce are quickly left to people with little or no training, changes made that are undocumented, and a habit of people believing that since something didn't fail the last time it was used, it won't fail the next time. It's more frightening when you realize how much of the software industry makes the same mistakes, but really does seem to accept the high failure rate.

Iron Heart was a quick read, but almost morbidly fascinating. Brian Boyle was a high school swim athlete just getting ready for college when he was struck by a dump truck while driving. The fact that he lived considering the state he was in is impressive - the ER doctors basically expected him to die, then they expected him to never walk again. His heart was pushed over to the middle of his chest cavity, several organs had to be removed. His heart stopped several times. He was put in an induced coma. Two and a half years later he successfully completed his first IronMan competition. Read the book to fill in the blanks :-). Worth reading.
Computing
It's been many years since my last computer upgrade (yes really!). Now, as you can imagine (are you imagining), someone who is in front of a computer most waking hours is going to be picky :-). I wanted something for gaming, photoshop, programming, video encoding, and anything else I may throw at it.
Here's the spec for those hardware geeks among you:
Intel Core i7 920
Noctua NH-U12P heat sink
ASUS P6X58D Premium motherboard
12GB Corsair XMS3 Dominator RAM
Kingston 128GB SSD
2x Seagate 1.5TB 7200.11 SATA-300 drives
Vantec 59-in-1 card reader
XFX Radeon HD 5870
Corsair 1KW power supply
Coolermaster Haf922 midtower
Windows 7 64-bit
And yes, it plays games sooooooooo smoooooooothly. Battlefield: Bad Company 2 now runs like butta!
Chess
Uh-oh, there's that addiction again. I don't have the time to really study chess, and certainly not play in tournaments again, but once again I'm starting to pick it up, play a little online, check out what training software is available, etc. I'll have more in future as I review various software programs and online chess servers to play on.
For those curious the position in the image is from a game between Capablanca and Alekhine in their World Championship match, in Buenos Aires, 1927 (game 11).
Labels: AirG, books, chess, computer, games, programming