Saturday, February 28, 2009

Statistical Anthropology: Primates And Facebook

I got so annoyed at the recent decline in quality on Hacker News that I deleted my account. Then I read something interesting, wrote a gigantic comment about it, and discovered I couldn't log in. Whoops.

Here's the link.

Here's the comment:

I think the flaws in the methodology here are pretty interesting. I have 187 friends on Facebook; a ton of these are complete strangers who know of me from the Ruby community, or people who I met once or twice through that community. The final paragraph in the post says that these are all people I monitor passively; this is correct, but somewhat misleading. These are all people who brought themselves to my attention.

It's not a very interesting distinction in my case, but look at @THE_REAL_SHAQ on Twitter. Compare the number of people on Twitter who passively monitor Shaquille O'Neal to the numer of people Shaquille O'Neal passively monitors. It's 405 (monitored) to 193,250 (monitoring). I have a similar but much less dramatic imbalance: following 189, followed by 1,058.

btw, I know for a fact that the 189 I'm following on Twitter are different from the 187 I'm "friends" with on Facebook. A few people I'm friends with on Facebook are people who know me from high school, or claim to, yet I have absolutely no idea who they are. I'm not following them on Twitter. so I know those numbers represent different groups of people, but how different, that I don't know.

anyway, this follower/following imbalance on Twitter is much more real than what you would see on Facebook. if Shaq is there, he's probably got 193,250 "friends", most of whom he will never met or even hear of. You see this all the time on Myspace.

this research is definitely interesting, but the methodology is too naive to draw many conclusions from just yet. given the huge volume of data available on the Web, though, stats-oriented anthropology is likely to become a huge field. definitely looking forward to more of this research.

by the way, I kind of sound like an arrogant douche in this. sorry. I always act like a dick when I post on Hacker News, because it annoys me so much. that's part of why I deleted the account in the first place.

Thursday, February 26, 2009

February Miniapp: Call My Reps

You give it your address; it gives you names and phone numbers for the people who represent you in Congress.

I wrote it while watching Silence of the Lambs and debugging issues with work code on a production server. It's the simplest thing in the world; it just leverages the Sunlight API.

More complicated apps exist, and they look better, but all of them are too complicated in my point of view, and some of them are just fucking stupid as hell. There's one I can't find at the moment where you set up a script you want people to say; they give the Web app their phone number and address, and it automatically calls up their representatives on the phone, then patches the user through to one of their reps, then the user reads the script, and when they're done they press # instead of hanging up and the Web app automatically calls the next Congressperson and patches them through again. You don't have to be psychic to predict that many users forget all about # and hang up halfway through just out of habit, because that's what you do when you use a phone; it's basically the weirdest, most overcomplicated nonsense you'll ever see.

With Call My Reps I switched from Heroku to Slicehost, from Rails to Sinatra, from HTML to Haml, and from minimal graphic design to none at all. Setting up the slice was way easier than I thought it would be; deployment was a pain in the ass; all the actual code was easy. Like sssstolen!, I have no idea if anybody else will use this app at all, but I know that I'll use it all the time. Every single time I hear about something I need to contact my representatives about, I get sent to one of these overcomplicated nonsense sites when all I need is a phone number. I needed something Google-simple. Now I have it. Problem solved.

I actually wrote this in January to learn Haml. Because of some serious health issues this month, I didn't have time to build a real miniapp for February, so I deployed this one instead. Having gone this far, though, I figure I might as well go whole-hog later on at some point. That would involve moving it to its own domain, setting up design, and coming up with some improved, faster system for geocoding Congressional districts, so that data could be cached rather than obtained via HTTP in real-time, which is as slow as a retarded sloth in a coma.

The scaling problem is actually an interesting problem; I've seen some neat ideas it might be useful to explore. It'd be nice to make it a Google Maps mashup. Who knows, anything could happen. Most probably I'll just move it to a subdomain, use it myself when I need it, and never touch the code again because I'm busy developing the next thing.

Tuesday, February 24, 2009


Thursday, February 19, 2009

The Brink Of The Business Domain

Yehuda Katz gave an interesting presentation at LA Ruby tonight, detailing the history of Rails and his goals for the Rails/Merb integration. Weirdly not a word about the history of Merb, but the history of Rails is interesting all the same. He quoted DHH as saying several years ago that the deciding rule for a feature's inclusion in the framework is if the feature sits at the brink of the business domain. This is the rationale for not creating a general-purpose form generator, for example; it's too implementation-specific.

