Sean Middleditch » 2004 » August

My boss recently upgraded the eDirectory installation used for things like dial-in authentication on his server. His upgrade managed to break searching for user records by cn. I.e., an LDAP query like (cn=smiddle) would fail, although it shouldn’t have. During the 5 hours it took to fix this, though, I somehow managed to forget how exactly LDAP worked, because I managed to convince myself that the query (cn=smiddle,ou=Civic,o=CTY) would work. That is the object’s DN; a query like that however doesn’t search for the object at the DN, it searches for an object with a cn of smiddle,ou=Civic,o=CTY which of course isn’t right.

So it took 5 hours to fix the eDirectory server. Then another day and half for me to realize that yes, the server’s fixed, and no, I’m trying to do things the wrong way. ::sigh::

So now I’m just waiting for the ridicule on the help forums where I posted these big long examples of how “the server’s still broken” where people go, “hey dumbass, you’re doing it wrong!” On the upside, I’m doing it right now, and everything works, and hopefully I never have to think about LDAP again for a while. ;-)

Fedora Core 3 has the new X.org R6.8 release in. Which is cool, because that includes the new XComposite extension, along with other various nifty features everyone and their mother has no doubt read all about by now.

FC3 does not currently have xcompmgr, but that’s not a big deal; I grabbed a copy of its single source file from freedesktop.org’s ViewCVS installation and hand compiled it (seriously, a piece of cake) and got it working.

Unfortunately, metacity also has its own compositor, which is compiled in by default on FC3, which has no way to disable it, and which is buggier than a manure cart in June. The only way I can enable the composite extension and get both good looking shadows and performance that doesn’t suck like a cheerleader on prom night is to use a different WM than metacity and use xcompmgr. Of course, there are no other WMs for GNOME installed on my machine, and using GNOME with twm is just gross. (I know twm is supposed to be minimalistic, but at least EWMH support would be nice…)

Anyways, the performance with xcompmgr is excellent, and the shadows look nice. Metacity already has some tricks when using the compositor (like windows become a little translucent when you move them), but the performance problems with its compositor completely preclude its usage. Hopefully the metacity compositor bugs are worked out and it learns to work as well as xcompmgr, or an option is added to turn off the metacity compositor (but keep the composite-based effects, if possible). Obviously I’d prefer the former. Although the later would be good for people wanting to experiment with new compositor ideas and also wanting to run GNOME.

The next step will be getting the compositor to play right with GL, if it doesn’t already. Imagine if metacity could pull tricks like composite two workspaces to GL textures during workspace switching and pull off some freaky-type 3D effects while doing so. Or change the visual bell to instead make the whole desktop ripple like a reflection in a pond after dropping a pebble in the middle.

Nautilus could perhaps also make good use of composite. Currently, it draws an entire window for the desktop. This is so that it can sanely handle grabbing mouse events on the desktop and draw the icons. WMs can already grab mouse events for the desktop, and if each icon was instead drawn as its own window with the compositor making it merge automatically and nicely with the desktop, one could run other programs solely on the desktop itself; things like apps which slowly morph the background over time and so on. Could be a lot of fun.

The truly amazing things will be when people start figuring out how to use these new extensions not just for eye candy and performance, but for actual new useful features that were just too impractical to implement before. Shadows and translucency and 3D effects and so on are pretty, but they don’t let you actually do anything useful you couldn’t do before. Despite what some big monopolies might claim, one of Open Source’s (and Free Software’s, of course) biggest strength is its innovation.

Will be staying late tonight to finish the server transition. We installed the RHEL server on a piece of hardware not intended for it, because we didn’t know how well it would work out and we couldn’t bring the actual Debian server down during the week. Tonight, though, I’ll be staying late, wiping out the Debian server and transfering the OS over from the temporary server.

Not exactly sure how I’ll tackle that yet. I’m planning on using the RHEL install dics to setup the RAID array, then hopefully use the rescue CD to transfer a big huge tar’d up image from the temp server, and unpack it onto the correct server. Hopefully that works.

