Older blog entries for mrorganic (starting at number 109)

We still don't know who our next president will be, and I'm caring less and less with every day that goes by. That's a sad commentary, too, since I firmly believe that people get the government they deserve -- what does this whole fiasco say about us? Our Constitution never promised us a good or efficient government, just a representative one. And that's what we got.

Work Stuff:

Writing a quick little interface to pull status-change files from the host and update the database. Should be largely done by the end of the week, but the file-format may need to be updated.

Personal:

I have some letter-writing to do tonight. Rather than fight with Applix Words, I'm thinking of going back to straight ASCII with LaTeX. LaTeX is still the best solution I've ever found for writing well-formatted documents. I've tried LyX, but I still prefer a plain- vanilla text-editor; just old-fashioned, I guess.

Now that my requirement and design docs are (pretty much) complete for my personal project, I'll probably start some preliminary coding this week -- I'll start with some GUI prototype screens since I'm still not sure how I want to structure my interface. FLTK may not work the way I want it to; the widget selection is kind of meager. GTK+ is a lot better in terms of widget support, but that would mean I'd have to use GTK-- (not a horrible thing, by the way, I'm just kind of cool to the design of the wrapper).

Work Stuff:

I had to defer a class on COM/ATL in order to get some stuff done with my project. I hate to miss the class, but it's not really all that critical to the work I'm doing and I can't afford to lose another week's worth of work. I'll catch the class next year sometime.

Personal:

It was a good holiday -- my wife and I really enjoyed our guests and we had a great Thanksgiving dinner. My wife's birthday is today, so I need to remember to have flowers delivered to her workplace today.

Predictably, I didn't get much hacking done over the holiday weekend. I *did* work some with FLTK -- it's a nice toolkit as far as it goes, but it lacks some widgets that I've grown accustomed to having. Still, it's a nice modular toolkit that works well for the kinds of GUI projects I usually do. I'll probably stick with it until Inti is stabilized.

Thanksgiving day today. I plan to stuff myself with good food and do as little real work as possible.

Work stuff:
Clean ups and general bug-fixing. No new features or builds until after the Thanksgiving holidy.

Personal:
Our visitors showed up last night, so I expect my hacking time-slice to decrease dramatically over the next few days. I'd like to do a bit more work with FLTK; there's something enticingly minimalistic about it that speaks to me. The source-code examples it comes with are, frankly, pretty horrible: global vars all over the place, no comments, and so on. Ugh! The overall design seems to be pretty good, though.

Work Stuff:

I've finished cleaning up the middle-tier architecture; it doesn't work any differently, but it's much more modular and efficient now. Plus I fixed a transaction bug that could have bitten us down the road. I've got a short week this week (only Monday and Tuesday), so I need to kick in the afterburners and get this stuff done.

Personal:

Until I can get a KVM switch, I've moved my old Linux box (a P120 w/ 48MB of RAM) into the utility room. It's just too much hassle switching cables back and forth, and I'm a little worried that the connectors will get fatigued. My main box (a Celeron 500) will now have to host both my Win2K and my Linux stuff. I generally don't like to dual- boot, but I suppose I can live with it until I can get a KVM switch. Belkin makes a good one, so maybe I'll order that.

It's amazing how attached you can get to some particular GUI widget. I really like the TreeView widget, but it seems that FLTK doesn't have one! It's not really that big an issue, it was just kind of surprising. There's a lot to like about FLTK, by the way. It's a C++ toolkit like QT, but much thinner. It's designed to be statically-linked (although it works fine as a dynamically-linked library too), so all dependencies are kept to a minimum. It has the look'n'feel of the old XForms toolkit somewhat, but cleaner.

At some point, I suppose, I'll have to bite the bullet and settle on one toolkit or another. Here are the strenghts/weaknesses of the contenders as I see them:

Motif
=====

Blah. Not even under consideration.

QT
==

Advantages: well-designed, fast, and elegant. The Designer is a great tool for building GUIs and seems to generate pretty good code.

Disadvantages: Needs a preprocessor (moc) to implement the signal-slot mechanism. Not so much an operational issue, but it can generate some pretty ugly code. Also, performance can suffer due to this mechanism, although in normal use it isn't really an issue.

GTK+
====

Advantages: Pretty good object design, considering it's written in C. Lots of widgets. Pretty fast. Glade is coming along as a GUI builder too -- it's usable for about 90% of what I need.

Disadvantages: no good C++ bindings yet. GTK-- is not quite there yet, and Inti seems to be even further behind. GTK+, like Motif, relies on callbacks for events, and there are inherent type-safety problems with this.

FLTK
====

Advantages: very small and lightweight toolkit. Native C++ implementation (although it does use a C-style callback mechanism for events). FLUID, the GUI-builder, is pretty good.

Disadvantages: the widgets aren't quite as extensive as in QT/GTK+. Callbacks are used for events, and the STL is not leveraged.

Personally, FLTK seems to be a contender: it's a C++-native toolkit, it's small, and it seems to be well-maintained and robust. It won't integerate into GNOME/KDE as well as I might like -- DnD is sure to be a problem -- but then again this project doesn't really need a high level of integration anyhow.

Work stuff:

Lots to get done today. I'm having some conceptual problems with a certain dialog (it's intended to allow users to choose one or many classes of people to be assigned to a given event). The functionality is fine, but I'm dissatisfied with the UI -- it seems a bit counter- intuitive even to me. Right now I'm using a standard VCL listbox control as both the Available and Selected list; I may switch to using a StringGrid due to the greater flexibility it offers for layout. Also doing a lot of cleanup work on the middle-tier component and making it more modular.