Yehuda came back to this theme later on in the Q&A, but he came back to it only implicitly - I don't think he ever realized he was doing it. He got on the subject of Rack, and mentioned that Rack was much more awesome than anybody realized. So I asked him why. He said Rack is sufficiently modular that it is almost recursive. His goal for Rails 4 and Rack is that you will be able to put an app in your app.

I brought up the inevitable "sup dawg" meme but he just sneered at me.

Most people focus on Rails 3, but take a second to think about this. You may have seen a blog post saying git is the next Unix. Yehuda described Rack as "very Unixy" because it allows you to pipe apps into apps and connect apps to apps. That could be more next-Unix than git.

Consulting companies like ENTP, Unspace, Og, Pivotal, and Hashrocket, which build similar functionality for multiple companies, currently go through all kinds of monkey-patching backflips to factor out common functionality into reusable components. The moment that becomes effortless, you open up an entire new category of reusable component. It's like a business-level equivalent of Rails plugins. Integrating Rack in this manner pushes Ruby Web framework hacking to the brink of the business domain.

Future Ruby

Toronto: July 9-12th, 2009

ENTP Ruby/Rails Training: Jeremy McAnally, David Black, Rick Olson

Many people suck at Ruby. Many people think Ruby is Python with lax whitespace, or PHP with better OO. Ruby uses a lot of idioms you're familiar with, which is very deliberate. It's supposed to be very easy to get started on. But it also incorporates powerful advanced techniques from Lisp, Smalltalk, and CLU. Your first five minutes with Ruby will be easy, but don't expect to uncover its hidden power if you're just writing code the way you always have. Rails makes it easy to get started too, but there's a huge difference between cobbling together some scaffolding and scaling a real Rails app.

When the economy gets tough, you want to be one of the people who really knows Ruby. The best way to do that is to get training from people who know Ruby inside-out. For instance: Dr. David Black, long-time Rubyist, author of "Ruby For Rails", and RubyConf organizer; Jeremy McAnally, who wrote "The Humble Little Ruby Book" and publishes "The Rubyist", whose programmatic templates project recently merged into Rails, and who Ruby Inside named Top Hitter of 2008; and Rick Olson, Rails core team member and creator of all those essential Rails plugins like attachment_fu and restful_authentication.

Jeremy and David will lead a three-day Ruby course on April 1st-3rd, 2009 in Atlanta, Georgia at the Georgia Tech Hotel & Conference Center. Rick will be on hand to pair program with you and answer questions one-on-one. Want to become a Rails dev who knows exactly what they're talking about? Ask people whose code ships as part of Rails. Want cutting-edge skills and the edge in your next job interview? Pair program with a prolific open source developer. Want to understand Ruby's OO? Ask David Black. David's book contains an explanation of Ruby's object model that is (in our opinion) the single best, simplest, most coherent, and most comprehensive explanation out there.

You can get better training in Ruby, if you fly to Japan and kidnap Matz. However, this is illegal, plus mean, so we don't recommend it. Plus, Japanese etiquette is complicated even under normal circumstances, and there's really no way to politely kidnap someone.

We're currently testing out our new curriculum, so you'll get this cheap. We're including ample time for hacking and individualized questions. This is not the one-size-fits-all approach you might get elsewhere. We're going to make sure you learn Ruby, and learn it better than you would anywhere else.

People Say Yo Humpty, You're Really Funny-Looking

Republican National Committee chair Michael Steele, in an interview with the Washington Times, says he's planning an "off the hook" public relations offensive to attract young blacks and Hispanic voters.

"We want to convey that the modern-day GOP looks like the conservative party that stands on principles. But we want to apply them to urban-surburban hip-hop settings."

Asked if this venture will be cutting-edge, Steele replied, "I don't do 'cutting-edge.' That's what Democrats are doing. We're going beyond cutting-edge."

Beyond cutting-edge.

Comments Are Back

I'm re-enabling comments on my blog. I won't take any measure to filter out spam, unless there's a zero-effort way to do it on Blogger. I may not read any comment; I may not reply to any comment. But I'm bringing comments back anyway.

Here's why. Chromatic, a pillar of the Perl community who I had a great deal of respect for until the other day, posted this and said these things about his post. I used to think blocking comments would block me from reading stupid responses to my posts. I figured people who only write comments say less interesting things than people who put the time and effort in to write a whole blog post. I was wrong about that.

