Tuesday, September 30, 2008

Blogger Claims They Can Prove I Am A Bot

Each graph has a unique distribution of ups and downs, but most contemporary writers define a fairly narrow subset of word frequencies in any given language. What caught our attention in the above data set was the total word count: over 150K words for Giles. A closer look showed that Giles posted 577 blog posts in 2007, and 365 so far in 2008 as of September 30th. Giles averages well over one post per day, and finds time to include video and images in most posts. We hypothesized that Giles profuse writing could be a symptom of hypergraphia, and so we took a closer look.

We analyzed the data from Giles' blog in a few ways, but the following chart shows the most interesting result. This is a comparison of simple literary fingerprints, like the chart above; however, here we are comparing Giles to himself in three different years: 2008, 2007, and 2006.

Giles' fingerprints for 2007 and 2006 are typical: two graphs that rise and fall from word to word in unison, with little statistical deviation over time. 2008 is different. In 2008, the area under his fingerprint graph is much less, indicating a significant increase in his vocabulary. This is not ordinary human behavior, and would require a significant conscious exertion on Giles' part if he were human.

There's a lengthy, detailed blog post and a GitHub repo.

Most obvious methodology flaw: my posts often quote other people's posts at length.

I'll admit I have investigated auto-blogging technologies, even looking into creating an army of Twitter bots who argue with each other, but haven't had the time to build anything serious.

Finally! Coherent, Simple Singularity Rebuttal

Aqui, courtesy of Kevin Kelly.

And just for good measure, here's my comment:

Douglas Adams described a computer designed to create a computer smarter than itself - and both were smarter than all humanity - in Hitchhiker’s Guide To The Galaxy. This isn’t Vernor Vinge’s idea, or Ray Kurzweil’s. Biters!

This Is Not A DJ Mix

drum & bass and hip-hop in the style of pink floyd

Monday, September 29, 2008

Towelie Has Some Weird Code

I've written some weird code in Towelie. I'm not sure if it's good or not.

Towelie uses ParseTree to parse Ruby code, then analyze the parse tree for repetition.

Say you've got some simple Ruby code.

ParseTree turns that into an array of arrays of nodes.

The following code from Towelie recursively searches such an array for arrays which start with the node :defn. Arrays which begin with that symbol represent method definitions.

The code does a few unusual things.

Firstly, it uses a case with only one when. At some point, the recursive calls to def_nodes will have it looking at a symbol, string, or numerical argument when what it needs is an array. Since the when Array fails, and there is no else, the method terminates and returns accumulator. When you're writing a recursive method, of course, terminating that method means returning back up the chain of recursion from which you began.

I think the case is a nice way to document that the method only parses Arrays, but I'm not sure. It's a legacy from a different way I tried to solve the problem before I found this solution, but it reads well to my eyes. I've been writing a lot of recursive, Haskell-y stuff recently, and functional programming seems to gravitate to these pattern-matching case/when things.

Second, and probably most glaringly, it adds methods to objects instead of making those objects part of a class or using something like DefNode.new(). The reason: less words. I wanted to refactor the code with the least possible effort.

I got the idea from Dave Thomas' metaprogramming screencasts. The methods I add are simple accessors. They give me the ability to do this later on:

I've actually simplified the code here very slightly for readability. This method is comparing the bodies of two def nodes, which is to say, two method definitions, to see by how many elements they differ. The win here is that the accessors make it possible to document what information I'm getting from the method definitions. The original stuff was like

def_node_1[1] if def_node_1[2] == def_node_2[2]

which was just hideous.

Tangent: the diff code uses a method called stepwise. That's just a nested each.

It's probably very similar to Rails' in_groups_of, but I'm not using ActiveSupport for this at the moment. In fact I didn't even think of that when I was writing it. I got the idea from some Flash code I stole from bit101.

Anyway, the last weird thing about def_nodes is that I could probably make it better with inject. However, I tried in the simplest way and everything went kaboom.

Republican Vote-Tampering Machine Swinging Into Gear

In El Paso County, Colorado, the county clerk -- a delegate to the Republican National Convention -- told out-of-state undergraduates at Colorado College, falsely, that they couldn't vote in Colorado if their parents claim them as dependents on their taxes.

