Jeff Mueller

Fragmentation

After Google I/O, I found myself using Hangouts more than iMessage, which struck me as odd. I’m firmly ensconced in the Apple ecosystem. Why, then, am I suddenly using a competitor’s messaging client more than the one that comes baked into all of my devices?

As I pondered that, a bigger question started to take shape. I’ve used a lot of services over the years. Some of them rose to the top as the best of breed in their category, whether it be social networking, music, whatever. But more often than not, I’ve used two or more services to accomplish the same task because each service offered its own strengths in the category. The question became: how many services do I regularly use that duplicate functionality?

Take photos for example. I like Flickr for pictures I put effort into (which happens less frequently these days). I use Instagram for quick shots that I want my friends to see. And I can easily cross post from Instagram to Facebook and Tumblr so my family and other friends can see them. But I also like sharing to App.net occasionally, which uses that service’s storage. And Dropbox is looking like an increasingly viable competitor to Photo Streams. Oh right! Then there’s Photo Streams.

So, I made a list. And as the list grew–and grow it did–I started to get angry. All of the overlap, all of the scattered data–MY scattered data–is mind boggling. Here’s the list. In it, I’ve included all of the services in each category that I’ve used over the last few years.

Photos

  • Flickr
  • Facebook
  • Instagram
  • Hipstamatic/Oggl
  • App.net
  • Photo Stream
  • Dropbox

Status/Sharing

  • Twitter
  • Facebook
  • App.net
  • Google+
  • Tumblr

Music

  • Rdio
  • Spotify
  • iTunes Match
  • Pandora
  • Amazon
  • Last.fm

Video

  • Hulu
  • Netflix
  • iTunes Store
  • Amazon Streaming

Files

  • Dropbox
  • iCloud
  • Google Drive
  • App.net

Text Files

  • Dropbox
  • iCloud
  • Simplenote
  • Evernote
  • Drafts Sync

Documents

  • iCloud
  • Draft
  • Google Docs
  • Dropbox

Email

  • Gmail
  • iCloud

Chat/Messaging

  • iMessage
  • Google Talk/Hangouts
  • Jabber
  • SMS

Maps

  • Google Maps
  • Apple Maps

Books

  • iBooks
  • Kindle

Video Chat

  • FaceTime
  • Skype
  • Google Hangouts

Contacts

  • Gmail
  • iCloud

Calendars

  • Google Calendar
  • iCloud

Video Sharing

  • YouTube
  • Vimeo
  • Vine
  • Dropbox
  • App.net
  • Google
  • Bing
  • Wolfram Alpha
  • Duck Duck Go

In many cases, I’ll never be able to have one solution, one app to rule them all. But why?

Using my photo sharing example from above, the answer is pretty clear. It comes down to staying in touch with the people I care about. And because those folks also share this problem of fragmentation, there’s no one way for me to stay in touch with all of them. We’ve been split into factions by service providers. The Facebookers. The Tumblrs. The Tweeters. The AppDotNetters.

This is intensely frustrating to me. Looking at the list above, I realize my online life is too cluttered. I’d like to simplify things. But the decision to simplify by cutting out one service in favor of another often means cutting out a conversation that includes family and/or friends–people I care about. People I want to communicate and share with. Simplicity vs. family or friends is a pretty sad corner to be backed into.

I know I’m not alone in my want to stay connected. Dan Benjamin left Instagram after their sell-out to Facebook, but he returned because he was “tired of missing out on what some of my Instagram-only friends are doing.” I’ve sorta left Twitter a couple of times, but ultimately, I missed a handful of the voices that had become familiar. And those voices were never going to be available in my App.net stream, not only because those people will never jump ship, but also because Twitter’s terms of service prevent people from extracting value from the service (e.g., piping streams from Twitter to another site, combining a Twitter feed with a feed from another service like Facebook or App.net, etc.). And Twitter’s onerous TOS isn’t an anomaly.

The Verge published an article after Google I/O about the increasingly fragmented state of messaging, and the future is pretty bleak. Instead of moving toward interoperability, service providers are moving farther apart without giving a damn about what this means for their customers. They want to lock you in, and if they’re successful, you’ll bring your friends and family with you. Yay, more customers. But they’ve now convinced all of you to use n+1 services (because, as I mentioned, not everyone likes to jump ship), which complicates your life, your friends’ lives, and probably the lives of other people they stay in contact with on the web. That service providers show a complete disregard for the implications of their actions is, to me, almost a bigger slap in the face than the selfishness of trying to achieve lock-in.

I think what bothers me most is that I don’t have a solution to this problem. In a lot of situations, I could make life pretty simple by using Google’s services for just about everything, which would be fine if Google didn’t come off as the creepiest company in existence right now. I’d rather rely on Apple for most things, but they suck–and always have sucked–at online services. I doubt that will ever change.

We can’t count on companies to act responsibly, and expecting one of them to step up as a hero to successfully unify our online lives is silly. Which leaves one choice if you’re bent on simplicity: whose voices can you live without? Who are you comfortable cutting out of your online life? Since I’m not comfortable answering that question—and you probably aren’t, either—things will have to continue to be messy.

A Few More Links

  • Vundle - An easy way to install and update your VIM plugins
  • Pry - The Good Parts - Slides that demonstrate the true power of Pry
  • Area - A gem for doing basic geocoder-style lookups on zip codes, cities, and states without relying on a third-party service
  • Instacast Beta for Mac - One of the best podcast apps for iOS makes its way to the Mac, and it’s full of great features
  • 5 Useful Tips for a Better Commit Message - Thoughtbot weighs in on what makes for a good message, and their recommendations are perfect

Repeat Offenders