What I also found is that talking sense into angry people is a lot less fun than pissing them off on purpose for entertainment. This means that inaccurate, foolish, aggressive, or stupid comments, all of which used to bother me, are now fun. Correcting bad comments or arguing with them stressed me out. Baiting people deliberately entertains me, and let's face it, it's more respect than these conversations deserve.

In this incident I responded to a flawed argument in one of Obie's RMM posts, where Obie complained that the Rails community has a problem with low standards of quality. I disputed this and said Ruby has one of the best reputations out there for TDD obsession. Chromatic attacked this, saying that Ruby lacks a test suite for its language builds, but Perl doesn't lack it, and blah blah blah. He seemed very angry, with some kind of Perl vs. Ruby axe to grind, but he's raising an irrelevant tangent that doesn't concern me. Language wars are for idiots. The only correct answer to "which language?" is "all of them, but mostly the one I like best." Telling people what language they should use is like telling them what pants they should wear.

More to the point: it had nothing at all to do with my post. Something had been bubbling up inside him and he saw a chance to get it off his chest. Fine, go for it, but it doesn't affect the RMM argument and I've already decided my position on language wars. For me getting involved in the discussion at all was a pointless waste of time. People are going to hijack your content for all kinds of reasons, some of them awesome and some of them bullshit. You want to accomodate that whether you agree with it or not, and whether you even care what they're talking about or not. So comments are back now.

Wednesday, February 18, 2009

Monday, February 16, 2009

Spike > tail

Spike is a simple app intended to make looking for information or patterns in Rails log files a little easier. I got fed up of scrolling backwards and forwards through endless logs looking for particular requests one too many times. Spike is the result.

Open your logfile and Spike will parse all of the requests and display them in a table including the main features like controller, action, client ip, status, and so on. Select a request to show detailed information including parameters, what was used to render the request, any filters that stopped rendering, and so on.

The code. The screencast.

Obie: NO

I just gave my computer the finger.

Here's why:

Here's the comment Obie's blog wouldn't let me post:

You've got work that pays well and a field where quality is easy to spot. There's already gigantic economic incentives for programmers to get better at what they do. But there's much greater economic incentives for programmers to just build shit, so that's exactly what they do. They just build it, and it's shit.

I think the economics here are so fundamental that any effort which opposes them essentially pisses in the wind. Think about who buys computer books. You don't have a situation where mediocre programmers buy one book every year, and good programmers buy two. The vast majority of programmers never, ever buy a book unless they absolutely have to. Lots of good programmers have giant programming libraries. You make more money helping good people become great than you do helping mediocre people become good. Mediocre people aren't mediocre because getting better is a mystery. Mediocre people are mediocre because they don't give a shit.

Also, you said "our collective failure to set high standards for the community is strangling the continued growth of Ruby and Rails overall." Are you serious? Criticizing the Rails community for its low standards of quality is like telling a supermodel she looks fat. Who are you comparing us to? What Web framework is more concerned with elegance? What language community has a greater reputation for being obsessed with TDD? The language communities and frameworks that can compete with Rails on these metrics are NOT numerous.

Also, how in the hell is setting higher standards going to make it EASIER for Engine Yard's customers to find qualified Rails developers? The higher you set the standard, the harder it is to find people who meet the standard.

I probably sound quite angry, I know lots of people think of me as this terribly angry person, it's not intended like that at all. I'm just boggled by the sheer load of different variations on what in God's name are you thinking that I can come up with here. I mean certifications commoditize skills. That's the effect on individual programmers, right? That's why operating in a field where certifications exist is inherently dangerous. So: Branding a Rails shop as hitting a bare minimum commoditizes your shop's business practices. It makes a brand which marks the bare minimum stronger than your own brand, which should mark the apex of your work. It's marketing suicide.

Not only that, you're setting a bare minimum as a target. Something for all those idiot "programmers" to aspire to. Not only THAT, nobody ever got rich selling self-improvement to people whose unifying characteristic is mediocrity. It's not like there's this shortage out there of advice on how to be a good programmer. There's a shortage of economic forces impelling quality and craftsmanship, and a surplus of economic forces impelling good-enough bullshit. Then there's this tiny market made up of people with self-respect who want their shit done right, and that's where we get our money.

