I should update that my current testing workflow is the one described here. At my new work the testing suite is so large (a good problem to have!) that it’s not really feasible to rerun all or even a large subset of the tests on every write. Also I realized that you mentally start waiting for the full suite to finish with a notification before continuing your work. Now I test just the file or just the test I’m working on, using the rails.vim commands and the turbux plugin to run the test in a small tmux pane. Then I run the full test suite on CI, which can take 20-40 minutes.
Local Memes
I have meant to undertake this project for a long time: the compilation of a list of “local memes” in my household. As I get older (and older and older) I become more and more aware of this condition of being composed out of bits and pieces that originated in other people. I am also aware of various recurring gags, puns, patterned exchanges etc.– memes –that gradually died out through disuse or replacement. Every once in a while my wife and I will recall some old joke that we used to do and we’ll momentarily resurrect it, like the dinosaurs in Jurassic Park. We flatter ourselves that we have an unusual number of these active or recalled memes stored up, but probably most couples have equally rich archives. Anyways, ours are special to us, and I’d like to partially preserve them by sharing them now. I’ll just update this post as I think of more.
I’ll be right Barack Obama. Pretty self-explanatory. Also, Barack to the future, etc.
Thass nice. Thass real nice. — Slurring lecher #1 in the bar scene in the terrible movie Eve of Destruction. Denotes lustful appreciation of something (in the meme, usually something innocent like food or drink).
snoring/narcolepsy — This is where you decide that the point you’re trying to make is too boring, obscure and convoluted to actually finish and you stop in mid-sentence and nod off. The use of this has decreased because it was really off-putting for my wife and she basically forbid it.
“Oh God” — this was my sort of Joey Lawrence woah during college. I also briefly tried to promote my own pre-packaged meme: embrace the chaos/channel the void.
revolution in your stomach — when you mix foods causing gastrointestinal distress. From a Salvadoran family member. Also the phrase Don’t be lazy.
“What? What did you say?” — I tried to find a relevant video clip from the Ozu movie Good Morning to demonstrate this very simple and satisfying gag, but looks like you’ll have to check out the movie yourself.
cat names — We have two cats, Mackerel/Mack and Ruby. Ruby is variously Poofy, Miss Fluffy-shanks and Rubifer Jenkins. Mackerel is usually just Mack, but his friendly, chill demeanor often conjures up declarations that Mack is a buddy and that Mack is a mackimal.
monkey dancing — A monkey dance is a disrespectful display where you show your interlocutor that you are not paying attention to what they are saying because you are no longer a rational being with language. Traditionally you literally pretend to be a monkey by putting your arms above your head and bouncing back and forth on your feet while sticking your tongue out, but any elaborate discourse-destroying dance qualifies.
hot socks — This one is based on the Lords of Acid song “Rough Sex“, where the refrain is a litany of “deep sex, hard sex”, etc. So you replace the word sex with socks and try to come up with descriptions of socks that sound dirty but still make sense in the context of socks. “wet socks, hot socks, smelly socks.”, etc. I actually can’t remember how we kept this one going long enough to be interesting, but we came up with quite a few.
“Bob” Damon — If you’re watching a movie where an actor looks like a more famous actor, you come up with a fake first name and assert that the actor is the more famous actor’s sibling struggling in obscurity.
“And it looked just like a checkerboard!” — The punchline to a ridiculous true story once told to me by a friend. When uttered (in a high-pitched, incredulous voice) it denotes the discovery of an absurd and wonderful fact.
haspiration — This is where you append h’s before all beginning vowels in words and all silent h’s, as in “That’s hannoying” and “hu-wat hare hu-you doing?”
Y’see… Rudy — apocryphal quoting from the Bill Cosby Rap, which doesn’t actually include the name Rudy. Denotes when you’re saying something self-consciously condescending.
Stompy McStomperson — This is apparently me. Related to Messy McMesserson, which is a pretty universal meme.
“_ Joe, everyone’s favorite Joe.” — e.g., Hey look it’s Self-pitying Joe, everyone’s favorite Joe. This came from my roommate in college.
Sometimes a man has to do things that don’t make any sense, nevertheless he must do them, because he is a man. — half-remembered paraphrase from the great movie Fighting Elegy.
“I look good, I smell good, I feel good … I’m a cat!” — half-remembered line from Red Dwarf. Also, “The only thing that can kill a vindaloo: a lager.” Also, from The IT Crowd: “You’re making it go back in!”
deathwork — Term from an eccentric book by the cranky sociologist Phillip Rieff, which he uses to describe everything from Piss Christ to Ulysses to this image of a person made out of vegetables. A way to flippantly dismiss something. Related to the phrase The death of meaning.
You’re probably going to die. Used by a friend a lot, the joke being that instead of trying to reassure someone that their neurotic fears aren’t real, you just agree with them that they’re probably right in their catastrophic estimates. This friend also says Happy family, happy family whenever there’s slight social conflict, which is probably from something. Also, the whole concept of icecream cake being inherently more desirable than regular cake, which is apparently from Modern Family.
basic portalology — Recent meme from playing through Portal 2 with same friend, as in That’s basic portalology!, exclaimed when you realize you’ve been overthinking a level.
I think there was something wrong with the beer. The joke being that the beer being skunk is what made you sick, which is why you should always drink out of heinecans.
It’s important. — Said of things that aren’t important. See note.
an all too possible future — a reference to the offensively ridiculous Heinlein book Farnham’s Freehold, read by my friend and I and thankfully few other living people. Also with the same friend the principle that only one person can take off his shirt in a room at a time.
I’m sorry that happened to you — tepid expression of sympathy for an unfortunate event that is either extremely mild or entirely self-induced and preventable.
“Pretty. Pretty. Pretty good” — From Curb Your Enthusiasm, of course.
Uuuuuuuuuuuuumm — Open-ended contemplation sound that a friend’s five-year-old daughter would make. Also from same little girl: “Poop on your head!” And from that friend: “Wake up!”
“Train.” We live next to a railroad, so when the train comes by we translate what its warning horn is saying, which is clearly: “Train. Train. Traiiiiiin. Train.”, etc.
Goodbye, Autotest
Update (10/15/2012): This isn’t how I’m doing it now. See this aside for my current workflow.
(That Latour article is in a half-finished limbo state, but I’ll get around to posting it eventually).
I wrote in a recent post about how easy it is to configure Autotest these days. And Autotest has been an essential part of my toolset as I’ve developed my humble todo app, Method Todo. I’ve only been using it to run my Rspec stories (and not Cucumber features, since they take too long). Now that I’m adding another testing discipline, testing javascript code with Jasmine, I find that there’s an even simpler way to run all your tests — specs, features and Jasmine specs — continuously and in the background.
I decided to use Guard because I couldn’t get Jasmine to access the necessary asset pipeline files to run Javascript tests, I guess because those files needed to be precompiled. Once I started using guard-rails-assets I decided to try out the other plugins for Rails, Rspec and Cucumber. It seems to all just work and the ecosystem of plugins seems like it will provide quick solutions to obscure problems down the road.
So after deleting the Autotest dependencies out of my Gemfile, I have:
# other sections for rails, rspec, spork, etc., etc.
group :guard do
gem 'guard'
gem 'guard-rails'
gem 'guard-spork'
gem 'guard-rspec'
gem 'guard-cucumber'
gem 'guard-rails-assets'
gem 'guard-jasmine-headless-webkit'
end
Then I run
bundle exec guard init
to create the Guardfile with sensible defaults.
Then running
bundle exec guard
will start running all of these tasks together. The default for the Cucumber guard task seems to only watch changes in feature files before re-running Cucumber, so I’ll leave this guard in as long as it doesn’t delay the re-running of specs. A bonus is that the Rails guard starts up the development server and restarts it when you change major configuration files.
Update (7/25/2012):
I found that guard-rails-assets
didn’t seem to be necessary for jquery-guard-headless-webkit
to process assets. I removed it to see if it would fix a strange issue with the bootstrap-modal library that only occurs in development mode (it didn’t, but it also didn’t seem to break anything).
I also found that guard-rails
was loading into the test environment when paired up with the other testing guard tasks. Changing the initial generated line to
guard 'rails', :environment => 'development' do
watch('Gemfile.lock')
watch(%r{^(config|lib)/.*})
end
seemed to fix things.
Reading Habits
I read a lot. Mostly I read blog posts, picked out from my Google Reader stream. I read these all in a blur, constantly hitting the ‘j’ key (a shortcut for next), generally restricting my gaze to the headline, only occasionally stopping to read the article text itself. Often the entry is a description of a longer article or something involved like a photo gallery or video. I open these out into new tabs in my browser and continue on: ‘j’, ‘j’, ‘j’. Then when I’m done gulping down the stream I move on to the opened tabs, reading each article (or determining that I don’t need to read it after all), closing the tab, moving to the next one, from left to right. Sometimes with especially long articles I will click a button associated with the Readability service that will send the article to my tablet or my Kindle for reading later. This process can take from 45 minutes to 2 hours depending on my interest in the articles (this assumes that I’ve ‘kept up’ by ‘clearing’ my list on the previous day). On average my eye passes over something like 150 items, 150 headlines I have to make determinations about. It has the feel of a daily chore; it is, according to the local meme in my house, “important” ((As in “I can’t leave yet. I have to finish reading my feed. It’s important.“.)) .
In addition to this bizarre, harrowing ritual I read the newspaper. These days I am trying to keep up some hard-won French reading skills by reading Le Monde on my Kindle. I try to give about an hour to this. I have always found artifacts from other cultures, other things being equal, to be more interesting, simply because of the formal differences. A stupid pop song in another language is more interesting than a song in English where I can appreciate the lameness of the lyrics. A conventional comedy or action film from another culture can be enlivened by the strangeness of ambient details which take on their own sociological interest for me. If the dialogue or story are boring I can try to figure out what the characters are eating or the political context behind certain statements. Likewise reading Le Monde is like reading the New York Times, except that it takes longer for me to read, there are certain expressions and allusions that are mysteries to me, and it’s mostly about Europe. But it’s so fun to read! There’s an extra intellectual and creative challenge built in to the task of trying to figure out what the hell is going on. The best moments are when you pick up shades of gallic irony and humor in the diction, like the chicken company on the verge of bankruptcy in danger of being ‘plucked’.
Finally, I try to read longer texts. The truth is that my ability to read books has been in descent ever since college. I was seduced away by that stream of blog posts, also by a tendency to read magazines (I always read Wired cover to cover and used to do the same with Harper’s and Atlantic Monthly), also by video games, consuming television series and movies on Netflix and a general uptick in busy-ness. The Kindle has absolutely resurrected my desire and capacity to read books. It’s hard to say why. It might be something as stupid as a habituated preference for screens. The fact that it’s one of the devices that I bring everywhere and I resort to it whenever bored could be another reason. It’s also very easy to ‘stream’ books by purchasing the next book in a series or another book by the same author as soon as you’re done with a book ((That’s how I read the first five books in Song of Ice and Fire so quickly.)). This streaming of books is similar to the rapid “conquering” of a television series or a film genre that Netflix makes possible.
With the Kindle I’ve gotten back into the habit of reading long works, but mostly fiction. I read plenty of long-form political and sociological analysis on the Web, but it’s been a long time since I read a long nonfiction work from beginning to end (I’ve almost never read any history). This is something I’m fairly ashamed about, because I have a liberal arts education and a master’s in philosophy. When these institutions have pushed me to read texts for class I’ve been set ablaze by their ideas, perhaps even going overboard in the degree to which I incorporated their outlooks (in college I was in turn a Stoic, then a Humeian, then a Kantian, then a Hegelian, then a Nietzschean). I found writing papers in graduate school — trying to understand the system of the work and setting up a controversy to hang a paper on — extremely satisfying, extremely fun. I liked the experience of becoming a mini-expert on some marginal issues in the systems of these heavy thinkers. To this day some chance comment might elicit from me an impromptu (and probably unwanted) discourse about Maimonides’ theory of scriptural interpretation or my understanding of the Absolute in Hegel. But time moves on, these institutions no longer terrorize my life, and I’m not reading these texts anymore. I hate what this says about me and about the original importance of those texts for me.
The total impression this account should leave is that my reading is eclectic and geared toward the timely (blog posts and newspaper articles) and my longer reading is dominated by fiction. The blog reading in particular takes the form of a senseless consumption. With how much credibility can I claim that I have a lasting impression from any of the 150 items that I’ve encountered during my feedreader power hour? I’m pretty sure my brain is shutting down at some point, not actually recording anything, for want of any consistency in the subject of the posts. I’m probably just whipping up a batch of ADT ((Attention Deficit Trait, I read a post about it once.)) in there. I get the same feeling to a lesser degree with the other reading and video watching I do. I’m not doing anything with the information or content or knowledge that I’m taking in, I’m just collecting and consuming, and oftentimes I’m hurrying ahead with what I’m currently reading or watching in order to conquer the next thing. This is part of a larger pattern in my life, which is that I keep taking in more and more rich experiences (books and movies but also trips, intense work experiences, major life changes like getting married or learning how to drive, etc.) but I’m doing nothing to process or differentiate these experiences. It seems like you can get away with not processing experiences if you live a relatively simple life but not when you’re a world-devouring monster like me.
Anyway, there are elements of my reading regimen that I hope to change. I recently stopped subscribing to Techcrunch, because I realized that I was literally skipping through almost all the headlines (also the personalities and quality of analysis are awful). I probably don’t need to know about every upcoming Android handset. I would have trouble foregoing Google Reader completely, especially BoingBoing ((I like to be down with the freshest memes.)), but if I could pare my list down even more I could probably transform it into a less soul- and attention-destroying activity. In general, though, I want to start committing to longer, more serious texts (( I know this doesn’t preclude fiction. It’s just that fiction is so easy for me to read, consumptively, that I don’t have to make a conscious resolution about it. I would like to write more about fiction, though.)) on the condition that I will also put the work in to process them. The best way I know to do this is to write about my understanding of the text. This post is really a preamble for my next post, which is going to be about a philosophical text I read in full. Something I loved about the experience of reading this book, which at times was quite a slog, was that I genuinely had trouble understanding some of the points. With most things I read there’s a kind of automatic and superficial understanding (that is, it might fall apart if challenged but it never is) but with this text I know that I need to spend more time to have a meaningful understanding, yet I am sufficiently excited about what I did understand to want to make the effort. This is a good feeling because it suggests to me that what I’m reading might actually matter.
Ruby, Linux, Autotest, Rspec 2, Cucumber
Update: I’ve moved on to using Guard
Of the posts I’ve written this article about Rspec, Autotest, etc. has been one of the more visited. Time to update that ooold information.
If you don’t know what any of this is, the idea of Autotest is to get a test suite to run continuously in the background and provide ambient notifications about the failure/success status whenever a file is saved. You get feedback as soon as you break your test suite. The Linux part of this post involves getting Linux to pop up an on-screen display listing number of failed tests.
Cucumber is a BDD (Behavior-Driven Development) tool where you write out the features in plain language but then parse that natural language with regexps to pin tests behind it (called step definitions).
Rspec is a nice expressive test assertion library that can be used both in Cucumber feature step definitions and for traditional unit tests.
The process is much faster and cleaner now due to better gems and the convenience of Bundler. I’ll update with details about non-Rails projects.
The Gemfile section (note autotest-standalone and autotest-notification:
group :test do
gem 'rspec'
gem 'rspec-rails'
gem 'cucumber'
gem 'cucumber-rails'
gem 'database_cleaner'
gem 'autotest-standalone'
gem 'autotest-rails'
gem 'autotest-notification'
end
Setup commands:
# install the gems of course
bundle install
# steps for Rails
rake generate rspec:install
rake generate cucumber:install
# complained if I didn't do this
rake db:generate
# Do some magic for the notifications plugin
an-install
Then to run the tests:
export AUTOFEATURE=true; autotest
It’s working for me on Ubuntu 12.04.
Installing Ubuntu Pangolin on Beagle Bone
Just a quick note if you’re like me and you want to put Ubuntu on your Beagle Bone. The Beagle Bone is a sweet little palm-sized motherboard/processor guy that’s nice for little hardware projects. It comes with the Angstrom operating system loaded onto the SD card. This operating system was fine for initial development but I ran into an issue where I couldn’t leave a server to run and log out. If I checked back the server was always dead no matter what I did to detach it (maybe it was just pegging itself and restarting). So I wanted to see if Ubuntu would handle any better.
Anyways, I kept trying to just flash an image from the official Ubuntu page onto an SD card and boot it, but it wasn’t working. Then I saw that there is a script that does all the work for you mentioned on this page:
http://elinux.org/BeagleBoardUbuntu#Canonical.2FUbuntu_Images
Works like a charm, and Ubuntu does seem to be more stable than Angstrom on the Beagle Bone. Thanks to the author of the script, Robert C. Nelson.
Site Idea
Site allows users to enter their “cultural genetic code”; it consists of a humongous catalog of beliefs, attitudes, values, described responses to hypothetical situations, etc. For example, a user would subscribe to the statement, “It’s not okay to treat a waiter badly because of a mistake in the order.” and a thousand other statements ((So far, it’s similar to hunch.com. The differences are the focus on cataloging values over consumer and aesthetic preferences, and the focus on sharing statements with others in groups. )) . The site would collect demographic data up-front but would hold onto it until a large-enough database had been constructed. Later, correlations and clustering could be identified, but in addition there would be the option for users to “bundle up” values and tropes into new groupings with evocative labels. So someone could bundle up “It’s wrong to eat meat” with “the US should have an aggressive foreign policy when it comes to protecting against genocide” into “Red-blooded Veggie” or whatever. Then people could choose to “adopt” the new values package, and then fork and modify it with their own additions. The point would be to promote the idea that values should be chosen “for their value” instead of their belonging to a particular obligatory milieu, and that values should be viewed as being elective and configurable and capable of being put into pragmatic competition with each other.
Movie Idea
The title of the movie is Dog Whistle. The main character is a young Arab-American slacker who generally tries to keep his head down and avoid any kind of social engagement. His life changes when he gets into a minor fender bender at a gas station. The other driver, a middle-aged white man in a business suit, refuses to be placated and rages irrationally at the protagonist until he snaps and, uncharacteristically, yells at the businessman with enough force to silence him. This moment of victory is cut short when the older man flashes a sinister grin, begins to whistle eerily and then gets in his car and drives off. The main character soon realizes that the man is a local politician with national ambitions and a unique ability to compel people’s attentions with his nativist and xenophobic message. As the movie progresses, the main character is “chased” by the politician’s television and radio appearances, which have the effect of causing the moderate people in the protagonist’s life to turn against him. Imagine a scene in a diner where one moment the waitress is serving the hero his food with a smile and the next she is stabbing a knife down on the counter and tipping his food onto the floor. Within moments the whole diner has become murderously ill-disposed toward him. The climax involves the main character confronting the politician at a town-hall-style meeting where the protagonist is in danger of being ripped apart by the zombie-like mob.
Human Capacities
I started writing this in January 2010 and for some reason abandoned it. Lemme see if I can pick it up and complete the thought, with the caveat that the person completing it is living in a completely different decile of his life.
For whatever reason, a theme has emerged for me in the last couple days: fragmentation. Specifically, of consciousness. The sense that life events are disconnected, that memory isn’t real, that each moment stands alone and isn’t configured to a particular past or future. I’m not even really complaining. I’m reasonably satisfied with the way multiple aspects of my life are going. There’s just this feeling of being stretched out over too much territory, both in terms of interests and knowledge and in terms of prior time.
My sleep has been irregular recently and I’ve been taking the 12-hour Mucinex to get over a chest cold, so there is some of that going on, but I don’t want to chalk up these thoughts to being groggy or high. Actually, I have a burgeoning psychological conviction that the things we feel and the thoughts we have when we’re in extreme circumstances that “take us out of ourselves” are representative of feelings and thoughts we have all the time, but somehow repress and forget. Okay, I know, not that radical, but what I envision is that everyone who isn’t nicely adjusted is going around doing normal things while simultaneously reiterating various forbidden thoughts, as it were, under their breath. Again, I know, Freudian repression, but I like the sense of an active process. I have a horror movie in my mind about a guy who sees everybody along with the repressed aspects of their psyches, so instead of a “What Women Want” scenario, where everyone’s inner voice is speaking straightforward desires, it’s people walking around shouting down shrieking pleading voices.
So I’d like to make explicit a model of human activity that I’ve recently realized is at the basis of a lot of my thinking about my own personal endeavors. You could call this the quantitative model of human capacity or something. It’s not so much a viable theoretical model as it is a mental construct that one might find oneself employing without knowing it. Here is how it is made:
- There is a finite number of seconds, minutes, hours in one’s life.
- In any moment we can be attaining a skill, gaining some knowledge, resting, indulging ourselves, or “other”.
- As a general rule, the more moments you spend the more you will have of expertise in a skill or mastery in a knowledge subject.
Here is where I broke off. What’s remarkable, and what stands as a partial validation of the starting thesis, is that I’m really not sure where I was going with this. I guess I was going to say that you end up with a distribution of intensities across your personality, and that they can either be tall in a few places or bristly across a wide range of subject matters, with a reduction into absurdity where you are just a smooth surface of uselessly short but expansive knowledge and expertise. Which is just “jack of all trades…” so I don’t know why I thought this was important. I think I also wanted to express the idea that as you invest in certain areas you close off the possibility of excellence in other areas ((Like, of course, a technology tree in a game like Civilization or Master of Orion)). But again, what of it?
Well, the complaint at least is that you can reach a point where you have many memories and no narrative line to connect them, and you literally doubt whether they all belong to you. I can certainly sympathize with that.
On Google
This is a long, rambling diatribe that took me a couple weeks to write during odd hours. In that time it seemed that there was another major Google-related story every week and I kept coming up with new insights to add. What I really wanted to say is the stuff at the end.
We will find the drama of Google’s incessant machinations to be world-historical. ((World-historical is a pretentious phrase that means “fundamentally influencing the trajectory of history”. For example, the German philosopher G.W.F. Hegel saw the French Revolution as world-historical because it was “about” the effective end of aristocratic power. Even if the revolution partially failed the effect was to demonstrate to all of Europe the power of the masses to topple monarchs. Today we could say that the 9/11 attacks were world-historical because they caused the US to spend the next 10 years defining how issues of international cooperation, security, projection of military force and treatment of non-state combatants would be approached in the future. ))
All I mean is this: Google’s actions should be viewed in terms of a handful of oddly constituted “competitors”. Google acts the way that it does because Microsoft, Apple and Facebook each pose an existential threat to Google. That is, if any of these three competitors fulfills its strategic vision then the revenue faucet at Google (contextual online advertising) gets shut off completely, or else Google becomes a thrall to another corporation (the way that Yahoo! is in thrall to Microsoft now). This struggle is world-historical because it matters deeply which companies are in a dominant position and are able to steer the development of technology and technological practices. Who dominates can spell the difference between an Internet that is open, mostly free-as-in-beer and libertarian versus one that is proprietary, metered and closely monitored by governments and corporations. Is a world characterized by the dominance of Google better or worse than a world in which Microsoft, Apple or Facebook is in charge? Let’s look at Google and the respective strategic visions of its competitors:
Google’s core business model has become so amorphous that it is in awkward forms of competition with Apple, Microsoft and Facebook. This is despite the fact that the only competitive ad network (supposedly Google’s core business) belongs to Yahoo! ((Yahoo! by itself has not been an important player for a long time, since its core concept has always been “portals”)). It helps to be reminded of what this market looks like (2008 numbers grabbed from Wikipedia):
Vendor | Ad viewers (millions) |
---|---|
1,118 | |
DoubleClick (Google) | 1,079 |
Yahoo! | 362 |
MSN (Microsoft) | 309 |
AOL | 156 |
Adbrite | 73 |
Total | 3,087 |
Since then, Yahoo! and Microsoft have struck a deal to consolidate the Yahoo! and MSN rows above to combat Google’s overwhelming market share. It would appear, then, that the online advertising component of Microsoft’s vast enterprise is Google’s only actual competitor in Google’s core business. Yet Google acts as though the producers of operating systems, browsers, smart phones and social networks are their real competition. Why?
Microsoft
The competition: Microsoft is the traditional rival to Google and constitutes the most direct and intelligible threat to Google’s core business. Microsoft wants a larger share of online ad revenue, which requires convincing people to use their search engine. That they have to work at this goal is a source of frustration for Microsoft; this revenue should come automatically as a consequence of their strategic position as the operating system maker. They write the browser that everyone uses; its search bar defaults to their search engine; by all logic Microsoft should be able to funnel the entire web-browsing populace through its properties. Nobody should ever have to perform a search through Google. The fact that Google is synonymous with searching is a testament to Microsoft’s incompetence (and possibly their wariness after the antitrust cases of the 90s). No matter how unsuccessful it has been to date Microsoft will always keep trying to leverage its existing technological position to create a situation where users find themselves entering text into Bing’s search box rather than Google’s. Google puts its resources into Google Toolbar for IE, Chrome, Chrome OS and Android in order to make this technological position irrelevant. Microsoft can’t leverage its dominance in desktop operating systems if most web searches originate from Android smart phones or come from browsers that Microsoft doesn’t control.
The vision: Microsoft’s vision for the future is dirt simple and to a certain extent less sinister than other possibilities: Microsoft wants to make the software and services that everyone uses. They want to make money off this. They want to be the only people doing this. It’s not that they want to make beautiful software or they want to make crappy software; they want to make a hamburger that the whole world will want to eat for $2. Every other consideration is ancillary: if they can get away with embrace-and-extend, then they do that, if open standards is what is forced down their throats, then they do that. The key to understanding Microsoft is that they never pass up an opportunity to make money or to guarantee a continued revenue stream. If they are not charging for something it is because 1) the market has proved that you cannot make money off it anymore (i.e., it has been commoditized to zero) and 2) it is part of a strategy to make money farther down the line. This may not sound heinous, but this attitude dictates how they approach product development: can we sell seat licenses? No? Can we charge different amounts for Home, Pro and Elite editions? No? Can we sell an expensive IDE for it that we will offer for free to students? No? Can we use it to leverage a different area of our business? Okay, it’s free, but throw some tacky ads in. In other words, Microsoft is always giving away the razor to sell razor blades. Moreover, if the razor blades aren’t dull and rusty, it’s because there’s enough effective competition that Microsoft wouldn’t be able to sell razor blades otherwise. Microsoft is famous for making crappy products that get better through successive iterations arguably as a result of effective competition. They essentially use the market to find the amount of quality they should put into their products. In the same way, they use the market to determine the level of sleaziness they should put into their products. I lost all of my email from the late 90s because Hotmail disabled the ability to export emails and then deleted my account after a couple of months of inactivity. Microsoft wouldn’t be able to do this today, but only because of the competition from Gmail ((In more recent and more petty news, I have two Xbox 360 hard drives, but if I want to import my saved games from my old drive I have to delete the saved games I’ve put onto the old one)).
Apple
The competition: Apple is a surprise competitor that Google actually made for itself. Apple and Google were friends. The Google integration with the iPhone helped make the iPhone a success. What happened is that Apple started acting like the shy guy who suddenly learns to assert himself: first they told the music industry how much a single would cost, then they dictated to AT&T the terms under which they would get to offer the iPhone and now they were telling Google what apps they could and couldn’t offer on Apple’s platform. As John Locke on Lost likes to say (over and over and over again), Don’t tell me what I can’t do. With its Android push, Google is on its way to making the iPhone a niche technology product (like Mac desktops) rather than the the industry (and street fashion) benchmark it has become. Within the next year, the current norm that you develop an iPhone app and then you think about developing an Android app will most likely be reversed. This has to be seen as overtly aggressive behavior at Cupertino. In fact, Google’s move should be viewed in light of the other players in the smart phone space. Google knew that RIM, Microsoft and Nokia wouldn’t lag behind the iPhone in UI and functionality forever, and when they caught up they wouldn’t default to Google as a search engine. Apple’s careful tending of its App Store may have made sense in terms of preserving Apple’s reputation for quality but it also signaled that Apple was falling back into its comfort zone as a premium brand for people who like to pay to avoid hassles. There is a whole other segment of the population, arguably the majority in the US, who are the exact opposite: looking for bargains, willing to trade time for money, possessed of an innate distrust of meticulously crafted aesthetic experiences. Google had to create the Android platform to protect the smart phone space that iPhone created (the post-Blackberry space) from the next iteration of Windows Mobile, since Apple is culturally incapable of carrying the majority of technology users in the long term. And see how Apple is going after that platform, with a boatload of patent claims!
The vision: Apple is basically the same company as Microsoft, except Apple has its pride of workmanship. Steve Jobs: “The only problem with Microsoft is they just have no taste. They have absolutely no taste.” The difference is more about packaging and presentation than content. They want the whole world to be able to eat their delicious $3 burger, on their beautiful tray, with their well-designed cutlery, etc. Apple is smart about using open standards when they benefit them in their competition with Microsoft, but they are just as smart about shutting things down, creating and carefully tending sealed ecosystems of developers and users. What’s valid about the recent criticism of Apple’s corporate tendencies (re: the App store, the iPad, etc.) is the recognition that Apple ultimately wants the computing user experience to only consist of interactions sanctioned by tasteful, reasonable and well-intentioned corporate adults. They don’t want their users’ experiences to be sleazy, buggy, hacky or quirky. This vision of the future isn’t immediately horrifying: everything is aesthetically pleasing and works reasonably well. Just note that beyond a certain level of functionality, you pay for things. You pay for content. You pay to get a developer’s license. You pay to follow the prescribed path. You pay to have your experience, including the “apps” that are on offer, vetted and sanitized for you. If you live in Apple’s world you will be generally pleased with the overall quality of UI interactions, the soundness of the developer APIs and the opportunities for extending the desktop in various sanctioned ways. You will also be constantly aware of the areas in which the will of Apple is strongly present and incontrovertible: Don’t touch iTunes, we’ll just block you out with the next point release; Don’t touch the iPhone’s firmware, we have ways of making things not work for you after that; Don’t release embargoed news or we will bury you in lawsuits, 18-year-old fanboy. The freedoms of the Apple world should be familiar to anyone living in a modern liberal democracy; you’re free to do most of the things that you would normally want to do (as long as you have a baseline amount of money) but there are certain outre activities that will bring the full force of the leviathan down on your head.
Or: everything I just said as contained in this poetic and hyperbolic Tim Bray quote:
“The iPhone vision of the mobile Internet’s future omits controversy, sex, and freedom, but includes strict limits on who can know what and who can say what. It’s a sterile Disney-fied walled garden surrounded by sharp-toothed lawyers. The people who create the apps serve at the landlord’s pleasure and fear his anger.
I hate it.
I hate it even though the iPhone hardware and software are great, because freedom’s not just another word for anything, nor is it an optional ingredient.”
Update (3/29/2010): In the comments Robbie points out that the just-so story about Google launching Android over Google Voice doesn’t work with the actual timeline. He also clued me in to the awesome fighting words coming from Apple, with this killer quote:.
We did not enter the search business, Jobs said. They entered the phone business. Make no mistake they want to kill the iPhone. We won’t let them.
The competition: This article is required reading for understanding Facebook’s competitive position. I remember ((because I’m old)) when Prodigy first started offering Internet it was just another pane framed with Prodigy branding and ads, like you could either play some weird dungeon hack game or: the World Wide Web. Your choice. Somehow Facebook has taken us back to the days of Compuserve, Prodigy and AOL in terms of creating a single point of access to all the wild, woolly information on the Internet. This has happened because people need access to controlled, walled-garden environments in order to find their friends and share with them but they don’t want to jump from site to site to do this. So the snowball effect went to Facebook, maybe initially just as a matter of aesthetics and the preppy instinct for networking. With the fait accompli of its success as an aggregator of social graphs, Facebook graciously offered to let the Internet come in out of the cold and provide content that would make Facebook even more sticky. The apps that are on Facebook are actually other websites that are designed to fit inside Facebook, often through “iframes” ((if you want to see where an app is really hosted you can sometimes right click in the main area of the app and open the iframe as a new window)). That is, Facebook literally frames the World Wide Web. As the article explains, a growing portion of web searches are going through Facebook (the Web results at the bottom of the search are provided by Microsoft). More importantly, Facebook is a major referrer to other websites; when you click on a link that a friend posts and get taken to a news site, Facebook is the referrer. It makes sense that you should advertise on the site that sends traffic your way. In the past that has meant Google AdWords, but Facebook is considered to be attractive not just for volume of its traffic but for the attributes of those visitors; Facebook visitors are surrounded by friends, playing games, looking for diversions — they’re in a better mental state for clicking on an ad, and if they like your product they might just send some free advertising your way on the same network.
In short, Facebook is a horrifying, unfathomable nemesis for Google. Google’s stated mission is to “to organize the world’s information and make it universally accessible and useful” and after largely succeeding in this mission they have been rewarded with a situation in which millions of users are voluntarily withdrawing their most useful information behind Facebook’s walls, where Google’s ads aren’t served.
The vision: Facebook is a problem for the world because it is hugely important yet there is no profound vision. The vision is, Grow, Grow, Grow. Everyone in the boat. The final victory condition is when every single person in the world plus various fictional and historical personalities are on Facebook and there are no more outgoing links anymore … because there is nothing outside of Facebook. What’s worse, the Wired article reveals that the Facebook people ((or this one anonymous “veteran”, who I’m going to beat up on a lot, because what he says is so emblematic)) think that they’re geniuses for basically reimplementing AOL:
Like typical trash-talking youngsters, Facebook sources argue that their competition is old and out of touch. “Google is not representative of the future of technology in any way,” one Facebook veteran says. “Facebook is an advanced communications network enabling myriad communication forms. It almost doesn’t make sense to compare them.”
It’s hard to express how ridiculous, mendacious and sinister this statement is. Let me run it again: “Google [an innovative and constantly improving search engine for finding other websites] is not representative of the future of technology in any way [because other sites are lame]. Facebook [one site] is an advanced communications network [it’s a network with one point of failure!] enabling myriad communication forms [you can talk on your friend’s wall or in your news feed or you can send email … through Facebook ]. It almost doesn’t make sense to compare them [Yeah].” This statement expresses contempt for the idea of a company that merely wants to organize the world’s knowledge because, after all, the future is about owning, controlling and monetizing the world’s knowledge because all the discussions and social interactions that produced the knowledge occurred on one’s property. A meatspace equivalent of this concept of the future is the spread of private-public spaces, like this one; you’re out in public in a nice, clean space, when you suddenly realize that all of this, the streets, the sidewalk, the street lights, all are privately owned. You might not mind the trade-off–freedom for convenience, safety and comfort generally makes a lot of sense–but how is it a measure of progress when more and more “public” spaces are actually privately owned spaces where you have to follow The Management’s rules? As the statement indicates, Facebook represents a future in which more and more communication takes place on one site and stays on that site. Obviously, Facebook wants to encourage this future, but it’s notable that the speaker has contempt for Google for not explicitly pursuing this vision.
Google Again
You may have gathered from this analysis that I like Google. I admit to being a bit of a fanboy (Google Mail, Google Reader, Google Voice, Android phone; in a moment of insanity I even released to Google my vital statistics through Google Health) but I feel this misses the point. In this article I am not trying to argue that Google is good and Microsoft, Apple and Facebook are bad. This argument, moreover, has nothing to do with the technical merits of any of these companies; I really like Android OS and I run Ubuntu on my home and work computers, but I can see that the iPhone and Windows 7 are in many ways better engineered, more stable or more aesthetically put-together pieces of software. Google has a rather odd way of presenting itself and its software, a minimalism and lack of UI polish, that probably alienates many users who are instantly comfortable with Facebook. I am arguing that either through accident or due to the idealism of its founders Google has aligned its interests with the interests of the open, participatory, distributed Internet, while these other companies have vested interests in … something else. In other words, Google by its nature as an Internet company and a congenital aggregator champions the open Internet; Google’s hegemony is an open Internet hegemony. These other companies are an OS vendor, a user experience maker and a social software connection factory. Their hegemonies are very different.
In Apple’s hegemony, for example, pretty much all media purchases go through iTunes. So it’s a market that’s run by Apple, and they take a cut, and they have a vested interest in making sure that all media is properly monetized. You can only synch iTunes with Apple products so they have hardware lock-in to their market. And they play cultural gatekeeper on all kinds of media and applications. This isn’t about the ethics or the legality of whether they can do this. Of course they can do this. This is about what would happen if Apple ruled the world. The answer is that the world would suck. As it is, Apple is pretty bad at holding onto market position in the long run (precisely because of its instincts for hardware lock-in and control), so we are free to praise their hardware and software and even to use their services (though I wouldn’t recommend it).
I would say that an Apple hegemony is not very realistic, if only because there will always be a significant portion of the population that feels alienated by Apple’s brand image. Some of us just don’t feel that clean. Likewise a pure Microsoft hegemony is not likely, because it turns out that the best operating system is made out of HTML, Javascript, CSS and HTTP, and Microsoft is absolutely incompetent when it comes to the Internet. A Facebook and Microsoft hegemony is more than likely; today it seems almost like a fait accompli. This article about Farmville contains the horrifying claim “Twenty-six million people play Farmville every day. More people play Farmville than World of Warcraft, and Farmville users outnumber those who own a Nintendo Wii.”. What is worrisome about Facebook is that it is built on network effect and the more that Facebook outpaces other networks the more that the network effect, rather than any other criteria of quality or innovation, guarantees its future dominance. Right now it looks like Facebook is a Katamari ball that is going to roll up the world, and once it does that there will be no pages left for Google to index except for Facebook’s front page (“It’s free and anyone can join”). More importantly, there will be no pages to serve ads on, and no advertisers willing to pay for tasteful contextual ads that don’t say “your Aunt bought this product. Why don’t you?”
Even if Facebook’s success wouldn’t lead to an absolute economic hegemony it could lead to the decline of Google. There is a feeling today that Google is growing too big and our (American? Western? Human?) leveling instinct is to wish for them to fall. There is even a rather twisted desire to see Google proven to be unethical and thus in hypocritical contradiction of its “Don’t be evil.” standard of conduct (twisted because all the world would gain is another unabashedly “evil” corporation, rather than one that makes highly relevant gestures like this one). There are a couple reasons why Google fading away doesn’t make the world a better place.
First, it should be clear that Google has already made the world a better place, or at least a cooler one. Gmail, Google Maps with StreetView, Google Books and Google Scholar, YouTube, Android — these things absolutely made the last couple years. Perhaps more importantly, Google showed the world how to do things in a different way– release your software in so-called “beta” so that you can crowdsource your user acceptance testing; create APIs and tolerant licenses for your services so that developers can mash up your service with their own independent offerings; make it easy for users to get data in and out of your services; demonetize entire industries and leave everyone to figure out how to make money in the aftermath.
Second, Google is an important political force in the world, both directly and indirectly. Directly, Google is usually on the right side of important issues relating to technology and civil society (from this article: “patent reform, copyright laws, digital books and open Internet access… Google also lobbied Congress, the U.S. Trade Representative, the U.S. Department of Commerce and the White House about international freedom of expression and online censorship”). Indirectly, Google is a major supporter of open source software through their many open sourced projects, the Google Summer of Code project and more recently their mass deployment of the Linux kernel in the form of Android devices. In addition, there is a kind of hands-off libertarian streak to Google’s policies that has influenced the world in a good way. I’ve always been impressed by Google’s stance that it won’t alter its search indexes to avoid offensive results. More and more, Google has come be an unlikely defender of the principles of free expression and fair use against states that can’t handle the radically destabilizing effect of the Internet (not just China, but supposedly liberal countries such as France, Germany, Australia and the US).
I will conclude this article with a third reason that the world would be worse off without Google. It may seem a bit obscure and technical but it strikes me as the most important, and I will devote more time to just this reason, cuz well it’s the most interesting to me.
Open Standards
Google is the great champion of open standards. Open standards may seem irrelevant from the standpoint of an end user, interesting only to a software developer like myself, but they are actually critical to maintaining a general atmosphere of freedom from heavy-handed systems of control. This is because the opposite of an open standard is an economic wedge that is used to create a situation of lock-in and compulsion. Open standards are particularly important when it comes to any mode of communication. To understand the effect of not having open standards, imagine if there were many different kinds of telephone that could not talk to each other. You would either have to own many telephones or you would have to carefully coordinate with all the people you want to talk to so that everyone uses the same kind of telephone. This is the actual situation we have today with IM, with MSN, Yahoo, AIM, Google Talk, etc. With technologies that involve more money and infrastructure there is usually a standards war early on in the commercial rollout of the technology. Perhaps the most famous and iconic of these standards wars is Betamax vs. VHS in the 70s (though people say good things about AC vs. DC). The thing is, the goal of a standards war is not to establish an open standard, but to arrive at a de facto industry standard. An industry standard can be something that only one company is legally entitled to make, because they own all the patents and IP on it, yet the entire industry depends on this product to function. With DVD, for example, anyone who wants to make a DVD player has to pay a company that licenses the software library used for reading DVDs. ((You can actually go to jail for trying to figure out how to read a DVD on your own.)) Once you win a standards war you have everyone else over a barrel.
Google has made a point of using open standards in its products. It should be be made clear: Google does this purely out of its own self-interest. Imagine, in the situation where there are different standards for telephones, that you arrive late on the scene with your own telephone. Let’s say Company A has 40% of the market, B has 30%, and several also-rans have the remainder of the market. Do you try to go in with your own standard and displace one of the other players? The problem is that Company A has the network effect; if you don’t like Company A then you’re probably using Company B; if you try to compete in a zero-sum way then you’ll just end up as another also-ran. How do you get market share when there are strong network effects in play and it’s too late to create an industry standard? You make the network effect irrelevant. You say to all the other also-rans, “Let’s use the same standard. No one will own it. No one will license it. Anyone can use this standard.” You turn the remainder into a network bloc that is the same size as one of the larger players.
Google has done this most notably with Google Talk. Unlike MSN Messenger or AIM, Google Talk doesn’t run on a proprietary “Google Protocol”. Instead it uses the Jabber protocol, which is the same thing I use at work. I can connect to any Gmail account from my work IM and vice versa. The voice chat component of Google Talk is also an open standard (unlike Skype’s). More recently, Google has been promoting its slightly weird Google Wave as an open protocol that anyone can implement. That is, they are offering to establish an open standard even before anyone has claimed this space of hybrid IM/email. They’ve done this in part because they want to make sure that Wave succeeds as a technology and not just as a product. Novell has already bought in, thus helping to increase the chance that weird hybrid IM/email will succeed as a technology.
I was inspired to write this entire article because of something that I saw when Google Buzz rolled out. Google Buzz was not in itself a particularly exciting offering from Google. They added a section to Gmail that shows a stream of items from your friends, initially determined as your most frequent contacts, plus they have their own geo-tagged Twitter/facewall thing that I have no reason to use. The most important aspect of Buzz is that the items, which can all be commented on in Buzz, can come from multiple sources: Twitter, Flickr, Youtube, etc. These are the default options for sharing, but you can actually add anything that has an RSS feed to your list of sites that Buzz publishes updates for, provided that you have to ability to “claim” it as your own. So for example, this here site stupididea.com is part of my Buzz profile, and when I publish this article on my blog, an update will go out to all the people subscribed to me.
Minor Digression
Here’s how you syndicate your own blog through Google Buzz. First, edit the html of your blog theme and put this tag between the
<head>
and
</head>
tags:
<link rel="me" type="text/html" href="http://www.google.com/profiles/your.username"/>
So in my case in the WordPress theme for http://www.stupididea.com I put this tag:
<link rel="me" type="text/html" href="http://www.google.com/profiles/tristil"/>
Then you have to edit your profile through the edit link that is displayed next to your name on the Buzz page.
You have to make sure to click the checkbox so that Google knows that this page is “about you” rather than just a page you like. Finally, to make Google pick up your site right away you can use this site: https://sgapi-recrawl.appspot.com/.
You should then see something like this:
End Digression
It’s not the easiest process, but what I really want to point out is how Google is building both technical and conventional openness into its Buzz platform . In technical terms, Google’s use of the XFN open standard (the rel=”me” in the tag above) makes it easy for developers to create sites that can hook into Buzz. There’s no developer account signup with a dedicated key or anything. In terms of conventional or effective openness, Buzz is doing things differently than Facebook. Instead of inviting other sites to set up shop within a walled garden, they’re providing a way for sites to keep users updated on their content within a single interface so that they will remain attached to those outside sites. This may seem like a nothing difference, but think of it this way: with Buzz’s Flickr connection the idea is to keep you apprised of what’s happening on Flickr, since you might not check it that often. Google Buzz probably increases traffic to Flickr. Buzz’s Twitter connection means that people who can’t be bothered to be on Twitter see the tweets from their friends, etc. This is the opposite of Facebook’s strategy, which is to create a space for content that will make Facebook itself more sticky. They want you to view your pictures inside Facebook galleries, to comment on them within Facebook and to share them on to other Facebook accounts.
To be honest, at the moment Google Buzz isn’t much different from other aggregator sites like Friendfeed. To understand what’s actually cool about Buzz you have to look at what Google is planning to do with it. On the Buzz API documentation page toward the end there is this description of what’s to come:
Over the next several months Google Buzz will introduce an API for developers, including full/read write support for posts with the Atom Publishing Protocol, rich activity notification with Activity Streams, delegated authorization with OAuth, federated comments and activities with Salmon, distributed profile and contact information with WebFinger, and much, much more.
All those terms refer to open standards for technologies that allow Google to achieve a counterintuitive goal: they remove Google from a position of absolute control and open up possibilities for other sites to continue to exist and thrive. Each of these technologies describes a way to distribute the control and authority over a social software network. The ones that are particularly interesting are Salmon and WebFinger. With Salmon the idea is that comments are maintained between Google Buzz and the actual blog post that is being commented on as well as any other site that is using the Salmon protocol. So for example if people are interested in this blog post, at present they may choose to comment on it through Google Buzz or directly on my website. This kind of sucks for me, because now people are commenting in two places, and if most of the comments are in Google Buzz it may look like no one is interested in my post. If I were making my living off this, I might feel that Google is stealing my oxygen, by letting people share my blog posts and then annotating them up in the Google cloud. So something like Salmon is a way for Google to contribute back to the site that contributed the content, and also to allow another aggregator-type site to consume and contribute back in the same fashion. Through this technology, Google, the content sites, and the other aggregator site are placed on the same level, so that competition is based on feature implementation rather than a power position. In a similar fashion Webfinger is a way for Google to allow other sites to put their users into the same mix of people as Buzz without simply signing their users up for Google accounts. Some weird also-ran social network like Bebo or Badoo can connect its users to Buzz without ceding its “ownership” of those users. They could even bring the Buzz technologies into their own site so that they won’t lose any of their branding or web impressions. It’s not clear how Google will manage this, but in general they are unlikely to care, because every such use increases Google Buzz’s network effect.
Google is in this game for network effect, and in particular their goal is to destroy Facebook’s current ungodly influence over users and content producers. They will sacrifice their own chances for a market power position in order to achieve this goal. This is because 1) they know it’s too late to beat Facebook at its current game and 2) they don’t actually want to run something like Facebook. The fundamental truth about Google is that they don’t like managing things. As much as Google keeps growing, they don’t want to have to hire on a huge number of mediocre employees to watch the plantations, to moderate content and issue bans. They only want to hire the brightest people in the world to make the software that aggregates the content that other people produce. Because as much as Google appears to be something else Google is still an Internet ad company. Everything else they do, as abstract and seemingly unrelated as it is to this core business, is actually about the ads. Google is forever like the US during the cold war, fighting a war in Southeast Asia to deter an attack on West Germany. The good news for us is that this means that Google is fighting for the open Internet, not out of any particular altruism, but because only the open Internet can provide the huge year-on-year revenues that Google has enjoyed up till now.
Finally, then, what’s so special about the open Internet? Why should we care? There is a whole other meandering blog post in this question, but I’ll simply conclude with this formulation: the open Internet is a good because it is uncontrollable. The open Internet has low entrance costs. Facebook came to power through the open Internet, not through a cooperation deal with the phone company or through the blessing of a government. An Apple, Microsoft or Facebook Internet is a controlled Internet. There are still opportunities there but there is also a collar around your neck. The Internet isn’t about signing terms and conditions documents to get going. It’s not about living within a single clean white frame.