<?xml version="1.0" encoding="UTF-8"?>
<!--Generated by Squarespace Site Server v5.11.81 (http://www.squarespace.com/) on Mon, 28 May 2012 21:30:42 GMT--><feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/"><title>Blog</title><subtitle>Blog</subtitle><id>http://www.rossbelmont.com/blog/</id><link rel="alternate" type="application/xhtml+xml" href="http://www.rossbelmont.com/blog/"/><link rel="self" type="application/atom+xml" href="http://www.rossbelmont.com/blog/atom.xml"/><updated>2012-05-09T17:25:26Z</updated><generator uri="http://www.squarespace.com/" version="Squarespace Site Server v5.11.81 (http://www.squarespace.com/)">Squarespace</generator><entry><title>Instagram: beating Facebook at the job it's hired to do</title><id>http://www.rossbelmont.com/blog/2012/5/9/instagram-beating-facebook-at-the-job-its-hired-to-do.html</id><link rel="alternate" type="text/html" href="http://www.rossbelmont.com/blog/2012/5/9/instagram-beating-facebook-at-the-job-its-hired-to-do.html"/><author><name>Ross Belmont</name></author><published>2012-05-09T17:06:12Z</published><updated>2012-05-09T17:06:12Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p>By now, everyone who reads the Wall Street Journal knows what <a href="http://instagr.am">Instagram</a> is:</p>

<span class="full-image-block ssNonEditable"><span><img src="http://www.rossbelmont.com/storage/post-images/cover-story.jpg?__SQUARESPACE_CACHEVERSION=1336583296858" alt=""/></span><span class="thumbnail-caption">Instagram's Wall St. Journal cover story</span></span>

<p><a href="http://on.wsj.com/HuJVMF">The article</a> covers the surface level details, which (to oversimplify) are as follows:</p>

<ul>
<li>Two Stanford whiz kids made an iPhone app that uploads cameraphone snapshots to the Internet.</li>
<li>The app generates no revenue, but is growing so fast that big-time VCs invested, valuing it at $500 million.</li>
<li>The founders sold the app to Facebook for a billion dollars.</li>
</ul>

<p>Those are the key facts, though the article sheds precious little light on the subject—especially if you’re creating a product and want to replicate their success. The Journal makes only the briefest mention “removing a rival” as a possible motivation for the purchase.</p>

<blockquote class="twitter-tweet tw-align-center" data-in-reply-to="189449668344815616"><p>@<a href="https://twitter.com/richziade">richziade</a> @<a href="https://twitter.com/iA">iA</a> @<a href="https://twitter.com/dkberman">dkberman</a> @<a href="https://twitter.com/wblau">wblau</a> FB overspent on Instagram to remove a competitor. Focus on the real issue, not false comparisons to old biz.</p>&mdash; Jeffrey Zeldman (@zeldman) <a href="https://twitter.com/zeldman/status/189451512156659713" data-datetime="2012-04-09T20:35:34+00:00">April 9, 2012</a></blockquote>

<script src="http://www.rossbelmont.com//platform.twitter.com/widgets.js" charset="utf-8"></script>

<p>Let’s stipulate that taking a competitor out of your market might be worth $1 billion and look at how, exactly, Instagram competes with Facebook.</p>

<h2 id="competingdoingthesamejob">Competing = Doing the same job</h3>

<p>If I asked you to picture Facebook in your mind, I’d wager you’d conjure up an image like this:</p>

<span class="full-image-block ssNonEditable"><span><img src="http://www.rossbelmont.com/storage/post-images/Facebook.png?__SQUARESPACE_CACHEVERSION=1336583375077" alt=""/></span><span class="thumbnail-caption">Facebook</span></span>

<p>The primary focus of this page is the News Feed (highlighted in yellow below), which is a stream of “status updates” posted by your friends indicating what they’re doing or what’s on their mind.</p>

<span class="full-image-block ssNonEditable"><span><img src="http://www.rossbelmont.com/storage/post-images/Facebook News Feed.png?__SQUARESPACE_CACHEVERSION=1336583411283" alt=""/></span><span class="thumbnail-caption">Facebook's News Feed</span></span>

<p>Having a textual description of what you’re friend is doing is great, but a picture is worth 1000 words, right? So, something like this might be more engaging:</p>

<span class="full-image-block ssNonEditable"><span><img src="http://www.rossbelmont.com/storage/post-images/Instagram popular photos.png?__SQUARESPACE_CACHEVERSION=1336583463201" alt=""/></span><span class="thumbnail-caption">Popular photos on Instagram</span></span>

<p>The above is a sampling of the popular photos right now on Instagram. Now, I’ll add annotations to call out some of the more interesting stories:</p>

<span class="full-image-block ssNonEditable"><span><img src="http://www.rossbelmont.com/storage/post-images/Instagram photos annotated.png?__SQUARESPACE_CACHEVERSION=1336583502579" alt=""/></span><span class="thumbnail-caption">Popular photos (annotated)</span></span>
<p>I’d say it’s clear the concept of textual status updates is rather dry and geeky by comparison. If a friend told me she was rooting around in MTV’s archives, I’d think that was pretty cool. If she showed me some photos and gave me a real sense for what it was like, I’d be much more engaged. Also, notice that an image doesn’t have to be a photographic masterpiece to tell a story that your friends might find compelling (see cats wrestling above).</p>

<p>If I want to communicate to you what I’m doing or thinking about, it will almost always be more effective to <strong>show</strong> you, not just <strong>tell</strong> you. So by this logic, Instagram is not only doing the same job for me that Facebook is, but it’s doing it <strong>better</strong>.</p>

<h2 id="getbetterbyfocusingonthejob-to-be-done">Get better by focusing on the Job-to-be-Done</h3>

<p>Looking at product based on the “job” it does for the consumer is a useful analysis tool for this type of post-mortem. <a href="http://www.claytonchristensen.com">Clayton Christensen</a>, the Harvard Business School professor most famous for his work on disruptive innovation and <a href="http://www.amazon.com/dp/0060521996/ref=cm_sw_r_tw_dp_A9PQpb0RE31C8">The Innovator’s Dilemma</a>, has <a href="http://hbr.org/product/integrating-around-the-job-to-be-done-module-note/an/611004-PDF-ENG">written about this technique</a> and <a href="http://5by5.tv/criticalpath/36">will publish a book on it soon</a>. If you’ve never heard of the Jobs-to-be-Done theory, start by watching <a href="http://www.youtube.com/watch?v=s9nbTB33hbg">this short YouTube video</a> where he tells a great story about why people hire milkshakes. To dive deeper, check out the work of the <a href="http://www.therewiredgroup.com/jobs-to-be-done/">The Re-Wired Group</a>.</p>

<p>If you’re working on a product of your own, having a clear understanding of the job-to-de-done is a litmus test that can tell you whether a given feature is core to the user’s experience. If it’s not, consider skipping it. In the case of Instagram, by focusing on the core flow of capturing the moment, adding emotion (via filters), and sharing with friends, they were able to avoid building:</p>

<ul>
<li>A full-featured web app</li>
<li>Sophisticated photography controls (exposure, white balance, histograms, etc.)</li>
<li>Grouping/sorting your photos into albums or collections</li>
</ul>

<p>Based on what other photography apps/services do, it would be easy to say that Instagram “needed” those features to be competitive. Instagram’s founders, however, knew all they truly needed to build was a way to shoot, style and share a photo for their users to get the job done and tell the story of that moment in their lives. They could then make the appropriate tradeoffs and divert resources to polishing the smaller, core feature set into a great user experience.</p>

<p>The pace of business is always increasing, and Instagram used focus as a weapon to not only beat their direct competitors (PicYou, Hipstamatic, picplz and many others) but also threaten the 800 lb. gorilla known as Facebook.</p>

<p>What job do your customers hire your product to do?</p><p>Source: Insta-Rich: $1 Billion for Instagram (http://on.wsj.com/HuJVMF)<br/>Source: Why do you hire a milkshake? (http://www.youtube.com/watch?v=s9nbTB33hbg)<br/>Related: Integrating Around the Job to be Done, Module Note (http://hbr.org/product/integrating-around-the-job-to-be-done-module-note/an/611004-PDF-ENG) by Clayton M. Christensen<br/>Related: The Innovator&#39;s Dilemma (http://www.amazon.com/dp/0060521996/ref=cm_sw_r_tw_dp_A9PQpb0RE31C8)<br/>Related: An Interview with Clayton Christensen (http://5by5.tv/criticalpath/36) by Horace Dediu<br/>Related: Jobs To Be Done (http://www.therewiredgroup.com/jobs-to-be-done/)</p>]]></content></entry><entry><title>Sketchnotes from Agile UX NYC 2012</title><id>http://www.rossbelmont.com/blog/2012/2/26/sketchnotes-from-agile-ux-nyc-2012.html</id><link rel="alternate" type="text/html" href="http://www.rossbelmont.com/blog/2012/2/26/sketchnotes-from-agile-ux-nyc-2012.html"/><author><name>Ross Belmont</name></author><published>2012-02-26T19:48:07Z</published><updated>2012-02-26T19:48:07Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p>Since I’ve been working on my sketching and drawing skills, I decided to take a page from the <a href="http://www.lukew.com">Luke Wroblewski</a> playbook and share my notes from the inaugural <a href="http://agileuxnyc.com">Agile UX NYC</a> conference. It was an intense day and I don’t have something&hellip;legible&hellip;for every session, though most of the slides are on SlideShare.</p>

<p><strong>Pivot Your Culture to Win with Agile: Eric Burd</strong></p>

<p>
<div style="text-align: center; margin-bottom: 30px;"><span class="thumbnail-image-block ssNonEditable"><span><a href="javascript:showFullImage('/display/ShowImage?imageUrl=%2Fstorage%2Fpost-images%2Fwin-agile-sketch.png%3F__SQUARESPACE_CACHEVERSION%3D1330289204540',768,1024);"><img src="http://www.rossbelmont.com/storage/thumbnails/5411751-16813618-thumbnail.jpg?__SQUARESPACE_CACHEVERSION=1330289219456" alt=""/></a></span></span></div>
</p>

<p><strong>Investing in Design: <a href="https://twitter.com/phineasb">Phin Barnes</a></strong></p>

<div style="text-align: center; margin-bottom: 30px;">
<span class="thumbnail-image-block ssNonEditable"><span><a href="javascript:showFullImage('/display/ShowImage?imageUrl=%2Fstorage%2Fpost-images%2Finv-in-design-sketch.png%3F__SQUARESPACE_CACHEVERSION%3D1330289325687',768,1024);"><img src="http://www.rossbelmont.com/storage/thumbnails/5411751-16813650-thumbnail.jpg?__SQUARESPACE_CACHEVERSION=1330289328372" alt=""/></a></span></span></div>

<p><strong><a href="http://www.slideshare.net/jseiden/2012-feb-25-agile-ux-nyc-seiden-requirements-to-hypotheses">Replacing Requirements with Hypotheses</a>: <a href="https://twitter.com/jseiden">Josh Seiden</a></strong></p>

<div style="text-align: center; margin-bottom: 30px;">
<span class="thumbnail-image-block ssNonEditable"><span><a href="javascript:showFullImage('/display/ShowImage?imageUrl=%2Fstorage%2Fpost-images%2Fhypotheses-sketch.png%3F__SQUARESPACE_CACHEVERSION%3D1330289393643',768,1024);"><img src="http://www.rossbelmont.com/storage/thumbnails/5411751-16813688-thumbnail.jpg?__SQUARESPACE_CACHEVERSION=1330289399003" alt=""/></a></span></span>
</div>

<p><strong>Getting Out of the Agile Building: <a href="https://twitter.com/tsharon">Tomer Sharon</a></strong></p>

<div style="text-align: center; margin-bottom: 30px;">
<span class="thumbnail-image-block ssNonEditable"><span><a href="javascript:showFullImage('/display/ShowImage?imageUrl=%2Fstorage%2Fpost-images%2Fresearch-getting-out-building-sketch.png%3F__SQUARESPACE_CACHEVERSION%3D1330289457980',768,1024);"><img src="http://www.rossbelmont.com/storage/thumbnails/5411751-16813713-thumbnail.jpg?__SQUARESPACE_CACHEVERSION=1330289458817" alt=""/></a></span></span>
</div>

<p><strong>Managing Your Malkovich Bias: <a href="https://twitter.com/glusman">Andres Glusman</a></strong></p>

<div style="text-align: center; margin-bottom: 30px;">
<span class="thumbnail-image-block ssNonEditable"><span><a href="javascript:showFullImage('/display/ShowImage?imageUrl=%2Fstorage%2Fpost-images%2Flessons-meetup-sketch.png%3F__SQUARESPACE_CACHEVERSION%3D1330289580617',768,1024);"><img src="http://www.rossbelmont.com/storage/thumbnails/5411751-16813749-thumbnail.jpg?__SQUARESPACE_CACHEVERSION=1330289581292" alt=""/></a></span></span>
</div>

<p><strong><a href="http://www.slideshare.net/LaneHalley/quick-visual-collaborative-continuous">Quick, Visual, Collaborative &amp; Continuous</a>: Lane Halley</strong></p>

<p><em>This one’s a little thin&mdash;be sure to <a href="http://www.slideshare.net/LaneHalley/quick-visual-collaborative-continuous">grab the slides</a> if you want to go deeper.</em></p>

<div style="text-align: center; margin-bottom: 30px;">
<span class="thumbnail-image-block ssNonEditable"><span><a href="javascript:showFullImage('/display/ShowImage?imageUrl=%2Fstorage%2Fpost-images%2Fquick-viz-c-c.jpg%3F__SQUARESPACE_CACHEVERSION%3D1330289619617',1536,2048);"><img src="http://www.rossbelmont.com/storage/thumbnails/5411751-16813760-thumbnail.jpg?__SQUARESPACE_CACHEVERSION=1330289622899" alt=""/></a></span></span>
</div>

<p><strong><a href="http://www.slideshare.net/andersr/learning-to-play-ux-rugby">Learning to Play UX Rugby</a>: <a href="https://twitter.com/andersramsay">Anders Ramsay</a></strong></p>

<div style="text-align: center; margin-bottom: 30px;">
<span class="thumbnail-image-block ssNonEditable"><span><a href="javascript:showFullImage('/display/ShowImage?imageUrl=%2Fstorage%2Fpost-images%2Fuxrubgy-sketch.png%3F__SQUARESPACE_CACHEVERSION%3D1330289652546',768,1024);"><img src="http://www.rossbelmont.com/storage/thumbnails/5411751-16813770-thumbnail.jpg?__SQUARESPACE_CACHEVERSION=1330289653266" alt=""/></a></span></span>
</div>

<p><strong>The Design Studio Method: <a href="https://twitter.com/zakiwarfel">Todd Zaki Warfel</a></strong></p>

<div style="text-align: center; margin-bottom: 30px;">
<span class="thumbnail-image-block ssNonEditable"><span><a href="javascript:showFullImage('/display/ShowImage?imageUrl=%2Fstorage%2Fpost-images%2F685-sketch.png%3F__SQUARESPACE_CACHEVERSION%3D1330289682334',768,1024);"><img src="http://www.rossbelmont.com/storage/thumbnails/5411751-16813779-thumbnail.jpg?__SQUARESPACE_CACHEVERSION=1330289685545" alt=""/></a></span></span>
</div>

<p><strong><a href="http://www.jonathanpberger.com/code_as_lit/index.html#0">Code Literacy</a>: <a href="https://twitter.com/JonathanpBerger">Jonathan Berger</a></strong></p>

<div style="text-align: center; margin-bottom: 30px;">
<span class="thumbnail-image-block ssNonEditable"><span><a href="javascript:showFullImage('/display/ShowImage?imageUrl=%2Fstorage%2Fpost-images%2Fcode-literacy-sketch.png%3F__SQUARESPACE_CACHEVERSION%3D1330289708331',768,1024);"><img src="http://www.rossbelmont.com/storage/thumbnails/5411751-16813790-thumbnail.jpg?__SQUARESPACE_CACHEVERSION=1330289709176" alt=""/></a></span></span>
</div>

<p><strong><a href="http://www.slideshare.net/jgergen/better-faster-uxier-atomic-design">AToMIC Design</a>: <a href="https://twitter.com/b9punk">Jennifer Gergen</a></strong></p>

<div style="text-align: center; margin-bottom: 30px;">
<span class="thumbnail-image-block ssNonEditable"><span><a href="javascript:showFullImage('/display/ShowImage?imageUrl=%2Fstorage%2Fpost-images%2Fatomic-design-sketch.png%3F__SQUARESPACE_CACHEVERSION%3D1330289735720',768,1024);"><img src="http://www.rossbelmont.com/storage/thumbnails/5411751-16813799-thumbnail.jpg?__SQUARESPACE_CACHEVERSION=1330289738303" alt=""/></a></span></span>
</div>

<p><strong>Demystifying Design: <a href="https://twitter.com/jboogie">Jeff Gothelf</a></strong></p>

<div style="text-align: center; margin-bottom: 30px;">
<span class="thumbnail-image-block ssNonEditable"><span><a href="javascript:showFullImage('/display/ShowImage?imageUrl=%2Fstorage%2Fpost-images%2Fdemystifying-design-sketch.png%3F__SQUARESPACE_CACHEVERSION%3D1330289764460',768,1024);"><img src="http://www.rossbelmont.com/storage/thumbnails/5411751-16813852-thumbnail.jpg?__SQUARESPACE_CACHEVERSION=1330289767767" alt=""/></a></span></span>
</div><p>Related: Agile UX NYX (http://agileuxnyc.com)</p>]]></content></entry><entry><title>Emotional Design, Affective Computing and Social Animals</title><id>http://www.rossbelmont.com/blog/2012/1/20/emotional-design-affective-computing-and-social-animals.html</id><link rel="alternate" type="text/html" href="http://www.rossbelmont.com/blog/2012/1/20/emotional-design-affective-computing-and-social-animals.html"/><author><name>Ross Belmont</name></author><published>2012-01-20T15:11:32Z</published><updated>2012-01-20T15:11:32Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p>When I see <a href="http://www.odannyboy.com/2011/12/my-2011-bibliography/">Dan Saffer</a> and <a href="http://www.staywiththegroup.com/2012/01/01/2011-book-report/">Gabby Hon</a> posting long lists of books they've read in 2011, I sink a bit and sigh longingly. Despite my rampant <a href="http://www.instapaper.com/">Instapaper</a>-ing, I simply don't make enough time to read long-form content.</p>

<p>I did make it through one book last year, though, and it really stuck with me: <a href="http://www.amazon.com/Social-Animal-Sources-Character-Achievement/dp/140006760X"><em>The Social Animal</em></a> by David Brooks. As a developer who's transitioned into design, I made my way through a self-guided crash course in interaction design, visual design and the like, but moving "up the stack" into understanding emotion was uncharted territory. Luckily, Brooks' book made the topic very approachable, since it's written as an allegory.</p>

<p><em>The Social Animal</em> has many insights, but this is the one I keep revisting: <em>every piece of sensory input a human being receives will evoke an intellectual <strong>and</strong> an emotional response</em>. The takeaway is that you can fold this into your personal interactions and benefit, or ignore this at your peril.</p>

<p>Interesting stuff, right? But how do we use this knowledge to make our designs better?</p>

<p><strong>Here Comes The Knowledge</strong></p>

<p>Three separate pieces of work have crossed my path that address this topic:</p>

<ul>
<li><em><a href="http://www.abookapart.com/products/designing-for-emotion">Designing For Emotion</a></em> by Aaron Walter is the quintessential guide. Simply put, I don't think we'd be talking about this without Aaron's work.</li>
<li><em><a href="http://www.interaction-design.org/printerfriendly/encyclopedia/affective_computing.html">Affective Computing</a></em> by Kristina Höök is a more academic take on the topic that reviews the relevant research. It's deep stuff made more approachable with video interviews.</li>
<li><em><a href="http://bit.ly/tUGZNl">Grouped</a></em> by Paul Adams focuses on the social angle with discussions of influence and how ideas spread between people. Some of the same concepts are in <a href="http://sliwww.slideshare.net/padday/how-your-customers-social-circles-influence-what-they-buy-what-they-do-and-where-they-go">this slide deck</a>, so you can start there to get a sense for the thinking that shaped Paul's work with Google+ and Facebook.</li>
</ul>

<p><strong>So, What Now?</strong></p>

<p>Have I synthesized all this into a Unified Theory of Human Computing? Um, not quite yet. But I think the sheer amount of activity around these concepts tells us we'll need to fold them into our design practices&mdash;where there's smoke, there's fire.</p>

<p>For now, I have all this stuff on my reading list, which I promise I'll get to very soon.</p>
<p>Source: Affective Computing (http://www.interaction-design.org/encyclopedia/affective_computing.html) by Kristina Höök<br/>Related: Grouped (http://bit.ly/tUGZNl) by Paul Adams<br/>Related: Designing for Emotion (http://www.abookapart.com/products/designing-for-emotion) by Aaron Walter</p>]]></content></entry><entry><title>Better code searching with ack</title><id>http://www.rossbelmont.com/blog/2011/11/23/better-code-searching-with-ack.html</id><link rel="alternate" type="text/html" href="http://www.rossbelmont.com/blog/2011/11/23/better-code-searching-with-ack.html"/><author><name>Ross Belmont</name></author><published>2011-11-23T20:23:48Z</published><updated>2011-11-23T20:23:48Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p>Have you ever needed to find all references to a certain Apex class across an entire code base? If you're a Force.com developer, I'm sure you have. And what if you're not in the Eclipse-based IDE...perhaps you're using the Force.com Migration tool on the command line? I'm guessing you've used a tool like <code>grep</code>.</p>

<p>While <code>grep</code> is still the gold standard, recently I've been using another tool called <a href="http://betterthangrep.com">ack</a> in its place. The ack web site defines it as "designed for programmers with large trees of heterogeneous source code." I've found it to be significantly faster at searching through files, and also has a clean, simple way to search within <em>only certain types</em> of files.</p>

<p><strong>Example</strong></p>

<p>Let's say I installed the <a href="http://sites.force.com/appexchange/listingDetail?listingId=a0N30000003I9j1EAC">LinkForce app</a> into a developer edition org and wanted to explore the code. After setting up this org's code in a new Eclipse project, I can navigate to the <code>workspace</code> directory on the command line and run the following:</p>

<p><code>ack Short_URL__c</code></p>

<script src="https://gist.github.com/632948.js?file=gistfile1.mkd"></script>

<p>So, again, the above command outputs a simple list of all files that reference that particular Custom Object.</p>

<p>That's pretty good, but let's imagine what I <em>really</em> want is to find custom code (Apex and Visualforce) that refers to that object. Rather than piping the output of a separate <code>find</code> command as an input, I can simply execute the following:</p>

<p><code>ack --type=apex Short_URL__c</code> </p>

<script src="https://gist.github.com/632995.js?file=gistfile1.mkd"></script>

<p>I've configured a file type called <code>apex</code> that ack interprets as Apex Classes/Triggers and Visualforce Pages/Components. This way, I avoid superfluous search results like the definition of the Custom Object itself. ack natively understands many common file types, and can easily support any number of custom types.</p>

<p>Oddly enough, a blog post can't illustrate one of ack's greatest strengths: speed. If you search through large source trees often, you'll be amazed at how quickly the results are returned. The vast majority of my searches complete in less than one second.</p>

<p><strong>Installation</strong></p>

<p>The <a href="http://betterthangrep.com">main ack web site</a> has information about how to install the tool, and I actually used the <a href="http://github.com/protocool/AckMate">AckMate plugin for TextMate</a> since I'm a Mac user. In addition to enabling ack as the search tool within TextMate, it's possible to use that same script on the command line by <a href="http://github.com/protocool/AckMate/wiki/Usage">creating a special symbolic link</a>.</p>

<p>The Force.com-specific configuration I created can be <a href="http://gist.github.com/633007">found on GitHub</a> as well. </p>

<script src="https://gist.github.com/633007.js?file=.ackrc"></script>

<p>The first line defines the <code>apex</code> file type as consisting of Apex Classes, Triggers, Visualforce Pages and Components. The second line defines another type simply called <code>force</code> for other metadata like Objects, Apps and Profiles. You can treat this as a starting point and break out more or less file types to include Workflows, Page Layouts, etc. Finally, the third line of the configuration specifies that search results will be presented one page at a time using a command line tool called <code>less</code> (which also supports color coding).</p>

<p><strong>Conclusion</strong></p>

<p>If you develop on the Force.com platform and find the command line more efficient, <strong><a href="http://betterthangrep.com">ack</a></strong> can really speed up your work. I'd encourage you to try it if you've never ventured beyond what Eclipse offers.</p>
<p>Related: ack (http://betterthangrep.com)<br/>Related: ack configuration for Force.com (http://gist.github.com/633007)<br/>Related: AckMate (http://github.com/protocool/AckMate)<br/>Related: How to use AckMate (http://github.com/protocool/AckMate/wiki/Usage)<br/>Related: LinkForce (http://sites.force.com/appexchange/listingDetail?listingId=a0N30000003I9j1EAC)</p>]]></content></entry><entry><title>Citibank: Your touch targets are too small</title><id>http://www.rossbelmont.com/blog/2011/10/28/citibank-your-touch-targets-are-too-small.html</id><link rel="alternate" type="text/html" href="http://www.rossbelmont.com/blog/2011/10/28/citibank-your-touch-targets-are-too-small.html"/><author><name>Ross Belmont</name></author><published>2011-10-28T15:32:54Z</published><updated>2011-10-28T15:32:54Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p>If anyone from Citibank can read this, please refer to Luke Wroblewski's <a href="http://www.lukew.com/ff/entry.asp?1085">blog post</a> detailing appropriate touch target sizes.</p>

<div style="text-align: center;">
<span class="full-image-block ssNonEditable"><span><img src="http://www.rossbelmont.com/storage/touch target small citi.png?__SQUARESPACE_CACHEVERSION=1319816134521" alt=""/></span><span class="thumbnail-caption">Citibank Online's mobile login</span></span></div>

<p>Compare this to the mobile app for <a href="http://www.meebo.com">Meebo</a>, a popular multiprotocol IM client:</p>

<div style="text-align: center;">
<span class="full-image-block ssNonEditable"><span><img src="http://www.rossbelmont.com/storage/post-images/touch target big meebo.png?__SQUARESPACE_CACHEVERSION=1319816306349" alt=""/></span><span class="thumbnail-caption">Meebo's login</span></span></div>
<p>Related: Touch Target Sizes (http://www.lukew.com/ff/entry.asp?1085) by Luke Wroblewski<br/>Related: meebo (http://www.meebo.com/)</p>]]></content></entry><entry><title>Building and distributing a Force.com ISV app</title><id>http://www.rossbelmont.com/blog/2011/9/10/building-and-distributing-a-forcecom-isv-app.html</id><link rel="alternate" type="text/html" href="http://www.rossbelmont.com/blog/2011/9/10/building-and-distributing-a-forcecom-isv-app.html"/><author><name>Ross Belmont</name></author><published>2011-09-10T19:55:12Z</published><updated>2011-09-10T19:55:12Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p>Last month, at <a href="http://www.salesforce.com/dreamforce/DF11/">Dreamforce 2011</a>, I had the privilege of <a href="https://dreamevent.my.salesforce.com/a0930000009YIO8">speaking</a> to an audience of people thinking of building a commercial software product on <a href="http://force.com">Force.com</a>. Since <a href="http://www.appiphony.com">my company</a> helps this specific market, I was asked to co-present with someone from Salesforce's marketing group that supports these people in their efforts.</p>

<p>This article is a summary of the material I presented. Here's a high-level outline:</p>

<ul>
<li>Building Your Team and Your Knowledge</li>
<li>The Build Process: Technical and Licensing Concerns</li>
<li>Stories From The Field</li>
<li>OK, Let's Get Started</li>
</ul>

<p>I represented the perspective of "someone who's been through it." To steer clear of legal issues, I'll omit details of the content presented by the other person. Here's a simplified version of my slide deck, with an explanatory article below.</p>

<script src="http://speakerdeck.com/embed/4e65818fef3790000100359c.js?size=preview"></script>

<p><br/></p>

<h2>Think Different(ly)</h2>

<p>I began with a show of hands asking how many folks in the audience had an iPhone or an iPad. Luckily, I had a significant number, so I was able to use my analogy comparing Force.com development to <a href="http://developer.apple.com/technologies/ios/">iOS</a> development. Both types introduce significant new elements.</p>

<p><table border="0" cellspacing="0">
    <thead>
    <tr>
      <th>New element</th>
      <th>Force.com</th>
      <th>iOS</th>
    </tr>
    </thead>
    <tbody>
    <tr>
      <td><strong>New</strong> programming language</td>
      <td>Apex</td>
      <td>Objective-C</td>
    </tr>
    <tr>
      <td><strong>New</strong> APIs/runtime</td>
      <td>Apex Standard Classes and Visualforce hosted in the cloud</td>
      <td>Cocoa on iOS</td>
    </tr>
    <tr>
      <td><strong>New</strong> UI conventions</td>
      <td>Salesforce.com CRM and Service apps set the tone</td>
      <td>Touch interface, Apple's <a href="http://developer.apple.com/library/ios/#DOCUMENTATION/UserExperience/Conceptual/MobileHIG/Introduction/Introduction.html">HIG</a></td>
    </tr>
    <tr>
      <td><strong>New</strong> distribution models</td>
      <td>App Exchange</td>
      <td>App Store</td>
    </tr>
    <tr>
      <td><strong>New</strong> quality processes</td>
      <td>Security Review</td>
      <td>App Store Review</td>
    </tr>
    </tbody>
  </table></p>

<p>These new elements necessitate a shift in thinking from traditional Java or .NET development—one which starts in design, affects coding and extends into sales. Directly "porting" an existing application concept to Force.com would be no more successful than porting the entirety of Microsoft Excel to the iPhone. There's a different definition of what makes an app <em>great</em>.</p>

<h2>Concrete Examples</h2>

<p>Let's take the example of building a simple blog system that organizes <strong>Articles</strong> into one or more <strong>Categories</strong>: Force.com's object database causes the fundamental data model to include notable differences. The Categories are defined as a first-class attribute of the Article, rather than as a separate table (requiring yet a third junction table). Moreover, this structure allows the system to render an appropriate UI to assign an Article to multiple Categories without any custom code.</p>

<p>Force.com also includes a major difference at the user interface level: a native, out-of-box UI that matches Salesforce's CRM and Service apps. The interaction and visual design of most Java or .NET apps will start with a blank slate. The default UI may or may not be a great fit for your app, but in either case it's worth respecting the conventions to which Salesforce users are accustomed. Reducing friction for end users will drive adoption and word-of-mouth referrals.</p>

<h2>Look Beyond Development</h2>

<p>The Force.com platform is <a href="http://cl.ly/A2Pb">broad and deep</a>; launching an app on Force.com is definitely <a href="http://en.wikiquote.org/wiki/Isaac_Newton#Sourced">standing on the shoulders of giants</a>. Hence, it's possible that the engineering effort to build an app is actually <em>less</em> than you imagine. That said, most folks with a development mindset don't plan sufficiently for the work to distribute the app. Working through the Security Review process and listing on the App Exchange are activities that require time and planning.</p>

<p>It's natural to "go with what you know" and focus on simply building the app. Unfortunately, that's not the finish line. ISVs would be well-served to start planning for non-development activities sooner rather than later.</p>

<h2>The Role of the PDO (Product Development Outsourcer)</h2>

<p>Salesforce refers to my company as a PDO (Product Development Outsourcer)—we can design an application, handle the development and help a client through the work of launching onto the App Exchange. On the majority of our prior engagements, we've done the lion's share of the development.</p>

<p>Over time, however, the client team ramps up and takes over. As a corporate asset, the app is their intellectual property and it's critical to assemble a team with the skills necessary to be a successful software company over the long term. This includes not only development, but also related functions like customer support and product management.</p>

<p>Our model is not to become "embedded" as a vendor for many years. In fact, we're thrilled to hear success stories from former clients who no longer need our "training wheels."</p>

<h2>OK, Let's Get Started</h2>

<p>If you're an ISV that's ready and willing to head down this path, how do you begin? It's actually quite simple: our usual process is to meet with you and have you explain the long-term vision of your application. We need to understand your definition of success. Then, we'll discuss any tricky requirements in a little more depth, go back to our offices and reflect on everything we've learned. Finally, we develop an overall design concept of what it would look like to host your app within Force.com, and we share the concept with you to get feedback.</p>

<p>It's analogous to meeting with an architect to design a custom home, describing what you need, and seeing an initial sketch. Almost all the elements in the design are still negotiable, but the sketch gives you confidence the architect understands your end goal.</p>

<div style="text-align: center;">
<span class="thumbnail-image-block ssNonEditable"><span><a href="javascript:showFullImage('/display/ShowImage?imageUrl=%2Fstorage%2Farch-sketch.jpeg%3F__SQUARESPACE_CACHEVERSION%3D1315684616866',1125,1600);"><img src="http://www.rossbelmont.com/storage/thumbnails/5411751-14087048-thumbnail.jpg?__SQUARESPACE_CACHEVERSION=1315684632294" alt=""/></a></span><span class="thumbnail-caption">Architectural sketch</span></span></div>

<p>Most often, our initial sketch takes the form of a <a href="http://www.peachpit.com/articles/printerfriendly.aspx?p=1637902">concept model</a>. Once you're comfortable with what you see, we'll begin a formal planning process and design phase to capture and spec out all the specifics. After the design phase is complete, we scope the actual development work.</p>

<h2>Conclusion</h2>

<p>If I could choose to have the audience remember only one idea from my presentation, it would be this:</p>

<blockquote>
  <p>Prior experience building software will help you succeed on Force.com, but don't expect to do things the way you've always done them. Embrace the change.</p>
</blockquote>

<p>If you're interested in discussing this topic further, please leave a comment or <a href="http://www.rossbelmont.com/contact">get in touch privately</a>. I'd love to talk to you.</p><p>Source: An in-depth look at Force.com (http://www.developerforce.com/media/Forcedotcom_Whitepaper/WP_Forcedotcom-InDepth_040709_WEB.pdf)<br/>Source: Wikiquote article on Isaac Newton (http://en.wikiquote.org/wiki/Isaac_Newton)<br/>Source: iOS Human Interface Guidelines (http://developer.apple.com/library/ios/#DOCUMENTATION/UserExperience/Conceptual/MobileHIG/Introduction/Introduction.html) by Apple Inc.<br/>Related: Force.com (http://www.force.com/)<br/>Related: Dreamforce 2011 (http://www.salesforce.com/dreamforce/DF11/)<br/>Related: Appiphony (http://www.appiphony.com)<br/>Related: ISV Playbook Modules 2 &amp; 3: Building and Distributing Your App (https://dreamevent.my.salesforce.com/a0930000009YIO8)<br/>Related: iOS (http://developer.apple.com/technologies/ios/)<br/>Related: AppExchange (http://appexchange.salesforce.com/home)<br/>Related: Concept modeling (http://www.peachpit.com/articles/printerfriendly.aspx?p=1637902) by Dan M. Brown</p>]]></content></entry><entry><title>A Tufte-style take on an infomercial graphic</title><id>http://www.rossbelmont.com/blog/2011/8/14/a-tufte-style-take-on-an-infomercial-graphic.html</id><link rel="alternate" type="text/html" href="http://www.rossbelmont.com/blog/2011/8/14/a-tufte-style-take-on-an-infomercial-graphic.html"/><author><name>Ross Belmont</name></author><published>2011-08-15T02:42:36Z</published><updated>2011-08-15T02:42:36Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p>A few weeks back, I attended <a href="http://www.edwardtufte.com/tufte/courses">Edward Tufte's one-day seminar on visualizing information</a>. The course is a great overview of his theories on designing effective charts, graphs and any other type of imagery needed to explain complex data. I'd recommend attending if you do any design work or process numeric data.</p>
<p>The next weekend, I spotted the informercial for the <a href="http://www.abrockettwister.com/">Ab Rocket Twister</a> on a TV at a restaurant. The volume was all the way down, so I had only the visuals to sell me on this product. The messaging was mostly the typical nonsense used to sell home weight loss machines, though they included one particularly egregious graph:</p>
<div style="text-align: center;"><span class="thumbnail-image-block ssNonEditable"><span><img src="http://www.rossbelmont.com/storage/post-images/new-abrocket.png?__SQUARESPACE_CACHEVERSION=1313614530450" alt="" /></span><span class="thumbnail-caption" style="width: px;">Double muscle activity!</span></span></div>
<p>I'm seeing things through Tufte-colored glasses now, so I decided to see how the Ab Rocket Twister's sales pitch holds up when subjected to his six <strong><a href="http://www.edwardtufte.com/tufte/books_be">Fundamental Principles of Analytical Design</a></strong>.</p>
<ol>
<li><strong>Show comparisons.</strong> Well, we can see the Ab Rocket Twister generates 107% of the muscle activity of standard floor crunches. The text notes that's just over double, though the red bar looks to be about 3-4x as tall as the yellow bar. (3D helps muddy the waters.) Confusing matters further, "107%" apparently represents a <em>107% increase</em>, or else it wouldn't be "double." 107% of 100 is only 107, whereas double would be 200.</li>
<li><strong>Show causality and explanation.</strong> By itself, this image shows essentially zero explanation of why these results are obtained. There are two pictures of a man exercising (one for each method), but that doesn't tell you why you'll get better results.</li>
<li><strong>Show more than one or two variables.</strong> We could assume that the experiments generating this data have controlled for other factors, but that's not stated. What about the possible effects of changing your diet?</li>
<li><strong>Integrate words, numbers and images together.</strong> Words, numbers and images all definitely appear here. However, it's hard to argue it's an effective integration. The scale of the bars is definitely suspect, and the concentric circles at the base of the bars strike me as particularly ridiculous. What is <em>that</em> designed to show?</li>
<li><strong>Thoroughly describe the evidence.</strong> Earlier in the commercial, it's mentioned that "university testing" generated this data. Unfortunately, there is a complete and total lack of information about how and where this testing was performed.</li>
<li><strong>Ultimately, the message stands or falls on the quality and integrity of the content.</strong> Is this information true? Perhaps, but the word "integrity" doesn't exactly spring to mind, especially given the aforementioned errors and generally cheesy production values displayed in the rest of the commercial.</li>
</ol>
<p>Overally, this is clearly a weak information graphic. But how could it be improved? When I've made design mistakes similar to these in the past, it's most often rooted in not having enough hard data in the first place. In that case, a heavily "designed," full screen visual simply isn't warranted.</p>
<p>We only see one number in this data set, so one idea worth exploring is what Tufte refers to as a <a href="http://www.edwardtufte.com/bboard/q-and-a-fetch-msg?msg_id=0000SI">single-number semi-table</a>. That being said, I still don't think I'll be ordering an Ab Rocket Twister anytime soon.</p><p>Related: Single-number semi-table (http://www.edwardtufte.com/bboard/q-and-a-fetch-msg?msg_id=0000SI)</p>]]></content></entry><entry><title>Make a simple "torn" screenshot effect in Keynote</title><id>http://www.rossbelmont.com/blog/2011/8/14/make-a-simple-torn-screenshot-effect-in-keynote.html</id><link rel="alternate" type="text/html" href="http://www.rossbelmont.com/blog/2011/8/14/make-a-simple-torn-screenshot-effect-in-keynote.html"/><author><name>Ross Belmont</name></author><published>2011-08-14T19:06:21Z</published><updated>2011-08-14T19:06:21Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p>When I'm creating wireframes or mockups, I occasionally have the need to include a very long page that would require scrolling in the browser. However, I like to keep my mockups to a reasonable size to make them easier to consume. My solution is to "tear out" a redundant part of the page, and I've figured out how to achieve this effect in Keynote.</p>

<p>Here's a visual explanation of how I did this:</p>

<p><div id="squarespace-slideshow-wrapper-1313349927"><input type="hidden" id="squarespace-slideshow-params-1313349927" value="eyJzY3JpcHRJZCI6IjEzMTMzNDk5MjciLCJhdXRvUGxheUVuYWJsZWQiOmZhbHNlLCJzbGlkZVN0eWxlIjoiYXNwZWN0Iiwic2xpZGVUcmFuc2l0aW9uIjoic3dpcGUiLCJkZXNjcmlwdGlvblN0eWxlIjoiaGlkZGVuIiwic2xpZGVOYXZpZ2F0aW9uIjoidmlzaWJsZSIsImxvYWRDb3VudCI6Mywic2xpZGVEZWxheSI6MywiYXNwZWN0WCI6IjQiLCJhc3BlY3RZIjoiMyIsImdhbGxlcnkiOnsiaWQiOiI2OTEzMTQiLCJkZXNjcmlwdGlvbiI6IiIsInVybElkIjoicGFnZS10ZWFyLWluLWtleW5vdGUvIiwicGljdHVyZXMiOlt7ImlkIjoiMTA4NDA3NzMiLCJ0aXRsZSI6IkJsYW5rIFwidG9yblwiIHBhZ2UiLCJkZXNjcmlwdGlvbiI6IiIsImZpbGVOYW1lIjoicGFnZS10ZWFyLjAwMS5wbmcifSx7ImlkIjoiMTA4NDA3NzQiLCJ0aXRsZSI6IlwiVG9yblwiIHBhZ2UgYXMgaW1hZ2UgbWFzayIsImRlc2NyaXB0aW9uIjoiIiwiZmlsZU5hbWUiOiJwYWdlLXRlYXIuMDAyLnBuZyJ9LHsiaWQiOiIxMDg0MDc3NSIsInRpdGxlIjoiVHdvIHBhZ2UgXCJmcmFnbWVudHNcIiBuZXh0IHRvIGVhY2ggb3RoZXIiLCJkZXNjcmlwdGlvbiI6IiIsImZpbGVOYW1lIjoicGFnZS10ZWFyLjAwMy5wbmcifV0sInRpdGxlIjoiUGFnZSBUZWFyIGluIEtleW5vdGUifX0=" /><script type="text/javascript">YUI().use("*", function(Y) {Y.on("domready", function() {Y.startGallerySlideShow("squarespace-slideshow-params-1313349927");});});</script></div></p>

<p>Making the core shape is suprisingly easy in Keynote. You can start out being sloppy, and then align the corner points to make perfect right angles by watching for the yellow guides to appear as you drag the points.</p>
]]></content></entry><entry><title>Bookmark your way straight into a specific Gmail account</title><id>http://www.rossbelmont.com/blog/2011/7/14/bookmark-your-way-straight-into-a-specific-gmail-account.html</id><link rel="alternate" type="text/html" href="http://www.rossbelmont.com/blog/2011/7/14/bookmark-your-way-straight-into-a-specific-gmail-account.html"/><author><name>Ross Belmont</name></author><published>2011-07-14T21:09:10Z</published><updated>2011-07-14T21:09:10Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p><span class="full-image-float-right ssNonEditable"><span><a href="http://www.lewisblack.com/"><img src="http://www.rossbelmont.com/storage/post-images/Lewis Black.jpeg?__SQUARESPACE_CACHEVERSION=1310677810488" alt="Not happy"/></a></span></span>Switching accounts in Gmail drives me <em>frickin' nuts</em>. If your company uses Google Apps, and you have a personal Gmail account, you switch accounts as often as a baby cr@ps its diaper.</p>

<p>Fortunately, there's a URL you can bookmark which will jump straight to a specific account's Inbox. This one leads to my default account:</p>

<p><strong><a href="https://mail.google.com/mail/u/0/#mbox">https://mail.google.com/mail/u/0/#mbox</a></strong></p>

<p>In contrast, this one leads to my work account:</p>

<p><strong><a href="https://mail.google.com/mail/u/1/#mbox">https://mail.google.com/mail/u/1/#mbox</a></strong></p>

<p>You'll notice the only difference is a single, magical number. I had a personal Gmail account before starting my job, hence the lower number.</p>

<p>If you simply navigate to a particular Inbox in your browser, you should be able to bookmark that little sumbitch right there. But if you're a longtime Gmail user with existing bookmarks, you were probably too busy punching the drywall in frustration.</p>

<p>I hope this tip prevents you from goin' all stabby on something.</p>
]]></content></entry><entry><title>UX design lessons from high-end architecture</title><id>http://www.rossbelmont.com/blog/2011/7/12/ux-design-lessons-from-high-end-architecture.html</id><link rel="alternate" type="text/html" href="http://www.rossbelmont.com/blog/2011/7/12/ux-design-lessons-from-high-end-architecture.html"/><author><name>Ross Belmont</name></author><published>2011-07-13T02:38:06Z</published><updated>2011-07-13T02:38:06Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p>If you've been around software for any length of time, you've heard <a href="http://www.codinghorror.com/blog/2005/05/bridges-software-engineering-and-god.html">this old chestnut</a>:</p>

<blockquote>
  <p>If we built bridges the way we build software, we'd all be dead. Outlook takes ten minutes to load and crashes every day!</p>
</blockquote>

<p>Is it an apt comparison? Eh, <em>maybe</em>. </p>

<p>I'm more interested in the beginning of the process, so I decided to explore what architects do and look for parallels in what we call <a href="http://en.wikipedia.org/wiki/User_experience_design">user experience design</a>. (<strong>Spoiler alert</strong>: the two line up nicely.)</p>

<h2>A trip to St. Barts</h2>

<p><span class="thumbnail-image-float-right ssNonEditable"><span><a href="javascript:showFullImage('/display/ShowImage?imageUrl=%2Fstorage%2Fpost-images%2Fst-barts-exterior.jpeg%3F__SQUARESPACE_CACHEVERSION%3D1310532349009',540,850);"><img src="http://www.rossbelmont.com/storage/thumbnails/5411751-13171865-thumbnail.jpg?__SQUARESPACE_CACHEVERSION=1310532355325" alt=""/></a></span></span>
My exhaustive inquiry began at Barnes &amp; Noble, with the <a href="http://www.architecturaldigest.com/magazine/toc/2011/08/toc_20110701">most recent copy of Architectural Digest</a>. The <a href="http://www.architecturaldigest.com/homes/homes/2011/08/charles-gwathmey-st-barts-article">cover story</a> described the building of a multi-villa compound on St. Barts for an unnamed (wealthy) client, starting with the architects visiting the site. They researched local building styles and materials, and discovered an odd local ordinance regarding roof design.</p>

<p>Did you catch the key word? <strong>Research</strong>. The UX pros out there know that research is a critical input to the design process. The architects hadn't worked in the Caribbean, and couldn't know about the regulations and what structures would feel natural any other way. Perhaps you've built software that was <a href="http://en.wikipedia.org/wiki/Section_508">Section 508</a> compliant, or made allowances for <a href="http://en.wikipedia.org/wiki/Sarbanes%E2%80%93Oxley_Act">Sarbanes-Oxley</a>? Imagine the change orders if they would've cut corners in this phase.</p>

<p>In addition to research, there's the obvious input from the client on what they want/need. And indeed, the home is both beautiful and functional. An early sketch (shown in the print edition) depicts guest quarters on a lower level and the "master" separated above, since guest are likely to stick around a while. The master also contains an office space. I can feel you UXers nodding...<strong>sketching</strong>, appealing <strong>visual design</strong> and effective <strong>interaction design</strong>.</p>

<p>The article closes with a touching story about how the lead architect succumbed to cancer during construction, and his protégé saw it through to completion. Here's a quote:</p>

<blockquote>
  <p>...[T]he master's greatest lesson? "Charlie taught me that you design and refine up until the last minute," the architect answers.</p>
</blockquote>

<p><strong>Iteration</strong> and <strong>usability testing</strong> are analogous here in a way that's almost uncanny.</p>

<h2>Let's do lunch</h2>

<p>A longtime friend has a Master's degree in Architecture and works in construction management, so I met him for lunch to get his take on this.</p>

<p>He echoed these points in a more practical way, pointing out that a project like this effectively has an unlimited budget. Iteration on a construction project is much easier without those pesky concerns. We can be a lot more nimble with software...lucky us!</p>

<h2>Tl;dr</h2>

<p>Surprisingly enough, architecture and user experience design have the same three steps:</p>

<ol>
<li>Conduct research and get requirements</li>
<li>Design something that meets goals and is beautiful</li>
<li>Polish it to perfection</li>
</ol>

<p>It's just that easy.</p>
<p>Source: Charles Gwathmey’s St. Barts Paradise (http://www.architecturaldigest.com/homes/homes/2011/08/charles-gwathmey-st-barts-article)<br/>Related: Bridges, Software Engineering, and God (http://www.codinghorror.com/blog/2005/05/bridges-software-engineering-and-god.html)</p>]]></content></entry></feed>