I just can't figure out what you were even thinking here, man. I mean you're the guy who told people to read "Predictably Irrational." This is just UNBELIEVABLY silly. You might as well have invented a perpetual motion machine. You're smoking fucking banana peels. What shop with an ounce of common sense would shoot for a certification when they can just point people to their code on GitHub, their apps on the Web, and their presentations on Confreaks or InfoQ?

I mean if this was a book, I'd read it. I'd like to see one of those "The Hashrocket Way" presentations. All the biz practices I've read about Hashrocket sound freaking great. Nothing but admiration there. But a certification? For companies? It's never going to happen. It's a unicorn. It's a unicorn with Pegasus wings and Neil Patrick Harris rocking guitar solos on a V-neck Ibanez. It's a magic fairy unicorn from the land of Nod. What are you THINKING?

And all these companies who have trouble finding programmers who are good enough, they're SUPPOSED to have trouble finding us. That's why we can charge them lots of money. If we were easy to find, they wouldn't have to pay as much. That's supply and demand. CHILDREN understand that.

This is the crack-smokingest bullshit I've read in a LOOOOOONG time!

And let's go back to this bit:

"our collective failure to set high standards for the community is strangling the continued growth of Ruby and Rails overall."

Rails saw METEORIC growth because it made it so fucking easy for clueless newbs to build shit. It's these same clueless newbs who don't use source control of any kind, cargo cult everything, and generally suck. Guess what? They don't just contribute numbers. They're part of what makes Rails great. You need to read "The Wisdom Of Crowds." The fundamental dynamic of the invisible hand isn't just limited to marketplaces; it shows up anywhere you have large numbers of independent agents pursuing independent goals. Open source fits that broad definition, and you see invisible hand effects ("wisdom of crowds") in open source. In an invisible hand situation, adding stupid people to the group actually increases the overall intelligence of the group. Likewise, in invisible hand situations, adding any kind of diversity to the group improves the group's overall intelligence. The ease of use that draws clueless newbs to Rails also draws sophisticated people from outside programming, for instance, graphic designers. So we get the usual experienced, smart coders, plus the idiots, plus the sophisticated people with little programming skill, and the result DOES NOT strangle the continued growth of Ruby and Rails overall. It DRIVES it. We would be as shitty as Java without these people. It's the combination of a very low barrier to entry and very high standards of elegance that brought Rails tremendous growth in a very short period of time.

Jesus Christ. RMM NO. NO, NO NO NO NO NO NO. By which I mean NO. Or in other words, NO. Or to put it a different way, NO. Let me say it again, just to be clear: NO.

Sunday, February 15, 2009

Sign Petition: Investigate And Prosecute Bush

Sign it.

Ornamentation And Economy In Dance Music And Film

Recently I watched The Departed and Infernal Affairs. Infernal Affairs is a Hong Kong action classic; The Departed is an Oscar-winning American remake. Both movies are fantastic. I watched both partly because I love good movies - I'd already seen The Departed, and I've seen so many Hong Kong movies that I learned a few simple words in Cantonese from context - and partly because I wanted to do a comparison study.

One contrast I noted: the cop who goes undercover as a gang member gets a backstory in the American film, concerning family drama and family ties to organized crime. This doesn't happen in the Hong Kong version. It's not necessary to the story.

Another contrast: in both versions there's a confrontation between the mob boss and the high-ranking police officer investigating him. The Hong Kong version makes this necessary to the story. The American version doesn't.

Still another: the American version combines two or three women into one. The undercover cop's relationship with this woman, in the American version, is necessary to the story. In the Hong Kong version, none of the women play any kind of crucial role.

For background, I've been writing screenplays every couple of years since I was a teenager. My first scripts were very, very bad. One of their worst features: incoherent, rambling plots. I look back on them, and even though I wrote them, I can't figure out why one thing is supposed to happen after the other.

This made me very concerned with economy and necessity in screenwriting, and I took an austere hard line towards action and necessity in my scripts. My last spec happens almost entirely in real time. No flashbacks, no fades. I didn't plan it that way; it just emerged as a byproduct of this obsessive prioritization of economy and necessity over any other feature of story-telling.

My screenwriting rule: the greater focus on necessity always wins. Any un-necessary element is banned. But if this rule is really the way to go, you'd expect it to describe a corresponding pattern: the movie with the greater focus on necessity is always the better movie. But that's not what happens. I think the rule holds true in this case for only two out of these three contrasts.

