Older blog entries for ncm (starting at number 417)

6 Apr 2011 (updated 6 Apr 2011 at 19:20 UTC) »

Hating every existing language is the first glimmer of awareness.

The second comes when you have started inventing languages meant to be better, and find that they are all worse, except the ones that are far, far worse. They share almost all the fundamental flaws of the language you hate most, but with extra fundamental flaws of your own. If you are perceptive enough, you discover you have no idea what really makes a language useful.

The third comes when you realize that no one language is right for everything or everybody. You begin to think your only hope is a completely specialized language, such as one uniquely suited for left-handed color-blind cartoonists, or for cats. ("No one could reject a language made just for them!" But they do.) Real problems refuse to confine themselves to what your language is supposed to be best at, and keep washing over into where it is worst. ("But it has first-order functions, and it's case insensitive! Who really needs speed anyway?")

The fourth is when you realize that ideology works no better in language design than in governance, and let real problems constrain the design. Creativity thrives on constraints. Discovering what are the real problems turns out to be way harder, even, than getting a language to help solve them without itself becoming a worse problem. Poisonous complexity emerges at every turn. Formalisms stubbornly refuse to solve problems all by themselves, or prevent them.

Finally you realize that while luck is the lion's share of what makes a language successful, failure can always be traced to fatal flaws the designer was (and usually still is) blind to. First your language has to be good enough, which is nearly impossible, and then it has to be impossibly lucky on top of that. Then you have to work hard, too.

People use a language despite everything about it. Now, as in any quest for enlightenment, we return to the beginning.

1 Apr 2011 (updated 1 Apr 2011 at 12:14 UTC) »

This is the first laptop I have ever had whose battery was good for more than 45 minutes. It says it's good for three or four hours, and seems to be. I know I have mjg59 and arjan to thank for this, among others.

I'm getting increasingly testy toward people who think they know all about radiation exposure, and how many millisieverts they can absorb without worrying. (I'm talking to you, Ryan.) It's not about radiation you can measure with your handy geiger counter or dosimeter. It's about radionuclides, isotopes of common elements that get incorporated into your body, in your lungs or bones or thyroid, and then sit there irradiating one spot day in and day out. An invisibly microscopic speck of plutonium in your lung exposes you to a tiny, tiny dose of radiation -- practically negligible, by Federal standards, but the alveolus where it lodges is where the cancer will start, ten years on.

One of my daughter's chickens was eaten by a "ring-tailed cat", a native Californian predator not closely related to Felis cattus. I had never heard of them, but '49ers were known to have kept them as pets.

Google has finally jumped the shark. They actually hired James Gosling, whose last gig was to drive Sun Microsystems into penury and Oracle. Now, Sun seemed to last as long after he started his campaign, there, as Google likely had left anyhow. But! we now know the instrument of their doom. (Notice how, nowadays, Google Maps often doesn't finish sending its map tiles? Hmm. And they hired Avery, too. Double hmmm.)

This is the place where I complain about Linux Inotify. Would it have been so hard to report the inodes?

Can somebody tell me why Linux distributions continue shipping the terminally ugly Liberation fonts, when Linux Libertine is sitting right there?

22 Mar 2011 (updated 27 Jun 2011 at 22:09 UTC) »

This entry was posted using Chromium as packaged for Debian. Thus far, Chromium has been much, much nicer than Chrome, mainly because Chrome ignores my fontconfig settings (which specify Linux Libertine serif fonts everywhere), while Chromium obeys them. I even have hope that I can make the ^A and ^E text edit keys work right. After that, maybe getting it to render standard ligatures (such as "ffi", "Qu", and "Th", and on my system, "st" and "ct") might even be possible. Firefox does it.

As far as I have been able to determine, Intel Arrandale support (needed for the Dell Latitude e6510 with 1920x1080 display) in the drm-intel-next branch off 2.6.38-rc7 is now fully functional, including suspend/resume, gnome-display-properties, XVideo, GL, and DPMS blanking. Apparently it's all expected to end up in 2.6.39, none too soon. Maybe Sandy Bridge support will be a little more timely. I'm guessing that the reason it's so hard is that the win32 driver writers were able to pester the hardware people when the docs were ambiguous, but by the time the Linux drivers are to be written, they've all moved on to other projects, and anyway can't remember what-all bugs their design shipped with.

I was almost won over by Apenwarr's encomium for Etherpad, and I asked about getting it installed at work to use instead of Google Docs, which is getting increasingly hard to tolerate. Unfortunately, it appears to be implemented in Java and Scala, which (for very good and sound reasons!) they would prefer not to put on their nice clean, well-functioning servers. So, now I'm looking for an Etherpad workalike written in something reasonable, e.g. C++. Then LWN spills the beans on something called "Fossil", an integrated bug-tracker, wiki, and distributed version control system, and I start to think I need that too. But maybe what I really need is a fork of Fossil with an Etherpaddy wiki, a Traccy bug tracker, and a Git back end. In the meantime, I struggle with Review Board's intolerance of Git diffs. Apparently you have to pipe
Git's diff output through

sed \
-e "s/^--- a\/\(.*\)/--- \1 (revision $*)/" \
-e "s/^+++ b\/\(.*\)/+++ \1 (working copy)/" \
-e "s/^diff --git [^[:space:]]* .\//Index: /" \
-e "s/^index.*/===================================================================/"
with $1 the old svn revision number.

Speaking of Avery, I'm mystified why he thinks rigorously defensible parsing of arithmetic expressions is somehow difficult or messy. Just about every yacc or recursive-descent example I've ever seen included a clean and complete arithmetic parser, with nice term-and-factor precedence handling. What am I missing? Am I improperly presuming sanity?

17 Mar 2011 (updated 22 Mar 2011 at 10:06 UTC) »

The most tasteless joke I heard all week was, "Oh, the Japanese are used to radiation poisoning." I'm not certain it was meant as a joke. Anyway, it's wrong: Americans have a lot more experience with with radiation and radionuclide contamination than the Japanese. The difference is that we did it to ourselves. Or, depending on your viewpoint, the U.S. military-industrial complex did it to us. ("Americans", here, includes Canadians and Mexicans.) Estimates are that more than a million more Americans died horribly of cancer than would have without above-ground testing. The people responsible were never prosecuted.

Graydon informs me that the feature I needed in Firefox is implemented as an extension, "BarTab".

I have discovered that I can get enormously better-looking monospace terminal fonts (Inconsolata, of course) by frobnicating the dots/inch setting in gnome-appearance- properties/fonts/details. My actual monitor is 1920/20.5=93.66 dots/inch, but gnome-terminal and roxterm look best if I set it to 103 dots/inch.

There's only one browser feature that I am certain would notably improve my own life. That would be a mode to restore a session without actually loading the content of all the pages, toasting the network, and demanding passwords all over the place. Just display whatever is cached, and leave the rest of the tabs blank until I ask to refresh them. As it is, I have to "route del default", and then restore, and then "route add default gw 10.0.xx.xx" after the browser settles down. It's a really clunky way to go about things. (If displaying cached content would be tricky, then just leave them all blank.)

After giving the matter deep and thorough consideration, I can, with utter confidence, recommend against kidney stones. No, sir, I didn't like it. You know how people are always telling you that you need to drink an unreasonable amount of water every day? It turns out that's so you won't get kidney stones. Women who have had them say it's the closest a man can experience to the pain of childbirth. It impressed me. Oddly, the symptoms didn't at all match what the books said about kidney stones, but the nurses and doctors all instantly pegged it. The pain wasn't in my back, but seemed to be in my colon. Apparently all those prostaglandins sloshing about inflame everything nearby. I can also say that hydrocodone (Vicodin) works very, very well on kidney stone pain.

Has everybody else noticed that Google Maps doesn't work as well as once did? Often, lately, it leaves tiles unfilled. But it seems better than it was a couple of months ago.

I never had any real doubts about whether the new Systemd replacement for init.d and Upstart was a good idea. Certainly, the architectural justification for its design seemed sound. Then, I saw on Linux Weekly News that it cannot function if your partitioning isn't just so. In particular, it seems, you'd better not have /usr mounted on / from another drive or partition. Yes, really. Now, on most of my machines /usr isn't mounted, so that doesn't affect me directly, but such choices drain confidence. (That, and PulseAudio still doesn't work right.) It makes me wonder what other crazy bits are in there.

I've finally taken up Git. I know I'm late to the party, but I can already say without fear of contradiction that the correct solution to every problem, difficult or trivial, begins with creating one or more branches, in much the same way that every cake recipe begins with washing your hands and preheating the oven. If you're not creating an improbable number of branches, you must be doing it wrong.

The weird failures on Intel i5 ("Arrandale") display hardware, on laptops, continue. Apparently the fixes aren't expected to make it into mainline linux until 2.6.39. The kernels in drm-intel-next have been getting worse, so I'm still on a snapshot based on 2.6.37-rc8.

Once again, I have remedied the entire lack of audio functionality on a Linux box by purging all the Pulseaudio-related packages, and /etc/asound.conf. While my respect for Lennart is second to none's, my success rate with PA has thus far been zero vs. a remarkably large N. I am finding it hard to blame myself for that, in the wake of my recent success finally getting the Intel Arrandale graphics subsystem on my laptop working.

5 Jan 2011 (updated 5 Jan 2011 at 05:03 UTC) »

Avery's "redo" build tool looks really interesting. It might, by itself, justify his existence.

* * *

Thanks (again) to the many who have expressed sympathy for my health problem. I guess I wasn't clear enough, though: my memory problem has been solved with medication. It has side effects -- loud ringing, jaw clenching at night, waking at 5 AM, and "dry mouth" -- all manageable. I'd like to reduce my dosage, but dare not without objective testing to determine whether the symptoms have begun to return.

It's interesting to explore how complicated short-term memory failure can be. I didn't have any trouble remembering what I had read, or seen, or done. What caused the most difficulty was loss of what might be termed intentional memory, the register of planned future actions. Everybody forgets, sometimes, what we went into the next room to fetch, but we remember that we had meant to fetch something. I didn't. Not always, but the stack overflowed much more easily. Similarly, I could remember three digits, but add three more and any of them might be scrambled.

* * *

My brother tells me Android jumped the shark in their 2.2 release. Now you need 500M of RAM just to run a minimal system. He blames the proliferation of background tasks that can't be turned off, and that insist on running even when they have no work to do, coupled with garbage-collection. He says the machine spends all its time oom-killing and garbage-collecting background tasks, and then restarting them and killing others, so it can't even keep up scrolling with his finger. Apple may have been right to restrict background tasks on the iPhone, but the undisciplined memory habits endemic to Java coding make it deserve most of the blame.

It has been a calmly terrifying last few months. I found I couldn't program any more. When I tried, I would just get sleepy. I left work on medical disability insurance. The mental health people really had no idea what to do, so they just tried different chemicals. Of course they started by diagnosing ADHD and prescribed amphetamines, which were a disaster. As it turned out, my problem was a curiously failing short-term memory. Oddly, it didn't interfere at all with reading, cooking, driving, or grocery shopping. I was just lucky they found, more or less by accident, something that helped. Neurologists have objective tests that would have narrowed the problem, but Kaiser wouldn't let me see any of their neurologists. Hints that it was a memory problem were that I could never remember how I came to be web-surfing instead of coding, and that I couldn't remember an IP address long enough to type it in, or a phone number long enough to dial it.

A few weeks back my wife and kids abandoned Google Chrome, which they used to like, as too buggy, and have gone back to Firefox. The latest version might be better.

My kids and I have been enjoying Osmos ($10). My son has been enjoying Algodoo (~$30), and Numptyphysics (Free), 2D physics simulations. He got a "Spy Trakr" for Christmas, a sort of remote-control tractor with a camera, microphone and speaker, and a little color display on the remote control. What I didn't know at first was that they have a free SDK for it, an ARM Gcc toolchain.

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