Help classify galaxies and other astronomical objects with Galaxy Zoo

I came across this great project Galaxy Zoo via a Newbury Astronomy Society talk I went to recently. Basically you get to take part in classifying galaxies and other objects and the pooled results are used in real astronomy papers.

The Galaxy Zoo forums are active and they have discovered new previously unknown objects via public interest. Also people have been quoted in Astronomy journals and so on for their contributions and one girl even got to name a new object she found. If this sounds interesting head over to Galaxy Zoo and its related projects to get started: http://www.galaxyzoo.org.

Here is an example of me classifying galaxies (click on image to zoom):

How awesome is this? Totally awesome.

Getting back into the swing of things

So I got my main computer running FreeBSD again. Except I'm using KDE for the desktop environment, instead of icewm. It has been a few years since I gave KDE a fair trial, and after compiling it a couple of days ago. I must say I am blown away by how awesome it is.

It might turn out that I get sick of it and go back to icewm, but so far so good.

Took me a while to get this FreeBSD box up and running. A long while. I had to acquire a second SSD for it, and then a compatible graphics card. So plucking up the courage to pay for those items took me about 6 months. Various other things got in my way too.

But now, the machine is up and running and I haven't booted into Windows 7 since. Not that I won't do again. I love computers, and pretty much like to use all OS I can get my hands on. Diversity is important. I've never owned a MAC however as I cannot afford one. I do have an DEC AlphaStation 255, but that's another story.

Anyway, I'm rambling.

The title of this post is about my long struggle to get my evolutionary art system up and running again. Not that I couldn't have gotten it going in a day if I had really wanted to, it just seems to have taken forever to get to the point where I was motivated enough and had the environment setup (i.e the FreeBSD box), to get going.

Well I dusted off the code tonight, and it compiled with a couple of modifications to account for some library changes. The next step is to start evolving images again, and also to relearn my codebase so I can continue advancing the code in new directions. All this inevitably is going to take another 6 months for no real reason, I feel. I'll get there eventually, I suppose :)

FreeBSD i386 Install (Part 3, Xorg)

So in the last part, wireless internet was setup. Great. Can't live without the internet!

In this glimpse into the world of FreeBSD, the X server will be setup and some other GUI stuff. It is worth bearing in mind, that if this machine was being setup as a server, none of this would be necessary.

The first thing to do, before anything else, and I am surprised that it has been tolerated this far in, is to get rid of that stupid terminal beeping.

$ su
Password:
# sysctl -a | grep bell
hw.syscons.bell: 1
# sysctl hw.syscons.bell=0
hw.syscons.bell: 1 -> 0

So that bastard has been found and disabled. But heaven forbid it it comes back on next boot:

# echo "hw.syscons.bell=0" >> /etc/sysctl.conf
# cat /etc/sysctl.conf
# $FreeBSD: src/etc/sysctl.conf,v 1.8.34.1.2.1 2009/10/25 01:10:29 kensmith Exp$
#
#  This file is read when going to multi-user and its contents piped thru
#  ``sysctl'' to adjust kernel values.  ``man 5 sysctl.conf'' for details.
#

# Uncomment this to prevent users from seeing information about processes that
# are being run under another UID.
#security.bsd.see_other_uids=0
hw.syscons.bell=0

Good. Now to get this system up to date with freebsd-update:

# freebsd-update fetch install
Looking up update.FreeBSD.org mirrors... 3 mirrors found.
Fetching metadata signature for 8.0-RELEASE from update5.FreeBSD.org... done.
Fetching metadata index... done.
Inspecting system... done.
Preparing to download files... done.

No updates needed to update system to 8.0-RELEASE-p2.
No updates are available to install.
Run '/usr/sbin/freebsd-update fetch' first.

The system was already up to date so it doesn't show any updates, but you get the idea. Now to automate this so that updates will be fetched every night via a cron job. Cron will send root an email if something needs installing (which then should be done manually via freebsd-update install) :

# echo "@daily root freebsd-update cron" >> /etc/crontab

OK the next thing to do is get the ports up to date. FreeBSD ports is a wonderful system which allows tons of software to be compiled and installed from source code. The whole collection exsits in /usr/ports by default. It was selected during installation so it should be there, but it won't be up to date. Ports can be updated using cvsup or portsnap, and probably also git if you can be asked, but here portsnap will be used because it is quick and saves bandwidth both on here and over at the FreeBSD mirror. To get the first portsnap:

# portsnap fetch extract

And then in the future, keep this updated with:

# portsnap fetch update

Now that ports is up to date, it is time to build the Xorg port. The alternative is just to use pkg_add -r to add a precompiled package. But I prefer to build from source wherever possible so as to be able to choose various compile time options and so on.

Go into the ports directory for xorg (as root). Actually, I hate this shell, and I want one with tab completion, so first of all install bash:

# cd /usr/ports/shells/bash
# make install clean

This will go and dilligently fetch, compile, and install the port. It might ask some questions along the way. To use bash by default (at login), edit /etc/passwd using vipw. Change the shell entry (the last entry in the line) for the users that you want to use bash. The default install of bash will be at /usr/local/bin/bash.

