Older blog entries for shawn (starting at number 16)


I am currently working for the Digital Technology Center at the U of MN as a systems administrator. Current projects at work include getting rid of all old Red Hat 7.x machines in favor of my automated Red Hat 8.0 install, which includes a lot of custom scripts to automate things such as file distribution (based on rsync) and installation. My current favorite automation bit is an e-mail which I am sent if the machine needs to be rebooted and no one is logged in. (Useful for kernel upgrades.)

Free Software

Have done some more hacking on Fabric, and even uploaded a new version up on the ftp site, but didn't bother to announce it since competition from Apache projects makes it unlikely for Fabric to gain any real popularity. I could see this changing if we get some high-profile sites using Fabric, but otherwise there is a lack of good big-site example code, since all that James and I have written has been for commerical entities.


I bought a Canon S230. It is awesome.


I attended a peace rally at Macalester College last Saturday. I was amazed at the turnout... quite a bit larger than I would have expected. My primary interest is to attempt to gain some proficiency at using a camera at such events. I took about 69 photos and a few video clips, and wasn't happy with any of them. But, I suspect there will be plenty of time to try again...


My temporary job at the U of MN as a systems administrator is coming to an end, so again I'll be looking for work. Of course, I'm still doing EventLoop stuff part-time, but it doesn't pay the bills currently.

Free Software

I'm preparing to do a new release of Fabric in the next few days. It has been quite some time since the last release and there has been quite a bit of activity in our CVS since that time.

The Rats

Unfortunately, grep has passed away from a tumor. Awk is doing fine, although a bit lonely.


The week has been going pretty well. I've written quite a bit of our new business plan this week and will hopefully be finishing it up in the next few days. We are considering moving to a renovated warehouse place in downtown Minneapolis.

We are still looking for a contract, but haven't done so very actively yet. We will start doing this in the next week or so.


My belief in people was a bit shattered to hell this week and strengthened at the same time. A girl I was seeing did some pretty cruel, stupid, and slut-like things. Someone else did remarkably admirable things. In any case, an overall hard and stressful week.


I tell you, having gout sucks ass. I have medicine now that is supposed to prevent it, and I've actually been taking it for like 3 weeks almost now. Well, it happens that when you start taking it actually gives you gout. Suck. Suck. Suck.


The rats are growing.


EventLoop is hiring another person, who starts in one week. Expanding from two to three people is exciting! This week we are searching for new office space, since our current space gets a little cold at night when then turn off the heat. This is fine for insane business owners, but on the questionable side for building an actual staff of people.

We are looking for a contract right now doing Java, C, or C++ coding. It would be nice to work on something that is open source and visible, but I suspect that is unlikely. With the hiring of our new staff member, we will be consulting out security and general UNIX administration services as well.

Other things going on this week: ordering of new workstation, perhaps server hardware even, and revamping of website.


I received a gift of rats. Two of them, female. I named them 'grep' and 'awk'. I know, I know. But I have always wanted a reason to yell "awk, sed, grep!" in my apartment. Anyway, awk is the squeeky rat. These two rats are lovers, I'm sure of it. They are very happy. Grep is the dominate female. She steals the food and wakes up awk a lot, which I think is why awk is always squeeking.

I've been having people over on Sundays and that is fairly fun. I feel almost social at times. Maybe I should get back to coding, eh?


My foot is sore, so I'm using that as an excuse to skip the rest of ballroom dance club lessons. This usually happens when I join the BDC: I quit about three weeks into it. I think I need to find someone who engages me, and will patiently practice with me so I'm prepared when I get the chance to dance in public.


I tried to get BeOS 5 Personal Addition working last night. First, I tried to install it onto the machine I have BeOS 4.5 running on. However, the installer is for Windows and could not figure out how much disk space was available so wouldn't install on that machine.

Then I tried to install it on my iMac in Virtual PC. If I could get it working there, I could finish getting the GTK+ port integrated into mainstream at home. However, my experience was not so great. It installed fine and boots, but it is really slow and doesn't function very well at all. Ah well, it was a long shot. (It works better than 4.5 did though.)

I'd really like to get BeOS working on a notebook. It seems like the Sony VIAO's might be supported, but I only infer that from support for the VIAO CDROM drive. A list of known supported laptop models would be useful.

