Older blog entries for jonabbey (starting at number 11)

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.

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.

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