Great. Logged back in under bash, and su'd to root. Now to install Xorg. This is going to take a while, so better to preconfigure all options in advance before doing the make install clean:

[root@ ~]# cd /usr/ports/x11/xorg
[root@ /usr/ports/x11/xorg]# make config-recursive
===> Setting user-specified options for xorg-7.5 and dependencies
[root@ /usr/ports/x11/xorg]# make install clean

Once that build is complete, and only very rarely does something go wrong with FreeBSD ports, it is time to configure X. OK, the manual says that startx might work on its own, in which case, great. Otherwise, do this:

[root@ ~]# X -configure
[root@ ~]# X -config xorg.conf.new -retro

The retro switch should result in a black and grey grid, instead of a blank screen if it is omitted... Note I didn't want hald and dbus because I'm not that kind of guy. But this kind of tomfoolery requires adding:

Section "ServerFlags"
	Option "AllowEmptyInput" "False"
EndSection

To the config file, otherwise X will start crying. Here is the whole file for the Acer Travelmate 2303LCi:

Section "ServerFlags"
	Option "AllowEmptyInput" "False"
EndSection

Section "ServerLayout"
	Identifier     "X.org Configured"
	Screen      0  "Screen0" 0 0
	InputDevice    "Mouse0" "CorePointer"
	InputDevice    "Keyboard0" "CoreKeyboard"
EndSection

Section "Files"
	ModulePath   "/usr/local/lib/xorg/modules"
	FontPath     "/usr/local/lib/X11/fonts/misc/"
	FontPath     "/usr/local/lib/X11/fonts/TTF/"
	FontPath     "/usr/local/lib/X11/fonts/OTF"
	FontPath     "/usr/local/lib/X11/fonts/Type1/"
	FontPath     "/usr/local/lib/X11/fonts/100dpi/"
	FontPath     "/usr/local/lib/X11/fonts/75dpi/"
	FontPath     "/usr/local/lib/X11/fonts/URW/"
EndSection

Section "Module"
	Load  "dbe"
	Load  "dri"
	Load  "dri2"
	Load  "extmod"
	Load  "glx"
	Load  "record"
	Load  "freetype2"
EndSection

Section "InputDevice"
	Identifier  "Keyboard0"
	Driver      "kbd"
	Option "XkbLayout" "gb"
EndSection

Section "InputDevice"
	Identifier  "Mouse0"
	Driver      "mouse"
	Option	    "Protocol" "auto"
	Option	    "Device" "/dev/sysmouse"
	#Option	    "ZAxisMapping" "4 5 6 7"
EndSection

Section "Monitor"
	Identifier   "Monitor0"
	VendorName   "Monitor Vendor"
	ModelName    "Monitor Model"
EndSection

Section "Device"
        Option     "DRI"
	Identifier  "Card0"
	Driver      "intel"
	VendorName  "Intel Corporation"
	BoardName   "82852/855GM Integrated Graphics Device"
	BusID       "PCI:0:2:0"
EndSection

Section "Screen"
	Identifier "Screen0"
	Device     "Card0"
	Monitor    "Monitor0"
	SubSection "Display"
		Viewport   0 0
		Depth     24
		Modes "1024x768"
	EndSubSection
EndSection

Great, everything should work now, so copy the file to it's default position:

[root@ ~]# cp xorg.conf.new /etc/X11/xorg.conf

I also want a GUI login screen at boot. For kicks, I used slim because I thought it looked nice and slim:

[root@ ~]# cd /usr/ports/x11/slim/
[root@ /usr/ports/x11/slim]# make install clean
[root@ ~]# echo "slim_enable=\"YES\"" >> /etc/rc.conf

I even made a custom theme:

This is just a knock off of this theme called Rear Window by a guy called slackhack, combined with this logo. To install the theme do this:

[root@ ~]# cd /usr/ports/ftp/wget
[root@ /usr/ports/ftp/wget]# make install clean
[root@ /usr/ports/ftp/wget]# cd /usr/local/share/slim/themes/
[root@ /usr/local/share/slim/themes]# wget www.ashleymills.com/misc/bsd.tar.gz
--2010-05-10 22:54:02--  http://www.ashleymills.com/misc/bsd.tar.gz
Resolving www.ashleymills.com... 109.74.199.96
Connecting to www.ashleymills.com|109.74.199.96|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 132189 (129K) [application/octet-stream]
Saving to: `bsd.tar.gz'

100%[======================================>] 132,189      247K/s   in 0.5s    

2010-05-10 22:54:02 (247 KB/s) - `bsd.tar.gz' saved [132189/132189]

[root@ /usr/local/share/slim/themes]# tar xzvf bsd.tar.gz 
x bsd/
x bsd/slim.theme
x bsd/panel.png
x bsd/background.png
[root@ /usr/local/share/slim/themes]#

Then edit /usr/local/etc/slim.conf and change the current_theme value to bsd. The reason this config is in /usr/local/etc is because FreeBSD separates out the base system and everything else. Only config files for the base system go in /etc. Also change this line in slim's config:

xserver_arguments   vt09 -nolisten tcp

This ensures that Xorg only listens on the local interface.