In Montgomery County, Virginia, the county registrar issued a press release warning out-of-state college students, falsely, that if they register to vote in Virginia, they won't be eligible for coverage under their parents' health and car insurance, and that "if you have a scholarship attached to your former residence, you could lose this funding."

In Mount Pleasant, Wisconsin, Democratic voters received a mailing containing tear-out requests for absentee ballots addressed to the clerk in Caledonia -- the wrong location. In Middleton, Wisconsin, Democratic voters received absentee ballot requests addressed to the clerk in Madison -- the wrong address. Both mailers were sent by the McCain campaign.

The mailer thing is also happening in New Mexico.

Stanton DaScratch DJ MIDI Controller

Saturday, September 27, 2008

A Heart-Warming Love Story

This would not have been possible without social software.

Truly, the Interwebz are changing the world.

Obama Campaign Needs Coders Now

The Obama campaign's grassroots movement is supported by the best data management in politics.

The Obama Data team is looking for data-savvy supporters to join our team as Data Fellows for the last weeks of the campaign. The position is full time through November 4th.

Data Fellows will be required to attend an online training and will be expected to volunteer full-time in the state of their placement for three weeks. Data Fellows will also:

  • Assist the voter file manager and data team with data processing, data compilation, or reporting needs

  • Assist the organizers with data-intensive tasks and projects

  • Help build this movement in any way they can

Apply Here

If McCain Gets In, Run

Naomi Wolf:

Please understand what you are looking at when you look at Sarah "Evita" Palin. You are looking at the designated muse of the coming American police state.

I realized early on with horror what I was seeing in Governor Palin: the continuation of the Rove-Cheney cabal, but this time without restraints. I heard her echo Bush 2000 soundbites ("the heart of America is on display") and realized Bush's speechwriters were writing her -- not McCain's -- speeches. I heard her tell George Bush's lies -- not McCain's -- to the American people, linking 9/11 to Iraq. I heard her make fun of Barack Obama for wanting to prevent the torture of prisoners -- this is Rove-Cheney's enthusiastic S and M, not McCain's, who, though he shamefully colluded in the 2006 Military Tribunals Act, is also a former prisoner of war and wrote an eloquent Newsweek piece in 2005 opposing torture. I saw that she was even styled by the same skillful stylist (neutral lipstick, matte makeup, dark colors) who turned Katharine Harris from a mall rat into a stateswoman and who styles all the women in the Bush orbit -- but who does not bother to style Cindy McCain.

Then I saw and heard more. Palin is embracing lawlessness in defying Alaskan Legislature subpoenas -- this is what Rove-Cheney, and not McCain, believe in doing. She uses mafia tactics against critics, like the police commissioner who was railroaded for opposing handguns in Alaskan battered women's shelters -- Rove's style, not McCain's. I realized what I was seeing.

Reports confirmed my suspicions: Palin, not McCain, is the FrankenBarbie of the Rove-Cheney cabal. The strategy became clear. Time magazine reported that Rove is "dialed in" to the McCain campaign. Rove's protege Steve Schmidt is now campaign manager. And Politico reported that Rove was heavily involved in McCain's vice presidential selection. Finally a new report shows that there are dozens of Bush and Rove operatives surrounding Sarah Palin and orchestrating her every move.

What's the plan? It is this. McCain doesn't matter. Reputable dermatologists are discussing the fact that in simply actuarial terms, John McCain has a virulent and life-threatening form of skin cancer. It is the elephant in the room, but we must discuss the health of the candidates: doctors put survival rates for someone his age at two to four years. I believe the Rove-Cheney cabal is using Sarah Palin as a stalking horse, an Evita figure, to put a popular, populist face on the coming police state and be the talk show hostess for the end of elections as we know them. If McCain-Palin get in, this will be the last true American election.

via cypher23

My last post on Palin made fun of her; you might wonder how I go so quickly from comedy to horror. The answer's simple. My last post also praised Thomas Frank for his accurate predictions. Thomas Frank pays a lot of attention to history, and I'm pretty sure his insight and predictive skill come from understanding history. Naomi Wolf pays a lot of attention to history too. Everyone should read her.

Am I trying to scare you? I am. I am trying to scare you to death and ask you to scare your Republican and independent friends most of all. How do you know when it is war on citizens? When there are mass arrests, journalists are jailed, the opposition is infiltrated, rights are stripped and leaders start to ignore the rule of law.

