<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Richard Boardman</title>
	<atom:link href="http://richardboardman.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://richardboardman.com</link>
	<description>Upstart User Experience Consulting</description>
	<lastBuildDate>Thu, 19 Apr 2012 21:07:29 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Unravelling the anatomy of a website visually</title>
		<link>http://richardboardman.com/2012/04/unravelling-the-anatomy-of-a-website-visually/</link>
		<comments>http://richardboardman.com/2012/04/unravelling-the-anatomy-of-a-website-visually/#comments</comments>
		<pubDate>Thu, 19 Apr 2012 20:39:03 +0000</pubDate>
		<dc:creator>rick</dc:creator>
				<category><![CDATA[django]]></category>
		<category><![CDATA[Internet Technology]]></category>

		<guid isPermaLink="false">http://richardboardman.com/?p=105</guid>
		<description><![CDATA[I&#8217;ve been reading (and writing) a lot of code recently and wanted to share a graphical technique for understanding an alien codebase. Code can be hard to follow, especially if you didn&#8217;t write it, and even more so if you &#8230; <a href="http://richardboardman.com/2012/04/unravelling-the-anatomy-of-a-website-visually/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Frichardboardman.com%2F2012%2F04%2Funravelling-the-anatomy-of-a-website-visually%2F&amp;title=Unravelling%20the%20anatomy%20of%20a%20website%20visually" id="wpa2a_2"><img src="http://richardboardman.com/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share"/></a></p><div id="attachment_110" class="wp-caption aligncenter" style="width: 674px"><a href="http://richardboardman.com/wp-content/uploads/2012/04/intro1.png"><img class="size-full wp-image-110" title="Intro sample" src="http://richardboardman.com/wp-content/uploads/2012/04/intro1.png" alt="" width="664" height="337" /></a><p class="wp-caption-text">The visual anatomy of wordconfusion.com (see below for complete diagram)</p></div>
<p>I&#8217;ve been reading (and writing) a lot of code recently and wanted to share a graphical technique for understanding an alien codebase.</p>
<p>Code can be hard to follow, especially if you didn&#8217;t write it, and even more so if you are new to a language. Web apps are particularly hard to follow since they consist of several layers, each containing multiple technologies (HTML, CSS, Javascript, plus the intricacies of whichever MVC web framework you use).</p>
<p>I&#8217;ve been trying to get back into programming recently with Python and <a href="https://www.djangoproject.com/">Django</a>. To that end I&#8217;ve been doing a number of online tutorials. I find these easiest to follow when the tutorial guides you, incrementally, through the writing of an app so you can grasp the code a piece at a time. A couple of my favourite tutorials on this &#8220;incremental&#8221; type are James McGaw&#8217;s <a href="http://www.apress.com/9781430225355">Beginning Django E-Commerce</a>, and Ayman Hourieh&#8217;s <a href="http://aymanh.com/django-10-website-development-released">Django 1.0 Web Development</a>. The catch is that such a tutorial takes a long time, both to read and to write. Its also hard to get a quick overview! Call me impatient (-;</p>
<p>Other tutorials throw you right in andpresent a ready-built web app. An excellent example of this is John Jarvis&#8217; <a href="http://jarv.org/2011/10/django-jquery-tutorial-part1/">Django/Jquery tutorial &#8211; Making a Flashcard Game</a>. John introduces a whole suite of web technologies &#8211; Django, Jquery, HTML and CSS, tied together with ajax calls, JSON, Django templates and Dynamic HTML. Its a lot to take in, and John does a fine job explaining it. However, I still found myself losing the plot in the blog posts, and eventually ended up printing out the code, scribbling all over it, and sketching an intricate diagram of how all the pieces fit together. It was only when I had a complete diagram of the flow from initial load to Game Over that I started to get it.</p>
<p>You can see a (slightly tidier) version of my diagram below. Its not meant to be a complete representation of the codebase, but it does help you grok how the game flow propagates left-right and back again through the layers (HTML/CSS &#8211; Jquery and click handlers &#8211; ajax calls &#8211; Django views, templates and models).</p>
<div id="attachment_107" class="wp-caption aligncenter" style="width: 393px"><a href="http://richardboardman.com/wp-content/uploads/2012/04/viz3.png"><img class="size-large wp-image-107" title="A visual anatomy of the jarv.org Django/Jquery Flashcard game" src="http://richardboardman.com/wp-content/uploads/2012/04/viz3-383x1024.png" alt="" width="383" height="1024" /></a><p class="wp-caption-text">A visual anatomy of the jarv.org Django/Jquery Flashcard game (click pic for full size PNG)</p></div>
<p>If you are struggling with a codebase, give it a go. It does take a significant amount of time, but should greatly improve your understanding. If you are learning Django, definitely check out John&#8217;s <a href="http://jarv.org/2011/10/django-jquery-tutorial-part1/">Making a Flashcard Game</a> tutorial. I hope this diagram helps you follow along more easily. If you are writing a tutorial, or documenting a codebase, consider throwing a diagram in!</p>
<p>Here are a few of the key concepts which sketching up a diagram like this helped make a lot clearer for me. I&#8217;m sure they are obvious to you old-hands out there, but they weren&#8217;t to me. Perhaps they aren&#8217;t to you?</p>
<ul>
<li>Many newbie web apps consist of distinct calls to the server to display separate web pages. In contrast, here there is one web page, consisting of a framework of DIV elements which are revealed and hidden in turn as the user navigates through the flow. The hiding and showing is done by Dynamic HTML controlled (mostly) by client-side Javascript.</li>
<li>Much of the game logic is in Javascript, a language which does not have the most intuitive syntax. Sketching out the flow reveals the intertwined set of click handlers and functions which make the game work. Huh, Javascript isn&#8217;t actually that nasty!</li>
<li>One exception to the above is that the &#8220;Game Over&#8221; logic on whether to display a new High Score is contained in a Django template.</li>
<li>I&#8217;m a UX person. I like to track a user engagement from start to finish. Try doing this in the code. Yuck! Here you can see it at a glance.</li>
<li>Some of the JQuery game logic hits the Django back-end, however the main game loop does not.</li>
<li>Not all AJAX calls/responses are the same! Some return JSON, some return HTML of  part &#8211; or all &#8211; of a page. Again seeing some examples of this visually laid out in the overall application flow &#8211; helped make things clear.</li>
</ul>
<p>Disclaimer: this posting is completely based on John Jarvis&#8217;s excellent <a href="http://jarv.org/2011/10/django-jquery-tutorial-part1/">Django/JQuery web tutorial.</a> Go do it!</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Frichardboardman.com%2F2012%2F04%2Funravelling-the-anatomy-of-a-website-visually%2F&amp;title=Unravelling%20the%20anatomy%20of%20a%20website%20visually" id="wpa2a_4"><img src="http://richardboardman.com/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://richardboardman.com/2012/04/unravelling-the-anatomy-of-a-website-visually/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Voices in Your Head: Crowdsourced Live Usability</title>
		<link>http://richardboardman.com/2012/01/voiceinyourhead/</link>
		<comments>http://richardboardman.com/2012/01/voiceinyourhead/#comments</comments>
		<pubDate>Thu, 26 Jan 2012 00:52:56 +0000</pubDate>
		<dc:creator>rick</dc:creator>
				<category><![CDATA[startups]]></category>
		<category><![CDATA[usability]]></category>
		<category><![CDATA[User Experience]]></category>

		<guid isPermaLink="false">http://richardboardman.com/?p=90</guid>
		<description><![CDATA[ The Voices in Their Head: Crowdsourced Live Usability It can be challenging to run a group UX review, even when the participants know each other.  There is always someone who talks endlessly, raising nitpicks and alienating other team members, others &#8230; <a href="http://richardboardman.com/2012/01/voiceinyourhead/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Frichardboardman.com%2F2012%2F01%2Fvoiceinyourhead%2F&amp;title=The%20Voices%20in%20Your%20Head%3A%20Crowdsourced%20Live%20Usability" id="wpa2a_6"><img src="http://richardboardman.com/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share"/></a></p><h1> The Voices in Their Head: Crowdsourced Live Usability</h1>
<p><strong><strong><a href="http://richardboardman.com/wp-content/uploads/2012/01/viyh-1.001.png"><br />
</a><a href="http://richardboardman.com/wp-content/uploads/2012/01/viyh-1.002.001.png"><img class="aligncenter size-full wp-image-94" title="viyh-1.002.001" src="http://richardboardman.com/wp-content/uploads/2012/01/viyh-1.002.001.png" alt="" width="1024" height="768" /></a><a href="http://richardboardman.com/wp-content/uploads/2012/01/viyh-1.001.png"><br />
</a><a href="http://richardboardman.com/wp-content/uploads/2012/01/viyh-1.001.png"><br />
</a><br />
</strong></strong>It can be challenging to run a group UX review, even when the participants know each other.  There is always someone who talks endlessly, raising nitpicks and alienating other team members, others who talk too little, and those at their back who are miles away doing their email.</p>
<p>Its also hard to cover all the material in an allotted time, particularly if a long interaction flow is being reviewed. I remember one usability inspection at Google where the aim was to review a 5-step signup process. Sounds easy, but we didn’t even make it halfway since we got bogged down with the visual design of the first page. This was a particular problem since the real usability and conversion challenges weren&#8217;t until the penultimate billing step.</p>
<p>For these and other challenges, its important to have a strong facilitator to keep things focused, constructive and rolling.</p>
<p>Its even more of a challenge in a room of 50+ strangers who &#8211; in a limited time period &#8211; want to give critical (and hopefully constructive) feedback on a product they haven&#8217;t seen before. This is the situation I find myself in San Francisco’s <a href="http://www.meetup.com/sfbayux">UX Eye for the Developer Guy</a> Meetup, which I help run with &#8211; amongst others &#8211; <a href="http://www.linkedin.com/in/lucacandela">Luca Candela</a>, <a href="http://www.childoftv.com/">Ben Morrow</a>, and <a href="http://www.linkedin.com/pub/jennifer-morrow/6/414/672">Jenny Morrow</a>. At “UX Eye”, startups in need of UX loving, are invited to present their product to a large group of UX practitioners including designers, researchers, and engineers.</p>
<p>When I run these sessions, its my job &#8211; as the facilitator &#8211; to keep things focused so as to cover all the material, to get as much input as possible from both loudmouths and those more softly-spoken, share some useful UX principles and methods, and hopefully be entertaining in the process.</p>
<h2 dir="ltr">Introducing The Voices In Your Head Protocol</h2>
<p>My favourite approach for a group UX review is based on a simple protocol I call &#8220;The Voices in Your Head&#8221; (VIYH). Its an odd name for a UX methodology, but bear with me, all will become clear. A VIYH session consists of a modified usability test with one participant at the front of the room, systematically interrupted with audience input from the masses. This balance of methods &#8211; usability and group feedback &#8211; has several benefits:</p>
<ol>
<li>A well-moderated VIYH session is a very efficient way of systematically reviewing a complete interaction flow in a room of 50 strangers in a limited time. “Impossible!” you cry, well read on.</li>
<li>The product team and audience gets to see an approximation of a one-on-one think-aloud usability session, glimpse some live moderation techniques, and observe actual user behaviour in the product. It still surprises me how few startups observe people using their products and are effectively &#8220;developing blind&#8221;. Getting feedback from a large audience can be stressful, but the product teams always learn something new and enjoy the experience. In fact, many of our participating startups are inspired to do user research themselves.</li>
<li>The audience is forced to watch and think about actual user behaviour before conveying suggestions. I find this encourages deeper analysis, and a stepping beyond “visual design nitpicks” to more fundamental issues (for example, &#8220;the colour scheme is terrible&#8221; versus &#8220;the user can’t find the call-to-action to sign-up&#8221;).</li>
<li>The whole process is a lot of fun &#8211; especially for the facilitator. See the catchphrases below.</li>
</ol>
<h2><strong><strong></strong></strong>How to run a VIYH Session.</h2>
<h3><a href="http://richardboardman.com/wp-content/uploads/2012/01/viyh-cast.002.png"><img class="aligncenter size-full wp-image-95" title="viyh-cast.002" src="http://richardboardman.com/wp-content/uploads/2012/01/viyh-cast.002.png" alt="" width="1024" height="768" /></a>Before the Session</h3>
<p>As the facilitator, be sure to review the product in advance. This allows you to confirm the interaction flow to be reviewed, indeed make sure its ready to be reviewed(!), and come up with a scenario and persona for the usability session. In most cases, these are very simple. The persona tends to be simple as “a 20-30yo white collar worker who is not very tech-literate” (i.e. unlike everyone in the room), whilst the scenario might be “You have heard about product X from a friend. Go and find out about it, and sign up”.</p>
<p>Brief the startup team to make sure they don’t interrupt and inadvertently prompt the audience. I always encourage them to take good notes since the feedback often comes thick and fast.</p>
<p>If you are truly presenting to a roomful of strangers, chat some up beforehand, and select a suitable usability participant. Select someone focused and confident, but able to follow instructions. That last bit is important.</p>
<p>Schedule at least 40 minutes per product. This should be enough for an intro, a 4-5 step interaction flow, and closing discussion.</p>
<h3 dir="ltr">Starting Off</h3>
<p>First things first, find a volunteer to be the usability participant and ask them to leave the room.  Then invite the Startup to give a two minute overview of the product so the audience have a reasonable idea what it is, and what specific UX-related questions they have. Ideally the audience would be completely fresh just like the participant. However, I find that an up-front overview helps keep things relevant and to time.</p>
<p>If the audience has limited experience in UX, and in particular in doing UX reviews, I present a quick checklist of things to look for. For example:</p>
<ol>
<li>Try and stay in the mindset of our target persona. You understand acronym soup, would our target persona?</li>
<li>Is it obvious from the landing page what the product is? (with no background introduction).</li>
<li>Follow the user&#8217;s actions, rather than looking around the page. Focus on the areas of the screen which get the user&#8217;s attention as they complete their task.</li>
<li>Are there clear calls to action for completing each step of the task at hand.</li>
<li>KISS.</li>
<li>Is the wording concise and clear? (This is often an overlooked aspect of UX for a busy startup).</li>
</ol>
<h3 dir="ltr">Brief the Participant</h3>
<p>Now its time to get going. Invite the test subject back into the room. Tell them who they are (the persona) and the scenario (what it is they need to do).</p>
<p>Next the crucial bit. Tell the participant that you want them to go through a step at a time. At each step you’ll ask them what they would do next to achieve their goal, and to think-aloud through their decision process. Tell them they are allowed to move around with their mouse, but ask them not to click anywhere until you say (this step by step approach is derived from the Cognitive Walkthrough UX Inspection methodology). Depending on the sense of humour of the participant you might want to reassure them that its the product being tested, not them. Or not. I like to keep things light-hearted and relaxed, and find a joke about how &#8220;all the data collected will not leave the room&#8221; goes down well.</p>
<h3 dir="ltr">Brief the Audience!</h3>
<p>Don&#8217;t forget about the audience. They have a key role too. Tell them that its important not to shout out and prompt the user. In fact they also have personas to act out. They are going to be “the voices in the user’s head”. At each step of the session, they will silently watch the participant do their thing. When the participant is finished, the audience then get their chance to give feedback on anything and everything. Tell them that as “Voices” they are continuously working in the background, but only speak when they are told to do so. There&#8217;s a lot of them after all, and the participant has a small head. Lastly, these Voices are not nitpickers. They like to pipe up if they see something they like, as well as raising areas for improvement.</p>
<h3 dir="ltr">Step 1: The Incoming Channel: google.com</h3>
<p>I like to start the flow before the participant even sees the product. As facilitator, there is a very important point to make here &#8211; that the user&#8217;s experience starts before they get to your website. SEO, SEM and other marketing channels are UX too.</p>
<ul>
<li>Typically I start off on <a href="http://google.com/">google.com</a> and ask the user to do a search to start their task, and review the corresponding search results. After, the user has indicated which result they would click, open it up to the audience for 30 seconds of SEO, SEM and product naming suggestions.</li>
<li>This is handy for getting some initial feedback on the name of the product and how easy it is to spell, a frequent challenge in these days of a cluttered DNS name space.</li>
<li>After 30 seconds of group discussion, tell the Voices to ssshhh. Ask the participant to click on their search result and/or type in the URL directly.</li>
</ul>
<h3>Step 2: The Product Landing Page</h3>
<p>Now we get to the meat of the session as we start to look at the product. On each page (i.e. each step of the follow), the review proceeds through 2 distinct phases: (1) the usability participant speaks, and (2) the voices (the audience) speak.</p>
<p><a href="http://richardboardman.com/wp-content/uploads/2012/01/viyh.0031.png"><img class="aligncenter size-full wp-image-100" title="viyh.003" src="http://richardboardman.com/wp-content/uploads/2012/01/viyh.0031.png" alt="" width="1024" height="768" /></a><a href="http://richardboardman.com/wp-content/uploads/2012/01/viyh.004.png"><br />
</a></p>
<p>First the participant gets a minute to look at the landing page and decide what they would do next to complete their task. The facilitator should follow standard usability interview practice. Let the user have some uninterrupted time to think and act. Prompt them to think-aloud and/or stay on track as need be.</p>
<ul>
<li>If anyone from the audience says anything, ask them to be quiet since they are well-behaving “Voices in the participants’ head”. Depending on your style, you might like to shout at the audience and/or tell them to “shut up” in a mock stern voice. A cow bell can come in handy too.</li>
<li>Occasionally the participant has no idea what to do. They may not even know what the product is! This is of course great feedback for the product team. Let the participant &#8220;suffer&#8221; for a while, before asking the Voices for a suggestion as to what to do next.</li>
</ul>
<p><a href="http://richardboardman.com/wp-content/uploads/2012/01/viyh.0041.png"><img class="aligncenter size-full wp-image-101" title="viyh.004" src="http://richardboardman.com/wp-content/uploads/2012/01/viyh.0041.png" alt="" width="1024" height="768" /></a></p>
<p>When the participant has indicated what their next step would be (just indicated mind you remember you’ve ask them not to click), its the audiences’ turn. Ask the participant to freeze, and open up the proceedings to the audience:</p>
<ul>
<li>Have some fun. Go drill sergeant on them if they are being quiet. Typically, I have the opposite problem and have to ask the Voices to put hands up and speak in turn. Cut them off after 20 seconds so you can get input from as many people as possible.</li>
<li>Since the whole audience is contributing, make sure people speak clearly. Don’t be afraid to ask them to stand up.</li>
<li>Voices are not allowed to interrupt other Voices.</li>
<li>Watch the clock. Particularly for less important pages with obvious issues, try to keep the group review concise. You can allow a few minutes more for the key steps with the main UX issues.</li>
<li>When time is up, tell the Voices to be quiet. Its time to give the participant control of their head again.</li>
</ul>
<h3 dir="ltr">Step 3: Onto the next product page</h3>
<p>And now its back to the participant. Unfreeze them. Congratulate them for listening quietly to the voices in their head, and ask them to do their intended action. Again prompt them to think-aloud, and stay on task.</p>
<ul>
<li>If they get completely stuck, get a suggestion from the the audience, or give them a clue. Hopefully you as the pre-briefed facilitator know what the desired path is.</li>
<li>Again if the voices speak up, tell them to be quiet. Surely they must have got the message by now?</li>
</ul>
<p>When the participant has said what they will do next, open it up again to the audience again. If not all of the would-be commenters had time to speak in the previous step, they will now be champing at the bit! Remember to watch the time.<strong><strong><br />
</strong></strong></p>
<h3 dir="ltr">Repeat Step 3</h3>
<p>Keep cycling between the usability test, and the Voices until you are out of time, or more ideally have completed the interaction flow.</p>
<h3 dir="ltr">Close the Session</h3>
<p>Finish the proceedings by asking everyone &#8211; participant and audience &#8211; what they see as the top issues and any recommendations for the startup. As facilitator, guide them to focus on the big significant issues &#8211; a nice exercise in issue prioritization.</p>
<p>Finally, I invite the startup to say a few words. Typically they are overwhelmed (positively!) with feedback, and have filled several pages with notes. There are always a few fresh surprise issues and ideas new to the team.</p>
<h2 dir="ltr">Conclusion</h2>
<p>I find &#8220;The Voices in Your Head&#8221; protocol allows a facilitator to get a lot of focused feedback on an interaction flow in an efficient manner, balancing task focus and some objectivity (the poor user at the front), whilst giving everyone a chance to speak and have some fun in the process!</p>
<p>Let me know how it goes if you try it. And if you want to see it in action, swing by the next <a href="http://www.meetup.com/sfbayux/">UX Eye for the Developer Guy Meetup</a> in the SF Bay Area.</p>
<p><span style="color: #000000;"><strong><a href="http://richardboardman.com/wp-content/uploads/2012/01/viyh.005.png"><img class="aligncenter size-full wp-image-102" title="viyh.005" src="http://richardboardman.com/wp-content/uploads/2012/01/viyh.005.png" alt="" width="1024" height="768" /></a></strong>Thanks to Braden Kowitz for help with the smiley graphics!</span></p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Frichardboardman.com%2F2012%2F01%2Fvoiceinyourhead%2F&amp;title=The%20Voices%20in%20Your%20Head%3A%20Crowdsourced%20Live%20Usability" id="wpa2a_8"><img src="http://richardboardman.com/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://richardboardman.com/2012/01/voiceinyourhead/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>100 Days of Tech: Day 3 &#8211; Another nail in the coffin of Django</title>
		<link>http://richardboardman.com/2011/07/day-3-another-nail-in-the-coffin-of-django/</link>
		<comments>http://richardboardman.com/2011/07/day-3-another-nail-in-the-coffin-of-django/#comments</comments>
		<pubDate>Wed, 27 Jul 2011 20:21:38 +0000</pubDate>
		<dc:creator>rick</dc:creator>
				<category><![CDATA[100 days of tech]]></category>

		<guid isPermaLink="false">http://richardboardman.com/?p=88</guid>
		<description><![CDATA[Django is getting me down. I want to love it. You see, I love python but its so hard to do some seemingly trivial stuff: Getting my AJAX POSTS past Django&#8217;s inbuilt CSRF filtering still isn&#8217;t working (see my previous &#8230; <a href="http://richardboardman.com/2011/07/day-3-another-nail-in-the-coffin-of-django/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Frichardboardman.com%2F2011%2F07%2Fday-3-another-nail-in-the-coffin-of-django%2F&amp;title=100%20Days%20of%20Tech%3A%20Day%203%20%E2%80%93%20Another%20nail%20in%20the%20coffin%20of%20Django" id="wpa2a_10"><img src="http://richardboardman.com/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share"/></a></p><p>Django is getting me down. I want to love it. You see, I love python but its so hard to do some seemingly trivial stuff:</p>
<ul>
<li>Getting my AJAX POSTS past Django&#8217;s inbuilt CSRF filtering still isn&#8217;t working (see my previous post). My suspicion is some interaction between Django, Passenger, Dreamhost but I don&#8217;t know for sure. PHP just works. Does this mean PHP is inherently less secure? Answers on a postcard please.</li>
<li>After far too long faffing, my pal Jeff gave me the sage (and retrospectively obvious) advice to try it all on a local dev server, to bypass all the weird hosting interactions. This should be easy right? Heh. After even more time faffing, it turns out that static file serving for CSS, JS etc. doesn&#8217;t work out of the box with Django&#8217;s  built-in dev &#8220;runserver&#8221;. It turns out <a href="http://twigstechtips.blogspot.com/2009/08/django-how-to-serve-media-files-css.html">you need to jump through a bunch of hoops to get it working</a>! WTF?</li>
</ul>
<p><span class="Apple-style-span" style="font-size: 16px; color: #444444; font-family: Georgia, 'Bitstream Charter', serif; line-height: 24px;">I&#8217;m starting to get a bad feeling about Django &#8230; I&#8217;m going to take a peek at web2py and also considering a shift to Rails.</span></p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Frichardboardman.com%2F2011%2F07%2Fday-3-another-nail-in-the-coffin-of-django%2F&amp;title=100%20Days%20of%20Tech%3A%20Day%203%20%E2%80%93%20Another%20nail%20in%20the%20coffin%20of%20Django" id="wpa2a_12"><img src="http://richardboardman.com/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://richardboardman.com/2011/07/day-3-another-nail-in-the-coffin-of-django/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>100 days of Tech: Day 2 &#8211; AJAX post to Django</title>
		<link>http://richardboardman.com/2011/07/100-days-of-tech-day-2-ajax-post-to-django/</link>
		<comments>http://richardboardman.com/2011/07/100-days-of-tech-day-2-ajax-post-to-django/#comments</comments>
		<pubDate>Wed, 20 Jul 2011 19:26:10 +0000</pubDate>
		<dc:creator>rick</dc:creator>
				<category><![CDATA[100 days of tech]]></category>
		<category><![CDATA[Internet Technology]]></category>

		<guid isPermaLink="false">http://richardboardman.com/?p=86</guid>
		<description><![CDATA[Ah the joys of coding &#8211; hitting your head against something which appears so easy but is actually quite fiddly. All the more painful after having some fun with the Google maps Javascript tutorial and feeling Javascript was quite easy. So what &#8230; <a href="http://richardboardman.com/2011/07/100-days-of-tech-day-2-ajax-post-to-django/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Frichardboardman.com%2F2011%2F07%2F100-days-of-tech-day-2-ajax-post-to-django%2F&amp;title=100%20days%20of%20Tech%3A%20Day%202%20%E2%80%93%20AJAX%20post%20to%20Django" id="wpa2a_14"><img src="http://richardboardman.com/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share"/></a></p><p>Ah the joys of coding &#8211; hitting your head against something which appears so easy but is actually quite fiddly. All the more painful after having some <a href="http://unburnout.com/js/gmaps/">fun</a> with the <a href="http://code.google.com/apis/maps/documentation/javascript/tutorial.html">Google maps Javascript tutorial</a> and feeling Javascript was quite easy.</p>
<p>So what was the something? Making an AJAX POST from some Javascript to a Django service. I was working merrily along following Daniel Stocks&#8217; very readable <a href="http://webcloud.se/log/AJAX-in-Django-with-jQuery/">&#8220;AJAX in Django with JQuery&#8221; tutorial</a>. My mistake: skipping over his note about CSRF protection.</p>
<p>The code was super simple:</p>
<p>In Javsacript, on a link click, make a call using the ajax post JQuery convenience function, with a callback to display the returned message on the webpage:</p>
<pre><span class="Apple-style-span" style="color: #222222; font-family: 'Courier 10 Pitch', Courier, monospace; font-size: 15px; line-height: 21px; white-space: pre;"> $("#doajaxgetcall").click(function() {
 $.post("http://www.django.unburnout.com/xhr_test/",
 function(data) {
</span>        $("#ajaxtest").append(data);
    });
 });</pre>
<p>On the server, check HTTP request and send back a message:</p>
<pre>def xhr_test(request):
    if request.is_ajax():
      if request.method == 'GET':
        message = "This is an XHR GET request"
      elif request.method == 'POST':
        message = "This is a XHR POST request"
      return HttpResponse(message)</pre>
<p>The result? &lt;Nothing&gt; on the click, a 500 in the JS console, a 500 in the server log, and an arcane error in the Passenger logs</p>
<pre>[error] [client 24.4.69.35] ModSecurity:
Output filter: Failed to read bucket (rc 104):
Connection reset by peer</pre>
<p>Fix as per the Django project docs on <a href="https://docs.djangoproject.com/en/dev/ref/contrib/csrf/">CSRF</a> (thanks Daniel &#8211; I&#8217;ll read properly next time). You need to manually catch AJAX POSTs and make sure a HTTP header is set to the value of the server-supplied CSRF token. Lots of other people have been reporting this issue &#8230; Django need to improve their documentation me feels.</p>
<p>Code to insert in your Javscript (explanatory comments mine, original docs <a href="https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#ajax">here</a>):</p>
<pre>    // intercept AJAX messages
    $(document).ajaxSend(function(event, xhr, settings) {

      ...

      // Main: if message is not using a safe method (e.g. GET)
      // but is from the same origin:
      // set request header to be CSRF cookie value
      if (!safeMethod(settings.type) &amp;&amp; sameOrigin(settings.url)) {
	        xhr.setRequestHeader("X-CSRFToken",
                getCookie('csrftoken'));
      }

    });</pre>
<p>Oh, and another morale of working with Django. Allegedly you don&#8217;t need to restart the server, each time you edit some code. But running on Passenger on Dreamhost you do (sometimes).</p>
<pre>touch $PASSENGER_ROOT/tmp/restart.txt</pre>
<p>&nbsp;</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Frichardboardman.com%2F2011%2F07%2F100-days-of-tech-day-2-ajax-post-to-django%2F&amp;title=100%20days%20of%20Tech%3A%20Day%202%20%E2%80%93%20AJAX%20post%20to%20Django" id="wpa2a_16"><img src="http://richardboardman.com/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://richardboardman.com/2011/07/100-days-of-tech-day-2-ajax-post-to-django/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>100 days of tech Day 1: Android dev tools</title>
		<link>http://richardboardman.com/2011/07/100-days-of-tech-day-1-android-dev-tools/</link>
		<comments>http://richardboardman.com/2011/07/100-days-of-tech-day-1-android-dev-tools/#comments</comments>
		<pubDate>Tue, 12 Jul 2011 00:25:13 +0000</pubDate>
		<dc:creator>rick</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://richardboardman.com/?p=84</guid>
		<description><![CDATA[Day 1: finished Peepcode&#8217;s Javascript+AJAX tutorial. Good stuff. Always wondered what JSON stood for. JavaScript Object Notation &#8230; a human-readable data format for associative arrays. Nice. Then, after some battling, a victory. I finally got my friend Tim&#8217;s android app prototype &#8230; <a href="http://richardboardman.com/2011/07/100-days-of-tech-day-1-android-dev-tools/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Frichardboardman.com%2F2011%2F07%2F100-days-of-tech-day-1-android-dev-tools%2F&amp;title=100%20days%20of%20tech%20Day%201%3A%20Android%20dev%20tools" id="wpa2a_18"><img src="http://richardboardman.com/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share"/></a></p><p>Day 1: finished <a href="http://peepcode.com/products/jquery-ajax">Peepcode&#8217;s Javascript+AJAX tutorial</a>. Good stuff. Always wondered what JSON stood for. <strong>JavaScript Object Notation </strong>&#8230; a human-readable data format for associative arrays. Nice.</p>
<p>Then, after some battling, a victory. I finally got my friend Tim&#8217;s android app prototype working using the MacOS Android cmd-line dev tools. This was surprisingly non-trivial since the Google docs <a href="http://developer.android.com/resources/tutorials/hello-world.html">are</a> <a href="http://developer.android.com/guide/developing/index.html">somewhat</a> <a href="http://developer.android.com/sdk/installing.html">scattered</a>. Plus I had skipped through them. In retrospect, the eclipse plugin may have been easier, but the ol&#8217; UNIX shell scripter in me wanted to &#8220;install from first principles&#8221; (-;</p>
<p>Anyway, here are my steps:</p>
<ol>
<li>Install the <a href="http://developer.android.com/sdk/installing.html">SDK</a></li>
<li>Set your shell&#8217;s PATH variable to include the location to your <em>$SDK_ROOT/tools folder</em>.</li>
<li>Important yet easy to miss (as I did): The installed SDK does not include the platform images for the various versions of the Android OS. You need to install these manually using the management app which comes with the SDK: Run the <strong>android</strong> app from the cmd-line, select &#8220;Available packages&#8221;, and download the SDK Platforms you need. I went with 2.3.3 for my friend&#8217;s app, I also got 1.6 which my prehistoric (3yo) original Google phone is limited to.</li>
<li>From the command line, check the packages are available - <strong>android list targets.</strong> Keep this list handy.</li>
<li>Then create Android virtual devices (AVDs) for each OS level you want to run in the emulator: <strong>android create avd -n testavd -t 1</strong> [the -t flag corresponds to the ID listed by the previous 'list targets' command]. You can also create or view these devices in the &#8220;virtual devices&#8221; tab of the android GUI.</li>
<li>Run the emulator! At last! <strong>emulator -avd testavd</strong> [I CTRL-Z into the background, go and have a cup of tea - its slow]</li>
<li>When it finally loads, the emulator should look like an Android phone. Navigate to the Phone Settings, and make sure the following option is enabled: <strong>Settings &gt; Applications &gt; Unknown sources (enabled)</strong></li>
<li>cd to your <em>$SDK_ROOT</em></li>
<li>Load your app: <strong>platform-tools/adb install ./SECRET-ANDROID-APP.apk</strong></li>
<li>Bingo! If the app does not appear, try restarting the phone.</li>
</ol>
<p><span class="Apple-style-span" style="font-size: 16px; color: #444444; font-family: Georgia, 'Bitstream Charter', serif; line-height: 24px;">Next: django vs. Rails</span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Frichardboardman.com%2F2011%2F07%2F100-days-of-tech-day-1-android-dev-tools%2F&amp;title=100%20days%20of%20tech%20Day%201%3A%20Android%20dev%20tools" id="wpa2a_20"><img src="http://richardboardman.com/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://richardboardman.com/2011/07/100-days-of-tech-day-1-android-dev-tools/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>De-rusting Rick: 100 days of Tech</title>
		<link>http://richardboardman.com/2011/07/de-rusting-rick-100-days-of-tech/</link>
		<comments>http://richardboardman.com/2011/07/de-rusting-rick-100-days-of-tech/#comments</comments>
		<pubDate>Wed, 06 Jul 2011 01:24:19 +0000</pubDate>
		<dc:creator>rick</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://richardboardman.com/?p=82</guid>
		<description><![CDATA[The time has come. You see, I used to code. Indeed it used to be my career. Then I got involved in UX, learned the joy of prototyping, and now I don&#8217;t code. Well to be exact &#8211; I&#8217;m rusty. &#8230; <a href="http://richardboardman.com/2011/07/de-rusting-rick-100-days-of-tech/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Frichardboardman.com%2F2011%2F07%2Fde-rusting-rick-100-days-of-tech%2F&amp;title=De-rusting%20Rick%3A%20100%20days%20of%20Tech" id="wpa2a_22"><img src="http://richardboardman.com/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share"/></a></p><p>The time has come. You see, I used to code. Indeed it used to be my career. Then I got involved in UX, learned the joy of prototyping, and now I don&#8217;t code. Well to be exact &#8211; I&#8217;m rusty. Oh, I can still hack scripts in python (mostly log analysis and text processing), and websites in HTML/CSS with a bit of JQuery.  I can quickly grasp coding/technical concepts while chatting with real engineers. And I&#8217;ve done a fair few Rails / Python / PHP tutorials. Still, every time I want to build something, it feels like I&#8217;m starting from scratch.  Its time to get my hands dirty again. And keep them dirty.</p>
<p>I&#8217;m setting myself a challenge. In 100 days, get up to speed with the state of the art in web technology. I don&#8217;t expect to be a full-time coder again but I want to be able to quickly engineer basic interactive web/mobile prototypes.</p>
<p>Why? Why not just build click-through mocks? Well …</p>
<ol>
<li>Engineering is fun and I miss it (even the debugging, sometimes …)</li>
<li>I don&#8217;t want to be one of the people with a CS degree who don&#8217;t code anymore. There&#8217;s lots of us out there!</li>
<li>Who knows I might join or start a startup sometime soon, and more hands-on coding skills would be handy</li>
</ol>
<p>Its not going to be a consecutive 100 days. However, I&#8217;ll try and do at least 2 days a week. Each &#8220;day&#8221; will be accompanied with a brief blog post outlining what I did and why, and maybe a helpful hint or tip for people doing the same. My stretch goal: add to stackoverflow or similar discussion websites as and when I manage something and can contribute to online &#8220;solutions&#8221; (many of which are lacking).</p>
<p>Any tips/hints to tutorials/languages/frameworks appreciated! Else maybe I&#8217;m past it. What do you think?</p>
<p>Here&#8217;s my current hit list, and current skill level. I acknowledge that its quite varied. First I want to try a range of stuff out. Then towards the end I&#8217;ll focus so I&#8217;ll have a basic toolkit for prototyping. Thats the plan.</p>
<p><strong>Languages</strong></p>
<p>I intend to focus on python as my foundation. However I&#8217;m open to learning a new language if I need to. That might be Ruby or Javascript &#8211; we&#8217;ll see. I&#8217;ve dabbled in both but never achieved what I&#8217;d call &#8220;conversational competence&#8221;.</p>
<p><strong>Web application framework</strong></p>
<p>I want to get up to speed with an MVC web framework. I&#8217;ve dabbled in 3. I&#8217;d like to say I can develop in one. Here&#8217;s the shortlist:</p>
<ul>
<li>Ruby on Rails (I did the excellent <a href="http://ruby.railstutorial.org/">tutorial</a> by Michael Hartl and produced a nice little twitter clone. However, I got bogged down deploying it to heroku, and Rails is so arcane! Expect a post or two!)</li>
<li>Django/Python web framework (recently did tutorials, but got stuck with some fiddly stuff like handling AJAX POST calls within the CSRF filter framework. Expect a post on that too)</li>
<li>PHP: Hello World and basic database calls</li>
<li>Google App Engine (python), just a bit of hacking with my pal Lindsey.</li>
</ul>
<p><strong>Web standards</strong></p>
<p>Any web work requires a reasonable understanding of HTML, CSS. Again, I can hack. The &#8220;code&#8221; I produce is as ugly as hell. I can do better. Also I keep forgetting my CSS selector syntax. It&#8217;d be nice to remember stuff like that in my head.</p>
<p><strong> Admin/Infrastructure/Deployment</strong></p>
<p>Along with the above languages, frameworks, and standards &#8211; any self-respecting developer has to know his database admin, source code control, and how to deploy. Django I&#8217;ve got running on Dreamhost as a first baby step.</p>
<p><strong>Basic Mobile App development</strong></p>
<p>Android or iOS? I want to play with both. My first post is actually going to be about getting the emulator working on MacOSX (which is not as trivial as you might expect).</p>
<p><span style="color: #000000;"><strong><br />
</strong></span></p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Frichardboardman.com%2F2011%2F07%2Fde-rusting-rick-100-days-of-tech%2F&amp;title=De-rusting%20Rick%3A%20100%20days%20of%20Tech" id="wpa2a_24"><img src="http://richardboardman.com/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://richardboardman.com/2011/07/de-rusting-rick-100-days-of-tech/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rick Boardman the Half Ironman</title>
		<link>http://richardboardman.com/2011/05/rick-boardman-the-half-ironman/</link>
		<comments>http://richardboardman.com/2011/05/rick-boardman-the-half-ironman/#comments</comments>
		<pubDate>Tue, 24 May 2011 00:19:18 +0000</pubDate>
		<dc:creator>rick</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://richardboardman.com/?p=73</guid>
		<description><![CDATA[I just completed my first triathlon, the Wildflower Half Ironman and wanted to share my experiences. Plus I might try to talk you into doing something similar for Team in Training. A Great Cause Firstly, I have to say a &#8230; <a href="http://richardboardman.com/2011/05/rick-boardman-the-half-ironman/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Frichardboardman.com%2F2011%2F05%2Frick-boardman-the-half-ironman%2F&amp;title=Rick%20Boardman%20the%20Half%20Ironman" id="wpa2a_26"><img src="http://richardboardman.com/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share"/></a></p><p>I just completed my first triathlon, the <a href="http://www.tricalifornia.com/index.cfm/WildFlower2011-main.htm">Wildflower Half Ironman</a> and wanted to share my experiences. Plus I might try to talk you into doing something similar for <a href="http://www.teamintraining.org/sf/">Team in Training</a>.</p>
<div id="attachment_77" class="wp-caption aligncenter" style="width: 610px"><a href="http://richardboardman.com/wp-content/uploads/2011/05/227098_10150287769564167_584984166_9444186_1791336_n.jpg"><img class="size-full wp-image-77" title="Ready to go" src="http://richardboardman.com/wp-content/uploads/2011/05/227098_10150287769564167_584984166_9444186_1791336_n.jpg" alt="" width="600" height="400" /></a><p class="wp-caption-text">Ready to go</p></div>
<h2>A Great Cause</h2>
<p>Firstly, I have to say a big thanks to all my <a href="http://pages.teamintraining.org/sf/wildtri11/rboardman">supporters</a>. At the time of writing (May 2011), I&#8217;ve raised $4425 for the Lymphoma and Leukemia Foundation. Thankyou! &#8211; and if you haven&#8217;t donated, its <a href="http://pages.teamintraining.org/sf/wildtri11/rboardman">never too late</a> (-; My inspiration for running was my dear friend Chris Hubbard (known to his friends as &#8220;Cobol Chris&#8221;) who sadly passed away from lymphoma in 2004 aged only 36. </p>
<p>I ran with <a href="http://www.teamintraining.org/sf/">Team in Training&#8217;s San Francisco and Marin Spring Triathlon team</a> &#8211; 80 or so people from every walk of life who earned an incredible $300,000. Nice one, guys! In return for raising the readies, <a href="http://www.teamintraining.org/sf/">Team in Training</a> looked after us with a great training programme over about 12 weeks, including swim coaching, sports nutrition (what to munch), sports psychology (what to think) and even triathlon gear (what to wear). I&#8217;ve run, biked and swum all my life and dare I say I considered myself &#8220;vaguely competent&#8221; in all three. How little I knew. In all three areas, I really benefitted from the coaching &#8211; completely overhauling my freestyle stroke, cycling nutrition, and running cadence. As a team we were further inspired by a number of honoree teammates who&#8217;s own life&#8217;s have been touched by cancer.</p>
<p>The entire Spring, from the first training sessions, through many a bar night, scavenger hunt, beer pong tournament, our first &#8220;BRICK&#8221; transitions, the practice triathlon, and Wildflower itself was an amazing experience, and one I&#8217;d recommend it to anyone. TNT trains for 3 distances, Sprint, Olympic and Half Ironman &#8211; so whatever your ability, there&#8217;s a level for you.</p>
<p>Anyway, on to the course.</p>
<h2>The Course</h2>
<h2><span style="font-size: 16px; color: #444444; line-height: 24px;">Wildflower happens every May at <a href="http://maps.google.com/maps?hl=en&amp;q=lake+san+antonio+map&amp;ie=UTF8&amp;hq=&amp;hnear=Lake+San+Antonio&amp;gl=us&amp;t=h&amp;z=11">Lake San Antonio in Central California</a>. If that sounds hot, you are right. If you throw in some hills and head wind, its even more fun. </span><span style="font-size: 16px; color: #444444; line-height: 24px;">I did the Half Ironman distance:</span></h2>
<ul>
<li>A 1.2 mile swim in Lake San Antonio</li>
<li>A 56 mile bike around the lake through the beautiful, albeit hilly, Coastal Range</li>
<li>A 13 mile half marathon back at the lake, including the renowed Pit of Despair (which luckily was where our supporters did wonders)</li>
</ul>
<p><a href="http://richardboardman.com/wp-content/uploads/2011/05/Wildflower-Long-Course-Map.jpg"><img class="aligncenter size-full wp-image-79" title="Wildflower Long Course Map" src="http://richardboardman.com/wp-content/uploads/2011/05/Wildflower-Long-Course-Map.jpg" alt="" width="715" height="928" /></a></p>
<h2><!-- Start MMF Embed Tool -->The Start and the Swim</h2>
<h2><a href="http://richardboardman.com/wp-content/uploads/2011/05/224622_10150286575074167_584984166_9432596_5644039_n.jpg"><img class="aligncenter size-full wp-image-76" title="Jeromy, myself and support team - Jamaica and Frances" src="http://richardboardman.com/wp-content/uploads/2011/05/224622_10150286575074167_584984166_9432596_5644039_n.jpg" alt="" width="720" height="540" /></a></h2>
<p>I have to say that I felt nervous about the start &#8211; we&#8217;ve all seen videos of triathlon starts with competitors pushing and shoving in a maelstrom of wet suits, keen to get a start on their fellows. I&#8217;m pleased to report that this was a lot more civilised than I expected. Every competitor wears an ankle tag which allows their time to be recorded at key stages through the race. This means that if you aren&#8217;t in the mood to push and shove, you can hold back for 30 seconds and allow the excitable rugby types to get going without losing time or an eye.</p>
<p>The start was also split by age &#8211; I was in the Men&#8217;s 35-39 age group. Here&#8217;s a video of the Woman&#8217;s TNT Olympic traithlon wave the next day to show you what a triathlon start is like, a pushy start, followed by the more laid back.</p>
<p><object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/Nn38p2b2Yz0?version=3"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/Nn38p2b2Yz0?version=3" type="application/x-shockwave-flash" width="640" height="385" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>The swim itself was definitely the toughest part of the race for me, swimming is not my core strength. Our open water training was in <a href="http://www.google.com/search?hl=en&#038;q=aquatic+park+sf&#038;bav=on.2,or.r_gc.r_pw.&#038;um=1&#038;ie=UTF-8&#038;tbm=isch&#038;source=og&#038;sa=N&#038;tab=wi&#038;biw=1267&#038;bih=1035">Aquatic Park in San Francisco</a> so the lake was a lot warmer than we were used to, although wetsuits were still required. The race had its own challenges including a strong headwind for the outbound leg causing a significant chop, and quite bit of forest debris in the water. I remember at one point throwing a branch out of my way! Total time: 43 minutes, not bad.</p>
<h2>The Bike Ride</h2>
<div id="attachment_78" class="wp-caption aligncenter" style="width: 650px"><a href="http://richardboardman.com/wp-content/uploads/2011/05/20110430-0251-img_1025-small.jpg"><img class="size-large wp-image-78" title="Working on my tan on the bike" src="http://richardboardman.com/wp-content/uploads/2011/05/20110430-0251-img_1025-small-1024x682.jpg" alt="" width="640" height="426" /></a><p class="wp-caption-text">Working on my tan on the bike</p></div>
<p>After a quick-ish wetsuit-off / suncream-on transition, I was off on the 56 mile bike ride, heading clockwise around Lake San Antonio. The key for me here was not overdoing it so I would have energy left for the run, drinking plenty so as not to get dehydrated, and enjoying the view. Did I mention the view? The scenery is spectacular across the Coastal Range, particularly on the descent from the Mile 40 Nasty Grade. The bike ride actually passed fairly quickly, it certainly didn&#8217;t seem like almost 4 hours. Unlike other long rides, I didn&#8217;t break for more than 2 minutes to reapply suncream so the training clearly made a difference. Thanks TNT. Total time: 3 hours 56 minutes.</p>
<h2>The Run</h2>
<p>Most people dislike this stage. For me, it was actually a relief to start running since I was getting a tight back on the bike (I strained my back earlier in the week). By now it was super hot, so I continued to drink plenty, although I&#8217;m not sure I can touch gatorade ever again (they were the race sponsor so had lots of freebies). Since running was my strongest of the three stages, it was nice to overtake some of the older athletes who had overtaken me on the bike, as well as a few of my younger team mates who had started earlier. Total time: a very respectable 2 hours 6 minutes.</p>
<div id="attachment_80" class="wp-caption aligncenter" style="width: 650px"><a href="http://richardboardman.com/wp-content/uploads/2011/05/TNT-rick-running.jpg"><img class="size-large wp-image-80" title="Halfway point high fives" src="http://richardboardman.com/wp-content/uploads/2011/05/TNT-rick-running-1024x678.jpg" alt="" width="640" height="423" /></a><p class="wp-caption-text">Halfway point high fives</p></div>
<h2>The Finish!</h2>
<p>This was quite the relief after almost 7 hours of exertion. Here&#8217;s a video of me finishing (approx 3 minutes and 30 seconds in, wearing a blue cap!). It was an incredible feeling, especially with the roar of the crowd including many of my team mates.</p>
<p><object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/i6g85Rm0THA?version=3"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/i6g85Rm0THA?version=3" type="application/x-shockwave-flash" width="640" height="385" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>Total times:</p>
<ul>
<li>Swim: 43 minutes</li>
<li><em>Transition 1 (wetsuit off, suncream, bike helmet and shoes on): 6 minutes </em></li>
<li><em>Bike: 3 hours and 56 minutes (including helping out a team mate with a puncture and a suncream break)</em></li>
<li><em>Transition 2 (running shoes on, cheese sandwich, energy gel and yes, more suncream): 7 minutes (getting slower!)</em></li>
<li>Run: 2 hours and 6 minutes (a respectable time, in the top 40%)</li>
<li><strong>Total: 6 hours 58 minutes</strong></li>
</ul>
<h2>What are you waiting for?</h2>
<p>Go on you know you want to! <a href="http://www.teamintraining.org/sf/">Sign up for Team in Training</a>. If you don&#8217;t fancy the triathlon, they also do marathons, hikes and many other events. Give me a shout if you want to chat about the particulars.</p>
<p>&nbsp;</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Frichardboardman.com%2F2011%2F05%2Frick-boardman-the-half-ironman%2F&amp;title=Rick%20Boardman%20the%20Half%20Ironman" id="wpa2a_28"><img src="http://richardboardman.com/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://richardboardman.com/2011/05/rick-boardman-the-half-ironman/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The RTFM of Usability</title>
		<link>http://richardboardman.com/2010/09/the-rtfm-of-usability/</link>
		<comments>http://richardboardman.com/2010/09/the-rtfm-of-usability/#comments</comments>
		<pubDate>Wed, 29 Sep 2010 22:51:41 +0000</pubDate>
		<dc:creator>rick</dc:creator>
				<category><![CDATA[startups]]></category>
		<category><![CDATA[usability]]></category>
		<category><![CDATA[User Experience]]></category>

		<guid isPermaLink="false">http://richardboardman.com/?p=68</guid>
		<description><![CDATA[Having been an engineer in a previous life, I&#8217;ve been a long advocate of the RTFM response when asked a silly technical problem: RTFM = &#8220;Read the F****** Manual&#8221; Where the third word can be anything starting with F depending &#8230; <a href="http://richardboardman.com/2010/09/the-rtfm-of-usability/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Frichardboardman.com%2F2010%2F09%2Fthe-rtfm-of-usability%2F&amp;title=The%20RTFM%20of%20Usability" id="wpa2a_30"><img src="http://richardboardman.com/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share"/></a></p><p>Having been an engineer in a previous life, I&#8217;ve been a long advocate of the <a href="http://en.wikipedia.org/wiki/RTFM">RTFM</a> response when asked a silly technical problem:</p>
<p><em><strong>RTFM = &#8220;Read the F****** Manual&#8221;</strong></em><strong><br />
</strong></p>
<ul>
<li><em>Where the third word can be anything starting with F depending on your mood, the inquirer, and so on. It could be &#8220;fantastic&#8221;, &#8220;friendly&#8221;, &#8220;frightful&#8221;, you get the idea &#8230;</em></li>
</ul>
<p>Now of course there&#8217;s often good reasons why people don&#8217;t RTFM. Manuals tend to be anything but fantastic, indeed they are often the point of last resort, and its all too easy just to bug the local techie. Hence the F words. Some people try and make manuals easier to use, but its often the better idea to focus on making the product as easy to use as possible. In the ideal, no manual will be required. Which brings us on to User Experience &#8230;</p>
<p>Working more recently in the field of UX, I&#8217;ve missed having an RTFM. How should UX professionals respond to engineers or product teams when asked a silly question about visual layout, product requirements, or the usability of a feature? The answer to such questions inevitably involves some aspect of talking to your users, perhaps doing some research or looking at your metrics, talking to your customer support team, and/or &#8220;getting out of your office&#8221; [<a href="http://steveblank.com/" target="_blank">Steve Blank</a>]. All too often we respond with some polite, constructive suggestion, UX professionals are above all diplomats in dealing with the world.</p>
<p>Now here&#8217;s some additional context: you&#8217;ve just been interrupted, you are probably trying to get some work done, and you might want to &#8220;wind up&#8221; the enquirer &#8220;a wee bit&#8221; too (<a href="http://www.effingpot.com/slang.shtml">British slang alert</a>). I wanted an acronym to rival the catchiness, the supreme pithiness, the playful dismissiveness of RTFM. Hence I give you TTYFU.</p>
<p><span style="font-family: Georgia, 'Bitstream Charter', serif; line-height: 24px; font-size: 16px;"><strong>TTYFU = &#8220;</strong><strong>Talk to Your F****** Users&#8221;</strong></span></p>
<ul>
<li><em>The<em> the third word can be anything starting with F depending on your mood, the inquirer, and so on. Again it could be anything from &#8220;favourite&#8221; to &#8220;fearsome&#8221; or &#8220;frackin&#8217;&#8221;. The joy of this is you can tune it to the moment.</em></em></li>
</ul>
<p>Now TTYFU can involve a lot of time and effort, especially for a small boot-strapped startup with no time, no money, and no users. Perhaps they are also a bit shy? However it doesn&#8217;t have to be expensive and time-consuming. Here&#8217;s a talk that I recently gave at <a href="http://www.meetup.com/sfbayux/calendar/list/">UX Eye for the Developer Guy</a>, and <a href="http://angelpad.org/">Angelpad</a>, which introduces TTYFU as an RTFM for UX and Usability, and sketches out a &#8220;guerilla research&#8221; technique for doing some TTYFUing without involving any users. Sound a bit crazy? Read on. You might recognize yourself as one of the smiley faces (<a href="http://www.slideshare.net/rick/the-rtfm-of-usability-5270371" target="_blank">direct link to preso</a>):</p>
<iframe src="http://www.slideshare.net/slideshow/embed_code/5270371" width="640" height="519" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe><br/><br/>
<p>Give TTYFU a go! Let me know what response you get.</p>
<p>Also, what does TTYFU equate to in your native language?</p>
<p>Acknowledgement: Thanks to @<a href="http://twitter.com/davemcclure">DaveMcClure</a> (who else?) for encouraging the placement of an F in TTYFU. Ever the UX &#8220;diplomat&#8221;, I was initially considering TTYU, but in my user testing to date the F makes all the difference!</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Frichardboardman.com%2F2010%2F09%2Fthe-rtfm-of-usability%2F&amp;title=The%20RTFM%20of%20Usability" id="wpa2a_32"><img src="http://richardboardman.com/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://richardboardman.com/2010/09/the-rtfm-of-usability/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apple&#8217;s Ping Pongs! A usability review</title>
		<link>http://richardboardman.com/2010/09/apples-ping-pongs-a-usability-review/</link>
		<comments>http://richardboardman.com/2010/09/apples-ping-pongs-a-usability-review/#comments</comments>
		<pubDate>Wed, 08 Sep 2010 02:07:31 +0000</pubDate>
		<dc:creator>rick</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://richardboardman.com/?p=65</guid>
		<description><![CDATA[I’ve been called an Apple fanboy in the past, and its true, I am. In particular, I respect and enjoy Apple’s fantastic design and the way their products tend to provide a great user experience for their customers. However, myself &#8230; <a href="http://richardboardman.com/2010/09/apples-ping-pongs-a-usability-review/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Frichardboardman.com%2F2010%2F09%2Fapples-ping-pongs-a-usability-review%2F&amp;title=Apple%E2%80%99s%20Ping%20Pongs%21%20A%20usability%20review" id="wpa2a_34"><img src="http://richardboardman.com/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share"/></a></p><p>I’ve  been called an <a href="http://www.urbandictionary.com/define.php?term=apple-fanboy">Apple fanboy</a> in the past, and its true, I am. In particular, I respect and enjoy  Apple’s fantastic design and the way their products  tend to provide a  great user experience for their customers. However,  myself and many  others have been very disappointed with <a href="http://www.apple.com/itunes/ping/">Apple Ping</a>. Complaints have included <a href="http://www.businessinsider.com/apple-ping-problems-2010-9">limited artist coverage</a>, <a href="http://www.lukew.com/ff/entry.asp?1185">lack of  social features</a>, <a href="http://www.theregister.co.uk/2010/09/03/ping_apple/">poor integration into existing social networks</a>, and <a href="http://createdigitalmusic.com/2010/09/06/apples-ping-is-dead/">the  lack of a web front-end</a>.</p>
<p>As  well as these product-level complaints, I was surprised to see  that  Apple Ping fails on a number of fundamental areas of usability. Is  this  really the same Apple that brought us MacOS and the iPhone?</p>
<p>In  this post, I’m going to go step by step through an important part of Ping&#8217;s Social UI, the user flow of  responding to a <em>“I want to follow you”</em> request. I will highlight  some usability issues, and suggest quick fixes. I&#8217;ve <strong>emboldened</strong> the most severe issues.</p>
<p>The fact  that they weren’t caught in advance suggests to me that  there was a lack  of user testing and QA. Apple will be okay of course,   I bet they are working on this right now. However a startup making   similar mistakes would simply fail. Hence, this write-up so that others   can learn from the UX mess that is Ping.</p>
<p>Onto the <em>“I want to follow you”</em> flow, let&#8217;s start with the initial email notification.</p>
<h2>Step 1: Email Message</h2>
<p>Although  Apple Ping doesn’t provide a web front-end, it does forward  follow  requests to your email account (see screenshot below).</p>
<p><a href="http://richardboardman.com/wp-content/uploads/2010/09/1-emailinvite-cutdown.jpg"><img title="1-emailinvite-cutdown" src="http://richardboardman.com/wp-content/uploads/2010/09/1-emailinvite-cutdown.jpg" alt="" width="771" height="554" /></a></p>
<p>Critique and suggestions:</p>
<ul>
<li>The visual design here is Apple’s signature grey. This combined with  the    minimal content means that the email comes across as bland and     uninviting. I’d like to see at least a splash of colour, possibly a     logo, along with some minimal background on what “following” entails.     What is the key social feature which accepting this request enables?     Sharing playlists or recommendations? Spell it out to help educate new     users.</li>
<li><strong>I’d encourage Apple to include a picture of the requester to add  some of the  context which is typical in facebook and twitter invites.  Its almost as  if Apple is trying to suppress the “social” aspect of  Ping (more on  this later).</strong></li>
<li>The  main call to action is an uber-technical WebObjects link. A  human-readable call to action link (e.g. “<a href="http://">confirm</a>”) is much easier to  scan. The full URL can be included as an alternative down below in the  small print.</li>
</ul>
<h2>Step 2: Launch Application Popup</h2>
<p>Since  the Apple Ping UI is in iTunes, the user must launch this  separate  application to view the request. The following screenshot  shows the dialog box which  appears on MacOS when you click the  WebObjects link.</p>
<p><a href="http://richardboardman.com/wp-content/uploads/2010/09/2-webbrowserproceed-cutdown.jpg"><img title="2-webbrowserproceed-cutdown" src="http://richardboardman.com/wp-content/uploads/2010/09/2-webbrowserproceed-cutdown.jpg" alt="" width="785" height="529" /></a><br />
Critique and suggestions:</p>
<ul>
<li><strong>An important aspect of user experience is satisfaction and  delight. Like the email, this web interstitial page is yawn-inducing.  How about an Apple Ping  logo? or some supportive text highlighting  exactly what is happening? </strong><strong>Why are we going  to the iTunes store? Are we buying something? At a minimum this web page should mention Ping.</strong></li>
<li>Generally  such inter-app navigation (and dealing with corresponding  security  issues via dialog boxes like this) entails an awful, clunky  user experience. It takes me back to  Windows circa 1993. Fortunately,  if the user clicks “Remember my choice  for itms links”, they do not see  this dialog again. To make this more  likely to happen, Apple could  draw more attention to the checkbox area by  rewording it in terms of  the use case at hand, “For future Apple Ping links &#8230;”. I also wonder  if they could use a more meaningful  “.itunes” extension instead of the  abstract “.itms” (iTunes Music Store).</li>
<li>The dialog box default choice (iTunes) is highlighted in grey which is easy to miss. I’d like to see a clearer highlight.</li>
</ul>
<h2>Step 3: Sign in to access Ping</h2>
<p>Each  time I respond to one of these follower requests I need to sign  in  again to iTunes. Albeit annoying, this is a sensible precaution  since your Account may include  credit card information. There’s one  great design element here, our first iTunes/Ping branding!<br />
<a href="http://richardboardman.com/wp-content/uploads/2010/09/3-itunes-signin-cutdown.jpg"><img title="3-itunes-signin-cutdown" src="http://richardboardman.com/wp-content/uploads/2010/09/3-itunes-signin-cutdown.jpg" alt="" width="873" height="415" /></a><br />
Critique and suggestions:</p>
<ul>
<li>Repeat  (albeit secure) logins are annoying to the user. I wonder if  Apple could  cache “Ping” logins (a la a website cookie) and only force  a  complete sign-in if the user is trying to spend some money in  iTunes?</li>
<li>Apple  Ping doesn’t seem to have its own logo, the blue icon is  generic to  iTunes. A specific Ping logo could be used to provide  consistent  branding from the email through the rest of the flow.</li>
</ul>
<h2>Step 4: Welcome to ping</h2>
<p>Signing in to your Apple Account, takes you to the familiar environs of Apple iTunes.<br />
<a href="http://richardboardman.com/wp-content/uploads/2010/09/4-itunesopen.jpg"><img title="4-itunesopen" src="http://richardboardman.com/wp-content/uploads/2010/09/4-itunesopen-1024x619.jpg" alt="" width="640" height="386" /></a></p>
<p>Critique and suggestions:</p>
<ul>
<li>I’m  going to ignore for now the quality of the recommendations of  &#8220;artists to follow&#8221;. Lets just say that 5 of the 6 don’t appear anywhere  in my  iTunes library and I would rate 3 as being “offensive to my  taste”.  Where is Apple getting these recommendations from?</li>
<li><strong>Back  onto the “Follower request” flow: where is the follow  request? The user  is forced to “hunt and peck” to locate it in the  “PING” panel top  right. </strong><strong>Strong  recommendation: the user should be taken directly to the  functionality to accept or deny the follower request!</strong></li>
</ul>
<h2>Step 5: Follow Requests</h2>
<p>Clicking on the “Follow requests” label takes the user to a “Follow Requests” sub-tab of a Ping People page.<br />
<a href="../wp-content/uploads/2010/09/5-peoplerequest-anonymized-cutdown.jpg"><img title="5-peoplerequest-anonymized-cutdown" src="../wp-content/uploads/2010/09/5-peoplerequest-anonymized-cutdown.jpg" alt="" width="788" height="246" /></a></p>
<p>Critique and suggestions:</p>
<ul>
<li>Focusing on the main task at hand, Apple seem to have done a good job, in that we can confirm or ignore the request.</li>
<li><strong>My  key UX critique on this page concerns how it fits into the  overall  iTunes IA. This page is effectively 4 levels down iTunes -&gt;  Ping  -&gt; People -&gt; Follow requests. </strong><strong>Standard IA practice is  to include  some navigational breadcrumbs. Here they are scattered  around the UI  (e.g. ping is in the top and left-hand navigation, and  the panel itself is  not branded Ping).</strong></li>
<li><strong>Its  also not clear how to navigate from here to the rest of  Ping’s  functionality. Note the right-hand PING panel from Step 4 has   disappeared. I’d like to keep this up for continuity and context.</strong></li>
<li><strong>Furthermore,  look at where “Follow requests” and “People” appear  in Step 4’s “PING”  panel &#8211; as peer items. Apple Ping’s IA family tree  needs some tightening  up.</strong></li>
</ul>
<h2>Step 6: Follow request confirmed</h2>
<p>I’ll stop moaning about IA for a second, and approve the request (-:<br />
<a href="http://richardboardman.com/wp-content/uploads/2010/09/6-confirmed-cutdown-anonymized.jpg"><img title="6-confirmed-cutdown-anonymized" src="http://richardboardman.com/wp-content/uploads/2010/09/6-confirmed-cutdown-anonymized.jpg" alt="" width="807" height="222" /></a><br />
Critique and suggestions:</p>
<ul>
<li>Oh,  Apple! Couldn’t you come up with something a bit more exciting  than  grey italics to reflect the completion of this action? Surely  completing  these 6 steps warrant something a bit more rewarding.</li>
<li><strong>More  seriously, what about follow-up calls to action? What have I  earned  from approving this follower request? Can I browse her Apple  Ping page?</strong></li>
<li><strong>Apple  is missing a key element of “Social” functionality here.  How can I  “follow” Maria back? I was expecting an easy way of doing  this but there  is none. Apple here are taking a Twitter approach,  leaving it to the  “newly followed”, to decide whether to return the  favour and follow  back. In contrast, Facebook friend invites are  bidirectional  relationships &#8211; if I friend someone, they by accepting my  request  implicitly friend me back. Its not clear to me that Apple has  chosen the  right model here, especially for invites between  individuals.</strong></li>
</ul>
<p>Lets move on, assuming I want to follow her back.</p>
<h2>Step 7: I want to follow back</h2>
<p>I click on her name and am taken to her profile page.<br />
<a href="http://richardboardman.com/wp-content/uploads/2010/09/7-profile-needtofollow-cutdown-anonymized2.jpg"><img title="7-profile-needtofollow-cutdown-anonymized" src="http://richardboardman.com/wp-content/uploads/2010/09/7-profile-needtofollow-cutdown-anonymized2-1024x454.jpg" alt="" width="640" height="283" /></a></p>
<p>Critique and suggestions:</p>
<ul>
<li><strong>There  are several issues here. Primarily, there was more  information about  Maria on the “follow confirmation” page than on her  actual profile, e.g.  email address.</strong></li>
<li><strong>Also,  all her profile activity is marked private since I’m not  following her.  This feels broken to me. I’d encourage Apple to  experiment with a  bidirectional follow model, especially between  friends.</strong></li>
</ul>
<h2>Step 8: Confirm request to follow</h2>
<p>I click the “Follow” button, a popup appears.<br />
<a href="http://richardboardman.com/wp-content/uploads/2010/09/8-requesttofollow-cutdown-anonymized.jpg"><br />
</a><a href="http://richardboardman.com/wp-content/uploads/2010/09/8-requesttofollow-cutdown-dialog.jpg"><img title="8-requesttofollow-cutdown-dialog" src="http://richardboardman.com/wp-content/uploads/2010/09/8-requesttofollow-cutdown-dialog.jpg" alt="" width="479" height="188" /></a><br />
Critique and suggestions:</p>
<ul>
<li>The dialog is noting that Maria will be able to view my name, photo  and email address. Minor nitpick: Maria can already see a bunch of this  info since she’s already following me.</li>
<li>More  significant suggestion: throughout all of this following  interaction,  I’m still not sure what following gives you. What  functionality does it  give me? I’d like Apple to spell it out. This is  crucial for all new users of a social network, and not just those  picking out usability do’s and  don’ts.</li>
</ul>
<h2>Step 9: Confirm</h2>
<p>I click the “Request” button on the dialog box.</p>
<p><a href="http://richardboardman.com/wp-content/uploads/2010/09/9-requestsent-cutdown-anonymized.jpg"><img title="9-requestsent-cutdown-anonymized" src="http://richardboardman.com/wp-content/uploads/2010/09/9-requestsent-cutdown-anonymized.jpg" alt="" width="586" height="321" /></a><br />
Critique and suggestions:</p>
<ul>
<li><strong>Although  its good there is some feedback &#8211; “Request sent” &#8211; this  is  another bland grey italic bit of feedback. I’d like some clear  calls to  action as to next steps &#8230; What about  adding some more  friends? </strong><strong>What about adding some bands? </strong><strong>Can I send Maria a message? (she’s following  me after all). What do I do next? This page feels like a dead-end.</strong></li>
</ul>
<p>I decide I want to grow my network.</p>
<h2>Step 10: Click on the People link in the “PING” panel</h2>
<p>In the interests of getting some more followers, I click on People. Uh-oh &#8230; can you spot the issue?<br />
<a href="http://richardboardman.com/wp-content/uploads/2010/09/10-peoplewhofollowme-bug-cutdown-anonymized.jpg"><img title="10-peoplewhofollowme-bug-cutdown-anonymized" src="http://richardboardman.com/wp-content/uploads/2010/09/10-peoplewhofollowme-bug-cutdown-anonymized-1024x592.jpg" alt="" width="640" height="370" /></a></p>
<p>Critique and suggestions:</p>
<ul>
<li><strong>The  friend I’ve just sent a follow request to has a Follow  button next to  her! Instead, I would have expected a “Follow request  sent” status. Did my  request really get sent? It turned out that it had  been, I clicked the “Follow” button to confirm, which refreshed as the  “Request sent “ message I had originally  expected. So its not a deep  bug, but it is a UI bug the presence  of which indicates to me that  Apple have not done all the QA they perhaps could  have. Google would  have stuck a Beta label on Ping. But Apple doesn&#8217;t do that &#8230;</strong></li>
</ul>
<h2>Summary</h2>
<p>Many  of these issues are not in themselves too serious, but added  together  they result in a clunky, amateur-ish interaction flow. I  wonder how many  users drop out along the way? I’d encourage Apple to  fix some of these issues and track the associated   conversion metrics. I  suspect they’d see some dramatic improvements.</p>
<p>Most serious are the design issues which directly inhibit the growth  of the Ping social network. For Ping to compete with the rich features  and mature communities of <a href="http://last.fm">last.fm</a>, <a href="http://ilike.com">iLike</a>, <a href="http://mog.com">MOG</a> and (dare I say) <a href="http://myspace.com">MySpace</a>,  Apple needs to take a careful look at the ease of interaction around  social features. It needs to be as easy as possible to grow your social  network. In terms of the following request flow, the most serious issues  are:</p>
<ul>
<li>Step 4: the lack of a  targeted destination for responding to the follow request in the iTunes/Ping UI in Step 4</li>
<li>Step 6: lack of calls to action to explore Ping and grow social network after approving the follow request</li>
</ul>
<p>After  several years of doing systematic page-by-page UX audits at  Google and  more recently independently with startups, I continue to be  surprised at  the number of significant UI issues which can be caught  with this time-  and cost-efficient technique. If you’d like a UX audit  for your own  product please get in touch at <a href="mailto:r@richardboardman.com">r@richardboardman.com</a>.  If a design-obsessed company like Apple has this many issues with this  small part of the Ping UI, how many issues does yours product have?</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Frichardboardman.com%2F2010%2F09%2Fapples-ping-pongs-a-usability-review%2F&amp;title=Apple%E2%80%99s%20Ping%20Pongs%21%20A%20usability%20review" id="wpa2a_36"><img src="http://richardboardman.com/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://richardboardman.com/2010/09/apples-ping-pongs-a-usability-review/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Setting up a tech consultancy in San Francisco</title>
		<link>http://richardboardman.com/2010/08/setting-up-a-tech-consultancy-in-san-francisco/</link>
		<comments>http://richardboardman.com/2010/08/setting-up-a-tech-consultancy-in-san-francisco/#comments</comments>
		<pubDate>Mon, 30 Aug 2010 23:37:01 +0000</pubDate>
		<dc:creator>rick</dc:creator>
				<category><![CDATA[san francisco]]></category>
		<category><![CDATA[small business]]></category>

		<guid isPermaLink="false">http://richardboardman.com/?p=45</guid>
		<description><![CDATA[Image credits: Remixed from JD Lasica&#8217;s original. Having just set up a tech consultancy, I&#8217;m pleased to confirm that the process of setting up a business in San Francisco is relatively straightforward. So far anyway (check in with me again &#8230; <a href="http://richardboardman.com/2010/08/setting-up-a-tech-consultancy-in-san-francisco/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Frichardboardman.com%2F2010%2F08%2Fsetting-up-a-tech-consultancy-in-san-francisco%2F&amp;title=Setting%20up%20a%20tech%20consultancy%20in%20San%20Francisco" id="wpa2a_38"><img src="http://richardboardman.com/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share"/></a></p><p><a href="http://richardboardman.com/wp-content/uploads/2010/08/transamerica.jpg"><img class="size-full wp-image-48   alignleft" title="My new office" src="http://richardboardman.com/wp-content/uploads/2010/08/transamerica.jpg" alt="Copyright" width="588" height="419" /></a></p>
<p style="text-align: right;"><small><em>Image credits: Remixed from JD Lasica&#8217;s <a href="http://www.flickr.com/photos/jdlasica/88878648/in/photostream/">original</a>.</em></small></p>
<p>Having just set up a tech consultancy, I&#8217;m pleased to confirm that the process of setting up a business in San Francisco is relatively straightforward. So far anyway (check in with me again at tax time).</p>
<p>That said, there&#8217;s still a few hoops to jump through. Here&#8217;s my rundown of the steps involved in setting up a consultancy in San Francisco &#8211; including paperwork, training, coworking and networking.</p>
<p><strong>Initial homework</strong></p>
<p>Any business advisor (once you pay them) will tell you the first thing to do is decide what you want to do. Is it something you will love doing? Do you want to do it full time? Part time? Who else is doing it? Whats the competition like? Sole proprietorship? Partnership? LLC?</p>
<p>I&#8217;ll assume you&#8217;ve got all this nitty-gritty done and you have your heart set on what your business will entail. If you haven&#8217;t, <a href="http://freelanceswitch.com/blog/explore/#1">Freelance Switch</a> has some useful suggestions.</p>
<p><strong>Name, name, name<br />
</strong></p>
<p>The name you choose for your business is an important early decision. Initially I went with &#8220;Richard Boardman Consulting&#8221;, but I plan to change it to something more exciting in the future.</p>
<p>Whatever you decide, don&#8217;t hand about. Especially if your business domain is &#8220;a la mode&#8221;. You need to check the business name is available to register legally, as well as grabbing the corresponding domain name, linkedin and twitter accounts etc.</p>
<p>Some useful tools include:</p>
<ul>
<li><a href="http://www.criis.com/sanfrancisco/sfictitious.shtml">FBN search</a> for checking your legal business name is available</li>
<li><a href="http://www.ud.com">UD Namecheck</a> will check social media usernames, domain names, and trademarks for you via one quick search.</li>
<li><a href="http://domai.nr/">Domai.nr</a> for checking domain names, and links to domain registration services. Tip: decide who you want to host your website through and register with them to save some cash, and avoid domain transfer feeds. Personally, I like <a href="http://dreamhost.com">Dreamhost</a>.</li>
<li><a href="http://twitter.com">Twitter</a> (say no more).</li>
<li><a href="http://linkedin.com">Linkedin</a> (facebook for business) &#8211; super useful for collecting recommendations and publishing your resume.</li>
</ul>
<p><strong>Initial paperwork</strong></p>
<p>Ah, the hallowed corridors of <a href="http://en.wikipedia.org/wiki/San_Francisco_City_Hall">City Hall</a>. I actually found sorting out the paperwork to be rather good fun. However, don&#8217;t leave it to the last minute since there are deadlines relative to when you start business. Also, have a book or game on hand as you navigate between the lines in the various departments.</p>
<p>Here&#8217;s my recap of whats involved:</p>
<ul>
<li>Step 1 (before you go): Double-check the name you want is available with an <a href="http://www.criis.com/sanfrancisco/sfictitious.shtml">FBN search</a>.</li>
<li>Step 2: Once at City Hall, start at the <a href="http://www.sfgsa.org/index.aspx?page=3805">SF Office of Small business</a> in Room 110 &#8211; they have all the forms, and will talk you through the process</li>
<li>Step 3: <a href="http://www.sfgsa.org/index.aspx?page=4218">Register your business</a> at the Tax Collector&#8217;s Office (Room 140), and pay the registration fee, within 15 days of starting business. Forms available at <a href="http://www.sfgsa.org/index.aspx?page=4218">sfgsa.com</a>.</li>
<li>Step 4: <a href="http://www.sfgov2.org/index.aspx?page=33">File a Fictitious Business Name (FBN) Statement</a> (otherwise known  as Doing Business As or DBA), at the Office of the County Clerk (Room 168) within 40 days of starting your business.</li>
<li>Step 5: <a href="http://www.sfgov2.org/index.aspx?page=32">Publish an announcement of your new business</a> in an officially sanctioned <a href="http://www.sfgov2.org/index.aspx?page=36">newspaper</a>. I went with the <a href="http://sfgate.ca.kaango.com/createad">SF Chronicle</a> since I&#8217;m of the generation who still get a kick out of seeing their own ad in a real paper. There are cheaper options filing with random east Bay papers you&#8217;ve never heard of. Make sure their fee includes the &#8220;filing fee&#8221; to confirm your filing with the authorities.</li>
<li>Several weeks later you will receive a cool certificate of business which you can display in your place of work.</li>
</ul>
<p>I would also check the other available checklists for the official (and much more wordy) word:</p>
<ul>
<li><a href="http://sfgsa.org/index.aspx?page=4239">SF Office of Small business&#8217;s own list</a> (not the most usable)</li>
<li><a href="http://www.sfgov2.org/index.aspx?page=33">Office of the SF County Clerk&#8217;s list</a></li>
<li>Another DIY checklist for an LLC (<a href="http://blog.steelandsilicon.com/2010/03/30/business-registration-checklist-a-ca-llc-in-san-francisco-in-particular/">steelandsilicon.com</a>)</li>
</ul>
<p><strong>Bank account</strong></p>
<p>Once you get your business registration receipt from City Hall, you can then take this to your friendly local bank. I used <a href="http://wellsfargo.com">Wells Fargo</a> since they have <a href="http://www.thewildwest.org/cowboys/wildwestwesternfacts/267-wellsfargocompany">cowboys</a> on their ATMs (a concept which is inherently amusing to a Brit).</p>
<p><strong>Training</strong></p>
<p>There are a plethora of OWCA&#8217;s (organizations with crazy acronyms) who you can tap for training:</p>
<ul>
<li>The <a href="http://sfgsa.org/index.aspx?page=3805">SF Office of Small business</a> don&#8217;t do training themselves but have lots of info on others who do. Swing by when you are doing your paperwork at City Hall.</li>
<li>The SF office of the <a href="http://www.sbatraining.eventbrite.com/">Small Business Administration</a> (SBA) is where I would go next. They have an excellent eventbrite-driven <a href="http://www.sbatraining.eventbrite.com/">events list</a> which covers training from SBC, SBDC and SCORE. I attended their &#8220;Starting a consultancy business&#8221; (3 hour) and &#8220;How to Start and Manage a Small Business&#8221; (one day) seminars. Both were good foundations, kept me awake, and covered the basics of accounting, legalese, business plans and marketing. $80 well spent.</li>
<li>The <a href="http://sf.norcalsbdc.org/">Small Business Development Center of Northern California </a>(SBDC) have an extensive lists of <a href="http://sf.norcalsbdc.org/events2">events</a>, which are included in the SBA&#8217;s much easier to use website.</li>
<li>SCORE offer <a href="http://www.sfscore.org/">free mentoring</a> to new small businesses.</li>
<li><a href="http://www.ccsf.edu/NEW/">San Francisco&#8217;s City College</a> (SFCC) offer many business related courses.</li>
<li>The <a href="http://www.rencenter.org/">Renaisance business center</a> has more in-depth training, included a 14 week intensive business class for new entrepeneurs.</li>
</ul>
<p>There&#8217;s also plenty of more technical/startup-y/Web 2.0 training around. Checkout the networking newsletters below for pointers.</p>
<p><strong>Coworking space</strong></p>
<p>Perhaps you want to work from home? Perhaps like me you want to mix it up, working from home, cafes, and an office. One great office option is that of <a href="http://en.wikipedia.org/wiki/Coworking">coworking spaces</a>, of which San Francisco has <a href="http://coworking.pbworks.com/SanFranciscoCoworking">many</a>. As well as being good value, they tend to be chock-full of freelancers and startups and so are great for networking. <a href="http://coworking.pbworks.com/SanFranciscoCoworking">Pbworks.com</a> provides a comprehensive overview and highlights some of their pros and cons.</p>
<ul>
<li>Having tried a few, my favourite is <a href="http://nextspace.us/contact/">Nextspace</a> on 2nd Street. Its not the cheapest but the location is perfect (2nd at Market), and the facilities are modern and well laid out. Its the kind of place where one could happily take a client back to for a meeting (unlike one or two of the others who need a spot of paint!).</li>
<li><a href="http://citizenspace.us/">Citizen Space</a> is a cheaper option, which you can wheel your bicycle right into, albeit with a harder to access under-the freeway location.</li>
</ul>
<p>My tip is to hunt around &#8211; most of the spaces have a &#8220;try us free&#8221; deal so you hang out for a day and see how you like it.</p>
<p><strong>Broadcasting</strong></p>
<p>This is where the pre-registered twitter account and domain names comes in! If you haven&#8217;t registered yourcoolnewbusinessname.com yet, grab it quick!</p>
<ul>
<li>Setup your email address. Reserve <a href="http://gmail.com/">yourcoolnewbusinessname@gmail.com</a> as a backup. However, its more respectable to use name@yourcoolnewbusinessname.com.</li>
<li>Set up  your yourcoolnewbusinessname.com homepage. I recommended <a href="http://dreamhost.com">Dreamhost</a> for hosting and <a href="http://wordpress.com">WordPress</a> for setting up a site. You&#8217;ll have some static pages and a blog up and running in no time at all.</li>
<li>Set up a <a href="http://linkedin.com">Linkedin</a> account. Network. Collect recommendations from your previous positions.</li>
<li>Get tweeting (<a href="http://business.twitter.com/twitter101/starting">but don&#8217;t spam</a>). I set up separate personal and business accounts. Forward your useful business tweets to your <a href="http://linkedin.com">Linkedin</a> account. You get the idea.</li>
</ul>
<p><strong>Networking</strong></p>
<p>In terms of networking and meeting leads in the tech sector, there are a load of meetups in San Francisco. Some of my favourites include:</p>
<ul>
<li><a href="http://failcon2010.com/">Failchat</a> &#8211; hearing from founders how they messed up their startup. Get there early for free beer.</li>
<li><a href="http://www.meetup.com/Lean-Startup-Circle/">Lean Startup Circle</a> &#8211; run by my good friend, Rich Collins. Sometimes they have free beer.</li>
<li><a href="http://sfnewtech.com/">SF New Tech</a> &#8211; free beer unconfirmed.</li>
<li><a href="http://sfbeta.com/">SF Beta </a>- no free beer )-:</li>
<li>Browse around on <a href="http://meetup.com">Meetup.com</a> for plenty more. Also, its worth perusing the coworking spaces such as <a href="http://www.parisoma.com/">Parisoma</a> since they host a lot of events.</li>
</ul>
<p>If you are working in the internet startup field, there are a couple of excellent newsletters to subscribe to which overview many of the events:</p>
<ul>
<li><a href="http://webwallflower.com/upcoming-events/">Web Wallflower</a></li>
<li><a href="http://thestartupdigest.com/">Startup digest</a></li>
</ul>
<p><strong>Miscellany</strong></p>
<p>Other bits and pieces</p>
<ul>
<li>Death and taxes n&#8217; all that: talk to your favourite tax professional so you&#8217;re not surprised by anything down the road. The number 1 tip from mine: use your business credit card for all your business-related transactions for easier records keeping later.</li>
<li>Get organized: the second thing my tax professional told me was save everything &#8211; receipts, bank paperwork, city hall memorabilia, your newspaper cutting. Go and buy a ring binder.</li>
<li>Business cards: you have choices of <a href="http://vistaprint.com">cheap</a> options or <a href="http://moo.com">cool</a> options. I started off cheap, but I&#8217;m going cool as you read.</li>
</ul>
<p>No doubt there&#8217;s more surprises in store &#8230; let me know anything I forgot!</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Frichardboardman.com%2F2010%2F08%2Fsetting-up-a-tech-consultancy-in-san-francisco%2F&amp;title=Setting%20up%20a%20tech%20consultancy%20in%20San%20Francisco" id="wpa2a_40"><img src="http://richardboardman.com/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://richardboardman.com/2010/08/setting-up-a-tech-consultancy-in-san-francisco/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