I'm going to try and get it running on my oldish Toshiba notebook. I would have tried last night but unfortunately I need a floppy to boot and the floppy was, of course, at work and not at home where the notebook and I were. I do not know if there will be enough room to even test BeOS on my notebook, since it's a 1GB drive.

The biggest problem with working on the GTK+ port for BeOS right now is that the BeOS box is at work and I need to do work when at work. So, it's been getting ignored. I've considered taking that machine home so I can work on it there.

Ideally though, I could work on it on a notebook so I could do things requiring high-bandwidth connection at work and then the real work off-line. Ah well.


I have LinuxPPC installed on my iMac now. I don't know the secret to using a one button mouse in X yet, so I can't configure any of the GNOME stuff. I think I might have to install a different X server, but I haven't even looked into the options yet.

Macs have the same firmware as Sun machines, which really kicks ass. I've set my iMac to stop at the firmware before booting, once flaggz figured out how to do that on his new powerbook.

GNOME on the iMac is incredibly slow. It could be partially due to the speed of the framebuffer X server, but I think it probably has more to do with one of the panel's applets sniffing everything that happens in a very inefficient and slow ass manner. To put it mildly, out of the box GNOME on LinuxPPC sucks. I had a similar performance issue on Intel Debian as well before I got rid of the majority of the applets. By default, it was also using Enlightenment and not Sawmill - duh. And the default theme obscured the corners of windows. Who's bright idea was it to make that default?

Switching between text consoles and X when using the framebuffer X is almost unbearably fast and cool. It's freaky. You expect the normal slow video switch to happen and instead it's there ready for you to type. It's really very cool.

Once I have GNOME configured to a minimum of crappiness (as opposed to the default), and have correctly set up the framebuffer or other X server on the iMac, and either get a multibutton mouse or figure out the command keys to do a click, I think I'll actually be able to do some programming on that machine. Cool.

Photo Exibits

Now here is a cool thing. Check out the Photo Exibit System. It's done by Xach on xach.com. Basically, it allows you to comment all those photographs you have up on the web. If I had any photos online, I'd enter them (and not only because Xach would be twisting my arm). I think you should enter yours.

Perhaps Advogato needs the ability to let a hacker upload a photo, to display on his public page.

Crappy APIs

At work, flaggz and I are discovering just how poor APIs can get. We are working with a vendor who is giving us Java APIs written by someone's first chance to code with Java. These APIs are simply horrible! They now have new people coding on this stuff, but we are stuck working with this crap.

For example, it allows you to create an object. This object has a phone number associated with it. The object has a method getPhoneNumber() which returns a String. That method is only valid right after you create the object for the first time. When you look it up again, it isn't valid to use that function. That's right, depending on state, it isn't valid to use the function. You heard me. Ok, maybe a code sample (this isn't the real code, just illustrating what I mean):

    // Next line creates an object with a lot of non-working
    // functions.
    Foobar foobar = new Foobar(); 

    // Set some attributes of foobar here/ ...

    // The next line takes the attributes we set and creates it foobar.create();

    // this is the only time the next method is valid phone_number = foobar.getPhoneNumber();

    // Then, if you look it up later: FoobarParent parent = new FoobarParent(); Foobar foobar = parent.getFoobar();

    // The next line is an error, we can only do this after a // create(). Stupid, eh? phone_number = foobar.getPhoneNumber();

    This is just insanity. It would be better if it were something usable, like:

      // Create object in one step, never allow an object you
      // can't use. This could just return an object Foobar too,
      // depending the expense of creating the object.
      int foobar_id = Foobar.create(...);

      // Look up given the ID, all functions are *always* valid. Foobar foobar = Foobar.find(foobar_id); String phone_number = foobar.getPhoneNumber();

      Oh well.

      Flaggz will be wrapping all of their API inside a sane one as we wouldn't want to taint the rest of our code with this API. Unfortunately, we will have to keep the phone number information around in our own database since we can only get it once. What a great design decision on their part.

      Hiring People

      Our company is trying to expand from 2 people to like 5 or so. I thought this would be fairly straight forward. Apparently, it's more difficult than that. I'm now convinced that people we want to hire are not only good at what they do, but also intelligent enough to have already landed them in a situation they find acceptable. So, the few friends we wanted to come work for us don't want to leave their jobs. Of course, there is a lot of risk involved in working for a company this small, which I think has a lot to do with it.

      If they wanted to leave their current job, they would have done so already. There seems to be a significant barrier to leaving someplace that isn't that horrible. If nothing else, this has proved interesting. Perhaps the good people end up with jobs they like; that's kind of a nice thought anyway.

      The main disappointment here is that we really want to hire on people we know, so that when we grow more that we have a solid base of people that we can trust and that we know can help us lead and manage the company in the correct manner. Instead, we might end up just hiring people we don't know to do Java coding and fill in our management later on.


      Ok, I've finally watched Das Boot. This movie is 3.5 hours long. That's long enough to require you to flip of the DVD part way through. It is an very good movie. Watched Wallace and Gromit as well... kick ass. Next in the queue to watch are Grey Owl and Summer of Sam, which are sitting on my speaker at home.

      I watched the new Jet Li movie in the theater, Romeo Must Die. It's not all that great. flaggz hated it. Jet Li is pretty cool, but this movie's fight scenes were unrealistic and the script could have been better.

