On January 15th, I'm going to be giving a talk on a panel at the
Computing in the Cloud conference held by Ed Felton's Center
for Information Technology Policy at Princeton University. The
conference description says:
Computing in the cloud is one name for services that run in a Web browser and store information in a provider s data center ranging from adaptations of familiar tools such as email and personal finance to new offerings such as virtual worlds and social networks. This workshop will bring together experts from computer science, law, politics and industry to explore the social and policy implications of this trend.I'm going to talk about the AGPL 3.0, why it's important that we put effort into figuring out what freedom for different technologies means, and what the components of freedom for web services might be. Registration is free and bags you a name-tag and lunch. Worth noting perhaps, the conference is sponsored by Microsoft.
I'm just digging through OFTC's nickserv database to do some cleaning. We have
a bit over 20k nicknames in the database on 18k accounts which means about 10%
of registered nicks are linked to other master nicks.
By the power of sql, here's some statistics on the domain names of the
email addresses our users:
com 9144 net 2241 org 1778 de 1016 uk 392 nl 288 fr 223 edu 217 au 203 it 193 br 190 ru 174 ca 165 se 88 dk 74 at 70 fi 62 cx 59 info 58
gmail.com 3997 hotmail.com 1405 yahoo.com 843 gmx.de 221 gmx.net 201 web.de 156 debian.org 148 free.fr 94 aol.com 90 msn.com 73 comcast.net 72 gentoo.org 71 mail.ru 65 xs4all.nl 59 linuxmail.org 58 verizon.net 57 yahoo.co.uk 54 yahoo.com.br 45 googlemail.com 45 student.uq.edu.au 44 sbcglobal.net 36 earthlink.net 33 users.sourceforge.net 32The numbers could use some aggregation as some providers use zillions of TLDs (yahoo, gmx). My personal favorite in there is root@localhorst :-)
$ ./setup.py bdist_wininst
[...]

