Friday, September 25, 2009

Anti-Piracy Is a Strawman Argument


Piracy. It's a scary sounding thing. We call someone who downloads a copy of a piece of music or movie a "pirate." But file sharing isn't piracy, it's a form of communication. The real problem that the music and movie industries have (when you remove abject greed from consideration) is that the Internet provides the means for everyone to become everyone else's "friend." This breaks the market dynamics on which modern business depends, threatening (in a very real sense) our way of life. But instead of tackling that issue and deciding if there's another way or what we want to do to protect our current model, we brand people pirates and then ask, "why would you support piracy?"

Wednesday, September 23, 2009

Value of Sidewiki on Wikiepedia

Sidewiki provides what Wikipedia has long needed. A place for people to discuss an article or its topic without discussing the editing of it. This gives people an outlet without cluttering discussion pages with what amount to forum posts.
in reference to: Wikipedia, the free encyclopedia (view on Google Sidewiki)

Wednesday, September 9, 2009

Perl 5, Perl 6, Moose, Rakudo and the Future of Perl

I made this comment today on my Google Reader feed with respect to Perl 5, and I thought it bore mentioning here since it's rather a longer topic than a blurb. The context was an announcement of a new project aimed at giving Perl 5 faster Meta-Object Protocol (MOP) support ala Ruby and Perl 6 (and to a somewhat lesser extent, Python, Lisp, and many others).
I'll ignore the back-and-forth. Here's the bottom-line: Perl 5 is a dead-end platform. Not because of Perl 6, but because it's a deep legacy of parts that have out-grown their use. It's not extensible in ways that people want to use it today (e.g. for Moose and MOPs in general), and to bolt on those features is painful in the extreme, and guaranteed to be orders slower than it should be. I'm not saying Perl 6 is The Way. I'm saying that a re-design of Perl 5 is required to extend it into relevance with respect to today's programming environment. If that's called Perl 5.50 or if it's called Perl 6, it doesn't matter. Perl 5 is and should remain a powerful legacy language whose contributions to the state of the art were significant in their day but whose limitations are the right reason to use it only where required today.
As you can see, I'm a fan of what Perl 5 has done. I think it brought some concepts "into the fold" of language design that were downright heretical at the time (grammar ambiguity can yield developer ease, for example). It also promoted regular expressions from library features and the domain of special-purpose languages such as sed or AWK to full-fledged peers in the design of a language.

However, Perl 5 is old and tired. To this day, it lacks such basic features as named subroutine parameters and it still has some deep confusion over types and naming that stem from its original idea that some types were so external that users should manipulate the namespace directly to access them. Why are these archaic features still in the language? Not because the Perl community lacks the skills to fix them, but because the language carries with it a heavy burden of legacy code. Breaking CPAN is such a taboo that maintainers have been forced into resignation over the frustration the community wells up when it or its evil twin, DarkPAN are threatened by the most trivial changes.

So, what are we to do? Moose and its ilk attempt to subvert the legacy code and inject new concepts by force. Sadly, that battle is one of attrition and diminishing returns. Ultimately speed and complexity are major factors in maintaining such a beast. Perl 6 (along with its currently hot implementation, Rakudo) is another path. Re-designed from the ground up, Perl rises from its own ashes with features freshly cast in modern terms. In many ways this is the right solution. Perl 6 is such a radical departure from the traditional design of popular languages that it is almost guaranteed to produce some of the same positive impact that Perl 5 brought us.

However, Perl 6 is fundamentally a new language. There's nothing wrong with implementing a new language that's aimed at the Perl community, but there's a middle ground that I think we need as well. Here are what I see as the design requirements of a new Perl that is still Perl:
  • Provide basic functionality that Perl programmers want without cumbersome add-ons to implement them (named parameters, MOP, etc.)
  • Maintain syntactic compatibility with Perl 5 as much as possible to ease transition
  • Marginalize, deprecate or simply remove features which have hindered the task of implementing secondary implementations of Perl 5 (e.g. on Parrot)
Given a reasonable balance of those conflicting goals, a "Middle Perl" could be a powerful tool for transition to Perl 6 while also providing existing Perl programs a way to grow and adapt to modern needs. One immediately obvious counter-argument is that this will slow Perl 6 development. That seems reasonable, but on the one hand, Perl 6 has been in development for 10 years. Slowing it down isn't really possible. It is possible to steal its thunder and prevent its developer base from expanding at a critical time, so there's some valid concern there, but I think that can be mitigated by making Middle Perl and explicit stepping stone project that aims at ultimate adoption of Perl 6. On the other hand, there's the fact that developers are already working on this project, but only in module-space. They're implementing dozens of modules to extend Perl 5. If those efforts were re-directed to implementing a Middle Perl, then there would be no need for anyone currently working on Perl 6 or considering doing so to change course.