Almost done, but I forgot that X isn't much use without a window manager. You could use twm, but I want to use icewm:

[root@ ~]# cd /usr/ports/x11-wm/icewm
[root@ /usr/ports/x11-wm/icewm]# make install clean

Now make sure icewm starts when you login from slim. Do this as the normal user:

[you@ ~]$ echo "exec icewm-session" > .xinitrc
[you@ ~]$ cat .xinitrc 
exec icewm-session
[you@ ~]$ 

I think that is everything. Reboot and it should boot into slim login manager, after which logging in will load icewm.

[you@ ~]$ su
Password:
[root@ /home/you]# reboot

Simple volume control for icewm on FreeBSD

icewm is probably my favourite window manager for X. When I'm using a UNIX system. Here is a screenshot:

Why do I love it? Well, for one thing on my system it is consuming about 10MB of RAM. Actually I'm running icewm-session so it's a bit more but really I only need the icewm part. So that is one reason, here are two others:

  • CTRL-ALT-SPACE brings up a command execution input field on the taskbar. This really useful for launching programs and so on. Much quicker than navigating a menu. For example I've aliased firefox3 to ff, so the launch is just CTRL-ALT-SPACE in one strike, ff, enter, and that's it..
  • Multi desktop support is builtin by default, and 4 desktops is the standard. It is easy to switch between by using CTRL-ALT-LEFT or CTRL-ALT-RIGHT. A window can be moved into another desktop just by adding a SHIFT into those commands.

OK so these are mainly about key bindings, but I just find that these defaults come naturally to me, and I find using icewm much more productive and straightforward than other wm. Mainly because I don't really need a menu and all that crap, I just need lots of shells and a way to switch between windows.

Anyway, to get the point of this post, icewm doesn't have a volume control thing. Lots of people have written them but it occurred to me that I didn't want to waste resources running some stupid thing just to change volume. I mean, how often do I change volume? Not very often. So why have an app running in the background dilligently waiting for my commands? No, it would be a waste.

On FreeBSD, controlling the volume of the soundcard is done via the mixer command. It is simple, mixer on its own lists all of the soundcard mixer values: line in, cd, pcm, etc. And changing say the volume is done by "mixer vol 30" to set it to 30. So I thought, fuckit, why not just write something in python in a few minutes to do this with a slider. Well here it is:

#!/usr/local/bin/python
import commands
from Tkinter import Tk,IntVar,Scale

def adjustVol(vol):
   commands.getoutput("/usr/sbin/mixer vol "+vol)
   return

root = Tk()
root.geometry('50x100+80+620')
vol = IntVar()
scale = Scale(root,variable=vol,from_=100,to=0,command=adjustVol)
scale.set(commands.getoutput('/usr/sbin/mixer -S').split(':')[1])
scale.pack()
root.mainloop()

mixerapp.py

That's it! The code simply creates a Tk window with a slider and sets the value accordingly. Since I wasn't making it generic, I just hard coded the screen position so that it came above the volume icon I added to the icewm toolbar. Here it is in action:

icewm toolbar then has an entry like this:

prog MixerControl vol_16x16.png /path/to/mixerapp.py

I got the icon image by searching on google images using the imagesize:16x16 modifier.

FreeBSD i386 Install (Part 2, Internet)

After the FreeBSD system has booted for the first time, after logging in as the non-root user created, the first thing needed in the modern world is internet access, since I had a cheapo TP-LINK TL-WN321G hanging around, which is based on the Ralink chipset I just used that.

After inserting the thing into the USB, see if it is recognized, by looking at the system message buffer via dmesg, and pipe it to tail in this case since I only care about the last few lines:

$ dmesg | tail -n 3
ugen3.2: <Ralink> at usbus3
rum0: <Ralink 54M.USB......., class 0/0, rev 2.00/0.01, addr 2> on usbus3
rum0: MAC/BBP RT2573 (rev 0x2573a), RF RT2528

OK, so it is a rum0 device, so let us have a look, we are going to need to su to root at some point so we will do that now too:

$ su
Password:
# ifconfig rum0
rum0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 2290
        ether 00:1f:e2:3d:40:05
        media: IEEE 802.11 Wireless Ethernet autoselect <adhoc> (autoselect <ad
hoc>)
        status: no carrier

Not really my MAC of course. FreeBSD requires the creation of a pseudo wlan device for wireless:

# ifconfig wlan1 create wlandev rum0

Which says to create the pseudo-device wlan1 using the parent device rum0. Note that I already had another device setup when I was writing this, so I used wlan1 instead of wlan0, since the latter already existed. Sometimes the devices don't go UP, so just to be sure:

# ifconfig rum0 up
# ifconfig wlan1 up
rum0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 2290
        ether 00:1f:e2:3d:40:05
        media: IEEE 802.11 Wireless Ethernet autoselect mode 11g
        status: associated
# ifconfig wlan1
wlan1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        ether 00:1f:e2:3d:40:05
        media: IEEE 802.11 Wireless Ethernet autoselect (autoselect)
        status: no carrier
        ssid "" channel 4 (2427 Mhz 11g)
        country US authmode OPEN privacy OFF txpower 0 bmiss 7 scanvalid 60
        bgscan bgscanintvl 300 bgscanidle 250 roam:rssi 7 roam:rate 5
        protmode CTS bintval 0

