Archive for the 'Bytes' Category

A Pragmatic Workaround for Perpetual Copyright

To promote the Progress of Science and useful Arts, by securing for limited Times to Authors and Inventors the exclusive Right to their respective Writings and Discoveries.

Article I, Section 8, Clause 8, United States Constitution

One of the few Congressional powers specifically enumerated in the Constitution over two hundred years ago allows for the protection of intellectual property rights for a limited period of time.  Limited is, like much of the Constitution, intentionally vague.  In theory, depending on the whims of the judiciary in place, limited could be defined as anything up to the heat death of the universe.  Recent judgments put this within the realm of possibility.  I will not use this space as a discussion (rant) about copyright law or reform, mostly because there are much better and more interesting places to read about that.  I will, however, describe my experiences as a user of copyright and propose a workaround for some of its woes.

The Copyright Act of 1976, as confirmed in Kahle v. Gonzales, changed copyright from an opt-in system requiring registration to an opt-out system, in which any copyrightable work is automatically copyrighted upon publishing.  That means that without any intervention on my part, under current copyright law and assuming no further extensions, this blog post will enter the public domain April 25th, 2080 if I croak immediately after hitting the Publish button.  As my red meat intake has been limited recently and Congress is still in the pocket of big business, I expect the actual date will be much later.

Many rightly find this unreasonable, hence the rise of the copyleft and free culture movements.  Practically perpetual copyright isn’t so bad when the work is opened by a permissive license like Creative Commons Attribution or three clause BSD or a reciprocal license like the GPL.  Or is it?  If in 2134, a brain hacking hobbyist decides she wants to repurpose and distribute a Python game I wrote in 2009 as a retro eyesaver, should she really have to include the ISC license stating that my corpse disclaims all warranties including implied warranties of merchantability and fitness?  I argue that in a sane society, she should not, as the work would long have been in the public domain.  However, the license I attached to the work will remain valid for the entire absurd length of its copyright.

I propose a simple workaround for this problem: a self-destruct wrapper for licenses.  That is, a legal instrument by which the owner of a work can specify that he or she voluntarily and automatically relinquishes the work into the public domain after a specific number of years.  This is à la carte copyright, in which the creator may choose a length that seems sane, like the 14 years we started with in 1790.  This also has the effect of trumping any further extensions Congress may enact to keep Steamboat Willie in the vault, preventing a work I publish today from remaining under copyright in 3010.  One could use such a wrapper on any license, permissive, reciprocal, or restrictive.  An individual or company could profit from a work for a period of time of their choosing, and automatically grant it to the betterment of society at the self destruct date of the license.  A software developer can protect a piece of code from going proprietary with the GPL today without forever limiting projects that use it to a copyleft license.  I could protect myself from exploitation by marking a photograph I’ve taken as CC by-nc-nd for now without preventing its public use long after my death.

I can’t even pretend to be a lawyer, but here’s a proof of concept ripped from a piece of the Creative Commons Zero license.

/*
Upon the date of publication, the License shall be deemed effective.  Upon
X years from the date of publication, the Waiver shall be deemed effective.
 
Waiver:
To the greatest extent permitted by, but not in contravention of, applicable
law, Affirmer hereby overtly, fully, permanently, irrevocably and
unconditionally waives, abandons, and surrenders all of Affirmer's Copyright
and Related Rights and associated claims and causes of action, whether now
known or unknown (including existing as well as future claims and causes of
action), in the Work (i) in all territories worldwide, (ii) for the maximum
duration provided by applicable law or treaty (including future time
extensions), (iii) in any current or future medium and for any number of
copies, and (iv) for any purpose whatsoever, including without limitation
commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes
the Waiver for the benefit of each member of the public at large and to the
detriment of Affirmer's heirs and successors, fully intending that such Waiver
shall not be subject to revocation, rescission, cancellation, termination, or
any other legal or equitable action to disrupt the quiet enjoyment of the Work
by the public as contemplated by Affirmer's express Statement of Purpose.
 
License:
...
*/

Since I am not a lawyer, I have no idea if a self-destructing license is legally possible.  I would like to get lawyerly advice on the idea before I start attaching it to my projects, but this is certainly something I plan on using.  Hopefully it appeals to others too.  Since the bug fix for perpetual copyright isn’t coming any time soon, this workaround will have to do.

Urban Moonshining: Home Distilling for Fun and (not) Profit

Copper Pot Still
At some point in high school, my friends and I decided to learn the lost craft of home distillation. We started with the best of intentions (well, not really), but were unable to build stills that functioned until we hit college. Since then, we have just about perfected the process of distilling tasty, cheap rum on a stove top. John Martin has chronicled our steps and missteps over the years in a series of blog posts. The first three cover the background story, the basics of fermenting a rum wash, and the general process of distillation. The final post covers the specifics of urban moonshining; that is, plans for a micro still that allows for home distilling within the confines of the average apartment.