Almost everyone I work with on projects related to this campaign for liberty has been experiencing computer harassment: emails are stripped, messages disappear. That's not all: people's bank accounts are being tampered with: wire transfers to banks vanish in midair. I personally keep opening bank accounts that are quickly corrupted by fraud. Money vanishes. Coworkers of mine have to keep opening new email accounts as old ones become infected. And most disturbing to me personally is the mail tampering I have both heard of and experienced firsthand. My tax returns vanished from my mailbox. All my larger envelopes arrive ripped straight open apparently by hand. When I show the postman, he says "That's impossible." Horrifying to me is the impact on my family. My childrens' report cards are returned again and again though perfectly addressed; their invitations are turned back; and my daughter's many letters from camp? Vanished. All of them. Not one arrived. Try explaining that to a smart thirteen year old. Try explaining it in a way that still makes her feel secure and comfortable.

The other reason I take both the horror and the comedy points of view here is that - as anybody who's ever tried to avoid getting in a traffic accident knows - idiots are both dangerous and funny.

Everything Is Made Of Techno

Why rhythmic accuracy and intelligence go hand in hand.

Binary Beat from Niklas Roy on Vimeo.

via cypher23

Friday, September 26, 2008

Republican Meltdown: Thomas Frank Predicted It

It's hard to believe that Republicans decided to follow up the Constitution-violating, bomb-dropping, torturing, wire-tapping, ruthless, efficient, election-stealing madness of the past eight years with a guy whose opinion changes by the minute and a lobotomized soccer mom. It's like you're facing down Darth Vader and you suddenly realize he's a retarded jackrabbit. It's the original Star Wars meets The Wizard Of Oz.

There's a lot to say about that, but the only really interesting thing to say about it, as far as I can tell, is that Thomas Frank not only explained it in detail in his 2004 book What's The Matter With Kansas?, but also offhandedly predicted it with a few comments to the effect that he was going to find it mildly amusing when the Republican party suddenly self-destructed in public.

Moral of the story: read Thomas Frank.

Let's Play Wall Street Bailout!

Thursday, September 25, 2008

Web Comic Art: Three Panel Soul

I love the art in this web comic. Way above the bar in its light and shading, its use of color, its accuracy, and its stylistic versatility - including at least two strips that use more than one style.

I sized these down and compressed them at relatively low-quality. Check out the links to see them in their natural habitat.

There's no about page, but I'm pretty sure the guys behind it, Matt and Ian, work in the videogame industry, as there's a lot of gamer content, and a joke about A*.

Update: Tommy Morgan, Chris Thompson, and Liam Doherty all tell me that MacHall was the first iteration of Three Panel Soul.

Tommy didn't believe they were video game guys, so I e-mailed Ian, the artist, and asked. I also asked him how he got so wicked with his art skills.

Thanks for the kind words. Always nice to receive a few about my work.

Yeah, I'm in the game industry. I'm art lead on a project for Three Rings Design. A small company but a lively one on the scene. Matt isn't in the industry however, but it is his job to write about it.

My drawing styles have always changed over the year. I think what I do is I find something I like, then take the key parts of it that draw me in and add them to my mental collection. The coloring style I use developed from doing countless sprites for games. I needed a way to flat shade and to do it fast, so the line work was dropped. The color comics are of course far more detailed than any sprite I did, so they take far longer, but I really enjoy the results.

Rushkoff FTW

Print Your Own Money.

Panic In The Streets Of Pecos

An e-mail from a friend in New Mexico:

The story is all over Progressive Talk Radio today about the McCain campaign sending absentee ballot applications to registered democrats or people that have donated to Obama's campaign. These ballots are deliberately misleading and have postage paid return addresses that are for an election clerk that is outside of your city or town. What this will end up doing is either having your vote not counted, or if you return one of these, they will cite you for election fraud, saying that you already voted absentee. These ballots are only being sent out in 'purple states' and this is a big deal.. This is called voter caging, and is a huge problem.

The McCain campaign is (attempting to) steal (ing) this election as we speak. Please get this information out to as many people as you can, and tell anyone you know who has received one of these ballots that they need to contact their city election clerk or the supervisor of elections immediately. Also call the local media and let them know what is going on.

The main stream media is never going to cover this so we have to depend on our ground campaign to get the word out to our voters.

New Mexico was an interesting place to vote in 2004:

