Older blog entries for ncm (starting at number 446)

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.

I have installed Cinnamon, and tried both Cinnamon and Cinnamon2d. Both crash frequently, although I have been able, with a bit of cleverness, to get them restarted without logging out. Right at the moment the 2d one is taking, as reported by top(1), 151% of a CPU to do basically nothing. The autohiding panel flutters like an ingenue's eyelashes. Overall, all I can say in its favor is that it's mostly not so bad as Gnome 3. I will be switching back to Mate, but have become curious about E.

My daughter is learning Russian on her own, using memrise.com. The web page construction is kind of clunky, but wow! Learning a language through to basic fluency in 20-30 hours is very appealing. I may actually get to learn Arabic and Khoisan. Khoisan is the oldest language in the world, spoken mainly in the Kalahari now. Linguists seem to agree, to the extent they can agree at all, that Arabic is the most beautiful to listen to.

It is distinctly possible that I may get to live in my house by Christmas.

27 Nov 2012 (updated 30 Nov 2012 at 10:58 UTC) »

Epson has finally released official Linux CUPS and SANE drivers for its Workforce WF-2540 "all-in-one" printer/scanner gadget: (iscan_2.29.1-5~usb0.1.ltdl7_amd64.deb, iscan-data_1.19.0-1_all.deb, epson-inkjet-printer-201211w_1.0.0-1lsb3.2_amd64.deb). The scanner doesn't work over wifi: the scanner grinds for a bit, SANE reports "I/O Error", and the scanner control panel LEDs flash until you power-cycle. It only works with the (old-style) USB cable plugged in, but then it works well. So, don't bother with their iscan-network-nt_1.1.0-2_amd64.deb unless you want to help them debug it.

It's been many weeks since 32-bit Firefox running on my amd64 Linux last crashed in the cycle-reclaimer. Congratulations to somebody! The 32-bit version is nice because it never leaks beyond 4GB :P.

Aphorisms for posterity:

  • Pavement is real, paint is just an opinion
  • Watching a progress bar does not count as working
  • Archaeologists will note freeway ramps as the signature religious edifices of the 20th century

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