Stove Top Still

Soapmaking

Soapmaking
Another rumbling done.

HOWTO: Improvise Jenga

The Players
Precarious
Destuction
A brilliant idea by Meg Blake.

No Longer Being A Bum

One Infinite Loop

As of today, I am among the ranks of the employed, at a fruit stand in Cupertino.  Two months of doing little but watching Top Gear and playing Xbox games was enough to melt off the last school year of stress and send my mind into hibernation.  I’m going to be doing software development for the forseeable future, but that is about as specific as I can get.
The Bay Area is a strange transition from Pittsburgh or southern Connecticut.  The grocery stores are devoid of italian bread and red potatoes, apparently, and nobody jaywalks.  The sunny skies and In-N-Out Burgers balance it out though.
Work is going to be taking up most of my time, but I’ll finally be able to afford parts for the projects I’ve been stewing on.  A list, with no timelines attached, of what I want to do:
  • Build a laser projector to augment a cloudy night sky.  The plan here was to laser project stars, satellites, and other heavenly bodies onto the clouds in Pittsburgh, since nobody would be able to see them otherwise.  I don’t think the weather will work for that in the Bay Area, but I could still project onto a ceiling or something.
  • Implement a pretty basic portion of Johnny C. Lee’s thesis.
  • Add Windows support to the camera module in Pygame.  Linux support for webcams is finally being released with Pygame 1.9 fairly soon.  Werner Laurensse is working on an OS X implementation for 1.9.1.  It would be a bit strange to leave out perhaps the largest portion of Pygame’s audience.

Coming Soon to a Theme Park Near You

Fantasia Wand

HOWTO: Improvise a Breakout Board

Breakout Board

The New Look

I finally got around to updating k2 to the latest version, and with it, I got the site looking like I had intended it to. No more weird spacing and awkward half default look.

I tested it with Firefox 3, Internet Explorer 7, Safari 3, and Chrome in Windows and Firefox 3 and Opera 9.52 in Ubuntu. It seems to work as expected, aside from some weird spacing in IE (or maybe that should be expected). Google Analytics claims 11% of the visitors to this site use Internet Explorer, which feels strangely high considering the content. I’m ok with giving the remaining 11% another reason to switch.

I made the Sierpinski fractal background with Context Free. It is quite a fun program, and very simple to pick up. It took a few minutes to write the script for the background (about 1/100th the time it took to get the CSS looking right).

There’s a Mouse in my House (but I’m Smitten with a Kitten?)

The Mouse

I found a baby mouse in my hallway today.  I’m not sure how it made it that far from its mother; it was moving pretty slowly.  I saw the trail it made through the drywall dust in the partially finished bedroom in our house, so I placed it back in the hole it came out of.  I can only hope its mother finds it.  As much as I would have loved to take care of it, I live with a wonderful little kitten named Gizmo.  He didn’t pounce on the mouse when he saw it, but I don’t see them becoming fast friends…

The Kitten

Things I’m Doing (or Queueing at least)

I am chronically unable to finish projects because I tend to pick up a new one more often than I complete an old one.  Here is a list of things I’m currently working on, in no particular order.

  • Turning Bridge into a real activity.  This means using the datastore, dropping Elements in favor of directly interfacing PyBox2D, and making multiple levels of play.
  • Writing a working Panorama activity. Ben Schwartz wrote some excellent autostitching using Numpy; it just needs some camera code to make capturing frames easier and to disable auto white balance and so on.  I stuck Ben’s activity in a git repo, and I plan on making my changes soon.
  • Commiting the rest of my GSoC project to Pygame SVN.  I committed everything but the actual camera module so far.  At the very least, I need to set up a build environment in Windows and make sure that the camera fails gracefully, since it only supports v4l2 at the moment.  Before Pygame 1.9 is released though, I plan on writing VFW and maybe Quicktime support.
  • Writing an Augmented Reality Game (ARG?).  Augmented Reality is pretty much the holy grail of computing for me. I played around with ARToolkit a bit, but I really want to get into it when I have more time.

Of course, in addition to that, there is attempting to find a job, taking care of my kitten, finishing moving into my house, and loads of schoolwork.  The schoolwork is mostly interesting though.  It currently consists of writing object classification and image seam carving in Matlab, coming up with screenplay ideas, and playing with a Gumstix board.  I’m also going to be starting some computer vision research with Professor Martial Hebert of the Vision and Mobile Robotics Laboratory at the Robotics Institute.  More on that when it happens…