Older blog entries for ncm (starting at number 448)

This is the time of year when we look over the sad wreck the United States of America has made of itself after a ragged band of thugs incinerated a few of its planes and buildings and their occupants. Only now is any noticeable slice of its citizenry beginning to understand what sacred treasure they dumped, eagerly, on the victims' funeral pyre. The nation's courage, pride, scruples, myriad freedoms, thousands of its own heirs, its national credibility, its (howsoever tarnished) tradition of rule of law, and the hopes of a generation only served to help loft that pall of smoke out over the ocean. Will what is left of the nation ever wrest control back from the shameless criminals it still allows to pretend to protect us? I have seen nothing to suggest it.

We can derive wry amusement from various US agencies' repetitive insistence that PRISM etc. log only call metadata and not "what was said". What they don't say is that NSA already log "what was said" directly off the fiber, and they only need Verizon's metadata to discover who said it. What makes it amusing is that to collect "what was said", they use a (lower-case) prism to split each fiber's light beam into two.

As a general rule, when a wide variety of unelected officials and their various press and elected mouthpieces repeat an assertion ad nauseum, it might or might not be technically accurate, but its purpose is always to distract our attention from a truth that, come to light, is much, much worse.

The overarching truth in this case is that whatever use surveillance may have for foiling nefarious plots, its chief value, everywhere and always, is in support of extortion. It's the basic currency of corruption. Extortion can force court judgments, congressional votes, cabinet and judicial appointments, bid selections, and resignations from elected office. Any discussion of pervasive surveillance that doesn't mention extortion is another distraction.

Edward Snowden turns out to be just the hero for our age. Getting condemned as a traitor by former (and by the evidence, maybe permanent) Power Behind the Throne Dick Cheney is a real feather in his cap. I wish I could be condemned as a traitor by Dick Cheney. Imagine how great a country would be if if it were governed entirely by people who Dick Cheney would call Traitor.

What they are not telling us is that the reason they only need the "metadata" from the phone companies is not that they respect anyone's privacy. It's that they already have all the audio logged, going back years; but they need the metadata to know who's talking. They got tired of asking the phone companies for metadata on bits they had tagged as interesting, and just demanded the lot.

I bought a Sandisk "Extreme Pro" SDHC card, advertised as supporting "up to 90 MB/s" reads and writes, to use in my Wandboard. Copying a 2.5G image onto it, I got all of 11 MB/s. I guess they only guarantee that it won't go over 90 MB/s, and maybe blow out my SD socket. Thoughtful of them.

30 May 2013 (updated 30 May 2013 at 08:45 UTC) »

