Head First Java - yep, reading it and proud of it.

Like many, when I first saw the Head First series by O'Reilly launched, I winced. I thought to myself, "nah, there's no way to make learning Java that fun and use that degree of levity". And hey, I am probably one who could be easily labeled as an O'Reilly fanatic.

I have been through just under half of both of the Learning Java titles from O'Reilly, and got burned out and lost on each one. I was plodding my way through Sun Microsystems Press Core Java 2: Volumes I and II when I happened upon an article by someone named Kathy Sierra on java.net. It was titled Have your developers seen a real customer in the wild?, and it was a great read.

I read the reviews for both Head First Java and the Sun Certified Programmer & Developer for Java 2 Study Guide (Exam 310-035 & 310-027) book by Kathy and Bert Bates. It sounded too appealing to pass up.

I have been going through the book for about a week now, and it is great. Anyone with exposure to programming in at least one language will find this to be an inviting bridge into Java. Well, maybe not anyone, but most people. The approach of the book helps you to internalize Java, to "think" and "speak" in Java.

There is apparently quite a little stir about this being a dumbing down of Java, etc. Kathy even has a weblog entry about it, aptly titled What's so bad about making it easier to learn Java?. (You go, Kathy!) I can say personally this is the first Java book that approaches the ease-of-use and skill-building content that I first came upon in books of Visual Basic. Is it harder? You bet. Java is a more capable and powerful language, thus the commensurate learning curve to mastering that power is proportionately larger. However, that doesn't mean that the learning process for the language needs to be dry, turgid tomes that ramble for three or more chapters before having you write an example that shows you in concrete form the esoteric and abstract concepts with which are you are currently being mentally hosed down.

Think about this; did you learn your spoken language that way? No. See the first part of Programming Perl for a wonderful analogy of programming and natural language learning; my copy is at the office so I don't have it in front of me to give the exact reference.

I don't really have time these days to pontificate any further, and as late as it is I am not sure how cogent any of this is. Head First Java is a great book if you want to learn Java in a way that will allow you to internalize it and prepare for deeper learning of the language. That's all for now.

Thoughts on open source mailing lists

After the robust thread started by the recent post to the Debian PowerPC mailing list, I received a private message from someone I had indirectly affected in what I wrote. His name is Joe Malik, and he actually does much for that mailing list in terms of participation and helping folks along. I thought about what he wrote to me, and it caused me to reflect on what I had quickly banged out in frustration. Part of my response to him spoke to some general thoughts of mine about open source involvement and mailing lists. I have posted part of it below:

Excerpt from a recent message I sent to someone regarding open source and mailing lists:

I have only been using lists heavily for about 3 years, but in that time I have seen differences in lists.  Each list, or perhaps each organization's lists, seem(s) to have a certain feel that you can pick up on, usually within the first month or so.  Some are really vibrant, some are very quiet; some are well-managed, some are out of control.

When a list has a high number of questions being answered by actual developers themselves, and when many of the newbie questions, even the well-formed ones, either go unanswered or receive relatively terse replies, that's not a good sign.  For some reason, on that list, people aren't in a hurry to post a response.

Why would list members, even ones who have been on for a while, hesitate to answer a newbie's question?  Have they been burned in the past?  Is it just safer to sit by and monitor, not risking unfriendly feedback from those who know as much or more than you?  Perhaps.  Perhaps not.  Is it because there's a high turnover rate on the list, because the non-gurus get tired of the negativity or harshness on the list, so that the list is comprised of mostly relative newbies and seasoned gurus?  Perhaps, perhaps not.

When these characteristics are present on lists for something as high-profile as the Debian Linux distribution, that's especially undesirable.  Efforts like Debian have much in common with not-for-profit organizations; the workforce is composed almost entirely of volunteers.  Motivators like salary and compensation are not present, so a sense of community, welcome, and worth are important if the effort is to flourish.  The primary purpose of my post was to hopefully reiterate that to the list, in hopes that things might become a bit more hospitable.</p></body></html>

OK Debian Linux PowerPC mailing list, it's like this...

Call it frustration, call it justified anger, call it whining, but I finally had enough of the response I and other new list members have been getting on the Debian lists. Being a new list member, you don't exactly want to alienate everyone, particularly when you need their assistance if you're ever going to come up to speed.

I reached a point shortly after my previous post where the risk of being alienated was outweighed by the state of things on the list. So, I posted the following:

From http://lists.debian.org/debian-powerpc/2003/debian-powerpc-200312/msg00072.html:

To the list at large,