The Hong Kong confrontation is much, much better than the American confrontation. There's no necessity at all in the American confrontation, and confrontation without necessity is just chest-thumping. The American version integrates the one woman into the movie as an essential piece of the story; in the Hong Kong version the two or three women, well, let me put it this way, I can't figure out if it was two or three. I know it was at least two, but there's this girl who the undercover cop may or may not have unknowingly fathered, and her mother may or may not be his former psychiatrist. I couldn't tell if the actresses just had similar faces, or if it was supposed to be a very subtle subplot.

This ambiguity and confusion is the whole reason necessity matters in screenwriting. A movie is like a really well-done presentation about something that never really happened. You're putting together a line of reasoning, and if the line of reasoning makes sense, people get what you're saying. If it doesn't, then they don't.

However, the backstory contrast doesn't seem to me like an argument for necessity-only screenwriting. The American version's backstory is unnecessary, but it makes the undercover cop a more interesting character. The Hong Kong version's cop is basically just a guy doing his job. The American version gives us an unusual person doing an unusual thing for very personal reasons.

I've also encountered this same contrast - between structurally necessary elements, and elements which appear to be superfluous ornamentation, yet which in practice deepen the experience - in the context of dance music.

Here's a pair of mp3s I made tonight. In the first mp3, you have a simple loop. In the second mp3, you have that same loop, plus several changes, mainly bassline texture and sound effects - bleeps, blips, zaps, squeals, voices, and filter sweeps. The added changes make the second version much more interesting to listen to. It sounds more like a finished track.

Friday, February 13, 2009

Want Fries With That?

Twitter's buzzing with the latest Rails meme: RMM, the Rails Maturity Model. The responses range from furious outrage to incredulous disbelief. Most people assume it's a joke at first. There are a few sad notes of acceptance but most of the community is just mind-boggled.

Technically my boss got Obie started, so in theory I should be afraid to say that this idea is a silly load of bullshit, but the great thing about my company is that I can get away with it (probably). So: this idea is a silly load of bullshit. Yay free speech.

Twitter is too full of comments like "are you fucking idiots fucking kidding me?" for this to be a shocking statement. The original thread is too full of well-reasoned counter-arguments for it to be worth going into detail. Rick Bradley raises an interesting question, though.

Does the emergent intelligence of crowds (the same emergent intelligence that drives large-scale open source to success) sift out the identify of the high quality software teams, or can such high quality only really be discerned by other high-quality software teams?

It's a question of practical importance. The street-smart answer: the number of programmers who know their ass from a hole in the ground is and always will be small. High-quality software teams are the exception, not the rule, and they stick out like sore thumbs. Rick basically says that himself:

In reality, where we happen to live, there seems to actually be a power law at work: the vast majority of software and teams plying our trade are so bad that they fail nearly every metric we could reasonably apply. Only the vanishing minority of products and practitioners pass even a single gameable metric.

But the question is really, do you need a high-quality software team to detect a high-quality software team? Does it literally take one to know one?

This implies some additional questions: is all this process stuff just bullshit anyway? Does any metric matter at all except the number of happy customers, and the length of time those customers stay happy?

The E-Myth is a small business classic. It tells small business owners that they should spend as much time working on their business as working in it, for it, or through it. The book idolizes McDonald's as a business, not because it believes modern industrial society should be polluting our internal organs as much as it pollutes our surrounding environment, but because McDonald's became a success because its founders worked on it more than through it/in it/etc. Every last thing in a McDonald's is systematized and governed by precisely articulated rules. A McDonald's is practically a machine that happens to have human parts.

If best practices are as much better as we like to think they are, then dev franchise chains are just a matter of time. There is much more money there than there is in certifications. Conversely, if best practices don't make that kind of difference, then a certification won't help you.

ENTP is already headed in a franchise-y kind of direction. We have multiple semi-independent offices. If there's truth to just half of Hashrocket's hype about their internal methods, then what they have is also already approaching a franchisable business. Personally I think Hashrocket stands to make much more money pursuing a franchise strategy. They would also do more that way for promoting good development practices than any certification ever could.

Wednesday, February 11, 2009

Mapping The Waterworld Apocalypse With Lisp

bit player: long division

Obama: Too Conservative

Seriously. Exhibit A. Exhibit B.

Update: but by usual Washington standards, he's still extraordinary.

Tuesday, February 10, 2009

Archaeopteryx: Generating Ambient Drum & Bass

