Alastair’s Place

Software development, Cocoa, Objective-C, life. Stuff like that.

Is It Time to Rename “Digital Piracy”

Stephen J. Dubner (via DF) asks whether it’s time to start calling “digital piracy” something else.

John Gruber suggests “bootlegging”, but quite frankly we don’t need a new word.

The term “piracy” has been used for literally hundreds of years (certainly as far back as the 18th century) to describe copyright infringement, and was enthusiastically adopted by the software piracy groups during the 1980s. I and I am sure many others remember seeing material put out by software pirates that was festooned in Jolly Roger flags and other symbols of piracy on the high seas.

This idea that it is somehow unacceptable and that it doesn’t mean what well-established historical references quite clearly show that it does mean is just ignorant revisionism of the worst kind.

Google Imposing Its Twisted Morality on Another Country

In Google’s eyes, it seems to be totally unacceptable that South Korean users, whose democratically elected government has passed a law requiring that larger websites use verifiable real user names, should comply with their own law.

As a result, Google’s efforts to implement this requirement are intentionally half-hearted and allow South Korean citizens to circumvent the measure simply by lying about their country. Worse, Google even advises them to do so!

In this, Google is guilty of quite astonishing arrogance. Apparently it is Google’s right to decide whether or not something is acceptable in South Korea, not the democratically elected government of South Korea. Google is, let us remember, run by a bunch of unelected Americans, whereas the South Korean government was voted in by its people and therefore has a democratic mandate.

Google’s undemocratic, pompous, self-righteous behaviour is disgusting.

Virginia Anti-spam Law “not Constitutional”?!

Apparently the U.S. Supreme Court has decided that the state of Virginia’s anti-spamming law violates First Amendment rights. Or, perhaps more accurately, that it will not challenge the opinion of the Supreme Court of the Commonwealth of Virginia on the matter.

But as Spamhaus previously observed, it is illegal for sound trucks to “drive around neighbourhoods blasting amplified announcements” and for pirate radio stations to “flood the airwaves with broadcasts of any content”, nor is it acceptable for anyone but U.S.P.S. to put printed material in peoples’ mailboxes or for people to graffiti things or to leaflet car parks.

This misuse of the right of Freedom of Speech in the United States Constitution represents a substantive abuse of the purpose of the First Amendment; it was never intended to be used to permit the sending of junk e-mail, whether or not that e-mail contains speech that is otherwise protected. Freedom of Speech is really about whether or not the state is able to punish someone for speaking their mind, not about whether or not they should be allowed to fill the e-mail inboxes of millions of innocent citizens with often unpleasant and unwanted messages, with the resulting harm to both legitimate senders of e-mail and to individuals and corporations alike.

Identity of “The One Byte Wonder”?

Does anyone know the real-world identity of the individual on MSJ who identifies himself as “The One Byte Wonder”? If you have any useful information (I have already accumulated quite a bit), please let me know.

If you don’t know what MSJ is, or don’t know which MSJ I mean, then you probably don’t have any information either.

When Installing Twisted on OS X Server 10.5

When installing Twisted on OS X Server 10.5, take care!

Apple’s Wiki server is using Twisted Web2, which isn’t part of the Twisted distribution that you (or easy_install) will find on PyPi. If you just blindly install a newer Twisted, you’ll get this kind of thing in your server’s system.log:

