"The Definitive ANTLR Reference" by Terence Parr

I second Andrew Binstock’s recommendation of “The Definitive ANTLR Reference” by Terence Parr (author of ANTLR), even to Binstock’s sly observation that the book “sort of lulls you into the false belief that you could write a new scripting language fairly easily.”

I really like ANTLR. Not long ago, I was asked if it was even remotely feasible to essentially screen-scrape a complex mainframe-generated report. Other people were saying “weeks and even then no guarantees…” With ANTLR and ANTLRWorks, I wrote a parser in a day (albeit one with rules named things like “MysteryBlock1”). (I also pestered the client — “No, seriously! If you want me to write parsers and hand that AJAX crap off to someone else, I’d be willing to make the sacrifice…”)

"xUnit Test Patterns: Refactoring Test Code" by Gerard Meszaros

My first reaction to the book xUnit Test Patterns: Refactoring Test Code by Gerard Meszaros (Addison-Wesley) was shock: 800 pages on writing unit tests? Isn’t that taking things a little too far?

I have a problem calling such an omnibus a “patterns” book. At 800 pages, xUnit Test Patterns is twice the size of Fowler’s original Refactoring or Scott Ambler’s Refactoring Databases. The value of patterns, in large part, came from creating a common vocabulary. I think it’s perfectly legitimate to be discussing a problem and say “Visitor pattern” and expect that the response should be “Well, let’s see…” I don’t think that would be a legitimate expectation if I said “Hard-Coded Test Double.”

Having said that, the omnibus of snippets has been a trend lately: the Cookbook series from O’Reilly and the Recipes series from the Pragmatic Programmers. The idea seems to be to beat Google at the “quick reference” problem: when faced with a problem, what’s the fastest way to find a related snippet?

At that level, if you mentally retitle Meszaros’ book “xUnit Cookbook/Recipes” then I think it accomplishes the job admirably: it seems to cover just about every problem scenario I could quickly think of. On the other hand, how many problem scenarios do you encounter running unit tests?

My take is that this is a good book to have in the shared library, but is unlikely to be fought over or, in the long run, thumb-worn and broken. I just don’t see xUnit as being that complex or trouble-prone. And for those who don’t “get” unit-testing, I think the book would be intimidating (even though a newcomer would do well to read the initial 275 pages, which amount to a book-within-a-book on unit testing).

If you’re having trouble with unit testing, by all means, rush out and get it. But I can’t help but feel that it could have been twice the book at half the length.

Book Design

Charles Petzold and Jeff Atwood have gotten in a bit of a kerfluffle that, I think, is an unfortunate example of how online writing can escalate and over-dramatize disagreements between even two talented writers. I’m sure that Atwood appreciates Petzold’s work and I’m sure that Petzold appreciates constructive criticism. I’m not going to link to the original posts, because I think that they were both perhaps overly curt and I don’t want to fan any flames.

But I do feel strongly enough about the issue to say this: Petzold’s Applications = Code + Markup is a very good book. It’s dense in a good way (if you’ve been following the dustup, read the pages in Atwood’s original post).

Petzold’s work also has a conscious narrative philosophy. Petzold talked about this when he was writing the book. Atwood praises the layout choices made in another book (which I haven’t read) and his arguments are credible. But Petzold, too, made deliberate choices on these very issues and I don’t think that it’s fair to dismiss those choices as if they were accidents of an outdated approach to book design.

stpBA Storyboarding: Best Rookie Product I’ve Seen In Years

The easiest Jolt vote I’ve made in years was for stpBA Storyboarding, a product which every architect and team lead owes themselves to evaluate. I would say it is revolutionary, but it is better than that — it simply makes the way you probably already work vastly more efficient.

Essentially, it is a product that transforms screen-based storyboards into requirements and work-items. Based on (and in) Microsoft Office, you mock up screens using Visio and link them together using arrows. And then it transforms that into work-items. That’s it. Simple. Obvious. Just works.

I could say that storyboards are one of the few diagrams that are universally comprehensible and producible by designers, users, and developers. I could say that usage-centered design, as laid out by Larry Constantine & Lucy Lockwood, is the most efficacious way I know to elicit requirements. I could say that the downside of storyboards has always been tracing their detail to and from work-items, and so they’ve traditionally been a “write once” work product. But I don’t need to say that, because it’s all so obvious.

It’s really an eye-opening product — download it, install it in a VM, you’ll be happy.

