Lint

“Civilization is the agreement to have gaps between wars,” writes
Jeff Lint, subject of the biography Lint. This is an unusual
book that I picked up at the library on a whim. Parts of it are
outrageously funny, for instance the whole “Belly” sequence, Lint’s
cartoon TV show, and the description of his proposed Star Trek
episode. At the same time parts of this book disturbed in a way, as
though reading the description of someone unknowingly in the midst of
a mental breakdown, and then slowly realizing that, hey, maybe that is
me.

In any case, I think Aylett has achieved something remarkable
here, in that he was able to write a “writerly” book which did not
make me want to retch. While at times the relentless
other-worldliness and just-barely-incoherence of Lint was tiring, at
other points I was struck by the sustained creativity that was
required to have written this book — like a sci-fi version of The
Passion
, only not so deep. Several times I thought, “I wish I
had thought of that.”

I recommend reading this book, though I wouldn’t classify it as
an SF essential (say, The Female Man or so).

Oh, by the way, due to this book otters have now been added to the
list of animals which may no longer be used in jokes. You may
remember that penguins, platypuses, weasels, and newts are already on
this list.

gcjx marches on

Ranjit has
done some nice work on gcjx
recently, adding visitor methods to the model and writing code to
print the AST — in a lispy format, no less.

I’ve also been hard at work on gcjx. I set up a special install
tree so that I could test gcjx-compiled object code against a
known-to-work libgcj. This let me quickly find a number of bugs in
the tree-generation code. At this point most of the libgcj test cases
now work when compiled with the new front end.

This weekend I spent some time working on the type inference code,
and last night gcjx was able to compile its first generic method
invocation.

Qwest

Yesterday my DSL router suddenly and mysteriously stopped working.
After some futzing about, and a realization of the strange fact that
lack of internet access translates immediately into a sense of
isolation, I called Qwest. I was expecting an irritating hassle, but
instead they overnighted a new router to me. Thanks Qwest! I’m a
whole person again.

Moneyball

Moneyball is as excellent a book as I had heard. I checked it out
from the library yesterday, and, forgetting everything I know about
myself, decided to read a chapter just before bed. Predictably, I
couldn’t put it down and now I’m paying for it. It was worth it
though.

Denver Java Users Group

I gave a talk about gcj to the Denver Java Users
Group
last Wednesday. Essentially I gave an updated version of my
FOSDEM
2004
talk. (While updating it was fun to see that we went from a
54% japi score to a 92% score…)

I think the talk went quite well — much better than my anemic
OSCON performance. There were a number of questions about what we’re
doing and how gcj works, though afterward I found out that one of the
slides was confusing and made it seem as though gcj translated java to
C++.

It turns out that the reason I was invited to talk was due to a
suggestion from Tom
Poindexter
, who I know from the Tcl days. That made me happy 🙂

After my talk, Tom Marrs gave a talk about J2EE things, I think
centered around a book he wrote and which will be released shortly.
It was quite enlightening about web services, deployment descriptors,
and things like that — I think his book will be pretty good when it
comes out. J2EE seems to be an area where nasty hacks are just taken
for granted, e.g. his deployment process runs xdoclet and then does a
series of search-and-replace operations on the output to work around
bugs. So much for the open source advantage.

Marrs was running Windows and during his demo he typed
cls in a terminal window. I had a sudden rush of
something like nostalgia, a feeling that I was vividly reliving the
ancient and dusty past, like seeing that Apple II screen saver that
comes up occasionally.

Nice quote from the president of DJUG (who I sat near later on at
the restaurant while he told us wild tales about his wild and strange
career): “we don’t do marketecture here”. I hadn’t heard that before.

Afterward I was told that a lot of this web services stuff is on
the wane a bit (or, possibly, perceived to be) and that some people
are looking around for alternatives to these huge J2EE stacks.
Supposedly the .NET equivalents aren’t seeing much uptake, and some
shops are moving to Ruby on Rails (though this is said to only work
well in some situations); and other folks are using Spring (about
which I know zilch, as in, not even enough to know if this statement
makes sense).

I asked a bit about J2EE implementations too; I figured these
guys, who do this sort of thing for a living, would probably have good
answers. The Jonas JOTM component was singled out as being good, but
I think not many folks were really using Jonas. JBoss was widely used
and discussed, but is apparently known for being somewhat flaky;
however some folks even did crazy things like develop on JBoss and
then deploy on WebSphere, mostly to avoid per-developer charges
(though these guys said they were going to stop doing this as it is
too painful). BEA also got good comments.

Transporter 2

Sequels seem to have a real problem with plot continuity. Maybe
the creators get distracted by trying to be systematically more flashy
than the original, and forget entirely about things like plot,
sequential action, and the like. Transporter 2 succumbs not only to
this problem, but to the “greasy evil” problem; that is the one where
it seems like a good idea to identify all the bad guys by covering
them in a fine film of vaseline.

I enjoyed the first Transporter enough to rent it one day and see
it a second time (though, I feel it wouldn’t stand up to a third
viewing). This one… I’m sorry I saw it at all.

Refactoring C++

In preparation for a demo I’m giving soon, I’ve been playing more
with the new CDT release. I think the biggest change is
support for refactoring. In my little experiments I was able to
rename classes, macros, methods (though I haven’t tried virtual methods
yet), functions, and variables. Pretty cool!

The way this works under the hood is that they have a C and C++
parser written in java (which understands GNU extensions as well).
Renames are handled by using the parser’s AST to find the appropriate
locations to modify. This way they don’t end up renaming in places
that use the same name but which refer to different objects.

I suppose they wrote their own parser for the classic reasons:
the perennial favorite, license problems; and the fact that the GCC
parsers aren’t exactly reusable. In Java, pretty much everybody
writes their programs as reusable libraries. In C, pretty much
nobody does.