Older blog entries for ncm (starting at number 433)

Emacs24 vs. GDB fail

I upgraded to Emacs 24, and interaction with GDB 7.4 (in "gud" mode) failed. It seems to be fixed after I enter "set interactive-mode on" in gdb. (It took an unusually long time to find that.) There doesn't seem to be a command-line flag for it. I don't see an obvious way to get emacs to feed it that command line, without hacking. I suppose I could put it in a gdb startup script, conditional on "mi" mode, but I'd rather they just fix it.

Isn't Btrfs ("butterfish") supposed to be close to ready for serious use? I had to drop it because I was getting kernel oopses for very workaday disk writes.

I have been buying used Thinkpads on craigslist.net. Experiences have been mixed, but thinkpads are very fixable. A friend has a service collecting scrap metal and hates to melt down equipment that people need the way it is -- big electric motors, stainless-steel fixtures, collectible rarities, but he hasn't had any way for those people who need the stuff to tell him so. I got a laptop and set it up for him so he can put the stuff on craigslist and, eventually, ebay, and quadruple his income. I've been pleasantly surprised at how well a Wheezy install handles his bluetooth phone/camera, and wifi, and a Sony camera via USB. It's funny, though, how a six-year-old ATI radeon "gallium" X1300 is only just getting 3D acceleration support in the 3.4 kernel.

As part of a new wave of setting up laptops for newbies, I have been exposed to Gnome 3. Thank <deity> for Mate and Cinnamon. (Sorry, Xfce, I tried hard to like you.) The Gnome crew could have avoided all the unpleasantness by forking, themselves, and handing off Gnome 2 to a responsible party. On the other hand, if they had the good sense to do that, they might have had the good sense not to ruin Gnome in the first place, and then the fork might not have been needed at all.

I saw that "liberal vs. conservative software engineering" rant. It's BS. We use loose languages for small, short-lived, ill-specified, performance-insensitive, non-critical and/or one-maintainer projects -- i.e., nearly all projects. We use strict languages and processes for "the rest", the 1% that demand serious engineering, and as much attention as the rest combined. An engineer moves freely between those spheres, using a loose language where it suffices. What that guy calls "liberal programmers" are just people who gravitate to the former, and like to imagine that it constitutes all projects. Maintaining a project that should have been seriously engineered because it ranks among "the rest", but wasn't, is a special hell that I almost wish on that guy.

I got Minecraft working on my son's Debian setup. It was annoyingly but very familiarly niggly, like all Java programs: I had to use Oracle's own JRE, none other would do. I might get some "mods" working, one of these weeks.

The Seagate in my two-year-old laptop began making terrifying cries and grinding noises this weekend. Luckily, it settled down long enough to image.

3 Jun 2012 (updated 3 Jun 2012 at 17:30 UTC) »

Congratulations to Chris Granger on his successful Light Table IDE Kickstarter project proposal. It is inspirational. I find myself inordinately pleased that he didn't call it LightTable.

Unfortunately, it does not appear that it will be very useful for me or for people like me, programming in type-enabled languages like C++ and (one can hope) Clay, or even C, any time soon. Furthermore, the Java-world heritage implies a tolerance for the slow and stupid (e.g. Eclipse). There ought to be room for a complementary project tuned for those of us working with C++. To that end, I have registered luxmensa.org. (I suffer a fond delusion that Latin-geeks will admire the attempted pun.) The name is meant to imply a spin of the Light Table idea for Real Programmers. I'll hand the name over to anybody who can use it better than I can.

The problem, of course, is that your typical IDE is intolerable for anybody serious about working on code. Tiled windows? Mouse-based editing? Please. We need interaction with shell pipes, embedded editors including real emacs and vim, a deep awareness of git semantics, maybe auto-generating and auto-running of tests and micro-benchmarks of code fragments during editing. The useful features are those that make hard things easier, not those that make easy things mindless, or that automate what would best not be done at all.

Firefox still crashes regularly, but now less predictably. I sometimes wonder if it is AdBlock or NoScript that is responsible for the worst leaks, but I recover my wits quickly.

24 Apr 2012 (updated 24 Apr 2012 at 10:18 UTC) »

I have been running Gnome since 1998. In response to a need for a current version of Libreoffice, of all things, I finally "upgraded" to Gnome 3, and immediately switched over to Xfce. The result has not been entirely satisfactory. Loss of emacs edit key bindings turned out to be fixable with a cheesy bash command. I'm not yet certain that middle-button emulation will be as easy to restore -- I'll have to restart X to find out. The Gnome battery-condition indicator was better than Xfce's, and I miss Gnome 2's performance-graph panel applet. I'm half-tempted to give Gnome "fallback mode" a try, but then I remind myself Gnome can only get worse, while Xfce might actually get better. And who knows? I have yet to try Lxde, E17, and KDE. This feels a lot like the old days.

Firefox still crashes weekly when quiescent, most typically in GC cycle detection. I tried running with ulimit 2G, and it crashed immediately. With 3G it runs for a day or two. It's hard for me to contemplate how absurd this is.

The first functional language that does not depend on GC might well take over the world

8 Feb 2012 (updated 8 Feb 2012 at 11:54 UTC) »

I thought the potentially very interesting Clay language was dead when its web site and mailing list disappeared, but in fact it just moved. It turns out, in the meantime, that they have just released a version 0.1 compiler, a front end for llvm.

When Magellan got to Tierra del Fuego at the southern tip of South America, the people he found there wore no clothes, and would lie down on a snowbank to sleep. If they could do it, why can't we? The answer, as usual, is practice. I determined to raise my base metabolic rate, initially by sleeping with one arm out on top of the blankets. In an astonishingly short time -- a couple of months -- I was finding any sort of blanket too hot, and now a sheet is plenty cozy at 60°F/15°C/298K. I still have a way to go before sleeping in a snowbank, but I have not needed a coat this winter.

Upgraded to firefox 10. Now it crashes unattended, again. 8 and before usually crashed in GC cycle detection. 9 didn't crash unattended, but crashed in regular use, somewhat less often. Now, the 10 crashes seem to have something to do with timer expiration. (Recall this is 32-bit ff running on 64-bit linux.) Maybe now it's just not fooling around for as long after it's gone corrupt. I count this as progress. [I spoke too soon. It crashes attended, too, and in the cycle collector; this time after barely 16 hours running; VSZ 3359988, RSS 2457468.]

Firefox 9 has survived a second week and, more wonderfully, another totally quiescent weekend without crashing. Will wonders never cease?

4 Jan 2012 (updated 4 Jan 2012 at 04:13 UTC) »

Firefox 9, astonishingly enough, survived the weekend sitting totally quiescent on my office machine. Release 8 achieved this very rarely, and crashed shortly after anyway. Congratulations to somebody. Its VSZ is almost 2G, and its RSS is 1.5G, but I don't care -- I have 16G here! But I do wonder what it needs all that RSS for. On my laptop running the amd64 build, it blows right past 2G (at VSZ 2.8G, RSS 1G atm) and thrashes abominably.

You know what they say, though: "If you're not experiencing abominations, are you sure you're alive?"

My great achievement in the final days of 2011 was to replace the motherboard in my son's craigslist-$80 simulator box for $60 plus $11 for a quieter fan, enabling upgrade from a P4 to an old Core2.

2 Jan 2012 (updated 4 Jan 2012 at 04:17 UTC) »

I rented a DVD of Woody Allen's Midnight in Paris and tried to watch it with libdvdread etc. Totem failed, VLC failed, Mplayer failed, but Smplayer succeeded -- for a while. At some point after an hour in, it went a bit crazy and gave up. Apparently many people have been having this problem with certain new movies, lately. I'm guessing SONY has hired somebody to find bugs and too-strict interpretations in Free DVD player software, and provoke them in new movie releases. Anyway, if you want Midnight in Paris, you may get better results by downloading the XVid than buying the disc. To SONY, paying customers are scum.

29 Dec 2011 (updated 29 Dec 2011 at 02:28 UTC) »

My wife had outpatient surgery recently, which involved a nerve block in one shoulder, deadening her arm for the rest of the day. Surprisingly (to me) that was plenty of time to develop phantom limb syndrome, where it feels like there's an invisible arm in place of the real one, that you can't control, and that gets agonizingly knotted and cramped. Vilayanur Ramachandran invented the "mirror box" treatment, where a mirror is held vertically in front of you, perpendicular to your body and between your resting hands. Your good hand is visible only in the mirror, so its image looks like it is the other hand, and that is enough to allow you to control the phantom limb. It worked.

32-bit Firefox 8 running under 64-bit Linux still crashes when left unattended for a couple of days. Running it under gdb, it usually segfaults in an out-of-memory handler while chasing cycles in the Javascript garbage collector.

Running firefox under gdb takes a few steps. You will need the debug symbols, e.g "apt-get install iceweasel-dbg". In gdb,
(gdb) file /usr/lib/iceweasel/firefox-bin
(gdb) handle SIGPIPE noprint nostop
(gdb) maint info sections
(gdb) add-symbol-file /usr/lib/debug/usr/lib/iceweasel/components/libbrowsercomps.so 0x8049480
(gdb) run

The number 0x8049480 above is the first number in the line of output from "main info sections" that contains ".text", and varies from one build to the next.

18 Nov 2011 (updated 18 Nov 2011 at 02:13 UTC) »

Neal Stephenson's newish book REAMDE is classic romp in the Cryptonomicon vein: unpredictable, stuffed with authentic local detail and engaging, slightly larger-than-life characters, and (almost) deadpan send-ups of practically everything, not limited to: jihadists, a junior MI6 agent, Russian mafiosi, Hungarian and Seattlite hackers, Chinese gold farmers, overprolific fantasy authors both trashy and donnish, a palletload of bricks of RMB, leased business jets, an aging Iowan former smuggler and MMO startup founder, a proto-Pak Chechnya veteran, US spooks competent and not, and north Idaho anarchists, among others. The central theme of the book, though, appears to be the adjective "backseat" used as a noun in place of "back seat". He seems to be needling somebody who criticized the usage. "Cooling their heels" figures prominently, too, but it's less obviously deliberate.

I have finally caught Iceweasel in the act of crashing over the weekend when it's unused. Probably Mozilla don't get many reports of this particular failure because I'm running a 32-bit build on a 64-bit kernel. Apparently it runs out of address space during a GC cycle-detection pass. On a regular 32-bit host it would get OOMed long before that point. The 64-bit version happily blows past such arbitrary limits until it takes to thrashing.

13 Sep 2011 (updated 13 Sep 2011 at 10:09 UTC) »

I'm tardy mentioning that this is the time of year when we commemorate the day that the U.S. descended into abject cowardice, bombing thousands who had nothing to do with the event, and shredding every hard-won liberty gifted to us by our forefathers. The number of individuals killed in that event was about equal to the number who died the previous week, and that week, and each week since, of lung cancer. The individuals personally responsible for those drawn-out, painful deaths walk around loose to this day.

On the up side, this was the first Monday in several weeks that Firefox hadn't crashed over the weekend while I was away. I guess this means 6.0.4 is better than 6.0.2.

I re-implemented rsync globbing recently. I think my code is probably better than Tridge's, but I haven't looked yet.

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