flaggz took a few days off of work so things have been a bit hectic. The project we are working on is now starting to be used and stress tested by filling up the database with a large amount of information - and yet, it's just a fraction of the goal.

It will surely be a long night.

Adrian mentioned again that he no longer wants to be webmaster for www.gimp.org. This underlines a problem I mentioned previously. The question is, how does one go about finding a hard-core volunteer to maintain a very popular free software website?

Someone suggested putting up an advertisement for help on www.gimp.org itself. I don't particularly like that idea. Perhaps a posting on a mailing list. But I'm concerned that we have already exploited our most hard-core people and now anyone who wants to help will not stick around for very long. In other words, I think we are just screwed.

After some more pondering, I think we will need to add in a tag to the XML files that simply causes HTML from another file to be inserted. This will clean up stuff a bit. Something like:

<insertfile name="foo.html"/>

This however, will not allow substitution in the html file, which gets us back to the point of using XML for templating. This may not be a large issue at all, but then again...

I'm also completely unhappy with the stuff I implemented two days ago, as it won't really allow adding non-standard modules to mod_virgule, which was kind of the point I started out with. Basically, the system needs to allow appending or prepending functions to handle XML tags. This will allow hooking things in from other .so files or whatever. Then we can add in a modules/ directory into the database and load in anything that is sitting there when advogato initializes. The second attempt is always better.

Spent a lot of time last night hacking on a local version of mod_virgule. I have two XML templates now and a more generic methodology for rendering the XML into HTML. This is perhaps not as impressive as it may sound. Unfortunately, these modifications are of little value without changing a lot of other code as well to use the framework.

Interesting quirks about coding on mod_virgule: XML files must not begin with an empty line or it's a parse error. Parse errors are not handled well right now and looking at the header files for gnome-xml, it's not apparent how to get the parse error which occurred when a document is created. I'm not sure what a Pool is in the code, but I intend to find out sometime. If your code sigsegvs, it sucks. Java wins by a few orders of magnitude for actually giving you an valuable exception upon these type of errors.

I looked at the mailbox I filter all gtk.org and gimp.org webmaster/admin mail into... ugh. I can't keep up with it, never have been able to. If only there was a request system for such a thing, so we could make sure all things got responded to. We don't even really try to keep up with it anymore, 90% of the stuff gets ignored completely. There has to be a solution that doesn't take up a lot of time.

It pains me that gimp.org's content is growing stale. Unfortunately, it's almost impossible to get anyone else to work on it; even if they had 100% content control, etc., how do you find that person who is willing to do the work? Unknown.

www.gtk.org will get revamped again by myself soon. I really want to switch to a model which allows other developers to help update content on the site. Perhaps mod_virgule code can be used for this; it's an interesting idea in any case.

I wanted to redo content.gimp.org, because I think there is a need for it's existance, but since I haven't gotton a chance now I don't think it's going to happen. I'm kind of losing interest in the idea.

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