Many times I've heard Perl 6 compared to Python 3. I always point out that this is an unfair comparison because Perl 6 is a radical re-design of the language which requires blazing a new trail through the entire topic of language design and the integration of disparate programming paradigms. What I've suggested here, however, should absolutely be compared to Python 3. A re-evaluation of some core concepts; a re-write of the code; but fundamentally the same language.

Tuesday, September 8, 2009

Whedon and Lynch Videos on WGBH's Forum Network

Joss Whedon
Update: See my Google+ thread about this speech with a link to the YouTube version of the video.

Back in April of this year, I posted about Joss Whedon's appearance at Harvard to accept an award from the Humanist Chaplaincy. At the time, I knew that it was recorded, but not when or if it would show up where people could get at it. Well, now it's here. If you go to WGBH's Forum Network, you'll find "Joss Whedon: Cultural Humanist." (note: that seems to be down...  not sure if it will come back. see the relevant bits on YouTube) Watch and enjoy. It was a really great event, and well worth listening to his views on the interaction between the religious and non-religious world and the nature of charity and justice towards others.

In perusing this site, I've noticed some really interesting videos. It's sad that these aren't widely publicized, since they're so much more valuable than the typical piano-playing cat that you'll find when searching for videos on the Web. Right now, I'm listening to David Lynch, Fred Travis (spelled "Tavis" incorrectly in the credits) and John Hagelin speaking about Consciousness, Creativity, and the Brain.

Boondock Saints and Its Upcoming Sequel

Boondock Saints poster circa 1999
When I first saw The Boondock Saints it was before Boston had become particularly popular for shooting TV and film location shots (understand that most "Boston" based shows and movies are filmed in Vancouver, e.g. Fringe). It was nice to see my home town featured in movies, so I even enjoyed Blown Away back in the day. But Saints was different. It had more to say than most mob films. It was funnier than most buddy movies. It felt gritty in a way that I can't explain. Ultimately the saddest part was that it was easily the biggest film of its year, had it been marketed at all. Instead it made less than $50,000 and wasn't re-discovered by the public until it hit DVD (mine came from Canada, oddly enough, before it was released in the U.S.).

Over the years, rumors came out about a sequel. Then there was the documentary about the making of the sequel (called Overnight) in which the writer/director imploded in the way that Hollywood has a way of encouraging. I assumed it was a no-go. And then, suddenly, there was a trailer and a release date for Boondock Saints: All Saints Day. The sequel will come out this year, and from what I can see, only the replacement of Willem Dafoe (in what I feel is the funniest performance of his career) bodes ill. The brothers return. Another character returns played by Billy Connolly (if you haven't seen the film, I don't want to tell you more about his character... go see it). And the feel is very similar. True, this franchise risks becoming something between Rambo and Lethal Weapon, but I hold out hope that this cult classic will yield a sequel that's worthy of the first.

Amusing side-note: someone stuck The Lord of the Rings: The Two Towers into the movie connections on IMDB for Boondock Saints. Not even remotely true, but funny.

Thursday, September 3, 2009

Google's Design Patent on their Home Page

Google just got a design patent on their search home page. It's a patent that has the rank and file of the Internet tech world in an uproar. However, it's important to understand what's going on, here. For a really well written debunking of many first-impressions, I quote someone from the weblog site, Slashdot:

Design patent law is an area of great frustration for people. Design patents are relatively easy to obtain because of what they cover: essentially the identical design or any colorable imitation. As recently stated by the Fed. Cir., the test for design patent infringement is stated: "infringement will not be found unless the accused article 'embod[ies] the patented design or any colorable imitation thereof.'" Egyptian Goddess, Inc. v. Swisa, Inc. Therefore, to invalidate, the design must either embody the prior art or merely be a colorable imitation. This is a tricky analysis.

For companies like Apple and Google, design patents are helpful in preventing knock-offs. In this respect, the line is blurred between trademark and design patent law. However, they are not useful for much else since many of the elements of a design are functional (and a good lawyer can make that argument) and are not merely composed of distinctive elements.

Reebmmm at the Sladshdot article, "Your Rights Online: Google Patents Its Home Page"

There are a few other points to consider, but the one that really kills me is that it's Google's motto that hurts them the most in these situations. The first and most predictable reaction to any news about Google is to find a way to refer to it as "evil." Regardless of their clear intentions in an area (e.g. their relationship with the Open Invention Network and strong support patent reform), the motto slips into the argument and immediately becomes the centerpiece. Is Google becoming evil? Is this evil? How evil are they now?

I'm reminded of an Emo Phillips joke that involved a man who was about to jump off a bridge. Emo confronts the man and asks him if he believes in God. The man says yes. He further asks him questions about what religion he's a member of, eventually narrowing down that the two of them are both from a particular denomination of Baptist Christians, but then finds that they're members of very slightly different subsets of that denomination at which point Emo pushes the man off the bridge.

So too do we attack Google, not for being opposed to the general views of the tech community. They are, in fact, one of our greatest champions, supporting FOSS, patent reform and providing alternatives to many monopolistic software suites. And yet, here we are, asking if they've been evil today.