I'm so annoyed with myself.
So today was the day I was going to upgrade the disks in daedalus.
I'd finally managed to convince Dell to sell me two new 140Gb disks to
replace to two 70Gb disks that were fast approaching capacity. I'd organised
for access to the datacentre from 10am. I arrived early.
I didn't manage to get into the datacentre until about 11am, because they
were having problems remotely unlocking the door, and I had to wait until an
air conditioning repair guy turned up, who was fixing some air conditioning
problem.
I hadn't had a lot of time to plan how I was going to do the upgrade, but I
figured it was going to be pretty straightforward. Each disk is partitioned
into three partitions, all of which are mirrored using software RAID. The
first partition is the root filesystem, which is just an ext3 filesystem,
mirrored. The second partition is swap, also mirrored, and the third
partition is an LVM physical volume. The first two partitions are only a
couple of gigabytes.
So the basic plan was to remove the second disk (disk 1, aka
/dev/sdb), put in the new bigger disk, load the partition table
from the original disk 1, resync the three mirrors, and then boot off the
new disk 1, and rinse and repeat with disk 0.
This was all going swimmingly, when right at the end (in fact after the
third partition finished syncing according to the kernel), /dev/sda
decided it had a few unreadable sectors. This made the software mirroring
have a dummy-spit, and decide it needed to restart the syncing from scratch.
I'd seen this before with a bad disk.
So I wishfully hoped it was something to do with the new disk being bigger
than the old disk, so tried to roll back to the original disk 1. As was
pretty much expected, disk 0 exhibited the same problems at the same point.
So the problem was disk 0, not the new disk 1.
So it seemed like I just managed to pick the wrong half of the mirror to
work from.
I thought I'd try manually dd'ing the third partition from /dev/sda
to /dev/sdb, ignoring the errors, but that didn't result in a
usable half of a mirror either.
Interestingly, these bad sectors hadn't made themselves known until this
point. The RAID array had been otherwise healthy, and SMART hadn't uttered a
peep.
I think at this point, after spending about 3 hours fighting with it, I
decided to move up a layer. I could successfully sync /dev/md0 (the
root filesystem) and /dev/md1 (the swap device), and the only
reason I could think of these bad sectors not giving me grief already, was
because they were right at the end of the disk, and I hadn't quite used all
the free physical extents in LVM yet. Lucky I hadn't decided to grow things
any further.
So I decided that rather than trying to convince this existing
/dev/md2 to sync with the new /dev/sdb3, I'd just build a
new degraded RAID-1 on /dev/sdb3 and move all the physical extents
from the degraded RAID-1 on /dev/sda3 to the new degraded RAID-1 on
/dev/sdb3. I tried the logical volume with /tmp on it
first, since it was fairly sacrificial. It worked fine. So I tried the
largest logical volume, /srv, which was 30Gb. That went fine as
well, so I moved the rest. All of them went without complaint. So then I
removed the now unused /dev/md2 from the volume group, and finally
managed to boot with just the new disk 1. Then I was able to put in the new
disk 0, and just do a standard RAID-1 rebuild onto it. Hooray for LVM saving
the day yet again.
And this is where I should have stopped.
At this point it was about 3pm. I'd been aiming to leave by 4pm to pick up a
rental car that I had to get by 5pm. I'd wanted to also upgrade to Etch
while I was physically in front of the box, in case there were any nasty
kernel/udev issues that made the box unbootable. The catch was, I needed to
grow /var, which was quite full.
The intention had been that once I'd got the two new disks in and all synced
up, I'd create a fourth mirrored partition, and add this to LVM as a new
physical volume, then I could just keep merrily growing things. It felt a
little bit dirty having to make a new partition to get at the extra space,
and I'd reading about mdadm's "grow" mode, whilst I was sitting
around waiting for things to sync.
So I thought to myself, I'd just delete the third partition, and recreate it
using the remaining additional cylinders I now had at my disposal, then use
this grow feature of mdadm to tell Linux the array was now bigger,
then resize the physical volume, and go from there.
This is where things went a bit pear-shaped.
I deleted and recreated (larger) the third partition on each disk, and
rebooted.
I was then messing around with mdadm trying to update
/etc/mdadm/mdadm.conf, since the UUID of /dev/md2 had
changed, when I discovered that /dev/md2 had completely
disappeared.
It seems that recreating that partition made Linux completely fail to see
/dev/sda3 and /dev/sdb3 as RAID-1 members, and so because
of the fairly transparent nature of Linux's RAID-1, LVM had seen the
underlying physical volumes, and just decided to run with /dev/sda3
as the physical volume, and everything had continued to work. I just had no
redundancy any more.
So it was about 3:20pm at this stage, and I was starting to panic, thinking
I'd never get this sorted out before I had to leave, and I'd end up
returning to the US with a non-redundant mess on my hands. Then I remembered
that I had the backups of the partition tables of the old disks, from before
I removed them. So I thought I'd go back to that state, and just have the
additional cylinders unallocated. I hadn't yet attempted to grow the RAID-1
(partly because it had vanished), so in my haste, I didn't see this being a
problem.
The problem was, I'd booted into multi-user mode, and things had merrily
been operating on just half the mirror. I restored the partitions, and
rebooted, and lo and behold, /dev/md2 magically reappeared, already
100% consistent according to /proc/mdstat. I was somewhat surprised
by that, but I booted back into multi-user mode again, only to discover that
the /var filesystem was panicking and remounting itself into
read-only mode. This was pretty weird, given that during boot, it was
considered clean by e2fsck.
So I was really getting bothered by this stage, so I rebooted into emergency
mode (single-user mode in Debian starts way too much), and manually started
up LVM, and forcibly fscked everything. There was a bit of filesystem
damage to /var, /home and /srv.
Thinking I'd now fixed the problem, I rebooted into multi-user mode again,
but again /var, which was considered clean during the
fscking/mounting phase of booting, panicked shortly after mounting, and
remounted itself read-only.
So I rebooted again, broke the mirror, and forcibly fscked the filesystems
again (only operating on what was on /dev/sda3. Then I rebooted
without incident into multi-user mode and resynced the mirror.
At this point I ran away.
So I'm really annoyed with myself. This should have been a blog post about
how crap Linux's software RAID is at error recovery, and how LVM saved the
day yet again, but it was overshadowed by me overreaching in my haste, and
managing to cause silent data corruption.
The morals of this story:
Today I helped a friend sign up with Virgin Media's
broadband service. He was having trouble, as their front-page at
http://activation.virginmedia.com/ does a brain-damaged test, and tells
you that they only support Windows and MacOS X and that if you have
anything else you'll need to phone them at a pound a minute so you can
talk to some idiot until you lose the will to live (or some such).
After a brief rummage, I noticed that if instead of doing what they
tell you to do, you go to https://autoreg.autoregister.net/ you get
prompted for whether you're signing up for Broadband or Dialup, and on
clicking Broadband, you're lead through the sign-up procedure with no
complaints about compatibility, and within 5 minutes he was online with
his GNU/Linux (Ubuntu) system and Firefox browser.
This makes me wonder why Virgin Media bother putting extra effort into
turning users away when in fact the sign-up procedure would work
perfectly if they hadn't bothered with the stupid browser test.
$ pfmon -e CPU_CLK_UNHALTED,IFU_MEM_STALL ./comma < ./randomcommas
340559375 CPU_CLK_UNHALTED
192115 IFU_MEM_STALL
$ pfmon -e CPU_CLK_UNHALTED,IFU_MEM_STALL python -Sc "import sys; print sum(l.count(',') for l in sys.stdin)" < ./randomcommas
1287100
4571257047 CPU_CLK_UNHALTED
71981750 IFU_MEM_STALL
$ pfmon -e INST_RETIRED,CPU_CLK_UNHALTED ./comma < ./randomcommas
542953593 INST_RETIRED
340612036 CPU_CLK_UNHALTED
$ pfmon -e INST_RETIRED,CPU_CLK_UNHALTED python -Sc "import sys; print sum(l.count(',') for l in sys.stdin)" < ./randomcommas
1194455205 INST_RETIRED
4569931735 CPU_CLK_UNHALTED
$ pfmon -e L2_LD:M:E:S:I,L2_ST:M:E:S:I ./comma < randomcommas
102505 L2_LD:M:E:S:I
167 L2_ST:M:E:S:I
$ pfmon -e L2_LD:M:E:S:I,L2_ST:M:E:S:I python -Sc "import sys; print sum(l.count(',') for l in sys.stdin)" < ./randomcommas
3278774 L2_LD:M:E:S:I
10457 L2_ST:M:E:S:I
$ pfmon -e DCU_MISS_OUTSTANDING,DCU_LINES_IN ./comma < randomcommas
769736 DCU_MISS_OUTSTANDING
102387 DCU_LINES_IN
$ pfmon -e DCU_MISS_OUTSTANDING,DCU_LINES_IN python -Sc "import sys; print sum(l.count(',') for l in sys.stdin)" < ./randomcommas
99810150 DCU_MISS_OUTSTANDING
4240179 DCU_LINES_IN
| x86 | ARM |
| buf=BFBF3471, buf%4=1 Num: 4C4F4341 Buf+0: 4C4F4341 Buf+1: 4C4F4341 Buf+2: 4C4F4341 Buf+3: 4C4F4341 | buf=BFFFFD75, buf%4=1 Num: 4C4F4341 Buf+0: 4F434100 Buf+1: 43410000 Buf+2: 41000000 Buf+3: 4C4F4341 |
If you’re using a Virtuozzo-based VPS running Debian Testing or Unstable (and probably other modern Linux distributions), you will probably run into problems regarding the patches used in the default kernel and glibc 2.7, which were properly described in the debian-glibc mailing list.
Tektonic, my current provider, will upgrade the kernel this weekend but if you’re really in a hurry, you can set your VPS on repair mode, download a 2.6 version of libc6, install it from the repair VPS using dpkg –root=/repair –force-all –install … and restart your VPS. It will boot up, but lots of things that depend on versioned packages of libc6 won’t work correctly, most notably OpenSSH and PAM.
The problem is due to non-standard TUX optimization patches implemented over Red Hat’s standard kernels, which seem to be quite popular in Virtuozzo-based VPSs (at least it seems that Strato, Tektonic and Unixshell use them?)

Now is the time to join and give to Free Software Foundation. 2008 is going to be extraordinarily important year for free software. Eben Moglen likes to quote Gandhi's "first they ignore you, then they laugh at you, then they fight you, then you win" progression when describing the free software movement. As I pointed out when I joined the FSF board, we're beginning to see powerful interests fighting free software. It's going to increase in the next few years. Things will probably get a lot uglier for free software before they get better. We can win but things are far from settled. The FSF is the front-line organization in this fight and we need a robust and proactive foundation, and an active and involved membership, if we're going to win. Here are the issues that I'm going to pushing the FSF to pursue in the next year. Expanding activism outside our traditional technologist communities: In part through the work of projects like Defective By Design, we've seen the tide turn for DRM on music in what what may be the FSF's greatest success last year. I'm going to push the FSF to continue the campaign to attack DRM for video, eBooks, and the other places it is cropping up. The most remarkable thing to me about Defective By Design is that its participants and supporters are not, for the most part, people who develop or use GNU/Linux or even know what GNU is! If advocacy for software freedom involves a conversation we can only have with people who understand what POSIX is and how one uses it, we've already lost. Through DbD, BadVista, and other projects, the FSF has made major strides in the last year. It need to do much more and needs your support to do so. Get proactive about software patents: As a community, we've had our head in the sand about software patents for far too long. There are companies and patent trolls sitting on massive, growing piles of software patents. They are not our friends and they do not mean us well. One cannot write non-trivial software today without running a serious risk of infringing patents. The software patents minefield we've found ourselves in is a very fundamental threat to the success of free software and we've already begun to see the first casualties and costs. We must eliminate software patents. Now. The US is very important in this fight (much patent law is "exported" from the US) and almost no organization is working on software patent elimination there. Not enough people are thinking and acting strategically on this issue. The FSF is planning to make major steps in this fight in the coming year and we need your support to do so. Web services and the changing face of software: This last year, I worked to help launch the new version the AGPLv3. The license addresses the role of copyleft for software like web-services which, due to the legal particulars of the GPL, did not extend to the purveyors of web services. Of course, access to source code does not make the users of all web-services free (e.g., the GMails and the Facebooks). Nobody seems to know what freedom for webserver entails. There might not even be good answers. In the next year, I'm going to push the FSF to help start several conversation and to begin to follow up on what I think was an important first step with the AGPLv3. While this is not a major organizational priority yet, it's a major action item that I will be pursuing through the FSF. If you feel strongly about this issue, whatever your position, become a member, stay involved as these projects develop, and have your voice be heard. We don't know the answers yet and we need your input as much as we need your action.Please, support the FSF in the efforts listed above, and in others, by giving generously. If you're not a member, please join the FSF as an associate member. If you are already a member, please consider making a tax-deductible donation. The FSF is a very lean, very humble organization of passionate and dedicated individuals working tirelessly for software freedom. Every little bit helps. Members pays USD $120 ($10/month) and student members pay half that. FSF has members across the world -- where a weak dollar often makes it even cheaper. Member support and participation builds capacity and credibility for the foundation and keep the organization responsible, responsive, and in tune with our community.
I first heard about the Open
Source Jam Zurich somewhere at BlogCampSwitzerland
2.0 (which was more a TechCrunch7 than a BlogCamp — why
did the organisators call it BlogCamp?) and subscribed to its Google Group.
At Linuxday.at, hansmi (who seems to
Today I was cold-called by someone announcing themselves as "UK
Bank Claim", a service of "the leading company", asking me questions
about my bank charges.
Now, that put my back up right away. I co-own
most of my banking service providers (aren't
cooperatives and mutuals great?), and
you can't get much more confusing service and
company names if you tried.
Then they claimed to be registered with the
Ministry of Justice, but I can find no mention of this registration
service on
the MoJ web site.
I've emailed the ministry to let them know.
The phone number they called is registered with the
Telephone Preference Service.
The call did not send any Caller Line ID and
refused to give a telephone number when asked, so I suspect it may have been from overseas.
I registered a TPS complaint nonetheless.
The caller gave me the domain theleadingcompany.co.uk which
is registered to The Leading Company ltd - UK Limited Company,
(Company number: 6081225), 28-32 church street, slough. Strangely, that is not
the Registered Address: Excelsior House, 3-5 Balfour Road, Ilford
Essex shown on their web site, nor the one listed at
Companies House:-
ROPE WALK SHOPPING CENTRE, ROPE WALK, RYE EAST SUSSEX - are companies
allowed to use multiple registered addresses?
I thought that was forbidden.
In short, who is this company, why are they claiming government
support and why are they allowed to behave like this this?
How far should I go with this?
Do you think I should contact
hedleycreative.co.uk (whose
email address is in their web source) and
ask them why they're working for
phone-spammers?
I guess I shouldn't waste any more time, but
I think it's worth publicising this behaviour
a bit, to try to avoid these people finding
unwary victims.
My current mailfilter has two
features which increase my day-to-day productivity:
Since the queue is only processed on the server, I cannot register a mail with the tickler without going online and synchronising my mail before the timestamp expires. So if I am on my way to a conference on Monday and tell the tickler to resubmit a given message on the next day, but I don't connect before Wednesday, I won't get the mail on Tuesday (because the mail does not actually reach the tickler until Wednesday, when it's immediately resubmitted). I have not found an algorithm that would let me run a queue processor on the server and my laptop without the two causing mail duplication and potentially interfering with each other.
I keep all my mail in a single Maildir to make searches easy. Since mail registered with the tickler is stored in a separate Maildir, I often need to search two Maildirs if I am looking for a specific message. This is awkward.
The queue processor has to iterate the entire queue, which is fine for a hundred messages, but it does not scale.
I have not found a way to ask mutt to tickle me about a message I send without going to the sent messages folder and scheduling the message for tickling manually. One approach would be record=no and a custom sendmail script, which would store mail to the store or tickler Maildirs, depending on whether the X-Tickle header is present, but I want to avoid a custom sendmail script for reasons unknown. Another approach might be to set bcc to the appropriate tickle address, but this would result in duplicate mails, unless I set record=no individually.
David's post
about programming languages and hand tools reminded me about the old saw about
the hammer and the nail. The funny thing about that saying is that the
hammer is actually one of the more versatile tools there is. A few things
I've done or seen done with hammers:
Next.