I cooked up a brief snippet of Archaeopteryx generating ambient drum and bass. It's complete hackery; all I did was set two Arx programs running at the same time. One is my usual drums demo and the other's my ambient music generator from Burning Man last year. Both were sending MIDI to the same Reason setup; all I did to build that was copy a drum machine from my drum demo setup into the setup I used at Burning Man. And of course I had to set both Arx programs to the same tempo. In practice running at the same tempo was impossible, but running at complementary tempos (160bpm and 40bpm respectively) was trivial.

ambient drum & bass demo (4.5mb mp3)

Simple Bash Domain Availability Checking

Twitter Swear Detectors

Cursebird, and Dewey's TweeterMeeter.

Idiot Senators Trying To Destroy Freedom & Internet



Sunday, February 8, 2009

I Like My Oatmeal Lumpy

There's Going To Be Many More Rails(es)

Think about this. Many programmers use a language at work that they have no faith in. Meanwhile, emacs is the most ridiculously hyper-evolved piece of software ever. Why? Why do we have hyper-evolved text editors, and jobs where we use crap software and crap tools?

Imagine if you went to the doctor's office and found that the doctor uses a transdimensional laser scalpel to open his letters, but he plans to do surgery on you with a sharpened rock.

Recently the VP of Software Development at posted a bunch of clueless nonsense about TDD that is so flat-out ignorant your jaw will drop. The funny thing is, TDD's been around for decades, and this VP's precise misconception's been around for decades too. The mainstream will never catch up, because new people get the same shit wrong for the first time every year.

In the days when emacs first developed its transdimensional laser powers, there was nothing we could do about this. Chained to C++ for life, emacs hackers wrote Lisp in the dark of night just to stay sane. Today, commodity hardware and open source software make it so easy to deploy web apps in any language that there's no excuse for whining about "but my company won't let me use Foo."

This is where Rails came from. This is also where Seaside came from, and Happs, and Lift, and Xavante. This is where the first Potion web server will come from. Hackers will code new Io web servers just to prove they can.

And the company to bring it to you will not be AT&T. It's the rise of small business on the Internet that gives programmers more options than ever before. At CUSEC 2009, Avi Bryant said that if you want to develop innovative software, don't preach to developers. Ship to users. Developers resist change and cling to their beliefs. Users don't know or care.

More and more people on the Web don't have to care what pointy-haired bosses or bossy "senior architects" think. The rise of small business means an inevitable boom in languages and frameworks. It also means better software.

Saturday, February 7, 2009

Internet Famous Class

Fame is proof that the people are gullible.

Discovered on Gawker; happening at Parsons. If you've seen my drawings, from when I went back to school, Parsons is the main place I wanted to end up, and why I learned to draw.

Google Desktop: Chihuahua Sweater Fight

Google Desktop is no solution for my web search problem. I used Google Desktop many years ago and thought it was fantastic, but today I think it would annoy me a lot. Take a look at this:

One of the things I liked about Google Desktop back in the day was its web history search. It looks as if they broke out the web history search feature into its own product because the Desktop team was busy competing with Apple's Dashboard widgets. I don't see the point of that. It has absolutely nothing to do with search. Google attacking Dashboard widgets is like a hot 23-year-old girl fighting with a little old lady over who has the nicest chihuahua sweaters - and the 23-yr-old doesn't even own a chihuahua.

Corporate feature creep gets so much weirder than normal feature creep.

Friday, February 6, 2009

Republicans And The Economy

Mew Mew Tower

Thursday, February 5, 2009


ActiveResource For The iPhone

The Mainstream Will Never Catch Up

The metric I, and others I know, have used to judge unit testing is: does it find bugs?

Not a joke.

Guess who wrote it?

The VP of Software Development.

Miniapp Idea, Free For The Taking

Here's what I want. I want to be able to search within my browser history. I'm sure some idiotic system exists for doing this which I won't use because of some poor design factor or another. I don't want to hear about it. I want a system I'll use.

For perspective: I tried to buy a Harvard Business Review article PDF today, but the Web site required that I create a username and password instead of simply taking my credit card and giving me the PDF. So I googled for the name of the article, plus the term "PDF", and was able to steal a copy in seconds. (Somebody had uploaded it to their server, probably without any intention of sharing it or knowledge that Google would find it.) People don't like wasting time.

What's crucial here is the design. First, you have some means of tracking user history which is absolutely private, persistent over months, and very very easy to install. The obvious choice is a Firefox plugin which background-uploads your history to a Web app. That's the easy part.

