Older blog entries for cwinters (starting at number 13)

Documentation crazy today (tomorrow too). One of the unfortunate (in a sense) things about writing documentation for a system you wrote has to be that in the course of explaining something in terms that someone else can understand, you get ideas for new/improved features for what you've already developed. It's a vicious cycle!

One of the ideas spurred from the fact that OpenInteract could actually be a product, but I hadn't thought much about this in the past. But today CP mentioned that a german company that builds content management systems is putting out some feelers. So I asked myself, "How are people going to distribute new packages? How are we going to distribute upgrades?" And everything sprouts from that: distribution (needs to be in one file), file locations (need to be standardized), configuration (need to break the monolithic config file into chunks) and all sorts of other things. Very useful.

In addition, I think there's a real learning curve that you go through when developing something that will be used by any number of people, all of whom you do not know and will not have contact with except for your README file and other documentation. The assumptions that you have regarding other software you install must be made explicit so you can anticipate questions people have.

That said, people won't read what you write. Rusty has this problem with Scoop -- bunches of people email him asking a question explicitly answered in the documentation. If you send back a terse 'RTFM', people think you're an asshole. If you take the time to answer them, you'll be doing nothing else. It's not so bad if the dingdongs think you're an asshole, but if that starts floating around and taking on a life of its own, then people who might be valuable developers may simply find another project to do.

Back to work.

Scanning fiend this weekend. Got all the wedding photos online, at least from the professional, and created step one of a nifty photo browsing application. I probably have more than 400 photos scanned in (old and new) and the only thing stopping me from doing many, many more is the task of organizing them. This project should take care of that.

Faxmodem got fried in a rough electrical storm a few days ago. I am so bummed about that. I suppose I'm lucky that nothing happened to the DSL 'modem'....

Cool stuff with the framework on friday -- talking stuff, not implementing yet. But it should make navigation pretty easy. One of the things we're shooting for with OpenInteract is to make relating disparate things (documents, links, events: SPOPS objects) simple, and not require people to search. (It's weird: IME, normal people never use the search functionality of a website. Never.) Instead, the 'related items' will always be there. Nielsen's 'Designing Web Usability' is a big proponent of this, although that's not why we're doing it. :)

Anyway, the idea is to keep the act of relating objects in the hands of the people who know what they're doing, make it easy for them to do so, and let the information flow. (Kind of like how yahoo ensured consistency by having one superorganized MLS person who knew *everything*.)

First of two demos of the framework that we had to be ready for, although this one was certainly the lighter weight of the two. The lack of phone calls means that everything must have gone well.

We decided on an initial name for the framework (OpenInteract) but we haven't gotten the licensing stuff worked out yet. I'm thinking GPL/Artistic (just like perl), but we have to get NDA stuff worked out first, plus a little infrastructure would be a good thing...

Got a new hard drive today and installed it, along with transferring the old CD ROM out and moving a newer one in. (The old one wasn't cooperating with the mp3 ripping s/w -- yes, I've been bitten by that bug. I can see a rio in my future...). Doing stuff with hardware can be very satisfying. As long as you do it every once in a while rather than eight hours a day. The first task assigned to me when I got the job at IREX a few years ago was to build a bunch (10+) of cheap-o intel machines, configure them with Win95 and get them on the network. The cheap-o-ness of them manifested itself in the myriad cuts sprouting on both hands from the crappy metal used in the cases. Ouch. Mark and Christopher still chuckle about that...

The k5 happenings have been amazing, and really underscore the ease with which almost anything on the web can be taken down. Things like this make me very nervous about having a large, public community site. How many such attacks does ebay get? I don't like relying on the whims of script kiddies as to whether a site of mine gets taken down.

In any case, it's excellent the support Rusty has received. The /. guys have been excellent -- I'm sure they put a bug in the ear of VA Linux about the hardware, to boot. Hopefully he'll find a good home for it if he decides to move it (which I think he was going to do anyway).


