2003-02-26»
pause»brb. wife in labour.
this year
2006
2006
2005
2004
2003
2002
2001
Diggory, Andrew, and Matt R.
why I like 802.11
senate committee letter
oscon2003
ms and free software
ubiquity
webolodeon
wat
tagling
haiku
February 2003
Su Mo Tu We Th Fr Sa
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
<<Jan Mar>> As we ended up saying in NTK this week (Stef scooped us), it was the RSPCA who snarfed FaxYourMP. They sort-of apologised. Well, they promised not to do it again, which is good enough, and huffed and puffed about how we should put up a legal notice. Which, of course, we won't do. It's not an issue of legality, it's an issue of civility.
I don't sue my neighbour because his mariachi music is too loud (though if you're reading this, neighbour, it is a bit noisy), because society provides any number of more effective ways to resolve the problem. Most of all, people can stop doing bad things because they can be embarassed or ashamed. I think there's a corporate equivalent to this which we're only beginning to flesh out. Of course, there are some companies that will just blindly ignore such restraints, so you have to sue them. Such legal persons are practically sociopathic and should be treated as such.
Even better: the people who actually organised the campaign for the RSPCA are NTK readers. They mailed and said were really sorry, and definitely won't do it again. They sounded genuinely a bit upset with themselves: very "how could we have been so STUPID!". That's good, because I'm sure it's their job to do these things right, and they've learnt a useful lesson here.
The US detained Maher Arar, a Canadian telecoms engineer who had a connecting flight from New York after a family holiday in Tunis. They deported him to Syria. That was in September of last year. They got around to telling his government in mid-October. Eventually Maher's family tracked him down to a Syrian jail. He's still there, being held without charge. It seems that the US was a bit suspicious because the Mounties interviewed him once about the Syrian community in Ottawa. Perfectly understandably, the Americans accused him of being a member of Al-Qaeda - then sent him straight to a country on their own Axis of Evil shortlist.
What is this, Wheel Of Habeas Corpus Fortune? He's a Canadian citizen. You have a problem, you send him back to Canada. And, continuing this week's theme, when you realise you've fucked up, you apologise nicely to the country next door, and try to get him back for them.
Instead, the American authorities are acting as though nothing untoward happened.
Funnily enough, nothing untoward just happened again.
Boing Boing has a piece documenting this week's "borrowed Canadian", Berna Cruz - a canuck who had her passport destroyed and got deported - without papers - to India. Via Kuwait. That's to say, into your own freaking soon-to-be warzone, you nutty superpower you.
Admittedly, Berna Cruz wasn't suspected of being a secret member of Al Qaeda that the Mounties had irresponsibly chatted to and then somehow neglected to arrest and charge. No, she (and her passport) merely looked funny.
But, then again, she got got back. Maher (phone engineer, wife, two kids, job in Ottawa) is still missing. Amnesty International Canada has some ideas of what you can do to help secure his release. And if you're a US citizen, you might like to drop your representative or senator a call. Fair enough, Maher wasn't an American citizen, so it might not be a domestic matter - but think of it this way: Maher wasn't an American citizen. It wasn't a domestic matter.
Plus you never know when Canada will start picking off Americans and sending them back to the land of their forefathers. Yeah, then who will come save your ass - the Native Americans?
The GNU Radio folk (who are working on free software to drive DSPs that would let you receive and decode any RF transmission) managed to decode HDTV in software. This is important, because if "analogue hole" style legislation is passed - or even broadcast flag requirements - it will be forbidden to distribute such software. And if those rules aren't adopted, it means that within a decade, general-purpose computers will be able to display high-res TV as easily and as cheaply as they can make mobile calls or connect to a local WiFi node.
Faxyourmp.com went down for a couple of days this week. It was a bit our fault - we'd been stringing out the current server for a while longer than it was really spec'd for, and hadn't tweaked things to cope with the increased load we're getting these days. So when a major charity pointed to us (as they do) for a time-dependent campaign, and thousands of people started faxing simultaneously, we broke. We'd have been up quicker, but three of our volunteers have had big deals at their paid work this week.
On the other hand, that charity that dumped all this work into our lap managed to break pretty much every guideline that we ask people to keep. We've already finished being grumpy at ourselves for letting this happen, and we had some left over. So we sent them a mail.
Dear Big Huge Charity,
We're really sorry that we had to take down FaxYourMP over the last day or two. I'm afraid the [Charity's Name omitted] campaign against the [Particular Bugbear of Theirs] took us a bit unawares. We've been in the middle of transitioning to a new machine, and the sudden onslaught was a little bit more than we could take at the time.
We don't like taking down the service, as it's pretty tough on the dozens of people who use it every day.
Unfortunately, we're feeling slightly less apologetic towards your organisation in particular. Here's why:
- Despite what we specifically request on our site you sent a pre-written message that you asked your members - and their friends - to cut and paste into our service. To quote from our own document:
Why shouldn't I copy and paste "form" letters?
We know your issue is important to you, but we've spoken to MPs - and if you are not a constituent, or you send a "copied and pasted" form letter, your fax will go straight into the parliamentary bin.
If you're a pressure group, please think about what you're doing. If you encourage all your members to write to the same MP, you will not show that MP the depth of support for your issue. You'll simply have used up a few sheets of tax-funded fax paper, and irritated an underpaid secretary or researcher. And if you encourage them all to send the same rote letter, MPs will just assume you have a nasty little man with a photocopier blasting them out from your office, and ignore you even more than they did before.
We really, really, really don't like people doing this. It effectively diminishes the hundreds of faxes we get from people who have pressing problems of their own, and for whom their MP is their last point of contact.
We notice that in your mailout, you suggest people "forward the mail to anyone you think might be able to help". Unfortunately, you don't provide any date or details of when the [Bugbear] will end its passage through Parliament.
This is a very bad thing to do to us, and the Internet in general. That's because of what's known as the "Craig Shergold" problem.
Craig Shergold - and you can skip this if big charities like yourself have heard it before - was a little boy who was dying of leukemia, and wanted to beat the World Record for Most Postcards Received before he died. Naturally, people wanted to help, so sent letters, wrote newspaper articles, told their friends, and later emailed around pleas to send the cards to his hospital.
Fortunately for Craig, he got better. In 1991. The hospital he was connected to is still getting cards - 350 million at the last count, apparently. The message has also mutated to involve other charities, including the Make-A-Wish Foundation and Children's Wish Foundation. It's a terrible drain on everybody's resources, because there's no way to kill the message.
That's why responsible email campaigns contain a "sell-by" date.
Yours didn't.
Basically, not only have you diminished the worth of every fax that runs through our service, not only have you cost us a fair bit relaying a bunch of identical faxes that will go straight into the bin - and not the recycling bin, either - but you've also potentially doomed us to months or even years of fending off people who will persist on faxing their MP the obsolete details of a Bill that the MPs have already voted on.
In order to stop all of this, when we come back online, we'll stick a block on the text of the message which will turn away anyone attempting to send it. We'll probably put some non-shirty message politely explaining why we're refusing it.
Were we a bit less civically-minded, we might send you a copy of every refused mail with a note attached saying "Remember not to do this again!".
However, we won't. This is because we are lovely.
You, however, have been very bad, and this is your punishment:
Please carefully read this email and then ask one of your volunteers (preferably the one who wrote your original mail) to write an explanation, in words that would be best understood by organisations like the [Big Charity], about why what you did was such a bad idea, and how they can avoid doing this in future.
Then mail it to us, and we'll put it in a prominent place on our site, so we can encourage other large charities to read it before they do what you just did. We won't put the [Big Charity's Name]'s name on it if you don't want us to. We'll just put "Signed, a charity with over 500,000 supporters throughout the country who is very sorry and won't do it again".
Deal?
Lots of love,
- the FaxYourMP.com volunteers
No reply yet. Big charities and big companies don't like saying sorry, because their lawyers think it exposes them to all kinds of liabilities.
They forget that not saying sorry exposes you to the liability of being a complete dick.
According to the latest Perl 6 Summary, Leon Brocard has written a Brainfuck compiler, in Brainfuck, for the Brainfuck interpreter supplied with Parrot, a virtual machine named after a joke, written for a language that doesn't yet exist.
I think I've sprained my head.>
AT&T Labs Research Projects. Smells old, and I've seen a few of them before, but never in one big odd pile like this. Everything from Web scraping proxies to Emacs speech-recognition (complete with the voice equivalent of Ctrl-Alt-Shift-Meta) to doodling email apps for the Palm. Some without source (or encumbered in a non-commercial licence), some without binaries.
When they talk about the comparison between blogging and press journalism, they never mention the two strongest differences for me. The first is trivial: it's word length. You can write as little or as much as it takes on the Web. On paper, you have to trim your ideas to fit the pattern of the page: pad out or reign in.
The second is the permanence of print, and the horrible finality of printing. I get a small frisson when I hit ":wq" on this entry, but it's a fraction of the sickening dread I get when I realise that what I've written is is now frozen in time, and printed on thousands and thousands of pieces of paper that can never be backspaced over, can never be undone. Some journalists talk about the pride they gain from seeing their words in print. I can't look at them. I can't stand it. It's all too definite, all too concrete. Words aren't like that. They're too soft. In event of disaster, they should be able to run home and hide under your skirttails.
And every word, when once it is written, is bandied about, alike among those who understand and those who have no interest in it, and it knows not to whom to speak or not to speak; when ill-treated or unjustly reviled it always needs its father to help it; for it has no power to protect or help itself.
And they're pretty bad at protecting their parents too: here's a piece written by Isioma Daniel, the woman who knocked out a lighthearted column on how funny the Nigerian Miss World was.
I remember feeling uneasy after completing the piece. It was breezy and sarcastic. My recent time in Britain, studying journalism at the University of Central Lancashire in Preston, had made me irreverent - there are no sacred cows in the UK. The tabloids have finished them off. I printed a copy and handed it to my editor. "Make sure you read it," I said. A few minutes later I reminded him. "I have sent the article to your computer, have you read it?" He read a few lines. "It's fine," he said.
Two hundred or more dead later, she's got a fatwa on her head, and is in exile in the US.
Google buys Blogger. My take, shamelessly stolen from Quinn: "Google buys Internet stuff it doesn't want to go away.".
My other take: Winer's going to go ballistic.
For those of you who've seen the pictures of the Jhai PC in Laos, and read the note that said that the hardware wasn't working on the launch date, here's the full skinny, quoted from the mailout the Jhai people sent out this week:
Jhai Remote Village IT System Launch Delayed
At 4:30 a.m., Tuesday, 11 February, 2003, in Vientiane, Lao PDR, Jhai Foundation concluded here that the scheduled launch date could not be met.
The Problem
The original design was modified three weeks before launch to include a flashdisk (a data storage device that has no moving parts) at the village computer in Phon Kham. To include the flashdisk required a PCMCIA card. This was a solution developed in order to provide space for the size of the localized KDE, the Linux-based productivity suite, and related software so that the software more closely matched the hardware's ability to do the job the villagers wanted it to do. To integrate this device and this card into the system will take more time due to a variety of issues. The manufacturers are cooperating with the Jhai team on this effort, but the time required for integration is substantial.
This night the data on two hard drives needed for development were corrupted. And a Jhai PC was rendered inoperable. Although data and programs were saved on CDs, the time lost due to this accident makes it impossible to meet our deadline.
"From our team's perspective," says Jhai chairman, Lee Thorn, "the design of the Jhai PC and communication system is more than sound - it remains the best solution we know to meet the needs of the villagers in the Hin Heup district and perhaps to meet the needs of many poor rural people worldwide.
The problem is not the design.
The problem is a combination of factors - money constraints, constraints on volunteers' time, and my insistence on a deadline that turned out to be too optimistic. The responsibility for this delay is mine. I regret any inconvenience my decision has caused others. Any loss of face is my loss and should not be imposed on other members of our team.
Seeking Counsel From The Community
"We will be going to the villages today to seek their counsel on how to proceed from here. We hope to solve our problems before the rainy season begins in mid-April. This is a hope, not a prediction. However, we will not announce a launch date until more information is in hand.
"Jhai Foundation is about reconciliation and this is a reconciliation project of the Jhai Foundation. What is most important to us are our human relationships. We will remain true to our values and true to our friends here in Laos and elsewhere. As my fellow veteran, Kurt Vonnegut, once said, 'The thing is to be honorable.' We will continue to be honorable and we will continue to seek reconciliation of whole - and flawed - people with one another. The opposite of this is war and we will not go down that road. We will do this thing together. It will simply take more time."
Lee Thorn, chairman of Jhai Foundation
My RSS feed is eating up bandwidth, so I've implemented a "If-None-Match"/"Etags" caching doobry. Let me know if anything breaks. Not that you'll be reading this if it does.
A class browser (of sorts) in vim. I love vim, but only in a false-consciousness kind of way.
The Guardian said he coded it, and the truth is only slightly less shocking. Whitfield Diffie's code was the inspiration behind Powerpoint. Is nothing sacred?
Diffie has long gray hair and likes to wear English suits. Today, he works for Sun Microsystems, as an internal consultant on encryption matters. I recently had lunch with him in Palo Alto, and for the first time he publicly acknowledged his presence at the birth of PowerPoint. It was an odd piece of news: as if Lenin had invented the stapler. Yes, he said, PowerPoint was "based on" his work at B.N.R. This is not of great consequence to Diffie, whose reputation in his own field is so high that he is one of the few computer scientists to receive erotically charged fan mail. He said he was "mildly miffed" to have made no money from the PowerPoint connection, but he has no interest in beginning a feud with an old friend. "Bob was the one who had the vision to understand how important it was to the world," he said. "And I didn't."
As if Lenin had invented the stapler? As if Lenin had invented Standard Oil more like.
(Thanks, Matt. Yeah, thanks a lot).
Here's an ASCII copy of the EU draft constitution, as requested (thanks, Dan!)
(I guess it wasn't scanned in after all.)
You'd think that with something as important as the draft of the forthcoming EU Constitution, they'd stick it into something more readable than a scanned- in PDF. Anyone got an ASCII version?
Ben links to an Dear Raed, an Iraqi blog from Baghdad. Utterly fascinating, from its examination of the latest Saddam gossip ("Saddam is still meeting officers daily, and we have the pleasure of watching these meetings three times every day. Each batch he meets leaves the place with a 1.5million Iraqi Dinars check and a brand new car. The latest cars to be put in the warehouses I pass by are Toyota Corollas, all white. The warehouse has around 150 of them") to bitchy responses to pro-war Americans ("Well you pooped on me buddy, don't expect me to be all ah-great-america-we-love-you, and your government will be pooping on me some more, now how does that make me feel?"). Not to mention the Neuromancerish psy-ops that caught Ben's eye.
Rafe asks about blogger's test-driven development experiences. I've been messing around with XP on-and-off for the last month or two. Yoz and I are doing some long-distance pair programming via TightVNC, Leo, and Yahoo Messenger Voice Chat, which has been slow-going but fun. I haven't used XP or unit-testing for large projects, but I've been thinking a lot about my experiences.
Unit testing is definitely the easiest part of XP to grasp, but the XPers have a point when they say that much of the benefit of writing tests before you code comes from synergies from XP's other practices. One of the reasons why most of us don't write as many tests as we should is because of the limited returns. You spend a long time writing little fragments of code, which only come into their own if a bad bug trips them up in a predictable way. Anyone who has got caught in the trap of writing test code to catch bugs, only to find themselves fixing bugs in the test code, knows that tests can be a real drag on the flow of programming.
Unit testing before you code ups that return on investment. Firstly, while you're writing the test code, you're also mentally fleshing out the interface and algorithms of the future class itself. Many times now, I've found myself wrestling - and solving - some of the biggest algorithmic problems I have to face in writing a method while I'm writing the early test code. This has a couple of effects: psychologically, coding up the tests seems much less of a waste of time. It feels like a useful warm-up to the final work, rather than a finickety post-facto dredge over your previous work.
More practically, it means that the final product itself is far less composed of the lumber of a a dozen experiments. The effectiveness of this is particularly true in XP's iterative design process. There's a minimal amount of upfront design in XP, but there's design *somewhere*. One of the hidden places design gets done is throughout the testing process. Now, that may horrify you, but it definitely means there are rewards to writing tests first that may not exist in a less agile development environment.
It has another knock-on effect, which, I think, leads to more productive and pleasant testing. When I'm writing unit tests these days, I feel a strong pressure not to "code to the test".
The initial temptation when first writing pre-code tests is to write the minimum needed for your code to work. For instance, the code we're writing at the moment is a simple WAP client. We have a test which just "presses the button" on the WAP page, to see whether we're actually activating a CGI script. Putting aside whether this is really a unit test or a functional test (I admit to not truly understanding the difference), our first bash at this had something along the lines of:
def testButtonPressable(self):
full_url = self.wap_dir + self.formurl() # get url of form
params = urllib.urlencode({'test' : 1}) # set form with "test=1"
f = urllib.urlopen(full_url, params) # open the CGI script
return self.assert_('<!-- TEST OK -->\n' in f.readlines())
Yoz and I discussed this for quite a while. I felt uncomfortable. It seemed to me that the test added code to the final version, but the wrong sort of code. It just adds to the main method code which fulfills the test's requirement, and little else.
I was a bit surprised by my reaction to this, but realised that it's partly what XP teaches you: because you're outlining the skeleton of your later design in your tests, code like this feels like wasted effort. The test sketches the outline of code, but it's not code that's a step toward your final end product.
In the end, Yoz won this argument, and did so by pointing out, I think, one of the problems of unit testing the XP way. XP emerges, in large part, from Smalltalk best practices. One of the great features of Smalltalk is that you're working in a completely OOP environment. Access and introspection just aren't much of a problem. If there's an object out there, you can talk to it.
No matter how OOPified our current programming world is, that's just not the case, and that poses problems for unit testing with suites like JUnit. Take a look at the example above. One way that we could improve the design of the code, and write a test that fits in with the main execution flow is something like this:
def testButtonPressable(self):
full_url = self.wap_dir + self.formurl()
params = urllib.urlencode({'test' : 1})
f = urllib.urlopen(full_url, params)
cgiobject = CgiObjectSingleton()
return self.assertEquals(cgiobject.form['test'], 1)
Here we really are testing something, without adding additional code. We're seeing if opening the form's submit URL passes data to our cgi code. To do that we get hold of the object that represents the CGI codes state, and peer in it to see if it received the form data.
Unfortunately, this approach is impossible without quite a bit of wrapper coding: the CGI script in our world is in a completely different process space, and lives and dies without being easily introspected by our test code. We could write a persistent CgiObject communication interface, but you wouldn't normally do so when writing CGI code without a unit test.
This seems a random example, but I've hit the same problem in other places as well. Testing WxPython GUIs using PyUnit is difficult, for instance, because somehow you've got to interpose your tests into your Python app's event loop. I have funky code to do this now, but it required some heavy extra coding. Unless you're really enthusiastic about writing your own test framework code, such test framework hacking has got to feel like wasted time.
It goes without saying that in Smalltalk you hit these problems far more rarely. You're all sitting in the same event loop, and all instantiated objects and classes are accessible.
Even with these problems, though, I still write my tests before my code. Why? Well, part of the reason is I rather like Smalltalky OOP: having easily examined objects I think does lead to better code, and it's nice to have that kind of architecture fall out of the test code you're writing. One of the recurrent problems with CGI code, for instance, is that it's really tempting to write it in a procedural style. Splitting it up into individual objects makes things a lot easy, and unit testing helps build that discipline.
The other reason is, as the phrase goes, I've become "Test Infected". My tests have now caught so many bugs, small or large, that it feels rash to write code without writing the tests first.
My infection was unconnected to XP practices. The first program I wrote tests for was the code that handles my mail archiving. I really, really, really didn't want this to fuck up, so I carefully pre-wrote all my tests. Since I started using the code (about 700 lines of Perl), I've only hit one bug. I found the problem almost instantly by kicking up the test suite again. It turned out that the syntax of the GNU 'date' command had changed subtly between versions. It's the sort of bug that would have taken days to track down without the testsuites.
My own feeling is that, if you're uncomfortable with JUnit, just write tests the way you feel comfortable with. After a while, when you've received some outright benefits from using tests, you'll feel more encouraged to get to grips with a more alien suite. In the end, the *Unit classes are just a fancy way of saying: test this, then this, then this, then this. And that's all you need. For small programs these days, I'm spending more time in Python's doctest .
About seven months ago, I was gibbering in my Sunday Times column about Internet pressure groups. I rather glibly promised to give links to anyone who mailed me with info about their own single issue site. I've now dug up the mailbox that contained all of those URLs. Gritting my teeth with the shame of being so late, here are those links. No guarantee of quality here - they're just people who wrote in. It's spoor for the googlebot, mainly.
Somewhere to go if you're a descendant of the Bond-Jones family of Liverpool.
A slightly strange free online test for heart trouble., together with a history of the Norfolk and Norwich hospital and the unsuccessful fight for its survival.
A kinda warbloggy, kinda not Irish blog.
A site by Brian Barder which, as he says, "absolutely buzzes with multiple bees from my pinkish bonnet". It's sort of JerryPournelle.com mixed with Samizdata.net in the style of David Brake's Weblog. Also, possibly, Jimmy Young.
A site about looking after children's teeth.
A parody of National Westminster bank.
A site that lets you add your own entry to the Band Family Tree.
And Greenhouse Gas News, which does exactly what it says.
I've had a rant building up about this for some time, but Stef's always been better at the nuclear-tipped flame than me.
We've running FaxYourMp.com for two years now, always in the expectation that Parliament would eventually introduce their own system for making representatives more easy to contact. Not only has that not happened - they've now started filtering constituency mails. Their obscenity filter has caught constitutent mails about the upcoming Sexual Offences Act, and a party position paper on - of course - censorship.
Stef has all the facts on faxyourmp.com, and more. It's really worth reading, both as an examination of where e-government is now, how far it has to go. And how easy it could be to get there.
One of the most heartening aspects of the service has been the letters that constituents write. Almost without exception, the letters they send MPs are reasoned, well thought out, not always perfectly spelled, but often insightful engagements in civic society. Far from the image of a disaffected and disengaged electorate, we see a mass of people who've discovered that they can effectively participate in democracy- if artificial and archaic barriers are not put in their way.
I can't be the only one who sees the irony in the fact that in the week that we celebrate 50K faxes served, the people whose job should be doing what we do for free are still trying (feebly) to raise barriers against the citizenry.
There's a dramatic mindset change that needs to happen over there, because, if you will not give us greater democracy, we will simply take it from you.
Paul Ford quotes Ullman, on coders endlessly feeling their way forward:
The corollary of constant change is ignorance. This is not often talked about: we computer experts barely know what we're doing. We're good at fussing and figuring out. We function well in a sea of unknowns. Our experience has only prepared us to deal with confusion. A programmer who denies this is probably lying, or else densely unaware of himself.
The BBC News site has gathered together a panel of experts to answer questions on the Iraqi war. They're answering queries that range from straightforward but rarely answered ("Why isn't Saddam called 'Mr Hussein'?") to the slightly tougher ("Can NOT going to war be unethical?", answered by Julian Baggini, humanist moral philosopher).
Looks like WINE, the Windows non-emulator for Linux, is going to have some problems making the shift to glibc2.3. WINE has its own implementation of threads, which glibc doesn't know about. Part of the act of splicing this implementation into the old glibc involved gently pursuading the library to look in a different location for system error result codes. That hack doesn't work in the new glibc.
It looks like the solution may be to port WINE to libc threads, which is a bit terrifying. Previously, it's been out of the question, because there just wasn't a good match between pthreads system and the Windows model. A combination (I think) of the new kernel's thread implementation and improvements in pthreads itself may fix that, but it's still a big leap.
If WINE does make the move, a few other bonuses fall out of the work. Firstly, Mono, the Unix port of .NET, would be able to re-use WINE code for its graphics and UI libraries. And because WINE would no longer be bbolting strangeness onto glibc, the project would be able to use Valgrind, the open-source memory debugger for x86-Linux.
There are political ramifications also. The WINE project is in a curious configuration at the moment, with several groups keeping their own mildly forked versions (either for business reasons, or because of disagreements over licensing). They're all going to have to come together to co-operate with this - and in pretty smart order, because Redhat ships with the new glibc in a few months.
These are the kind of shifts that often utterly devastate private programming projects. They can be pretty stressful for open source endeavours too. If you are at all curious how free software copes with major logistical challenges, this would be a good project to watch.
Phil "Samuel Pepys" Gyford has re-animated an old project of his, Byliner. It keeps track of online publications like Salon, the Guardian and the NYT, and mails you when new articles appear by your favourite authors. It's a great resource - can't wait for when Phil implements RSS feeds too. The Daypop stylee most popular stories and authors page is fun.
Looks like there's a reasonable chance they would have been shredded, along with as many as 90,000 other applicants. As Robin says, how many of those INS detainees were held as a result of this, or some less deliberate bureaucratic foul-up?