com.apple.wikid[86011]: Traceback (most recent call last):
com.apple.wikid[86011]:   File "/Library/Python/2.5/site-packages/Twisted-8.1.0-py2.5-macosx-10.5-ppc.egg/twisted/application/app.py", line 609, in run
com.apple.wikid[86011]:     config.parseOptions()
com.apple.wikid[86011]:   File "/Library/Python/2.5/site-packages/Twisted-8.1.0-py2.5-macosx-10.5-ppc.egg/twisted/application/app.py", line 589, in parseOptions
com.apple.wikid[86011]:     usage.Options.parseOptions(self, options)
com.apple.wikid[86011]:   File "/Library/Python/2.5/site-packages/Twisted-8.1.0-py2.5-macosx-10.5-ppc.egg/twisted/python/usage.py", line 226, in parseOptions
com.apple.wikid[86011]:     for (cmd, short, parser, doc) in self.subCommands:
com.apple.wikid[86011]:   File "/Library/Python/2.5/site-packages/Twisted-8.1.0-py2.5-macosx-10.5-ppc.egg/twisted/application/app.py", line 599, in subCommands
com.apple.wikid[86011]:     for plug in plugins:
com.apple.wikid[86011]: ---  ---
com.apple.wikid[86011]:   File "/Library/Python/2.5/site-packages/Twisted-8.1.0-py2.5-macosx-10.5-ppc.egg/twisted/plugin.py", line 204, in getPlugins
com.apple.wikid[86011]:     adapted = interface(plugin, None)
com.apple.wikid[86011]:   File "/System/Library/Frameworks/Python.framework/Versions/2.5/Extras/lib/python/zope/interface/interface.py", line 635, in _call_conform
com.apple.wikid[86011]:     return conform(self)
com.apple.wikid[86011]:   File "/Library/Python/2.5/site-packages/Twisted-8.1.0-py2.5-macosx-10.5-ppc.egg/twisted/plugin.py", line 68, in __conform__
com.apple.wikid[86011]:     return self.load()
com.apple.wikid[86011]:   File "/Library/Python/2.5/site-packages/Twisted-8.1.0-py2.5-macosx-10.5-ppc.egg/twisted/plugin.py", line 63, in load
com.apple.wikid[86011]:     return namedAny(self.dropin.moduleName + '.' + self.name)
com.apple.wikid[86011]:   File "/Library/Python/2.5/site-packages/Twisted-8.1.0-py2.5-macosx-10.5-ppc.egg/twisted/python/reflect.py", line 426, in namedAny
com.apple.wikid[86011]:     topLevelPackage = _importAndCheckStack(trialname)
com.apple.wikid[86011]:   File "/usr/share/wikid/lib/python/twisted/plugins/wikid.py", line 9, in 
com.apple.wikid[86011]:     from apple_utilities.tap import WikiServiceMaker
com.apple.wikid[86011]:   File "/usr/share/wikid/lib/python/apple_utilities/tap.py", line 24, in 
com.apple.wikid[86011]:     from twisted.web2.log import LogWrapperResource
com.apple.wikid[86011]: exceptions.ImportError: No module named web2.log

Worse, you can’t just check-out the Twisted trunk to get a copy containing the twisted.web2 module, because Apple’s wikid also depends on twisted.web2.dav, which was removed from the trunk in [22866]/[22867] (see #3072 for why this happened).

It turns out (see #3081) that there is a plan to re-introduce web2.dav to the Twisted trunk, the work for which is going on in svn://svn.twistedmatrix.com/svn/Twisted/branches/dav-take-two-3081-3 (Browse in Trac), so you can do e.g.

$ svn co svn://svn.twistedmatrix.com/svn/Twisted/branches/dav-take-two-3081-3 Twisted
$ cd Twisted
$ python setup.py bdist_egg
$ cd dist
$ sudo easy_install Twisted*.egg

or similar to install a version that is compatible with the Apple Wiki server.

I have reported this as rdar://6694255 in case anyone else wants to refer to the bug number in their own dealings with Apple.

New Version of Netifaces

It’s been quite some time since I posted anything on my blog, so I thought I’d just mention that I’ve released a new version of my Python module, netifaces.

The only major change is that Solaris users get some additional functionality courtesy of a patch from Olivier Bourdon, but it seemed a good opportunity also to build some new binary eggs for Windows users.

Wow

OK, so GeoEye-1’s photo of Washington D.C. gets my vote as the coolest thing I’ve seen all week. It makes you realise just how many people turned out to see the inauguration of President Obama.

Big Spike in Spam?

Has anyone else noticed a big spike in spam recently? In 2008 hardly any spam got past my filters, but in the first few days of 2009 I’ve managed to accumulate over 90 junk mails(!)

Grrrr… Zombie Processes From Apple Mail

I don’t know if anyone else has noticed, but as of the 10.5.6 update, Apple Mail now creates a zombie AddressBookSync process every time you send an e-mail.

If you send enough e-mails, you’ll find that your process table is full and your machine just won’t work properly.

Filed as rdar://6451715.

Finally Fixed One of Our Servers!

One of our servers has been playing up since back in June when something caused it to stop responding to Server Admin. The only hint was mysterious errors on the system console, such as

Jun 23 10:19:16 server servermgrd[303]: Got error -9845 for SSLHandshake
Jun 23 10:19:16 server servermgrd[303]: Exception in threadListen: Socket: Connect failed

Server Admin’s error message wasn’t much help either; it just insisted that there was no server at that address (not true).

In the end it turned out that a certificate, together with its private key, had somehow ended up in the System keychain. And servermgrd stupidly picks up any such certificate (presumably at random, as I certainly didn’t specify which one to use anywhere) and tries to use it when performing an SSL negotiation.

Deleting this rogue certificate from the System keychain seems to have fixed the problem and I can now admin the server again with Server Admin, rather than having to use the command line and a text editor.