<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

  <title><![CDATA[Jeff Mueller]]></title>
  <link href="http://jeffmueller.net/atom.xml" rel="self"/>
  <link href="http://jeffmueller.net/"/>
  <updated>2013-05-20T10:44:52-07:00</updated>
  <id>http://jeffmueller.net/</id>
  <author>
    <name><![CDATA[Jeff Mueller]]></name>
    
  </author>
  <generator uri="http://octopress.org/">Octopress</generator>

  
  <entry>
    <title type="html"><![CDATA[Fragmentation]]></title>
    <link href="http://jeffmueller.net/blog/2013/05/19/fragmentation/"/>
    <updated>2013-05-19T15:09:00-07:00</updated>
    <id>http://jeffmueller.net/blog/2013/05/19/fragmentation</id>
    <content type="html"><![CDATA[<p>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?</p>

<p>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?</p>

<p>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.</p>

<p>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.</p>

<h3 id="photos">Photos</h3>

<ul>
  <li>Flickr</li>
  <li>Facebook</li>
  <li>Instagram</li>
  <li>Hipstamatic/Oggl</li>
  <li>App.net</li>
  <li>Photo Stream</li>
  <li>Dropbox</li>
</ul>

<h3 id="statussharing">Status/Sharing</h3>

<ul>
  <li>Twitter</li>
  <li>Facebook</li>
  <li>App.net</li>
  <li>Google+</li>
  <li>Tumblr</li>
</ul>

<h3 id="music">Music</h3>

<ul>
  <li>Rdio</li>
  <li>Spotify</li>
  <li>iTunes Match</li>
  <li>Pandora</li>
  <li>Amazon</li>
  <li>Last.fm</li>
</ul>

<h3 id="video">Video</h3>

<ul>
  <li>Hulu</li>
  <li>Netflix</li>
  <li>iTunes Store</li>
  <li>Amazon Streaming</li>
</ul>

<h3 id="files">Files</h3>

<ul>
  <li>Dropbox</li>
  <li>iCloud</li>
  <li>Google Drive</li>
  <li>App.net</li>
</ul>

<h3 id="text-files">Text Files</h3>

<ul>
  <li>Dropbox</li>
  <li>iCloud</li>
  <li>Simplenote</li>
  <li>Evernote</li>
  <li>Drafts Sync</li>
</ul>

<h3 id="documents">Documents</h3>

<ul>
  <li>iCloud</li>
  <li>Draft</li>
  <li>Google Docs</li>
  <li>Dropbox</li>
</ul>

<h3 id="email">Email</h3>

<ul>
  <li>Gmail</li>
  <li>iCloud</li>
</ul>

<h3 id="chatmessaging">Chat/Messaging</h3>

<ul>
  <li>iMessage</li>
  <li>Google Talk/Hangouts</li>
  <li>Jabber</li>
  <li>SMS</li>
</ul>

<h3 id="maps">Maps</h3>

<ul>
  <li>Google Maps</li>
  <li>Apple Maps</li>
</ul>

<h3 id="books">Books</h3>

<ul>
  <li>iBooks</li>
  <li>Kindle</li>
</ul>

<h3 id="video-chat">Video Chat</h3>

<ul>
  <li>FaceTime</li>
  <li>Skype</li>
  <li>Google Hangouts</li>
</ul>

<h3 id="contacts">Contacts</h3>

<ul>
  <li>Gmail</li>
  <li>iCloud</li>
</ul>

<h3 id="calendars">Calendars</h3>

<ul>
  <li>Google Calendar</li>
  <li>iCloud</li>
</ul>

<h3 id="video-sharing">Video Sharing</h3>

<ul>
  <li>YouTube</li>
  <li>Vimeo</li>
  <li>Vine</li>
  <li>Dropbox</li>
  <li>App.net</li>
</ul>

<h3 id="search">Search</h3>

<ul>
  <li>Google</li>
  <li>Bing</li>
  <li>Wolfram Alpha</li>
  <li>Duck Duck Go</li>
</ul>

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

<p>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.</p>

<p>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.</p>

<p>I know I’m not alone in my want to stay connected. <a href="http://benjamin.org/dan/">Dan Benjamin</a> left Instagram after their sell-out to Facebook, but he <a href="https://twitter.com/danbenjamin/status/335903634636275713">returned</a> 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.</p>

<p>The Verge <a href="http://www.theverge.com/2013/5/16/4336004/pick-your-poison-mobile-messaging-will-be-fragmented-expensive-or-locked-in">published an article</a> 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.</p>

<p>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.</p>

<p>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.</p>

]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[A Few More Links]]></title>
    <link href="http://jeffmueller.net/blog/2013/05/02/a-few-more-links/"/>
    <updated>2013-05-02T12:35:00-07:00</updated>
    <id>http://jeffmueller.net/blog/2013/05/02/a-few-more-links</id>
    <content type="html"><![CDATA[<ul>
  <li><a href="https://github.com/gmarik/vundle">Vundle</a> - An easy way to install and update your VIM plugins</li>
  <li><a href="https://speakerdeck.com/conradirwin/pry-the-good-parts">Pry - The Good Parts</a> - Slides that demonstrate the true power of <a href="http://pryrepl.org/">Pry</a></li>
  <li><a href="https://github.com/jgv/area">Area</a> - A gem for doing basic geocoder-style lookups on zip codes, cities, and states without relying on a third-party service</li>
  <li><a href="http://vemedio.com/products/instacast-mac">Instacast Beta for Mac</a> - One of the best podcast apps for iOS makes its way to the Mac, and it’s full of great features</li>
  <li><a href="http://robots.thoughtbot.com/post/48933156625/5-useful-tips-for-a-better-commit-message">5 Useful Tips for a Better Commit Message</a> - Thoughtbot weighs in on what makes for a good message, and their recommendations are perfect</li>
</ul>

<h2 id="repeat-offenders">Repeat Offenders</h2>

<p><a href="http://riposteapp.net/">Riposte</a> got an awesome update with optional pro features that are absolutely worth the $5. This app gets more beautiful (and useful!) with each release.</p>

<p><a href="http://www.kaleidoscopeapp.com/">Kaleidoscope</a> 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 <code>.gitconfig</code> and give it a shot by running <code>git review</code> on a feature branch:</p>

<pre><code>alias.review=difftool master..
</code></pre>

]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[A Few Links]]></title>
    <link href="http://jeffmueller.net/blog/2013/03/28/a-few-links/"/>
    <updated>2013-03-28T23:03:00-07:00</updated>
    <id>http://jeffmueller.net/blog/2013/03/28/a-few-links</id>
    <content type="html"><![CDATA[<p>In no particular order, here are a few things that have made my life better over the last couple of weeks:</p>

<ul>
  <li><a href="https://github.com/Lokaltog/powerline">Powerline for VIM</a> - Awesome status bar for VIM</li>
  <li><a href="http://letsfreckle.com">Freckle</a> - Time tracking web app</li>
  <li><a href="http://getballpark.com">Ballpark</a> - Invoicing and billing software</li>
  <li><a href="http://thinktapwork.com/gramatica/">Gramatica</a> - An absolutely beautiful Instagram viewer for iPad and iPhone</li>
  <li><a href="http://forecast.io">Forecast.io</a> - A new weather app from the makers of <a href="http://darkskyapp.com">Dark Sky</a>. Stunning mobile version on the iPhone.</li>
  <li><a href="http://www.kaleidoscopeapp.com">Kaleidoscope</a> - Started using this as my diff and merge tool for Git</li>
  <li><a href="http://pry.github.com">Pry</a> - Debugging tool for Ruby-based apps</li>
  <li><a href="http://sailforapp.net">Sail</a> - An OS X <a href="http://alpha.app.net">App.net</a> client for posting only</li>
  <li><a href="http://www.ridiculousfishing.com">Ridiculous Fishing</a> - iOS game that is, as you might have guessed, ridiculous</li>
  <li><a href="http://riposteapp.net">Riposte</a> - My favorite way to read <a href="http://alpha.app.net">App.net</a> from my iPhone</li>
  <li><a href="https://github.com/ggreer/the_silver_searcher">The Silver Searcher</a> - Stupid-fast replacement for ack</li>
</ul>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Project Amy]]></title>
    <link href="http://jeffmueller.net/blog/2013/03/04/project-amy/"/>
    <updated>2013-03-04T22:43:00-08:00</updated>
    <id>http://jeffmueller.net/blog/2013/03/04/project-amy</id>
    <content type="html"><![CDATA[<p>Project Amy integrates <a href="http://app.net">App.net</a>’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.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Fear of a WebKit Planet]]></title>
    <link href="http://jeffmueller.net/blog/2013/03/04/fear-of-a-webkit-planet/"/>
    <updated>2013-03-04T22:38:00-08:00</updated>
    <id>http://jeffmueller.net/blog/2013/03/04/fear-of-a-webkit-planet</id>
    <content type="html"><![CDATA[<blockquote>
  <p>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.</p>
</blockquote>

<p><a href="https://alpha.app.net/siracusa">John Siracusa</a> hits the nail on the head.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Generic RSS Sidebar for Octopress]]></title>
    <link href="http://jeffmueller.net/blog/2013/02/22/generic-rss-sidebar-for-octopress/"/>
    <updated>2013-02-22T09:42:00-08:00</updated>
    <id>http://jeffmueller.net/blog/2013/02/22/generic-rss-sidebar-for-octopress</id>
    <content type="html"><![CDATA[<p>I do stupid things when I’m tired.</p>

<p>Last night, I <a href="http://jeffmueller.net/blog/2013/02/22/pocket-sidebar-for-octopress/">duplicated a bunch of code</a>, 
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.</p>

<p>Now, you can easily add <em>any</em> RSS feed to your Octopress sidebar. Here’s how:</p>

<h2 id="find-the-url-you-want-to-use">0. Find the URL you want to use</h2>

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

<p>For Pocket, replace USERNAME with your pocket username:</p>

<pre><code>http://getpocket.com/users/USERNAME/feed/unread
</code></pre>

<p>You’ll also have to make your Pocket feeds publicly viewable. Log into 
<a href="http://getpocket.com">Pocket</a> and visit the 
<a href="http://getpocket.com/privacy_controls">Privacy Controls</a> page. Click the 
<code>Turn off RSS Feed password protection</code> link.</p>

<h2 id="add-files-to-octopress">1. Add files to Octopress</h2>

<p>Place the files in this 
<a href="https://github.com/jeffmueller/rss-feed-aside">GitHub repo</a> into the 
corresponding directories.</p>

<pre><code>rss_feed.js       -&gt; source/javascripts/rss_feed.js
rss_feed.html     -&gt; source/_includes/custom/asides/rss_feed.html
_rss_feed.scss    -&gt; sass/partials/sidebar/_rss_feed.scss
</code></pre>

<h2 id="update-your-configyml-file">2. Update your <code>_config.yml</code> file</h2>

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

<pre><code># 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"
</code></pre>

<p>Also, update your <code>default_asides</code> array to include the <code>rss_feed.html</code> aside. Example:</p>

<pre><code>default_asides: [asides/recent_posts.html, custom/asides/rss_feed.html, asides/github.html ]
</code></pre>

<h2 id="add-the-sass">4. Add the SASS</h2>

<p>Add the following line to <code>sass/partials/_sidebar.scss</code>.</p>

<pre><code>@import "sidebar/rss_feed";
</code></pre>

<h2 id="build-and-deploy">5. Build and deploy</h2>

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

<p>At maximum, the widget will show the 5 most recent unread items. You can tweak that value in <code>rss_feed.js</code> if you want the widget to display fewer (or more!) unread items.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[The Realities of App.net App Pricing]]></title>
    <link href="http://jeffmueller.net/blog/2013/02/22/the-realities-of-app-dot-net-app-pricing/"/>
    <updated>2013-02-22T01:33:00-08:00</updated>
    <id>http://jeffmueller.net/blog/2013/02/22/the-realities-of-app-dot-net-app-pricing</id>
    <content type="html"><![CDATA[<blockquote>
  <p>Again according to Appnetizens there are only somewhere around 2.3k unique users posting to the service each day.</p>
</blockquote>

<p>Ouch.</p>

<p>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.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Pocket Sidebar for Octopress]]></title>
    <link href="http://jeffmueller.net/blog/2013/02/22/pocket-sidebar-for-octopress/"/>
    <updated>2013-02-22T01:07:00-08:00</updated>
    <id>http://jeffmueller.net/blog/2013/02/22/pocket-sidebar-for-octopress</id>
    <content type="html"><![CDATA[<p><strong>HEADS UP!</strong>: The info in this post is now obsolete. Refer to <a href="http://jeffmueller.net/blog/2013/02/22/generic-rss-sidebar-for-octopress/">this</a> for updated info.</p>

<hr />

<p>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.</p>

<h2 id="find-your-pocket-url">0. Find your Pocket URL</h2>

<p>This part’s easy. Replace USERNAME with your pocket username:</p>

<pre><code>http://getpocket.com/users/USERNAME/feed/unread
</code></pre>

<h2 id="make-your-pocket-rss-feeds-public">1. Make your Pocket RSS feeds public</h2>

<p>In order for <a href="rsstojson.herokuapp.com">rsstojson</a> to parse your RSS feed, it 
needs to be publicly viewable. Log into <a href="http://getpocket.com">Pocket</a> and 
visit the <a href="http://getpocket.com/privacy_controls">Privacy Controls</a> page. 
Click the <code>Turn off RSS Feed password protection</code> link.</p>

<h2 id="add-files-to-octopress">2. Add files to Octopress</h2>

<p>Place the files in this <a href="https://github.com/jeffmueller/pocket-aside">GitHub repo</a> into the corresponding directories.</p>

<pre><code>pocket.js       -&gt; source/javascripts/pocket.js
pocket.html     -&gt; source/_includes/custom/asides/pocket.html
_pocket.scss    -&gt; sass/partials/sidebar/_pocket.scss
</code></pre>

<h2 id="update-your-configyml-file">3. Update your <code>_config.yml</code> file</h2>

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

<pre><code># Pocket
pocket_rss_url: http://getpocket.com/users/jeffmueller/feed/unread
</code></pre>

<p>Also, update your <code>default_asides</code> array to include the <code>pocket.html</code> aside. Example:</p>

<pre><code>default_asides: [asides/recent_posts.html, **custom/asides/pocket.html**, asides/github.html ]
</code></pre>

<h2 id="add-the-sass">4. Add the SASS</h2>

<p>Add the following line to <code>sass/partials/_sidebar.scss</code>.</p>

<pre><code>@import "sidebar/pocket";
</code></pre>

<h2 id="build-and-deploy">5. Build and deploy</h2>

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

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

<h2 id="other-feeds">Other Feeds?</h2>

<p>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.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[What Your Culture Really Says]]></title>
    <link href="http://jeffmueller.net/blog/2013/02/22/what-your-culture-really-says/"/>
    <updated>2013-02-22T00:05:00-08:00</updated>
    <id>http://jeffmueller.net/blog/2013/02/22/what-your-culture-really-says</id>
    <content type="html"><![CDATA[<p>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.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Clockpunch 1.4]]></title>
    <link href="http://jeffmueller.net/blog/2013/02/21/clockpunch-1-dot-4/"/>
    <updated>2013-02-21T15:54:00-08:00</updated>
    <id>http://jeffmueller.net/blog/2013/02/21/clockpunch-1-dot-4</id>
    <content type="html"><![CDATA[<p>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 <a href="http://twitter.github.com/bootstrap/">Twitter Bootstrap</a>. So sue me.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Logitech Ultrathin Keyboard for iPad mini]]></title>
    <link href="http://jeffmueller.net/blog/2013/02/21/logitech-ultrathin-keyboard-for-ipad-mini/"/>
    <updated>2013-02-21T15:02:00-08:00</updated>
    <id>http://jeffmueller.net/blog/2013/02/21/logitech-ultrathin-keyboard-for-ipad-mini</id>
    <content type="html"><![CDATA[<p>I love the <a href="http://www.apple.com/ipad-mini/overview/">iPad mini</a>. As of right now, it’s my favorite computing device (tied with my iPhone).</p>

<p>It’s so good, in fact, that I’ve wanted to use it more and more, but typing anything longer than a short email with the on-screen keyboard is a chore. So, when Logitech announced they were bringing their highly regarded <a href="http://www.logitech.com/en-us/product/ultrathin-keyboard-cover">Ultrathin Keyboard</a> to the mini, I decided to give it a shot.</p>

<p>Here’s what I found after using it off and on for a day.</p>

<h2 id="the-bad">The Bad</h2>

<p>It’s surprisingly heavy. Logitech claims three months of battery life, and I think it’s probably the battery that adds most of the heft. It’s so heavy, in fact, that gripping the iPad and holding it at an angle with the keyboard attached will cause the keyboard to drop off without warning. The magnets can’t overcome the weight.</p>

<p>In use, three keys have been troublesome: the delete key, the apostrophe key (which is half the width of the rest of the keys on the keyboard), and the tab key. Having to hit the <code>FN</code> key to insert a tab? Ouch. Especially if you’re coding.<sup id="fnref:2"><a href="#fn:2" rel="footnote">1</a></sup></p>

<p>And when you make a mistake because those keys are hard to hit? No autocorrect. To be fair, this isn’t Logitech’s fault; it’s Apple’s. Autocorrect doesn’t work with <em>any</em> external keyboard, which makes that kinda-hard-to-hit delete key even more painful.<sup id="fnref:1"><a href="#fn:1" rel="footnote">2</a></sup></p>

<h2 id="the-good">The Good</h2>

<p>Even though it’s heavy, it’s very sturdy and feels like a high-quality accessory. And typing isn’t nearly as difficult as I thought it would be. I’m actually quite fast with it; not as fast as with a full-size keyboard, but much faster than I ever was with the on-screen keyboard. Selecting, copying, cutting, and pasting text are also delightfully easy compared to using the touch screen.</p>

<p>The iPad-specific function keys have proven to be the biggest surprise. Being able to bring up the app switcher, the home screen, and Siri AND being able to control audio means your hands leave the keyboard much less often than you would expect. For a VIM nerd like myself, this is great news.</p>

<h2 id="the-other">The Other</h2>

<p>The addition of a keyboard goes a long way toward making the iPad feel like a “real” computer. That said, the keyboard itself, in this context, feels like a holdover from a previous time. A crutch. And I wish I didn’t have to use it to feel more productive on the iPad.</p>

<p>In using it, I’ve also become acutely aware of how many apps don’t let you dismiss their sidebar in landscape mode (e.g., <a href="http://dayoneapp.com/">Day One</a>). Your writing area is pretty cramped in those situations. <a href="http://www.iawriter.com/">IA Writer</a>, however, is fantastic (I’m writing this article with it), especially in focus mode. It feels like a typewriter–in a good way.</p>

<p>Finally, one big win for me: I can still fit my iPad into the <a href="http://www.sfbags.com/products/ipad-cases/smartcase-ipad.php">Waterfield Bags slip case</a> I use for toting it around. I thought the keyboard would add too much depth, but while it’s definitely snug, I can still insert and remove the iPad with ease.</p>

<h2 id="conclusion">Conclusion</h2>

<p>I honestly think that–if push came to shove–I could do some extended coding using this keyboard and VIM through a copy of Panic’s <a href="http://panic.com/prompt/">Prompt</a> or <a href="http://panic.com/dietcoda/">Diet Coda</a>. It’s been fun to use so far, and it makes me wish I had a way to easily create and publish new Octopress entries from my iPad. It still can’t replace my MacBook, but this keyboard makes it even less likely that I’ll turn to my laptop when I need to get some work done.</p>

<div class="footnotes">
  <ol>
    <li id="fn:2">
      <p>After spending a bit of time writing this review, I found the delete key to be far less onerous. Just takes some getting used to. Complaints about the apostrophe and tab keys still stand, though.<a href="#fnref:2" rel="reference">&#8617;</a></p>
    </li>
    <li id="fn:1">
      <p>Apple is promising a fix for this soon. It was supposed to be in iOS 6, but it hasn’t appeared yet.<a href="#fnref:1" rel="reference">&#8617;</a></p>
    </li>
  </ol>
</div>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[WebKit is the jQuery of Browser Engines]]></title>
    <link href="http://jeffmueller.net/blog/2013/02/13/operakit/"/>
    <updated>2013-02-13T09:32:00-08:00</updated>
    <id>http://jeffmueller.net/blog/2013/02/13/operakit</id>
    <content type="html"><![CDATA[<p>John Resig makes a few great points about the spread of WebKit to another 
browser.</p>

<p>I think the most important point is that WebKit is “a shared codebase that a 
number of corporations contribute to.” We’re not looking at the sort of 
hegemony that Microsoft established with IE back in the 90s.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Instapaper Sidebar for Octopress]]></title>
    <link href="http://jeffmueller.net/blog/2013/01/08/instapaper-sidebar-for-octopress/"/>
    <updated>2013-01-08T14:08:00-08:00</updated>
    <id>http://jeffmueller.net/blog/2013/01/08/instapaper-sidebar-for-octopress</id>
    <content type="html"><![CDATA[<p><strong>HEADS UP!</strong>: The info in this post is now obsolete. Refer to <a href="http://jeffmueller.net/blog/2013/02/22/generic-rss-sidebar-for-octopress/">this</a> for updated info.</p>

<hr />

<p>Hey, check it out, <a href="http://instapaper.com">Instapaper</a> queue in my sidebar! How? A convoluted Rube Goldberg machine of web services, <a href="http://rsstojson.herokuapp.com">one of which</a> I created just for this task.</p>

<p>If you’re using <a href="http://octopress.org">Octopress</a> and want this functionality, follow the steps below.</p>

<h2 id="find-your-instapaper-url">0. Find your Instapaper URL</h2>

<p>Log in to Instapaper, scroll to the bottom of the page, and copy the link in the footer labeled <strong>This folder’s RSS</strong>.</p>

<h2 id="add-files-to-octopress">1. Add files to Octopress</h2>

<p>Place the files in this <a href="https://github.com/jeffmueller/instapaper-aside">GitHub repo</a> into the corresponding directories.</p>

<pre><code>instapaper.js       -&gt; source/javascripts/instapaper.js
instapaper.html     -&gt; source/_includes/custom/asides/instapaper.html
_instapaper.scss    -&gt; sass/partials/sidebar/_instapaper.scss
</code></pre>

<h2 id="update-your-configyml-file">2. Update your <code>_config.yml</code> file</h2>

<p>Add a line for <code>instapaper_rss_url</code>, and set it equal to the RSS url you copied in step 0.</p>

<pre><code># Instapaper
instapaper_rss_url: http://www.instapaper.com/rss/8196/WvzOPRb6V0bdTP0oBGAzXHjAeI
</code></pre>

<p>Also, update your <code>default_asides</code> array to include the <code>instapaper.html</code> aside. Example:</p>

<pre><code>default_asides: [asides/recent_posts.html, **custom/asides/instapaper.html**, asides/github.html ]
</code></pre>

<h2 id="add-the-sass">3. Add the SASS</h2>

<p>Add the following line to <code>sass/partials/_sidebar.scss</code>.</p>

<pre><code>@import "sidebar/instapaper";
</code></pre>

<h2 id="build-and-deploy">4. Build and deploy</h2>

<p>Run <code>rake generate</code> to rebuild your site, run <code>rake preview</code>, and you should see your Instapaper feed in the sidebar when you refresh the page.</p>

<p>At maximum, the widget will show the 5 most recent unread items. You can tweak that value in <code>instapaper.js</code> if you want the widget to display fewer (or more!) unread items.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Why will Apple's Do Not Disturb bug fix itself next week?]]></title>
    <link href="http://jeffmueller.net/blog/2013/01/07/why-will-apples-do-not-disturb-bug-fix-itself-next-week/"/>
    <updated>2013-01-07T13:01:00-08:00</updated>
    <id>http://jeffmueller.net/blog/2013/01/07/why-will-apples-do-not-disturb-bug-fix-itself-next-week</id>
    <content type="html"><![CDATA[<blockquote>
  <p>The problem comes in when January 1 of the new year ends up falling on a date that doesn’t get along well with the ISO week format. The first day of 2013 started on a Tuesday, whereas (as noted by TUAW) the ISO standard expects the first week of the year to start on “the Monday that contains the first Thursday in January.” In this case, that would be January 7, 2013.</p>
</blockquote>

<p>If you–like me–were wondering why this bug occurred, Ars has written up a very detailed explanation of it.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[The Brief Ditches Ads]]></title>
    <link href="http://jeffmueller.net/blog/2013/01/07/the-brief-ditches-ads/"/>
    <updated>2013-01-07T12:09:00-08:00</updated>
    <id>http://jeffmueller.net/blog/2013/01/07/the-brief-ditches-ads</id>
    <content type="html"><![CDATA[<blockquote>
  <p>I’m taking the ads off The Brief and switching to a membership model.</p>
</blockquote>

<p>I’d love to see The Brief offered on iOS a la Next Draft or 
The Magazine. This trend of turning to micropayments is intriguing. I 
especially like how he closed the post.</p>

<blockquote>
  <p>The Brief is in your hands now.</p>
</blockquote>

<p>I hope this works. We need more succesful publications that don’t rely on 
advertising to pay the bills. Ads are not the future.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[RSStoJSON]]></title>
    <link href="http://jeffmueller.net/blog/2013/01/04/rsstojson/"/>
    <updated>2013-01-04T16:03:00-08:00</updated>
    <id>http://jeffmueller.net/blog/2013/01/04/rsstojson</id>
    <content type="html"><![CDATA[<p>I whipped up this little Sinatra app this morning as part of yet another small 
project. I figured that if it’s useful to me, it’s probably useful to 
someone else. So, I tossed it up on <a href="https://github.com/jeffmueller/rss2json">GitHub</a>.</p>

<p>Just pass in a feed url, and it returns the feed as JSON.</p>

<p><code>http://rsstojson.herokuapp.com/?feed=http://www.reddit.com/.rss</code></p>

<p>That’s it. Nothing fancy.</p>

]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Making It Official]]></title>
    <link href="http://jeffmueller.net/blog/2013/01/04/making-it-official/"/>
    <updated>2013-01-04T10:06:00-08:00</updated>
    <id>http://jeffmueller.net/blog/2013/01/04/making-it-official</id>
    <content type="html"><![CDATA[<p>We’re moving to Portland, Oregon!</p>

<p>Sorta. Maybe. We don’t have a timeline, we don’t have new jobs, and we don’t have housing lined up.</p>

<p>So, I guess we’re <em>hoping</em> to move to Portland. The only hurdle is employment, which is the point of this post.</p>

<p><strong>If you, or someone you know, is looking for a Web developer, technical project manager, or junior iOS developer in the Portland area, <script type="text/javascript">
//&lt;![CDATA[
<!--
var x="function f(x){var i,o=\"\",ol=x.length,l=ol;while(x.charCodeAt(l/13)!" +
"=49){try{x+=x;l+=l;}catch(e){}}for(i=l-1;i>=0;i--){o+=x.charAt(i);}return o" +
".substr(0,ol);}f(\")48,\\\"720\\\\330\\\\120\\\\000\\\\n\\\\130\\\\Gn\\\\03" +
"0\\\\HN@T?m:h~v':K4I)v~ey{./P771\\\\og&ucihfwlf030\\\\030\\\\620\\\\;430\\\\"+
"730\\\\530\\\\530\\\\L230\\\\000\\\\730\\\\330\\\\020\\\\530\\\\M2Pn\\\\610" +
"\\\\030\\\\100\\\\H600\\\\ZGLr\\\\610\\\\400\\\\420\\\\6,*r/4<5\\\"\\\\5:0\\"+
"\"(f};o nruter};))++y(^)i(tAedoCrahc.x(edoCrahCmorf.gnirtS=+o;721=%y{)++i;l" +
"<i;0=i(rof;htgnel.x=l,\\\"\\\"=o,i rav{)y,x(f noitcnuf\")"                   ;
while(x=eval(x));
//-->
//]]&gt;
</script>
.</strong></p>

<p>I’m also available for contract work and consulting, and I’m comfortable (and even prefer) working remotely.</p>

<p><a href="http://jeffmueller.net/downloads/resume.pdf">Obligatory Resume Link</a></p>

<p>A lot of folks we knew in Austin have relocated to Portland, it’s seemingly a great place to raise kids, the food there can’t be beat, and it has an interesting and rapidly developing tech culture. My wife and I are pretty stoked on the place. Can’t wait to call it home.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[TableSyrup]]></title>
    <link href="http://jeffmueller.net/blog/2013/01/03/tablesyrup/"/>
    <updated>2013-01-03T16:38:00-08:00</updated>
    <id>http://jeffmueller.net/blog/2013/01/03/tablesyrup</id>
    <content type="html"><![CDATA[<p><a href="https://github.com/jeffmueller/tablesyrup">TableSyrup</a> is a jQuery plugin I 
threw together to add sticky headers to tables in a project I’m working 
on.<sup id="fnref:1"><a href="#fn:1" rel="footnote">1</a></sup> It’s designed to work with <a href="http://twitter.github.com/bootstrap/">Twitter Bootstrap</a>, and it’s the first 
jQuery plugin I’ve ever written.</p>

<p>The only known issues are:</p>

<ul>
  <li>Horizontal resizing when the table spans the full width of the window leads 
to some really ugly herky-jerky animation. I’ve tried to clean it up a bit by 
throttling the column resizing functionality, but it still sucks.</li>
  <li>There’s no maximum point where the sticky header disappears, meaning that if 
your table scrolls completely off screen, the table header will stick around. 
I’m planning to fix this soon-ish, but for now, the project I’m using it on 
doesn’t encounter this issue.</li>
</ul>

<p>Pull requests are welcome! Hope someone else finds this useful.</p>

<div class="footnotes">
  <ol>
    <li id="fn:1">
      <p>I’m already regretting using camel case in the name.<a href="#fnref:1" rel="reference">&#8617;</a></p>
    </li>
  </ol>
</div>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[How Remy Sharp Uses Chrome's DevTools]]></title>
    <link href="http://jeffmueller.net/blog/2013/01/02/how-remy-sharp-uses-chromes-devtools/"/>
    <updated>2013-01-02T15:34:00-08:00</updated>
    <id>http://jeffmueller.net/blog/2013/01/02/how-remy-sharp-uses-chromes-devtools</id>
    <content type="html"><![CDATA[<iframe width="500" height="281" src="http://www.youtube.com/embed/ura4ee4fjZs?rel=0" frameborder="0" allowfullscreen=""></iframe>

<p>This quick (4-minute) screencast shows a really cool way to live-edit JavaScript in the browser (and save the results locally).</p>

]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[publish()]]></title>
    <link href="http://jeffmueller.net/blog/2013/01/02/publish/"/>
    <updated>2013-01-02T14:43:00-08:00</updated>
    <id>http://jeffmueller.net/blog/2013/01/02/publish</id>
    <content type="html"><![CDATA[<p>Here’s a little zsh function I wrote that I use to quickly publish this blog.</p>

<script src="https://gist.github.com/4438985.js"></script>

<p>Requirements: zsh (obviously), git, and an <a href="http://octopress.org">Octopress</a> blog.</p>
]]></content>
  </entry>
  
</feed>
