<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link rel="hub" href="http://tumblr.superfeedr.com/" xmlns:atom="http://www.w3.org/2005/Atom"/><description></description><title>John Sheehan : Blog</title><generator>Tumblr (3.0; @johnsheehan)</generator><link>http://john-sheehan.com/</link><item><title>Don't "Push" Your Pull Requests</title><description>&lt;p&gt;&lt;a href="http://www.igvita.com/2011/12/19/dont-push-your-pull-requests/"&gt;Ilya Grigorik&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Contributions are always welcome, but surprise patches are mostly just a burden. Yes, you are offering your help, but someone else will have to maintain your code over the long term - get their buy-in first, avoid surprises. Even worse, a localized change to address a specific problem will often miss the full implications to the project: other existing use cases, future roadmap plans, or overall architectural decisions. A good idea can be implemented inappropriately for the specific project; it can be invalidated by another effort that you may not even be aware of; the timing may be wrong, and a dozen other reasons can conspire against you.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is so true. I’ve had this happen numerous times with RestSharp. Unfortunately more often than not this ends up with the (almost always first-time) contributor becoming disillusioned and giving up on participating in the project. A net loss for everyone.&lt;/p&gt;</description><link>http://john-sheehan.com/post/17964678895</link><guid>http://john-sheehan.com/post/17964678895</guid><pubDate>Mon, 20 Feb 2012 12:33:00 -0800</pubDate></item><item><title>Making Sense of Android</title><description>&lt;a href="http://dcurt.is/nothing-makes-sense"&gt;Making Sense of Android&lt;/a&gt;: &lt;p&gt;Dustin Curtis (an up and coming favorite blog of mine):&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Android does prioritize scrolling to some extent now, but it still doesn’t feel as smooth as it does on iOS. An inordinate amount of time went into perfectly designing the physics simulations performed by iOS’s elastic scrolling and other touch event responses. Android’s initial development clearly did not include this attention to detail, because issues regarding the user experience appear to have been beyond the scope of the original vision. As a result, the fundamental engineering choices made during the initial stages of building Android’s interface layer were flawed. This is why Android feels “wrong” to so many people.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Including myself.&lt;/p&gt;</description><link>http://john-sheehan.com/post/17703298739</link><guid>http://john-sheehan.com/post/17703298739</guid><pubDate>Wed, 15 Feb 2012 23:22:34 -0800</pubDate></item><item><title>Bret Victor Will Blow Your Mind</title><description>&lt;p&gt;By now you’ve probably seen this video of a talk Bret Victor gave at &lt;a href="http://2012.cusec.net/"&gt;CUSEC 2012&lt;/a&gt; called &lt;em&gt;Inventing on Principle&lt;/em&gt;. If you haven’t yet, here it is. It’s worth an hour of your time. The demos are incredible.&lt;/p&gt;

&lt;iframe src="http://player.vimeo.com/video/36579366?byline=0" width="400" height="225" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen&gt;&lt;/iframe&gt;

&lt;p&gt;&lt;a href="http://vimeo.com/36579366"&gt;Bret Victor - Inventing on Principle&lt;/a&gt; from &lt;a href="http://vimeo.com/cusec"&gt;CUSEC&lt;/a&gt; on &lt;a href="http://vimeo.com"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;When you’re done, check out his &lt;a href="http://worrydream.com/#!/cv/bret_victor_resume.pdf"&gt;impressive resume&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;While perusing through &lt;a href="http://worrydream.com"&gt;his site&lt;/a&gt; I stumbled upon this gem in an article from 2006 called Magic Ink:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;The primary question is, “What movies are showing today, at which times?” Given the two spatial dimensions available to us, this should suggest a graphic with movies along one axis and times along the other.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;His &lt;a href="http://worrydream.com/MagicInk/#p126"&gt;proposed interface&lt;/a&gt; looks a lot like a &lt;a href="http://www.hipmunk.com"&gt;popular travel site&lt;/a&gt;. I wonder if they read this first.&lt;/p&gt;</description><link>http://john-sheehan.com/post/17663680476</link><guid>http://john-sheehan.com/post/17663680476</guid><pubDate>Wed, 15 Feb 2012 10:06:27 -0800</pubDate></item><item><title>Reinventing Default Profile Pictures</title><description>&lt;a href="http://37signals.com/svn/posts/3104-behind-the-scenes-reinventing-our-default-profile-pictures"&gt;Reinventing Default Profile Pictures&lt;/a&gt;: &lt;p&gt;I’ve never really been a fan of generic avatars but was never creative enough to come up with something better. I really like what 37signals ended up with.&lt;/p&gt;</description><link>http://john-sheehan.com/post/17271827146</link><guid>http://john-sheehan.com/post/17271827146</guid><pubDate>Wed, 08 Feb 2012 10:40:28 -0800</pubDate></item><item><title>Fixing "Previous Track"</title><description>&lt;a href="http://www.marco.org/2012/02/04/fixing-previous-track"&gt;Fixing "Previous Track"&lt;/a&gt;: &lt;blockquote&gt;
  &lt;p&gt;Accidentally hitting the “Next Track” button is a minor annoyance, but its behavior is reasonable.&lt;/p&gt;
  
  &lt;p&gt;But the “Previous Track” button loses and resets my playback position, which is extremely frustrating and disruptive to listening. And there’s no “Undo”.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Marco’s criticism of how the playback buttons work is spot on. The software industry needs to spend more effort finding ways to shed legacy design that was a result of building physical devices. It’s why touch-only device games that use on-screen controls that replicate the style of physical gamepads never feel quite right. The more we let go of these preconceptions the more natural our devices will feel.&lt;/p&gt;</description><link>http://john-sheehan.com/post/17063427901</link><guid>http://john-sheehan.com/post/17063427901</guid><pubDate>Sat, 04 Feb 2012 17:20:38 -0800</pubDate></item><item><title>Promotion</title><description>&lt;a href="http://www.mikealrogers.com/posts/promotion.html"&gt;Promotion&lt;/a&gt;: &lt;p&gt;&lt;a href="http://www.mikealrogers.com/posts/promotion.html"&gt;Mikeal Rogers&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;The best way to promote your project is to first promote that understanding of the problem. The better you are at sharing that understanding of the problem the more your audience can appreciate your solution.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In Mikeal’s case he’s talking about open source projects, but this also applies to products. If you define yourself by your competitors instead of sharing in your customers’ pain, all you’ll ever be is just an alternative to the competitor instead of a solution to a problem.&lt;/p&gt;</description><link>http://john-sheehan.com/post/16997510309</link><guid>http://john-sheehan.com/post/16997510309</guid><pubDate>Fri, 03 Feb 2012 15:28:37 -0800</pubDate></item><item><title>Voice</title><description>&lt;a href="http://zachholman.com/posts/the-apple-voice/"&gt;Voice&lt;/a&gt;: &lt;p&gt;&lt;a href="http://zachholman.com/posts/the-apple-voice/"&gt;Zach Holman&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Maintaining a standard voicing is hard for even one person. As your company grows, though, it becomes exponentially more difficult to maintain a consistent voice as each person contributing to your copy dilutes your initial vision.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;At Twilio we’ve spent a lot of effort on maintaining a consistent voice as we’ve grown 10x in employees over the past two years. One great way to do this is ‘gold standards’ to refer to as Zach suggests. I think an even better way to do this is to have a rock solid, company-wide understanding and buy-in of the mission.&lt;/p&gt;

&lt;p&gt;This starts at the top. We’re lucky to have a CEO who excels at getting everyone on the same page. This trickles all the way down through the ranks.&lt;/p&gt;

&lt;p&gt;It’s also important to keep all the departments that actively talk to customers in tune with each other. If you progress through talking to a developer evangelist, then a sales engineer, then later a support person you should be getting the same message all the way through. Consistency builds trust.&lt;/p&gt;

&lt;p&gt;Even within departments it’s important to have everyone on the same page. &lt;em&gt;They do not have to use the same words, but they should be saying the same thing.&lt;/em&gt; If you’ve ever encountered different reps from the same company and got conflicting information you know how that affects your trust level with that company. It can also give you the impression that they don’t have their act together.&lt;/p&gt;

&lt;p&gt;Consistent voice is one of the most important things I’ve tried to enforce at Twilio and based on the way I hear people talk about us, I believe it has paid off in spades.&lt;/p&gt;</description><link>http://john-sheehan.com/post/16990723343</link><guid>http://john-sheehan.com/post/16990723343</guid><pubDate>Fri, 03 Feb 2012 13:26:10 -0800</pubDate></item><item><title>finerios:

The iPad’s split keyboard has phantom buttons. If...</title><description>&lt;img src="http://30.media.tumblr.com/tumblr_lylhv1fJzo1qzlco2o1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;&lt;a href="http://ios.finerthingsin.com/post/16982049392/ipad-keyboard-phantom-buttons" class="tumblr_blog"&gt;finerios&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;The iPad’s split keyboard has phantom buttons. If you’re used to typing Y with your left hand, you can.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;F-ing brilliant.&lt;/p&gt;</description><link>http://john-sheehan.com/post/16990114609</link><guid>http://john-sheehan.com/post/16990114609</guid><pubDate>Fri, 03 Feb 2012 13:14:44 -0800</pubDate></item><item><title>I'd rather live in a one-button world</title><description>&lt;p&gt;Jeff Atwood doesn’t like how his &lt;a href="http://www.codinghorror.com/blog/2012/02/the-one-button-mystique.html"&gt;iPhone only has one button&lt;/a&gt;.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;I have the same issue with the single button on the iPhone that I do with the single button mouse – it may be OK-ish at the very beginning, but over time it leads to absurd, almost comical overloading of functionality.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The overloading of one button leads Jeff into some unfriendly circumstances:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;In particular I spend a lot of time double-clicking to get to the active apps list, and I often mis-tap which kicks me over to the home screen. I have so many apps installed on my iPhone that search is the only rational way to navigate. This means I search a lot, which requires clicking once to get to the default home page, pausing, then clicking again. Sometimes I click too long, which is then detected as click-and-hold, and I get the voice search app which I am … er, not a fan of, to put it mildly.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I think Apple is going to fix this in the next OS update, but regardless of these ugly edge cases, I’m still a big fan of the single iPhone button. For the most common things I need it works perfectly well and I’m willing to accept the very occasional unintended Siri summoning (though it is very annoying that even with the phone in mute, Siri still makes noise).&lt;/p&gt;

&lt;p&gt;My preference for a single button was especially reinforced after a trip to London this past weekend that involved using a Samsung Focus Windows Phone 7 for four days. For a variety of reasons (random reboots, reboot loops that drained the battery in my pocket, frequent errors and app issues, lost pictures, non-responsiveness to taps, the list goes on) it was an &lt;strong&gt;infuriating&lt;/strong&gt; experience. Atop the list of infuriating things: that damn back button.&lt;/p&gt;

&lt;p&gt;You would think it makes sense to have a permanent back button. Atwood makes a good case:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;While I’ll tentatively agree that not all phone apps have to behave like the Internet, the Internet is becoming more and more of a platform for bona fide applications every day. The back button is a UI paradigm that works like gangbusters for webapps, and I’d argue strongly in favor of that being a hard button on a device.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Unfortunately, apps are not as well suited for ‘Back’ buttons as web pages. Let’s go back to Jeff’s problem with the home button being too overloaded. The Windows Phone 7 back button suffers from the exact same problem, except the context is switching far more often. Let’s look at what the back button does in WP7:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;Goes back to the home screen after launching an app&lt;/li&gt;
&lt;li&gt;Navigates the web browser back a page, until the history stack runs out, then navigates back to the home page (this also appears to not save stack state consistently so if you open the browser, view some pages, go somewhere else and come back to the browser later and want to navigate to an earlier page in your history the back button will instead throw you back out to the home screen instead of the last page in your web history).&lt;/li&gt;
&lt;li&gt;Press and hold to switch between ‘open’ apps&lt;/li&gt;
&lt;li&gt;Switch between apps if, for instance, your email has a link to a web page in it&lt;/li&gt;
&lt;li&gt;Sometimes switch between views within a single app&lt;/li&gt;
&lt;li&gt;Sometimes it just does nothing at all&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;It does not go back to a previous ‘pane’ of a panorama view or whatever they’re called. So if you’re in one column, and you swipe to another, effectively changing the view and you hit back, you’ll either go up the view stack within the app, or back to the home page if you’re already at the top level.&lt;/p&gt;

&lt;p&gt;All of this combines for endless confusion. I never knew where I was or where the unlabeled, generic back button would take me back to and what I was expecting rarely happened.&lt;/p&gt;

&lt;p&gt;The bottom line on the WP7 back button is that there is zero reliable information available to you about what will happen when you press it. And this is the problem with elevating it to a permanent placement. No app or context has consistent back semantics.&lt;/p&gt;

&lt;p&gt;A single button also forces app developers to think a lot more about how their apps are organized and navigated. There are platform conventions that Apple has gone a long way to espouse so that within every app the navigation experience is consistent. Good apps have the back button on the top left with the name of the previous screen so you always know where you’re going.&lt;/p&gt;

&lt;p&gt;A lot has been written about the history of why the original Macintosh only had one button on the mouse. While this annoyed ‘power users’ like myself in the 90s, I have come to appreciate that this decision may have been one of the most important things Apple ever did for desktop computing user experience. Windows became a maze of context menus as it grew up and I rarely find the need to right click in OS X to this day. The entire experience feels more fluid to me because of that.&lt;/p&gt;

&lt;p&gt;In the same vein, I think the single button iPhone set touch computing on the right track and forced the software UI to be far more intuitive and less confusing.&lt;/p&gt;</description><link>http://john-sheehan.com/post/16934101203</link><guid>http://john-sheehan.com/post/16934101203</guid><pubDate>Thu, 02 Feb 2012 12:54:00 -0800</pubDate></item><item><title>Google Search Algorithm, A History

(Thanks to Nina Mehta for...</title><description>&lt;img src="http://27.media.tumblr.com/tumblr_lydt8q6ic71qdto2fo1_500.png"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Google Search Algorithm, A History&lt;/p&gt;

&lt;p&gt;(Thanks to &lt;a href="https://twitter.com/#!/ninamehta"&gt;Nina Mehta&lt;/a&gt; for the hardware support.)&lt;/p&gt;</description><link>http://john-sheehan.com/post/16495422756</link><guid>http://john-sheehan.com/post/16495422756</guid><pubDate>Wed, 25 Jan 2012 17:24:26 -0800</pubDate></item><item><title>Just a book seller with a $1B cloud infrastructure subsidiary</title><description>&lt;a href="http://venturebeat.com/2012/01/23/joyent-cloud-funding-85m-weather-telefonica-amazon/"&gt;Just a book seller with a $1B cloud infrastructure subsidiary&lt;/a&gt;: &lt;p&gt;Joyent CEO, David Young:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;“I don’t want to dump on Amazon, but I just don’t think you can look to a book seller and grocery store for cloud innovation.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;First off, he clearly &lt;em&gt;did&lt;/em&gt; want to dump on Amazon. Second, calling Amazon a “book seller” is the current equivalent of using “Micro$oft”. No professional CEO should stoop to such sophomoric drivel.&lt;/p&gt;

&lt;p&gt;Anyway, congrats to Joyent on their round of funding. We need more infrastructure providers. Amazon is far and away in the lead. More competition is good.&lt;/p&gt;</description><link>http://john-sheehan.com/post/16366631972</link><guid>http://john-sheehan.com/post/16366631972</guid><pubDate>Mon, 23 Jan 2012 13:38:35 -0800</pubDate></item><item><title>First Impressions of DynamoDB</title><description>&lt;p&gt;I wanted to try out &lt;a href="http://www.allthingsdistributed.com/2012/01/amazon-dynamodb.html"&gt;Amazon’s new DynamoDB&lt;/a&gt; service so yesterday while watching 14 hours of football and football games I wrote a script to track my Twitter followers and unfollowers. Here’s my first impressions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Old habits die hard&lt;/strong&gt;&lt;br/&gt;
I’ve played with various NoSQL stuff like Redis and Mongo in passing, but never really built anything beyond a hello world. I have a ton of experience with relational databases and it’s very hard for me to shift my mindset and break old habits. For instance, my data model for this script was ridiculously simple: a user ID in a table. I thought I would just use the &lt;code&gt;scan&lt;/code&gt; functionality to return the whole table but table scans are not recommended. Instead I just used a common hash key and put the user ID into the range key. Queries over hash keys are fast and easy so it worked out fine.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;boto is very nice&lt;/strong&gt;&lt;br/&gt;
I wrote this script in Python which has a great third-party wrapper for Amazon Web Services called &lt;a href="http://code.google.com/p/boto/"&gt;boto&lt;/a&gt;. It’s very complete and basic support for DynamoDB was added just a few days after it launched. It still has some feature gaps (like scan) but overall I was able to get what I needed out of it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I still like Python a lot&lt;/strong&gt;&lt;br/&gt;
Python syntax is pretty awesome, except for some of the &lt;code&gt;self&lt;/code&gt; passing. I do miss LINQ from C# though. That would have made some of the list checking a lot easier. Between Google and Stack Overflow though I was able to find good short snippets to do what I needed to do when I got stuck. And &lt;a href="http://docs.python-requests.org/en/latest/index.html"&gt;requests for Python&lt;/a&gt; is my favorite HTTP client I’ve used on any platform.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SendGrid rocks&lt;/strong&gt;&lt;br/&gt;&lt;a href="http://sendgrid.tellapal.com/a/clk/DZ54"&gt;Dead simple REST API to send email&lt;/a&gt;. Since I plan on running this as a Heroku worker process I didn’t want to mess with SMTP. I have it set up to email the results when it’s done processing.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/johnsheehan/twitter-follower-report"&gt;You can find the script on GitHub&lt;/a&gt;.&lt;/p&gt;</description><link>http://john-sheehan.com/post/16361552832</link><guid>http://john-sheehan.com/post/16361552832</guid><pubDate>Mon, 23 Jan 2012 12:09:38 -0800</pubDate></item><item><title>My .NET Open Source Project Management Nightmare</title><description>&lt;p&gt;I’m still doing occasional maintenance on RestSharp because it’s my &lt;a href="http://www.youtube.com/watch?v=6duVKnKHc4U"&gt;baby&lt;/a&gt;, I want to see it continue to thrive (preferably under the community’s tutelage) and the company I work for has a dependency on it.&lt;/p&gt;

&lt;p&gt;RestSharp depends on JSON.NET and uses NuGet for distribution, listing JSON.NET as a dependency that gets automatically installed when you install RestSharp. I don’t specify a specific version of JSON.NET to depend on because they’re good about not breaking their API and it works from version to version just fine. Within the RestSharp projects themselves the reference to JSON.NET is managed via NuGet.&lt;/p&gt;

&lt;p&gt;Or I should say, it did work. At some point recently I started getting innundated with support requests for both RestSharp and twilio-csharp that JSON.NET was throwing exceptions. Turns out when you add a reference via NuGet to a strongly-named assembly (a recent change for JSON.NET I can’t track down anywhere), your reference is tied to that specific version so if JSON.NET is updated to a newer version you start getting runtime errors.&lt;/p&gt;

&lt;p&gt;As long as you install RestSharp when it was built against the current version of JSON.NET, no other projects depend on a different version of JSON.NET and never update your JSON.NET version out-of-band with RestSharp you won’t see this error. I could set a hard version dependency in my NuGet package, however JSON.NET is so popular (thanks Microsoft for including first-class JSON support in .NET! Not.) that’s almost assuredly going to cause issues if you have other packages installed that depend on it.&lt;/p&gt;

&lt;p&gt;To keep the project working, every time JSON.NET releases an update (thankfully it’s not too often) I have to rebuild and distribute an updated RestSharp, which twilio-csharp depends on so that has to get updated and distributed too. twilio-csharp also depends on a JWT library I wrote that also uses JSON.NET so I have to fix and distribute that too before I can fix twilio-csharp. At any point JSON.NET can release an update that people manually update to and break everything that depends on it. It’s like &lt;a href="http://www.codinghorror.com/blog/2011/04/working-with-the-chaos-monkey.html"&gt;Chaos Monkey&lt;/a&gt; for the project. At some unknown point any number of users could break, resulting in more support emails for me and another set of changes just to appease the dependency gods.&lt;/p&gt;

&lt;p&gt;This is why I’m not able to work on new features for RestSharp. I have to spend all of the very little free time I have for the project dealing with this crap.&lt;/p&gt;</description><link>http://john-sheehan.com/post/16107044208</link><guid>http://john-sheehan.com/post/16107044208</guid><pubDate>Wed, 18 Jan 2012 23:05:00 -0800</pubDate></item><item><title>Love the simplicity and cleverness of this scorekeeping app by...</title><description>&lt;iframe width="400" height="225" src="http://www.youtube.com/embed/sXqXpwyBI1k?wmode=transparent&amp;autohide=1&amp;egm=0&amp;hd=1&amp;iv_load_policy=3&amp;modestbranding=1&amp;rel=0&amp;showinfo=0&amp;showsearch=0" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Love the simplicity and cleverness of this scorekeeping app by &lt;a href="https://twitter.com/#!/mattrix"&gt;Matt Rix&lt;/a&gt;. While watching the video the sounds and colors felt familiar and it turns out that’s because Matt is also the author of the excellent Trainyard game for &lt;a href="http://click.linksynergy.com/fs-bin/stat?id=occE5oPniJk&amp;offerid=146261&amp;type=3&amp;subid=0&amp;tmpid=1826&amp;RD_PARM1=http%253A%252F%252Fitunes.apple.com%252Fus%252Fapp%252Ftrainyard%252Fid348719156%253Fmt%253D8%2526uo%253D4%2526partnerId%253D30"&gt;iPhone&lt;/a&gt; and &lt;a href="http://click.linksynergy.com/fs-bin/stat?id=occE5oPniJk&amp;offerid=146261&amp;type=3&amp;subid=0&amp;tmpid=1826&amp;RD_PARM1=http%253A%252F%252Fitunes.apple.com%252Fus%252Fapp%252Ftrainyard%252Fid348719156%253Fmt%253D8%2526uo%253D4%2526partnerId%253D30"&gt;iPad&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;/via &lt;a href="https://twitter.com/#!/WookieeBoy"&gt;Shawn Parker&lt;/a&gt; via &lt;a href="https://twitter.com/#!/TylerGalpin"&gt;Tyler Galphin&lt;/a&gt;&lt;/p&gt;</description><link>http://john-sheehan.com/post/15731250265</link><guid>http://john-sheehan.com/post/15731250265</guid><pubDate>Thu, 12 Jan 2012 11:06:36 -0800</pubDate></item><item><title>Instacast is the iOS Podcast App I Actually Wanted</title><description>&lt;a href="http://click.linksynergy.com/fs-bin/stat?id=occE5oPniJk&amp;offerid=146261&amp;type=3&amp;subid=0&amp;tmpid=1826&amp;RD_PARM1=http%253A%252F%252Fitunes.apple.com%252Fus%252Fapp%252Finstacast%252Fid420368235%253Fmt%253D8%2526uo%253D4%2526partnerId%253D30"&gt;Instacast is the iOS Podcast App I Actually Wanted&lt;/a&gt;: &lt;p&gt;After &lt;a href="http://john-sheehan.com/post/15279996751/move-your-podcasts-to-the-cloud-with-icatcher"&gt;posting&lt;/a&gt; about &lt;a href="http://click.linksynergy.com/fs-bin/stat?id=occE5oPniJk&amp;offerid=146261&amp;type=3&amp;subid=0&amp;tmpid=1826&amp;RD_PARM1=http%253A%252F%252Fitunes.apple.com%252Fus%252Fapp%252Ficatcher!-podcast-catcher%252Fid414419105%253Fmt%253D8%2526uo%253D4%2526partnerId%253D30"&gt;iCatcher&lt;/a&gt; and &lt;a href="http://click.linksynergy.com/fs-bin/stat?id=occE5oPniJk&amp;offerid=146261&amp;type=3&amp;subid=0&amp;tmpid=1826&amp;RD_PARM1=http%253A%252F%252Fitunes.apple.com%252Fus%252Fapp%252Fpodcaster-4%252Fid377195245%253Fmt%253D8%2526uo%253D4%2526partnerId%253D30"&gt;Podcaster&lt;/a&gt; last week, a few folks on Twitter pointed me to &lt;a href="http://click.linksynergy.com/fs-bin/stat?id=occE5oPniJk&amp;offerid=146261&amp;type=3&amp;subid=0&amp;tmpid=1826&amp;RD_PARM1=http%253A%252F%252Fitunes.apple.com%252Fus%252Fapp%252Finstacast%252Fid420368235%253Fmt%253D8%2526uo%253D4%2526partnerId%253D30"&gt;Instacast&lt;/a&gt; which is far better than both the other two. Clean UI (much, much, much better than iCatcher), stream-focused with option to download and cache, iCloud sync, etc. It’s got it all and it’s not ugly. There’s an &lt;a href="http://click.linksynergy.com/fs-bin/stat?id=occE5oPniJk&amp;offerid=146261&amp;type=3&amp;subid=0&amp;tmpid=1826&amp;RD_PARM1=http%253A%252F%252Fitunes.apple.com%252Fus%252Fapp%252Finstacast-hd%252Fid478853570%253Fmt%253D8%2526uo%253D4%2526partnerId%253D30"&gt;iPad version&lt;/a&gt; too.&lt;/p&gt;</description><link>http://john-sheehan.com/post/15611700322</link><guid>http://john-sheehan.com/post/15611700322</guid><pubDate>Mon, 09 Jan 2012 23:28:00 -0800</pubDate></item><item><title>One Bad Piece of Documentation Does Not Make Fail</title><description>&lt;a href="http://gazit.me/2012/01/09/Twitter-documentation-fail.html"&gt;One Bad Piece of Documentation Does Not Make Fail&lt;/a&gt;: &lt;p&gt;Idan Gazit goes a little overboard over one piece of bad documentation for the Twitter API. The core of the issue is solid: bad docs make using APIs needlessly difficult and can be extremely frustrating for developers. This does not mean Twitter has universal “poor practices” as the title purports. &lt;a href="http://john-sheehan.com/post/14876806091/the-facebook-platform-is-a-trainwreck"&gt;At least the API works&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;One important thing that I’d like to call out to anyone thinking of taking a dependency on an API. The first thing you should consider when using an API is, “Does the company I’m relying on need this API to be successful to sustain their business?” If your business interests are not aligned, the risk is very high and you’re likely to encounter a bad experience and most likely a maintenance nightmare.&lt;/p&gt;</description><link>http://john-sheehan.com/post/15610927387</link><guid>http://john-sheehan.com/post/15610927387</guid><pubDate>Mon, 09 Jan 2012 22:55:59 -0800</pubDate></item><item><title>"Why I Hate Android"</title><description>&lt;a href="http://parislemon.com/post/15604811641/why-i-hate-android"&gt;"Why I Hate Android"&lt;/a&gt;: &lt;p&gt;MG makes some interesting parallels to net neutrality which may be a little out there, but otherwise I think this piece was solid. And the one thing I definitely with him agree on: the original iPhone was the biggest step anyone had taken to break the hold the carriers have over consumers and Android has stunted any continued progression in the right direction.&lt;/p&gt;</description><link>http://john-sheehan.com/post/15610746788</link><guid>http://john-sheehan.com/post/15610746788</guid><pubDate>Mon, 09 Jan 2012 22:49:16 -0800</pubDate></item><item><title>"The Path to Hacker School"</title><description>&lt;a href="http://unschooled.org/2012/06/the-path-to-hacker-school/"&gt;"The Path to Hacker School"&lt;/a&gt;: &lt;p&gt;Hackruiter trains developers for free, turning them into even more desirable candidates, and then (optionally) places them into jobs at tech companies resulting in a finder’s fee, &lt;a href="http://techcrunch.com/2012/01/06/sv-angel-and-founder-collective-give-hackruiter-200k-for-its-hacker-school/"&gt;currently averaging about $20K&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Brilliant.&lt;/p&gt;</description><link>http://john-sheehan.com/post/15440730460</link><guid>http://john-sheehan.com/post/15440730460</guid><pubDate>Fri, 06 Jan 2012 22:25:11 -0800</pubDate></item><item><title>Sour Grapes</title><description>&lt;p&gt;(These are my observations and opinions based on interactions with ASP.NET MVPs and ASP Insiders. I can’t speak for other MVP or Insiders programs.)&lt;/p&gt;

&lt;p&gt;In response to &lt;a href="http://devlicious.com/blogs/rob_eisenberg/archive/2012/01/04/how-i-lost-regained-and-then-turned-down-an-mvp-award.aspx"&gt;Rob Eisenberg’s post&lt;/a&gt; about his travails with the Microsoft MVP program, I kicked up a dust storm on Twitter tonight with this series of tweets:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;This take down of the MS MVP program by @EisenbergEffect should be required reading for anyone looking to achieve that award.&lt;/p&gt;
  
  &lt;p&gt;Don’t make the same mistake I did. Trying to become an MVP is a waste of time. Call it sour grapes because I didn’t get in if you want.&lt;/p&gt;
  
  &lt;p&gt;The same politics Rob talks about is how I became an ASP Insider, which is a disservice to real ASP.NET contributors.&lt;/p&gt;
  
  &lt;p&gt;Re-initiating my attempts to get out of ASP Insiders. If you’re a member, consider doing the same. Participation is an endorsement.&lt;/p&gt;
  
  &lt;p&gt;If you don’t want to support a corrupt system, vote with your feet.&lt;/p&gt;
  
  &lt;p&gt;I lucked out that in attempting to become an MVP I found something better. Not everyone else will be so lucky.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;As predicted, this was interpreted as sour grapes, despite &lt;a href="http://thisdeveloperslife.com/post/1-0-2-fame-and-notoriety"&gt;well documented proof&lt;/a&gt; that it turned out better for me not getting in the program. I’m genuinely not bitter that I didn’t get in. Doubt it if you want, I don’t really care.&lt;/p&gt;

&lt;p&gt;What I am bitter about is that the MVP program disrespects the very developers it sets out to honor. There are a few well-documented problems the program has, most notably around selection criteria. I don’t want to rehash those, go read Rob’s post. But I do want to talk about some other aspects of the program that are damaging to the overall .NET community.&lt;/p&gt;

&lt;h4&gt;Club mentality segments the community&lt;/h4&gt;

&lt;p&gt;Before I was an ASP Insider (which I’ll cover below) I would go to user groups and conferences and talk to other developers about what they thought of the latest upcoming ASP.NET releases. I’d make my predictions or state opinions and they’d casually nod along. What I didn’t yet realize is that the MVP and Insiders of the group already knew the answers and weren’t able to discuss things openly because they were bound by an NDA. While this is a standard practice (the company I work for also gives early access under NDA to select customers), it turns out that this can create a rift between those who are in the know and those who are not. After I was granted access to the privileged group, I found myself stuck during conversations, not able to fully engage with those not under NDA. It was very uncomfortable to me to be hampered talking to other community members who are just looking to learn and network and become better developers. Eventually I couldn’t remember what was NDA and what wasn’t, who I could and couldn’t talk to openly, etc. It was exhausting to keep track of so I stopped trying to remember stuff. I broke my NDA a lot. Since I’m trying to give it back anyway, they can happily take it if this bothers them.&lt;/p&gt;

&lt;h4&gt;Wrong incentives lead to bad behavior&lt;/h4&gt;

&lt;p&gt;The MVP program also incentivizes bad behavior. In the yearly reviews, quantity is given priority over quality. Or at least it looks that way since there’s no clear acceptance guidelines to know for sure. This leads to a high volume of low quality content to boost numbers that look impressive at a glance. Or you’ll see one guy give the same lifeless user group talk over and over again to juice up the total instead of giving fewer, better talks. If the plural of anecdote is data I have a lot of data from people I’ve come across who have specifically mentioned reusing content in this manor specifically for their MVPs reviews, and not for, you know, helping better the community. The incentives are all wrong.&lt;/p&gt;

&lt;p&gt;So the MVP program has outlived it’s usefulness and now does more harm than good but then we have the &lt;a href="http://www.aspinsiders.com"&gt;ASP Insiders&lt;/a&gt; program that just complicates matters further. Not that ASP Insiders is a bad program in isolation, it’s actually quite good. You get really direct access to product team, it’s a small, tight-knit group and it’s a lifetime appointment unless you forget to re-sign the NDA every few years. You also get voted in by other members of the group, so there’s no black box for acceptance. Just make 10 or so friends already in the group, do a little ASP.NET community work and don’t make enemies with Microsoft and you’re set. If you can deal with the few people in the group that would rather post the problems they encounter privately instead of on Stack Overflow where they would be embarrassed about publicly admitting there’s something about ASP.NET they don’t know, the mailing list is decent and you get to go to the MVP Summit (on your dime) and party with a bunch of really cool people which is insanely fun.&lt;/p&gt;

&lt;p&gt;The problem with the ASP Insiders group is that most people trying to become ASP.NET MVPs believe what they’re after is what ASP Insiders offers. That’s how it’s pitched. It’s not how it works. And that’s unfair to people trying to become MVPs. You either work hard or game the system, get your MVP and then find out that you could have just become an Insider with all the same perks (and more) without as much hassle. I hope you read this and find it out before you go through all that.&lt;/p&gt;

&lt;p&gt;I’ve asked to be removed from the Insiders. I got in through a back door (longer story) and don’t really do ASP.NET any more and it’s unfair to the people who really want to be there to have a non-participating zero (as far as the group goes) taking up space. Yeah, there’s no limit to how big the group can get (making it effectively easier to get in over time since the number of votes needed to get in is currently fixed at 10) but it’s still not fair that I’m in there and people who work on this stuff every day and would benefit from access aren’t. I’ll miss hanging out with friends at the Summit but I’ll find ways to meet up with them.&lt;/p&gt;

&lt;p&gt;So why did I write all this? Mostly because I think it can be instructive for those working to build developer communities. When you institute classes, no matter how well-intentioned, it can have unintended negative side effects. You never, &lt;em&gt;ever&lt;/em&gt; want to have a member of your community say this:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Looking over the last three years, I’ve definitely been a less happy, more frustrated developer. I’m sure it’s linked to the sort of fake “value” being a Silverlight MVP gave me. Basically, they give you a couple of cheep gifts, then they pretend to listen to your feedback, while not actually doing anything. Year after year of that and you get really unhappy. It’s demoralizing. You start to realize that you really are a commodity.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Is that how you want to treat people?&lt;/p&gt;

&lt;p&gt;(Comments disabled for this post. Tweet at me or blog.)&lt;/p&gt;</description><link>http://john-sheehan.com/post/15338945390</link><guid>http://john-sheehan.com/post/15338945390</guid><pubDate>Thu, 05 Jan 2012 00:36:00 -0800</pubDate></item><item><title>Misconceptions About iOS Multitasking</title><description>&lt;a href="http://speirs.org/blog/2012/1/2/misconceptions-about-ios-multitasking.html"&gt;Misconceptions About iOS Multitasking&lt;/a&gt;: &lt;p&gt;The only reason this explanation is needed is because we have built up years of baggage from software that required you to make unnecessary decisions to be useful. The people giving the explanations Fraser decries are working from a false set of assumptions because they cannot imagine a simpler mechanism that actually works because it has never existed before.&lt;/p&gt;</description><link>http://john-sheehan.com/post/15286145696</link><guid>http://john-sheehan.com/post/15286145696</guid><pubDate>Tue, 03 Jan 2012 23:04:32 -0800</pubDate></item></channel></rss>