So you can see both devices are UP. Now you need information about the network you are connecting to. I'm connecting to a WPA2 encrypted network. If you already know the SSID, great, otherwise you need to scan:

# ifconfig wlan1 list scan
SSID/MESH ID    BSSID              CHAN RATE   S:N     INT CAPS
WIFIGATE        00:15:31:b4:82:90    1   54M -87:-95  100 EP   WPA

Now edit /etc/wpa_supplicant.conf to provide some data about the access point. There are a ton of options, but for a standard WPA2 AP you can hopefully get away with the following:

network={
   ssid="WIFIGATE"
   psk="PASSWORD"
}

Note "network={" can have no spaces. Now you need to start wpa_supplicant:

# wpa_supplicant -iwlan1 -c /etc/wpa_supplicant.conf
CTRL-EVENT-SCAN-RESULTS 
Trying to associate with 00:15:31:b4:82:90 (SSID='SKY01839' freq=2412 MHz)
Associated with 00:1f:e2:3d:40:05
WPA: Key negotiation completed with 00:1f:e2:3d:40:05 [PTK=TKIP GTK=TKIP]
CTRL-EVENT-CONNECTED - Connection to 00:1f:e2:3d:40:05 completed (auth)
[id=2 id_str=]

I did that in the foreground because I wanted to watch it, you can use -d for additional information. Now that it is connected, we need to get an IP, suspend wpa_supplicant with CTRL-Z it and then put it to the background:

 ^Z[1] + Suspended               wpa_supplicant -iwlan1 -c /etc/wpa_supp
licant.conf
# bg
[1] wpa_supplicant -iwlan1 -c /etc/wpa_supplicant.conf

Get an IP using dhclient:

# dhclient wlan1
DHCPREQUEST on wlan1 to 255.255.255.255 port 67
DHCPACK from 192.168.0.1
bound to 192.168.0.6 -- renewal in 43200 seconds.

Test:

# ping -c 2 www.google.co.uk
PING www-tmmdi.l.google.com (66.102.9.103): 56 data bytes
64 bytes from 66.102.9.103: icmp_seq=0 ttl=55 time=38.546 ms
64 bytes from 66.102.9.103: icmp_seq=1 ttl=55 time=37.888 ms

--- www-tmmdi.l.google.com ping statistics ---
2 packets transmitted, 2 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 37.888/38.217/38.546/0.329 ms

Now you might get annoyed by messages from wpa_supplicant, even though it is in the background, so you probably want to run it with the -B flag for daemon operation in the future. Of course, you don't really want to have to do this ever again, but it is worth seeing how to do it (because for some reason you will end up doing this many times on many machines for various stupid reasons). To make all this happen automatically at boot, add the following to /etc/rc.conf :

wlans_rum0="wlan0"
ifconfig_wlan0="WPA SYNCDHCP"

Which says to create the pseudo device wlan0 attached to rum0 and then configure it automatically via wpa_supplicant and dhclient. The synchronous_dhclient it I needed because background dhclient didn't seem to work for me, perhaps you will have more luck.

Now I don't use this rum0 because it sticks out of the laptop which is annoying. Instead I have a mini-pci:

iwi0: <Intel(R) PRO/Wireless 2200BG> mem 0xe0105000-0xe0105f4a irq 10 at device
4.0 on pci2

Which uses the antenna built into the laptop. I bought this of ebay for six pounds inc delivery. The laptop did have an Ambit T60N871 inside it, but I couldn't get WPA2 to work with ndiswrapper and the ancient Acer windows drivers, so I thought fuckit and just bought the 2200BG which I looked up to be supported withFreeBSD. Hint: you might need to turn the device on first, check for a 1 with sysctl:

# sysctl -a | grep iwi | grep radio
dev.iwi.0.radio: 1

OK well that is it, connected to the internet, if you wanted to use ethernet it should be as simple as typing ifconfig to see what the device is, and then dhclient-ing it. Right, so we now have a non-gui box, connected to the internet, woo hoo. Next time, setting up the GUI and some other stuff.

FreeBSD ZFS Root Install

NOTE: this is unrelated to the i386 installation we were going through in another post. That series will continue on its own.

OK so I found out about Sun Microsystems Zeta File System (ZFS) a while ago, and after being blown away by its blisteringly fast perforance on Opensolaris, I knew I had to run an OS that used it.

Now, Opensolaris is pretty badass, don't get me wrong. But I don't know, the feel of the OS, I just prefer FreeBSD. Now FreeBSD being the great project it is, ported ZFS a while ago. Unfortunately the encumbered sysinstall hasn't been upgraded to support it.

I tried a few tutorials to setup ZFS manually, but they never worked, and although I read the manpages and tried to work it out I gave up due to time and couldn't be bothered restrictions.

Luckily I came across this script from some random elite: http://myconan.net/blog/archives/1794. Note that this guy describes his blog as "animeBSD. Your source for random craps everyday.", which made me laugh.

But anyway, the script actually works!

