a few months pass, and many things have happened.
monotone
I switched monotone
from a temporal transport model (log replay) to a stateless
hashed-index synchronization model. this was an interesting trip into
the wilderness of implementing wire protocols. curiously, getting the
protocol's shutdown sequence right seemed to be one of the
most complicated parts. anyways, now any monotone client is a
server, and you don't need to have any shared history with anyone to
do a symmetric or asymmetric (push/pull) sync. it seems pretty
cool.
I also internationalized it. so now it does localized messages,
local filenames, file character set conversions, international branch
and tag names, international dns, etc. this was actually kind of fun
work; it was especially amusing when it suddenly started returning
system error messages to me in german! I can't say I like IDNA much, but it
seems to be the consensus. oh well.
free swing
work proceeds reasonably well. we have some other people at work helping on it now, and we
have a bunch
of widgets working and the ability to make some trivial
buttons-and-sliders sort of programs which really work. of course
there's still much to do, but things seem to be speeding up. I think
we're over the hump.
language wars
as a long time language geek, I can't help but put in a word about
the recent threads over language preferences. this is of course a
mixture of business and personal thinking, but in the spirit of honesty
I figure I ought to lay out my beliefs.
C# and java strike me as a language-war-in-progress between big,
old, dangerous proprietary firms. these companies are not blushing
virgins; they have a history of fighting dirty fights. we, the free
software community in general, should make a conscious policy to
stay away from that war. it is one thing to ship cloned
toolchains if our customers want them -- how can you say no to a
paying customer? -- but we should not write central or critical code
in these languages until well after the war is over. that may take
decades, it may involve a lot of splintering and pain. it may even
involve writing off some huge, tasty programs previously assumed to be
"donated" to the community. yes, it sucks. that's the
proprietary game and we're all trying to get out of that
game. choosing sides won't make it any less painful. we need to
abstain.
havoc asks for a compelling high level language platform, and
despite my preference for more exotic languages (ocaml, haskell, lisp,
ada, eiffel) I have to ultimately rest on the pragmatics I see before
me: the high level free software platform in 2004 is C++ and python.
I suspect that high level really means two things these
days: lots and lots of libraries, and abstract interfaces which don't
involve pointer twiddling. C++ and python meet the bill here. C++ didn't used to,
say in 1994, but it's gotten a lot better in 10 years. we have a good
compiler for it now (g++ soon-to-be-3.4) and lots of free libraries.
if you're careful you can program in it with nary a "*" in your
code.
here is my selection; if you haven't read these libraries or used
them, honestly, give them a try: