This is a post in support of the Tau Manifesto, and Tau Day, 6/28. It's silly to memorize an absurd number of digits of pi and then be obliged to double them before they are useful. Calculators need a "tau" τ key. Programming languages need a TAU constant. Where else than in a formula involving pi do you encounter an r² without a ½, or an r³ without a ⅔?

I have discovered that the top of a broiling pan -- the bit with the ripples and slots -- is the perfect place to perch a laptop that (stupidly) depends on cooling air from underneath. Turn the thing upside down, so it doesn't scratch the table when you put it down.

I just got a DSL line in. In my area, only AT&T can touch the wires, so I had to get an AT&T landline ($17/mo), and then order Sonic.net DSL service ($15/mo, 2.4Mb/s). It took from 22 May to June 11 to get a dial tone, and until the 17th to persuade AT&T to turn on the data service. Sonic.net were very helpful and courteous throughout. I just wonder why they're still running kernel 2.4 on their shell-account box. (Apparently DSLExtreme was good, once, and now isn't.)

The current unstable Debian kernel, linux-image-2.6.39-2-amd64, reliably panics on my boxes. This happens on an old Core2 duo and a new i7 quad. It's hard to be sure, but it appears to fail to mount / ("[: not found, mount: not found" etc.). A bit of googling hints that it's really a problem with old udev versions and initramfs, but updating those and their dependencies and reinstalling the .deb doesn't help. It boots a 2.6.37 kernel from the same respository without complaint.

This i7 quad is new. Astonishingly, it feels faster than the core2 even at the Grub prompt.

I have finally discovered a clue why Metacity sometimes
loses its ability to manage windows and pointer focus. It
happens when I run a Qt program. I didn't realize this
until I ran a second Qt program some time after the
first. (The programs were Qgit and Valkyrie.) It doesn't
seem to matter whether it's Qt3 or Qt4. It's hard to blame
Qt for this, but I find myself avoiding Qt programs anyway.
Restarting Metacity doesn't help; it's as if something is
messed up in the X server. Maybe I'll switch to a new
window manager. Can't switch to a new X server!

Thanks to new member DRMacIver, I have learnt of a
new language called Clay that seems possibly
interesting. Indeed, besides details arising from its
immaturity, Clay's only readily apparent oddity is that
argument passing is strictly by reference. Otherwise,
it has proper destructors, supports full-on generic
programming cleanly, and lacks what Stepanov called "O-O
gook". Is this the fabled Glorious Successor to C++
of song and story? If not, it's the closest approach I
have encountered.

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.

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?

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

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?

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.)