f you were a Hispanic American or Native American voting in New Mexico on November 4, 2004, you may have experienced some of the following:

The most likely problem was simply to find out that your vote for president or other offices was not counted. Ballots with missing votes are called “under votes.” In New Mexico there were around 23,000 under votes out of a total of about 750 thousand votes cast. That is a rate of 3.0% for the state, or six times the expected rate of under votes in a presidential election. In Hispanic and Native American precincts under votes range from 6% to as high as 49%. One poll worker described watching 141 voters come to the precinct, enter the polling booth where a voting machine awaited, stay for a short period, and leave. At the end of the day, there was only one vote counted for president. That’s a 99% plus rate of under votes for that precinct.

Tuesday, September 23, 2008

Copyright Violation: Every Artist's Birthright

A couple years ago I took a class on Pro Tools and studio production techniques. I took it at a little community college, but it was a good class. My teacher needs music for a new class on podcasting and broadcasting, music he can give his students to use without fear of getting sued, so he sent out a mail to all his students - and I'm in the difficult position of figuring out which of the songs on my music/art site are legal.

Think about that question, because it's a question many musicians and artists have been asking for the past twenty years or more: which of my artworks are legal? Anybody who's ever heard sampling in hip-hop and electronic dance music, or seen graffiti on the side of a wall, knows that some art is legal and some art is criminal.

It's an insane distinction. Art is a way of communicating. If some forms of communication are legal and others are illegal, does that mean some thoughts are legal and others are not? Could the rise of police states be tied to this idea? Is it a good idea to raise children who all take for granted that some ideas are legal and others are inherently wrong?

This is not how things always were. This is a side effect of bad laws.

Lessig's well-known on the Web and copyleft is a cause célèbre here. What he doesn't mention, and what a lot of people don't seem to remember, is that this fight began before anybody ever bought a modem. It began in the music industry, with artists asserting a new form of artistic freedom.

The new freedom: sampling. The artists won the fight in Europe, and lost it in the United States.

After Public Enemy released It Takes A Nation Of Millions To Hold Us Back in 1987, every kid in England sold their guitar and bought a sampler instead. In 1988 England discovered house music, and all those samplers were right there ready to use. Europe in general and the UK in particular experienced a musical Cambrian explosion. The ubiquity of sampling in electronic music created a gigantic industry and a staggering range of subgenres.

Meanwhile, in the States, the record industry staffed up on lawyers, and set up a system for licensing music which basically requires that whoever owns the copyright on whatever you sample A) likes you, B) likes your new song, and C) charges you what you can afford. In practice, this doesn't happen often. Albums like Nation Of Millions or the Beastie Boys' Paul's Boutique, which used abundant samples to create a new sound, would be legally impossible today.

The discussion usually centers on laws, but that's only part of the picture. In the US we have a very important law protecting free speech and freedom of assembly. In the UK, the government enacted a law which criminalized anyone playing "sounds wholly or predominantly characterised by the emission of a succession of repetitive beats" on any kind of sound system with more than one person in attendance. Yet it's the US where artists lost the fight, and the UK which created an entire subgenre based around just one sample, and a flourishing industry around that subgenre, including magazines, superclubs, and weekend-long parties in Amsterdam with all-expenses-paid travel packages.

It's good for the economy. It's good for the artform. It's good for the country. And most important of all, it's just good. Restricting artistic freedom is bullshit.

This is why I support graffiti - not just as an artform, but as a political act. If you throw up paint on somebody else's property - or better yet, government property - you're saying that your right as an artist is more important than a property-owner's right to their property.

That's where the debate has to start. The property-owners - especially the corporate ones - should have to fight just to have their rights to property recognized at all. Saying property matters but artists count too is exactly the cowardly, begging-for-leftovers bullshit that lost us all the sampling and innovation in hip-hop while Europe was building whole industries on a new artform which we discovered and created. Property doesn't matter. Art matters.

Anybody who ever joined a debate team (or dated somebody that did) will notice my argument that property is less important than art invokes the economic benefits of this attitude. I'm not going to bother clearing up that contradiction - anybody who opposes graffiti or drum and bass just doesn't deserve the effort it would take for me to make sense - but I will tell you it's at the core of a fantastic book I highly recommend.

