Tying The Tubes

Ted Stevens’ YouTube-celebrated “Series of Tubes” speech notwithstanding, Net Neutrality has not gotten serious traction in terms of legislation thus far. The FCC, however, seems to be ready to give it a go with this imminent censure of Comcast. Apparently the FCC will rule by policy where the law fails them (much the way the EPA, FDA and other government agencies staffed by non-elected officials do).

Don’t get me wrong, I hate Comcast’s stupid approach to file sharing. But adding unlegislated regulation isn’t my idea of a solution. I’d still like to think that our free market-driven economy will take care of open, equal internet access for all. The real problem, if there is one, is for consumers who don’t have any broadband alternative to Comcast. But as DSL access spreads to the uttermost, I find myself agreeing with the telco’s: Net Neutrality is a solution in search of a problem.

Source: http://biz.yahoo.com/ap/080711/internet_regulation.html?.v=5

More Monkey Business

This is a follow-up to Monkey See, Monkey Do, an experiment in computer language lucidity which looked at implementations of the eponymous program in English, Groovy, Perl and Java.

I have received some contributed monkeys: today we’ll look at Ruby Monkey and Python Monkey.

Ruby Monkey

Ruby monkey quite arguably ought to have been included in the first troop of monkeys. “Ruby” is the word most likely to follow the word “like” when Groovy programmers are talking about Groovy to programmers who have never heard of Groovy. Ruby is Payton Manning to Groovy’s Eli. So without further ado, here is the Ruby Monkey contributed by Jason Felice:

monkey = Monkey.new
monkey.see.each{ |action| monkey.do action }

This monkey is quite similar to the Groovy Monkey, but of course there are some differences. Let’s anglicize this gem of a primate:

Monkey is monkey new.
Monkey see each action, monkey do action.

I’ll admit I may have taken a little poetic license with the placement of the comma in the second line, but I think it was worth it. This is eminently comprehensible as English. In fact I’d have to say this monkey edges past the Groovy monkey and vies with the Perl monkey for the title of Most Lucid Monkey.

Ruby Monkey Guts

Jason’s implementation of this monkey is very similar to the Groovy and Perl monkeys:

class Monkey
  def see
    ["scratch", "climb", "eat banana"]
  def do(action)
    print "Monkey does #{action}n"

All in all, very nice. Of course Ruby monkeys have another nice feature: they can be taught! Let’s teach Jason’s Ruby monkey a new trick. Take a bow, monkey!

class Monkey
def bow
    print "Monkey takes a bown"


Python Monkey

This monkey was contributed by Bob Griffin.

monkey = Monkey('lulubelle')
[ monkey.do(action) for action in monkey.see() ]

Bob informs me that “monkey” is one of his favorite variable names. He uses “monkey” when other programmers cling stubbornly to “foo.” He also apparently prefers his monkeys to have names. So let’s see how Lulubelle sounds in English:

Monkey is monkey Lulubelle.
Monkey do action for action in monkey see.

Wow! That’s a totally different grammatical formulation! It almost sounds something like “Monkey does what monkey sees.” Obviously, Lulu marches to the beat of a different drum, preferring not to ape her counterparts from other languages.

Python Monkey Guts

class Monkey:
  name = ''
  def <i>init</i>(self, name):
    self.name = name
  def action(self, verb):
    print self.name + ' ' + verb
  def eat(self):

  def sleep(self):

  def scratch(self):

  def see(self):
    <font color="teal">#array returns functions not strings</font>
    return [self.eat, self.sleep, self.scratch]

  def do(self,fn):
    <font color="teal">#functions are passed as 1st class variables and then run
    #Notice 'self' does not need to be prefixed as the address of
    #the monkey instance's function was passed</font>

This Python Monkey seems pretty verbose. This is partly because she has distinct methods for each of the things that the Monkey can see. But notice the difference this makes possible: other monkeys are technically seeing strings which represent actions. It’s almost more like “monkey read, monkey do.” But this Python Monkey sees methods; so Lulubelle is literally “seeing” the action which she then does herself.

