Older blog entries for mrorganic (starting at number 137)

Work Stuff:

Still trying to get a build done.

Personal:

Caught Steve Jobs' MacWorld SF keynote this morning (archived and rebroadcast from yesterday -- I wasn't crazy enought to try and tune in live). Lots of interesting stuff, especially the iDVD software. Video copying and creation is getting cheaper at a geometric rate, which scares the shit right out of Hollywood. I can forsee a time (maybe only a few years from now) when average joes and janes can create their own professional-looking movies and distribute the movies themselves, bypassing Hollywood entirely. And more power to them.

I'm looking forward to this time because I think it will allow artists more full expression than ever before. We may not see many 100-million epics, but we *will* see lots more avant garde stuff, more experimental stuff, and we will all get more exposure to foreign films. All of which is a Good Thing.

You can say what you want about Apple, but they're always out there a couple of steps ahead of the rest of the pack. I don't use my Mac as much as I used to (although I expect that to change when Mac OS X comes out), but I've always thought that it was the most trouble-free computer I've ever owned. It just works. (Although it also crashes a lot....)

Another thing is that iTunes (dumb name for such a cool product) is *free*. I plan to install it sometime over the weekend and see if it works as well as the demo made it sound. If so, I can turn my old Mac into one hell of a jukebox!

And man, I'm lusting after that new Titanium powerbook in a major way....

Work Stuff:

I want to get a test build done before Friday and do some unit testing of some of the modules. I might be able to deploy week after next if all goes well.

Personal:

I finished watching "Cosmos" on Sunday afternoon. I really enjoy that series -- perhaps more so now than when I watched it the first time because now I understand more of it.

Not much hacking over the past couple of days; my wife and I are both fighting colds, so I tend to spend most of my time sitting on the couch huddled under a blanket, coughing and sneezing and wishing I felt better.

Still watching "Cosmos" and hacking away on BeOS. My wife is out with a friend, hitting all the junk shops and thrift stores in town.

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.

Personal:

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.

Personal:

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

Personal:

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.

Personal:

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.

Personal:

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.

Personal:

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.

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