Well OK, I had to make one modification to the script. I had to set SRCLOADER=0 for it to work. I also changed a few things like instead of /usr/home I used /home, but otherwise just used the script directly. BTW make sure you use "sh zfsinstall.sh" an not "./zfsinstall.sh" because the latter did not work for me for some reason.

To actually run this, you just DL the FreeBSD usb image, copy it to a usb stick with "# dd if=8.0-RELEASE-amd64-memstick.img of=/dev/da0 bs=10240 conv=sync", mount the USB, copy the edited script onto it, umount it. Reboot from the USB, go into fixit console from sysinstall, and then run the script, et voila!

FreeBSD i386 Install (Part 1, Install)

What's the point of this post? Well to quote David Mackay "When I acquire information, I usually put the details on a webpage, so that I don't need a memory, and so that other people can use this information too.". Besides, I thought it might be interesting for Windows users to get some insight into a different world.

Below I chronicle the installation of FreeBSD on an old Acer Travelmate 2303LCi laptop running at 1500Mhz, with 256MB ram, and a 40GB hard drive. Full instructions for installing FreeBSD can be found here. Incidentally I've never read them. After booting up the CD and selecting the correct language you will see the following:

OK, so you've seen now howto setup a basic FreeBSD system. Pretty straightforward right? Note that this system installed has no GUI as yet.

What I love about FreeBSD is that everything is straightforward and clean. Because you have to setup everything yourself, it forces you to learn what is going on. Perhaps this sounds daunting but once you get your hands dirty you realize that it is all very straightforward. Then you feel much better knowing that you understand what is going on rather than just using some system you don't have a clue about.

However, if you are into having things done for you, why not checkout PC-BSD: http://www.pcbsd.org/

Las Vegas Paper

Finally got round to uploading my Vegas paper:

Ashley Mills, David Lister, Marina De Vos, and Yusheng Ji: The impact of MS velocity on the performance of frequency selective scheduling in IEEE 802.16e Mobile WiMAX In Proceedings of IEEE Consumer Communications and Networking Conference, 2010, Las Vegas, Nevada. (c) 2010 IEEE

I just finished an internal report on something a lot more interesting. I'll be submitting a paper version of this report to a journal in the next few months I hope.

Exposing the lies behind the digital economy act 2010: the music industry is doing better than ever

This is what Jeremy Hunt, Conservative MP, had to say regarding why the Conservatives did not vote against the debill being rushed through (as taken verbatim from the letter I was sent referenced in my last blog post):

Blocking these measures in their entirety would have risked hundreds of thousands of jobs in the TV, film, music and sports industries and therefore not something we are willing to do.

Hearing this man, and his party's concerns, one might have been fooled at the time the bill was being passed into believing that the content industry was in dire straights. Imminently set to explode due to an overwhelming and relentless tide of ubiquitous pirating. He certainly seemed concerned. But what is the truth of the matter? How is the content industry really doing?

To address this question, let us take the information directly from the horses mouth and take a look at BPI's (British Phonographic Industry's) own figures on record sales for the past 10 years.

YearAlbum SalesSingles Sales
2000134.3m55.7m
2001144.9m51.2m
2002149.2m43.9m
2003159.3m30.9m
2004163.4m32.3m
2005159.0m47.9m
2006154.7m66.9m
2007138.1m86.6m
2008133.6m115.1m
2009128.9m152.7m

Note that BPI obtain these figures themselves from The Official Charts Company. These figures have a lot more impact when you see the graph, check this out:

So for the album sales, considering the variance shown, and the relatively small difference between the 2009 sales when compared to 2001. I wouldn't like to make a prediction about long term trends. Perhaps album sales are on the decline, but the argument is pretty irrelevant when you consider the singles sales

For singles sales, the trend is clear: over the past 5 years singles sales have seen a huge growth. What is all this nonsense about the music industry teetering on the edge of destruction? This could not be farther from the truth.

But where has this growth in singles sales come from? BPI can tell us that too. Here are the figures of physical and digital singles sales for the past 8 years, taken from a BPI press release concerning 2009 being a record year for singles sales:

YearPhysical SalesDigital SalesTotal Sales
200243.9m-43.9m
200330.8m-30.8m
200426.5m5.7m32.2m
200521.4m26.4m47.8m
200613.9m53.0m66.9m
20078.6m77.9m86.5m
20084.9m110.2m115.1m
2009 YTD1.6m116.0m117.6m

This was published before the year end, so the 2009 totals are cut short. Ignoring the fact that these figures don't match up with the other ones... I'll just plot the first 7 years of data, and nominally assume values of zero for the digital sales in the years 2002 and 2003:

How very curious. It seems that about 5 years ago, digital music sales exploded. And so it would seem that the very medium they strangled was responsible for the huge growth seen in their sector.

How can anyone, seeing this kind of growth, come to the conclusion that the music industry is being pirated out of business? Even if these figures are grossly incorrect, these are the figures promoted by the BPI! The very people so vehemently lobbying for the bill to pass? So why wasn't this mentioned in the house of commons during the debate? Why did Jeremy Hunt want me to believe that the situation was so dire, so critical, that debate and democracy had to be steamrolled? Why indeed I ask, why indeed.

