Recent blog entries for jonabbey

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.

<obligatory>Woo, long time no post.</obligatory>

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.

30 Jul 2001 (updated 31 Jul 2001 at 15:33 UTC) »

I'm really tired. Was up til all hours last night getting Ganymede 1.0.5 released.

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.

<sigh> I'm just tired right now.

27 Jul 2001 (updated 27 Jul 2001 at 06:41 UTC) »

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.

Well, I'm starting to get a feel for C again. I had forgotten the joy of hand-crafting pointer loops to do any kind of string manipulation.

That's irony, of course. But it is neat to run my 500 line C program in a debugger and to be able to step through it statement by statement.

On the other hand, I have almost never needed to use a debugger on my 250,000 loc distributed Java program.

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.

Anyone want to email me with suggestions on books and/or web pages describing simple transactional disk models I might look at?

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.

24 Jun 2001 (updated 24 Jun 2001 at 05:42 UTC) »

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. ;-)

Neat, advogato only lets you have one diary entry up per day. ;-)

Yawn, back to bed for me real soon now.

12 older entries...

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!