talkingCode

Archive for the rant category

A modest copyright reform proposal

posted by codders in rant

Copyright law is a little bit broken. Lawrence thought (thinks, presumably) so, Rufus thinks so, I think so. What’s to be done though? Efforts at legislative reform have, to date, been pretty ineffective. The issues are complex and difficult for laypeople to understand / care about, the opposing lobbyists are a powerful bunch, and it’s hard even to convince artists in whose interest copyright should be reformed of the benefits of doing so. How might we possibly fix it?

I’m going to keep my proposal brief, partly to avoid TL;DR-ism, and partly because it’s probably garbage, but here goes.

Creative Commons over Time

Legislative reform is a tough battle. Let’s just side-step it. Take the existing CC licenses and extend them to allow CC/T; the creator retains all the rights to their work afforded under “default” copyright until a nominated date, after which the work is covered by the nominated CC license. Instead of saying “CC BY SA”, you’d say “CC BY SA / T2015″. Until the expiry date is reached, the creator can exploit the work in whatever way they see fit, just as they can today under the “default” copyright regime.

How does that help?

The idea here (and I confess I’ve not talked to any artists) is that going completely CC is scary for artists whose living is made from their creative output. As fervently as you might believe their work would be better served by a CC license, it’s really tough to persuade people to “give away” their livelihoods. Instead, the pitch goes like this… Their work is going to end up in the public domain; everything created today is implicitly “PD / T2150″ (let’s say). All I’m proposing is that instead of using the default date, they choose a date themselves and a license for use after the date has passed. They might well choose “CC / T2100″, or “CC / T2050″, but it’d be an improvement.

Raising awareness

In and of itself, that won’t achieve anything, but if you can convince artists to take control over the relationship between their work and society, that’s already a small win. The bigger win will require use of technology. Assuming some plucky evangelist can persuade artists to start using these licenses, the next step is to write a webservice to map the (for instance) ASIN for a CD / track / book to an expiry date. That done, you could a) set up you own shop highlighting the expiry date on the items or b) write a GreaseMonkey script to overlay the expiry date on Amazon’s existing shop. You could colour code works – Red for “PD / T2150″, Green if the creator has nominated an expiry date (we needn’t be any more divisive than that to begin with).

Working out the “correct” term

The plan, in case it’s not clear, is to let the market work out the “right” value for copyright term without global multilateral legislative reform. If you can get adoption and if you can raise awareness and if consumers actually care, what you might hope to see is a dutch auction in copyright term lengths. Artists could compete to best serve their fans by varying the amount of time they felt they needed to profit from a work. This won’t necessarily be the optimal value for society (consumers may underestimate the value to them of reduced term), but one would hope we’d end up with a smaller number for copyright term than that selected by legislation.

What about artists’ retirements?

It’s a commonly held misconception that part of copyright’s role is as a pension scheme for aging artists or a life insurance policy for their families. Society affords artists a temporary monopoly on their work so as to encourage them to create more work, on the understanding that the work is donated to the commons after that monopoly expires. It’s easy to find examples of outliers for whom extended term is a key concern, but the majority of artists won’t see continued revenue from their work that is anything like as substantial as the value to society of having all that work in the public domain. If they’re looking for a pension / insurance scheme one might politely suggest that they should invest in a pension / insurance scheme.

Won’t we just end up eating our CC babies?

There is obviously a risk in this that artists who might otherwise choose a pure CC license end up choosing to exploit their works under a CC/T license. Much like GPL vs. LGPL, we’d obviously prefer that CC/T licenses didn’t exist at all lest they tempt people away from the “right” answer. I think it’s a risk worth taking to try and accelerate the copyfight and get people thinking about the relationship between copyrighted work and society.

My new game – Civil Liberties Trolling

posted by codders in rant

I know, I know. You prefer the posts about code. Go read JSR #170, #277, #283, #311, revise the two kinds of JMS and have a butchers at JPA. That’ll keep you occupied while I rant.

So. Cory writes to tell us of an exciting new police initiative (hot-linked here – could change to goatse at any moment):

Police Initiative

Yay. But does taking photos of CCTV cameras make you a terrorist? I’ve decided to find out. To play my new game, you will need:

Now all you have to do is snap pictures of the cameras you find and upload them to Flickr before the police confiscate your camera. Of course, you can delete the photos from your phone the second they’re uploaded. No point leaving them hanging around – at best you’ll look like a weirdo in the unlikely event that the police go rifling through your personal property.

Here’s my photo stream – where’s yours? (Remember to tag your photos ‘cctvfun’).

Aren’t you helping the terrorists?

Let’s get some perspective. You’re still more likely to die in your bath than you are to die in an explosion. If people photographing CCTV cameras represents a significant threat to everyone’s safety, we should make some kind of law against it. At least that way there would be some kind of review of whether or not such a restriction on our freedoms makes sense and is proportionate to the threat. We shouldn’t allow the police to make up their own laws – that way madness lies.

As long as it’s legal to do so (and possibly even after it stops being legal to do so), I would encourage everyone to join in my new game and help redress the balance of surveillance.

Me, the IWF and child porn

posted by codders in rant

I went to the Convention on Modern Liberty on Saturday, which was a pleasure to attend. It was great to be in the company of vaguely like-minded people who care deeply about the [alleged] slow but steady erosion of our civil liberties, and to hear some compelling arguments that the danger to our freedom is real (not just a figment of my fevered imagination).

One of the morning sessions in Cambridge was a discussion about censorship and the role of the IWF and, being fairly strongly anti-censorship, I chose to go to that session. Long story short, I may have gone on record defending my right to view images of child abuse. I don’t think I made my point as eloquently as I might have done, so I thought I’d summarise the issue here.

The Role of the IWF

I should start by saying that I think the IWF does “a good thing”. As an organisation, they’re run fairly openly and one of their many functions is to be the UK’s notice and take down body. If you have a problem with the UK internet and you want to get it sorted, they’re the people to contact. As such, they are a fairly innocuous alternative to regulation of the UK internet which, I believe, would be a pretty bad idea. Their primary function is not the blocking of child pornography / images of abuse for which they have become so (in)famous recently, and I was pleased that their representative there (Sarah Robertson) acknowledged that their blocking system is imperfect / ineffective. One of the things I objected to most strongly about the blocking system as a technologically-minded person was the idea that an organisation like the IWF imagined it was even possible to censor the internet. It turns out they don’t, which is a relief.

My Question

So, given that Sarah acknowledged that the system was flawed – that it served merely as a deterrent and to avoid people accidentally browsing to images of abuse – my question was why the system isn’t opt-in, or at the very least opt-out. If I want my connection filtered, I would be able to go to the IWF or, install some other filtering software. Sarah replied that the system is opt-in, which is true if you’re an ISP, but I happen not to be. I made the point that as an individual, I couldn’t opt out of having my internet connection censored (by what I cheekily described as an opaque organisation – I meant merely that I had no way of knowing what was on the block list). To an extent, it’s possible for users to vote with their feet and sign up with ISPs that don’t implement the IWF scheme, but these ISPs are being pressured in to joining the majority of providers in installing the software / hardware required.

Sarah’s Question

Why would I want to opt out of the system? The IWF blocking system stops me viewing images of abuse which I presumably wouldn’t want to anyway, and moreover, it stops me breaking the law. If I browse without the protection of the system I could accidentally navigate to an illegal image and open myself to prosecution under UK law. Fair point. And at the time I didn’t have an answer, but have since been thinking about it because it’s a really good question.

The Individual and the State

One of the reasons we had all gathered in London, Cambridge and across the UK, was to discuss what some feel is a radical change that is taking place in the relationship between “us” as citizens and “them” as the government. In theory, the state and its machinery exists at our behest and is there to serve us. Some of the attendees at the Convention were there because they felt that this is increasingly not the case. Why do police photograph protesters at peaceful demonstrations? Why can’t protestors photograph the police? (Why, indeed, can the press not photograph the police, making it difficult to publicise and document a demonstration?) The Home Office seem determined to reduce the risk of the population coming to harm at the expense of curtailing our civil liberties – ought we not to be given a say in the amount of risk that we’re prepared to accept? And it’s not entirely the Home Office’s fault. Society and the press tend to blame the government when “bad things” happen – the only way for them to avoid further blame is to reduce the incidence of bad things.

The real question

Why would I want to break the law? I guess that’s not even really the question. I don’t really want to break that law. I certainly don’t want to view images of child abuse, accidentally or otherwise. But I would very much like the option to break any law. The IWF conscientiously populates the blocking list with the locations of images deemed to be illegal to view and, as far as I’m aware, no “right thinking” person would want to see the images that have been blocked. What they’re doing, though, is implementing a system which allows the government to have content they define as illegal “removed” from the UK internet.

I sometimes disagree with the government

There. I said it. Sometimes I break copyright law. Sometimes I drive too fast. Sometimes I start composing blog posts while I’m stuck in traffic. If someone offered to install a chip in my brain that would make it impossible for me to break the law, controversially, I don’t think I’d take them up on the offer. “If you don’t like the law, you should try to have it changed”. True. I absolutely believe that. But as (I think) Shami Chakrabarti aptly put it on Saturday, whoever you vote for, the government tends to get elected.

I can’t change laws quite as quickly as they’re being introduced. It’s simply not practical for me to campaign against everything with which I disagree, and I don’t think there’s enough popular support today for me to make a difference even if I did. I’ll continue to support the work of NO2ID and the Open Rights Group, and I’ll continue to get as involved as I can with things like the Convention on Modern Liberty. For the time being, though, I’d like to keep my moral autonomy; to be able to choose which laws I obey and which I don’t, to have the option to do things that the government doesn’t necessarily want me to do.

I promise I’ll be good :)



P.S. Obviously the IWF blocking list is a bit of a moot issue for me. I can bypass the filtering in any number of ways if I choose to do so. Recommend you check out Tor and/or ssh -D if you’d like to be able to do the same.

Open Rights Group

posted by codders in rant

Dear reader… (maybe it’s readers plural),

This weekend I was at Open Tech 2008, which was fun. I got to hear about how cool OpenStreetMap is, about the inspiring work that the Open Knowledge Foundation are doing, and finally got to see Roo give a talk.

I won’t pretend that the talk from the Open Rights Group was the coolest talk I saw all day, but it might have been the most important. I’ve been following their work for a while but had resisted becoming a member on account of their not being a registered UK charity. On Saturday, I discovered that at least part of the reason they’re not is that becoming a charity would reduce the extent to which they can act as a political pressure group, which would in many ways defeat the object.

So here’s the deal. I’m breaking the unwritten rule of talkingCode and writing about something political that I believe in. If you live in the UK you should be supporting the work of the Open Rights Group however you can. They are a small, bright, committed bunch and are thoroughly deserving of your donations.

Go here to find out about more about them:
http://www.openrightsgroup.org/2008/07/07/growing-the-org-community-and-having-fun-doing-it/

Then donate some money.

Do this now.

They’re busy fighting some really important battles on our behalf. It’s difficult to convince people that these battles are worth fighting or that the issues are really that important when people are having trouble affording petrol or food, but it’ll be too late to unmake the laws in 20 years time when we realise what we’ve lost. By then, the very tools with which we would have fought the battle will have been taken from us.

Coding style, Haskell

posted by codders in haskell, rant

I finished chapter five of the Haskell book I’m reading last night, and the bits of it are starting to make sense. I was doing some of the exercises and managing to write functions that compiled first time – I’m all about the small victories.

What I’m enjoying most about the book, though, is that as well as teaching the language it does a good job of teaching some of the culture. A lot of writing good software is about making the most effective use of the tools a language provides and that usually only comes with time and experience. The book helps, though, providing gentle prods in the right direction:

Many tail recursive functions are better expressed using list manipulation functions like map, take, and filter. Without a doubt, it takes some practice to get used to using these. What we get in return for our initial investment in learning to use these functions is the ability to skim more easily over code that uses them.

The reason for this is simple. A tail recursive function definition has the same problem as a loop in an imperative language: it’s completely general, so we have to look at the exact details of every loop, and every tail recursive function, to see what it’s really doing. In contrast, map and most other list manipulation functions do only one thing; we can take for granted what these simple building blocks do, and focus on the idea the code is trying to express, not the minute details of how it’s manipulating its inputs.

In the middle ground between tail recursive functions (with complete generality) and our toolbox of list manipulation functions (each of which does one thing) lie the folds. A fold takes more effort to understand than, say, a composition of map and filter that does the same thing, but at the same time it behaves more regularly and predictably than a tail recursive function. As a general rule, don’t use a fold if you don’t need one, but think about using one instead of a tail recursive loop if you can.

As for anonymous functions, they tend to interrupt the “flow” of reading a piece of code. It is very often as easy to write a local function definition in a let or where clause, and use that, as it is to put an anonymous function into place. The relative advantages of a named function are twofold: we’re not confronted with the need to understand the function’s definition when we’re reading the code that uses it; and a well chosen function name acts as a tiny piece of local documentation.

… and they’ve not once suggested I write any comments yet. Woot :)

The Book:

http://book.realworldhaskell.org/beta/

Chapter 5:

http://book.realworldhaskell.org/beta/fp.html

Long time no see

posted by codders in rant

As is my wont, I took the last half of December as holiday (having carefully saved it up during the year) and got back in to work today, hence the slight drop in post frequency.

Of Blogging
If my first month of blogging taught me anything, it’s that it’s remarkably time consuming to write technical articles for a technical audience. Turning ‘that thing that I did at work today’ into an informative, accurate, and non-trivial (not to mention non-criminal) article takes more time than expected. For that reason I think I’m going to be dropping to two posts a week (if that) instead of three.
That’s the downside. The upside is that my digital log-book has actually served most / all of its intended purposes. I’ve used it for my own personal reference on more than one occasion and others have used it to help them get things done. Not only that, but I am now more intimately familiar with the seedy underbelly of the blogosphere – the SEO and the carefully selected topics titles and stubs. Analytics tells me I’ve had 540 unique visitors (which is more than I was expecting), the vast majority of whom are referred by Google search results (75%).
All in all, a successful little experiment and one I plan to continue for a while yet.

Of Holiday
I use the word ‘Holiday’ in the loosest possible sense. I mostly stayed in Cambridge pretending that Internet Radio didn’t exist, which was indescribably refreshing. I also, naturally, played a little with my computer. I have discovered that:

  • Compiz now works in Sid (on Intel cards)
  • If you do use Compiz, you can really only play videos with the GL renderers, and they play really badly with … err…. everything else on screen (which is obviously also GL). Also, don’t get too attached to being able to switch to console without crashing X.
  • Debian has handy tools for building pendrive linux images (on which topic an article shortly)
  • Xen won’t easily boot XP as an HVM guest from your pre-installed XP partition (on the same disk as your root partition). Steve said it would be fine, until I disclosed where the XP install was. Then he laughed. Then he said it was unsupported. Then, when pushed, said it was possible but ‘a really dumb idea’. He repeated that a couple of times. Then I did it anyway. Then he spent the best part of an afternoon helping me make it work. Then we gave up. I should listen to Steve.
  • VMWare won’t boot XP from your pre-installed XP partition (or at least not without a Windows MBR, which I’ve not yet had a chance to copy from somewhere).
  • `xset -dpms; xset s off` will turn off your screensaver, no matter how obtuse KDE is being.
  • Epigenetics is fascinating. So is genetics, but I’d already heard of that. Props, as ever, to Radio 4 (and its fans)
  • You really need a Raven login to access the University’s teaching materials
  • Steve has a Raven login (mine’s apparently still ‘in the post’)
  • If you want to play chess over the internet, you probably want to sign up at FreeChess and install pychess
  • You can write your own BBC iPlayer (not sure if I’ll write an article about this), but you still can’t save the files
  • I’ve forgotten how to play chess
  • Sake is good

All in all a successful, relaxing and informative holiday.

Of the future
This year, apart from my New Year’s resolution to ‘Give people a break. They’re really not as bad as you make out’, I will be doing my best to sabotage the following organisations:

  • Big Media – They seem to be doing a pretty good job on their own, to be fair. I was at home briefly this Christmas and for the first time in ages I saw an anti-piracy advert when I put a DVD in my parents’ player. Now don’t get me wrong, I have quite a lot of DVDs, I just don’t see the ad’s because playback software in Linux isn’t hideously crippled. If I had to watch those things, I’d certainly steal more films and buy fewer.
    I also had, as a result, to try to convince my father than in spite of what’s written in 36-point block caps on the screen, piracy is not theft. Piracy is copyright infringement; theft is theft. (Apparently the law disagrees).
  • Apple – A lot of the cleverest people I know buy Apple. They don’t see that Apple is doing anything worse than your run-of-the-mill tech company and like the innovative products the company creates. If Apple are so nice, show me the offical documentation for DAAP. In fact, show me the docs for the Apple Accessory Protocol so that I can plug my iPod (I don’t own an iPod) into something that Apple didn’t make (I know such devices are available, but they all had to use the reverse engineered protocol). Apple are creating an ecosystem of devices with which you have no guarantees of interoperation, and just because the devices work and are shiny doesn’t make it good.
  • The ISPs – ISPs are a necessary evil. That’s pretty much all I have to say on that.
  • Adobe – When I tried to write my own BBC iPlayer, I discovered that there’s not a single place in the free world that you can find an implementation of RTMP (the Flash video streaming protocol). I found it hard to believe that there were still protocols that were secure by their obscurity, but there it is. It’s everywhere, streaming almost everything, and the only way you can view the streams is using an officially-sanctioned Flash player. Something must be done.

That’s part of the future. I’ll obviously be doing the turncoat thing of going to work everyday for what is effectively a media company, implementing existing DRM schemes, creating new ones of my own, buying DVDs, watching Flash videos and using the internet. But deep in my soul, I’ll be hating every minute of it :)

Playing the organ is odd

posted by codders in music, organ, rant

I was planning to post something this morning – another thrilling technical article, no doubt – but it’s Advent this coming Sunday (at least, in college it is) and preparations for that have sucked up all my free time. Fortunately, while writing detailed technical articles requires research and effort, ranting mindlessly doesn’t. Yay.


The thing with playing the organ is that if you’ve done it right, nobody should notice you’ve done anything at all. Now, that’s true of quite a lot of things in life – flying a plane, removing an appendix, baking a soufflé, packing a parachute, preventing a terror attack (don’t even get me started) – but playing the organ is different in that it’s something I do every other week so, you know, I care about it n’that. You’ve got two or three keyboards, a board of pedals which, for the uninitiated, act as another keyboard for the feet, and a whole pile of buttons, and for up to five minutes at a time all you have to do is put both hands, both feet, and all ten digits in the right place at the right time (to within, say, 5mm and 0.25 seconds).


So this week, I’ll mostly be practising. I’ll be playing the same few difficult bars over and over again knowing full well that the chances of them being right on the night are slim to nil, and that even if they’re right nobody will notice. I’m really not sure what the appeal is except to say that there’s something so much more fun about making music than listening to it and that all the practising and rehearsing is … err … fun, I guess. Personally, I prefer it when nobody’s listening, but I’m a lazy man and if it weren’t for the fact that I’ll have to play in front of 50-100 people on Sunday I’d probably never learn the pieces of music that I have. That and I don’t think I could justify the 10 hours a week of practise if it was every week and just for my own enjoyment.


Anyway. That’s why I’m not posting anything useful this week. Mr. SEO will no doubt berate me, complaining that the audience of Debian-using software-writing web-developing MySQL-administering geeks was niche enough before I made it about organ-playing as well, not to mention the fact that I’m (heaven forfend) writing about myself. He can bite me.

ftw?

posted by codders in meta, rant

Right. So. Here’s the thing. I work in ‘internet stuff’, software, digital media, etc.. Actually doing that for a day job does two things for you – it keeps you looking for The Next Big Thing for the purposes of exploiting it, and makes you feel anxious about your own obsolescence. The only way you’re going to keep up is to give things a go and find out what, if anything, you’re missing.

Take blogging. Please, somebody, take blogging. There’s an argument that says that the only people actually sitting down and reading blogs are the people who also happen to write them. A little community of mutual back-patting and reassurance. There’s a counter argument that looks at the number of blogs that show up in the top 10 search results and concludes that bloggers, with their series of niche contributions to human knowledge are actually making us better informed as a race. I no longer have to look for the website of some guy who spends his life installing Linux for help on installing Linux. I just find a blog post of somebody who happens once to have done that and maintains a blog.

So here am I. Looking for the next big thing, avoiding my own obsolescence and, where possible, contributing to human knowledge by reporting my niche experiences. I’m pretty sure there’ll be an initial flurry of posts and it’ll die, but you can’t say I didn’t try. Well, I mean, you could. You’d be wrong. It’d me more accurate to say I should have tried harder…

Recent Posts
Recent Comments
About Us
jp: works like a charm! thanks!...
Blake: Check this out: http://bugs.adobe.com/jira/browse/SDK-28016...
Boydell: Wow. That was it. You are the only one that had it figured out, and I looked at many...
mark van schaik: thanks! was using a beta SDK version for a production app, which stopped working over...
Sebastian: Steve, I find most asynchronous programming to be incredibly painful. Haskell's appro...

This is the personal blog of a professional software engineer. This site and the views expressed on it are in no way endorsed by the RIAA.