"Thank you, sir, for making Firefox!"
Last night at the In-n-Out Burger, a random dude saw my T-shirt and said "Thank you, sir, for making Firefox!". He said it in the kind of tone of voice you might use to thank, like, a firefighter or a policeman for putting their life on the line. (Geez, dude, I think browsers are important too, but not that important. Have some perspective.)
When I got done awkwardly spluttering over the shock at being called "sir", I finally blurted out "... you're welcome?". That was as far as the interaction went, because the guy started up a conversation with his friend before I could say anything else. He didn't want to start a conversation with me, it was just a drive-by thanking.
It was a weird interaction for several reasons. First, anybody could be wearing a shirt with a Firefox logo on it, so it's weird to jump to the conclusion that I work for Moz (even though it happens to be a correct jump in this case). Second, I work in Labs, so I barely touch Firefox per se; mostly I do weird experimental stuff. Third, I've only worked here for like a year and a half, so Firefox existed long before whatever small contributions I've made towards it. I feel weird getting credit for things that other people did.
I guess I also feel weird because this is the first time in my life I'm working for a company which is almost a household name (at least among tech-savvy people) and therefore people are applying their opinion of that company to me, without knowing anything else about me. It's mostly a positive opinion, so I guess I'm glad I don't work for, like, the IRS, but it still feels weird.
What should I say to people when this happens? "Don't thank me, thank our thousands of open-source contributors?" Or maybe I should turn it into an informal customer survey and be like "Thanks. What's the number one Firefox bug you want fixed / feature you want added?"
At work the other day.
Me: "Hey Jinghua, is that a Cylon action figure on your desk? From the new Battlestar Galactica (haven't seen it yet, no spoilers plz)?"
Jinghua: "I love Cylons! I want to be a Cylon!"
Jinghua: "They're so DISCIPLINED!"
The other day Mozilla Labs was asking us to volunteer our inspirations, like "What makes you get out of bed in the morning and come to work?"
Suneel said, "We spend more time with our browsers than with our families! So we should want to personalize our browsers and have a deep personal connection with them."
He thought that was inspirational? Seriously? Cuz I think that's totally f***ed up. More time with our browsers than our families? Is that true? Is my work enabling that kind of behavior?
If so, that doesn't motivate me, it makes me want to quit.
Last Monday, I was walking to work, and Mitchell Baker passed me in her car and offered me a ride the rest of the way to the office. Along the way, we had a really interesting talk about internet privacy. Mitchell is very concerned about how much data ad networks are collecting about us online without our knowledge. (Basically if you look at ten sites that all have ads that all happen to be from the same ad network, then that ad network knows what times you were at each of those sites, and they can build up a profile of your browsing habits.) Mitchell is the Mozilla Foundation chairwoman, and her mission is to protect privacy and freedom on the Internet; to her, Firefox is just a tool to help do that. So she's trying to figure out how Firefox can do more to protect people from scary ad network shenanigans.
I had been in a bit of a slump; the week before, when I wrote this angsty post and this other angsty post, was a low point in my enthusiasm for the Internet, and my emotional state in general. Talking to Mitchell was significantly re-motivating.
Later the same day, my boss Chris came to my desk. He said he was worried about me and asked how I was feeling, and admitted that he didn't really like Facebook or Twitter or the iPhone either. I found out that the reason he was worried was because he had read the angsty blog posts I just linked to.
So I had another really good talk with Chris, about the direction the Internet is going in, what we don't like about it, and what we can do at Mozilla to help steer it in a better direction. We agreed that we want to fight against the Facebookization of the internet.
By that I mean: there shouldn't be a single company which controls everyone's friend network data, refuses to let that data be portable to other services, and uses that data to lock people in, to sell them ads, and to basically moderate their relationships with each other. If one company achieves too much dominance over social networks, then we run the risk of the Internet turning back into AOL, and I don't think anybody wants that.
So it's not that there shouldn't be services like Facebook; clearly everyone loves Facebook and wants to keep doing all the things it lets them do; but my data about my friend network should belong to me, not to Facebook or any other company. So how can we make Firefox help with that?
Finally, Monday evening as I was about to go home, I ran into John Lilly, the CEO of the company. He said that he was worried about me too, and wanted to know how I was feeling, and I found out that he had also read my angsty blog posts. And he was really concerned about the direction the Internet is going in, too. We had another good talk; he reminded me that the wonderful thing about the Internet isn't the technology, it's how it brings people together with people, and "Without the Internet, who would you be telling your game ideas to?" (and I was like, damn, the frelling CEO reads my nerdy blog posts about frelling retro-RPG sprite artwork. Holy crap.)
So, I learned several things that day. One is that I'm not the only one who thinks that all these stupid bandwagons that Silicon Valley keeps getting on are not necessarily in the best interest of the wider world. Two is that I work at a company where I have small but measurable power to fight against the unhealthy trends of the Internet. Three is that I work at a company with very caring, humane people. Four is that apparently, like, all these people read my blog.
I wondered, briefly, whether this readership means that I should tone down the sometimes harsh rhetoric that I use when writing here. I got mad and said "Rar, this makes me want to quit my job", and I didn't really mean that, I was just using hyperbole to express my emotions. But the people I work for read it and got nervous. Maybe I need to restrain myself or just keep quiet about some things?
But you know what? Screw that. I'm going to keep doing what I've been doing since I started this blog. I'm going to tell the truth to the best of my ability, I'm going to think about whether I'm saying what I mean to say, whether I would be harming anyone by saying it, and whether I'm telling secrets that are not mine to tell. But I'm not going to worry overly much about offending people's delicate sensibilities and I'm not going to let the potential for stepping on toes stop me from telling the truth as I see it. Sometimes I'm going to screw up, and when I do, I'll admit it like a grown-up and work to correct things.
I'm especially not going to worry about what Mozilla thinks of this blog, because Mozilla is about protecting the freedom of the internet, and blogging my views is what "the freedom of the internet" is for, am I right?
Sunlight foundation Hackathon
The Sunlight Foundation is a nonpartisan organization dedicated to making information about our government's shenanigans more easily accessible, for the sake of transparency and accountability and all that good stuff. They do great stuff like document all the connections between the pharmaceutical lobby and the members of congress working on health care reform.
They're having a hackathon Dec 12-13. Mozilla is going to be holding one of the events. I'm going to do a project for it.
But what? I don't know yet. I need to think of something cool. Some kind of interactive mash-up or data visualization or cool map based on publicly available governmental info; something that makes a strong point with data and that hasn't been done before.
I'm looking for suggestions, so let me know if there's any correlation you'd particularly like to see.
The dark side of the Internet
This cry of despair, written by a former Mozilla intern who I worked with briefly in summer 2008, reminds us of the dark side of knowing everything about everybody.
It also reminds me, a lot, of the issues that a certain webcomic was trying to get at. I should really make time to get back to that. Now, where did I put my sketchpads after I moved?
Summer travel plans
Wow, I didn't write anything pretty much for the whole month of June. And I can't even blame Starcraft this time; it was really the result of work -- trying to get Test Pilot ready to ship in the Firefox 4 beta took up all my time and then some. (That link has a video of me and Jinghua with goofy flight goggles, if you're into that sort of thing.) I did a lot of Test Pilot work in June and not much else. I brought my work home with me a lot of evenings, did a lot of weekend coding, and the times I was able to get away I basically wanted to do anything except type words into a computer. So instead of blogging, I went outside. Remember outside?
Oh hey! Travel plans! We've got some! Sushu has just left for Moscow today. Tomorrow morning I'm flying to Chicago for a long overdue visit with the family. Right after that I'm flying to the global Mozilla summit, which this year is once again in Whistler, British Colombia. Then I'll return and meanwhile Sushu will be traveling to Beijing by land, spending a week on the storied Trans-Siberian Railroad. We're going to meet up in Shanghai and spend a week there going to the 2010 World Expo. Then it's off to Japan, where I will spend a couple weeks without using up vacation days by working from Mozilla's Tokyo branch office, and we'll travel up to North on the weekends to see the Three Famous Summer Festivals of Tohoku. We'll both fly back to America together on August 10.
Since I'm way behind on stuff I want to write about, and since I'm not going to see Sushu for two weeks ;_; I'm going to try to do some massive blomiting. Let's see if I can hit 50 posts in two weeks! Here goes!
What's the best thing I could do with my life?
I turned 30 this year, which brings with it certain thoughts about milestones, mortality, straddling the past and the future, that sort of thing.
I've been unbelievably fortunate in my life to date. By any objective measure, I'm doing great. I've got a promising career, a great relationship with my wonderful wife, I've got loving family, all the money I need, leisure time, etc. On Maslow's pyramid I've stopped having to worry about anything except the very top layer.
Naturally, this makes me think two things. One is, "There's nowhere to go from here but down" which is pretty depressing. My health is certainly never going to be as good again as it is now. I'm growing more and more white hairs, did you know that?
The other, possibly more useful, thought is "With all my own needs met, how can I help others?" Followed by, "If I can think of a way that I could plausibly make the world a better place, do I not have a moral obligation to act on it - as soon as possible, and with all the force I can muster?" Awareness of the finiteness of my remaining years and the infiniteness of things I could possibly be doing, I must then ask myself: "What's the single best thing I could dedicate the rest of my life to doing?"
Writing internet software probably isn't it.
Like, writing software is totally a fun job. I'm really lucky to have some skills in a field where I can do fun things and get paid (let's face it) ridiculously well for it. And I want open source software to succeed, and I want the Web to stay as free and open as possible, and I want web browsers and software in general to have better user interfaces. So it's not like what I'm doing now is something totally frivolous. I agree with everything in the Mozilla manifesto and I like working for a place that has a manifesto. I just think that, all things considered, web standards probably ain't the overriding moral issue of our time.
What is it, then? I don't know, exactly, but I look to the future and see scary, scary shit on the horizon. If technologically advanced human civilization is going to last the next hundred years -- and I hope it does, because I kinda like technologically advanced human civilization -- then there's some stuff we need to figure out fast.
How we're going to feed the 10-12 billion humans who will be living on this planet by the time population growth levels off, for starters. And how those people can raise their standard of living without rendering the atmosphere unbreatheable and the seas toxic, maybe that too. And whether they're going to live in systems with freedom of press, speech, and religion. What the hell we're gonna do with all these nukes left over from the cold war, and the new nukes that Iran and Pakistan and North Korea made / are making, and how to stop having crazy dictators and terrorists who want to use them. How people of different religions can live together and stop killing each other so much, maybe. How we're gonna prevent, or adapt to, melted ice caps, if global warming is real. How we're gonna make electricity and go places when the fossil fuels are used up. How to get safe drinking water for the third world. How we stop fisheries and other ecosystems we depend on from collapsing entirely. You know, that sort of thing.
Whether Firefox loses market share to Chrome just doesn't seem that important, comparatively speaking.
I don't believe in any religion. So I think this life is probably all we get. And there's probably no guiding hand pushing the world towards a happy ending. No cosmic justice, no reward for good behavior, no prize for trying hard. No Rapture or Singularity to save us from ourselves. Just human beings, our decisions, and the effects our actions have on each other. Some religious people describe my worldview as an evasion of moral responsibility, like I decided to be an atheist so I could have a hedonistic lifestyle of drugs and promiscuous sex, or something. I see it quite the opposite way. If this life is all we get, all the more reason to make the best of it. If all we have is each other, all the more reason to treat each other well. If there's no absolute standard of right and wrong, all the more reason to think through the consequences of our actions. If there's no cosmic justice, all the more reason for people who want justice to work towards building it on Earth.
The inescapable conclusion of my philosophy is that I have a moral duty to figure out my optimum strategy for reducing human suffering and/or increasing the probability of long-term human survival... and then to act on it decisively. Even if I fail, I'd rather look back on my life and say "At least I tried".
What all this means in practical terms is that yes, I'm thinking about a career switch. Not necessarily this year, or next year (there's a lot I can still do at Mozilla to position myself for the leap) but soon.
Soon, before I get too comfortable where I am. And I am getting too comfortable, I think. Writing code is less and less of a challenge as the years go by. As the year 2000 recedes into nostalgia, the computer/software/internet industry feels less and less like a frontier, a place where visionaries and madmen come to hew form out of chaos. It feels more like a place where professional certified engineers come to ship product, so that rich kids can go down to Fry's and buy a pocket gadget that's slightly better than last year's pocket gadget. Being a non-profit, Mozilla stands a little bit apart from all that. But we're still really focused on, like, how do they say this, "having a presence in the mobile space".
(I can't believe I used to care what operating system people used. God. Silicon Valley is so disillusioning. It's a snake pit of sell-outs and phonies, all chasing each other's tails. I gotta get out before I turn into one of them.)
I need to switch careers before me and Sushu have children, that's the really important thing. Once I have financial dependents counting on me, it will get a lot harder to switch and a lot more tempting to just, you know, do what I'm told so I can keep climbing the corporate ladder and get raises to put towards the kid's college fund.
The only real question is, what to switch to? Science, business, politics, social work - how to have the best chance of making a difference? Maybe I should become an artist of some kind. Start an artistic movement with a manifesto and followers and stuff. Fuck up people's complacency. Try to shift the culture a few degrees in a less stupid direction. They're doing promising research in nuclear fusion energy on the other side of the hill in Livermore. Fusion could save us, if we ever get it working. I wonder if they need programmers. I wonder if they're even going to stay funded with all the budget deficit. Maybe I should move to another country. Maybe to the developing world, where the action is, where a small group of ethical technologists could make themselves useful allies to the downtrodden. Is there an organization I could join doing good work like this?
I'm not ruling anything out at this point. I'm open to totally crazy ideas. Shoot me a proposal.
Binary option modeled off of biological sex
Somebody filed this bug on Test Pilot:
I just signed up for Mozilla Labs' Test Pilot program, since it seems like an
awesome project for expanding knowledge in the open source/open web community.
Unfortunately, when I took the user survey that gathers basic demographic data
about Test Pilot users there were only two options under "Gender": Male or
Female. This binary option modeled off of biological sex does not reflect every
individual's gender identity; there is, for instance, no choice that a
transgender person might feel comfortable selecting. This de facto excludes
transgender people from having their demographic noticed in the Test Pilot data
results and thereby having their voices heard. Furthermore, it weakens the
effectiveness of Test Pilot's study since, presumbably, the purpose of asking
about users' gender is to observe different usage patterns based on gender. Not
having an option for transgender users to choose obscures a data set.
And first I was like "what huh?" but then I was like "Hey, why not do what they ask; it could mean a lot to certain people and poses no possible cost to anyone else." So the "other" option has now been added.
A lot of flying this month
Tomorrow I'm flying to Sao Paulo, Brazil, in order to give a Mozilla talk at Brazil's largest tech conference. It's called Campus Party, since it started as basically a college LAN gaming get-together, but it grew over the years into an enormous tech conference. Since there will be a lot of gamers there I'll talk about the Web as a gaming platform, show off some of the coolest entries from the Mozilla Labs Game On 2010 contest, and demo some features that we've added to Firefox 4 to help make game development on the Web a real possibility.
It will be my first time in the Southern Hemisphere. I'm a bit nervous as I don't speak a word of Portuguese. Wish me luck.
Then, less than a week after I get back, I'll be flying to Boston to give another Mozilla talk at MIT, this one to the engineering students about why they should come work for us and help protect the freedom of the Internet. I'll also be demoing cool stuff at a table at the MIT career fair.
Man, I always wanted to go to MIT when I was a kid. Never thought it would be like this.
Fox Business "news"
Mozilla's new CEO, Gary, was interviewed on Fox Business News.
It's painful. The tagline on the bottom of the screen said "GODZILLA OF SEARCH ENGINES". (We're not a search engine).
They asked Gary about the "IPO". He told them, um, no. (We're a nonprofit.) And the Fox lady was like, "The Godzilla of search engines is not going public, wow, that's a scoop !"
How many mistakes can you cram into one sentence?
(Obligatory Simpsons quote:
Mayor: "May the, uh, force be with you!"
Leonard Nimoy: "Do you even know who I am?")
This morning somebody put up this sign at the office. And somebody else made this image:
(I think the meme is supposed to be spelled "Y U NO IPO", but close enough)
This isn't even the first time Fox Business News have invited us on so they could embarrass themselves on TV. They interviewed our old CEO, John Lily, once, and in that one they told the audience: "Firefox is the most popular search engine besides Google and Apple".
(That's like saying "Firefox is the most popular video game besides Nintendo and France!")
Didn't anybody on the staff have, like, a teenage son who they could have asked about this confusing Internet thing? You don't get something that wrong unless you're intentionally trying to mislead people or you're unbelievably lazy. And I can't imagine any way these mistakes would help push an ideological agenda so I must assume it's plain laziness. They were too lazy to do thirty seconds of research on people they're about to interview or even to skim the info packet that our PR team sent them.
The problem with the mainstream news media (and don't fool yourself Fox, you are the mainstream media) is that nobody is ever punished for being wrong or rewarded for being right. Their only incentive is to bring in viewers and therefore ad dollars, and who cares if what they're telling viewers is complete bullshit? I wonder if the concepts of correct and incorrect even register in their minds.
(Oh, but just look at all those screens in the background showing... numbers... and orange rectangles swirling around! So high-tech! So professional-looking! They must be trustworthy!)
Nobody better be making any business decisions based on this show. Because they don't care if they're right or wrong.
They just don't care.
Playing at the Firefox 4 launch paty
Firefox 4 was released today. I was asked to play accordion at the launch party. (Maria from PR says that my accordion is now "a meme". Oh boy, I don't know if I like the sound of that.)
I played La Bamba when we hit 1 million downloads and played Funiculi, Funicula at the end of the party. (I was sticking to public domain stuff cuz I didn't want to cause copyright trouble).
It was broadcast live to the whole world on air.mozilla.com and oh god I was so nervous my hands were shaking and I had confetti stuck to my fingers. I know both songs cold but I panicked and made stupid mistakes like starting on E instead of E flat but I recovered and pulled it out at the end.
Oh man. Gotta play in public more so I can get over my nervousness.
Got the whole office to myself
So Mozilla is flying everybody to Las Vegas this afternoon for some kind of company getaway / party thing until tomorrow night.
I could have gone, I guess, but I hate Las Vegas. And besides, by staying behind, I get to have the whole office to myself from now through the end of Tuesday. That means no meetings, nobody asking me questions, no interruptions and no distractions for a whole day and a half. I can finally get caught up on work for a change.
I'm pretty excited.
HTML 5 Game Development Course
The course page will be here (still very incomplete).
I know some of you readers will be interested in this topic (Googleshng? Aaron?), so I wanted to give you early notice about it. There is a prerequisite task which you should try to do on your own before joining the course. If you're interested, you should try to do the prerequisite task on your own between now and April 25 so that everyone joining the course will have the same minimal level of understanding.
Code Rush - the end of Netscape and beginning of Mozilla
This video sure is a blast from the past: Code Rush - a documentary about the time Netscape open-sourced their code base, named "Mozilla".
Back then, everybody was thinking of it as the end of Netscape. In retrospect, it wasn't an end, it was a beginning.
Random observations I jotted down while watching Code Rush:
- Oh man Netscape! They used to sell Netscape in a box for money, can you believe it?
- Bug lists on paper! Mozilla on disks! N64 games! The first tech stock bubble! Bill Gates in front of the Senate! Back when the Internet was new and exciting and people would invest in a company just because it added ".com" to its name! I'm... not really nostalgic for any of that, except the "Internet was new and exciting" part. I kind of miss that feeling now that the Internet is ubiquitous.
- Netscape had 2000 employees at the time! That's huge. Mozilla today has less than one fifth of that number. And yet the number of Firefox users today is greater than the entire Internet population in 2000, and probably double the Internet population of 1998. We're doing a lot more with a lot less.
- In retrospect I think Microsoft did the world a favor by destroying Netscape's business model. (They didn't do the world a favor by flouting web standards, failing to fix security holes, or disbanding their browser team and letting IE stagnate, or by the monopoly tactics they used to try to keep competitors off of their operating system...) But by giving IE away for free and destroying the "sell browsers for profit" model, they drove the cost of browsers down to "free" where it has stayed ever since, to the benefit of users. Anyway I'm happy that we've gotten back at Microsoft in the free market instead of getting back at them in court.
- I love the explanation for "Zaroo Boogs", which you will still see today if you do a search on Bugzilla that returns no results. It's as if the concept of zero bugs is so unthinkable, so far beyond this fallen mortal realm, that it would be blasphemy even to say the words "Zero Bugs", so we misspell it on purpose just like orthodox Jews leave out letters from the Name of God.
- Back then Netscape had a hard time explaining to the press what the hell "releasing the source code" even means. Today when you say a software project is open source, it's so normal that nobody bats an eyelash. They're like "which license?"
- At about 27 minutes we get to see Brendan Eich and Stuart Parmenter who still work with me today! At 45 minutes we see Chris Hoffman who is sitting about 5 feet away from me right now. Those three are the only people I recognize.
- I like the guy at 37:22: "Stock options are a scam". Mozilla doesn't even have stocks. And I've never heard anybody here talk about becoming a millionare overnight. So those bits of the video seemed very foreign.
- Nice quote about Netscape getting bought by AOL: "Netscape lived fast, died young, and left a tired corpse."
- At 44:20 we see a glimpse of the aluminum-can-sculpture of the Golden Gate Bridge. That thing was still stuffed into a corner of the office until 2009 when we moved and finally got rid of it.
- Netscape only lasted for four years as an independent company! That's astounding; didn't it seem like much longer than that? I've now been at Mozilla for more than 3/4 of Netscape's lifespan.
The thing that struck me most was how much everybody in the video is burning themselves out with these all-night desperation coding runs for weeks at a time. Mozilla's not like that. A few of the key engineers at Mozilla choose to work late when we're close to shipping but I've never seen this kind of death march atmosphere. We'd rather push release dates back if software isn't done yet. We all seem to have a pretty good work-life balance and we still shipped Firefox 4 in a reasonable time. We're doing better with fewer people working less hours. So what is it that we're doing right today that we were doing wrong at Netscape? Is it the volunteer contributions Mozilla gets that make the difference? Was it a failure of Netscape management that led to unsustainable schedules? Or was it the intense pressure of having to satisfy stockholders while competing with Microsoft?
Discussion question: Is it just me or does the internet/software world seem much slower-paced and less exciting today than it was back then? Maybe it's just my perspective, because back in the 90s working in software was something I aspired to, and today it's something I gotta get out of bed and commute to every day. But if there is a real difference, what do you think it is and what do you think made it change?
Motivation and de-motivation
Pep talk from the CEO about how great we're doing and how we're all such lovely hardworking smart people and our product is amazing and everybody loves us and we will definitely succeed beyond our wildest dreams: Totally demotivating. It just sounds phony; it makes me wonder what bad news he's hiding, and why he's wasting our time talking without saying anything. Makes me want to check my email and then take a nap.
Talk from the lead UI designer about all the things that Firefox does wrong, all the things about it that suck, oh my god we've known for years that our download manager interface sucks why haven't we fixed it yet: Totally motivating! Makes me want to roll up my sleeves (metaphorically speaking, like all the programmers here I wear t-shirts) and fix stuff. Makes me want to try harder. Reminds me why I'm here. After all, if Firefox was perfect we could all go home, right?
Mozilla has this weird split-personality thing sometimes:
There's the global open-source volunteer community who want to do what they believe is right for the web, whether it's popular or not. They joined Mozilla because it's open-source and that means a lot to them. They care deeply about privacy, free speech, and arcane points of copyright law. They stay up nights worrying about bad SSL certificates and whether every last corner of the CSS 3 standard is implemented correctly. Supporting a patent-encumbered video codec is like a moral offense to these guys. Call this side the hackers: they can be zealous and grognardy but I love them.
On the other hand, there's the silicon valley people. We've been importing a lot of them over the last couple of years, sometimes hiring them directly into upper management positions. The silicon valley people are the ones who worry about our market share, our revenue, about competing with Chrome, about whether leading newspaper tech-column writers gave Firefox 4 a thumbs-up, about having a presence on smart phones, about Twitter and Facebook integration, and about having a slick and attractive interface.
Now I give silicon valley types a hard time on this blog (especially when I make fun of their buzzwords) but Mozilla needs them. It's no good being so idealistic that you sabotage the practical needs of an organization. If we had the perfect browser from a free-software-purity standpoint but only a thousand people used it, then we would have zero impact on the direction of the Web and our mission would be a failure. Besides, in order to pay people to work full-time on Firefox we need to get money somehow.
So it's not like the silicon valley people are bad. We need them just as much as we need the open-source hackers. And I'm making them sound mutually exclusive but really there are many people who can play both sides depending on the time of day, so it's more accurate to contrast the open-source hacker attitude with the silicon valley attitude.
...but, all that said, the reason I'm writing this post is that I have noticed that my personal motivation level goes up the more I swim in the open-source hacker attitude, and it goes down the more time I swim in the silicon valley attitude.
The silicon valley attitude is most prevalent in the Mountain View office, unsurprisingly, so partly this means my motivation goes way up when I get to hang around the Mozillians who don't work in Mountain View; they bring a refreshingly different perspective, one where the world doesn't revolve around the latest stuff Google and Facebook are doing.
Treading water: summary of a typical frustrating week
Monday: get up, regret leaving my bike at work on Friday so I have to take the bus. Get in just in time for my first meeting of the day, have meetings non-stop one after another until 4 or 5 pm. Too exhausted and irritated to get any coding done after that. Regret not having done more coding last week.
Meet Sushu for dinner, eat out because there's no time to go home before my accordion lesson. Drive to accordion lesson. Regret not having practiced accordion more last week. Apologize, make excuses.
Tuesday: put clothes on, notice "University of Chicago Aikido Club" t-shirt in closet, regret dropping out of Aikido in 2008 and never finding the time to go back to it.
Try to catch up on my never-ending flood of email, or at least flag the most critical ones to respond to and delete the rest. Regret not responding to old e-mails or instituting some better kind of e-mail sorting system. Think about all the people who offered to work with me on cool ideas, regret never having had the time to write back to them.
Read about the Japan tsunami, regret never finding the time to keep in touch with the people in Kamaishi.
Go to the game store on Tuesday night to make my toy soldiers fight other people's toy soldiers. Regret all the time I spent painting them instead of doing something more useful.
Wednesday: deal all day with interviews, write-ups, debriefs, random people asking me questions on IRC, random people stopping by my desk to interrupt me with questions, random people with test pilot data requests. Regret not having written more code on Tuesday. By the afternoon I've almost caught up to where I was when I left work the previous Friday. Right when I'm on the verge of starting to be productive, it's time to go.
Go to Chinese family dinner, regret not having studied Chinese at all during the last week and not being able to follow the conversation any better than I could a week ago. Apologize, make excuses.
Thursday: look at the newly filed Test Pilot bugs, try to remove the duplicates, close ones that need closing, test and accept patches where they've been uploaded, requrest code review where something I wrote needs code review, and correctly sort the rest. Regret not having a better unit test suite. Regret not having written more code on Wednesday. Feel like the bug list never gets any shorter.
Come home, think about what to do on my one night of the week with nothing scheduled, think about all the creative projects I've started, regret not finishing any of them.
Friday: It's a nice day out. Look at the mountains in the distance and regret not spending more time outside enjoying nature.
Look at emails about upcoming all-hands Mozilla meeting, regret not having had the time to pay attention and plan a session for it.
Leave work just when I'm starting to be productive, once again. Time to go to my Smallville role-playing session. Role-playing is supposed to be fun, so why does this feel like an obligation? Have to take the car since it's too far to bike and not near public tranist. While driving, notice expanding waistline, regret not biking more, regret eating out at restaurants so much and not cooking at home with Sushu more.
Smallville role-playing session is mediocre because I'm not putting in the time and effort to make it good. Regret not having read the rulebook during the last week. Regret not having made characters who gel better together.
Saturday: go to taiko. Upon leaving taiko think of how little I know any of the other members and regret not spending time to get to know other them better. Rush to roleplaying sessiona fterwards (Mouse Guard this time); regret not having finished reading Mouse Guard book and not having prepared better. Eat out again.
Sunday: think of all the creative projects I've started, wonder which one to work on today. Play Wizards online with Aleksa, regret not being able to see my family more than a handful of times a year. Do laundry for the week and regret never having time to fix all my pants with holes in them. Buy groceries and regret not eating healthier or cooking more often. Write a blog post, think about all the other things I meant to write about, regret not blogging in the last week. Whoops, the day and then the evening slipped by without any work done on any of my other projects.
Where does the time go? How can I always be rushing from one activity to another and never feel prepared for anything or feel like I'm geting anything done?
Even at work, it seems like I never have time to get any work done, because I always have a full plate of all this... I don't even know what to call it... these trivial tasks that never stop multiplying, and somehow each one is too important to skip, but they never add up to anything either.
It's like I never do anything properly because I'm always too busy with all the other things, that I'm also not doing properly?
How is it that I've trapped myself in obligatory activities six out of seven days of the week, and although they're all things I chose to do, none of them is what I really want to be doing? Have I sliced my time up into chunks too small to be useful?
It seems every few weeks I'm getting on an airplane to somewhere, and when I get back I'm even farther behind on everything. That's not helping.
I keep telling myself "I'm really busy right now, but I just gotta get through this busy chunk and then I'll have time to do all the things I wanna do". But I've been saying that for years now. I think it's a lie. It feels true, but that's just because the future always seems free. Problem is, the wide-open future keeps turning into the cluttered present.
Ultimately if I want to do more of some things I'm just going to have to do less of other things.
The worst part is all the creative projects I've started and can't finish.
Sushu asked me recently, "Have you ever... finished a project?"
I was quiet for a long time. I can name some small projects I've finished (making a costume, learning a song, making a present for someone, making a comic page), and some projects for work, but I've never finished a big, personal project. I just kind of work on them until I get distracted by a newer, shinier idea. I'm always starting and not finishing so the list of projects just gets longer.
Another day, Sushu got very frustrated that I haven't followed through with any of the projects I said I would do with her. Jiang Hu and learning Chinese, especially. I'm always busy either with work stuff or with self-imposed obligatory social activities and when I'm not doing one of those things, I'm getting absorbed in yet another solo project I've invented for myself to do. It's like, when I do finally get some free time, I want to use it on something that doesn't take a lot of mental energy, and that usually means a solo activity.
Now, Sushu is talking about wanting to "form babby" (or, as people who have not had their language corrupted by internet memes call it, "have a baby") sometime within the next few years. This thought kind of terrifies me because if I am feeling the time crunch now, imagine the time crunch when I am one half of the team responsible for foiling a human larva's attempts to kill itself 24/7. I keep thinking about how my mom said she didn't get one solid night's sleep for the first six or seven years of Aleksa's life. It sounds like a safe bet that work and family duties will be all I get to do.
So basically any idea for a creative project I have, I either need to get it done in the next let's say two years; or I will have to postpone it until like 2025 when the baby is old enough to ignore for a few hours. (Longer, if there is more than one baby)...
Damn. Two years. It's like finding out I have two years left to live. I need to seriously rethink my priorities. I need to start saying "no" to a whole bunch of things and just eliminating them from my schedule entirely.
A simple platform game
In less than 2 weeks, I'm going to London for the Mozilla Festival where I was invited to present on the topic of HTML 5 game development.
Well, I'd better have a game to show off, haven't I. So I took one of the examples from my old P2PU course and turned it into something a little more interesting.
Go here to try playing it. Left and right arrows to move, space bar to jump. The object is to get to the square labeled "goal" in the shortest amount of time. It should work in any modern browser. (Please let me know if you can't get it to run.)
So far, pretty boring. But now here's the interesting part. Go here, put in a name, and click Create Level. Then click the "Edit" link next to it.
This interface obviously needs work, but you can use the radio buttons to select a tool, and then use the tools to scroll around, create and delete platforms, and set the start position and goal position. Click "Save Changes" and then go back to the level-select screen and try playing your new level.
When I was a kid, one of my favorite activities (besides playing video games) was to take a long sheet of paper and design new levels along with the occasional new game mechanic. How I wished I could turn those drawings into real playable levels! Now that I know how, why not put it on the web where anybody who comes along can draw a level?
Planned features include: recording the best completion times for each level, so there's an object of competition; a login, so that it knows who the high scores belong to and who created each level; maybe a rating system so you can let people know if their level was fun or not; and... oh yeah, monsters and power-ups would be nice. Some moving platforms and trees and clouds etc. so it's not just boring brown rectangles.
I'll be cramming in some of those features over the next two weeks (and doubtless I'll still be adding stuff on the airplane). The plan is to arrive at the Mozilla Festival with a sturdy game skeleton and then run a game-development workshop where participants flesh it out with artwork, sounds, features, and level design.
But for now, try making a level! Report a bug! Download the source code! And please, please, let me know if you think of a good name for this thing. (Edit Nov 8, 2011 - link updated.)
OK this really needs a name. And a domain.
I've done a bunch more work on that platform game. Now at evilbrainjono.net/platformer; the old link won't work.
I've added background music and sound effects, background images and platform textures, and the ability to customize any of these things plus customize your own character animations just by pasting in a URL to an image or sound file. There are monsters now, which kill you in two hit points, there are Pointless Trinkets to collect and a couple of rudimentary power-ups, new types of platforms, and numerous physics improvements.
I ran a hack session at the Mozilla Festival and got some really amazing contributions to the game from participants -- new monster graphics, animations, moving platforms, physics tweaks, jumping monsters, a button that opens a trapdoor, and more! One guy even adjusted the control scheme to make it playable on his iPhone in about 15 minutes. (This is the really great thing about making games on the web: you don't have to care what operating system your players have and you don't have to care about app-store approval. The platform is no obstacle.) All of this in about 2 hours; it was a nuclear chain reaction of creativity. You can try out most of these new contributions in the level editor.
I folded all the new stuff into a demo level and showed it off on stage in front of 600-ish people during the closing session. I talked about using it as a vehicle for teaching kids game design, animation, and (once I get the monster/power-up/obstacle source-code-editor working) programming. Doesn't have to be kids, either; it can be for anybody who's new to these things.
The reaction was way more than I expected, and after the presentations were over there were like three different people who wanted to interview me for their blogs and podcasts. Anyway long story short this project is suddenly getting a lot of incoming attention and I need to put it on a real domain instead of hanging it off the side of evilbrainjono.net.
So, like, I really really need to pick a good name now and register a URL. I need your help! The following URLs are all unclaimed as of today. Do you like any of them? Or do you have other suggestions?
I just added a Japanese language option to RunJumpBuild. This is important because I'm going to be demoing at the Mozilla Vision 2012 event in Tokyo next week.
We'll be using RunJumpBuild as well as Hackasaurus and Scratch as part of a workshop where we teach kids to make games. I'm pretty excited about this. So many of my interests combined in one activity! It will be like a reunion with my 2011 self.
Why I'm leaving Mozilla
I've told them June 7th is my last day. On June 8th (the start of Sushu's summer vacation) we leave for a two-month trip to China, and when we return I'm going to be jobless.
On the surface, quitting Mozilla seems remarkably foolish. They're a respectable company, they pay me the big money, they treat me very well, I like the people I work with, and I get to work on fun stuff. I've been extremely fortunate to have a good job while so many people around me were losing theirs, and I've been able to use the money to help my family pay off a lot of debts. I'm grateful for all they've done for me.
I started at Mozilla in spring 2008, so it's been more than four years now. I've been working for Mozilla longer than I've been involved with any other organization in my life. The first few years were great, but everything took a turn for the worse in early 2011.
I tried to make it work, I really did. I spent the second half of 2011 vacillating. I would tell Sushu that I was going to quit; then I'd have a few really good days in a row and change my mind. I really do like the people I work with and I don't want to let them down. But then I'd have a few miserable days in a row and Sushu would once again have to put up with my bitching about work.
I think it was early January that I first told Jinghua (my manager) that I was going to leave. She made a sad face. She talked me into staying for another few months, which I agreed to because there were some projects I wanted to finish up. By June I'll be able to finish my current work on Test Pilot and Collusion and hand both projects off to other people. (Up until now, every software project I've worked on has died the day I stopped working on it. It will be nice to have a project outlive my involvement for a change.) She's still trying to figure out a way to talk me into staying.
But I won't. Leaving is just something I have to do. I will try to explain why.
First: I've got the wanderlust.
They say some people have had 10 years of experience and others have had one year of experience ten times. Corrolary: if you find yourself having the same year of experience over again, it's time to try something new.
Mozilla has gotten too comfortable. I'm not challenging myself here. I'm not stretching, I'm not growing. The days and weeks and months have been slipping by with no sense of forward progress. I'm also not getting any younger.
I'm terrified of waking up one morning to find that ten years have gone by and I'm still sitting in the same desk, doing the same job, having accomplished nothing of lasting value.
Four years is a really long time for me to do any one thing. Most of the "chapters" of my life have been about three years; at around the three-year mark at Mozilla I started to feel the wanderlust, the voice inside me saying it's time to move on.
I desperately want to get out of Silicon Valley. It's hard to explain how much I despise this place -- its suburban sprawl, its strip-mall parking lots, its expensive lawns, its traffic jams; its rich, smarmy, boring yuppies; its disturbing lack of weather and seasons; its phony cheerfulness; its bubble culture; its incestuousness; its endless gossip about the same few software companies; its lack of history; its self-importance.
I miss winter, I miss artists and blue-collar workers and other people not in the software industry. I wish I could just ditch this place and move back to Chicago to be near my family.
But I won't, because the one thing I want more than that is to stay with my wife. So as long as her teaching job is here, I'm here. Mozilla would actually let me work from anywhere; ironically, it's not my software job that's keeping me in Silicon Valley, but Sushu's non-software job.
So we've been trying to figure out a way to live anywhere else. First we explored the idea of living in China for a year or so, but she can't get that much time off from school. Then we explored living in San Francisco, but it would make her commute much worse and we'd be paying twice as much for 1/4 of the space so it wouldn't make any sense.
So I've accepted that I will be physically stuck here for the forseeable future. The only way open for me to get the change I seek is to change my daily routine -- and that starts with quitting my job.
Second: Mozilla is changing.
The Mozilla manifesto says we're supposed to be fighting for freedom of individual user choice on the web. That sounds great, but how exactly does making improvements to Firefox advance that goal?
Mozilla is an organization forged in battle against Microsoft. Back in 2001, "freedom of individual user choice on the web" meant "don't let Internet Explorer have an unchallenged monopoly". But Mozilla essentially won that battle already. In fact, they won it before I even joined. Today, the web is very far away from a browser monopoly. People code to web standards, the capabilities the web can offer are advancing rapidly, and even if Firefox ceased to exist tomorrow, the competition between Internet Explorer and Chrome would keep them both honest.
The biggest question for Mozilla, therefore, is "Now what?" With their main goal accomplished, why do they need to continue to exist as an organization? As long as I've worked there, they've been flailing about looking for an answer to this question.
That was good for me, because it meant that I got to work on lots of experimental projects as part of the search for a new direction. However, a lot of the stuff I've been doing also doesn't feel very productive. The threats to web freedom in 2012 are very different from those in 2001, and it's hard to fight the threats of 2012 using an organization that was built up to fight the threats of 2001. It's kind of like that saying about generals always preparing to fight the previous war.
Honestly I think the biggest threats to the internet these days come from the government, not from any corporation. We can complain all day about how evil Facebook and Apple are, but at least we all have the choice of not using their products. Whereas 60 senators with no clue about how computers work could pass a law like SOPA or CISPA and force us to comply. You can't build an open-source alternative to the law.
Really, if you were building an organization with Mozilla's mission statement from the ground up today, it would make more sense to build a legal/political advocacy organization, not a software company at all.
Nevertheless, Mozilla-the-software-company continues to grow rapidly, and there are a lot of growing pains. When I started, they were under 150 people, and it was just barely possible to know everybody. Since then the number of employees has quadrupled, and with that comes more layers of bureaucracy. We're having to create formal processes for things that used to get done via personal relationships. And as we hire more people from Silicon Valley who aren't necessarily open-source advocates, the culture is starting to feel more and more corporate, with less of the open-source hacker spirit that made it an exciting place to work in the early days.
As for the "Now what?" question, they've recently decided that the best thing to do is try to build a mobile-phone operating system to compete with iPhone and Android. (Really.) The logic is that users have lots of choices for desktop internet software, but the mobile phones are still very locked down. Especially iPhone, where Apple gets to decide what software you are and aren't allowed to run. Maybe we could help break that open by creating another competitor together with some kind of open standard for apps which would be portable between different mobile platforms?
That's cool, I guess. Good luck! But personally I have zero interest in working on smartphone software. I don't have a smartphone, I don't want one, and I don't want to write software for them. If Mozilla's trying to turn itself into a mobile-phone OS company, they need people who understand that stuff. They don't need me; I'll just be slowing them down.
They'd let me keep working on Test Pilot as long as I wanted, but I don't really feel like I'm advancing the cause of web freedom by doing that.
And without the cause, Mozilla is just another software company.
Third: I've stopped caring about computers.
I used to care about computers for their own sake, because it was fascinating to have a machine that could do anything I wanted, provided I could figure out how to express it in code. I got all excited about learning new programming languages or techniques or whatever.
These days I'm like, a computer is just a tool; it crunches numbers fast. What are we doing with that tool? Are we using it to make life better for people? If not, who cares?
I used to have strong opinions about what hardware or software was good or bad, and would try to convince people to switch. Now I'm like, whatever; it's all basically the same, use whatever works for you; why should I care?
The rate at which people upgrade their computers is slowing down; computers are already fast enough for everything people want to do. Half the internet is still on Windows XP because there's no good reason to upgrade. The internet has matured and has been basically feature-complete since about 2005. Video game graphics are as good as they need to be. AI is stagnant. Computers are really boring now.
Postulate: The computer revolution is over. All that programmers are going to be doing from now on is rewriting the same applications over and over again, for ever-crappier platforms, using ever-higher-level languages.
The software industry today is an arm of the advertising industry. That's just a cold economic fact. Mozilla is no exception -- our money comes from Google and Google gets it from advertising. An industry driven by advertising is always going to serve the advertisers' needs, not the users'. ("If you're not paying for something, you're not the customer; you're the product.") I don't really want to work for the advertising industry.
Since around 2005, when I got involved with Humanized, I had the idea that I could be a usability guy, and help people by making computers easier to use. But I've realized that usability, too, is just a tool. What is it that you're making easier to do? Something that's truly beneficial to the user? Or are you just making it easier for them to spend hours on Farmville while giving their private information away to advertisers?
In the last few years the industry seems to have decided that the way to solve the usability problem is to stop giving people computers and start giving them locked-down information appliances, which are "easy" because they can't do much. (i.e. tablets). This isn't what I wanted; I wanted to make the power of real computers accessible to more people, not some dumbed-down baby version. But maybe it turns out that people don't even want that power; maybe they just want to watch vidoes and play Angry Birds.
Anyway, being the usability guy was Aza's dream, not mine. I've given up on being that guy now. I'm looking for a different guy to be.
I don't think I want to make software anymore. But programming is my main marketable skill. Maybe I can find a job in another industry where I use my programming skills for some kind of higher purpose, like education or renewable energy resources or robotics or something. I'll go back to school and learn new skills if I have to.
Fourth: Sushu wants to have a baby soon.
This thought is absolutely terrifying to me.
Right now, I have the freedom to change jobs just to pursue personal satisfaction. I have the freedom to not care about how much money I make, because I don't have any dependents.
Once I'm a dad, I won't have that freedom anymore. I will have to be responsible.
If I'm going to change careers -- to green tech or robots or education or whatever -- I need to do it now, before any babies happen.
It might be my last chance.
In Search of the Unknown (dungeon module B1)
Holy crap, guys, tomorrow is my last day at Mozilla and I'm leaving for China on Friday morning. It's like I'm starting a whole new life. I'm excited! The future has a sense of wide-open possibility again, like I haven't felt for a long time.
My life has been too comfortable the past few years, which paradoxically depresses me because I'm like "Is this as good as it's ever going to get? Is the rest of my life just going to be a slow decline?" Something in my psychological makeup needs the unknown, needs weirdness. I have to believe in the possibility of growth, and growth requires encountering things outside my experience. I can't imagine a utopia or a heaven where I'd be happy, because they all sound so dreadfully boring.
Somebody asked me recently whether I was scared of leaving my job. No, quite the opposite: I'm scared of staying in the warm, stifling embrace of a well-paying job for so long that I turn into a Boring Person who plays office politics and acts entitled to his salary and hasn't questioned his beliefs for a decade. I need to get out there and fight for myself again. Worst case scenario, I said, if my next thing doesn't work out, I can always go get another software job. My interlocutor was like "No! Don't give yourself a backup plan, that will make you hesitate! You gotta commit!" He was a burn-your-ships and smash-your-pots kind of guy.
So yeah! Here we go! In Search of the Unknown!!
Sushu has some much more practical thoughts about getting ready to go to China (and Tanzania!)
Everybody hates Firefox updates
It pains me to write this article, but I've got to get this off my chest at some point.
On Saturday I was waiting around a classroom at 上海外国语大学 (Shanghai International Language University) with a bunch of other prospective students, waiting for our numbers to be called for oral placement exams.
I was chatting with a random Canadian woman. She found out I worked for Mozilla and I got that sinking feeling, like "here we go again" because I knew exactly what was coming up. She proceeded to tell me the story of how she switched to Chrome because Firefox kept breaking her extensions and asking her to restart.
I've heard this story a lot in the last year.
I used to be proud to say I worked (or had worked) for Mozilla, but a careful listener might detect a certain sheepish quality that has crept into my voice lately when I name-check my former employer. And this is why. Even on the opposite side of the world, it's always the same story: "I used to love Firefox", but "I switched to Chrome because my extensions stopped working" or "I switched to chrome because Firefox kept asking me to restart".
I've had this conversation with dozens of people across three continents. Not one person has had anything good to say about the rapid release process. Nearly 100% of my highly unscientific survey volunteered the information -- unasked, unprompted -- that the rapid release process had ruined Firefox for them.
Of course nobody says "rapid release process" because people don't know that's what it was called. They might start out complaining about version numbers, or some plugin that doesn't work right, but when I ask enough questions to get to the root of the problem, it's always the rapid release process.
It's not like we weren't warned. Lots of people in the community tried to tell us that this was a bad idea. But somehow, despite being an ostensibly community-driven organization, somewhere along the line we learned to tune out naysayers from the community. The decision to go rapid-release came from the top down. The official party line was that rapid releases were going to be awesome, because new features and bug fixes would always be delivered to end users within a few weeks. (As opposed to the 14-month wait between Firefox 3.6 and Firefox 4.) Users who pointed out flaws in this plan were dismissed as being just a loud minority, or just irrationally afraid of change, or just focused on some marginal edge-cases which would be easy to fix once we got the hang of the new release cycle.
(I wish I could say that I spoke out against the groupthink, but to be completely honest, my thoughts at the time were "Release every 6 weeks? There's no way that's ever going to happen." I thought the problem would be implementing the strategy, not that the strategy itself was flawed.)
I've been thinking a lot about the fundamental disconnect between the developers and the users. I think it comes down to: Software developers have a perverse habit of thinking of updates/new releases as a good thing.
It's hard to convince a software developer otherwise: their salary depends on outputting a constant stream of updates, so of course they think updates are good.I used to believe it. Only after I heard from dozens of different users that the rapid release process had ruined Firefox did I finally get it through my thick skull: releasing an update is practically an act of aggression against your users. The developer perspective is "You guys are going to love this new update we've been working on!" The user perspective is "Oh god here comes another update, is there any way I can postpone the agony for a few more days?"
Updates suck for three reasons:
- The download/restart takes forever and interrupts your work with a bunch of intrusive dialog boxes.
- The update may break stuff that you counted on, either by removing features you were using, or by breaking compatibility with other software you use. Maybe the developers never tested your use case, or worse - they tested for it but decdided it didn't matter because only 2% of users used it. Tough luck to you if you're one of those 2%.
- If they changed the interface, your productivity will be lower than usual until you've spent a bunch of time learning a new interface. Even if the new interface is "better", in some theoretical way, to some hypothetical average user, re-training yourself to use it is nothing but a time sink.
This doesn't mean "never release an update". Sometimes you have to fix a critical bug or add a critical feature. What it means is that you should make sure the benefit to the users outweighs the pain -- either by making the benefit greater, or by making the pain smaller. Of course this is a very hard thing to get right. There's no hard rule for telling how big an improvement something has to be in order to be worth the pain of an update. Every software company gets this wrong sometimes.
So many companies release updates which radically change the interface for no significant gain -- they seem to be moving sideways rather than forward, changing things around for the sake of change. Maybe their UI designers are bored and need to do something to justify their jobs, I don't know. After years of aspiring to improve software usability, I've come to the extremely humbling realization athat the single best thing most companies could do to improve usability is to stop changing the UI so often! Let it remain stable long enough for us to learn it and get good at it. There's no UI better than one you already know, and no UI worse than one you thought you knew but now have to relearn.
I have another theory, too: When software companies get to a certain size, they start taking their users for granted. They start treating their users as pawns in a battle against some other company. Faceless millions. Gotta copy everything the other company does, or risk falling behind. So they end up doing everything the other company does whether the users want it or not, and probably doing a crappy job to boot.
In our case, we started thinking of everything in terms of the battle against Google Chrome. Oh no, Chrome is doing such-and-such; we'd better do something equivalent or we'll fall behind! We thought we needed a rapid update process like Chrome. We were jealous of their rapid update capability, which let them deploy improvements to users continuously. We had to "catch up" with Chrome's updating capability.
Credit where it's due: the way Google handled Chrome updates was very, very smart. They recognized that updates are one of the hardest things to get right, so they solved that problem first, before releasing version 1. The first release of Chrome was little more than an empty box of a browser, but it was wrapped around an excellent updating system. This let them gradually transform that empty box into a full-featured browser, without the users ever realizing they were getting updates.
Firefox did not do such a good job with rapid releases. I've written before about the specific mistakes we made, so I won't go into detail again. To summarize: we did the updates in a very intrusive way, requiring lots of user attention, which made people annoyed because it happened so often. When people restarted after an update to find no visible difference, they wondered what was so important about that update. (Remember the rule that the benefit of the update needs to outweigh the pain? We broke that rule.) Worse yet, we didn't do enough to preserve add-on compatibility, making the updates extremely disruptive to people who depended on certain add-ons; and we kept going with our old version-numbering scheme even though the meaning of the numbers had changed completely, leading to mass confusion.
We had plenty of time after Firefox 4; we should have used that time to perfect an unintrusive, add-on-preserving update system, and then unrolled it along with a brand-new version numbering system to clearly convey a break from the past. (Easy for me to say now; hindsight is 20-20.)
Ironically, by doing rapid releases poorly, we just made Firefox look like an inferior version of Chrome. And by pushing a never-ending stream of updates on people who didn't want them, we drove a lot of those people to Chrome; exactly what we were trying to prevent.
We assumed our users loved Firefox enough that they would put up with the irritation of updates in order to have a better product.
Software companies would do well to learn this lesson: anything with the phrase "users love our product" in it isn't a strategy, it's wishful thinking. Your users do not "love" your software. Your users are temporarily tolerating your software because it's the least horrible option they have -- for now -- to meet some need. Developers have an emotional connection to the project; users don't.
All software sucks. Users would be a lot happier if they had to use a lot less of it. They may be putting up with yours for now, but assume they will ditch you the moment something 1% better comes along -- or the moment you make your product 1% worse.
Marketers always say that "a brand is a promise to customers". What did the Firefox brand used to stand for? What does it stand for now?
I've sat through a lot of internal discussions about what sets Firefox apart and what qualities we wanted people to associate with it. Our favorite was something like "Firefox answers to nobody but you". We wanted people to think of Firefox as the browser that puts them in full control -- whether by having the best customizability, the best selection of add-ons, the best privacy controls, or just generally giving the user complete control of their data (i.e. not locking it up in a proprietary database or using it to sell advertising.)
A lovely promise! But then we did the opposite of putting users in control: we pushed out a seemingly endless series of updats that nobody was asking for, and provided no way to opt-out: there was no "I'm happy with Firefox 4" button, no "Switch to the long-term support version" button, no "I need my add-ons to keep working" button. The best you could do was ignore the update until later. Eventually you'd have to restart your computer, and the update would sneak in.
This isn't "Firefox answers to nobody but you", it's "Firefox answers to nothing but Mozilla's arbitrary six-week update schedule". Whatever we wanted the brand to mean, Firefox is now firmly associated in people's minds with "that browser that kept breaking all my add-ons with unwanted upates".
It's gotten much better now -- the updates require much less manual intervention and add-ons break much less frequently -- but it's too late. People who got fed up and ditched Firefox are going to be hard to win back.
Rapid releases killed Firefox's reputation.
Update: This post has been linked from Hacker News. The traffic from HN brought the site down temporarily. There's some interesting disucssion over there if you want to check it out.
Update 2: I responded to some of the comments in a new follow-up post.
Follow-up to the Firefox updates post
Further thoughts in response to comments on my previous post about rapid Firefox releases.
1. "But Chrome does automatic updates too! If people hate automatic updates they shouldn't be switching to Chrome". A lot of people have said something to this effect.
Look, it might not make perfect logical sense, but I'm reporting what actual users have been telling me about their reasons for switching. They may not be aware that Chrome has automatic updates (since they're mostly invisible). Or they may think automatic updates are fine as long as they're implemented unobtrusively.
2. "People like Chrome's automatic updates fine; therefore it's not the fact of automatic changes but the obtrusiveness of the implementation that matters".
Another frequent argument. It's certainly the prevailing opinion in the software industry right now -- that everything should auto-update, and the only difference that matters is between auto-updating well and auto-updating poorly.
I'm just not so sure this is really a good idea. I realize that my position might be unusual, even controversial. But I think users ought to have the ability to say "no thanks" to an update that makes UI or compatibility-related changes. These changes can have downsides. Since only the user is in a good position to judge how significant those downsides will be for them, the user should be in control of accepting or rejecting those changes.
Chrome hasn't yet made any large changes of this type so far. They're still too new for people to have built up a lot of dependence on obscure add-ons or UI edge-cases, and they've been mostly leaving the UI alone and making changes under the hood. So they haven't yet faced backlash for an unpopular change.
But take a look at the outcry over recent UI changes to another Google product -- GMail. Since GMail is a webapp, there's nothing users can do to about the changes. There's no such thing as running an "older version" of a webapp -- automatic updating is unavoidable. There seemed to be a lot of people who agreed with my assessment that the changes were a net negative.
I suspect that sooner or later, Chrome will make a UI change that users don't like, they'll push it out automatically, people will have no way to go back to the old version, and then there will be similar backlash.
3. Separating types of updates. I'm going to quote Gervase's comment in full, because I think he gets to the crux of the matter:
Updates are a good thing for all users when they are security updates. One of the things about the rapid release process, and one of the reasons for picking "six weeks", was the idea that security releases and new releases would be the same thing, and we'd have to maintain fewer branches. When a security update comes with significant UI changes, though, that's not good. So perhaps the idea of combining the two was our mistake?
Yes! It's best for everybody if as many people as possible are on the most secure possible version of their chosen browser, and the best way to make that happen is with automatic security updates. I would add performance updates and certain types of bug-fixes to this category, too -- if a change does nothing but speed things up, with no UI changes, then I think it's OK to push that out automatically and unobtrusively. Who doesn't want speed enhancements?
Maybe software projects ought to design their architecture so they can do security/performance updates in separate development branches from UI-relevant updates? Then the security/performance updates can be automatic and invisible, while the UI/compatibility changes can be optional. (Yes, separating these two kinds of updates can be hard. Yes, supporting multiple versions with different UI is hard. Nobody said making good software was easy!)
4. Mozilla actually did this, sort of. Firefox Extended Support Release exists. It's a version that gets security fixes but no UI changes for a year at a time. It's designed for large deployments at schools, businesses, etc. It would be an ideal solution for users who don't want change, but for some reason Mozilla has chosen to hide it away and actively discourage individual non-enterprise end-users from trying it out.
5. I said "No UI is better than the one you already know". I was exaggerating for hyperbole -- I don't really believe that no UI is ever better than the one you know.
So let me revise my statement: Rarely is a UI change such a big improvement that the efficiency gain from adopting it outweighs the efficiency loss from relearning. Designers tend to overestimate the benefit of a change and underestimate the importance of habituation. That's what I was trying to say.
Look down at your hands. Are you using a DVORAK keyboard? Why not? It's theoretically more efficient, right?
6. The Firefox update mechanism is a lot better now, as is the add-on compatibility situation. If you've left Firefox, I hope you'll consider giving it another try.
I got flash mobbed
Ugh. I've had to reboot my web server four times in the last three days, and I will have to pay Slicehost extra for bandwidth this month. Google "everybody hates firefox updates" and you can see all the places that linked to my article. Hacker News. Reddit. Fuckin' Forbes! What the hell?
My poor web server couldn't handle the load.
I made an account at Hacker News to respond to some of the hundred-plus posts there. My account was instantly banned because I triggered a false positive on their spam filter, so I wasn't able to participate in the disucssion. I eventually got unbanned but the thread was over by that point.
If any of my former coworkers are reading this, I want to apologize. I didn't expect this to go viral, I didn't expect it to be misinterpreted the way it has been, and I definitely didn't intend to do harm to Mozilla's reputation with this post. But I'm afraid that could be happening, because most of the re-blogs seem to be portraying this as a standard disgruntled employee rant against his company. Which has obscured the point I really wanted to make, about the disconnect between the user's goals and the developer's goals which is endemic to the whole software industry.
I've had a few thoughtful comments, but mostly it's just been people piling on to bitch about Firefox and/or Chrome. The number of people responding to the main point of my post is very low. A lot of people reblogging it or discussing it on Reddit or wherever don't even seem to have read what I wrote.
Any news site referring to "Jono DiCarlo, Firefox developer" clearly A. has no idea who I am, B. doesn't care enough to get my name right, and C. hasn't read my article, where I refer to Mozilla as my former employer.
Also, I was never a Firefox developer. I worked on Labs and then on User Research, never on the main product itself. I guess "firefox dev says firefox suxxors" was the irresitible link-bait headline, facts be damned.
This has taught me something very sad and frustrating about how communication goes wrong on the internet. I posted something that was close to a lot of peoples' hot buttons. So it "went viral" and appeared to generate a lot of discussion. But most of the people "discussing" don't even care what I said. They just wanted a thread to re-state their favorite rants about Firefox memory consumption or whatever. My post was just used as fodder for a pre-existing flame war. The point I wanted to talk about got lost in the noise.
I've closed new account creation on this site until this blows over. If you already have an account you can still comment. Generally the only people who bother to comment here are people I'm friends with in real life, and that's the way I like it. I don't particularly care about the opinions of random strangers from the Internet, and I don't want to spend any energy hosting, moderating, or responding to their comments.
If I know you in real life and you want to comment here, send me an email and I can enable you. In the future, I may implement some kind of locked-post feature so I can write something for my friends without inviting the whole internet to the party.
If this is what internet fame is like, I don't want any!
Apologies to people hurt by my post
It was never my intention to cause harm to Mozilla. I intended my post about upgrade hate to be constructive criticism.
But I found out yesterday that Mozilla had to make a press release to deal with all the flak that my post has generated. I never imagined it would go that far. I felt absolutely terrible about my post getting out of control to the point where they had to make a press release. I have a lot of friends in Mozilla who I care very much about. I'm deeply sorry if the result of my careless speech has been to make their jobs harder. I spent a lot of yesterday sending out apologies.
Firefox manager Johnathan Nightengale and my good friend Atul (now the only one of the Humanoids still at Moz) both wrote thoughtful posts in response to mine, which you should read.
I stand by my main point, that software developers tend to underestimate how much updates (even good upates) suck for users, and that the industry needs to think more about that fact. I wish I had made that point more diplomatically. I wish I had written the post so that it was more obvious that that was my main point, and so that it was less of an invitation for browser flame wars. I should have called the post "Updates Are Painful For Users" or something like that.
In 8 years of writing this website I don't think I've ever had a post viewed by more than about a hundred people or so. So the reaction to this one took me by surprise. I severely underestimated the potential for my post to go viral and the potential for my words to be twisted by people with an axe to grind.
As one of my friends told me: "Looks like you forgot how the internet works".
For the record, I'm still a Firefox user and I'm quite happy with it. The updates have been much less obtrusive, and since about version 13 or so they haven't broken anything that I use. It's not perfect but for me it's better than any of the alternatives. Chrome doesn't respect my privacy, IE is typically a step or two behind in support for cutting-edge features, and Safari is made by a company that thinks it should get to decide what software we can and can't run on our devices. Opera seems pretty respectable, but
it comes with advertisements and it's not open-source.
When I complain about Firefox it's not because I want to switch browsers. Firefox is the only browser that suits my values. I don't want to switch; I want Firefox to be better.
Coding for SPACE
Software didn't dump me, I dumped software.
The love was gone; it was time to end it. Still, the relationship lasted over ten years, and the breakup has been hard. Some days I'm angry, some days I'm wistful, some days I just don't care.
I'm in the process of unwinding myself from my "computer guy" identity. It's hard. At the moment I don't know who I am. The only thing I'm sure of is that making software isn't what I want to do with the rest of my life.
Programming computers will probably be part of what I do. I have a lot of skill points invested in it, after all, and besides, everything's got a computer in it these days. But programming is just a means. The goal has to be something else, not just computers for the sake of computers.
This "Advice from an old programmer" (from "Learn Python the Hard Way") spoke to me:
Programming as a profession is only moderately interesting. It can be a good job, but you could make about the same money and be happier running a fast food joint. You're much better off using code as your secret weapon in another profession.
People who can code in the world of technology companies are a dime a dozen and get no respect. People who can code in biology, medicine, government, sociology, physics, history, and mathematics are respected and can do amazing things to advance those disciplines.
That sounds good!
Mozilla was a local maximum. Better than any similar job. Every adjacent direction was down. The only way to get a better job than my one at Mozilla is to do something completely different.
The most excited and optimistic I've felt about technology in the last several years was when I stayed up until the wee hours of the morning watching the livestream from NASA's site of the SpaceX Dragon capsule docking with the International Space Station.
The SpaceX CEO, Elon Musk, seems like a really cool guy. He made a fortune at PayPal and instead of retiring young, he put his money into space exploration and electric cars (he's also CEO of Tesla Motors). Lots of respect for that dude.
And SpaceX is hiring computer programmers to do physics simulations. I bet I could do that.
Only problem is that they're in LA, and it would be hard on Sushu for me to ask her to leave her school.
Yay happy feelings
I just had lunch with a bunch of Mozillians; first time I saw them since I quit. I was kind of nervous, but they gave me a very warm welcome. I was very, very happy to find out that they don't hate me even after this thing went viral.
This afternoon I'm flying to Indiana for Cat's wedding this weekend. I haven't seen her and Kent since GenCon last year (Geez, has it really been a year already?) so I'm pretty excited to see them again!
I didn't quit Mozilla because I hated them. They've been quite good to me. My feelings towards the company are complicated.
Four years, man, that's a long time. It deserved some kind of commemoration. I picked the Mozilla dino-head logo rather than the more well-known Firefox logo because I wanted to show my association with the open-source community, the people and the shared values, rather than with the corporate entity or with a specific product that, who knows, might not even be around in a few years. (Plus, I don't really want my body to look like a launch bar.)
Side benefit: even if you don't know who or what Mozilla is, it's still a red tyrannosaurus head; what doesn't kick ass about that? Nothing!
I got it done at Graven Image in Mountain View. Their founder, a dude named Paco, is quite the artist and is famous for doing all these amazing Geiger-esque biomechanical horrors.
When I was there, Paco was working on a guy in the chair next to me, with a naked blue robot chick on his arm. The two of them were having a very animated disucssion about what are the top five metal albums of all time, and whether Ride the Lightning was better than Master of Puppets, and how could it be a top-five without any Megadeth, get out of here, and does AC/DC even count as metal, and what? you like fucking "Cowboy from Hell" better than "Reign in Blood"? You better check yourself before you wreck yourself! (his exact words).
When questioned, I had to admit that I did not have an opinion on the top five metal albums, as I never listen to any. Paco decided he needed to put on "Reign of Blood" right then so we could all hear its majesty from beginning to end. It was all CHUGGA CHUGGA CHUGGA CHUGGA ANGEL OF DEEEEEATH!!!
My musical horizons were expanded that day. Violently expanded.
Speaking of Mozilla mementos, this little guy was given to me at my going-away party by Gregg Lind (the developer who we hired to take over Test Pilot for me).
Gregg and his wife added the accordion and unibrow. The accordion even has the right number of keys!
I will treasure it forever.
Lovebird is ready for beta testing
The short version: I wrote a Thunderbird add-on to make the email interface I've always wanted -- one that helps me remember to stay in touch with people I really care about, instead of always distracting me with the newest incoming trivia.
The add-on is called Lovebird and you can download it here.
The rest of this post is about the philosophy behind Lovebird and why I designed it the way I did.
About a year ago, I wrote a post about how much I hate email
. I was frustrated that the few relevant messages from people I care about quickly get buried under a flood of distractions and nonsense. Not spam, even; just trivia.
There's a saying that "Life consists of what you choose to pay attention to."
Software encodes values, biases, assumptions, often unconscious, of the people who create it. The more that software becomes our filter on the world, the more that the unconscious biases of the software determine what we pay attention to.
There's one bias that's so prevalent it's invisible - noticing it is like a fish noticing the water. It's the assumption that the newest thing goes on top.
Twitter! Newest thing on top. News website! Newest thing on top. Blogs! Newest thing on top. Email! Newest thing on top. RSS feeds! Aggregators! What's new! what just happened now? I don't care about that thing it's so 20 minutes ago, get that off the front page.
The newest thing usually isn't the most important. It's usually a distraction from what's most important. Obsessive focus on the newest thing is a sickness in our culture. Not just the culture of software developers, but modern 21st century culture as a whole. Software didn't create distraction, but its bias towards showing you the newest thing is contributing to the constant distraction of modern life.
If life consists of what you choose to pay attention to; and what you pay attention to is increasingly not a choice you make consciously but is dictated by the software lens that you see the world through; then you are giving up control over the contents of your life to decisions made by that software.
And if the software is always focusing your attention on the newest thing just because it's newest, then you're allowing what your life consists of to be decided by who's noisiest.
Does that horrify you? It horrifies me.
Meanwhile, the stuff you don't pay attention to gets pushed out of your life.
Nurses who work with end-of-life care say that one of the most common regrets expressed by people who are dying is that they didn't do a better job of staying in touch with old friends and distant family while they still had the chance.
Email is the way I talk to more people more often than any other technology -- more than telephone, more than face-to-face contact.
My email interface should be helping me remember to stay in touch with old friends and distant family. But instead, email buries the important conversations under a flood of auto-generated GitHub and eBay notifications, political mailing list ACTION ALERTS, charities begging for money, etc. etc.
Maybe I opened my email interface with a thought in mind about what email I wanted to write. But my thought is soon lost as the interface bombards me with distractions -- all the newest, unread stuff.
Meanwhile that thoughtful, in-depth conversation from an friend I haven't seen in years is down on the third or fourth page. I didn't respond right away because it deserved a considered, crafted response. I starred it, sure, but... I guess I star a lot of things, most of which rapidly lose their relevance.
Unless I make a concerted effort, that conversation's going to get buried forever and I'm gonna forget about it. Now I'm gonna die with regrets because my email interface focuses my attention on what's new instead of what's important!
So I decided to do something about it. I started hacking around with an idea for an email client that would put that conversation with the old friend front and center of my interface, keeping it in my attention.
I built it as a Thunderbird add-on. Since its purpose is to help me stay in touch with the people I love, I named it "Lovebird".
Since it's people I care about, not messages, the Lovebird UI is built around a list of people, not a list of emails.
Everybody thinks they have the right to take up space in my inbox, but not everybody gets in to the Lovebird interface. It's a privilege, not a right. No mailing list or notification-bot should ever be allowed in the Lovebird list. Humans only.
And you only get there if I explicitly add you. I don't want my computer trying to be too smart and guessing who should go in the Lovebird list. That creates the wrong kind of feedback loop.
For everyone else, I can still check my inbox. Lovebird isn't meant to replace the inbox entirely.
I can have Lovebird sort my list of people in a couple different ways, none of which are based on putting the newest stuff on top. The default sort order shows me who's been waiting the longest for me to respond to a conversation. Whatever I've been procrastinating about writing becomes the top item in my interface. Hopefully this will make it harder for me to forget to answer people.
I can also have it show me who I haven't talked to in the longest time, even if they're not expecting a response from me. Maybe I just want to reach out to them and ask about their lives.
I've been hacking on Lovebird, on and off, for the past couple of months. If you've read an email from me lately, I probably sent it to you from Lovebird.
Now you can try it out! I've uploaded a beta version to Addons.mozilla.com. It's still missing some intended features, but it's about ready for people to try.
The source code is on GitHub. That's also where you can report any bugs that you find.
Firefox to block third-party cookies: about time!
I just saw a thread on the Mozilla dev-privacy list about a new patch, to land in Firefox 22, which would block third-party cookies from sites that the user hasn't visited. It's being written by a guy from Stanford.
I'm hugely in favor of this change. At Mozilla I often argued in favor of blocking all third-party cookies, and just as often heard the objection that it would "break the Web". This more limited cookie blocking seems like a good compromise. A third-party cookie from a site you've never visited is almost by definition going to be a tracking cookie set by an advertising network in order to make ads follow you around the Web. (Like this ad for GRE prep services that I started seeing everywhere after I signed up to take the GRE.) If you've ever looked at a Collusion graph, these are exactly the cookies that make up the nefarious center of the spider-web.
So I'm extremely happy that we're going to start blocking them. There are some issues to work out, but today I dropped by the Mozilla office to talk to some of the privacy/security guys about how I can contribute to the patches to help make sure this happens.
In other Mozilla news, they just announced that they have deals with eighteen mobile carriers around the world to support the Firefox OS smart phones. So iOS and Android are going to have some real open-web-based competition soon. Congratulations, guys! This is huge.
This month, holy crap this month has been just
For an unemployed person, I'm pretty busy.
The first week of the month I was sprinting on the Legends of Hanyu code trying to get teacher features done in time for Sushu to show it off at a teacher conference. Partial success -- got a lot done, not as much as I would like.
Second week of the month I was doing a week-long statistical modeling / data analysis task for a startup I really like. I was one of a couple candidates they were considering hiring, and they offered this task as a way of letting me prove my abilities. In the process I learned a bunch about applied stats and data mining. That was pretty cool. But I didn't get the job, and I really wanted to work for them, so this was a bummer.
Ah well. If I never failed, it would mean I was sticking to things that are too easy for me.
There has also been... well, read Sushu's dreamwidth for details. It's been hard on both of us emotionally and hard on her physically.
If you follow my twitter you noticed I made some pretty angsty and depressed tweets the last couple of days. I'm worried I might be slipping back into depression. But this time I've decided to talk about it and reach out to people instead of withdrawing and trying to keep it secret.
Jinghua (my old boss from Mozilla) saw my tweets, got worried about me, and called me up to check on me. She's really sweet! She suggested meeting up for dinner that night with the Mozilla user research team (including Gregg who was visiting from Minnesota that day). We had shabu-shabu. It was really good to see them again. Man, for all the things that made me decide to leave Mozilla, I really do love the people I got to work with there. It will be hard to find such good co-workers anywhere else.
This week I wrote and thumbnailed a ten-page comic. Oh, right, I forgot to tell you guys: I pitched a comic idea to this anthology of science fiction short stories set in San Francisco, and it was accepted! The final pages are due on April 1, so I'll be drawing and inking like a maniac all next week to try to meet that deadline.
Even with all the deadlines that landed this month, the job hunt doesn't stop. Sushu's school is looking for a new math/computer-science teacher, so I went in and observed a class on Thursday to see if it's something I might be interested in. (Answer: probably not.) Next I'm trying to set up interviews with some companies involved in building the "smart electric grid".
March was also the month when, out of the blue, I had chances to reconnect at least five different friends who I haven't seen in years. All independently. That was great!
Oh yeah and I went hang-gliding, and played taiko in front of thousands of people at a baseball game. Somehow that happened while all this other stuff was going on.
On the 30th I'm flying to New York City to meet a bunch of people there, then road-trip (or possibly Amtrak) through Connecticut visiting friends and relatives on my way to the big Chinese teacher conference in Boston.