Best comic books?

This weekend I swapped comic book recommendations with a few folks. Today I was emailing someone a few of my favorites and thought “I should just put this up on the blog.”

So to call out a few comics I’ve enjoyed:
Sandman – the classic Neil Gaiman books that make it “okay” to be a comic book fan for me.
Transmetropolitan – a gonzo journalist in a 21st century Gibson-esque world.
Powers – about how police and the rest of the world might deal with people with superpowers.
Fables – wonderful graphic novels about a world where fairy tales bump up against our world.
Lucifer – originally a spinoff from Sandman, but satisfying in its own right. It’s about the devil.

By the way, I recently went through a phase of finding some fun web comics. At the risk of sending folks down a deep rabbit hole, consider these links as starting points:

Stand Still – Stay Silent
Hamlet’s Danish
Cyanide and Happiness
Loading Artist
Berkeley Mews

How about you–what comics or web comics do you like? Certainly stuff like xkcd or Penny Arcade can be fun, but I’d be interested to hear about things off the beaten path a bit.

Marathon similarity

Imagine that you’re training for the San Francisco Marathon. You’d like to prepare for the distinctive pattern of hills on the course:

Elevation map for SF Marathon

Now if you live in San Francisco, you could just run along the actual race course. But what if you don’t live near San Francisco? Wouldn’t it be cool if a service could suggest a running course near you that was similar to San Francisco’s marathon? That way, you might live somewhere like Portland or San Diego, but you could still prepare for the hills that you’d face in the real race.

This could be a fun/tricky problem. You could start by just dumbly comparing elevations to see how similar two runs are. A site like Strava already has GPS traces from runners, so they could compute similarity between runs. Within a selected radius, Strava could say which runs were most similar to (say) sections of the Boston Marathon.

Elevation similarity might be the easiest way to start, but Strava has other measures like “Suffer Score” that it could use instead. I’d be curious to know what running route in the Bay Area of California is most similar to the Boston Marathon, for example.

Earning loyalty

Here’s something that I wrote internally within Google in mid-2013. I think at the time, folks within Google were discussing XMPP. The discussion wasn’t as much about client-to-server XMPP, but server-to-server XMPP, which is a less followed area. Anyway, here’s the internal post I wrote:

We want to compete on a level playing field

We’ve expressed the principle of “Don’t be evil” from the early days of Google. Yet it wasn’t until 2006 that Eric enunciated the statement that “We would never trap user data.” I think Google’s DNA has another principle encoded in it that we haven’t called out clearly enough: We want to compete on a level playing field.

When we play on a level field, we work harder for users because we have to compete based on merit. If another search engine crawls the open web and returns better search results, people will switch to that new search engine immediately–so we’re constantly looking for ways to improve our search results.

Likewise, when people can leave Google, it makes us work harder to forge excellent products that earn our users’ loyalty. Data Liberation means that anyone can download their Gmail or their Calendar or Docs or their ad campaigns and then take their business elsewhere. That keeps us honest and working hard. We should strive to put our own products on a level playing field so that our incentive remains to deliver the best products and services we can.

The desire for a level playing field also partly explains why Chrome and Android are so important. Without Chrome, we’d be at the mercy of Internet Explorer or other web browsers when users want to get to Google. Without Android, phone makers could shut Google out of mobile phones completely. Chrome and Android help ensure that users can get to Google without interference; they protect our users from other companies’ potentially unlevel playing fields.

I think to many Googlers, the open web represents the ultimate level playing field. That’s why so many Googlers react so negatively to the idea of walled gardens, proprietary standards, or products that don’t interoperate well. The desire to compete fairly on a level playing field leads naturally to open standards, protocols, and interoperability.

Some other companies that don’t federate well have succeeded recently. [A specific company I won’t call out explicitly] sucked contacts out of Gmail but refused to export contacts back out. But I worry we learned the wrong lesson from that. The lesson isn’t that data liberation or a level field makes us a sitting duck for bad actors; the lesson should be that we may need to get creative to encourage better behavior–for example, Google modified its contacts export to require reciprocity.

At the top levels of Google, there’s a clear vision: a beautiful, seamless experience for users. I agree that’s vitally important, but I believe a large part of Google’s brand is also “functional”: Google is always up, it always works, it’s always fast, it always gives you what you need. I believe a beautiful, seamless experience has to rest on a functional foundation. And for many Googlers, a large part of “functional” includes openness and interoperability–again, a level playing field.

Google has done very well while promoting the principles of the internet: openness, transparency, and a level playing field. I think “We want to compete on a level playing field” follows from “Don’t be evil,” but I’d like us to recognize this part of our DNA and emphasize “We want to compete on a level playing field” more strongly.

How to install a Chrome extension from GitHub

I recently had a web page with a long list of Twitter names that were not linked, like @mattcutts. I thought that someone has to have made a Chrome extension that would “linkify” names so they would be clickable like @mattcutts. And with a little bit of searching, I found twlinkfy.

It looked like a great extension, but Chrome (at least in Windows) can only install Chrome extensions from the Chrome Web Store in order to protect against malware.

So how would you go from source code on GitHub to an installed Chrome extension? Here’s how I did it: download the extension as a .zip by looking for the “Download ZIP” button on the right-hand side of the project page on GitHub. Now extract/unzip the code somewhere. Then in Chrome go to Menu (the three lines)->More tools->Extensions. Click the “Developer mode” checkbox and then click the button labeled “Load unpacked extension…”.

Now navigate in the resulting file dialog box until you are in the directory with a manifest.json file. For me, it was in the twlinkfy-master/ext directory. And that’s it! The extension loaded, and when I loaded the page with a long list of @names as text, they turned into clickable links.

You can even modify the local source code and reinstall or reload the extension. For example, I changed line 10 of twlinkfy.js to point to a different destination page on Twitter for links. I uninstalled and re-installed the extension and then the links went to a different page on Twitter.

As always, be careful of extensions/code that you install in case someone is attempting something malicious.

The Seinfeld Calendar Trick

One trick that I’ve discovered pretty recently for my 30 day challenges is based on advice from Jerry Seinfeld.

The idea is that you get yourself a cheap calendar and a red pen. Every day you complete your daily challenge, you can cross that day off with a satisfying swipe of the red pen. Once you get a chain going, you’ll work even harder to avoid breaking your streak.

Here’s what my calendar looks like so far for my “write something everyday” challenge this month:

Showing a streak in the calendar

The ritual of crossing off a day–and the visual indication of success or failure–is a pretty good way to stay motivated and keep tackling your challenge. Little things can make a difference, like a routine or ritual about completing your daily challenge.

I also like that my red pen is held up with red thumbtacks. Sometimes it’s the small things that make you happy.