Terry Fisher: ”Promises to keep”

Lessig comments on
and recommends
Terry
Fisher
’s book ”Promises
to keep”
, with the subtitle ”Technology, Law and the Future of
Entertainment”. Coming from a technology background and moving into
law, these discussions always interests me. The introduction and final
chapter is available
online
, and from what I’ve read so far it’s a very readable
discussion on the historic reasons for intellectual property rights
(including patents, trade secrets and copyrights), how digital
distribution changes the prerequisites for the existing laws, and how
new ways of looking at intellectual property can bring legislation
that encourages the creation of cultural content and innovations,
without restricting user’s rights.

It seems that Fisher’s advocating a sort of content
flatrate
solution, which I’ve previously written of as
unrealistic, but through a brief discussion around ”public goods”, he
argues his case very strongly. I will probably have more to say once
I’ve read the entire chapter.

Lessig on Edwards

Interesting debate
between Lawrence Lessig and
William Tucker about John Edwards and how his background as a trial
laywer will affect the American public and the election. Best quote
is about Kerry, though:

Most of us believe our government lied to get us into
the war; most believe it has lied about its prosecution of the
war. Based upon the facts, Kerry is now critical of a war he supported
at the start.

This is not flip-flopping. It is evidence of a functioning brain. When
you learn that the premise of your action was false, you should
rethink your action.

Quickies of the day

Not much time for interesting posts of my own these days, busy
studying history for my final oral exam on Wednesday. Meanwhile,
here’s what interested me in the blogosphere today.

  • Interesting
    blog entry
    from Frederik Lundh on the role of Trackers in the
    Widget Construction Set
    for Python. I might need to write some GUI code soon, maybe this would
    be the way to go.
  • Aaron Wormus worries
    about the embedded database SQLite and bad security practises (Hint:
    Keep the SQLite database file OUT of the web root)
  • Brad Adams posts slides
    and demos
    from his BorCon presentation. I
    think Borland might have a winner on its hand with the next version of
    Delphi, since it seems it will allow both classic Win32 programming
    and .Net programming, filling the niche that VB left with
    VB.Net. There’s a lot of people that wants to write code that runs on
    machines without the .Net runtime, and currently the only Microsoft
    option for that is C++. At the same time, people want to have the
    opportunity to do .Net development as well. Delphi’s might be the best
    option for these people.
  • Sam Ruby notices some character set mismatch in a blog post from
    Cory
    Doctorow
    , and dissects it in great detail. Almost as required a
    reading as Joel Spolsky’s much linked developers
    guide to Unicode
    .
  • David Warnock suggests
    that python is a good language for teaching kids how to code. I’m
    wondering how good Squeak
    works for this, seemingly as it’s designed for this and similar
    purposes?
  • Edward W. Felten suggests,
    like Lessig
    did
    a few weeks ago, that online porn shold be labeled with an
    ”adultsonly” or ”porn” tag. I said
    it then, and I’ll say it again: Take a look at PICS, the w3c standard that’s
    designed precisely for this and similar problems. Maybe the problem is
    that there is no ”standard” rating vocabulary with
    definitions for ”porn” or ”adultsonly”. Or maybe it’s the fact that
    only XML standard geeks can understand that last document. I think
    PICS need an evangelist quick, or others will reimplement it,
    badly.

Quickies of the day