I just bought a used Pantech Burst (also called Presto, and P9070) Android phone for US$50, from craigslist. It has a dual-processor Snapdragon ARM7, 1GB RAM, 16GB flash, and a microSD slot. It was running ICS until I replaced that with (Slim's unofficial port of) Cyanogenmod 10. These can be had easily for well under US$100 on ebay, making it the best value I know of in a smartphone. The batteries are supposed to run out a little faster than some other phones, but you can get a pile of spares, and a busted phone to charge them with, very cheap.

I also bought a Wandboard, a 4.5-inch-square complete computer system with dual ARM, 1G RAM, USB (both host and gadget), GigE, 2 microSD slots, SATA, WiFi, Bluetooth, optical and analog audio, HDMI, camera connector, serial, JTAG, and an expansion header, that burns <2W, for $100. A handsome case is another $10. They provide Android Jelly Bean and Ubuntu boot images. This seems like a better value than a RasPi, Mele, or Beagle. Since I bought it they have added a quad CPU version with 2GB RAM for $20 more.

I bought a used Netgear WNDR3700 wifi router for $40. It had the buggy firmware that refuses to load the (less buggy) update. There are lots of these out there because they all automatically downloaded and flashed the bad firmware. I used tftp to downgrade it to (got directly from Netgear), and then installed DD-WRT on it. It has plenty of flash and RAM, and a USB socket.

I also bought a used Cisco/Linksys EA2700 wifi router, also for $40. These are cheap now despite excellent features (agbn, 64M RAM, 64M flash) because the Cisco firmware in them has turned out to be easy to crack remotely, but now it can run DD-WRT.

I built Rust 0.6. I don't know if it's the Glorious Successor to C++, but at the very least it's the Glorious Successor to Haskell. Probably Git-annex needs to be translated to it. Learning Rust will be worth serious effort: powerful, safe, parallel, link-compatible with C, but faster.

I have solved IKEA. I drive into the parking lot exit directly to the "5 minute" loading zone, park there, roll an abandoned cart into the store exit, past the registers to the "self-service" warehouse racks, load up, pay, and roll out again in five minutes.

I'm going out on a limb, so to speak, to suggest that there is no way your typical sauropod could support its neck extended far from its body. The resulting torque would crush the proximal-most cervical vertebra. They could raise their head to full vertical extent (perhaps with the aid of auxiliary hearts in the throat to keep the blood rising) and lower it to drink, but only with a big, rolling inverted-"U" bend in the neck. Moving its head horizontally away from the shoulders would have been extremely painful.

Why are ideas cheap?

Anybody competent always has far more worthwhile ideas than has while to work on them. Nobody else competent has time to work on them either. Good ideas protect themselves: only the best recognize the best ideas. It takes a great deal of hard work to make any idea valuable. The best ideas just evoke the most work. Mentioning a spare idea, though, might spark another one good enough to make you (or them) drop what you’re doing to pursue it.

There are reasons why more happens where information is shared freely.

An apparently little-known $hack: you can borrow up to half the value of your IRA or 401K account on your own say-so, just by filing a form. You do have to commit to paying it back, on a schedule, with interest, but you pay the interest to yourself.

Upgrading from kernel 3.6.x to 3.7.x on my laptop with i915 graphics chip (Arrandale/Ironlake) resulted in a crazy console screen and reliably locked-up X. This turned out to be a bad interaction with kernel IOMMU activity, which defaults to "y" in the kernel configuration. That particular interaction will probably be fixed (at some cost in performance) in 3.7.10 and 3.8.1, but I have it on good authority that you are much better off not enabling IOMMU unless you really need it. Apparently you only really need it if you are running guest OS images that need access to physical hardware unmediated by the host OS. I.e., you don't need IOMMU. On a distribution kernel, the boot parameter to fix that appears to be "intel_iommu=igfx_off".

I've been using libssh2 at work. It turns out to be remarkably buggy in its flow control, but fixably so. I'm fixing it.

mjg59, Matthew Garrett, is very, very smart. That is a net good, but it makes him uniquely unqualified to judge the merits and failings of Gnome 3. Matthew works under the most grueling conditions, where UI infelicities are among the least of the challenges he overcomes with apparent ease. Our work challenges the rest of us quite enough without additional interference from an opinionated desktop environment.

31 Dec 2012 (updated 31 Dec 2012 at 08:47 UTC) »

Here is the most satisfying function I have written in years:

int init_iovec_from_circular_buffer(
struct iovec* iov, char* buf, size_t size, size_t tail, size_t head)
int count = 0;
if (head < tail) { // wrapped
iov->iov_base = buf + tail;
iov->iov_len = size - tail;
tail = 0; ++iov; count = 1;
if (tail < head) {
iov->iov_base = buf + tail;
iov->iov_len = head - tail;
return count;
It sets an iovec array to point to the occupied part of a circular buffer, ready to pass to writev(). Pass trivially different values for head and tail, and it sets up iov to pass to readv(). If it can be improved upon, I don't know how.

dmarti: Thank you, as always. The Xiph article was especially enlightening. Mims's article wouldn't load, although I didn't try enabling quantserve's javascript.

But Simon Doonan cannot be trusted. He is in thrall to Camille Paglia, whose metier is rhetorical tricks that rely mainly on confirmation bias. Not everything Paglia writes is false; only (1) what disagrees with people equipped to know better, or (2) what seems gratifying to believe. But that's almost everything.

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