I have been working on getting a Debian install up on my system for ~ 2 weeks now, and I find myself dreading when I have to post a question, because getting an answer on these lists can be pretty daunting. When you do get an answer, it is often a sparse reply indicating "you're not doing it right" or "you're using the wrong thing". Well - yeah, I guess so, or I wouldn't be having the problems I am having.

Seriously, folks, when you have new folks coming to a list, it's because they are deciding to give it a go with the Linux distro you favor. It's a good thing. And of the newbie posts I have seen on here, I have yet to come across one of those arm-flailing things like you see on Red Hat, PHP, or MySQL lists like "HELP! my l334 skillz lack!!!!!". I know that sort of thing is way annoying.

I would like to thank Harvey Ussery and point to one of his recent posts, "Re: About SPAM.." on December 2, 2003 as a great example of not alienating new folks. It's not a fault of Bart Koppe's, the original poster, that the receipt of SPAM bothers him. Hell, it bothers me, too. I accidentally replied to a post this weekend with my new, private email address that I had just changed - it's not even subscribed to the list. Bam, two hours later my Sven spam has doubled. Responses like "10-15 mails a day is at the low end" and "That's past now; you have got to get yourself a new one if you want to get rid of the spam mails" only alienate people.

The LinuxWorld article highlighted in Slashdot today is a pretty damning summary of several key behaviors in open source that alienate newcomers. Please try to remember that you, too, were just learning this stuff at one time. We want to join you in the effort; we are not spending hours trying to learn something just so we can bug you on the list.

I awaited some flames for that one, but was pleasantly surprised if none came. It was a fairly decent thread; click on the link above to follow it.

Word from the oracle, or what the hell is reverting to canoncial form

To put it mildly, trying to make some noteworthy progress with getting Debian Linux to run on the PowerBook is not going well. One thing that makes the already-frustrating experience even more unpleasant is getting answers or advice from those in the know. Participation on open source mailing lists is voluntary; we all know this. People answer as they have time, etc.

However, when you have burned 4-6 hours on something, then you hit a brick wall, and then you articulate a fairly detailed question, you hope for some guidance. I have been getting quite a few one-line, cryptic answers that tend to lead me on another 2-hour quest that ends in my learning that the answer was only half the story. I think my frustration is starting to show, as one of my posts from today's adventures shows:

From http://lists.debian.org/debian-powerpc/2003/debian-powerpc-200312/msg00071.html:

>Ah, possibly. You should probably revert to the canonical form.

Well, I guess this begs the question: "What does it mean to 'revert to the canonical form'?" As for the front end I am using, for now I am still speaking of dselect. If dselect is so poor, why is it the default recommendation on all the Debian documentation?

As for the reference earlier to reading the documentation for the front end, I went through the "dselect Documentation for Beginners" tutorial at , read the inline help within all dselect screens as suggested in the documentation, and have since read the following man pages: dselect, sources.list, dpkg, apt-get, deb, and apt-cache. So far the only reference to specifying a specific version of a package has been in the apt-get man page, where it mentions /etc/apt/preferences and its use for "pinning". I have yet to find a reference to canonical form, much less how to revert to it.

The price of learning, or why apt-get is so important

Today is another day of finding that I have expended quite a bit of effort that could have been spared if I knew more about the apt package management system of Debian. The current XFree86 version woes I am seeing where one package for 4.3.0 pulls in several older 4.2.1 packages could have all been averted were I not using the documentation that recommends the use of dselect for package management. So, as it turns out, RTM isn't always the answer. The excerpt from one of my posts to the Debian PowerPC list fleshes it out:

From http://lists.debian.org/debian-powerpc/2003/debian-powerpc-200311/msg00678.html:

Thanks for this information. Man, I wish I had seen this earlier. I went ahead and installed xserver-xfree86-dri-trunk and all its dependencies suggested by dselect, and I have been trying to get the drm-trunk-module-src stuff to compile. After seeing the post from Jens that his PBG4 17 did not use an nVidia card, I went to the Apple site and confirmed that the current 17 units use an ATI card again. WTF? Did they just decide to pop nVidia into the mix on a whim with the first batch? How lucky can a guy be?

In light of the fact that I seem to have the North Korea of video cards, what would you (and anyone else) recommend in terms of trying to get XFree86 working on a PowerBook G4 17" 1GHz? eBay and another machine? Man, I hope not. Thanks in advance for your assistance. I am reading up on X Windows to try and learn more so that I won't be such a drain to the list.

And folks want to debate Linux being ready for the desktop...