Since the process of blogging is still much to convoluted for quick
spontaneous posts, I’ll just keep collecting the interesting links for
the day in this Quickies format, and publish once a day. Or something
like that.

  • John Levine has an interesting
    analysis
    of the two Microsoft patents
    that’s been slowing down work on Sender
    ID
    . Of particular interest is that they try to patent spam filters
    (application number 20040181585, claim 48 and 49) (Via LawMeme)
  • Cedric Beust solicits job
    applications
    for Google. ”If you are reading this weblog, you are
    probably the kind of developer Google would like to hire […]”
  • Charles Miller has high
    praise
    for the Mac app Quicksilver. It sounds
    cool, I wish I could try it out. It’s very probable that I get a
    {Power,i}Book as soon as I start law school (gotta wait for that student discount). If you don’t know about
    the unix tool screen, you should
    check out his
    praise
    of that too. As a bonus, suggests that at least one of the
    star wars prequels should have been directed by Joss Wheadon. That
    would have been real interesting.
  • Xeni Jardin of Wired writes
    about
    experiencing zero gravity, thanks to newly started flight
    service Zero-G. Only $2950 +
    whatever it costs to get to Fort Lauderdale. I’m seriously tempted.
  • It looks that my favourite plucker
    converter
    , JPluckX,
    has been abandoned by it’s author, Laurens M. Fridael, in favour of Sunrise. However, this section
    in the faq worries
    me:

    Sunrise is a temporary project, made available for the
    purpose of letting users test the desktop tool for my upcoming offline
    web viewer, which will be a commercial product. Once my viewer reaches
    public beta state, the Plucker support will be removed
    entirely.

  • Slashdot links
    to a
    report
    from PriceWaterHouseCoopers, and says that it paints a
    picture of software patents as a threat to Europe’s innovative
    software industry. Now, I’m as much against software patents as the
    next raving lunatic open source-zealot, but first: The report mentions
    patents in like three places, and only one of them explicitly
    critizises software patents. In fact, the slashdot blurb contains the
    entire quote, so if you’ve read that, you don’t need to download the
    90+ page report. Secondly: If you compare the US software industry
    (has SW patents) with the EU software industry (does not yet have real
    SW patents), which of the two is more innovative and competitive?
    Honestly? I just think there’s better arguments to be made against software patents.
    As an aside, the report makes extensive use of the acronym
    ICT, which I’ve never heard of before. A quick googling seems to
    indicate that it stands for ”Information and Communication
    Technologies”, which I guess is a superset of plain ol’ IT. Has this
    acronym been around for long? In what circles?

Two more things on copyright and related laws

In regards to the previously mentioned controversy around The
Pirate Bay: The signature ’Judas’, acting as legal counsel for TPB, argues that
providing a link (in this case a .torrent file) to copyrighted
material is not copyright infringement under Swedish law. He cites the
verdict NJA 1996 s. 79 (which isn’t available on the web, so I haven’t
read it) in his support.

However, from the context he gives, it seems
to my non-legally-trained eyes that the verdict NJA
2000 s. 292
concerns a case which is much more similar to the TPB
case. The verdict is about a case where a person provided links to MP3
files that were not hosted on his site (i.e. potential infringement of
the second degree), and it ended in partial victory for the
plaintiff. Any laywers well versed in Swedish copyright law reading
this, please feel free to weigh in 🙂

On a different, but sort-of-related note, I was browsing around Nicklas Lundbergs blog some
more, and found this
interesting paper
on the legality of search engines. Two examples
in particular that interested me:

First, the quote [my
translation]: ”It’s not impossible – with regard to the things
previously said – that [search engines] would never have come into
existance if somebody had first consulted a legal expert”
— food
for thought.

Secondly, the (un-tried) argumentation that
governement agencies should not try to restrict search engine access
to their websites (through robots.txt or similar means),
since it would violate the Swedish principle
of free access to public records
. It’s particularly interesting
since Rixlex, the main
repository of swedish law texts, does just that.

Quickies of the day

Lately, I’ve only been blogging about what’s going on in my
world. Time to go through the last few days of blog postings that I
found interesting for one reason or another:

  • pHatidic writes
    about
    the fact that Wikipedia does work, despite all the
    theoretical arguments detailing why it cannot. It’s like the
    bumblebee
    , which by the law of physics cannot fly (well, actually
    of
    course they can
    ), but since the bumblebees have never taken even
    remedial physics, they are blissfully unaware of this fact.
  • At first, I thought Microsoft was patenting
    su
    . After further examination, it’s not as bad as it
    looks. Still, if you subscribe to the newly
    granted Microsoft patents RSS feed
    , you’ll get several examples each week
    of why software patentability is not a good idea.
  • Spamamusment continues
    to churn out brilliant
    spam-inspired comics
    .
  • A new beta of the next-generation
    windows shell (Monad)
    is out. I no longer have MSDN beta access,
    but I’m really looking forward to trying this out when it becomes more
    widely available. I just hope they focus as much on the accompanying
    programs as the core shell technology. If one has do download
    Monad-compliant utilities from all over the place, much of the value
    of the shell will be lost. I’m looking forward to see how the
    functionality of tools like sed and awk could be expressed in a .Net
    object environment.
  • Raymond is shocked to find out that Swedes are mis-using the right
    to sick leave
    . ”Everyone” has known that the sick-leave system is
    widely abused, but this is the maybe the first time that the
    politicans in charge admit it. But I’m mainly linking to this since
    I, like most Swedes, am deeply curious about how this country looks
    through the eyes of someone outside of it.
  • Scoble continues
    to act as the Kibo of the
    blogosphere. This post is yet another cheap attempt to get mentioned
    on his blog.
  • This story about scientific experiments with swimming in syrup has
    been seen everywhere today, but I first read it in jwz’s
    livejournal
    , as usual.
  • Cedric’s talking about his
    experiences after 6+ months of working with JDK 5.0. Interesting
    stuff.
  • Edward W. Felten has an interesting
    take
    on the recent story about online-poker-playing
    bots
    . ”There’s a sucker at every poker table, and if you can’t see
    him, it’s probably you”

