Older blog entries for mrorganic (starting at number 134)

5 Jan 2001 (updated 5 Jan 2001 at 14:26 UTC) »

My "Cosmos" DVD set came in last night! Woohoo! I immediately opened it and watched episodes I,II, and III. I remembered why I loved this series so much: Carl Sagan's obvious love and excitement for science comes through in every frame. The sonorous cadences of his voice brings it all back. I'm probably going to wear out these DVD's by watching them too much.

Carl Sagan has always been one of my personal heroes. When he died in 1996, I felt as though I had lost a personal friend. He certainly wasn't a perfect person (who among us is?), but he has a true Renaissance Man in an age sadly lacking in them. He was one of the few scientists who could make science understandable to the rest of us. He was both a gifted writer and a raconteur of rare ability. The world is much poorer without him. We will not soon see his like again.

Work Stuff:

Still trying to catch up on the backlog left from the downtime we had over the New Year's break.


Rather than hack on my newsreader, I experimented with screen layouts in BeOS using BViews, BOutlineListViews, BScrollViews, and BStringViews. I needed to understand better how the sizing and drawing features of these classes work, and I think I've got a good grip on it now.

Work Stuff:

I finally squashed a weird bug BCB had with first closing and then re-opening a dataset. I never did figure out why this behavior happened; I simply change the processing loop to use lookups rather than the close/re-open sequence. It works fine now.

I also found out that a program I wrote which is supposed to operate 24/7 was shut down over the New Year's holiday and was not restarted. Since no one bothered to tell me about it until today, I've got a *ton* of clean-up and database backlogs to clear out. I'm amazed that no one bitched out it before now.


I spent some time last night going through RFC1037 and the GNKSA guidelines and taking notes. This weekend I'll study the design of my BeOS newsreader and see if I need to change the design any to make it fully compliant. I don't expect to have to change much -- the program isn't very funcitonal yet anyhow, so there isn't much opportunity for bustage.

Another weird thing about the BeOS GUI -- there's no drop- down listbox. They use a variant of popup menus to do the same thing. It's no big thing, but every GUI toolkit I've ever seen, heard of, or read about had a drop-down listbox object...except the BeOS. I'm guessing that it has to do with the architecture of the BListView and BListItem classes; BListView is ultimately a rectangular view like every other BView, and it would be a little counterintuitive to pop it in and out of existance in response to a click event (not to mention slow).

Lest it sound like I'm bitching, I like how the BListItem allows for customization. With most listboxes, you can only add strings or images; a BListItem can be extended to represent *anything*. Pretty cool.

I finally got around to checking out the GNUStep site again. They've progressed pretty quickly since the last time I looked. I might pull the sources down to my Linux box and take a look. I *loved* NeXTStep/OPENStep, and I still think it is the best OO API ever invented, bar none.

Work Stuff:

Getting weird aborts in BCB5 when trying to database updates. The try/catch block isn't trapping the error, so something else must be going on. Hmmm...


Still hacking away at my BeOS newsreader. It's probably a pointless effort; BeOS has a tiny marketshare, so probably no one but me even cares about this. And slrn is always available for the desperate. Still, I hate to leave projects half-finished, and really the BeOS deserves a good, compliant newsreader.

I'm also finding out that string-search algorithms (like the Boyer-Moore algorithm) can get pretty byzantine if you want to do things like multiple-hit searches or single-pass searches. Ultimately I think it's better to simply beg, borrow, or steal utility libraries from folks who know more about this stuff than I do.

An irritant about the BeOS: it doesn't seem to have a splitter class in the Interface Kit. There's probably an add-on floating around out there that adds one, and for that matter it wouldn't be hard to write one myself, but it's still a pain.

Work Stuff:

Still trying to get back on track after the long weekend.


Now that I've pretty much committed myself to finishing my BeOS newsreader, I'm going to have to dig into the relevant RFC's and make sure I'm doing it right.

Having dug back into the BeOS in the past few days has reminded me of all that I like (and dislike) about it. Like QT, it was written before things like the STL became standard and it lacks some of the class stuff I've become used to. (However, it seems to play nicely with SGI's version of the STL, so it's no big deal really.)