Personal:

The hard disk on my Linux box seems to have recovered. It's not making ugly noises anymore, at any rate. I opened the case and made sure all the cables were well-seated and that the drive itself was firmly mounted in the bracket. Maybe something was loose, I dunno. (Just to be safe, though, I tarred and gzipped everything on that drive (it's mounted as /usr) and archived it.

If this hard drive *does* croak, I think I've got an 800MB ide drive floating around somewhere that I pulled out of an old Packard Bell machine. Or I can just quit being miserly and buy a new drive! (...nah.)

Books:

I've been thinking about computer books lately. My shelves downstairs are stuffed with all kinds of technical books -- big, fat, expensive technical books. Most of them are obsolete or fast becoming so; in another year I'll probably have to throw them out because they won't be useful any more.

Yet the books I intend to keep, the books that keep on being useful year after year, are the skinny little tomes like "The C Programming Language" and "Programming Pearls".

There's got to be a fundamental truth in there somewhere. As a technical writer, I find that many technical works are very shoddy: quick hack-jobs aimed at time-to-market relevance, not comprehensiveness or even accuracy. Publishers seem to want to sell by weight -- some of those damned books must weigh twenty pounds! (The champion bruiser books on my shelf is Petzold's "Programming Windows" and the companion "Programming Windows with MFC" by Prosise -- they run about 1500 pages (!!) apiece.)

My favorite publisher used to be O'Reilly, but I've found that their formerly-excellent lineup has begun to suffer some erosion of quality. Addison-Wesley books are generally very good, albeit expensive. Wrox books are a mixed bag (although their GTK+/GNOME book is very good). IDG books (the "Bible" series most especially) are pretty mediocre -- the "Dummies" books are almost uniformly bad. QUE and SAMS books, in my experience, suck the old hairy root. ("Learn Brain Surgery In 7 Days!") Prentice-Hall puts out pretty good books.

The upshot I come away with: buying pure reference works is probably a waste of money. "Dummies"-style tutorial books are all but worthless and are probably more harm than help. The value of a book to me is often inverse to its size -- most of my favorites come in at around 250 pages.

I see that 'Titan A.E.' is finally out on DVD. Although the movie never garnered very good reviews, I kind of enjoyed it. I'll probably pick it up sometime over the weekend.

Last night I archived a bunch of stuff off my Linux box -- old source trees, graphics files, programs I never use, old documents I want to keep but don't want cluttering up my hard drive. My Linux box only has about 3GB of hard-disk spread over two 1.5GB IDE drives, and this operation freed up about 500MB of space. I probably could have sprung for one of those new 40GB drives, but what's the point of spending the money? The set-up I have now is plenty fast and works just fine; it just needed a bit more space.

I'm growing less enamored of Applix Office by the day. I don't know if it's because I updated my GTK+ libraries to 1.2.8, but all of a sudden I can't keep Words running for more than a few minutes at a time. Try to open a text file -- the app dies. Try to print a file -- the app dies. Try to save a file in RTF format -- the app dies. And it goes on like that. I'm about ->this close<- to deleting that crap off my hard disk and sending Applix a very nasty note. I just want to make sure it's nothing something I'm doing before I blame Applix.

Work stuff:

Same old same old.

Personal:

Whew! I finally finished a STL programming article I'd been working on for some time. It took a lot longer than I had anticipated to complete, mainly because I kept getting interrupted with other things. Normally I find technical writing to be fairly easy (at least when I know the subject well), but this one was like pulling teeth!

I subscribed to the GTK-- mailing-list, and will monitor that for a few weeks until I feel ready to start asking intelligent questions. I have to say that the design still seems a little iffy to me, but I don't want to pass final judgement until I have a better understanding of it.

Work Stuff:

I found a nasty memory-leak in a team-member's code (which frankly he should have caught earlier; all it took was a quick run of the profiler to nail it). It irks the crap out of me when programmers are lazy, sloppy, or both. Grrrrr!

Personal:

It looks like Havoc has been pulled into GTK+ 2.0 development and hasn't been updating Inti for a while. The way things are looking, Inti won't be ready for serious use for quite some time. That leaves me with GTK--, which isn't great but is much further along than Inti. I may roll up my sleeves soon and attempt a larger project with GTK--, just to see if I can adapt myself to it.

Today was not a fun day.

Work Stuff:

Many disasters. Less said the better. Sigh.

Personal:

'Red Planet' sucked, but not as badly as 'Mission To Mars' did. It'd be okay as a renter, if you can get it for $2 or less. I felt kind of cruddy Sunday, so I spent the afternoon in bed and consequently didn't get much coding (or housework) done. Tonight I'll try and catch up some of the stuff I left undone over the weekend.

I'm re-reading Hogan's "The Code of the Lifemaker" right now. I like that book more every time I read it. It's much stronger than the sequel, "The Immortality Option".

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