One last thing. I plotted these graphs in Octave a free and open-source Matlab clone (they probably won't like me saying it's a Matlab clone, but what's free speech for afterall). Here is the code to reproduce the graphs:


   clear all; close all;
   bpid = [2000 134.3 55.7
   2001 144.9 51.2
   2002 149.2 43.9
   2003 159.3 30.9
   2004 163.4 32.3
   2005 159.0 47.9
   2006 154.7 66.9
   2007 138.1 86.6
   2008 133.6 115.1
   2009 128.9 152.7];
   
   figure(1);
   plot(bpid(:,1),bpid(:,2),'b-o');
   hold on;
   plot(bpid(:,1),bpid(:,3),'r-s');
   legend('Album Sales','Singles Sales');
   xlabel('Year');
   ylabel('Sales (Millions)');
   title('Annual Music Sales (BPI: http://tinyurl.com/y724m83)');
   print -dpng misc/bpi_albums_vs_singles.png;
   
   singles = [2002 43.9 0 43.9
   2003 30.8 0 30.8
   2004 26.5 5.7 32.2
   2005 21.4 26.4 47.8
   2006 13.9 53.0 66.9
   2007 8.6 77.9 86.5
   2008 4.9 110.2 115.1];
   
   figure(2);
   plot(singles(:,1),singles(:,2),'b-d');
   hold on;
   plot(singles(:,1),singles(:,3),'g-s');
   plot(singles(:,1),singles(:,4),'k-*');
   legend('Physical Sales','Digital Sales','Total Sales','location','NorthWest');
   title('Physical VS Digital Singles Sales (BPI: http://tinyurl.com/ygls3jc)');
   xlabel('Year');
   ylabel('Sales (Millions)');
   print -dpng misc/bpi_physical_vs_digital_singles.png;

Digital Economy Bill

The death bell of UK internet freedom has been rang.

A few days ago, the digital economy bill was voted through the house of commons during washup. A process of debate which could have lasted weeks, was rushed through in a few hours. This is a bad time not only for internet freedom, but also for democracy.

Whilst clause 18, the website blocking clause, was dropped, it was replaced by an even more heinous last minute amendment to clause 8:

The Secretary of State may by regulations make provision about the granting by a court of a blocking injunction in respect of a location on the internet which the court is satisfied has been, is being or is likely to be used for or in connection with an activity that infringes copyright.

(http://www.publications.parliament.uk/pa/cm200910/cmbills/089/amend/pbc0890704m.1326-1330.html)

Yes, you read that correctly.

So the high court can block not only websites which actually infringe copyright, but also websites considered "in connection with" such activity. Furthermore they can block websites that have never infringed copyright, but are considered "likely" to.

This is unbelievable power placed in the hands of the high court, and will no doubt be abused. It basically gives them the right to censor whatever they want.

The clauses pertaining to disconnection, whilst amended, were fundamentally not changed, and were voted through.

This means you can be disconnected on suspicion! of copyright infringement. That's right suspicion, they do not need to provide evidence.

Article 11 of the UN's Universal Declaration of Human Rights states:

(1) Everyone charged with a penal offence has the right to be presumed innocent until proved guilty according to law in a public trial at which he has had all the guarantees necessary for his defence.

This bill spits in the face of such rights.

Article 12 says:

No one shall be subjected to arbitrary interference with his privacy, family, home or correspondence, nor to attacks upon his honour and reputation. Everyone has the right to the protection of the law against such interference or attacks.

Blocking websites, and inspection of your internet traffic are both arbitrary interference with your privacy and correspondence.

I was one of the 20,000 or so people who wrote to their MP about the digital economy bill. I even phoned my MP. My MP is Richard Benyon of Newbury and West Berkshire. Here is my complete email correspondence with him regarding the issue:

-----Original Message----------------------------------------------------------
From: Ashley Mills [mailto:ashley@SPAM0ff.com]
Sent: 18 March 2010 12:55
To: BENYON, Richard
Subject: Don't rush through extreme internet laws

Dear Richard Benyon

I'm writing to you today because I'm very worried that the Government is
planning to rush the Digital Economy Bill into law without a full Parliamentary
debate.

The law is controversial and contains many measures that concern me. The
controversial Bill deserves proper scrutiny so please don't let the government
rush it through. Many people think it will damage schools and businesses as well
as innocent people who rely on the internet because it will allow the Government
to disconnect people it suspects of copyright infringement.

Industry experts, internet service providers (like Talk Talk and BT) and huge
internet companies like Google and Yahoo are all opposing the bill - yet the
Government seems intent on forcing it through without a real debate.

As a constituent I am writing to you today to ask you to do all you can to
ensure the Government doesn't just rush the bill through and deny us our
democratic right to scrutiny and debate.

Ashley Mills

--------------------------------------------------------------------------------
From: BENYON, Richard 
To: ashley@SPAM0ff.com 
Subject: RE: Don't rush through extreme internet laws
Date: Mon, 22 Mar 2010 11:44:41 +0000

Dear Mr Mills

Thank you for contacting me about the Digital Economy Bill.

I appreciate that this particular section of the Bill has caused a great deal of
concern amongst content creators and can assure you that it is something that my
colleagues have been considering carefully to get right.

From his conversations with the Government, my colleague Jeremy Hunt MP, the
Shadow Secretary of State for Culture, Media and Sport, believes that it is
listening to some of the concerns raised by photographers. The Government has
said that it will be bringing forward a whole host of changes to this clause for
 the Report Stage of the Bill. My colleagues will examine these changes closely
and make sure they address each of your worries below.

My Party and I are keen to move amendments that address the problem of people
stripping out identifying information from a digital image. We want to clamp
down on this and ensure that the Bill does not encourage such activities. We
also want to see in the legislation specific requirements for a search for the
rights holder and a system in place if that rights holder comes forward at a
later date. In no way should this Bill actually harm content creators. 

I am very hopeful that we can get this right as sorting out the current system
will unlock a whole host of content that can be used for the public good. I
really believe that the BBC and British Library archives for instance will be
much easier to access under these proposals.

Thanks again for letting me know of your concerns. My colleagues and I will do
all we can to make sure the Government takes these into account. 

Yours sincerely

Richard Benyon MP

--------------------------------------------------------------------------------
From: ashley [mailto:ashley@SPAM0ff.com]
Sent: 22 March 2010 12:23
To: BENYON, Richard
Subject: Re: Don't rush through extreme internet laws

Thank you for your response, but I am unable to understand from it, what actions
you personally intend to take to prevent the "Online infringement of copyright"
section being passed without debate.

I am particularly concerned with this section entitled "Preventing access to
specified online locations for the prevention of online copyright infringement".

Since it seems to suggest censorship of the Internet, which is a dangerous road
to start taking. One can imagine scenarios in which it is in the public interest
to see copyrighted material, such as for exposing crimes via whistle blowing. If
it is the case that the government or anyone else can suppress this information,
then it is against the public good.

Besides, I believe it is upto the content providers to enforce DRM through
appropriate media players and codecs, just as software developers have done
analagously for many years. So I am concerned that you do not have the interests
of the Internet user at heart. For example, when you say:

"My Party and I are keen to move amendments that address the problem of people
stripping out identifying information from a digital image. We want to clamp
down on this "

You are in fact stating that you want to legislate against the user being able
to modify digital content, are you not?

So you are in fact stating that you support restricting my freedom to alter data
that I have paid for, which is stored on my computer, whether or not I have the
aim of infringing copyright or not. Regardless of my intention, you wish to
prevent me modifying digital information that I have paid for. What will be
next? Restricting even the tools that enable such modification? Tools that are
used for a plethora of other activities.

Thus you seem to be advocating to restrict my freedom. And I want to know why
you believe this is necessary, and why this approach is better than requiring
the content providers to develop suitable DRM systems which can operate
satisfactorily within the current legal framework?

Regards

Ashley Mills

--------------------------------------------------------------------------------
From: BENYON, Richard 
To: ashley@SPAM0ff.com 
Subject: RE: Don't rush through extreme internet laws
Date: Wed, 24 Mar 2010 11:03:15 +0000


Dear Mr Mills

Thank you for your further e-mail about the Digital Economy Bill.

For nearly twelve years, the Government has neglected this crucial area of our
economy. We believe a huge amount needs to be done to give the UK a modern
regulatory environment for the digital and creative industries. Whilst we
welcome aspects of the bill, there are other areas of great concern to us.

We want to make sure that Britain has the most favourable intellectual framework
in the world for innovators, digital content creators and high tech businesses.
We recognise the need to tackle digital piracy and make it possible for people
to buy and sell digital intellectual property online. However, it is vital that
any anti-piracy measures promote new business models rather than holding
innovation back. This must not be about propping up existing business models but
creating an environment that allows new ones to develop. That is why we were
opposed to the original clause 17 and are still opposed to clause 29 which props
up ITV regional news with BBC Licence Fee payers money.

The Government's failure to introduce the Bill until the eleventh hour of this
Parliament has given rise to considerable concern that we no longer have the
time to scrutinise the many controversial and detailed measures outlined in
their proposals. We fully appreciate these concerns. However in certain areas,
including measures to allow website blocking in certain carefully proscribed
circumstances, there has been substantial debate in the House of Lords. I also
believe they should be debated in the House of Commons before we agree to them.
Only if we are confident that they have been given the scrutiny that they
deserve will we support them

It is also worth pointing out that many of the fears about the Bill's proposals
are not entirely accurate. People won't be disconnected from the internet
without due process. And it will only be a small minority of people who
consistently infringe copyright who are disconnected, not the average person who
happens to have done so once or twice. Even then, they may be able to reconnect
using another ISP immediately and without penalty.

Please rest assured that my colleagues in the Shadow Culture, Media and Sport
and Shadow Business, Innovation and Skills teams will do everything in their
power to work towards legislation that strengthens our digital sector and
provides the security that our businesses and consumers so desperately need.
Once again, thank you for taking the time to contact me.

Yours sincerely

Richard Benyon
--------------------------------------------------------------------------------

Note there were some other emails because of having to send it twice, which I've omitted as they say nothing significant, just in case I get accused of missing things out.

I phoned the guy on the day of the Second Reading, and asked him if he was going to speak. He said that he wasn't attending the full 6 hours so he couldn't speak but that he would try and go in and intervene. I watched almost the whole event on BBC iplayer streaming. On the day of the third reading I received this email:

--------------------------------------------------------------------------------
Dear Ashley

I am writing to you further to our conversation yesterday on the Digital Economy
Bill which (as you know) had its second reading in the House last night. I
attended the first part of the debate and heard the contributions from the
Minister and Jeremy Hunt, the Shadow Minister. I think The Government were wrong
to put such an important Bill through at this stage and in this way. As Jeremy
pointed out there is much in the Bill that our creative industries want and we
did not want to delay that part of the Bill. I suggest you read his speech. 

If you follow this link you will be able to see what Jeremy Hunt, Shadow
Secretary of State, said in the debate 

http://www.publications.parliament.uk/pa/cm200910/cmhansrd/cm100406/debtext/100406-0008.htm#1004069000660

In addition, I attach a letter from Jeremy Hunt setting out the Conservatives
policy on the key parts of the Bill which you may find of interest.  Having been
agreed to be put to Committee the Bill will most likely go into “wash up” where
Jeremy Hunt will I am sure push for the amendments outlined in the attached letter. 

With best wishes

Yours sincerely

Richard Benyon MP

--------------------------------------------------------------------------------
From: ashley@SPAM0ff.com
To: BENYON, Richard 
Subject: RE: Don't rush through extreme internet laws
Date: Wed, 31 Mar 2010 11:56:34 -0000


Thank you for your response to my email about the Digital Economy Bill.

I am still confused as to what you intend to do to ensure that the bill
gets a proper debate.

I understand that the second reading of the bill is on 06.04.2010. Will
you be present at this reading? If so, please vote against the bill, so
that it cannot pass onto the next stage. Thus when your party is in office
in a few weeks time, as I duly hope it will be <edit>lol</edit>, the process can start
again under a new parliament, with proper debate.

Thanks

Ashley Mills
--------------------------------------------------------------------------------

Here is the attachment he was going on about: DEAR COLLEAGUE Jeremy Hunt Digital Economy Bill (2).doc

After seeing the bill voted through 189 to 47, I was infuriated, and was sick of him towing the party line, so I sent this response:

From: ashley 
To: BENYON, Richard 
Subject: 	Re: reply
Date: Thu, 08 Apr 2010 00:05:25 +0100 (Wed, 23:05 UTC)
Thank you for your response,

I watched the 2nd reading yesterday, and have just watched the bill voted
through to third reading tonight.

There was considerable opposition to the bill over the two days, but apart from
a few notably sincere objectors, feigned "regret" was the most common opposition
communicated. This feigned regret, often accompanied by a derailing anti-labour 
sentiment, was inevitably followed by a hypocritical support of the bill: the
same people who complained about the bill being steamrolled, unscrupulously
still voted it through in the majority of 189 to 47.

I am disappointed you did not raise an intervention nor communicate my concerns
to the commons.

The attached letter from Jeremy Hunt is resolutely unsatisfactory and displays
the same resigned "regret" promulgated during the second reading and today. This
charge of "regret" is entirely vacuous, it was stated continuously yesterday and 
today apriori to voting, as if the situation could not be changed. Yet it was
entirely within the power of you and your fellow MPs to vote against the third
reading. So this pre-declaration of "regret" expressed yesterday and today, is
and was a terrible act of dishonesty.

Furthermore, many of the arguments for the bill focused around its criticality,
and I see these sentiments echoed in your attached letter. Oh what rhetoric! As
if any rational person is going to believe that the entire digital economy will
collapse if the bill is delayed for 3 or even 6 months. This notion is totally
absurd and an insult to our intelligence.

This was my first real foray into the world of politics. I was deeply engaged
with the issue, as you surely know, since I spoke to you directly. And I must
say I am utterly shocked at the blasé manner in which the situation has been
handled. Pointing the finger at Labour is to make light of all our freedoms. The
blame that lay initially with Labour in steamrolling the bill, became shared
among you all, when you failed to act to vote against it. The blame lies with
you all.

Regards

Ashley Mills
--------------------------------------------------------------------------------

I haven't heard anything back. The only thing I regret is saying "Thus when your party is in office in a few weeks time, as I duly hope it will be...". Because that was a lie designed to get him on side. But I shouldn't lie, because that would make me like them.

Anyway, of course I didn't just do all this off my own back. I became aware of it through http://www.38degrees.org.uk/page/speakout/extremeinternetl and the original email was sent via that site using the template. Later I became aware of http://www.openrightsgroup.org/ and then joined the IRC room and followed the debate along with everyone else.

Anyway, can't go into further details as I need to go to bed. So I'll end by saying this: the politicians have stepped into the world of the geek, and they have grossly underestimated what they are up against. This is not an empty threat, nor an over dramatized indulgence for the sake of it, this is a serious admission. So serious that lol... OK forget it I can't take myself seriously :P But essentially the statement is correct: we will smash down any barrier that they put up.

Syndicate content