The hard part is that you then leverage Google's ability to do searches. But instead of specifying one site:, you specify the hundreds or (more probably) thousands that were visited within a given period of time. The hard part is that this capacity may be locked inside a giant corporation's policy decisions. Your best-case scenario is that it's locked inside a giant corporation's API documentation, which is almost just as painful.

Google co-operation seems unlikely as you'll be competing with Google Web History. However, Google Web History looks well-intentioned but stupid, and it'll be fucking wicked if somebody actually builds this. There may be almost-as-good search engine alternatives to Google which offer superior APIs; if so you can make something incredibly awesome in a very short space of time and make life better for everybody.

If you're a Firefox plugins wizard who knows of a great API-friendly search engine, ping me on Twitter. If you just cut to the chase and build this while I'm twiddling my thumbs and calling it a great idea, hey, you win. Rock on.

I suppose making peace with the shortcomings of Google Web History is a win too, but I get skeptical that an app is going to respect my time when I have to log in just to find out if it's any good in the first place.

Wednesday, February 4, 2009

Programming On LSD: Russian Roulette Factor

Recently I heard rumors that some idiot was going around telling people they should try programming on LSD. Let me give you a counter-example: I knew a guy who went straight from high school graduation to programming for Apple, about fifteen to twenty years ago. We'll call him Fred. Fred was an incredibly smart guy, and he loved acid. But I think he took too much. Recently he got back in touch with me via the Internet to tell me that a guy we both knew from our church had used Dungeons & Dragons to channel demons into his soul. I knew this guy Fred was accusing, and if he had been doing this, it would have been very uncharacteristic of him.

Apparently this crazy idiot who says programming on acid is a good idea cites Nobel prize winners Kary Mullis and Francis Crick using acid to assist in the discoveries which led to their respective Nobel prizes. Since both men achieved their Nobel prizes either working with or discovering DNA, this would suggest that acid is a unique competitive advantage in that area.

This may be true. But it doesn't alter the fact that for a small percentage of the population acid appears to unlock latent paranoid schizophrenia. This strongly suggests that paranoid schizophrenia has its roots in neurochemical imbalance. However, few experiments have been done exploring this link, due to the politicization of LSD research. Governments rarely permit experiments investigating LSD.

There's an argument to be made that, in the United States, government control of what scientists can and can't investigate constitutes a serious, systematic, and pre-emptive First Amendment violation on a grand scale. But that's another blog post. I just want to add a cautionary note of counter-argument to whoever this idiot is out there who is running around telling programmers that they should take acid.

Tuesday, February 3, 2009

Parents Worried About You? Follow @garyvee!

A few days ago I went to the emergency room and had some pretty scary surgery. Just now, I got back from the hospital. Before I left, I got on Twitter with my iPhone.

I wasn't able to get on Gmail, so I didn't see the e-mail my parents had sent me asking if I was OK. But my parents follow me on Twitter. So when I tweeted that I was in the hospital, recovering, they saw the tweet, and sent me an e-mail.

I didn't see the e-mail. Tweetie knows my Twitter password, but I don't dig the iPhone mail client. There was some weird problem with the hospital wifi, or with my laptop, where the wifi let my iPhone onto the network, but not my laptop. I couldn't use the Web interface to Gmail on my iPhone because all my passwords are secure, which means that none of them are something a normal human could memorize.

So when I got home from the hospital, and I checked my e-mail, I saw the e-mail from my parents. It mentioned "hospital" and "twitter." Apparently both these terms trigger various Google Ads.

Like Stanley from The Office, I have to avoid getting angry because it's a risk to my cardiac health. (Long-time readers of this blog know what a challenge that will be for me.) So I'm not going to preach or anything. I'm going to look on the bright side. Maybe this is Google at its best. Maybe one of Gary's red wines could help me out, with all those healthy antioxidants.

I will indulge in some self-quotation, though. I've got my own saying about machine learning: "Artificial intelligence is a lot more artificial than intelligent." I think this is a good example.

Penelope Trunk: Good Blog, Great Titles

5 Time Management Tricks I Learned From Years Of Hating Tim Ferriss

4 Weight-Loss Tips From My Month In The Mental Ward

Archaeopteryx: The Hardware Interface

Greg Borenstein built a hardware interface for Archaeopteryx using Arduino and his RAD (Ruby Arduino) library. It's awesome.