The only rub being that I really do mean “install it in a VM.” That it is essentially a Visio plug-in is both a strength and weakness of Storyboarding. Today, it only works with Office 2003. An Office 12 version is in development, but this is the type of product that, once you’ve tried it, you don’t want to be without. Like all Jolt judges, I make extensive use of virtual machines (the awarding of a Jolt to VMWare Lab Manager was no shock) but Storyboarding was one where I felt that tuning up a dedicated virtual machine was very much the “way to do it.” Perhaps due to the opaqueness of Office as a plug-in host, getting Storyboarding up and running took a little tweaking. If I recall correctly, before I attached the VM to the Internet to register/validate Office, there was some silent error that led to features not being enabled. Also, the workflow within Storyboarding was not immediately obvious, since it relies on its own pane within Visio and the potential is not quite unleashed by “press the buttons left to right.” It’s not a long learning curve, but it’s longer than learning Peggle.

Highly recommended. (Storyboarding, not Peggle. If you wish to ever have a productive day again, I advise you not try Peggle.)

2007 Jolts Awards

The Jolt Awards were announced last night. The list of winners is below. We had some particularly competitive categories this year (in Technical Books, I advise you to simply fill your shopping cart with the finalists). Most delightful, this was a year where there was some real innovation, which I’ll highlight in some individual discussions.

1. Books General