Python monkeys obviously have a unique take on solving problems. Some say they can’t adhere to a spec. But Python Monkeys generally have a clear objective in mind, and they end up with some very interesting results.

What does a monkey look like in your native tongue? I have a friend pondering what a Haskell monkey would look like. But I’d also really love to see your ideas for others; what would a functional monkey look like? Clojure Monkey? Arc Monkey? Erlangutan? Or how about a Basic Monkey? Is that even a meaningful concept?

In any case if you have an example of a monkey in any other idiom, please send it (or its URL) to me at joel at clickherder dot com; I’d love to include it and compare it to the above examples.

All My Email On Gmail Deleted?!

As you may know from the sentiments in our “Roundup” video series, I have a healthy dose of skepticism for Google.  And while I have had a Gmail account for a couple of years now, I have only recently begun to use it in earnest.  Despite my discomfort with Google’s unhealthy fixation on my personal data, the quality of the Gmail app was too compelling in the end.  The fact that Google began offering Gmail as part of a suite of apps targeted at business did allay my fears somewhat: ironically it would seem I don’t trust Google to look out for the interests of individual consumers, but now that they’ve added business users to the mix I figure they must shoot straight: I don’t see them as champions of privacy, but trade secrets are a different matter, one with which Google can no doubt identify.  In any case, you might say I was driven into Gmail’s arms by a spam problem which had grown to epic proportions.

So imagine my shock and horror this morning when I sat down to read email this morning, and discovered my usually stuffed inbox had only four emails in it.  I immediately started scanning for stories of the same.  There were some stories out there, however, none were all that current.  Could my account have been singled out as having violated some obscure policy?  There was no notice from Google to indicate any such thing.

The cause of this deletion scare began to come clear as I was reading through some of the labels which still had emails.  In fact I noticed that all my labels still contained their emails.  And then I noticed that all the emails I was seeing had acquired a label which would not ordinarily apply.  I checked that label, and found, sure enough, all my emails were there.  It was starting to look like a filter problem.

After looking over the filter which labeled and archived my tech-related newsletters, I did some experimenting around and discovered a quirk: in certain situations, Gmail recognizes the minus sign as a special character which signifies negation, i.e. “NOT”.  This makes perfect sense if you want to create a filter for all emails except those from bob@example.com.

Note the “Also apply” checkbox for this filter:

You have to be careful once you decide to negate more than one email in the “From” criteria, of course.  Since an email can only be from one sender, any filter which negates two patterns joined by an “OR” will automatically catch all emails.

This, however, is not the gotcha which got my inbox cleared.  What got me was a minus sign in conjunction with a wildcard.  Let’s say that you get several email newsletter from the Bar Company.  For whatever, reason, they send you emails from multiple domains: announcements@foo-bar.tld and deals@baz-bar.tld.  My problematic pattern was something like this:

So apparently Gmail’s filters are interpreting *-bar.tld exactly the same way it would interpret -*bar.tld, which is to say, “match everything which is NOT like bar.tld right?  Wrong.  When I tried the pattern below,

I got another surprising result:

So in English, “match anything which does NOT match
bar.tld“.  In my inbox, that would be all emails.  Yet this pattern matches none of them.  Weird.

In any case I’m glad all my email wasn’t actually deleted. 

Powered by ScribeFire.

Lifestrea.ms Brings Us Closer To Minority Report-style Computing

Haven’t checked it out myself yet, but it sounds like this thing is going to rock. Sort of a service to sit in the middle of all your blogging/reading activities, simultaneously making output more convenient and managing your attention economy at the same time.

We’re already at the point that people who do RSS aggregation well (i.e. manage their attention economies) will start to pull ahead of the pack in terms of being well informed and in terms of having a good comprehension of the web 2.0 marketplace in general. Fading is the conception of the web as a library of searchable information; the concept now is of the web as a constant flow of new information across the individual user’s desk (or lap, or palm).

Found via Read/Write Web: Lifestrea.ms Is Attempting to Build the Future of Life Online.