(Not Quite) Everything You Ever Wanted to Know about Leaving Google (And Were Afraid to Ask)

I thought I’d write up a bit about how I’ve gone about leaving Google and why I’ve done so. This is going to get a bit long, so bear with me.

This was a pretty personal decision on my part. It’s not something I generally recommend at this point. Once you try to fight the Google hegemony, you really start to realize how pervasive and powerful it is. Google positions itself as a kind of default for the web services that make up our daily lives—mail, documents, search—and even as organizational foci, like with groups, document sharing, messaging, and now Plus.

I think Plus was the thing that really started to drive a wedge between Google and me. As Google began to push Plus aggressively and made questionable policies around it (like the nym wars), I began to see Google as a corporate entity whose goals were fundamentally at odds with my interests as a person. The bottom line is that I didn’t want to be a product anymore.

I also worried about the future. Now that Google has shown the potential to tear down well beloved and well used services (like Reader), what else would they do? Talk is becoming a feature of Plus. Would mail eventually become so? That’s not what I want.

I want a home on the Internet. Or maybe a homestead. A place on which to hang my identity and remain static as long as possible. Changing from service to server a few times a decade is very awkward.

To this end, I registered a domain for my personal use (the same one which hosts this very web log) and began to wonder how best to set up my own services.

Google provides a lot of services. I wanted to replace the majority of them, where it made sense. For this post, I’m going to talk primarily about the ones I use for personal information management and communication. For me, this includes Mail, Calendar, Talk, Groups, and Voice.

Initially, I wanted to replace all these services with self-hosted open source services on a virtual server. That’s still certainly possible, but as time passed, I realize some services just weren’t worth my time or money to set up and maintain indefinitely. I realized, in some cases, that the software isn’t quite there, and in other cases, I couldn’t accomplish my goals that way. All that matters is that I control the domain and the data, really. Replacing Google has meant questioning my motivations and goals along and along and making decisions accordingly.

As an example, the first thing (and biggest thing) that I wanted to replace was mail. Gmail has innovated remarkably in the space of mail user agents, leading to amazing clients, and I’ve used Gmail exclusively for the better part of a decade, so the bar was a bit high in that regard. I also figured that server-side mail transfer agents had equally advanced in the time since I had last set up a mail server.

I was wrong. Mail servers have changed very little. What seems to have changed the most, with regards to MTAs, was all the other rigamarole to avoid being marked as spam. Between making sure my DNS setup was just right, getting DKIM signing working, making sure I had working SSL certificates, and so on, I felt like I had gotten in over my head. It certainly would have been workable, but I didn’t want to have to maintain that mess (and spend days encountering subtleties in my setup that made it insecure or flub a command and risk dropping mail on the floor).

There was also the matter of an SMTP server. I would need to send my mail somewhere. Probably using my ISP’s supplied SMTP servers? The days of sending mail around directly from server to destination in a trusted way are over, from what I can tell. This means, no matter what, I couldn’t be on my own with mail or completely avoid US-based MTAs from seeing my mail (even if the transmission itself were secure) ((I may have misunderstood all this; if so, disregard.)).

Some services just are best left to the pros.

I asked around for recommendations, and it sounds like, these days, most people are using Pobox or Fastmail. The biggest disadvantage I can see with either of those are they host themselves in the US. I don’t know what sort of PRISM arrangements the NSA has made with these providers, but after checking out Fastmail, I decided that I liked them enough that I didn’t care. Avoiding surveillence wasn’t one of my primary goals (though nice if I could accomplish it), so I ended up going with Fastmail.

For now, I’ve pointed all mail to my domain with a wildcard to come directly to my Fastmail inbox. It’s worked really well so far! I haven’t encountered spam yet, so I can’t speak to how well Fastmail deals with that, but every other feature I could want seems to work swimmingly (server-side filtering, nice UI, secure, and so on).

I have changed my mail address for most lists and services, giving each its own specific address. The transition is really still ongoing, as I wait around and see what mails end up going to my Google account and addressing the source.

I think the most awkward part was moving over Google Groups subscriptions. I’m not going to get into that subject here in detail, but suffice it to say, it’s almost completely undocumented and awkward to achieve for private lists, but it’s absolutely possible.

If mail was hard, setting up an IM server was a dream. I ended up using Prosody on my EC2 instance for XMPP ((Fastmail advertises that it has IM, but in my experience, it didn’t work, and others on the internet have complained about it.)). The only qualm is, again, interacting with existing Google users. I’m disinclined to add Google contacts, knowing I may lose communication with them at any moment—and not even know it. Maybe Google will change course someday, or maybe someone will figure out interoperability somehow despite Google. I doubt most people I know will end up moving en masse to another, more interoperable service.

At the polar opposite end of ease, I totally failed to get a working setup for a calendar server. Fastmail does not offer calendaring, contacts, tasks, or notes. I thought I could reasonably set all that up through some sort of DAV server, and I wasted probably weeks of my life (off and on) trying to find one that I could get working on my EC2 instance.

They were almost universally impossible to get working in a way that felt obvious, secure, or straightforward, and it was maddening. Every solution I found was either overengineered groupware or someone’s beta-stage private project.

Eventually I learned about Fruux on Twitter. I initially felt a pang about giving up control over this service, as well, but they won me over handily once I actually tried them. Compared to all the hours of effort I wasted trying to set up my own service, Fruux was so easy, it was like falling in love.

Okay, great, I’m no longer using Google. Now what do I do about my account there and all that data?

I want to keep the data forever and control it. I want to ensure my privacy (inasmuch as I realize the horse has already left the barn) for that backed up data.

I’ve used a combination of exports (for Calendar and Contacts), Google Takeout (for miscellaneous services, such as Voice), and a nifty app called gmvault for Talk and Gmail. All this data goes together in a directory which I’ve archived up, compressed, and GPG encrypted. As for long-term storage of this archive, I’ll probably use an archival quality CD and a flash drive.

As it all weighs over half a GB compressed, I doubt I’ll be able to print it all as a hard copy (and I’d worry about that if I did so).

Now, with the data backed up, what about the account? I’ve left my account active for the time being. It’s too abrupt, for now, to cut myself off from all Google services right now. Maybe someday in the future.

Zen Not Zen

On my day off, I was browsing the Internet and came across yet another nonsensical use of the word “Zen” to adorn a programming project. This isn’t the first time I’ve seen this in the wild. A quick search of GitHub shows an undeniable pattern. Even GitHub itself is complicit.

A quick glance at some of the (sometimes grating) descriptions and documentation for these projects reveals the use of “Zen” to connote simplicity, ease, and minimalism. Especially minimalism. I think the idea is to evoke harmony—with nature, with the user, with the computer, or with whatever—and peace, inasmuch as that can come from a computer.

(Searching the Internet some more, I came across a wonderful term, a “dharma-burger”, to describe this combination of Buddhism and pop culture via marketing.)

I am not a Zen teacher, practitioner, or student. However, I have to try to imagine what sort of dialogue I might engage in, were I on a team of engineers who were all white and raised in the West.

Listen, everyone, I don’t think naming this product “Zen” is a good idea. I know that we’re all white here, and when we hear the word “Zen,” we think of a certain minimalistic, natural aesthetic. We definitely want that sort of aesthetic, too. We want our product to feel good and be second-nature to learn.

I don’t think we can use “Zen” as a shorthand to refer to that aesthetic or philosophy, though, because there are a lot of people who have very different associations with the word. The bottom line is that we need to make a decision, now, before we ship, whether we want those people to be among our users or even among our team in the future.

In short, to my mind, it’s needless and offputting baggage. In other words, “Zen arts without Zen study is just cultural junk.”

What’s Mozilla Doing These Days?

I’m inclined to forget about Google. I’ve mostly completed the steps that I need to transition away from their services. I’m sitting on the fence about transitioning my mail (which would be the biggest and final step).

I got to thinking about all that today after I remembered that my RSS subscriptions existed and started reading through those, when I fell down a rabbit hole leading from Google’s disregard for the XMPP standard (sorry about the Google Plus link) to a depressing discussion about PNaCl.

Google has built an empire upon the web, and for a few years there, I got this sense they were really going somewhere remarkable, like there was some shining, beautiful future just over the horizon built out of community standards and driven by smart, passionate engineers. Any day now, I thought, they’d unite Gmail and Talk and Voice and Reader into some amazing community platform and usher in the future. Yep. Any day now. Just got to wait.

Yeah, I’m not sure that’s going to happen anymore.

Sorry. This post isn’t even about Google. It’s about the web. The web doesn’t need a company—it never needed Google, at least. But there are a lot of companies, organizations, and communities that need the web. The web is going to tend towards openness, no matter what we do, if history is any indication. It was created with open standards, and we need it badly to remain that way.

Earlier today, I tweeted:

Open question: Can Mozilla become (or is becoming) what Google has failed to realize?

I’ve written this blog post to elaborate (more or less) on that thought. Twitter is a pretty poor medium for this kind of discussion. What I really meant to ask is, can Mozilla fully embrace its role as a good steward for the web and by extension the web’s role in our lives and communities?

I suppose this would imply Mozilla competing more directly with Google and creating services for productivity and interactivity in some fashion or another. I’m not even sure that this makes sense for them. But given the Firefox OS and their Persona single-login identity service, it feels to me like a logical progression to begin offering cloud services to compete with Google and Apple.

All of this, of course, assumes Mozilla’s making strategic moves into a competitive space they haven’t shown much interest in so far. And maybe they don’t have to. Does the web need a steward?

Location, Location, Location

I’ve been making a concerted effort to recenter my online life around a user name that makes more sense for me. For me, this user name is “emilyst”. It’s a pretty straightforward adaptation from my name. That’s usually how I sign things, in fact, just the first two letters of my last name there.

By this point, I’m using it on GitHub, Twitter, and on IRC, among other places.

I managed to register emily.st and have pointed it at the same server as my old domain lilix.name. I’ve moved my blog to the new URL under emily.st/log (now emily.st). The old location will still mirror the blog with updates until I decide to let the domain expire, and then it won’t lead anywhere. Consider this your warning, if you’re trying to follow me at all.

Finally, I’ve decided not to bother with SSL for the time being. This means that the HTTPS version of my site no longer works for the new domain (the old domain will continue to work until next year with HTTPS).

Can I also just say how awesome it feels to have a vanity domain that feels like it makes sense and which I won’t get tired of after a few months? I feel pretty sure that I won’t waffle about this user name because it’s not actually some weird word or pun or inside joke on my part.

Change Your Cursor Shape on the Fly in Zsh’s “vi-mode”

Note: I no longer use the configuration below, and I no longer maintain it, so I provide the information as is.

I decided to switch to using something called “vi-mode” when using Zsh. If you’re into using the command line a lot, and you’re using Zsh, then you might find this interesting.

If you’re using “vi-mode” — and this entry isn’t really about using “vi-mode”, so I suggest you look elsewhere on what that is and how to use it — then you might desire to know offhand what mode you’re in when you look at your shell prompt. This is probably a natural desire, and it’s what occurred to me when I made the switch. I took a look at the vi-mode plugin that comes with oh-my-zsh. It has some nifty thing that can be inserted into the prompt.

I wanted something subtle, so I made it change the color of my lightning bolt. I wasn’t satisfied, though, because I remembered a Vim tip that let me change the cursor shape on the fly in exactly the same circumstances when using Vim proper. It uses a trick that works in iTerm2 (and evidently Konsole over on Linux), using a proprietary escape sequence.

I searched a little bit more, but I only ever saw information about this escape sequence in the context of Vim, so I’m evidently the first ever to want to use this escape sequence outside of Vim. I think it’s actually pretty useful, so I thought I’d jot down how I did it.

First, here’s what it looks like…


Now, as for how I did it. This is the relevant excerpt from my ~/.zshrc, omitting all the other things I have in there that accomplish the color change and other features I like.

function zle-keymap-select zle-line-init zle-line-finish {
  case $KEYMAP in
    vicmd)      print -n -- "\E]50;CursorShape=0\C-G";; # block cursor
    viins|main) print -n -- "\E]50;CursorShape=1\C-G";; # line cursor

  zle reset-prompt
  zle -R

zle -N zle-line-init
zle -N zle-line-finish
zle -N zle-keymap-select

That’s about it. Again, this only really works if you’re using iTerm 2 on a Mac.


I noticed one pernicious drawback of the methodology I outlined above. Whenever executing a command, it would use the line-style cursor just as a matter of course, since that’s what the shell had set earlier, and there was nothing to reset it when a command were issued.

For this reason, I split out the above Zsh widget functions so that the block cursor is always restored when the shell finishes reading a line of input. That is to say, I choose the line-style cursor when initializing a prompt to accept a new line of input (or when $KEYMAP changes), but as soon as I finish reading in input and move on to execute a command, I restore the block-style cursor. Here’s what that looks like:

function zle-keymap-select zle-line-init
    # change cursor shape in iTerm2
    case $KEYMAP in
        vicmd)      print -n -- "\E]50;CursorShape=0\C-G";;  # block cursor
        viins|main) print -n -- "\E]50;CursorShape=1\C-G";;  # line cursor

    zle reset-prompt
    zle -R

function zle-line-finish
    print -n -- "\E]50;CursorShape=0\C-G"  # block cursor

zle -N zle-line-init
zle -N zle-line-finish
zle -N zle-keymap-select

You can always find the most recent version of my settings in my .zshrc configuration script.

My Zsh Prompt

Not that anyone asked, but I decided to tell you guys a bit about my zsh prompt. If you care to check it out, it looks like this (with the text size blown up a bit to make it easier to read):


Couple of things here. I moved almost everything over to the right side, and I decided to keep everything on a single line. My rationale was that zsh does a rather clever thing when the command runs into the right prompt and makes it disappear. That’s pretty much ideal for me. All the information I could like when I’m looking at the prompt, and when I go to enter a command, it gets out of the way and lets me focus on the command itself.

I kept the left side minimal for that reason. It just has my old lightning bolt: It feels like a call to action.

I do make one concession to length and truncate the path at thirty characters. Seems like enough, but maybe I’ll update it at some point.

If you’re curious to check out the whole thing (which makes extensive use of the oh-my-zsh framework for git information), you can see its current incarnation here.