The Pirate's Dilemma, in a nutshell, is that punk rock, anarchist attitudes drive successful capitalist enterprises. This is something Thomas Frank observed from another angle in The Conquest Of Cool - anti-establishment attitudes drive the founding of new businesses much more successfully than they do the overturning of actual establishments. The Pirate's Dilemma goes one step further, saying that if you've got a great idea, there's no point waiting for the law to catch up. The only way the law knows how and when to change is when it starts punishing artists and entrepreneurs for creating new things, and then people vote against the laws these artists and entrepreneurs violate.

Laws expire. There are laws on the books in Massachusetts which state it's legal for a man to beat his wife as long as the cord - that's the piece of tree he's beating her with - is no thicker than his thumb. This law is no longer enforced, and newer laws contradict it. In an ideal world the legislatures repeal every law that expires, but in an ideal world, the legislature is qualified to make laws in the first place.

(Relevant but probably doomed link.)

In the real world, there's a constant battle to define what laws we should have, and part of that battle is proving how some laws we already have are just plain wrong. Copyright law is just plain wrong. To have a literate population, we need to destroy it. To have artistic freedom, we need to destroy it. To enable many forms of internet commerce, we need to destroy it, or at least give up the idea of protecting it. It's the job of artists and entrepreneurs to destroy copyright law before it causes any more harm. Laws restricting what ideas the population can express threaten democracy.

Monday, September 22, 2008

Thursday, September 18, 2008

Preach On, Brother: Fight Club For Hackers

  1. If it’s art, wires, or code you can bring it. This will be our triad: art/wires/code. Remember it.

  2. NO FUCKING BUSINESS ASSHOLES This isn’t your personal fucking recruiting station. Take your “game changing” ideas and fuck the hell off.

  3. If you can’t sling at least one of the three in the A/W/C triad then you can’t come. No exceptions.

  4. Everyone who attends has to eventually show something.

  5. inspired rant

    the freehackers union

Crowdsourcing A Lightbulb Joke

I'm making another one of my video lightbulb jokes, but I need help. Volunteers must be able to create a video file and send it to me. Format should be Quicktime or AVI. This means anybody with a webcam or a digital camera.

The Difference Between Liberals And Conservatives

Wednesday, September 17, 2008

Monkey-Patch Which Prohibits Monkey-Patching

Harkening back to the blog hubbub about anti-monkey-patching, Garry Dolley created a monkey-patch which makes monkey-patching impossible.

Ruby provides a method_added() callback that is invoked every time a method is added or redefined within a class. It’s part of the Module class, and every Class is a Module. There are also two related callbacks called method_removed() and method_undefined().

This means you could detect when other code has redefined a method, and do something about it! How about redefining that method (again) to point back to your original code? Indeed, this works.

I’ve encapsulated the details of this in a new module I call Immutable. It provides one class method called immutable_method(). Provide it a list of methods you don’t want touched and it’ll make sure they can’t be redefined. Hence, immutable.

I'm not saying this is a sane thing to do. But I think it's interesting. I work with Garry - he works for a company my company builds software for - so I'm going to bring this up in real life, but just for the record, one thing which makes me question the security of the whole shebang is that Immutable doesn't raise errors if you redefine a method and it blocks your redefinition. Method definition confusion drove the whole discussion in the first place, and here we have a solution which at the same time both prevents the problem, and guarantees that it will happen.

Flay Is Coming But Towelie Is Here

I'm just saying.



Monday, September 15, 2008

Sexual Attractiveness Metric: Cruelty To Animals

Megan Fox on her über-marketable alleged bisexuality:

"Look, I'm not a lesbian," said Fox. "I just think that all humans are born with the ability to be attracted to both sexes. I mean, I could see myself in a relationship with a girl - Olivia Wilde is so sexy she makes me want to strangle a mountain ox with my bare hands. She's mesmerizing. And lately I've been obsessed with Jenna Jameson, but ... oh boy."

Hot chick thinking about strangling giant beasts.

I'd love to see how this trend evolves. What would Megan Fox do if she encountered somebody even sexier than Olivia Wilde? Rape a kangaroo with a monkey wrench? Obviously she's not going to strangle a mountain ox with her bare hands for Steve Buscemi, but would she fart on a tired hamster?

Damn, that's a sexy picture. What a body! She makes me want to set a sheep on fire and throw it out of an airplane to its burning sheeply death for no reason at all.

Speaking At RubyConf