If not, I’ll have to do another clean install of RHEL, then copy over the custom built and downloaded packages from the temp server, then copy over the configuration. Too much room to forget something there, though, especially given that the software configuration on the temp server is already done.

Libby is heading back to Seattle early next week. Monday night was probably the last time I’ll see her until Christmas or later. ::sigh:: We went to Benihana’s, which is a simply superb Japanese restaurant. The chefs prepare the food at your table, making for both a nice meal and decent entertainment. The food is top notch. Best fillet mignon I’ve ever had, bar none. Love it.

Not really sure how well I’ll hold up with her leaving, though. She’s only been here for a little over a month, and it already feels natural for her to be around again. Might have to do with the fact that every single weekend we’ve spent in each other’s company, for the most part, not to mention a good number of nights and lunches during the week days. It’s just finally starting to sink in, though, that I’m not going to see her again in a very, very long time.

I don’t want her to leave. Who would, right? ;-) But she loves Seattle, and that’s what makes her happy - I really don’t have much right or room to complain. Doesn’t mean I can’t be sad about it, though, right?

On a slight upside, I might finally be able to get back in touch with Katie. She had, so far as I thought, tried fairly hard to avoid me for ~6 months. According to Libby, no, she thought I was avoiding her. Grr. Libby will, hopefully, set her straight as they’ll be spending the weekend together, and perhaps she and I can start hanging out again. Which will be good, as Katie is a very nifty-type person; one of the few people I’ve met that I can stay around for more than 30 minutes without getting annoyed at. ;-) That makes, what, three people I can say that for?

AweMUD has had, for a long time, a goal of being very flexible. Code changes were to be kept to a minimum, scripts should be able to over-ride everything, and new C++ code should be able to be added with a minimum of tweaking to the internal engine.

I’m slowly moving away from this approach, however. For one, flexibility can make the code an absolute bitch to work on. Being able to code huge swaths of the core functionality in scripts isn’t necessarily a good thing; script languages aren’t designed for application programming, they’re designed for glue and simple logic, and that’s where they should stay.

Take, for example, the pending actions stuff in AweMUD. The current code I’m working on makes an IAction type that every action derives from. Every action put on a character is thus an object. The advantages? First, you can easily add a new action by just creating a new subclass. The subclasses can carry all sorts of additional information with them (any sort of state they need) without needing to extend any other code.

The disadvantages? Every action requires a new object allocation and creation and eventual deletion, even simple actions need a whole class written to handle it, and the code gets spread all over the place.

Is the flexible method really the sanest method?

So I have, last night, finished the Amber Chronicles by Roger Zelazny.

This books are fucking awesome. No, seriously. If you read any fantasy series, read this one. I absolutely love it.

Only, there is a slight problem. See, there are ten books. Two sets of five. The tenth book does not complete the story, however.

Reading reviews online, you’ll see a lot of complaints about this fact. The story doesn’t just have loose ends. It flat out isn’t finished. A lot of reviews give the author flak for ending the series so poorly. As if it was his intent.

There was a rather big space of time between the writing of the two sets of five books. It’s pretty damn obvious that Mr. Zelazny had intended to write at least another set of five books. Had intended. Mr. Zelazny has, unfortunately, passed away. The series will never be finished; at least, not by his masterful hand.

Another author has started a new series, a trilogy, which is a prequel to the original ten Amber books. There are also some Amber short stories authored by Mr. Zelazny himself. Nothing yet, however, which continues the excellent story to its ultimate conclusion.

I can’t tell you how depressed finishing the books as made me. Not because they are bad. But because they are true excellence, in my opinion, and having no more of them to read makes me very sad. Not even the kind of sadness that comes with finishing a book by Robert Jordan or another living author; at least with those, you know the story will continue, eventually. With Amber, it’s just done. Even if another author started writing Amber books, I doubt they’d be capable of kind of writing which Mr. Zelazny employed.

