Older blog entries for jonabbey (starting at number 14)

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.

23 Jun 2001 (updated 24 Jun 2001 at 00:09 UTC) »

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

Yawn, back to bed for me real soon now.

21 Jun 2001 (updated 21 Jun 2001 at 06:57 UTC) »

<rant>

You know, I am amazed at how much the Discovery channel sucks. Two parts science, three parts commercials, five parts sensationalism. I am so happy to be a PBS contributor. I know it's expecting too much to see a 'high energy physics' channel, but is it too much to expect to see a 'don't insult my fucking intelligence' channel? Bill Nye The Science Guy doesn't insult anyone's intelligence, and he aims his show at ten year olds, for heaven's sake.

Sightings! Do UFO's exist? "We could explain to you why the science and statistics imply strongly that people who claim to see UFO's are lying, and what the real scenarios for exobiology are, but instead we'll do a he said/she said bit to keep the suspense up and to sell commercials to the gullible."

The more time I spend on the Internet, the less patience I have for advertising-driven media.

</rant>

Ganymede is going well. I've had a lot of good feedback and bug reports on the 1.0 release, and thousands of downloads. Some of the reports coming in are really good, detailed, user-oriented things that I really couldn't have generated myself. There are just too many places where I know how it's supposed to work. Getting a fresh view really helps. There is a full range of users, though, from the 'i know you wrote some readme files, but i skipped them, could you explain this to me?' type to the 'you used an O(nlogn) algorithm in module DBQueryHandler.java when you could have used an O(logn)'. Both kinds are gratifying, nonetheless. Just so long as people are using my stuff.

The Ganymede release went really well. About a thousand downloads and only a handful of bug reports, mostly for unusual edge cases, like the people trying to run the server on a 1.1.7 or 1.1.8 JDK, or the person who wanted to have $ in a username.

Even better, I got email from a few people who are interested in working with us on the project. A team at Villanova University in Pennsylvania had written 30-40,000 lines of Java code to manage their DNS, and they are wanting to scratch that work and to work with us to implement a full-on DNS managment schema kit for Ganymede this summer, and they have a full-time programmer dedicated to work on it. Woot!

It's also been interesting, getting email from a number of people who have worked on things in the management area. There are so many different ways of putting together software to solve these kinds of problems, all of them unique. Even things that would seem as similar as NDS and ActiveDirectory have a lot of differences in a lot of ways.

I'm looking forward to getting more feedback in the weeks ahead as people get the time to actually put Ganymede through its paces. I really hope that Ganymede is useful enough that a lot of people find value in it.

Sweet jesus, I'm Slashdotted.

I feel like the sorcerer's apprentice, with all these thousands of brooms hitting the lab's web site. With MaxClients turned up things seem to be going okay, but I don't know how long the engines can take this strain...

Ding-dong, the witch is dead!

Ganymede 1.0 released after five and a half years. Millions riot joyfully in the streets.

Beer's on me.

Code: Ugh. My threadlock fix over the weekend for Ganymede turned out to leave some things unsynchronized that shouldn't have been and, presumably some things synchronized likewise. I spent most of the day at work trying to cope with Ganymede having decided to just drop selective portions of data entered into it on the floor. This after dealing with a few deadlocks and a JVM (Sun's HotSpot Server VM version 1.3.1 rc 2 on Sparc Solaris) that took a liking to dumping core.

Ugh, ugh, ugh. I tried to work my way through one deadlock thread report, only to find myself completely unable to find why a certain monitor was hanging.

Despite my ignorance, I spent several hours doing a bit of a deadlock audit through all code related to the hanging monitor and rewrote a fair bit of it to make it as impossible as I can make it that the monitor in question will be held while the code proceeds to take another monitor . This should prevent any deadlocks on this monitor, but too much of my code is starting to feel like it is depending on baling wire and prayer. This is especially troubling given my agnostic/atheistic worldview.

But, all in all, the code today should be cleaner and more resistant to deadlock than last Friday's code, and I have continued to cut new (unannounced) release candidates for 1.0. If the server performs well over the next couple of days at work I'll go ahead and bless the current code and see what people make of it all.

Personal: I dreamed of Anchorage last night. It has been 16 years since we left Alaska for Texas, but three years living there was evidently enough to leave a quite permanent impression on me. I especially get this way when Texas starts asserting that "I'm going to make your life miserable for the next five months" summer time vibe it has.

4 Jun 2001 (updated 4 Jun 2001 at 07:04 UTC) »

Got a lot of attention from a post about Ganymede that I put up on Slashdot. Lots of page hits, and even a bug report from Romania! I love it when a plan comes together..

My hands are aching some. I've been slacking on the exercise and pushing hard for the release. I skipped Yoga on Saturday and didn't get out running at all. I'm going to have to try and wake up early enough to go to the gym and run a couple of miles on the treadmill. Cardio and Yoga both have proven essential for my health when it comes to RSI-type things.

I did fix the threadlock problem that manifested in Ganymede over the weekend. One of the central classes in Ganymede now has a far cleaner synchronization regime, one that I feel a whole hell of a lot better about. I think the 1.0 release is going to be really solid.

5 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!