I'll be sharing the stage at RubyConf with Ben Bleything and Yossef Mendelssohn, doing a talk called Two Turntables And A Git Repo. We'll each be presenting ways to make music with Ruby. I'm also speaking at the Ventura County Ruby users group in Santa Barbara on December 10th, about either Archaeopteryx or Towelie, and probably giving a lightning talk at the LA Ruby users group in Los Angeles next week about Towelie. As one of the organizers of LA Ruby, by the way, I have to say it's turning out awesome.

Saturday, September 13, 2008

Aliens May Already Walk The Earth

A freakish little monster called a tardigrade (or water bear) can survive in space. Scientists found this out by shooting them out into orbit, collecting them again, and watching them mate. Weird way to pay the bills.

"They have claws and eyes. They are real animals. And this is the first time such an animal was tested in space," said Petra Rettberg, an Institute of Aerospace Medicine microbiologist.

project blog
buy the research paper (pdf)

Vacuum (imposing extreme dehydration) and solar/galactic cosmic radiation prevent survival of most organisms in space. Only anhydrobiotic organisms, which have evolved adaptations to survive more or less complete desiccation, have a potential to survive space vacuum, and few organisms can stand the unfiltered solar radiation in space. Tardigrades, commonly known as water bears, are among the most desiccation- and radiation-tolerant animals and have been shown to survive extreme levels of ionizing radiation. Here, we show that tardigrades are also able to survive space vacuum without loss in survival, and that some specimens even recovered after combined exposure to space vacuum and solar radiation. These results add the first animal to the exclusive and short list of organisms that have survived such exposure.

inevitable conspiracy theory

this little incredibly tough, adaptive and survival-oriented critter could have ridden to the Earth as a full adult in its Tun form (not just as an egg) in any space-traveling body (comet, asteroid, etc.) that could have survived to impact the Earth's surface. In other words, it is clearly within the realm of possibility that this creature may not even be originally native to Earth.

The fun part of the conspiracy theory web page is I actually discovered it after describing it.

Towelie: IRB Refactoring

The intended use case for Towelie is refactoring in IRB. Success! I just used it in IRB to identify several duplicated method definitions in a large Rails project.

Scanning 27 controllers, 84 models, and 20 helpers, Towelie identified 14 duplicated methods. Towelie doesn't yet have the ability to identify methods which are very similar, so when I say it caught 14 duplicated methods, I do mean methods which were exact duplicates. (Although Towelie is whitespace-agnostic, so they may not have been character-for-character duplicates.)

When I ran Towelie against the entire project, I got some kind of ParseTree error. It's possible this is due to a weakness in ParseTree, but more likely that ParseTree doesn't know what to do when an automated parsing process asks it to parse JavaScript or HTML. I'm planning to tweak Towelie to make it a little more careful about what it asks ParseTree to parse. In the meantime, if you want to run Towelie against some legacy code, I recommend you start by testing individual folders.

That's what I did. Here's my IRB command history:

294: require 'lib/array'
295: require 'lib/towelie'
296: include Towelie
297: puts duplicated "../[client's app name]/app/controllers"
298: puts duplicated "../[client's app name]/app/models"
299: puts duplicated "../[client's app name]/app/helpers"

Towelie then printed out each duplicated method, right there in IRB.

Friday, September 12, 2008

Spooky Typograffyty


Towelie Keeps Your Code DRY

This morning, at an internet cafe in rural California, near a beautiful little river, I finally got this idea into a working proof-of-concept form.

Towelie is a small Ruby library which can comb through a code base and identify method definitions which are exact duplicates of each other.

I got the idea from Stu Halloway, who talks at conferences about creating graphs with lines of code on one axis and flog scores on the other.

I think I saw Stu explain this at Ruby Nation, in mid-July. I've been hacking on Towelie on and off since then. ENTP just had a week-long camping retreat, during which WiFi was only sometimes available, and the extra hacking time allowed me to finally get Towelie into 0.0.1 territory. (I also hacked on it at Burning Man, although it was harder to find electricity for my laptop there.)

Currently all Towelie can do is identify two method definitions which are completely identical, in two small, simple files. A different fork of Towelie also counts repeated lines of code, minus obvious harmless repetitions such as end or empty newlines. Future versions of Towelie may or may not come into existence at some point in future, with niftier powers.

The GitHub repo is here.

Towelie is, of course, the worst character ever.

