| Main |

March 31, 2009

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.

March 24, 2009

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.

March 18, 2009

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.

March 9, 2009

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.