Older blog entries for mrorganic (starting at number 251)

21 Sep 2003 (updated 21 Sep 2003 at 22:26 UTC) »
berend: As the author of the rant on the main page, let me respond. COM is a horrible botch by any measure. I have written C++ CORBA clients (using the TAO toolkit, which is excellent), and I guarantee you that writing CORBA is a hell of a lot cleaner and more consistent than COM/ATL. And with TAO, it's more performant and more secure as well. That's not bloviating, berend: that's a simple fact, and I can back it up with IDL and code samples. Care to take me on? (You'll lose, I promise you!)

You suggest that COM was a good idea originally, but technology has made it obsolete. I disagree. COM was never a good idea. It violates the KISS principle, is badly designed (it's a binary rather than a protocol message standard) and badly implemented (see my Registry rant).

COM sucks. It has always sucked, and always will suck. It was a bad, short-term solution that Microsoft forced everyone to accept.

Sun is evil. Need proof? Read this interview. Basically, Sun says that Linux is worthless as a server and that you should (quelle surprise!) run Solaris instead. Oh, sure, they're willing to use Linux-originated technology like GNOME, Evolution, and so on, but God forbid you actually run this stuff on Linux! You should instead give your hard-earned money to Sun, who needs it far worse than you do.

Sun will take the work and sweat of thousands of open-source programmers (almost all of whom were using Linux to develop the software in question), incorporate it into a slightly-modded "Java Desktop" (little of which is actually written in Java, by the way), and sell it at a profit without acknowledging the people who enabled them to get there. This is an amazingly uncool thing to do.

Now that Bill Joy has left Sun, any remaining geek-cred they used to have is now gone.

19 Sep 2003 (updated 19 Sep 2003 at 17:08 UTC) »

Ah, the pleasures of pre-release code. It makes me glad that I now do limited-release betas before final release: we caught two potentially serious bugs and one formatting irritant that, while minor, would have led to a firestorm of bitching by the users.

With any luck, I'll do a final release early next week.

Oh, and: Avast, ye scurvy dogs! Batten the hatches and hoist the Jolly Roger! Grog and hardtack to all, me hearties! Yarrr!

Some interesting news from Borland about their new C++ tool: CBuilderX. The IDE is Java-based, the VCL seems to be missing in action, and it's unclear at whom this tool is aimed. Embedded developers? System coders? Who?

As a longtime user of C++Builder, I am decidedly ambivalent about this change in direction. I never much cared for the Visual Control Library (VCL) -- it was an Object Pascal library, written for Delphi, and shoehorned into C++ via some really nasty hacks and compiler extensions. The C++Builder IDE (also the same as Delphi's) leaks memory and crashes at least twice a day. And don't even get me started about the various database technologies Borland has adopted and abandoned over the years: BDE, ADO, IBX, DBExpress (although the last may survive into the new product).

For all the problems C++Builder had, it was a good RAD tool -- you could quickly get a GUI database app and running, much faster than you could with, say, Visual C++. And now it seems that Borland has made the decision that C++ is no longer an appropriate RAD tool -- if you want RAD, you will have to use Delphi (or whatever .NET incarnation of it comes along).

What concerns me about this new product is that, for the money, it doesn't bring much to the table. You get a bloated and slow Java IDE, huge resource requirements, no GUI builder, etc. Borland is intending to use wxWindows as the GUI library, which is a good thing (it's a good cross-platform GUI library, if a bit too MFC-ish for my taste); but there's no GUI builder, and even if one appears, it probably won't support VCL-to-wxWindows conversions -- the differences are probably too great. So you don't have much backward-compatibility either.

It seems to me that with a copy of EMACS, GCC, and wxGTK, I can do the same thing Borland is offering -- only I can do it for free.

Lots of discussion on this topic here.

Have I mentioned that I hate COM? I haven't? Well, let me expound: I hate COM. COM is a feculent, festering boil; a gross chancre, a steaming turd, a flyblown pile of sewage. Do I hate it? Boy howdy, you better believe it!

I'll write an essay someday expounding just how and why I hate COM, why COM is most of the reason that Windows is not only insecure but insecurable even in principle, and why component technology in general is a badly-thought-out paradigm.

But for now I'll just say: COM sucks.

I used to enjoy MetaFilter. It was a place where you could see some truly offbeat and interesting stuff -- kind of like MemePool, only even more esoteric. But ever since George W. Bush became president, the site might as well be called IHateBushFilter, and the tenor of the discussion has turned shrill enough to drive away even fans of The Nation.

Too bad. But there's always Fark, which is both funnier and more interesting. And let's not forget James Lileks, whose Institute of Official Cheer is a wonderful way to burn up a lazy afternoon.

(When did the Left become so shrill and humorless, by the way? Even Al Franken can't seem to crack a decent political joke anymore; he's just as bitter and pissy as the rest of them.)

I've had some real problems with CD-ripping. CDParanoia can't cope with a couple of spoken-word CD's that I have, and in any case, cdparanoia is slow. I don't know if I just have a crappy CD-ROM drive, or if Linux has a dodgy IDE-ATAPI driver, but whatever the cause, it makes the whole rip-encode cycle very painful.

This is one of the few times when I'd really prefer a SCSI CD-ROM rather than an ATAPI one.

13 Sep 2003 (updated 13 Sep 2003 at 11:56 UTC) »

An interesting question of coding style. In C and C++, some people write the strcmp() function as follows:

if (!strcmp(foo,bar)) {
    /* do something interesting */

This makes the code hard to read, in my opinion. You are checking a positive result -- in this case, that two strings are equal -- and yet (because C and C++ treat FALSE as zero and a non-zero value as TRUE) you must check a negative result. This is highly non-intuitive, and I think it should be considered bad coding style.

Instead, the code should be written this way:

if (strcmp(foo,bar) == 0) {
    /* do something interesting */

It's not that much more typing, and it's far clearer as to what the intent of the conditional really is.

But that's just me.

Sigh. That'll teach me to post on political topics on Advogato. Arguing politics or religion on the internet is the absolute pinnacle of pointlessness. That's why MeFi has turned into such a sump in the last couple of years. No minds are changed, harsh words are bandied about, and hard feelings ensue. I should know better by now.

But enough of that.

I finally figured out how to manage and play Ogg Vorbis files on my Neuros via Linux. It turns out there are a few tricks:

1. You need a recent kernel. I compiled and installed 2.4.22 on my Debian box with USB mass-storage drivers compiled in.

2. You need to mount the Neuros with the "-o sync" option. Asynch updates flat-out don't work with the Neuros. I'm not sure why.

3. You need to encode Vorbis files at about -q 3 or -q 4. I had a bunch of tunes encoded at -q 6, and they would play fine for a bit, but start stuttering and skipping after a minute or two. -q 3 files play fiine. I suspect that the Neuros doesn't have enough horsepower to decode high-bitrate files.

On the updside, the sound quality of -q 3 vorbis files is very good -- as good (or better) than 192-bitrate MP3 files.

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