One thing that threw me a bit was Be's way of handling user interaction. Sometimes it's in the form of a BMessage passed to the BLooper (as with a button click), and sometimes via an overloaded event in the object class itself (as with the MouseDown() event). I so used to doing things with C-style callbacks that it took a while for my brain to catch up.

Be's TCP/IP stack is awfully slow, too. I'm hoping that BONE (an updated, BSD-ified stack) will resolve the speed issue, but BONE has been promised for over a year now and has yet to see the light of day. (As has hardware- accelerated OpenGL....)

On the playing-around side of things, I'm planning on installing the DivX;-) codec for BeOS and see if I can play some of my DVD rips -- I've heard rumors that DivX support on BeOS is a little flaky (and by a little, I mean a *lot*) but I'll give it a whirl anyhow.

31 Dec 2000 (updated 31 Dec 2000 at 23:36 UTC) »

Last entry of the year. I've gotten quite a bit of hacking done over the weekend, on the BeOS of all things. I got sucked into updating my newsreader and have consequently spent the last thirty hours on it. It's still got lots of weird bugs in it, but that's due to my rustiness with the BeOS API. I'll get there.

Still snowing here, too. 35 inches so far this month. I sometimes hate this damned place.

And a happy New Year.

Work Stuff:

Trying to implement a cleaner version of a module which $COWORKER wrote. At first I was going to fix the module he wrote, but it was such a mess I decided it would take less time to just rewrite the damned thing.

Here's some advice to companies out there who are unwilling to pay for experienced C++ coders and so try to "promote up" junior programmers (who generally have VB experience or no programming background at all): DON'T DO IT! I guarantee you that the money you lose in shitty code and missed deadlines will far outstrip what you save on salary costs. Of the people in my group, only three (including myself) have any C/C++ background whatsoever, and only two of us (including me) have actual work experience.

I can get angry at $COWORKER for writing shitty code (all the more because he's also lazy and does no testing), but ultimately the problem is a larger one. Companies need to have some sanity about how they staff projects.


Just for kicks, I resurrected my old BeOS USENET newsreader project which I had abandoned long ago. Lots of the code made me wince, but I polished it up a bit and compiled it. And ye gods and little fishes, it actually worked! (Note to other BeOS users: this software is strictly for personal consumption right now. If and when I enhance it enough to meet the GNKSA guidelines, I'll release it under the GPL, but that's a long way off.)

I must admit: after the headaches I've had with GTK+/GNOME and FLTK, programming with the BeOS API is a real pleasure. (And I don't have to deal with those shitty X fonts! Woohoo!) People whose judgement I trust tell me that QT on Linux is the closest thing to the BeOS API I'm likely to come across (the 'moc' and signal/slot strangeness notwithstanding).

BeOS always seems to be on the verge of bankruptcy, but then they've been around for most of a decade, so I guess the danger is not really all that imminent. It's funny that most people still think of Be as a "start-up" -- they've been around for longer than companies like Red Hat and Caldera! I'm kind of bummed that they are having such a hard time finding a niche; I'd really like to see them succeed. (That's why I fork over my $60US every time a new version of the OS comes out -- every little bit helps!)

Finally, Linux will not run on my K6-III box -- it'll run for about a minute and then reboot spontaneously (and this is under both kernel 2.2.18 and 2.4.0-test12). BeOS not only runs just dandy but recognizes both the integrated video *and* audio chips.

To be honest, I'm running out of reasons to run Linux at all.

Work Stuff:

Trying to get back in the groove after the long weekend.


It was an interesting weekend. I had fully intended to do some work on my FLTK class library, but I ended up working in BeOS almost the entire time.

BeOS is far from perfect, but I'd forgotten how much I like the API -- it's much like QT, but doesn't have that signal/slot weirdness. The new network API (encapsulated in BNetEndpoint) really takes the ouch out of doing network programming. That said, the Be API doesn't make much use of the C++ standard library -- you can use it, but the API really "prefers" native classes like BString.

One thing I *hate* about BString is that, in order to cast a char* variable from it, you have to do a LockBuffer() on the BString, do your cast and then perform whatever action you intended to take with the char* variable, and then do an UnlockBuffer() on the BString. Weird. I presume that this is done to protect the string from corruption, but it seems rather Baroque and over-engineered to me.