Also: Barb got a job! It only took a couple weeks after she left the symphony, but she'll be teaching middle school english at a private school about five minutes away. It's amazing how little compensation teachers get: what a shame.

I also had something bouncing around my head about version numbering reluctance, but it's not quite there yet...

badger: You should be happy with the nokia monitor. I got the 445xi+ a few months ago and absolutely love it. 1600 x 1200 is no problem, although the monitor can do better, I think I'd go blind if I went any higher.

Do addictive personalities do addictive things all the time, or just with certain things? For instance, after getting the new everclear cd last week, I've probably listened to it 30+ times, playing certain songs many times in a row. Is it just that this CD happens to fit my mood when I'm coding, or am I getting addicted? (Everclear: you can't stop!) Gaming is similar: how many person-hours of folks on advogato are getting sucked up by diablo 2?

This crossed my mind last night when a commercial came on talking about a special on A & E about gambing addiction. A lot of the creepy addicts are the folks in front of slot machines just yanking the lever like rats in an experiment, waiting to get their pellet. I suppose the motivation (making the big score) is the same when you get addicted to poker or other games where you have to think a little (or a lot), but slots are just so dehumanizing. Brr.

At the same time, when I went to Las Vegas a few years ago for comdex, I purposefully didn't do any gambling except for placing a bet on the Steelers -- which I was able to make a few bucks on, woo hoo! But in the back of my head I thought that it would be in my personality to totally fall into the trap they setup for you, spending all your waking hours giving other people the money from the ATM machines which are so conveniently setup, or from your credit cards, draining whatever hope you have of planning your future. I know there are people who can just do a little gambling, but I have a hard time with potato chips!

The other thing I'm getting addicted to is keeping up with advogato diary entries.

mrchrist: I'm actually running into this problem (free software development vs. employment as a programmer) as a result of a rewritten NDA that everyone at work was given. It's got some of the standard stuff -- you can't take work that you do that the company elsewhere being the pertinent one. I wondered what would happen if we release(as planned) our web application framework under the GPL/Artistic license. Would everyone be able to work on it except me? The clause is written for proprietary "stuff", whether that's software or oil-finding hardware or whatever, and I wouldn't expect the lawyer who drew it up to know about open source. So people are looking into it, and the NDA is as yet unsigned...

skvidal: I highly recommend getting a cat, particularly from your local shelter. Cats are very low maintenance, and generally sleep when you're not around. (They also sleep when you are around.) They can be wonderful companions, and my experience has been that once I got a cat and lived with one for a period of time, I could't imagine not living with one ever again.

schoen: having gone through the "wedding fun" recently, I can totally relate to the Macy's experience. In fact, the registry is not only for Macy's, but also all the other Federated department stores (Burdine's, Lazarus, and a few others that are specific to a geographic area). And you can get to the same registry online at the Wedding Channel site. Apparently, all these stores get all their goop from the same warehouse(s). It's funny to think of it, because Macy's has this New York quality to it, and Lazarus is just, well, Lazarus.

Went down to DC for a couple days for work stuff. Looks like we'll be rolling out the framework sooner than I thought, and for a site I've been working on since mid-1995. Neat.

When I got home the new Kinesis Ergo keyboard I ordered had arrived, and I'm using it now. It's very humbling to not only have to teach my hands (and wrists, and fingers) what do to again, but also to realize that certain motions I have always done were, in the touch-typing sense, wrong. For instance, since the keyboard is split into left- and right-hand sides, I can't cheat anymore with the middle keys (y and n, in particular) with the wrong hand. I also had a tendency to chord certain uppercase letters with the same hand -- definite no-no.

General typing speed (not using any funny characters, just 'letter' typing is not bad after an hour or so of practice. However, I suspect that many of the single-hand chording incidences will appear when I start coding (perl) in xemacs :)

Also got a couple out-of-the-blue net things recently. deusx sent an email and said he'd heard about SPOPS and was curious if/how it overlapped with Iaido. Since that isn't really discussed anywhere except here, I assume that he found it through the diary entries. It also lights a fire under my ass to actually release the stuff as a proper project.

And a fellow navy brat from my youth (as in 6 or 7 and earlier, since our dads knew each other) was poking around the web for her name (who hasn't done that? be honest) and found a story I'd written which had her name it it. Funny. Even funnier is that she lives in the D.C. area. Everyone seems to pass through that place at some point in their lives...

Well, the framework has been up and running as CGI on NT. It's just such a waste that it makes my spine cringe every time I think about it. Oh well. At least when they start doing some real work on that machine, we have an upgrade path for them (PerlEx to the rescue!).

Finally figured out what I think is a decent error reporting scheme between SPOPS and the framework. Before, SPOPS would die with a hashref with various pieces of information inside it. All fine and good, and sets things up for in the future calling die with an object instead (Alzabo has stuff setup like this, altho I don't know how well it works.)

However, the problem comes when you've got a eval {} wrapped around something that could be setting $@ to either a hashref or the normal string. Uh oh. Fortunately, the mod_perl guide comes to the rescue, courtesy of the ever-present Matt Sergeant. In it you see how to override the CORE::die function in perl and wrap your own. Neat, I thought, just check to see if $@ is a hashref and if not, put it inside one. Then everything checking the results of an eval {} can expect a hashref.

Of course, silly me forgets about the various CPAN modules being used. They certainly can't be expected to check whether $@ is a hashref or not. It's possible to overload the stringify 'operator' so that evaluating $@ (the hashref) in a scalar context actually returns what's in $@->{error}. But that's a little too much mucking about in the base expected behavior for me, particularly for something I'd like other people to use :)

So, I'm simply going to have all the SPOPS classes and objects set error information in a common package which anyone can inspect as needed. And on an error, they'll die with a simple scalar. And everyone will be happy.

Lesson learned: keep simple things simple.

Egads. Trying to port the framework not only to work under CGI, but also to run on NT. What braindead IIS engineer decided to tie STDERR to STDOUT? Unless you create a $SIG{__WARN__} handler, all warn() and carp() (etc.) calls are put out to the browser! And if you don't print out the header first, the browser will either ask if you can download the page or simply refuse to show it. What a pain.

I will be so happy when mod_perl works on NT without the current request serialization hassle.

Lots of traveling last week to visit and for a wedding. Driving 17 hours to florida (and 23 or so more successive hours in the next few days) wasn't as bad as I thought :) And it was actually nice to get away from email (etc.) for a few days. Although it was a little difficult to get back into the swing...

yapc was, of course, excellent. I don't know how Damian Conway ever gets to sleep with all those smarts running around in his head. Rusty posted a story about the quantum stuff which gives better details about it. One of the interesting side-effects of hearing him talk is that whenever I read his Object Oriented Perl book or any of the voluminous documentation his modules provide, I'll have an Australian voice running around my head...

Another cool thing was meeting some folks who are doing somewhat similar object persistence stuff. Schwern's talk on Class::DBI was interesting, and I think I'm going to swipe a few ideas from it -- with proper attribution of course :) Having something akin to 'stored procedures in perl' is very nifty.

The discussion after the talk was also useful. I learned that nobody else seems to be tying security to object persistence, so maybe there's hope for me yet :)

Orwant's talk this year was somewhat cryptic, despite the fact that I felt smug when he mentioned Temple Grandin and I actually knew who she was. He seemed to be discussing all the difficulties regarding copyright in a roundabout way, which might be the only method you can discuss it with an auditorium full of open-source geeks.

Maybe it was me, but I detected an undercurrent of concern regarding the upper levels of perl and the divisiveness found on p5p. Questions like: where is this coming from? Is this inevitable when a community grows? I'm not sure these are answerable questions, but Larry seemed to accept some of the blame when he said in his talk that he'd been working on the new Camel book for the last six months and hadn't had time to play his shepherd role. He also said that people need to argue about what they're arguing about, not bringing all the baggage into every argument. (He also said this is a Good Thing for a marriage too, and being almost three-months married now, I agree.)

But that's just me on the outside looking in, so it's probably wrong.

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