Update: When I first posted this, I had pushed the wrong branch to GitHub. That's fixed. I also hacked a few extra features on the plane: Towelie can extract unique methods, and methods which have the same name but are otherwise different.

Update: Towelie can make its comparisons across modules and classes now.

Thursday, September 11, 2008

Quick Graf


Wednesday, September 10, 2008

Cheap Graf

Is it still graffiti without vandalism?


Monday, September 8, 2008

Horror Fiction And Greek Tragedy

I'm pretty sure we're talking about two words for the same flavor of ice cream.

Archaeopteryx: Social Networking Site (Forum)

If you have questions and ideas about Archaeopteryx, and/or interesting projects using it, I've set up a simple social networking site on Ning.com for it:


I used Ning.com because it was dead easy for me to set up a simple forum site which I can expand to all kinds of crazy features later on if the need arises.

Please join up!

Saturday, September 6, 2008

Biden: "The Silence Is Deafening"

Pitbull my ass. That bitch is a snack.

Friday, September 5, 2008

Rake Command-Line Options

You can access the list with rake -h.

rake [-f rakefile] {options} targets...

Options are ...

--classic-namespace (-C)
Put Task and FileTask in the top level namespace
--describe (-D)
Describe the tasks (matching optional PATTERN), then exit.
--dry-run (-n)
Do a dry run without executing actions.
--help (-h)
--libdir=LIBDIR (-I)
Include LIBDIR in the search path for required modules.
--nosearch (-N)
Do not search parent directories for the Rakefile.
--prereqs (-P)
Display the tasks and dependencies, then exit.
--quiet (-q)
Do not log messages to standard output.
--rakefile (-f)
Use FILE as the rakefile.
--rakelibdir=RAKELIBDIR (-R)
Auto-import any .rake files in RAKELIBDIR. (default is 'rakelib')
--require=MODULE (-r)
Require MODULE before executing rakefile.
--silent (-s)
Like --quiet, but also suppresses the 'in directory' announcement.
--tasks (-T)
Display the tasks (matching optional PATTERN) with descriptions, then exit.
--trace (-t)
Turn on invoke/execute tracing, enable full backtrace.
--verbose (-v)
Log message to standard output (default).
--version (-V)
Display the program version.

Archaeopteryx: Forked Versions On GitHub

Due partly to my slowness in handling pull requests, partly to general mad travel-related busy-ness, and mostly due to the awesomeness of GitHub, there are several forks of Archaeopteryx on GitHub: refactoring forks, a fork with better tests and specs, a related project enabling MIDI in, and a context-free grammar fork:

It's a rule based generator, not necessarily just for melodies. drum_example.rb uses a probability matrix to fire off rules. Those rules can call other rules and so on. If a rule is defined more than once, the generator picks randomly from each of them.

So a matrix could call a rule named :snare which is defined several times each time doing something different, varying a velocity, note number, or whatever. Say I want a bit more variation in what the snare is doing, I can make a rule that plays a triplet and hear the results realtime. And when it plays a triplet, maybe I want the last note accented, another rule or two and it's done.

The point is, is that it allows me to develop a rhythm or aleatoric melody and evolve it over time. It's pretty easy to get started with it playing quarter notes, or a scale or whatever, and turn that into something insanely complex as more and more rules are added. Each of the transformations become little toys to experiement with. A programmer/musician can develop what-ifs and hear those live. What if I send all the hi-hat hits back in time a beat or two, what if I shift this part up an octave? What if I play a static melody and shift it from dorian to lydian? What if I create a treble glisando triggered off of the tone of the occasional note of the sub-bass?

I don't know what kind of music this will be good for, but I know from the ContextFree Art community that the concept is a ton of fun (their community gallery at contextfreeart.org has lots of examples). It's interesting to see what I get with that applied to music.

Another concept I've built into this is the Canvas class. All the notes are placed on a grid as hashes. So for example, I could have one rule place a E3 notes on every 16th note. Then have matrix fire off rules that tweak the velocity of the note on E3. Then add in another that tweaks the modulator, etc.

I'm having trouble keeping up with all the interesting things people are doing with my code, but that's a great problem to have.

This Cost 10 Million Dollars

At least.

Bobcats Take Over Foreclosed Home

From the LA Times.