I also found that Berkeley DB 3.1.14 will compile just fine on BeOS, but only as a static library; compiling with -- enable-shared works, but the linker fails when trying to link with the resulting library. I'm probably doing something wrong here since I'm using the BeIDE rather than Make to build the programs (although I did add the relevant -L/boot/home/config/lib -ldb options to the linker...).

Also, the BNetBuffer class is pretty nifty if you have to accumulate data packets (via Receive()) -- the class handles memory allocation and data-appending for you! And it's pretty fast, given that BeOS's TCP/IP stack will not win any speed awards....

All in all, an interesting weekend.

Work Stuff:

Getting ready for the Christmas break. Next week should be something of a dead-zone since most folks will probably take the week off. It should make for some peace and quiet, at least.


Since the weather is so lousy hereabouts and I have a long weekend coming up, I'll have no excuse not to get back to hacking. I also want to finish up another technical article (or at least progress it a few pages beyond where it is right now).

I came home last night and found a tract stuck in my screen door. It was one of those blurrily-printed, badly-spelled pamphlets that start out "DEAR UNSAVED FRIEND..." and goes on to explain how you'll burn in hell if you don't subscribe to this or that religion immediately. I suspect my loonybird creationist "friend" is behind this, and if so, he is going to get an angry earful from me next time I see him. He can keep his nuttiness to himself.

I have nothing against religious people in general (or religions themselves for that matter), as long as they keep their religious beliefs to themselves. It irritates me no end when some smug, self-righteous "believer" presumes to lecture me on how to live my life or passes judgement on choices I make.

If I am indeed doomed to hell, at least there is one consolation: all my friends will be there.

Work stuff:

Same old.


Finally got an article posted here on Advogato, about the sad state of affairs wrt "portability". Judging from the comments I've seen, Linux developers seem to place a higher priority on "freedom" (whatever that means in a development context) than on software robustness or maintainability. There seems to be a certain amount of disdain: sort of a "I'll do what I like and bollocks to you" attitude. This is perhaps inevitable given the average age, gender, and skill level of the Linux developer community.

In my mind, Linux has come to a point where the inmates are running the asylum -- developers are the worst people in the world to judge whether a standard is a good thing or not. Developers have irrational prejudices on everything from text editors to the format of resource files; why should they be any more level-headed regarding GUI APIs? Unfortunately, Linux has accrued a base of people who begin to get snotty and shrill the moment the word 'standard' is uttered, so I don't see any short-term change in this situation.

On an unrelated note, it is *cold* here today: the latest readings on wind-chill is 50 degrees below zero Fahrenheit! *Sigh* At least it quit snowing for awhile, but it looks like we're going to be in the deep-freeze until well into January. This is going to be a long winter.

Work Stuff:

Getting a web reporting interface going today. Also doing some regression tests to make sure I haven't broken anything prior to releasing the next build.


Heard from a good friend yesterday evening who had been laid off (or "dot commed" as he put it, since he worked for a web start-up). I hope this whole dot-com disaster will wake up all the pointy-headed MBAs from Yale, Harvard, and Priceton, or at least the venture-capital folks who have been throwing money at them. Most of the dot-com business plans were so ludicrous that I'm surprised any self- respecting businessperson would take them seriously, and yet look at the avalanche of dotcom start-ups over the past few years. I'd be surprised if more than 5% of these ventures are ever successful.

But I still feel badly for my friend -- he's been trying for a long time to get a stable, well-paying job, and this seemed like a good opportunity for him. However, I'm sanguine: he's smart and motivated, and I have no doubt that he'll catch on somewhere else (hopefully not at another dot-com!).

I spent most of yesterday shoveling snow. And now it's snowing again. *Sigh*. Why the hell did I move to Minnesota? Oh yeah: the job. Why can't I find a good, stable job in a place like Kauai or Malibu?

On a tech-related note, I found out that Linux will not run stably on my K6 machine! BeOS does just fine, but Linux is prone to periodic reboots and hangs. Don't know if it's a chipset issue (this is a SiS530-based machine), but I'll leave BeOS on the machine. If nothing else, it makes a great (and fast!) media box. I stuffed my ATI TV card into it so I can capture VHS or DVD output, and it encodes MP3 stuff fairly quickly.

I still have the problem where I have to dual-boot to use Linux and Win2K on the same box, which is a major pain. Can't have everything, I suppose.

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