Older blog entries for ncm (starting at number 72)

Sorry, rcaden, the Coolness Board has ruled almost unanimously that nothing done in Java can be called cool. Sorry, not even Sodaworks. (One delegate wasn't sure.)

Paolo Carlini will be visiting the Boston area mid-August. Are there any Gcc/C++ Software Libre people around here for him to meet? He's also done fractal compression and real-time control. Meanwhile, my wife and kids will be out of town around the same time, which means I might be able to get out myself.

About political discussion on Advogato... This is a hacker's board. If you have a hackish take on events, reveal it. That applies equally to comments historical, relational, commercial, and biological. For example, if your daughter was just born, have you constructed a frame to control the shape her head will grow into? That would be hackish. Steve Oualline just got $200 plus court costs for the copy of MSWinXP that came with his computer. That's legally hackish.

11 Jul 2003 (updated 11 Jul 2003 at 05:17 UTC) »
Moved. Nightmarish, but it's good to be away from the rats. (I'm ever so glad that rats don't lay eggs.) Same phone number, transferred the same day, but Covad took a week to set up DSL again. (The 802.11 hub I detect in easy proximity won't talk to me.)

Zero-copy C++ iostreams, soon? Maybe in a gcc-3.4.x. But only on NetBSD and OpenBSD, at first, 'cause only they have UVM, so far. (Linux might get it, in 2.8, in a couple of years.) Libstdc++ already has (probably in gcc-3.4) cycle-for-cycle speed parity between streambufs and glibc stdio. (All hail Paolo Carlini!) Native, default large-file support in the iostream interface is more urgent than zero-copy (which doesn't affect the ABI), and ought to appear in gcc-3.4, even if not universally implemented underneath, at first. The gcc-3.4.x series libstdc++ will start impressive and get better from there, and thousands of existing programs will magically get faster.

32-bit CRCs, still? Why do people still use 32-bit CRCs in new protocols? There's a very nice CRC-64 implementation in PostgreSQL, free for the taking.

robocoder: Trust me, you don't want to use C++ Xalan/Xerces. It's irresponsible for Apache to continue distributing them. Gnome's libxml2/libxslt work ever so much better, and are licensed compatibly. (Thanks, DV!)

Apt-get installed Dasher on my laptop tonight. mjg59 rocks.

I/ENTP: Me too. It's pretty common among programmers. The Js tend to become scientists instead, because they tend to jump to conclusions too early to be good software architects. A good programmer has to be comfortable with not knowing until the right time.

23 Jun 2003 (updated 23 Jun 2003 at 06:22 UTC) »

What do you do when the Christian metal band Styrofoam rolls into town in its pearl-white, 40-foot stretch-limo low-rider pickup truck? I don't know about you, but I wake up, relieved.

16 Jun 2003 (updated 16 Jun 2003 at 19:55 UTC) »
You can find a very good puzzle at the ITA Software "careers" page. It's stood much longer than any of the earlier ones. Solve it elegantly and you will likely be invited to work on much harder puzzles.

There's nothing very hackish about musings on capitalism vs. socialism, or their minor variants (respectively) fascism and communism. A more hackish take on capitalism (as expressed in the U.S. and Europe) would be to note that a corporation is, ideally, a robot programmed to exploit differences in perceptions of value by place (trade) or time (investment). The program is the charter, the machine is the financial/legal system, the hardware is employees, equipment, and police, and the environment is the economy. Robot War isn't just a game, it's a simulation of the Real World.

Key observations... The values of the employees are of only minor significance. If they differ from those expressed in the charter and the laws of corporate governance enough to keep the corresponding employees from acting fully in tune with those terms, those employees can be replaced, and indeed, by law, must be. Worse, nothing in the law or the typical charter prevents the corporation applying its full power toward acting to change the law or its application to enforcing the charter. This is a scary fact when the strongest influence on modern voters' behavior is exerted by the enormous multimedia corporations. We see its application in the DMCA and related nefariousness, and indeed in the charge to war in Mesopotamia.

It's not for nothing that science fiction writers have been writing stories about humanity enslaved by the machines we build. Too late, it's already happened.

On a cheerier note, I bought one of those replacement laptop disks that comes with a PCMCIA IDE adapter, and replaced my failing 12G Hitachi disk with a 20G Toshiba, with no problems. This is the fourth drive I've had in this laptop; each has lasted about a year, and has given plenty of warning of impending failure. Since the old drive didn't actually fail, I have a backup. (A policy of annual backups doesn't inspire much confidence.)

Even better, a patch I sent in to the Gcc libstdc++ project that I expected would speed up multi-threaded string operations turned out to make a 30x (!) improvement on certain single-thread benchmarks, on P4s. I really have to start actually measuring my optimizations. :-) Meanwhile, Paolo's work is coming along famously. There's a very good chance that iostreams in gcc-3.4 will be something to be proud of, not an embarrassment as in releases <= 3.3.

I've taken advantage of Bittorrent (thanks Bram) and tvtorrents.com to get to see episodes of "The Tick" for the first time. This involves using things like mplayer or gnome-xine. Isn't it odd that no movie player on Linux allows frame-by-frame stepping, or slow-motion, or fast-forward? You wouldn't buy a VHS or DVD player that lacked those features. They ought to be trivial to implement, but would have been already if that were true. I suspect the underlying libraries' APIs are not flexible enough to do that, a consequence perhaps of the inadequate modeling of time and sequential processes in current languages. Does gstreamer's API allow it? (The Debian packaging of gstreamer is broken right at the moment, making it just a little too much trouble to find out for myself.)

