Saturday, October 30, 2010

Node.js Miniapp:

tl;dr: The app. The code.

I've developed a habit of creating aggressively editorial miniapps which modify sites I like to make them better. It started with BoingBoing Minus Disneyland, a miniapp on Heroku that for a while presented BoingBoing's RSS feed, filtered to exclude any mention of Disneyland (I just don't get why they think Disneyland is interesting).

This was one of my first monthly miniapps in 2009. It had some bugs, and Heroku gem changes killed the app, and I didn't maintain it. Next came Hacker Newspaper, which is Hacker News plus better typography, and minus any story from a few domains I don't want to read, including TechCrunch, Coding Horror, and some other idiot.

Bans come direct from my arbitrary whims. On the day the iPad was announced, I banned any story mentioning it, because there were just too many, and most of them were ridiculously boring. I'll probably also add Zed Shaw to the banlist when I get around to it. It's not actually a priority, though. The goal is superior legibility; the editorial aspect is just icing on the cake.

After Hacker Newspaper, much more recently, came my Minimal GitHub Dashboard. This is a list of the original projects for a given username. I use GitHub every day and I love it, but there's a lot of shit on the home page that I just don't care about.

My Minimal GitHub Dashboard uses Node.js and the excellent GitHub API. My new miniapp,, uses Node.js and the competent but imperfect API. It's almost exactly the same code. The only significant addition was the ability to serve static assets using node-static. gives you a form which returns a shortened URL. This is's core functionality. also has some awesome analytical features I very rarely use, plus the usual slew of graphics urging you to tweet this and Like that on Facebook, way more Ajax than I can handle, and a drawing of a puffer fish which looks like an unfortunate, strangled Muppet.

I don't want to look at this fish. His deformity makes me uncomfortable. The guy's got two fins on one side, and less than one fin on the other. You could even call that other side unfinished.

I don't want to see the graphics urging me to tweet, either. I like simplicity.

Fortunately, I can have simplicity, because supplies an API, even to aggro critical bloggers like myself. Apologies to for my terrible attitude, and big thanks for the API. I should point out, to be fair, that my own Minimal GitHub Dashboard CSS is completely useless on iOS devices. (Update: fixed that.) is 125 lines of code, including the Node.js miniapp, views written in Jade, some (iOS-friendly) CSS, and some simple jQuery. As with the Minimal GitHub Dashboard, I built this in Node.js in one evening, and it didn't take long, but it did take longer than I thought it would.

Wednesday, October 27, 2010

Geek Rap Videos

Very mixed feelings about this phenomenon. Reporting it without comment, criticism, or praise.

Tuesday, October 26, 2010

Neo Geo: Web Page To Test HTML5 Geolocation API

I'm looking into creating a location-aware Web-based game for an upcoming conference, and I need to know what level of resolution iPhone (etc.) geolocation supports. Walk around with an iPhone reloading Neo Geo for a while, and you'll have a ballpark answer; walk around with Neo Geo and a spreadsheet, filling in the details, and you can have an exact answer.

To be clear, I hosted this with WiFi and OS X "Web Sharing," which is actually an Apache server which looks for content in /Library/WebServer/Documents. So drop Neo Geo in there, turn on Web Sharing, and Bob's your uncle. Or, put it on your Slicehost (etc.) and you can ping it from all over town. (I was hoping to see long/lat vary just when I walked around my living room, but this did not transpire.)

Update: now hosted at Check it with your iPhone to find out your latitude and longitude.

Pictures Of Altitude And Solitude

Firesheep: Must-Read And Must-Implement

As soon as anyone on the network visits an insecure website known to Firesheep, their name and photo will be displayed...Double-click on someone, and you're instantly logged in as them...

Websites have a responsibility to protect the people who depend on their services. They've been ignoring this responsibility for too long, and it's time for everyone to demand a more secure web. My hope is that Firesheep will help the users win.

Sunday, October 24, 2010

Tech Bloggers Be Lynchin A [Person]

Malcolm Gladwell said that Twitter was no Civil Rights Movement. While this seems like the most reasonable thing anybody has ever written about the internet, Cory Doctorow called it "silly."

The World According To Tech Bloggers



Doctorow was not alone in criticizing Gladwell's post, nor was he alone in disdaining Gladwell's argument as unworthy of serious criticism. Offended, apparently, by the implication that Michael Arrington was no Malcolm X, tech bloggers like Anil Dash and Chris Dixon have been raining shallow condescension on Gladwell for a month.

Dixon, who appears to be a a white millionaire with an Ivy League background, said:

I don’t know if Malcolm Gladwell is right when he claims “the revolution will not be tweeted,” but I can say with certainty that the Twitter he describes is not the Twitter I know...I’d love to engage in a debate with smart people like Gladwell about the impact of the social web on culture, politics, activism and so on...But it’s hard for me to take them seriously when they don’t seem to take their subject matter seriously.

Dash said:

I don't come to refute Gladwell's strawman argument...The traditional method sit-in and picket-in-the-streets form of protest is clearly a failure online.

Dash goes on to argue that people who build stuff are the true revolutionaries, and describes the maker "movement" -- a movement which is, so far as I can tell, nothing but a brand which the brilliant Mark Frauenfelder made up to sell a wonderful magazine. Dash calls it a proud Web-era answer to the Civil Rights Movement.

If we put the making movement in the context of other social and political movements, it's had amazing success. In city after city, year after year, tens of thousands of people pay money to show up and learn about taking control of their media, learning, consumption and communications. In contrast to groups like the Tea Party, the crowd at Maker Faire is diverse, includes children and adults of all ages, and never finds itself in conflict with other groups based on identity or politics.

It's unusual to measure the success of a social movement by the number of customers it converts, but Dash does not clarify this, nor his unusual concept of a revolutionary movement which never finds itself in political conflict with any other group. While Dash's post reads like the kind of unprovoked, incoherent outburst you might expect from an elderly man with Alzheimer's, Doctorow said:

Anil Dash hits one so far out of the park it attains orbit...It's all must-read stuff, but here's the bit that made me want to stand up and salute.

Not everyone who uses the language of revolution is doing anything revolutionary at all. For example, Glenn Beck recently held a Tea Party rally on the anniversary of Martin Luther King's "We Have A Dream" speech, and described it as "reclaiming" the Civil Rights Movement.

The logic in Dash's "must-read" blog post almost sank to the plane of Glenn Beck's logic, and although its conclusions were less destructive than Beck's, it's hard to see them as entirely non-destructive. To put the Civil Rights Movement on a level footing with a bunch of nerds connecting their coffee machines to the Twitter API in their spare time seems to erode the Civil Rights Movement's dignity, at the very least.

The World According To Tech Bloggers

These two things are equivalent:

Hacks are cool, for sure, but if the future of our society depends on them, we might be completely fucked. Social software comes in incredibly handy for pimps, hookers, thieves, creative thieves, abusive ex-husbands, and stalkers. I think seeing technology as a what is inaccurate and irresponsible; technology is a how.

It's not that surprising to find irreponsible politics in an industry with a history of irresponsible design decisions. In my opinion, there's nothing wrong with tech bloggers being too interested in business to have anything worthwhile to say about politics, but if that's where you're coming from, you might as well own up to the fact; and anyone who criticizes Gladwell's argument really should counter its terrific depth and historical background with similarly well-reasoned thought.

Friday, October 22, 2010

iPad Film Experiment

More Live Events Based On TV

A prediction I made, which this book casts light on, came true for the third time.

Friday, October 15, 2010

Indestructible Engineering

An experiment conducted by British TV show Top Gear in 2006 offers one explanation [for the incredible popularity of the Toyota Hilux with warriors worldwide, including American forces]. The show’s producers bought an 18-year-old Hilux diesel with 190,000 miles on the odometer for $1,500. They then crashed it into a tree, submerged it in the ocean for five hours, dropped it from about 10 feet, tried to crush it under an RV, drove it through a portable building, hit it with a wrecking ball, and set it on fire. Finally they placed it on top of a 240-foot tower block that was then destroyed in a controlled demolition. When they dug it out of the rubble, all it took to get it running again was hammers, wrenches, and WD-40. They didn’t even need spare parts.

Facebook's Real Privacy Threat: Your Friends

Here's how you can make your profile on Facebook perfectly secure. First, unfriend all the idiots you knew in high school. Second, unfriend all your friends from high school too. Next everybody you used to go to raves with. Next unfriend that really hot girl who dumped you because she thought you were an insane "genious" and who still hasn't figured out how to spell it. (Do I sound bitter?) Then it's time to unfriend all your relatives.

Continue unfriending until you've unfriended everybody who doesn't work with computers at a very high level of literacy on a daily basis. Then, of those remaining friends, unfriend everybody who knows they should floss, but doesn't do it, or who knows they should go to the gym, but doesn't do it, because chances are that they know they should be using strong passwords too, and they aren't doing it.

This image totally breaks the flow of my blog post, but I had to include it, because what the fucking hell is going on here? Why is this monkey flossing?


Imagine you're a black-hat hacker. You might want to target a specific individual to determine embarassing things about them for the sake of malicious social engineering, such as extortion and/or blackmail. You might want to sell marketing and demographic data to unscrupulous corporations and/or organized crime. (Tangent: is the difference between unscrupulous corporations and organized crime qualitative or quantitative? Read McMafia.)

Anyway, you're a black hat, and you're up to no good. You hit Facebook. Like a street thug in a city with a lot of street traffic, or a cheetah facing a gigantic herd of wildebeest, you have a lot of options to choose from, and you focus on easy targets for the sake of convenience and time management.

What do you do? The smart place to start is with a simple dictionary attack of common words. Try it, and if it doesn't work, simply move on to the next target. Eventual access is more or less guaranteed. Most people don't use strong passwords.

Bruce Schneier wrote:

passwords have outlived their usefulness as a serious security device. Over the years, password crackers have been getting faster and faster. Current commercial products can test tens -- even hundreds -- of millions of passwords per second. At the same time, there's a maximum complexity to the passwords average people are willing to memorize (.pdf [link to research]). Those lines crossed years ago, and typical real-world passwords are now software-guessable. AccessData's Password Recovery Toolkit would have been able to crack 23 percent of the [34,000] MySpace passwords in 30 minutes, 55 percent in 8 hours.

Now consider that the future holds a lot of parallel processing, peer-to-peer massively parallel computation, and virtual machines.

Even if Facebook fixes its issues with technical incompetence and suddenly (or not-so-suddenly) decides to take privacy seriously, its security model is still so stupidly flawed that all Facebook data should be considered effectively public.

Good news for anybody who engages in identity theft. Bad news for everybody else. All the Silicon Valley optimism could turn out to be correct, but if it turns out to be another extended sprint of irrational exuberance, Facebook could face (and be booked with) the biggest class-action lawsuit in American history.

Thursday, October 14, 2010

Ray Kurzweil Is Smoking Banana Peels

Update: Annalee Newitz blogged about this today too (which is weird because I wrote this days ago and put it in scheduled publish mode).

Tuesday, October 12, 2010

(Node) Miniapp: Minimal GitHub Dashboard

(Update: this is dead now, due to API changes. Fun experiment though.)

After watching a great little screencast, I wanted to experiment with Node.js, so I used it to build a minimal GitHub dashboard.

I get distracted easily, so I've wanted (for probably a year at least) to be able to get a page that only shows me my personal GitHub repos, not counting other people's repos I'm also a member of, or forks of other people's projects. That's what this does, and it works for any valid GitHub username. The url looks like this:

If you want to see a different user's personal original repos, all you have to do is substitute their username. I suppose it's a bit antisocial, but it's also very streamlined and convenient. More social features are on the roadmap, theoretically, although in practice I usually just build stuff and move on. Patches welcome; please do investigate. The code is on GitHub, of course, and in addition to Node.js, also uses a nice REST client library called Restler, for the awesome GitHub API, and a lovely haml-esque templating language called Jade.

ln -s: which one's which

Posted because I can never find this via Google with less than three clicks.

ln -s foo bar

creates a link named bar which points to foo.

Update: Several people have pointed out that it works like cp and mv.

Monday, October 11, 2010

Upcoming Experiment: Money Management System

Money management fail has caused me problems in the past, most recently costing me the independence that my entrepreneurial experiments had won me. So I picked up a book on the topic from Amazon with my latest affiliate gift card (I let Amazon pay me with gift cards because I spend so much on books anyway). The book is very badly written, so much so that I couldn't stand to even read it, but I went through it with a highlighter, and in the process discovered a useful money management system that I'm going to experiment with soon. (I won't have time to fully implement it for a few days, as it requires creating several new categorized bank accounts.)

I can happily recommend buying the book, because the content's good, even though the writing is awful. There's a much more readable overview of the system here. With apologies to the author of the book, I recommend the overview more, unless the combination of good personal finance advice and bad writing entertains you for its own sake. In that case, you should check out this guy, who says of making good financial decisions that "it's only 20% head knowledge."

Saturday, October 9, 2010

Two Nations In One State

Nearly everything I thought I knew about American politics was wrong.

A few years ago, I read The Creative Class, by Richard Florida, which documents how artists, programmers, writers, and others who create wealth are clustering in specific cities and fleeing others. Florida's excellent book also documents how this population shift results in greater wealth for cities favored by the creative class, and economic fail for the cities they abandon; and how this creative class typically favors liberal politics.

So I should have seen this coming, but I didn't. If specific cities are typically better educated, with a higher average income, and more liberal, there must be other cities which are typically less well-educated, with a lower average income, and less liberal.

The Big Sort, by Bill Bishop, shows how Republicans and Democrats have been separating geographically since the 1970s, and further traces this phenomenon to the growing polarization of American politics. (In 2006, the Senate broke its previous record for polarization, which was set two years after the end of the Civil War.) Bishop provides ample evidence that these two trends are closely related, and very probably causally related, both through historical analysis of the voting record, and by delving into psychological and sociological research about the polarizing effects of like-minded groups.

One reason Democrats and Republicans so rarely agree on anything any more is that the social dynamics of like-minded groups dramatically encourage polarization; but another is that the two parties increasingly represent entirely distinct nations. When Sarah Palin referred to rural America as "real America," she echoed and confirmed a growing Republican identification with, and habitation of, exurban areas. In Red America, most people live outside of the city, education is less important, incomes are lower on average, nobody doubts the justice of the invasion of Iraq, and Bush had a terrific approval rating. In Blue America, it's the reverse.

Yes We Did, by Rahaf Harfoush, tells the story of the Obama campaign, but leaves out some very important historical context, which The Big Sort provides. Although the technologies and systems of the Obama campaign came straight from social software, with a founder of Facebook leading the effort, the strategies and tactics came straight from the 2004 Bush campaign, which had in turn adopted them from tactics which Evangelical Christianity developed in India and Asia, and later re-used with phenomenal success in the United States.

The tactics rely on gathering groups of like-minded people to encourage one another to vote. Despite Obama's bipartisan rhetoric, he ran (and won) an entirely partisan campaign. It's unlikely he would have won any other way; The Big Sort contains countless stories of moderates losing seats to partisans in recent years, as, indeed, do the headlines. Moderates not only lose seats, they are disappearing entirely as a political constituency. The Big Sort gives you the statistics, so I'll just give you the short version: both the absolute number of moderates, and the percentage of moderates in any particular election, have been shrinking rapidly since the 1970s.

As Public Enemy would say, the future holds nothing else but confrontation.

At the Federal level, this doesn't say good things for our democracy. If like-minded group effects continue making politics more and more partisan, elections could get more and more vituperative, laws more and more controversial, until the common ground disintegrates entirely. However, at the local level, the transformation from heterogenous to homogenous communities means that political unity is very easy to achieve, and consequently you have liberal states decriminalizing marijuana while conservative ones pass laws like the Texas School Children's Religious Liberty Act.

The same forces that debilitate government at the Federal level make it dynamic and innovative at the local level; whether this is a good thing or a bad thing remains to be seen. Although the ability to create local spaces which reflect how people want to live sounds terrific, the larger-scale repercussions are unnerving, to say the least, for a nation with a potent, sizeable military and intense involvement in foreign affairs all over the planet. If you're a smaller country watching a big country with a lot of nuclear bombs alternate wildly between polar extremes, it could make you nervous. The Big Sort also cites research which shows a similarly divided situation in Germany immediately preceding the rise of the Nazis. (Probably fearing Godwin's Law, the book only mentions the research in a footnote.)

The Big Sort made me rethink everything about politics. I'm not done rethinking and it'll probably take me quite some time. I can't recommend this book strongly enough. I'd even go so far as to say that forming political opinions without reading it is reckless.

Friday, October 8, 2010

Sale's Over!

All prices are back to normal. Just posting this for those of you reading via RSS; anyone visiting via the Web can see that I've pulled down the blog post.

(OK, I'm lying, the prices aren't actually fixed yet, but the links are down. Prices will be restored to normal later this morning. Got a lot to do.)

Wednesday, October 6, 2010

Current Status Of Entrepreneurial Experiments (Archaeopteryx Goes To Y Combinator? And Don't Read This If You Have Epilepsy)

As ongoing readers may have noticed, I've run into a bit of a snag with my entrepreneurial experiments. The snag is twofold: cash flow, and writer's block. First, my recent video on weight loss tanked, making very little money; next, my attempt at a class on AI and machine learning failed right after. Over the past few days, I've been talking about creating and releasing a new video on how to handle office politics, but when I sat down to work on it, I found myself completely out of ideas. Pushing myself to work on it anyway, I somehow ended up with a fascinating presentation about postmodern art, comic books, anthropology, comparative religion, and Boba Fett, which I do hope to release here on my blog, but which I haven't figured out any way to monetize. (I also haven't been able to figure out how I even got from politics to postmodernism in the first place, but that's another story.)

SO. I've signed up for a straightforward contract locally, which looks like a terrible defeat, if this is the end of my entrepreneurial experiments, or which looks like a relatively painless snag, if this is the middle of my entrepreneurial experiments. For obvious reasons, I'm choosing to take the long view. At this contract, it appears I'll be writing JavaScript for a fashion e-commerce site in downtown Los Angeles, not far from the fashion district. The company appears to be staffed with both the standard assortment of geeks and an unusual abundance of fashionably dressed young women.

ok, maybe not this young, but finding images on ffffound can be a tiresome pain, so I went with the first one that worked

Two related announcements.

First, I'm going to do something crazy for my October entrepreneurial experiment. I'm going to submit an application to Y Combinator. I'm looking for co-conspirators. If you're interested, you should ping me privately, i.e., via e-mail. You should be somebody I know personally, with skillz and the ability to commit to a project, if one happens. You should also realize that I have several areas of philosophical disagreement with the VC world, so I'm mostly just submitting this application for the hell of it. You can download the application I've written so far right here. Keep in mind that the final submission will of course be edited and revised. Also keep in mind that the last time I recruited people for a project via my blog, I got more e-mails than I could even track. If I'm slow in responding, it won't be anything personal.

Second, I'm putting all my products on sale tomorrow afternoon. My videos on screencasting, internet marketing, programmer careers, and time management, as well as my excellent mp3s on hypnosis and visualization. Stay tuned for the sale, because the prices are going to be generous. To put it another way, this shit is going to be priced to move.

Update: I've heard from at least one epileptic who read this without any problems. Anecdotal Evidence 1, Superstitious Fears Of Pokemon Effect 0.

Transmedia Video, From BoingBoing

Interesting context, in BoingBoing original post

a very entertaining, less prestigious variation

Motorcycle Artist ACID (aka Scott Chester)

Sunday, October 3, 2010

How I Cured An Overly Political Corporate Atmosphere With Social Software (Despite Having No Managerial Authority Whatsoever)

Once upon a time, many moons ago, I worked at a business where the web design group were frequently at odds with the customer service group. The customer service group would edit code on the live web server, breaking code all over the place; when they asked for changes, the web design group was in no hurry to help them. This is how I heard it, anyway, and I was in the web design group. I'm pretty sure that I'd have heard it a different way around if I'd been a Hatfield instead of a McCoy.

is you a Hatfield or a McCoy?

We had three help systems - a private system for the customer service people, a public set of help pages, and a half-public, half-private contextual help system, which provided content from the public set of help pages, but only content that was relevant to whichever page the user happened to be viewing or using at the time. In fact all systems viewed essentially the same content, which a publishing system formatted.

My job was to maintain this publishing system. The code was not good. It looked like a stoned engineer had written deliberately overcomplicated Perl, in an effort to passive-aggressively cordon off the indecipherable territory of his code, and that in fact is probably what happened. I met the guy who wrote it, and I'm pretty sure he was stoned during some of our conversations about it at work.

Anyway, conflict revolved around this system, and in the process of maintaining it and keeping it running, I began adding a few new features as well. Around that time, someone came to me. I didn't think of it this way at the time, but he basically wanted to turn this system into a fortress where he could hide our HTML from the customer service people. The customer service people wanted the text on the web to be accurate and up to the minute, whenever the site changed; this was in the days before CSS, so sometimes when they edited help text, they broke both the markup and the design in completely irretrievable ways, making the site look fundamentally unprofessional (and this was a site which saw a ton of business, in a financial field). But when the web design managers complained, the customer service group told them that having out-of-date text on the live Web looked unprofessional too.

I told my manager that I could do what he was asking, but in order to do it, I'd need to rewrite the convoluted Perl and turn it into something object-oriented. Being young and fairly naive, I wanted to turn it into object-oriented Perl. He told me "go ahead," and I set about building him his fortress.

I was new to objects, and of course the object-oriented Perl required a lot more manual lifting than languages like Python or Ruby - especially in the days before Moose - but it wasn't too long before I had the core of it redone in objects, and as I moved it from a legacy tangle to an OO system, I came to learn how it worked. You know this feeling if you've ever translated something messy into something clean and object-oriented; you discover the simplicity in the solution and end up with a much simpler design.

At this point, an idea occurred to me. I realized that the simpler design (which revolved around Pages and Templates) was simple enough that I could use it as a tiny web framework in a Perl CGI script, so I built a tiny app with it, dropped it into my home directory on one of the dev machines (we worked via Telnet, then, on external Solaris boxes) and told my manager to have a look. I suggested to my manager that we could use this simple web framework to set up a web interface for the customer service group, which they would massively prefer to making edits, since they didn't know how to use Unix well at all.

I know this joke is years out of date, but I was just reading about this campaign the other day

Soon, I added version control. This killed two birds with one stone. First, by building version control into the web interface, I could make it impossible for the customer service group to commit anything to version control without also writing a comment about it. Second, the existing publish path occurred on servers where the customer service group had logins, and version control was not installed. At a company doing a lot of business in finance, fiercely bearded sysadmins guarded their privileges as jealously as savage warlords guarding the only pass through a snowy mountain range. So the only way I could add version control was by moving the HTML in question out of hostile territory and onto the more traditional publish path for our group, which occurred on different servers controlled by different sysadmins who were equally bearded, but who had already given us access. (And, more to the point, who weren't about to give out access like jellybeans to any random customer service person who wandered onto their mountain.)

no, thou canst not hath root

I kept building new features, while turning down feature ideas that I didn't like, and after a few months, I'd built a CMS around my own simple web framework before I ever knew that either CMSes or web frameworks existed. The CMS defined a very specific workflow, with review for proposed changes, approval permissions, and a regular publishing schedule, all of which defined a process that made life better for everybody. I continued adding features, usually ones which benefitted my manager, but several for the customer service team as well, partly to be fair and partly because I wanted them to use it. Like Facebook bringing your social network to its advertisers, I was to some extent building something to draw one group of people in for the benefit of somebody else. As sinister as that sounds, the system satisfied both groups. The bickering continued a little, but it was half-hearted, mostly out of habit, and it died away quite soon.

Peace was restored, and summer was warm in the kingdom.

I brag that I solved this issue without managerial authority, but it's possible that having any managerial authority would have been a disadvantage. If I'd said to my co-workers, "Hi, I'm 23 years old, I'm going to design a new business process that makes sense, because you people don't know what you're doing," I'd probably have either gotten myself fired, or gotten myself into a large number of unpleasant conversations that would have all taken a very long time. But because I built a new system, it was easy for me to reshape the business process, because any time I heard an idea I thought was a bad idea, I would just lie and claim that it was impossible. It was likewise easy to say "but you could do this instead," and use the resulting feature discussion as a diplomatic negotiation between the two warring states.

This reminds me of a tweet which annoyed me:

A lot of other people liked it:

However, the contempt in this tweet strikes me as naïve. The win in the story I've just told was not due to my tech skills. The tech skills were absolutely necessary, but the win came from using feature discussions to find out how to redesign a business process. The discussions and the process made the real difference. Likewise, it's not necessarily easy to satisfy your users by rejecting every feature request which annoys you. Try it and see how they like it. The win there came from experience organizing and managing people on extra-curricular activities at my high school (and, actually, my church). I chose what to reject based on whether or not I thought it would help them get along.

Although great tech skills were involved - people afterwards began calling me a "Perl guru," and at the time I was young enough to believe it - it wouldn't have meant much without the so-called "soft skills" to back it up. So I totally disagree with this tweet. At that company, I earned an upper middle-class living combining soft skills and tech skills. Valorizing one type of skills and scorning another is less practical than acknowledging the usefulness of both.

Anyway, long story short, when people tell you the features they want, they tell you what it is they want to do; if what they want to do is dysfunctional, build something else.

Related: How A Great Web Team Fired Their Utterly Useless Manager

Stay tuned for the video.

Saturday, October 2, 2010

Three Great Books About Politics (And The Less Political Books They Go Well With)

Yes We Did by Rahaf Harfoush explores how the Obama campaign used social software to win the Presidency. Anybody who works in social software can learn a lot from this in-depth case study of a very successful effort which was led by one of the founders of Facebook. The broad survey, general principles, and inspired insight (and perhaps even the hand-wave-y futurism) in Clay Shirky's Here Comes Everybody make a great foundation for understanding the in-the-trenches specificity of Faroush's war stories from the frontlines of the Obama campaign's New Media team.

McMafia by Misha Glenny highlights the huge and growing role of organized crime in international politics. From the rebirth and transnational expansion which the KGB of Soviet Russia experienced when it became the Russian mob, to the staggering ways in which American attempts to prevent drug production in Colombia and Afghanistan actually made criminals there both richer and more politically significant, dramatic stories provide a fierce punch, while the thoroughness, depth, and compassion of the reporting balances it out. McMafia also goes disturbingly well with William Gibson's new novel Zero History; both books address the difference between the society we pretend we still live in, and the successor society that took root in its ruins.

The Prince, by Machiavelli, lays out a pragmatic, ruthless, and many would even say cold-blooded and/or cynical perspective on political power. This is not a book about how to attain peace; it's more about who to kill, when, and how. One of the classics of Western literature, it's only around 100 pages; like the Tao Te Ching or Economics In One Lesson, it's the type of book which you'll probably read very quickly, but which might nonetheless linger in your thoughts for years afterwards. However, the book to pair The Prince with is Victor Hugo's Les Misérables, a novel of over 1000 pages which does not present any explicit counterargument, necessarily, but operates from a much more open-hearted place. (Too much cynicism is bad for you.)

These aren't the only ones out there - I'm also a huge fan of Thomas Frank, and used to read his zine The Baffler, based out of the University of Chicago, before he ever published his first book - but I'll say that these three (or six, actually) are a trio of great main courses paired with very complementary wines, so to speak. I highly recommend everything on this menu.

Amazing Interactive Multimedia Epic Which Balances On The Edge Of Logic And Madness Like The Guy From "Man On A Wire" Balancing On His Tightrope

It's kind of like LOST meets Lost Pig (And Place Under Ground), with a strong dose of Scott Pilgrim and overwhelming amounts of internets. It began on April 13, 2009 and seems to have seen updates daily ever since. The map gives you some sense of its insane, epic scale. As noted on Reddit, its author is the only webcomic creator who apologizes for updating too often.

I hope Scott McCloud sees this, because I've never seen anything embrace the potential of interactive storytelling like this does. It's half comic, half movie, and half video game, and more than half crazy. In LOST the narrative rides an edge of explaining stuff you saw earlier vs. raising new questions; this webcomic/game/cartoon does the same thing amazingly well, and for an incredibly long time, almost like an opera singer lengthening a high note just to show off their breath control.

Start here.

Friday, October 1, 2010

How A Great Web Team Fired Their Utterly Useless Manager

Once upon a time in the land of free coffee every morning and free sushi on deployment night, between the suburban drear of Mountain View and the lush affluence of Palo Alto's University Ave., there was a fun little company with a fantastic little problem on its hands - growing too fast, and making too much money (while everybody was else was growing too fast and taking on too much investment).

like this, but a whole table full

At this company, I worked for one of the best managers I'd ever had. We'll call him the Great One. The Great One created a wonderful sense of cameraderie in his group, making us play theater games and give each other presentations at lunchtime, every Friday. A big part of managing is creating a cohesive sense of community in your direct reports, where everybody wants to do great work because they feel everybody else is depending on them. This manager was great at that, but he was great at a lot of other elements of managing, and soon his higher-ups took him away from us for mysterious new projects.

As his replacement we got a manager I'll refer to as the Fucking Monkey.

The Fucking Monkey lacked the Great One's greatness. Where we had slaved long hard hours for the Great One, barely even noticing the added load, we now began to begrudge the Fucking Monkey any work at all, even between the hours of 9 and 5. The Fucking Monkey was fanatical about a half-implemented, broken version of the Rational Rose management system, designed for pre-Web software development models and hopelessly inadequate for our purposes. As far as I could tell, he never listened to any of us, on any topic. He made us work harder for less results, and with less rewards. He said sexist things to the female members of our team. And one day, he made Little Kamana cry.

Little Kamana (not her real name) was an Indian contractor, five foot tall at the absolute maximum, who dressed (with zero irony) like a Catholic school girl, failed to understand a wide variety of offensive jokes, and seemed to almost embody innocence. She was like our mascot.

Innocent Eyes pic by mashroor on flickr. Little Kamana was older than this, obviously, but it's about the right feel.

By the time the Fucking Monkey made Little Kamana cry, almost the entire team had already seen an interesting pair of documents. One document was the resumé that the Fucking Monkey had used to get his job managing us. The other document was his earlier resumé, which one of us had discovered on GeoCities or somewhere equally tacky. The two resumés contradicted each other on numerous points, but contained just barely enough overlap in content to make it clear they referred to the same guy.

I was not the compulsive researcher I am today, and it was not I who found this resumé. My temper was even worse in those days, however, and I was already demanding in private that we get the guy fired. But when the Fucking Monkey made Little Kamana cry, angry mutterings at random lunches turned into a giant team meeting at a local restaurant with every member of the team present - except for the Fucking Monkey, our alleged leader. My position at the meeting was that we either fire the guy, or kill him.

I was mad like Knuckle Bear

Cooler heads than mine prevailed. The dominant opinions were: fire him right away, fire him later, or hide and hope he goes away. We opted for a middle course: fire him slowly. Then we started to look into how we could do that. The answer turned out to be easy: we went over his head.

Two members of our team had worked closely with the VP of Marketing on a ground-breaking new interactive project. There were lots of those in those days, but I was lucky enough to work with some really smart people, and they'd done good work. Consequently, these two guys were in a position to initiate a private conversation with this VP, and to expect him to listen. This is what they did - and they brought the unmatching pair of resumés into the ensuing conversation. They said things like, "listen, we need to talk to you about something," and rather than my foaming-at-the-mouth rage, brought an attitude of quiet concern - and serious evidence that the Fucking Monkey was, indeed, a fucking monkey.

Soon thereafter, the Fucking Monkey hit the road.

We wouldn't have been able to do it if the guy hadn't shot off sexist comments left and right, made one of us cry, and faked his resumé to get the job - but if it weren't for stuff like that, he might not have been so awful, and we might not have even needed to take such harsh measures in the first place. When things are that bad, all you really need is some evidence and a sympathetic ear higher up the org chart. But the real lesson to learn here is about building a team. The Great One did such a good job putting the team together that I don't think any of us even considered quitting - not even Little Kamana - and there's an art form to that.

Coming up soon: how I solved a corporate politics problem with software, by building a Web app, and a video on how to avoid corporate politics where possible, and win at them when you have to.