Jolt Winner:

    • Agile Software Development by Alistair Cockburn (Addison-Wesley Professional)

    >

    Productivity Winners:

    • Catastrophe Disentanglement by E. M. Bennatan (Addison-Wesley Professional)
    • Practices of an Agile Developer by V. Subramaniam and A. Hunt (Pragmatic Bookshelf)
    • Software Estimation Demystifying the Black Art by Steve McConnell (Microsoft Press)

    2. Books Technical

    Jolt Winner:

      • Head First Object-Oriented Analysis & Design by B. McLaughlin, G. Pollice, and D. West (O’Reilly Media)

      >

      Productivity Winners:

      • Code Quality by Diomidis Spinellis (Addison-Wesley Professional)
      • Refactoring Databases by Scott W. Ambler and P. J. Sadalage (Addison-Wesley Professional)
      • CSS: The Missing Manual by David Sawyer McFarland (O’Reilly Media)

      3. Change and Configuration Management

      Jolt Winner:

        • AccuRev 4.5 with AccuWorkflow (AccuRev)

        >

        Productivity Winners:

        • AnthillPro3 (Urbancode)
        • Perforce SCM (Perforce)
        • Team Foundation Server (Microsoft)

        4. Collaboration Tools

        Jolt Winner:

        1. Confluence (Atlassian Software Systems)

        Productivity Winners:

        • Adobe Acrobat Connect Professional (Adobe Systems)
        • NetBeans IDE (Sun Microsystems)
        • TeamCity (JetBrains)

        5. Database Engines and Data Tools

        Jolt Winner:

          • Visual Studio 2005 Team Edition for Database Professionals (Microsoft)

          >

          Productivity Winners:

          • Coral8 Engine (Coral8)
          • Dbdeploy (ThoughtWorks)
          • SQL Refactor (Red Gate Software)

          6. Design and Modeling Tools

          Jolt Winner:

            • stpBA Storyboarding (stpsoft)

            >

            Productivity Winners:

            • Corticon Business Rules Modeling Studio (Corticon)
            • MagicDraw UML (No Magic)
            • Stylus Studio 2007 XML Enterprise Suite (DataDirect Technologies)

            7. Development Environments

            Jolt Winner:

              • NetBeans IDE (Sun Microsystems)

              >

               Productivity Winners:
              IntelliJ IDEA (JetBrains)
              IronPython (Microsoft)
              Wolfram Workbench (Wolfram Research)

              8. Enterprise Tools

              Jolt Winner:

                • Cape Clear ESB Platform (Cape Clear Software)

                >

                Productivity Winners:

                • Liferay Portal (Liferay
                • Appistry EAF (Appistry)
                • Pentaho Open BI Suite (Pentaho)

                9. Libraries, Frameworks and Components

                Jolt Winner:

                  • NetAdvantage for .NET (Infragistics)

                  >

                  Productivity Winners:

                  • JViews (ILOG)
                  • .NET Framework 3.0 (Microsoft)
                  • Intel Threading Building Blocks (Intel)

                  10. Mobile Development Tools

                  Jolt Winner:

                    • Carbide .c++ Professional Edition (Nokia)

                    >

                    Productivity Winners:

                    • Crossfire (AppForge)
                    • NetBeans Mobility Pack and Sun Java Wireless Tookit (Sun Microsystems)
                    • Qtopia (Trolltech)

                    11. Project Management

                    Jolt Winner:

                      • Rally Enterprise (Rally Software)

                      >

                      Productivity Winners:

                      • 6th Sense Analytics (6th Sense Analytics)
                      • Teamwork (Open Lab)
                      • V1: Agile Enterprise (VersionOne)

                      12. Security

                      Jolt Winner:

                        • AppScan (Watchfire)

                        >

                        Productivity Winners:

                        • DevInspect (SPI Dynamics)
                        • Fortify Source Code Analysis (Fortify)
                        • Metasploit Framework (Metasploit)

                        13. Testing

                        Jolt Winner:

                          • AgitarOne (Agitar Software)

                          >

                          Productivity Winners:

                          • Mindreef SOAPscope (Mindreef)
                          • Parasoft SOAtest (Parasoft)
                          • TestComplete (AutomatedQA)

                          14. Bug and Defect Tracking

                          Jolt Winner:

                            • TestTrack Studio (Seapine Software)

                            >

                            Productivity Winners:

                            • JIRA (Atlassian Software Systems)
                            • OnTime 2007 (Axosoft)
                            • Software Planner Professional (Pragmatic Software)

                            15. Utilities

                            Jolt Winner:

                              • VMware Lab Manager (VMware)

                              >

                              Productivity Winners:

                              • Adobe Captivate 2 (Adobe)
                              • ElectricCommander (Electric Cloud)
                              • Textmate (MacroMates)

                              16. Web Development

                              Jolt Winner:

                                • Adobe Flex 2 (Adobe Systems)

                                >

                                Productivity Winners:

                                • IntelliJ IDEA (JetBrains)
                                • Mindreef SOAPscope Server (Mindreef)
                                • NetBeans Visual Web Pack 5.5 (Sun Microsystems)

                                17. Websites and Developer Networks

                                Jolt Winner:

                                  • Sun Developer Network (Sun Microsystems)

                                  >

                                  Productivity Winners:

                                  • CM Crossroads (CMC Media)
                                  • Koders.com (Koders)
                                  • Krugle (Krugle)

                                  HALL OF FAME

                                    • IBM developerWorks (IBM)

                                    >

iPower, my pwned host, boasts of being "Hacker safe"

I wasn’t going to name names, because I do not know the vulnerability which allowed a rootkit to be installed on my system. I may well have been the source of whatever vulnerability by which the system was compromised.

But this “Hacker Safe” blaze front and center on the iPower homepage is infuriating. The blaze is provided by way of ScanAlert. Judging from the logs that I saw before I was disconnected and lost the system, multiple machines within the same subnet as mine were compromised. The technical support from iPower was beyond unhelpful: the “live technical support” is provided by a call center that is not physically located with the data center. After the initial problems on Tuesday, we requested a local reboot and tighter reconfiguration. They couldn’t do it. Their only offer was to repave the machine and make it available to us over the Internet without any hardening of the attack surface! They couldn’t even activate a firewall for us or modify the ACL. We told them to go jump in a lake earlier today — four days after we discovered the compromise. Oh, and they’re not refunding us any of the $7,000 or so we paid to set up (multiple) servers with them.

iPower is “Hacker safe”? I suppose so, in a sense.

Highly not recommended.

Jolt Book Finalists: Incredibly Strong

Normally, I don’t have a lot of problems making decisions like this, but I’ve changed my mind 3 times about which book will get my top vote in this year’s Jolt Awards for Technical Books. This is a very, very good set of books:

Books (Technical)

Code Quality (Addison-Wesley) by Diomidis Spinellis

How to Break Web Software (Addison-Wesley) by M. Andrews, J. Whittaker

Java Concurrency in Practice (Addison-Wesley) by Brian Goetz et al

Rails Recipes (Pragmatic Bookshelf) by Chad Fowler

Refactoring Databases (Addison-Wesley) by Scott W. Ambler and P. J. Sadalage

Head First Object-Oriented Analysis and Design (O’Reilly) by B. McLaughlin, G. Pollice and D. West

Ruby Cookbook (O’Reilly) by Lucas Carlson and Leonard Richardson

CSS: The Missing Manual (O’Reilly) by David Sawyer McFarland

Peter Coffee Leaves eWeek for Salesforce

Peter Coffee, who’s been providing some of the most insightful, technically-based discussions of the IT and software industries for 18 years, has left eWeekto become Director of Platform Research at Salesforce.com. This is a significant loss to the field (although I am sure a great benefit to Salesforce.com). When I was an editor, especially at AI Expert, Peter used to keep me honest with pointed questions about the depth and accuracy of what we were publishing; one of my major regrets of my tenure as an editor is that I never got Peter to write for me.

In the years since, I’ve always looked forward to his columns. Peter always provided a great enterprise-level focus to his discussions, even as he stayed grounded in the realities of the programming experience. I think he’s the most trustworthy development tool reviewer of the past decade, providing an invaluable service to countless developers at thousands of companies.

Well, so it goes. I wish the best to Peter and his family on this new direction….