I’ve yet to read the Dawn of Amber prequel trilogy. The reviews aren’t too hot. And not for the same reasons as the poor reviews of the Amber chronicles; other Amber fans seem to dislike the prequel series. The third of the trilogy is not yet out, however, so it very well may save the trilogy. I’ll have to read them myself to see, of course.

Yay! Finally getting rid of the Debian server at work. I don’t really want to get too far into the details of why that makes me so happy. Suffice it to say that the quality of the Debian OS has diminished vastly. My guess as to why is far too many packages, far too many packagers, and no clear technology goal; just the mostly useless (in terms of getting real life work done) “pure and Free” goal.

If they broke Debian into a Core and an Extras (similar to how Fedora would work if they actually got off their rears and finished the contributor infrastructure), concentrated on frequent releases of the Core and an unversioned Extras, I think things would be fine.

But, in the meantime, the number of bugs of Debian, the fact that you are required to use testing or unstable to have modern usable software, and the fact that the resulting system is barely trustable, has resulted in me switching to RHEL (CentOS, actually, as one or two low-end servers just isn’t worth the price Red Hat is asking). Which isn’t a bad thing - I like RHEL.

I want a personal DAV server.

What I mean is, basically, something like Samba, but for WebDAV. Apache needs to run as root to do this appropriately, and that’s both gross and stupid. A personal DAV server would be a lot simpler. This is how I would architect it, had I any knowledge of DAV.

First, a main process would sit and listen for requests. When it gets one, it would authenticate it. It can even do cool things like use cookies and stuff to manage user sessions for extra speed and efficiency. Once it knows which user is accessing it, it would see if there is already a process for that user to handle the request. If so, it would pass the request along to the sub-process (possibly just transferring the fd itself over a UNIX domain socket). Otherwise, it would start a user process, and *then* pass it along.

The user process then would be in charge of serving the request. This process would be running as the user in question, so there is no possibility of accessing something the user usually couldn’t. Additionally features could be added, like forcing the connection to root at the user’s home dir (using either a virtual root, which would allow symlinks out; DAV can’t create symlinks, so this is safe except for users with shell access, and there’s no reason to lock down DAV for users you give shell access to) or by actually chrooting the process (which would work fine, as it needs no external tools).

It may not be the most scalable solution, but it should be pretty secure, and works for the environment I’m personally most concerned about - my home network. I could set this up on my file server and have quick and easy access to all my files from UNIX, OS X, or Windows machines. It would Rule(tm).

Little sister’s computer is fairly hosed. So loaded down with spyware and adware (but no viruses, at least!) that it isn’t even really usable any more. The machine is so slow it’s not even funny. We tried for several hours to clean it all use, using several of the usually excellent anti-spyware tools and lots of manual hacking, but all to no avail. End result is that I’ll have to backup the little sister’s data files and reinstall the machine.

Problem is, the mother didn’t want to accept this fact. She kept constantly stopping the backups and fucking up what I was trying to get done to sit and play with the computer because she refused to get it through her head that there’s a point to which the OS install just isn’t salvagable. Then she went on a screaming tirade about how stupid it is that you have to reinstall the OS every 6 months, how I’ve apparantly no right to tell her how to fix the computer since I “don’t know Windows.” ::sigh::

I eventually got her to understand that the machine is hosed. That no, there is no way to make that impossible, because adware/spyware/viruses/etc. are almost entirely a social problem, not a technical problem. No computer in the world is safe if users are dumb enough to just install tons of crap that the spyware/adware/malware authors want you to install.

Libby had her wisdom teeth removed last Thursday, and I’ve been spending every day all day long (save for my 9-5 at work) taking care of her. Certainly not something I would complain about at all (after all, I offered to do so) but I am glad she’s getting better and I won’t have to do this much longer. ;-) Today, in fact, should be the last day, as if she’s not able to get around and operate fairly normally today, she definitely will be able to do so tomorrow. Yay Libby.

Haven’t been able to get much work done the last few days, though. I’ve been taking my laptop over to her house and stealing one of her neighbor’s unprotected wireless Internet connections, but the connection is slow and she’s rather distracting. Have gotten some more Scriptix2 work done, though.