For universities, the Internet world has fundamentally changed
Once upon a time, the Internet was just something that you used tocommunicate with other universities (and companies). One consequenceof this was that the university needed to provide everything for itsown people; all of the services they needed needed to come from theuniversity.
This is no longer the case for universities. Increasingly, people nolonger want you to be their service provider ( partly because theyalready have their own ), and on top ofthat other people can do bits of it better than you can
HTML5 may end up giving us real, working XHTML
Here is a thesis: the potential success of HTML5 is the web's bestchance to get XHTML (in some version, in this case 'XHTML5') in ausable form.
In theory, XHTML 1.0 was just an XML serialization of HTML 4. Inpractice, this never was the case; there were real semantic changes between HTML 4.01 strict and XHTML 1.0, things thatthe XHTML people just couldn't resist changing. This meant thatsupporting XHTML 1
My problem with the obvious solution to my unexposed types problem
In my last entry about solving my unexposed types problem , I sort of cheated; I left out one obvious solution.My problem was that I wanted to have a function with 'polymorphicarguments', one that could take either strings or compiled regularexpressions and then tell them apart.
Well, you know, one obvious solution is to not have such a crazyinterface in the first place. A clearer, simpler approach would be tohave two separate functions, one that takes compiled regular expressionsand a second one that
A gotcha with Bash on Ubuntu 8.04
Suppose that you have an Ubuntu 8.04 system where you have opted to make/bin/sh be bash, the way it used to be in 6.06, and you have an accountwith /bin/sh as the login shell (for example, you created it with plain useradd ). So you log in to the account and everything seems normal andbash-y, until you try to do filename completion and get:
$ cd / -sh: <( compgen -d -
Solving unexposed types and the limits of duck typing
When I ran into the issue of the re module not exposing its types , I considered several solutions to my underlyingproblem of distinguishing strings from compiled regular expressions.For various reasons, I wound up picking the solution that was the leastannoying to code; I decided whether something was compiled regularexpression by checking to see if it had a .match attribute.
This is the traditional Python approach to the problem; don't checktypes as such, just check to see if the object has the behavior thatyou'
A shell script thing that I have learned the hard way
Here is a note to myself about shell scripting, especially things that Iwrite on the fly on the command line: under no circumstance should I useany ' for ... ' loop index variable apart from $i .
I say this because, based on experimental evidence so far, I amcompletely sure to use $i in the body of the for loop, no matterwhat sensible variable name I picked as the loop index in the for statement. And, of course, the Bourne shell will let me
Why the NFS client is at fault in the multi-filesystem NFS problem
In yesterday's entry , I said that theNFS clients were at fault in dealing with the duplicate inode numberproblem. Now it's time for the details, because on first look thisappears a bit odd; how can it be the client's responsibility to avoidduplicate inode numbers, when the server gives it the inode numbers?
In the NFS v3 specification ,inode numbers only appear in one spot; they're part of the fileattribute structure that the server returns for GETATTR requests.While
The cause of the multi-filesystem NFS export problem
There is a famous irritation with managing NFS filesystems which boilsdown to that NFS clients have to know about your filesystem boundaries.It goes like this: suppose that /home and /home/group1 are separatefilesystems and you NFS export both of them. What you would like isthat clients NFS mount /home and automatically get /home/group1 too, because this lets you transparently add /home/group2 next month.However, this doesn't work (although some systems will try hard to
Are security bugs always code bugs?
I'll be generous and ask the slightly broader question: are security'bugs' always caused by code bugs? I believe that the answer clearlyhas to be no; while there's a decent argument that failure to properlyescape input is a code bug, I think it stretches the term beyondall non-circular meaning to say that using the wrong cryptography is a code bug.
I think that there are at least the following sources of securitybugs:
- outright code bugs, the traditional off by one errors
XHTML vs HTML5
Every so often these days, an XHTML fanatic goes off on a rant abouthow HTML5 is all a horrible mistake and a nightmare ( this one is abouttypical for the breed, and is what set me off in turn). These people arecommitting a simple mistake: they misunderstand the nature of the world.
It's really simple; XHTML and HTML5 are entirely different sorts ofstandards . XHTML is an invented standardand has failed because it had very high costs of implementationand use and provided almost