Automation Maturity

I’ve been giving a talk around town about DevOps and what it means for me as a software developer. In short, I’m really excited about the idea that the wall between “dev” and “ops” is softening in a real way.

At a recent event, someone raised their hand to ask how an organization can know if they’re “doing DevOps correctly”. Is there one pattern or practice that separates the people who “get it” from the novices? I was speechless! Flatfooted. I wish I’d had time to whip up a blog entry on the spot.

First of all, this is obviously more complicated than that. It makes me think of “one weird trick to lose weight” or “the three things that every successful person does before 7am”. Easy answers might point you in the right direction, but they’re no substitute for a complete understanding.

But: if I had to answer the question, I think it hinges around maturity and automation. If you are making progress towards automating what you can, and manually intervening when you have to, then I think you can claim you’re going in the right direction. If you don’t have time to do the things that will save you time down the road, then I don’t know that you can expect to develop maturity in the DevOps space.

And, of course, “doing it right” is no reason to let up off the gas and rest. Continuous improvement means continuous experimentation and change.

Leaving Google Mail

Google Mail is great. It’s probably the best combined mail-service-and-mail-app in the world. As soon as I think someone’s coming out with something that’s maybe-just-as-good, GMail kicks it up with something inimitable.

And, of course, their inimitable thing might be integration with a product that Google owns. After not-long, I was using my Google credentials to sign into apps. Then you had to sign into YouTube with your Google account. Then I was getting pop-ups and emails about Google+, a social network on which I’d never really found any of my friends.

However, as they say, if you aren’t paying for a product, then you are the product. Google’s goofy history of increasingly arbitrary decisions (decisions that never gave benefit to users, beyond giving Google more leverage with advertisers and thus paying for more years of GMail) finally got to me and I had to investigate alternatives.

Here’s what I learned:

You’re replacing your mail service and your mail app. I really like Google’s mail app, and I don’t really know all that much about mail services, so I knew I needed one that could ably replace both pieces of it. (And not necessarily the mobile apps and chat service and calendars and stuff, but we’ll get to that.) Your favorite feature of Google Mail (video chat, stars, all those apps that are built on top of GMail now) probably simply doesn’t exist elsewhere, and you have to suck it up and let go. (That’s how they get you.)

That sort of thing starts at a couple bucks a month. I didn’t really want to spend $10/month on email, when I already spend money on web hosting and owning my own domains. Fastmail has a great rep and fits the bill – because I wanted to use my own custom domain, I had to select one of their higher tiers, but

There’s a whole world of mail filtering I had no idea existed. I said that Google’s strengths aren’t matched elsewhere, but I’m having good luck with Fastmail’s spam filtering. But: do you set up mail rules to filter social, commercial, and pestering emails out of your inbox? One of Google’s inimitable features is that they will handle this for you. However, Fastmail supports something called Sieve which actually runs all mail through a script to determine where it should go. Look at this syntax:

if not header :contains ["X-Spam-known-sender"] "yes" {
    if allof(
      header :contains ["X-Backscatter"] "yes",
      not header :matches ["X-LinkName"] "*" 
      fileinto "INBOX.Junk Mail";
    if  header :value "ge" :comparator "i;ascii-numeric" ["X-Spam-score"] ["5"]  
      fileinto "INBOX.Junk Mail";

It’s not for amateurs (so there’s a GUI where a lot of this can be managed) but, for me, this is amazing. I keep a list of known noisemakers, commerce hounds, and social domains that makes filtering a breeze. (Actually, it’s not a breeze: maintaining the script and its data is a little obnoxious. But it’s mine, and it’s not written by Google, and it can’t be corrupted simply because advertisers have paid enough to defeat it.) I’m down to really truly inboxy stuff in my inbox, which is a huge deal.

It is a lot of work to change your email address. If you’re going to forward your old email to your new account, that’ll work, but I really wanted to be able to sunset my old email accounts and move forward with something that was new. (I’ve had my Google email address for 10 years, and my other main address for 16 years.) So I bit off everything at the same time: new address, new service, new app.

I watched my old addresses (which I still forwarded, naturally) and, one-by-one, went about the business of changing the email addresses by which they new me. From hardest to easiest:

  1. People. If you want to email a friend, how do you remember their email address? You might have a contact manager or you might just find an old email from them and reply to it. (Google Mail will suggest commonly used email addresses if you just start typing someone’s name.) None of these are updated automatically when I send out my “hey I got a new address” email. People are the worst.
  2. Companies who don’t give a crap. Lots of companies send email with no footer letting you get back to their site and edit your profile. All I could do was unsubscribe, and so I did. (Potential scope creep in any project: if the app should send an email, are you ready to think about every aspect of sending email, including allowing the editing of an email address?)
  3. Companies whose systems are tightly coupled to your email address. I have a number of accounts at places where editing one’s email never occurred to them. Apple was particularly bad. I’m still (eight months later) trying to convince iCloud who I am across all my devices. (How’d they not see that coming?)
  4. Companies who get it. I was actually pretty impressed by a lot of organizations who let me change my email no problem, so long as I clicked a link in an email to the new address, and almost all of them sent an email to my old email address just in case. Better yet were companies that had a concept of “membership” that would allow them to keep an array of email addresses. For a company like LinkedIn, that’s key: they want you findable by your “work email” no matter how many companies you work at over the years. But Microsoft has a similar system, and it’s really nice to be able to add a new email address without being logged out on all your other devices.

Long term, I’m really happy I did this. It’s not without effort or expense, but it’s where I am right now: too concerned with being sold to advertisers to sit comfortably with an ad-based service, and not wanting to run a mail server in my house.

Neither HTTP nor HTTPS

I don’t know if you caught this in the jQuery CDN post of earlier this week, but the link to jQuery didn’t use “” or “”, but “//”.  Why is that?

I’m not sure when it became kosher by the browsers, but it’s called a protocol-relative URL.  If you make sites that serve pages up over http and https, then you’ve seen the need for this: to avoid a nasty (IE-only) security warning, you have to serve up assets that match the page.

Leaving the scheme off puts the browser in charge of asking for the assets the way that matches.  Problem solved.

Mostly.  Apparently, this had weird side effects in IE7 and IE8.