« August 2007 | Main | October 2007 »
September 29, 2007
Largehearted Goat? First Annual Report
v. 
Today marks the one year anniversary of Largehearted Goat?, my comprehensive study of Largehearted Boy's obsession with John Darnielle and The Mountain Goats.
I originally announced Lagrehearted Goat last October, and, in the course of the year since data collection began, The Boy wrote 362 'Shorties' posts, 52 (or a little more than 14 percent) of which mentioned The Mountain Goats. The longest period during the year without a Goat post lasted 26 days, starting on June 6 and ending July 16.
As could probably be expected, the Goat posts tended to come in clumps (around relevant Mountain Goats news, mostly), the two most intense of which included runs of four consecutive days (from May 11 to May 14 as part of an incredibly Goat-ish week that included six Goat posts over a span of nine days and then again just recently from September 17 to September 20).
Overall, the rate of Goat posts has remained relatively constant (at about one a week), which was a surprise to me. The project began soon after the release of a Mountain Goats' record and I expected activity to drop off precipitously after The Boy's excitement around that event died down, but, though it flagged slightly from its initial intensity, his Goat-ing frequency has remained high.
Continued research is necessary to determine if the Goat-ing rate will eventually drop off with lack of band activity or if it will stay solid in the coming between-album year. Check back next September 29th for the second annual report.
And feel free to browse the data yourself: Largehearted Goat?
Tagged: largehearted boy, mountain goats, darnielle, largehearted goat, idfdz, anniversaryPosted by Greg at 3:30 PM | Comments (0)
September 23, 2007
On the Expectation of Privacy in Social Web Applications
Alex Payne from Twitter has an interesting post up about the costs of privacy in social web applications. The thrust of his argument is that respecting the complex privacy requirements of the average non-geeky user increases the complexity of developing and using social software. While geeks might be happy to broadcast their comings-and-goings to the world, non-geeks (by which he basically means girls) have to worry about creeps and hooligans contacting them or, worse, seeking them out in real life.
Without privacy concerns, Twitter would be an incredibly simple service: basically just lists of posts and lists of users, exactly the kinds of data that database-driven web applications excel at providing. But, as Alex says, "privacy mucks this happy scenario up."
"Ask for a list of users on a social network with privacy controls and you're kicking off a complex series of computations behind the scenes. The database can't just retrieve a simple list when privacy is in the mix. Instead, it has to jump around its tables of data figuring out who's allowed to see who. The web application now has to provide different decorations to denote the private users, so you need extra logic and some new icons. Everything just got twice as hard: harder for the machines, harder for the programmer, harder for the designer, and (before this was a common UI pattern) conceptually harder for the user."
Reading this got me thinking: why isn't this a problem in real life? Why doesn't the coexistence of groups of people with conflicting privacy concerns cause problems in the actual public square? If this is really a problem stemming from the introduction of non-geeks, why doesn't it happen at sporting events or in malls where non-geeks are all too prevalent?
In real life, there's no universal system for privacy that tries to work equally well for all people everywhere. Instead there's a custom solution for each place and each community. In America, the governing law here is the Fourth Amendment and the surrounding jurisprudence, which created the doctrine of 'reasonable expectation of privacy'. In other words, our communal sense of how much we'll be seen or overheard in any particular place actually determines whether and to what extent other people are allowed to observe us there. For example, in our own homes we expect what we say and do to stay within our own walls so police are not allowed to eavesdrop on us there without a warrant even though that prospect becomes technologically easier each day. On the contrary, in an obviously public place like a mall food court covertly observing us (or photographing, videotaping, and RFID-scanning us, etc.) is fair game for cops, mall security, and even our fellow citizens.
Put in terms of social web apps: in real life, which of our data can be read is determined not by our social relationship to the person doing the reading, but by which network we're using and what constitutes a reasonable expectation of privacy there.
Seen this way, the real problem that social networks like Twitter are encountering when enforcing privacy is that they are trying to be all places to all people. They want to build one space in which you can broadcast your political beliefs to the world while I, simultaneously and conterminously, whisper my darkest secrets to only my closest friends. In the technical realm, this creates a major problem by preventing the existence of one coherent privacy policy (the way a bank's site might have). Instead, sites like Twitter are required to enforce as many different privacy policies as there are possible relationships between their users. In the social realm, this creates confusion and conflict by hampering the construction of the kinds of social norms that allow for agreement on what constitutes a reasonable privacy expectation to take hold (the way Wikipedia, with its dead simple, basically non-existent, privacy policy does have). Instead, sites like Twitter become cyclotrons filled with constantly colliding communities with different privacy expectations: if I just use the service to keep in touch with my closest friends then even emailing me about each stranger who starts following my updates can become invasive.
The implication of this seems to be that, like in real public places, online communication platforms will eventually have to sort themselves into the general categories of public and private rather than trying to be both at once. And our most successful platforms are already pretty clearly sorted: you know exactly what amount of privacy to expect when sending email or posting to a blog. Since one of the hallmarks of the new social web apps like Twitter and Facebook is that they're trying to break down this very division (or at least host both halves of it under the same roof) they are going to be running smack into this problem on a regular basis. I wonder how long it will take them to do better than the authors of the Constitution...
Tagged: twitter, social network, privacy, constitution, fourth amendment, al3xPosted by Greg at 3:52 PM | Comments (3)
September 20, 2007
git_tools: the Beginnings of a Rake Library for Git
There's been quite a lot of buzz lately amongst Rubyists (or at least amongst those I follow on Twitter) about the new version control system Git. As Linus Torvalds explained in a Google Tech Talk last May, licensing issues drove him to start work on Git to replace BitKeeper, under which Linux kernel developers had previously operated. Torvalds had three main requirements for the project: it had to be fast, it had to be distributed, and it had to be guaranteed never to lose any data.
For mere mortal developers like me, the most attractive one of these three is the second: Git's distributed architecture. In practice, the fact that Git is distributed means that you can separate the act of committing your changes from the act of publishing them. With Subversion, and other centralized systems, the only way to get your changes under version control is to push them out to the central server from which all of your collaborators pull. So, if you've got a set of changes that make a logical atomic commit, but break the build in a major way, you can't commit them without disrupting the work of others. Git, on the other hand, lets you make commits on your local machine without pushing any changes out to anyone. The result is that you can make a series of commits as you go that leave the app in whatever state you want -- even including creating your own experimental branches for trying out ideas, a process Git makes almost trivially easy -- and then when you're ready to push your changes out into the wider world, you can do so without anyone having to see the mess you made along the way. (A cool side effect of this architecture is that you can commit even if you don't have network access, for example if you're on a plane, which is where I wrote most of the code I'm about to tell you about...)
Anyway, as soon as I started using Git myself, I noticed the lack of a tool I use so often I'd stopped even noticing it was there: jchris's svn_tools plugin. It's a series of rake tasks for controlling Subversion. It provides a bunch of tasks to do common things like add all existing unrecognized files all the way up to bootstrapping a brand new Rails project into a new checkout. And Git definitely has some bumpy edges that would be nice to abstract out in this same way (like the need to type "git commit -a" for almost every commit and the need to manually tell Git about each new file individually when they're first being added). So, I set out to write a version of the same library for git, one that could provide some utilities that would speed up everyday activities and, eventually, some more complex macros for doing things like bootstrapping a new Rails project.
I didn't manage to accomplish that second goal, but I made enough progress towards the first, that I thought it would be useful to throw the project out there to see if one of those feverishly twittering Rubyists busy trying out Git might want to pick it up and run it into the end zone. So, without further ado here it is:
The main tasks of interest are:
rake git:add
- adds all files that need a manual git addrake git:commit
- commits with the -a flag thrown so your new content will actually get committedrake git:ignore
- removes the given files (or all files matching a quotation-surrounded pattern if given) from version control
A note on contributing: The archive of git_tools is itself a Git repository. One of the nice things about Git is that the files containing the versioning info are very compact and portable, so it's easy to ship around copies of a full repository with its entire history. If you make changes or improvements you'd like to see incorporated, just send me an archived version of the updated repository and I'll merge them in.
If you're intrigued and would like to learn more about Git I'd recommend the excellent tutorial intro to Git on Kernel.org and this how-to on building Git on OS X.
Happy Gitting!
Tagged: git, svn, cvs, ruby, rake, linuxPosted by Greg at 1:13 AM | Comments (2)
September 19, 2007
My Second Foray into Open Source Logo Design: Couch DB

Following on from my recent foray into logo design, I was interested to see Damien Katz's recent call for a logo for his excellent open source project: Couch DB. Would it be an opportunity for a follow up?
Somewhat hard to explain in layman's terms, Couch DB is basically a system for storing the data for your web application in a series of flat files that can be accessed over HTTP. What's special about Couch DB is that it uses two technical standards very much in vogue at the moment: JSON, a very lightweight data format from Javascript and REST, a web service architecture that involves the manipulation of individual resources through HTTP calls to sensible unique URLs. Couch DB competes with relational databases (such as MySQL) to act as the persistence layer in web applications, i.e. where you store your data when it is not actually in your running programming being manipulated.
Anyway, after my success with The Ape logo, I thought it might be fun to try to put something together for Couch DB as well. Like in The Ape project, there was some obvious imagery to start with: the logo was gonna have something to do with a picture of a couch. Here were my initial sketches:
As you can see, I started out trying to work the projects initials into the form of a couch and gradually gravitated to a simple geometric abstraction of the couch as a medium for that.
Next, I took these sketches into Illustrator and tried to mechanically recreate them there. I wasn't very happy with the result of a simple line drawing recreation of this imagery. It looked anemic and amateurish. So, then I went through and tried to use actual text settings of the project's abbreviation to construct the couch (some arrangement of a 'c', a 'd', and a 'b' that would get the picture across). This didn't get me very far either as a I kept ending up with something that looked a lot more like Darth Vader's mask than a couch. Throughout this process I was constantly adding a few purely geometric elements to try to get the letters to coalesce into something with the silhouette of a couch. Mostly I was using rounded rectangles with thick strokes as those matched the font I'd been using.
Slowly but surely, the letter forms fell away and I was left with the simple arrangement of rounded rectangles and circles that made up my final couch sketch. I added the three different weight strokes between the two rows of rectangles and the circles to give it some visual variety and rhythm. The end result was an abstract drawing of a couch that felt pretty right for this project to me: there's just something about rectangular boxes, empty and waiting to be filled that cries out "document store!" to me. Plus the form reads really well at all scales from large to extremely small (it would make a great favicon), which was a major advantage for this kind of logo that will get used in a whole smorgasbord of formats.
Then, I was left with just the problem of the text setting remaining. I went for something simple: a basic Century Gothic setting with some slightly enhanced width to the strokes. To match the playfully round shapes of the couch itself -- and to get some color contrast -- I made the text white on the black rounded background. I liked how the 'B' in 'DB' formed its own version of the rounded rectangle, so I left it off on the right side, letting the letter forms make up the difference. The text handling here doesn't quite live up to the couch icon itself, which I was quite happy with. It's the kind of thing I'd like to iterate on in conversation with Katz if he's interested in my logo.
And it looks like he's going to have a fair number of options. When I returned to the original blog post to submit my work, I discovered that two other people had beaten me to the punch: Bryant Cutler put together this very professional (if a little generically vendor-y) submission:
And Patrick Hall put together this admittedly slapdash proposal:
Anyway, it's nice to be in good company trying to help out a great little open source project like Couch DB and I'm excited to see which submission catches Damien's fancy. It's funny to have gotten into this improvised design competition. While I think there might be space for a collaboration between my and Bryant's designs, and the spirit of the whole project is very community barn raising/feel good open source-y, having that competition makes me perversely competitive. Part of me wants to win, dammit! I'll let you know how it turns out.
Tagged: couchdb, logo, open+source, design, json, restPosted by Greg at 1:26 AM | Comments (0)
September 17, 2007
The Poet Laureate of Web 2.0

Bruce Sterling is The Zombies of cyberpunk.
If 80s cyberpunk authors were British Invasion bands then William Gibson and Neal Stephenson would be The Beatles and The Rolling Stones -- big sellers with broadly acknowledged reputations as innovators and geniuses. For a long time, Sterling has been, like The Zombies, mostly an obsession of the completist: a whispered name, rumored to have put out an obscure masterpiece or two and known to have been around when It All Went Down, but usually encountered only through a single hit almost so mainstream as to be invisible. Coining 'cyberpunk' is Sterling's "Time of the Season".
But, recent events are starting to make him look a lot more like The Velvet Underground about whose monumental influence, Brian Eno famously quipped: "Only five thousand people ever bought a Velvet Underground album, but every single one of them started a band."
The world is finally starting to catch up with the issues that have been Sterling's long-standing focus: the danger of environmental devastation and global warming (Heavy Weather), engagement with interactive media and online communities (like The Well), and the effect of digital networks on censorship, intellectual property, and free speech (The Hacker Crackdown). Quietly, in the background, for years, Sterling's played a major role in shaping the thinking of people and organizations who are starting to have a visible influence in these fields: from WorldChanging to Wired Magazine to Cory Doctorow. And these bands whose start he inspired are really starting to get popular.
As a result, Sterling has become the poet laureate of Web 2.0. The last few years, through a series of public speeches in support of his most recent non-fiction book, Shaping Things, he's become the spokesman of the current generation of tech developers. He gives voice to our passions, ambitions, and secret dreads. And, as an elder and wiser statesman, he puts our successes and problems in proper perspective, helping us avoid irrational exuberances and overcome crippling fears.
Sterling's masterpiece in this genre was his SXSW 2006 Keynote, a beautiful, inspiring, frightening, heart-wrenching, hilarious rant that ends with him reading an actual poem aloud and weeping. It's an amazing piece of public oratory, which will serve, I predict, as a better monument to its time than almost any piece of punditry or over-hyped magazine cover. It feels like 2006 the way Jimi Hendrix's Woodstock cover of the Star-Spangled Banner feels like 1969.
Another significant work was the talk he gave last September at the USC Center on Public Diplomacy. At the invitation of Cory Doctorow, Sterling discussed the impact of the changing media environment on authors. His take was terrifically cynical in a very writerly way, deflating all the wide-eyed hopes for the revolutionary changes in media distribution -- like blogs and "commons-based peer production" -- to do anything to improve the basically hopeless conundrum of the long-suffering author: it's very difficult to monetize literature when most of the audience for it won't be born until a generation or two after the author's death.
While Google will yield any number of other great examples, one final talk worth highlighting directly is Sterling's SXSW 2007 Keynote. A great bookend to the optimism, focus, and gravitas of his 2006 performance, this year's keynote had a hungover, cold-light-of-day-after-the-party quality to it. Stretching my earlier musical metaphor past its breaking point, if 2006 felt like the summer of love, this most recent speech felt distinctly post-Altamont: everything that mattered before still does, but it doesn't quite seem to add up in the way it did for that one effervescent moment. It's a pretty perfect capturing of this waning moment of Web 2.0.
Tagged: bruce sterling, sxsw, british invasion, zombies, science fiction, scifi, audio, keynotePosted by Greg at 11:55 AM | Comments (4)