And some links to interesting swedish blog posts. If you’re not a
swedish speaker, take a page from Raymond
Chen’s book
🙂

  • My friend and colleguage Erik has published his report on
    the state
    of the web security
    of swedish political parties. It has sparked
    some
    debate
    , and Erik has also published a follow-up
    article
    detailing why it’s important to fix security problems,
    even if they can’t be exploited right away.
  • Karl Jonsson writes about
    the latest controversy involving swedish bittorent site The Pirate Bay. The TPB guys
    come off more immature than ever in their email exchange with
    Uppsala Universitet. Those advocating stronger copyright protection
    must love TPB, since they provide so many examples of how
    irresponsible the filesharing community can behave.
  • Niklas Lundblad is holding a lecture about information security
    and philosophy, and has put up his slides with
    comments. Certainly a unique perspective on security, I would have
    loved to attend the lectures.

Blogging engines revisited (again)

Well, I’m officially Not Happy with blosxom anymore. The biggest problem is
that the posting process when using static mode becomes very
convoluted. At least for me:

  1. ssh in to the server
  2. Write the entry as a text file (and think of a filename that would
    look good in the URL
  3. Add HTML as neccessary, without any real way of checking if I got
    every tag right
  4. Change all non-ascii characters such as å,ä and ö
    to their HTML entity counterparts (å,
    ä and ö) to get around the issue of
    storing files in Latin-1 and the RSS output being in UTF-8.
  5. Generate static pages by running blosxom from the command line. As
    I use a list of archive links, I need to regenerate each and every
    page to get the numbers right, which takes a while when having 100+
    entries and running stuff on a 166 Mhz Pentium.

Clearly, this is too much work for quick postings, and so I tend
only to write when I have something longer to say. But there are other
aspects of blosxom that I’m not so fond of either:

  • The reliance on filesystem timestamps. I just know that I’m
    someday going to copy all the blog posting files from one filesystem
    to another, and forget to use the -p
    option, thus removing this valuable metadata
  • The lack of any (mature) blog posting API implementation. I’d love
    to use a tool like w.bloggar or any
    of the blogging
    extensions
    available for Mozilla, but neither of the two
    implementations available at the
    plugin registry
    look very mature to me.
  • In general, the extreme spartanity (spartanness?) of the base
    blosxom install. I know this is the zen of blosxom, but I’d really
    like to have basic stuff like:

    • a posting API
    • comments/trackback/pingback recieving
    • a posting webform with trackback/pingback sending
    • a blogroll
    • archive links
    • and a search function

    built into the base install.

So, what am I looking for? The thing that drove me to bloxom was
that it did not rely on MySQL or any other ”big” RDBMS for data
storage. Using a RDBMS for anything less than 10000 items is overkill, and I just really don’t
want to have to worry about having to keep both apache and a RDBMS
running on my tiny little box

But I no longer think that using static pages are the way to
go. Having to regenerate 300+ files takes too long time(blosxom
generates a .rss and .atom file for every blog posting, which
works nice with it’s ”flavor” concept, but not with anything
else).

The data I have to deal with is so ridicously small (right now,
less than half a megabyte) that it would make sense to just load all
the blog postings into memory at startup and just keep them
there. However, this requires a execution model where the program
doesn’t exit after the page is loaded, a la classic CGI
scripts
. Particularly on my really slow box.

So, I think I’m looking for something that uses flat files or an
embedded database like SQLite or
Berkely DB, together with a
continously-running process model like PHP or mod_perl. I’d also love for it to
have a good security record (which I guess rules out most PHP
solutions…), and a easier way of posting images than manually
scp’ing them to my image/ directory.

I’ve been looking at the Blog software
breakdown
chart, but I can’t find anything that matches all of my
requirements/wishes. Pontus is using COREBlog (not listed in the above breakdown), which is built upon Zope. It looks good, supports
Blogger/MetaWeblog APIs (as well as plain ol’ email), and has much of
the other basic stuff that I want. I guess it uses Zope’s embedded
database, which is good enough for me. Maybe I’ll try that next.

The other solution would be to just use a blog host and forget
about running a blog at home. This solution is looking more attractive
by the day, but I can’t really let go of the control that is hosting
things myself.

Law is not code

I have not yet read Lawrence Lessig’s ”Code and other laws of
cyberspace
”, but I like its catchphrase, ”Code is Law”. Sadly,
the reverse do not hold, particularly not in the real world.

As a programmer, it’s natural for me to view any legal text, be it a
law, an agreement or something else, as a set of definitions,
conditions and other instructions, similar to a computer program. Most
of the time, these instructions are badly written; they do not strive
for simplicity, they do not cover corner cases, and for many inputs
the outcome is impossible to determine without resorting to case law.
In computer terms, way too much checking is done at runtime (when laws
are applied) instead of compile time (when they are written).

There’s an interesting
article
up on Kuro5hin
which argues along the same lines, and how the awful quality of most
laws makes for a very opaque society, where only legally trained
people with a lot of time on their hands can fully understand the
rules.

The author draws paralells between the way laws are written and
computer programs are constructed, and suggests that the law making
process should be ”open sourced”; I think the process is already about
as open as it can be. What’s lacking is good engineering: the will to
strive for clear and simple designs.

Computer programmers realized the need for a structured approach to
programming almost as soon as programming was invented. This was
needed to be able to construct and maintain large programs. There is,
no doubt, a lot of structured thinking in law as well, with its 3000+
year history, but somewhere along the way it seems that clear and
unambigious writing fell off the list of things to prioritize.

Of course, my reasoning is a classic example of someone, new to a
field, thinking they can apply all lessons learned in another field. I
might have more insightful commentary after a few years of law school.

Python is starting to grow on me

Ok, so I’m busily parsing
lawtext with EBNF grammars
, but the resulting parse tree is
somewhat cumbersome to work with. Each node is a 4-tuple,
[tagname,startindex,endindex,childnodes], where childnodes is a list
of similar 4-tuples:

  for n in r[3]:
      print "%s: %s" % (n[0],indata[n[1]:n[2])
      if n[0] == 'refs':
          for sn in n[3]:
              print "  %s: %s" % (sn[0],indata[sn[1]:sn[2]])

So, late at night I begin to ponder if it would be possible to write
some sort of OO-wrapper around this structure of tuples in tuples, so
that I could write somewhat more readable code:

  for n in r.nodes:
      print "%s: %s" % (n.tag,n.text)
      if n.tag == 'refs':
          for sn in n.nodes:
              print "  %s: %s" % (sn.tag,sn.text)

Turns out it takes less than 20 lines of code:

class NodeTree:
    def __init__(self,root,data,offset=0,isRoot=True):
        self.data = data
        self.root = root
        self.isRoot = isRoot
        self.offset = offset

    def __getattr__(self,name):
        if name == "text":
            return self.data
        elif name == "tag":
            return (self.isRoot and 'root' or self.root[0])
        elif name == "nodes":
            res = []
            for p in (self.isRoot and self.root[1] or self.root[3]):
                res.append(NodeTree(p,self.data[p[1]-self.offset:p[2]-self.offset],p[1],False))
            return res
        else:
            raise AttributeError

A good python programmer could probably trim down the above to ten
lines, but still. I don’t know if it’s the language, or the particular
problem I’m trying to solve, but I’ve been programming a whole lot
more recursively lately.