Another problem of secrecy

Another problem of secrecy is that it robs people of the ability toobject.

When it's secret, you don't know that something is being done, and ifyou can see something happening you don't know why. Happenstance,coincidence, deliberate action? Who knows, and who can argue when youdon't know what to argue against or when. (In extreme cases, even whoto argue with.)

(I guess the problem of secrecy may nothave been entirely that, after


A sociopolitical advantage of distributed version control

One of the recent discussion topics on Planet Debian has been version controlsystems, especially distributed VCS versus centralized VCSes like CVSand Subversion. (I have some opinions on this myself, so I read the entries with some interest.)

One of the points brought up for DVCSes, expressed for example here or the comments here , is thatwith a DVCS you don't have to start your serious involvement with aproject by begging for commit access (that you are unlikely to get,since you have no track record


Initializing Python struct objects with optional defaults

Recently I was writing code to register names and theirattributes. There were enough attributes that I didn't want to specifyall of them all of the time, so I did the obvious Python thing: I madethe register() function take a bunch of keyword arguments that haddefault values. The attributes are stored with a struct object , because I wanted an attrs.attribute syntax for accessing them.

The straightforward way to initialize the struct object was to write' vi = ViewInfo(factory = factory, onDir


Emulating C structs in Python

One of the few data types from C that I miss when writing Python codeis struct s. The simplest replacement is dictionaries, but that meansyou have to write thing['field'] instead of thing.field . I can'tstand that (it's the extra characters).

If you want thing.field syntax in Python, you need an object. Thesimplest C struct emulation is just to use a blank object andset fields on it:

class MyStruct:  passms = MyStruct(

Weekly spam summary on December 17th, 2005

To start with, Hotmail's numbers:

  • 3 emails accepted from Hotmail, at least two of them likely spam.
  • 263 messages rejected because they came from non-Hotmail emailaddresses.
  • 106 messages sent to our spamtraps.
  • 33 messages refused because their sender addresses had already hitour spamtraps.
  • 6 messages refused due to their origin IP address (five for being inthe SBL, and one from Nigeria).

Despite all of these crappy numbers, we've determined that we get atleast


The problem of secrecy

The problem of secrecy is that it lets people hide their mistakes.People don't like admitting to mistakes, so if given a chance a fairnumber of people will actively hide them. And secrecy hides people'smistakes passively by preventing inspection of things.

Hidden mistakes cannot be corrected and cannot be learned from.Sometimes they become wrapped in layers of denial, preventing evenpeople in the know from doing anything, because to do something wouldbe to negate the denials.

Sometimes secrecy is passive, where people are


On the web, text colours are an all or nothing thing

Every so often I think about giving WanderingThoughts ' breadcrumbs barup at the top a background colour to make it stand out better (perhapsa nice yellow like Jakob Nielsen uses). Butevery time I've had that thought, I cringe at the amount of workinvolved and leave it alone.

It's a lot of work because on the web, there is no such thing asspecifying just one text colour property . I can't just specify thebackground colour for the breadcrumbs; I would have to


On the name of USB flash memory drives

I've been somewhat confused about what to call USB flash memory 'diskdrives' for some time, since I've seen several names. Courtesy of PeteZaitcev here ,who should know since he works on the Linux kernel USB stack amongother things, I now have a pretty definite answer; they are properlycalled 'USB keys'. A 'Memory Stick' (with the capitals) is somethingentirely different, and 'memory stick' risks being confused with it.

(I suppose I could just


Another introspection trick

Here's another example of Python's introspection and commandinterpreter being useful:

[x for x in dir(m) if isinstance(getattr(m, x), str) and 'localhost' in getattr(m, x)]

One of our Mailman lists had been accidentally set up thinking thatthe machine's name was 'localhost', instead of the machine's actualhostname, and this was causing problems. Mailman is written in Pythonand offers access to the internals of list data


Reddit versus Digg: a little detail that matters

Since reddit.com and digg.com started showing up on the geek radar,I've been checking them out. Since both are about the same thing,roughly a 'just the links' version of Slashdot 's 'news for nerds' approach, Iexpected to like them about equally, or like digg.com more, sinceit has link summaries (which are often the most useful bit of Slashdotfor me).

To my surprise, I've been barely visiting digg.com , but