As far as I can tell, animals spend more time in the cities than they used to. There are coyotes, raccoons, ducks, geese, and skunks in my neighborhood in Los Angeles, and I'm minutes from downtown. The bobcat story doesn't surprise me at all; just curious how much further this goes.

Burning Man: Basura Sagrada Temple

The Basura Sagrada temple, which, in keeping with Burning Man tradition, burned on Sunday night. Shot during the day on Saturday, just before the whiteout. Soundtrack from Burial, Julee Cruise, and Angelo Badalamenti.

Burners devoted the temple to people who they lost that year - family, friends, and lovers who had passed away. (And one well-missed dog.) Pictures of the departed, their names, messages which would never reach them, and in a few cases clothes they would never wear again, covered most of the structure, along with the names of ex-girlfriends and -boyfriends, random stickers, and written notes ranging from "I wish I had a pen" to "I always feel lonely here." A lone cellist played with an amp and effects.

The wind turned into a dust storm and then a whiteout. During the whiteout I was unable to see the temple, and at times unable to see things less than ten feet away. When I left the temple, the dust obscured so much that the temple had become invisible.

When the Man burned on Saturday, everybody was laughing, cheering, yelling, and talking. When the temple burned, everyone was silent, except for one drunk girl with a megaphone.

Thursday, September 4, 2008

Password Gem: v1.2 Released

Around 11am I released v1.2 of password.

Here's why password exists:

Password-protection on my Twitter account, or Reddit, or del.icio.us, or for the love of God instructables.com - what the hell were they thinking? - does absolutely nada for me personally, and wastes my valuable time every day, because there is always some stupid Web site demanding my password when it doesn't even need it for any useful purpose. This is especially true given that there's plenty of evidence that requiring unnecessary passwords hurts your business.

If you work in a large corporation, you're especially screwed. The password gremlins lurk everywhere, like roaches that can type - they change the network password every week, or the Exchange server password every three and a half hours except on Tuesday, etc., etc. Nobody should have to waste their time on that stuff.

password remains a handy weapon against the password gremlins. The only new feature in version 1.2 is a -? command-line flag, which allows you to grep.

For instance, maybe I don't remember if I stored my facebook password using password. I just do this:

password -? facebook

And if password has a listing for facebook, it simply says:


The reason it works this way is you may have several passwords matching a given string stored in password. I used to work for the Los Angeles Times, and if I do this:

password -? lat

I see a bunch of different "sites" I have passwords for.


It's also handy if you have more than one Facebook account or Myspace page.


I used a delayed post option to post this 12 hours after uploading to RubyForge (because I'm old-school like that), so by now it should have propagated to every server and you should just be able to do:

gem update password

Update:I don't like this syntax, but changing it requires more optparse-fu than I currently possess, and/or using a different library altogether, so instead I'm using this bash shell alias, which I recommend you use also:

alias password?="password -? $1"

Now instead of

password -? facebook

I just write

password? facebook

OS X: You Can Almost Kill The Dock Again

Some people like the OS X Dock. I am not one of them. Since I bought this computer and it belongs to me, I'd like to throw away the garbage that somebody else loaded onto it by mistake.

It used to be easy to kill the Dock, but Apple made it harder with 10.5, disabling the hidden options that, under Tiger, had made it possible to remove their annoying error.

I love my Mac, but this is a fairly typical Apple shortcoming, a weird control-freak mentality that blocks you from truly owning your own machine.

Currently, this is the closest thing to a Dock-killer I know:

#make dock really really small
defaults write com.apple.dock tilesize -int 1

To use it, you also need to set the Dock to auto-hide and turn magnification off.

The results:

Still not perfect, but much better.

Wednesday, September 3, 2008


Lisbon/Angola sound; house music meets African pop.

Fuck You I Won't Do What You Tell Me

Police prevented Rage Against The Machine from performing outside the RNC. Police at the RNC also violently assaulted journalists and illegally raided people's homes.

When I first learned of this, I was outraged the police violence wasn't making a dent on the headlines of my favorite newspaper, but digging deeper into the top stories made it clear enough why: the Republicans haven't just failed at instituting a police state, they've deteriorated into some kind of Muppet circus.

Mainstream comedy trumps fringe horror, every time.

McCain Flakes On CNN Over This Interview

McCain backed out of appearing on Larry King Live, telling CNN it "crossed the line" by asking these questions about Sarah Palin: