Just got through putting out a fix for a dumb as a bag
of hammers bug in the Ganymede 1.0.8 release of a
couple of weeks ago. Dumb, dumb, dumb. <sigh>

On the positive side, I've had quite a decent few hours
upstairs in the loft at the house listening to french
canadian radio stations over the Internet and just messing
with code, documentation, and all of the stuff that goes
along with christening a new release.

Things have been busy at the lab. Lots of sysadmin tasks
not related to Ganymede, but
Ganymede itself has progressed quite nicely. Version 1.0.6
came out a few weeks ago, and it is working wonderfully. I
think I've finally got a good, clean, stable 1.0 build out
now. <smirk>. Now all I need are users..

So, how does one get users? More importantly, how does
one get contributors? Surely there have to be other people
out there that have an interest in medium to large scale
intelligent directory services management? There are
several directions I have been considering going for
Ganymede 1.1, to say nothing of 2.0, but with so little
feedback and suggestions it's hard to know which improvement
s (paging to disk of the database rather than holding
everything in VM, enhanced flexibility of the type system,
support for container based delegation, encryption of the
RMI communications layer, support for a SOAP API) people
would most benefit from.

At the moment, I'm feeling a bit burnt out on it. I
don't know whether people out there are finding it useful or
not, and I have no idea whether much of anyone is actually
using it apart from us and one oil company in Canada that
adopted it in a way-way-way-too-early form from one of the
0.94 pre-releases.

Also, I've been tracking down and reading a lot of Brett
Glass' anti-GPL rants, and I have started to wonder if
releasing software under the GPL really is such a great
public gift or not, as versus a FreeBSD-style license. I
know lots of people say that Brett Glass is a whiner who
wants to be able to make money off of other people's
software, but it is true that when a GPL'ed piece of
software exists for a particular purpose, it can suck all
the air out of commercial versions of the same thing. I'm
just not sure that the FreeBSD license is all that better on
that count.

Anyway, I just wonder whether Ganymede will ever be
'done', and whether it matters a great deal. If it was a
commercial product, I'd at least know whether it was worth
anything to people. I've had useful bug reports from
people, but no significant contributions from anyone outside
of people that I work with for the last five years that I
have been working on it.

I'm looking at the tail end of a 14 hour work day today.
It's been a very long time since I've done that.
Wound up reworking part of Ganymede's permissions system. I
had left a hole in the permissions system, where the
"built-in" fields that all objects automatically have (Owner
List, Notes, Expiration Date, Removal Date) did not have
their permissions tracked independently of the object as a
whole. That meant that if an end user was allowed to edit
an object to change their password, that end user was also
capable of mucking with those four fields.

Bad, dumb, silly, senseless. But I fixed it
good, and
put in a number of explicit permissions rules in the server
that will make everything a lot safer in the presence of a
malicious client. In general, I've been very good about
making the server not trust the client for anything, but
there were some subtle aspects to the permission rules that
assumed good behavior on the client's part rather than being
explicitly enforced. No more.

So.. a good, old-fashioned late night hack
session, with
lots of good music (Morcheeba, the soundtrack to
Trainspotting) cranked up way louder than I can do when I'm
not the only engineering staff member in the building. And
I've got some good changes that will make version 1.0.5
worthwhile soon, yay.

Doing some C hacking tonight, trying to write some SETUID
shims to allow a PHP script to do some root-privileged file
management stuff safely. setuid, chroot, all that rot.

And, my god, I had forgotten how horrific it is to
program in C. I can't believe I wrote 50,000 lines of this
crap working on GASH back in the day. It is just
mind-bendingly awful to have to come back to this after
having been working primarily in Java for the last five
years. I do have a pretty decent sized library of C
functions that I wrote eight years ago that I can use
to build on, but I am appalled, now, at the primitive state
of C when it comes to elementary string functions, memory
management, etc.

My esteem for the Linux kernel hackers is much, much
higher now, for seeing once again the pathetic state of the
tools that they are working in. That goes for the rest of
you C hackers out there in advogoto land as well.

Ganymede this week: got
support added into the Ganymede launcher for Sun's Java Web
Start which is the sweetest new thing I've seen for Java
in quite some time. Ganymede users at the lab who are
running on Windows can now launch the Ganymede client
outside of the browser. Much faster, much fewer resources
needed. Almost like a real Windows application. UNIX users
have had a command line launcher for it forever, but now my
Windows users can join in the fun without my having to hack
together messy .BAT files and stuff. Highly recommended.
Ganymede in general is getting a really polished feel to it
now.

Personal: The plan for the day is to get out and
get a hair cut, get my car inspected, and go to the Bikram
Yoga studio here in town. Bikram Yoga is the hot yoga,
where you do 90 minutes of relatively gentle stretching
poses in a 103 degree studio. Lots of sweat, lots and lots
of stretching, as the heat loosens the muscles up. If
you've read about people having estatic experiences in sweat
lodges, that's kind of close to what it's like in Bikram.

Just got back from a weekend with Barbara in College
Station, TX, where she is working on her master's in
computer graphics at the TAMU Vizlab. Saw Final Fantasy at
the big megaplex on the edge of town, followed up with lots
of kibbitizing on the graphics technologies used.

More work on Ganymede. I
downloaded the 1.4 JDK beta towards the end of last week and
made a few fixups to get everything to work under 1.4. So
far as I know, all of the Ganymede code, server, client,
everything, now work on every version of Java from 1.1.7 to
1.4beta. Pretty impressive if you ask me.

I keep finding myself scheming about things to do once I
officially drop support for JDK 1.1, though. In particular,
I'm thinking how much fun it would be to implement support
for a more scalable, disk-based database system using the
random access file methods and the Java weak reference API
for implementing a memory cache.

Anyone have any good white papers on simple key-based
transactional database systems? I've looked at Berkeley DB,
but I'm thinking I shouldn't need to create a dependency on
their code with as much transactional logic as is already in
the Ganymede server. How hard can it be to implement a
random access paging file with discrete indices for
namespace constraints? Seems like the only real trick would
be figuring out how to make transactional commits reasonably
atomic on disk. The way Ganymede does it now, by keeping a
ganymede.db file and an ongoing journal file is easy, File
append and atomic rename make reliable transactions simple
to do.

Ganymede is now at 1.04,
with some nice improvements to the GUI, a fix to an
exception thrown if a user gives a bad username/password
pair to the xml client and, most importantly, a fix
to the schema editor to make it check for the effect
on the namespace constraint indices during schema editing.

I've been thinking some about how to make Ganymede
support an object containment hierarchy, and it seems
that the way to do that would be to make the Ganymede
schema more restrictive, rather than less. Right now,
a single object may be owned by more than one owner
group, which makes a strict tree ownership structure
impossible. Making objects only able to have one owner
would make it possible to have objects structured in
a proper tree, which might be quite nice for the client.
Ganymede effectively allows arbitrary object graphs to be
implemented using object pointers, but some people seem to
be freaked out that they can't stuff things inside other
things and make the client display things that way.

I've also been thinking about how to make the Ganymede
server more scalable. SleepyCat's Berkeley DB libraries
look nice, but the Ganymede server was designed with heavy
multithreading in mind, and is in many ways dependent on a
lot of the flexibility and insane concurrency that the
RAM-based database provides.

As with the schema containment hierarchy issue, it seems
that the way to move Ganymede forward may be to actually
reduce some of the degrees of flexibility, which
I find an interesting outcome.

goingware: nope, and not freshmeat.net, neither.
I am thinking less 'DOS' and more 'rumors of VA Linux
layoffs', as all three are owned/run by VA
Linux/Andover.net.

Ugh. Been sick for the last several days. Slightly
feverish and horizontal mostly. Watched several episodes of
the Clerks cartoon DVD that someone brought by. Pretty funny
stuff, but not the stuff I would ever expect ABC to have
broadcast.

I did stay awake long enough Friday night to put out a
new release of Ganymede with a
bunch of bugs fixed from the 1.0 release that a fellow from
Hungary, Miklos Muller, caught and documented. There were
more than a thousand downloads of the software, but only one
person reported the bugs that anyone would have had to have
run into if they had actually tried to do much with it. My
faith in my downloaders is slipping a little bit. But I
carry on for I am blithely unaffected by my audience. ;-)