Older blog entries for jonabbey (starting at number 5)

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.

3 Jun 2001 (updated 3 Jun 2001 at 10:04 UTC) »

Well, I have put together a strong release candidate for Ganymede 1.0 this evening. I sent out mail to the Ganymede discussion list soliciting feedback on the release candidates I posted, we'll see if I get much of a response come Monday. There are 116 users on the Ganymede discussion list right now.

And as I went to my work system to check on the size of that mailing list, I found that the Ganymede server had deadlocked. It has been months since that has happened, but deadlocks due to race conditions are the big achilles heel of the Ganymede server. Java makes multithreading very easy, but doesn't provide a lot of high level synchronization primitives. Very very easy to get into a deadlock with as many threads as the Ganymede server juggles all the time. Fortunately Sun's JVM takes the -QUIT signal and dumps out a list of all threads and where they are all blocking, so it's pretty easy to track down these things.

So I have something else to fix before 1.0. ;-)

25 May 2001 (updated 25 May 2001 at 15:51 UTC) »

Got npasswd and Ganymede hooked up late last night. It's actually really cool.. whenever a user changes their password through Ganymede (be it through the GUI, the CGI, or the text client), Ganymede turns around and checks the password out with a small C program that reads from STDIN, calls the appropriate libcheckpasswd.a routines, then writes the results to STDOUT. Only takes about a second, and the Ganymede server passes back a nice dialog explaining to the user why their fifteenth try at coming up with a valid password is still too weak. Neat-o. And if the user actually commits the password change transaction into the Ganymede database, Ganymede runs a second C program to record their new password (crypt hashed, of course) into npasswd's password history database, so that users can't re-use passwords that are less than a year old. All transactional, all very clean.

And the cool thing is that the external C programs I'm using for this are actually dirt simple, given that someone has installed npasswd in the first place. So simple that I think I can even bundle optional support for npasswd checking with the userKit, and allow users to figure out for themselves how to make all of the npasswd stuff work. Less documentation work for me, way way more password choosing hassle for their users. Everyone wins!

This whole diary thing is getting addicting. A post a day, on any topic I want, woohoo! ;-)

Life

Last night I had my first real taste of pain from the martial arts (Tukong Moosul) class I'm taking here in Austin. Got bruises on my hand and arm, and I got my left leg crunched really good right under the knee. Hurts to walk a bit, I think I won't be going to Tukong this evening after work.

Code

Today at work I'm going to be investigating how to incorporate Clyde Hoover's npasswd into Ganymede. I need to incorporate strong password quality checking, password aging, and password history into Ganymede for the lab's use. npasswd is a C program that I'm going to have to interface into Ganymede's Java code, which will be a bit of a pain and will lead, I'm sure, to a significant delay whenever anyone changes his password.

I would much rather work on things that would be of general utility for Ganymede so as to get 1.0 out the door for everyone's sake. Any work I do to customize Ganymede for the lab's peculiar requirements is work that doesn't get me closer to getting Ganymede 'finished'. Ganymede is already complex enough that I wonder how I'm going to find the time to document it all well enough that others can really jump in and use/maintain it. We have another programmer coming on board, though, one with a lot of Java experience, so I imagine that I'll be able to make more rapid progress soon.

On the positive side, there is a team in the laboratory that is looking at adopting Ganymede as a configuration management system for a network of satelite monitoring stations. Every new adopter of Ganymede helps test its robustness and flexibility of design, so I'm quite excited about this.

23 May 2001 (updated 23 May 2001 at 20:52 UTC) »

Interesting synchronicity. I have just been engaged in a quite civilized discussion over email with an HP contractor that was looking to incorporate the multithreaded Ganymede scheduler classes in a piece of commercial software for HP. We quickly got into some of the same issues that are being discussed in the VirtualDub case as to what constitutes linking, etc. I found myself surprised that knowledge of precisely how the GPL worked wasn't ubiquitous throughout the tech world.

Sometimes I forget how unusual the situation in working for a university laboratory is, compared to the "real world."

Came back by advogato tonight and for the first time spent a bit of time creating a project page for Ganymede and generally checking things out.

I have for the last few months been putting the finishing touches on Ganymede, and a really very robust and well polished 1.0 feels like it's right around the corner. All of my change log for the last few months have been isolated bug fixes, resource usage improvements, and fit and polish improvements to the GUI.

Unfortunately, things at the lab are busy enough that system administration tasks around this place are at a higher priority than stamping Ganymede with the 1.0 rubber chicken, but I'm still awfully happy with where the code is now.

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!