Open source support vs. proprietary support for the common man

I have had the pleasure of running through all of the install routines for my Unix software that I run on my PowerBook installation of Mac OS X. Although it has been fairly smooth, I have run into some issues with database servers, application servers, etc.

My recent experience with resolving those issues brought to mind one of the common pieces of rhetoric used by those who are either wary of or outright against open source software: "what are you going to do for support?" I have noticed that the questions I have posted to the relevant mailing lists regarding my software issues have been answered within an hour or two, if I didn't first find the answer by examing the documentation for the product or searching the online mailing list archives for a particular issue.

Here's my criticism of the support objection to open source: "How is problem-solving with your proprietary software that different from the approaches used in open source software?" Unless your company is large and loose enough with the purse strings (a concept whose mention generates raucous laughter these days by virtue of the fact that it is ludicrous), you don't have the "gold support package" or whatever stupid name they call the ability to phone first-level support at the vendor's office. So what do you do? Search online, Google for answers, join a mailing list...huh, same here.

Maddox has posted a review of The Matrix Revolutions, for those who are interested. Do not read it if you have not seen the movie. If the name Maddox doesn't ring a bell, it soon will.

An evening with James Gosling

Tonight was a memorable evening at the Atlanta Java Users Group. James Gosling from Sun Microsystems was there. It was basically a 2-hour question and answer session, with no particular structure or agenda. Obviously, when the guy who initially created the programming language upon which the user group is based shows up, there is neither a lack of attendance nor a dearth of questions.

It was pretty fascinating to hear some of the ways that Java is being used. The work on the Real-Time for Java specification sounds promising, especially to anyone with an awareness of that market's untapped potential.

AJUG is allegedly going to post the video of the event somehow. I am not sure how that will be accomplished, but those interested might browse over to the AJUG site to see if it's there. James' weblog is usually a fun read.

Decoupling Patterns with Dave Thomas

I attended my first meeting at the Atlanta Java Users Group tonight, and the main speaker was Dave Thomas. It was a great session. Dave is originally from England, and he is both funny and informative. As one who is in the process of transitioning to Java from Microsoft-based development, it was good to hear from someone who is highly-experienced and frank. Some of the material you read and almost all Java-related sites can paint an all-too-rosy picture sometimes. This was more of a "living with Java and making that life better" instead of "how Java is going to make every bit of your life better", if you know what I mean.

It surprised me to see how many of Dave's suggestions and the pitfalls he illustrated are cases where developers abandon some of the fundamental tenets of OOP, like "don't break encapsulation". Perhaps it is more accurate to say that it surprised me and relieved me at the same time. Sometimes the body of knowledge and the paradigm shifts of moving to Java and real OOP can be daunting, and you wonder "geez, am I ever gonna get to a point of productivity in this stuff?"

If you ever have an opportunity to hear Dave speak, I highly recommend it. Dave is the author of two books, The Pragmatic Programmer and Programming Ruby. He is actually speaking again in Atlanta tomorrow night 09/17/2003 at a combined group meeting of the Atlanta XP and SPIN groups, see the XP site for more info. The title is "Herding Racehorses and Racing Sheep"; if I didn't have a prior commitment I would make that one for sure. His teaser of the topic sounded very worthwhile.

Testing, testing...is this thing on?

The first entry. Huh. Well, if I had known how easy it was to set up MovableType, I would have set this up back when I was originally inspired to buy Essential Blogging from O'Reilly. It actually had the receipt inside the book, so there was no way to deny that I originally meant to start my blog in November of last year. At the time I had three or so topics that I really wanted to write up in posts, two of which I cannot even recall. I do remember wanting to write about the .Net vs. J2EE benchmark from The Middleware Company (TMC) that ruffled folks so much, but that's so old now that it would be pointless.

Well, perhaps not pointless. There was that invitation for a rematch, and I had been wondering if TMC had not allowed the skewed study and subsequently broadcast their endorsement of .Net in an effort to draw out some of the Java heavyweights for that second invitation to be a real face-off. I also wondered whether or not the tactic (if that was indeed their intent) had enough behind it to succeed. Well, I haven't seen any more fuss over it in the past year, so it must have fizzled out. If it did, perhaps that is another more timely topic for discussion; why didn't anyone really care about the TMC study resuts past November of last year?

At 1:45 AM, I don't really have the drive to hit Google for any news or commentary on it. I did see this one newsletter from a guy in Austin that seemed thorough, if not a bit of a straw man argument on behalf of Microsoft against J2EE. I'm just glad this thing is running.