Riposte got an awesome update with optional pro features that are absolutely worth the $5. This app gets more beautiful (and useful!) with each release.

Kaleidoscope has become more useful since I set up an alias to review the changes between my current branch and the master branch. Put this in your .gitconfig and give it a shot by running git review on a feature branch:

alias.review=difftool master..

A Few Links

In no particular order, here are a few things that have made my life better over the last couple of weeks:

Project Amy →

Project Amy integrates App.net’s private messaging into Mac OS X’s Messages app. I’ve played around with this a bit, and it’s a fantastic piece of work. Steve Streza has once again shown himself to be delightfully subversive.

Fear of a WebKit Planet →

As much as I despised Internet Explorer for Windows, and what its simultaneous stagnation and dominance did to the web, I don’t think it’s the correct historical analog in this case. WebKit is not a web browser. It’s not even a product. It’s much more analogous to Linux, an open-source project that any company or individual is free to build on and enhance.

John Siracusa hits the nail on the head.

Generic RSS Sidebar for Octopress →

I do stupid things when I’m tired.

Last night, I duplicated a bunch of code, put it in its own repository, and posted about it here. This was stupid. What I should have done is genericized the code I was using in the original project. Less duplication, more flexibility, easier to implement, etc. So that’s what I did.

Now, you can easily add any RSS feed to your Octopress sidebar. Here’s how:

0. Find the URL you want to use

For Instapaper, log in, scroll to the bottom of the page, and copy the link in the footer labeled This folder’s RSS.

For Pocket, replace USERNAME with your pocket username:

http://getpocket.com/users/USERNAME/feed/unread

You’ll also have to make your Pocket feeds publicly viewable. Log into Pocket and visit the Privacy Controls page. Click the Turn off RSS Feed password protection link.

1. Add files to Octopress

Place the files in this GitHub repo into the corresponding directories.

rss_feed.js       -> source/javascripts/rss_feed.js
rss_feed.html     -> source/_includes/custom/asides/rss_feed.html
_rss_feed.scss    -> sass/partials/sidebar/_rss_feed.scss

2. Update your _config.yml file

You’ll need to add a few variables for the plugin to function. Here’s an example that uses Pocket:

# RSS Feed
rss_feed_url: http://getpocket.com/users/jeffmueller/feed/unread
rss_feed_title: "My Pocket Queue"
rss_feed_include_link_to_feed: true
rss_feed_link_title: "My Pocket Feed"

Also, update your default_asides array to include the rss_feed.html aside. Example:

default_asides: [asides/recent_posts.html, custom/asides/rss_feed.html, asides/github.html ]

4. Add the SASS

Add the following line to sass/partials/_sidebar.scss.

@import "sidebar/rss_feed";

5. Build and deploy

Run rake generate to rebuild your site, run rake preview, and you should see your RSS feed in the sidebar when you refresh the page.

At maximum, the widget will show the 5 most recent unread items. You can tweak that value in rss_feed.js if you want the widget to display fewer (or more!) unread items.

The Realities of App.net App Pricing →

Again according to Appnetizens there are only somewhere around 2.3k unique users posting to the service each day.

Ouch.

I’ve been a supporter and a big fan of App.net since it launched. My next iOS project is going to use App.net for infrastructure. I really want the service to succeed, but with only 2,300 active daily users, it’s hard to see how that’s going to be possible. Sucks.

Pocket Sidebar for Octopress

HEADS UP!: The info in this post is now obsolete. Refer to this for updated info.


A combination of boredom, a baby that won’t sleep, and a recent switch from Instapaper to Pocket led me to create a tweaked version of my Instapaper sidebar for Octopress. The code is nearly identical, but the installation process is a bit different.

0. Find your Pocket URL

This part’s easy. Replace USERNAME with your pocket username:

http://getpocket.com/users/USERNAME/feed/unread

1. Make your Pocket RSS feeds public

In order for rsstojson to parse your RSS feed, it needs to be publicly viewable. Log into Pocket and visit the Privacy Controls page. Click the Turn off RSS Feed password protection link.

2. Add files to Octopress

Place the files in this GitHub repo into the corresponding directories.

pocket.js       -> source/javascripts/pocket.js
pocket.html     -> source/_includes/custom/asides/pocket.html
_pocket.scss    -> sass/partials/sidebar/_pocket.scss

3. Update your _config.yml file

Add a line for pocket_rss_url, and set it equal to the RSS url you copied in step 0.

# Pocket
pocket_rss_url: http://getpocket.com/users/jeffmueller/feed/unread

Also, update your default_asides array to include the pocket.html aside. Example:

default_asides: [asides/recent_posts.html, **custom/asides/pocket.html**, asides/github.html ]

4. Add the SASS

Add the following line to sass/partials/_sidebar.scss.

@import "sidebar/pocket";

5. Build and deploy

Run rake generate to rebuild your site, run rake preview, and you should see your Pocket feed in the sidebar when you refresh the page.

At maximum, the widget will show the 5 most recent unread items. You can tweak that value in pocket.js if you want the widget to display fewer (or more!) unread items.

Other Feeds?

The Instapaper and Pocket variants of this code show how simple it is to use rsstojson to display the contents of an RSS feed in your sidebar. You could easily fork this code and point it at another feed if you so desired.

What Your Culture Really Says →

I tried to find a good pull quote to put here, but I couldn’t. There’s so much truth in here. If you’ve ever considered working for a startup, do yourself a favor and read this.

Clockpunch 1.4 →

My tiny app has gotten a fresh set of code tweaks, including support for iOS 6, iPhone 5, and the latest Dropbox SDK. But it also got a nice, new website. Yes, it’s Twitter Bootstrap. So sue me.