The final day was upon me all too soon. We had a helpful discussion on using web standards, which reminded me that I must pick up a copy of Jeffrey Zeldman's Designing With Web Standards. We also discussed AJAX, Flex, and Flash, unpacking the tradeoffs between them and the limitations of AJAX for Rich Internet Applications. We wrapped with a recap and summary roundtable where everyone summarized their take-away from the conference. Very worthwhile, and I would most definitely do one of these again.
Code Quality, Mentoring, Enterprise Software Management, and mixing Java and .Net carried the day. The format we adapted today was excellent for these topics; we went in roundtable fashion and each participant shared what they do to ensure quality and mentor. After hearing Ben Geyer talk about XRadar, I definitely have to get that set up on my projects at the client site. Someone mentioned the idea of "a build breakage is a line stoppage"; I think it may have been Andrew Moore. That was an interesting concept and hearing how it was carried out in Andrew's instance was beneficial. Here are the points I shared about quality:
In my consulting/development work
- Reiterating the "sign your work" principle of Pragmatic Programming
- Discipline as a necessary quality; the ability to do what is required for good software yet isn't fun, intriguing, or stimulating to a narrow attention span
- Use a world-readable version control repository
- Publish the Javadoc and unit test reports to the project website
- Use Checkstyle to enforce conventions
- Use peer reviews for code releases that push to production
- Solid unit/integration/functional testing
This was probably the most public setting where I have shared my observation on unit testing, probably my most original (and distinctly Southern) perspective on quality:
Unit tests are like toilet paper; they have it everywhere I go, but the quality varies widely from place to place.
In my Debian work
Day two of the conference was equally rich. We kicked off the morning with Model-Driven Architecture (MDA), Object Design, and Agile User Requirements (read User Stories). I weighed in on my opinion of MDA as a lost cause; that stems largely from my close brushes with OptimalJ while subcontracting through Compuware. I think this was the point where I shared that if software development ever became so devoid of its aspects of art and craft that reliable, flexible, scalable, and maintainable software were crafted simply from drawing UML diagrams, I would leave the trade and pursue something else, like being a brickmason. No kidding, that's really what I think. At the point that this field became that miserable and devoid of soul, I'd want out. I have interviewed a couple of long-time programmers who are currently using WebLogic Integration (WLI), my inclinations about MDA's promises have been confirmed. Bruce made some comments about MDA related to linear algebra and GÃƒÂ¶del's Theorem that I'd love to see unpacked in a blog entry or article sometime.
I spoke about user stories at length (maybe too much) and how they have been more worthwhile to me than use cases in providing low barriers to entry for requirements participation from business persons as well as technical persons. We also talked about how user stories break down the work into easily-prioritizable chunks of work that fit well within iterative development. Mike Cohn's User Stories Applied For Agile Software Development has been my invaluable reference in adopting user stories.
Agile Software Development was a natural segue. Regrettably, my notes are rather sparse. Must've been talking too much again 8^). I came away with quite a list of books and tools to check out:
- Slack : Getting Past Burnout, Busywork, and the Myth of Total Efficiency - Tom deMarco
- Peopleware - deMarco and Lister
- Domain-Driven Design - Eric Evans
- Secrets of Consulting - Gerald M. Weinberg
- Don't Make Me Think - Steve Krug
It appears that this conference will be everything I had hoped. The group is small and refreshingly cross-disciplined. We have folks from large enterprise shops, mid-range consultancies using Java, Ruby, PHP, and Python, and solo developers from several disciplines. There's even a ColdFusion person!
The OpenSpaces conference format is already fulfilling its promises. We had a full docket of topics before we even had our first break!
In the afternoon session we had a good discussion about Content Management Frameworks/Systems. It's interesting to me to see Drupal, Wordpress, Plone, and others now being referred as Content Management Frameworks instead of Content Management Systems. I hypothesized that perhaps it was because of issues with clients who expected a CMS to be something akin to off-the-shelf software packages that are just installed and then ready-to-use. With the shift to "framework" instead of "system", the idea of a need for customization and buildout is more clearly expressed. I gave heavy endorsement to Drupal as a CMS. I have heard that some people were using Wordpress as a CMS, and there were a few folks with clients doing that.
Version 0.27 of java-package has hit the unstable archive today. Thanks to the encouraging (or maybe urging) ;-) of my colleagues in the Debian Java™ Packaging Project who still primarily run on PowerPC, support for the IBM Java2 5.0 JREs and SDKs (currently in beta) has been added with this release. Hopefully that provides some relief for PowerPC and s390 users who have been languishing in Java™ 1.4.2 land until now.
Even if your JRE or JDK version was supported by a previous version, I encourage you to repackage it with this latest java-package. A massive revision to the alternatives installations has been carried out, and users should find that all of the expected executables in a JRE or JDK bin directory now have alternatives entries installed. The exceptions would be
ktab. Our handling of system preferences for Java is still being and hammered out; quite an unwieldy thing what with the alternatives and all that.
I had so many plans for this weekend, but the first of them ate the entire two days. In working on the next release of java-package, I came across some serious issues with alternatives creation that had crept in under my watch when I first became involved with the package. It was one of those times where accepting a huge patch with tons of files introduced an error that I missed; that's part of the trouble with some patches you receive; they are submitted with someone only thinking of a very specific problem for the moment, with no thought for the package-wide implications and any technical debt the suggested resolution may incur. There was nothing for it but to slog through the install and remove scripts for all 8 JREs and all 8 JDKs looking for the bug's presence.
Sixteen hours later I had corrected the issues and tested the install of all the JREs and JDKs on i386. I had a professor once who asked what was necessary to earn a PhD. After some of the more pompous asses in my class had spouted out their opinions, the professor stated, "a hard butt." He said it wasn't about being brilliant so much as it was about being persistent. The friends I have met since then who have shared their PhD stories have confirmed my professor's allegation. I think Free/Open Source Software development is like that; what does it take to participate? A hard butt. On that note, my sore butt is getting out of this chair.
Oh yeah, kudos to Mr. Burrows on aptitude 0.4.0; I love the changes. Control-T alone was worth the wait.
I recently had my Debian menu in GNOME disappear for reasons I could not explain. Since this is where the launcher for many of the applications one installs are typically housed, it was quite the inconvenience. I posted to the debian-user mailing list, and asked around on IRC in #debian and #debian-devel, but the most I ever received was a suggestion to run
'update-menus' from a command line. Having done that within the first 30 minutes of the issue's appearance to no avail, I resigned myself to making do without the menu for the time being.
Uninstalling and reinstalling the
menu package was of no help. Reinstalling the
gnome package yielded no joy, either. I could examine the contents of /var/lib/gnome and see that the menu structure was being built, it just wasn't making into the menu.
Through some poking around and talking with some folks who emailed me off-list to admit that they, too, had experienced this and were at a loss, the mystery has been solved. Apparently during some upgrade to packages, the
menu-xdg package had been removed. Reinstalling it restored the menu to its formerly visible and altogether handy state. I posted a follow-up reply to debian-user in hopes of it helping posterity.
This issue must seem like such a stupid or neophyte question that some people refrain from replying to a mailing list post about it. For those who knew the answer (I assume someone did), the question must have somehow seemed unworthy of reply. However, looking at the
menu package, I don't even see a Suggests entry for
menu-xdg. It would be a shame if there are other people facing this issue with no resolution, so I am openly admitting that I had this problem in the hopes that it helps someone else out. Perhaps I should file some sort of wishlist bug, but my knowledge of the menu system is still narrow; maybe I will.
I find myself periodically expanding the Debian menu on my desktop just to look at it and enjoy that warm, cozy feeling I get from having it back. 8^)
Last week while my network access and free time were at a quarterly low, O'Reilly published an article by Edd Dumbill on installing Debian. The article is titled Installing Debian, with the tagline It's really that easy to install Debian! I am not surprised that people perceive Debian as more difficult to install than some of the commercial GNU/Linux distributions with their slick graphical interfaces for installation. Most people only know of the older way of installing Debian, which is admittedly less than convenient. Debian's installer has greatly simplified installation, but most people I talk to aren't aware that it exists, even experienced system administrators.
If you are experienced with Debian, but the thought of mentoring someone through a "getting started" period holds little to no appeal, refer them to the article. Low cost evangelization and advocacy, sweet! Plus, extra visitors to the article mean increased visibility for Martin Krafft's book, Debian System Concepts and Techniques.
If you are someone who keeps contemplating an attempt to move to GNU/Linux, and the aims and guidelines of the Debian project appeal to you, check out the article. It may just be enough information to get you going.
I haven't been very productive in my open source work the last week, largely due to "real life" eating up most of my time; part of the ebb and flow for a F/OSS activist, I guess. It is particularly frustrating, since we are experiencing a significant period of productivity in the Debian Java project.
I was at my monthly Java (TM) user group meeting tonight, and during the pre-meeting discussion our president Burr Sutter asked a question he usually asks: "So, anybody working on anything exciting?" This typically is taken as "does anyone have a really cool Java (TM) project that they are working on right now that would be neat for us to hear about?"
I usually sit there, not saying anything. But tonight, nobody had anything much, and I finally spoke up about free runtimes for Java (TM). I told them that great progress is being made in the free runtimes for Java (TM) arena, particularly in GNU Classpath and Kaffe. After my update, Burr asked a very good question: "Why would you work on a free, open runtime for Java (TM) programming language?" My answer follows.
You would work on it in order to have a free alternative to a platform governed by the SCSL.
You work on a free runtime for Java (TM) because a free alternative would be better than what we have now; a closely-guarded and largely ingrown platform. You work on improving a free alternative because you are free to participate without that project demanding (via a legally-binding license) that you can only work with them from here on out, and that nothing you learn while devoting your time and energy to them (without compensation) can be used elsewhere. If you do share it elsewhere, and that project finds out, their legal team will make an example out of your ass.
You prefer a free alternative runtime for the same reason that you prefer the free alternatives to the non-free frameworks and platforms available for use on Java(TM). Why is Hibernate so popular? Why is Spring so popular? Why is EJB not? Because innovation by committee, while better than a ruthless, unaccountable corporate entity concerned solely with its own betterment, is still not as good as free, open cooperation and collaboration.
Is this idea so new? Don't we try to teach kids that sharing and honesty is the Right Thing (TM) to do? I will probably flesh this out as an article at some point, but I wanted to get something written down tonight, while it's still fresh in my mind.
My book review of Emacs made it onto Slashdot today. It took a while to work through that book; all sorts of life events came up and it kept getting pushed farther out. Oddly enough, it was posted on /. on my dad's birthday.
Happy Birthday, Dad, and thanks for teaching me to stick with it when things get tough and to keep my promises to people.