We have a book cover - I mean, a new NetBeans book!
Well, our new NetBeans book is not finished, but available in "rough cut" form. If you've ever wondered about writing NetBeans plug-ins or how you can architect a large, extensible application and have it actually work, I hope this will be a resource.
The last one of these I wrote was a year and a half in the making; this was a six-week fire-drill. Sometime last fall, Geertjan, who deserves full credit for making the project happen, wrote me and asked if I'd "contribute a chapter or two." Six chapters and two appendices later...well, if you're going to do something, do something :-)
I'm generally happy with the results (well, okay, I read the chapters and immediately find things I could improve, but sometimes you have to let things go). If you do download the rough cut, any feedback, suggestions, error reports or improvements are welcome - even if they don't make it into this edition they will into the next!
Probably the most fun part of writing it, oddly, was the little card game library used in the Nodes chapter (like there aren't enough of these sorts of things already!). The part that was fun was analyzing the problem (really I was just looking for a data model that people would be familiar enough that people would focus on what we were doing with the data model, not how it worked), and realizing that you can boil pretty much any card game down into piles of cards and logical rules about what cards are visible and what cards may legally be added. Not that any of that is new, but there is a certain thrill to figuring something out from first principles and taking it to its conclusion.
On a completely other note - anybody out there have any handy implementations of diff algorithms for
java.util.Lists? I put some work into adding another algorithm to
contrib/misc/diffs in the NetBeans source tree today - being able to simply do a diff of two lists is ridiculously valuable, but there are a lot of different algorithms with different performance characteristics - I wrote the initial version for the NetBeans Navigator component a few years ago, and kept reusing it again and again for different projects. It would be nice to collect a relatively complete set of useful algorithms - different algorithms will work better for lists that are large/non-large, tend to have large changes or small ones, etc. I found a couple of examples buried in Apache projects, but nothing that sets out to just do this one particular thing well. IMO such a facility would really be a useful addition to the JDK.