I see that U.S. White House Director of Communications Ari Fleischer is retiring from his post: "There's this tremendous opening right now in Iraq," he gushed, "I have to jump on it before somebody else gets it. They're big shoes to fill, but I'm sure I can do the job."

The Debian Mentors page has a wonderful quote: "Ignoring this [advice] may cause panic attacks, rage and finally insight." I wonder if advice on good security practices would be better heeded if it was accompanied by promises of "in-depth education in your spare time" instead of just break-ins.

mathieu: The purpose of the head-exploding power of C++ templates is not to enable incomprehensible code. Rather, it's meant to be used to write really easy-to-use but powerful libraries. The STL is a good example of this, and the Boost.org library contains myriad examples more (along with some perhaps overambitious components that are frighteningly powerful but not necessarily so easy to use).

Looks like I was wrong about ghostscript fonts and psfontmgr. What I needed was to look at the PDF version of the document. For some undoubtedly excellent reason, the same document looks awful as a ".ps" and wonderful as a ".pdf".

I was tearing my hair out trying to find why the rendering in gv and every other ghostscript-based PDF viewer had come to be entirely unreadable on my laptop It's fine on my desktop machine at work. Same versions of all the font packages, ghostscript itself, and viewers.

Finally, I ran "dpkg --get-selections | grep font" to see what I might have different. Then, I said "apt-get install psfontmgr", which upgraded from version 0.11.0 to 0.11.1, and all is well again. If you're not happy with how troff output looks in ghostscript, maybe you have the same problem.

It seems as if we might get a partial fix for the next Glibc thread library breaking every existing exception-safe and thread-safe C++ library. There's no sound reason to break them at all, but reason doesn't seem to figure.

30 Apr 2003 (updated 30 Apr 2003 at 20:52 UTC) »
chalst: Your null hypothesis fails. fxn rated me Master, incorrectly. It's fixable, but that would be cheating.

OK, there's one more feature I'd like in Galeon 2: disabling the goaway box in tabs that are not active. (In addition to emacs edit keys, and edit/undo, that is.)

I have a friend in Italy, a graduate student in physics with a master's in EE, deep expertise in image compression, and experience with instrumentation control and Standard C++, looking for part-time programming chores. Please let me know if you can send some work his way.

27 Apr 2003 (updated 27 Apr 2003 at 14:24 UTC) »

Having finally got DRI working on my laptop's ATI Mach64 chip, I wasted enough time playing tuxracer to trigger back spasms. Back spasms are no fun.

I also installed the new galeon 1.3.4. It works surprisingly well ("for a dead project"), but using emacs-style control characters in this edit window, it keeps popping up random windows. That's very annoying; I've also lost all the text twice. Looks like I won't need to switch to epiphany, though. Anybody who knows the galeon authors can tell them that once they get emacs edit keys done, they can stop. It's good now. (Also, Undo would be nice.)

23 Apr 2003 (updated 23 Apr 2003 at 16:28 UTC) »
mathieu: There are two really superb books on C++ template techniques now. The earlier is Alexei Alexandrescu's "Modern C++ Design", and the newer is Vandevoorde and Josuttis, "C++ Templates: The Complete Guide". Probably the latter is more accessible, where the former is more likely to make your head explode. You must not miss the Boost.org MetaProgramming Library (MPL), and its related Lambda library and C Preprocessor Library(!). Your head will certainly explode (but in a good way).

I looked into graydon's new source-code management project, monotone. Wow. Such clean design and clean code. I learned a lot just from the list of libraries he uses.

I finally got X Direct Rendering Infrastructure (DRI) working on my laptop's ATI "Rage Pro LT" (mach64). I had to start up a second X server on vt8 at 800x600, 16bpp, because the driver demands three buffers and the laptop has only 4M of SGRAM. (I switch back and forth with ctrl-alt-f7/f8). It renders glxgears at 248 frames per second, instead of just 100. (Whee.) Unfortunately the driver's XvImage support is buggy, so that in rendering mpeg2 and sorenson3 the right eighth of the image is just a copy of the column next to it, when I play the new Matrix trailer. (Maybe my core X server is at fault, I didn't replace it -- I just dropped in modules from the "right" one.)

Tried compiling linux 2.5.68. PPP modules generate lots of warnings, but seems to build fine otherwise. I didn't find a driver for my Adaptec 1480 Cardbus SCSI interface, and I gather it wouldn't tolerate ejecting my PC-Card CompactFlash adapter, but hey.

Streambuf operations in gcc-3.4 may end up substantially faster than stdio in glibc-2.3. All praise to Paolo Carlini and Jerry Quinn.

It appears that the glibc people have implemented new Posix thread support in a way that is incompatible with C++ semantics -- they seem to have implemented thread cancellation that walks up the stack running destructors but ignoring catch blocks. Deeply weird.

I just found out that somebody rewrote Netcat from scratch for the OpenBSD project. Time to switch! Unfortunately it lacks the Debian "-q" option that makes it usable for my projects. Fixable.

Congrats to DV on another libxml triumph.

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