Skip to main content

Head Games

Posted by editor on September 21, 2007 at 7:28 AM PDT

Can good programmers be good writers, and vice versa?

JRuby co-lead developer Charles Nutter has kicked up a contentious discussion with a recent blog wondering Are Authors Technological Poseurs? His argument, in a nutshell, rests on his assertion that "good authors do not have time to be good developers":

What brings me to this conclusion is the growing realization that working on a JRuby book would--for me--mean a good bit less time spent working on JRuby and related projects. I fully intend to make a large contribution to the eventual JRuby book, but JRuby as a passion has meant most of my waking hours are spent working on real, difficult problems (and in some cases, really difficult problems). It physically pains me to consider taking time away from that work.

As someone who sees a lot of technical writing and has written a couple of books, there's a degree to which I can agree with Nutter. The best books come from a deep practical knowledge of a topic, and that comes with time. Aerith, cited heavily in Filthy Rich Clients, was written a year before the book came out. If it were written concurrently for the sake of the book's examples, it's a good bet it wouldn't have been as ambitious, and that would make the book less interesting. And it's a very safe bet that the first book on a topic is almost never worth owning, unless it's from a technology's creators, and even then it won't enjoy the knowledge that comes from people putting the stuff to unintended, unforeseen uses.

Knowing what you're talking about takes time. Nearly three years after my first book came out, my consulting work and other exploits in media make me wish I'd included some topics that didn't seem important when I was writing it. That's the kind of perspective that only comes with time and experience. So in that way, Nutter's right: the more you program, the better author you'd be, but the less time you have to actually write.

But on the other hand, I think he sells short the idea of writing, implying that it is just a brain-dump of knowledge that is measured solely by the time it takes to get the words and bytes out of your head and into natural language by way of a keyboard. Frankly, the best writers I know are also good programmers because both tasks require of the same skills: discipline, self-direction, design, a sense of perspective, detail-consciousness, etc. When I see writers who struggle to express themselves and what matters in their writing, I suspect their code is equally creaky, and is more a mass of statements that just happen to work (under current conditions, and only after a lot of clueless banging against the compiler and System.out.println("WTF?");s).

Developers who know what they're doing can tell you how and why it works, and how to do best do it. And that's exactly what technical writing is.

So, apropos of book writing, the latest Poll asks
"Which factor is most important in choosing a book on a Java topic?" Cast your vote on the front page, then check out the results page for current tallies and discussion.

One writer/developer with wide ranging interests and abilities is Joshua Marinacci, and he's looking for feedback in today's Weblogs.
You vote for your favorite article and I'll write it!, he says,
"I'm thinking of working on another article or two over the next few weeks, but I don't know what to write about. Oh sure, I have lots of ideas, but I don't know what's most interesting to you."

Jitendra Kotamraju has a reality check in
No SAAJ RI dependency in JAX-WS RI.
"Issue : 54 wants JAX-WS RI to be independent of Sun's StAX impl (sjsxp) and SAAJ impl(SAAJ RI). The dependency on SJSXP was removed long time back. It works well with woodstox StAX parser."

Continuing the JXTA "what's cool" series, Mike Duigou blogs about concurrency in
JXSE 2.5 : What's Cool #5 -- java.util.concurrent.
"In JXSE 2.4.1 we started to make much greater use of JSE 5.0 specific APIs, and most significantly the new java.util.concurrent utilities. In JXSE 2.5 we have continued to make much greater use throughout the JXSE source.:

In Java Today,
the NetBeans Profiler Blog notes their team's contribution to the just-released NetBeans 6.0 Beta 1: an integrated profiler. "The NetBeans IDE 6.0 Beta 1 has just been released including the integrated profiler. [...] These are major new features in NetBeans Profiler 6.0: Profiler integrated into NetBeans IDE, profiling points, heap walker, dynamic attach on JDK 6.0, DrillDown graph, and JMeter integration." More information is available at the NetBeans Profiler 6.0 Beta 1 page.

The Mac Java Community checks out a new version announcement from the Java-AppleScript Connector project. "I have updated jasconn and its project site. jasconn now includes a so-called ScriptEngineBrowser which shows quite a bit of information about any installed JSR-223 compliant script engine. It also contains a rudimentary editor which you can use to test scripts. I am going to enahnce the browser throughout the following months. jasconn itself received minor bug fixes and a few enhancements. Most importantly, it no longer does a System.err.println when an exception ocucrs but throws a proper ScriptException instead."

A recent SDN article has some guidance on How to Handle Java Finalization's Memory-Retention Issues. It shows several memory-related problems that can prop up in finalizable objects, and makes the case for a weak references-based approach to clean-up. It also advocates depending on finalization only when absolutely necessary, as "finalization is a nondeterministic -- and sometimes unpredictable -- process. The less you rely on it, the smaller the impact it will have on the JVM and your application."

In today's Forums,
Piero Filippin would like a better option for
Restarting Glassfish.
"I have a quick question: I have a remote installation of GF, I have full access to the admin web interface, but I don't see any way to restart glassfish! I want to upload some libs (specifically - the mysql jdbc jar) to the domain1/lib/ext folder, is there any way without console access (ie-just restarting a domain, not the entire server)? Also, when I modify some of the settings I get a "Glassfish restart is required", which could be problematic as my server is 20 miles away from my office! What about adding a "restart glassfish" option in addition to "stop instance"?"

In the thread
Re: Which JVM should I use on linux/arm926 platform?, cjplummer offers some insider guidance:
"I would say MR2 supports linux/arm better, because we've made some device support improvements based on feedback from the OSS community. These are mostly just minor things like fixing build problems that might turn up on various platforms, but greatly reduce the chances of you running into some sort of device specific build or runtime problem. However, MR1 was fully tested (but only on a Zaurus), and MR2 has had many changes go into it with only minimal testing. If you want Jazelle support you'll need to talk to our Engineering Services organization since there are legal issues with supplying Jazelle support in OSS."

kmiya reports a problem with being
Unable to get JDBC connections via sql tags using JSTL.
"I have a problem using sql JSTL tags to connect to databases, where the JSP fails with a JspException saying "Unable to get connection, DataSource invalid: 'java.sql.SQLException: No suitable driver found for jdbc/foo'" The strange thing is, trying to connect to the very same datasource using JPA works just fine. The database I'm trying to connect to is a PostgreSQL database, but I don't think that is relevant."

Current and upcoming Java

Registered users can submit event listings for the href=""> Events Page using our href="">events submission form.
All submissions go through an editorial review before being posted to the

Archives and Subscriptions: This blog is delivered weekdays as
the Java
Today RSS feed
. Also, once this page is no longer featured as the
front page of it will be
archived along with other past issues in the href=""> Archive.

Can good programmers be good writers, and vice versa?