<?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>threehv &#187; Designing Great Software</title>
	<atom:link href="http://www.3hv.co.uk/blog/category/application-design/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.3hv.co.uk/blog</link>
	<description>precision engineering for your website</description>
	<lastBuildDate>Fri, 13 Jan 2012 16:18:18 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Facebook, Twitter and the new complexity</title>
		<link>http://www.3hv.co.uk/blog/2011/09/23/facebook-twitter-and-the-new-complexity/</link>
		<comments>http://www.3hv.co.uk/blog/2011/09/23/facebook-twitter-and-the-new-complexity/#comments</comments>
		<pubDate>Fri, 23 Sep 2011 08:08:30 +0000</pubDate>
		<dc:creator>Rahoul Baruah</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Designing Great Software]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[twitter]]></category>
		<category><![CDATA[user interface design]]></category>

		<guid isPermaLink="false">http://www.3hv.co.uk/blog/?p=868</guid>
		<description><![CDATA[Facebook has had a redesign. There&#8217;s more to come. The redesign hasn&#8217;t gone down too well. But what&#8217;s more notable is the number of pop-overs that appear on the new Facebook. &#8220;Click here to see this&#8221;. &#8220;Where&#8217;s my stuff gone?&#8221; &#8220;If you want this, then do that&#8221;. Surely, that&#8217;s the sign of a bad design? [...]]]></description>
			<content:encoded><![CDATA[<p>Facebook has had a <a href="http://news.softpedia.com/news/Ahead-of-Major-Redesign-Facebook-Hides-the-Poke-Button-222659.shtml">redesign</a>.  There&#8217;s <a href="http://www.guardian.co.uk/technology/2011/sep/19/facebook-music-film-ticker">more to come</a>.  The redesign hasn&#8217;t <a href="https://fbcdn-sphotos-a.akamaihd.net/hphotos-ak-ash4/s320x320/305019_143618235733551_100002561275623_205595_1608319383_n.jpg">gone down too well</a>.  </p>
<p>But what&#8217;s more notable is the number of pop-overs that appear on the new Facebook.  &#8220;Click here to see this&#8221;.  &#8220;Where&#8217;s my stuff gone?&#8221;  &#8220;If you want this, then do that&#8221;.  Surely, that&#8217;s the sign of a bad design?</p>
<p>It&#8217;s not just Facebook.  &#8220;New&#8221; Twitter is now for everyone.  Every time I use it I get slightly confused &#8211; how do I do that?  Where do I go for this?  </p>
<p>I&#8217;ve always said that Twitter is proof that user-interface design is hard.  All it is is a list of posts in chronological order, plus a text-area to allow you to post.  Yet there are a myriad of different twitter clients, all working slightly differently, all with an alternate take on the ideal Twitter UI.  </p>
<p>It seems that no matter how simple things are, the current trend is for complexity.  More popovers, more boxes, more sliding widgets!  </p>
<p>It&#8217;s confusing, it&#8217;s annoying and it is a massive step backwards.  </p>
]]></content:encoded>
			<wfw:commentRss>http://www.3hv.co.uk/blog/2011/09/23/facebook-twitter-and-the-new-complexity/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Getting Measured</title>
		<link>http://www.3hv.co.uk/blog/2011/05/25/getting-measured/</link>
		<comments>http://www.3hv.co.uk/blog/2011/05/25/getting-measured/#comments</comments>
		<pubDate>Wed, 25 May 2011 12:09:40 +0000</pubDate>
		<dc:creator>Rahoul Baruah</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Designing Great Software]]></category>
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.3hv.co.uk/blog/?p=840</guid>
		<description><![CDATA[Exciting times &#8211; my other company PizzaPowered is pleased to announce the closed beta for our first software product. Measure is a tool designed to scan your website and point out errors and potential warning signs. From broken links and missing images, to more subtle problems, like duplicate page titles or missing &#8220;alt&#8221; tags &#8211; [...]]]></description>
			<content:encoded><![CDATA[<p>Exciting times &#8211; my other company PizzaPowered is pleased to announce the closed beta for our first software product.  </p>
<p><a href="http://getmeasure.com">Measure</a> is a tool designed to scan your website and point out errors and potential warning signs.  From broken links and missing images, to more subtle problems, like duplicate page titles or missing &#8220;alt&#8221; tags &#8211; all of which are important when looking at search engine optimisation &#8211; and just for making sure that your website is performing as well as it should.  </p>
<p>Measure is still in closed beta at the moment, but we&#8217;re ironing out the bugs and it&#8217;s not too long till we can look forward to an official launch.  If you&#8217;d like to give it a try, just <a href="/#contact">get in touch</a>.  </p>
]]></content:encoded>
			<wfw:commentRss>http://www.3hv.co.uk/blog/2011/05/25/getting-measured/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How we work</title>
		<link>http://www.3hv.co.uk/blog/2011/02/27/how-we-work/</link>
		<comments>http://www.3hv.co.uk/blog/2011/02/27/how-we-work/#comments</comments>
		<pubDate>Sun, 27 Feb 2011 21:36:26 +0000</pubDate>
		<dc:creator>Rahoul Baruah</dc:creator>
				<category><![CDATA[Beautiful Code]]></category>
		<category><![CDATA[Designing Great Software]]></category>
		<category><![CDATA[Managing Successful Projects]]></category>
		<category><![CDATA[Writing Reliable, Bug-Free Code]]></category>

		<guid isPermaLink="false">http://www.3hv.co.uk/blog/?p=816</guid>
		<description><![CDATA[We have published a bit more information about how we work &#8211; our Beautiful Code doctrine, the process that we follow and how we convert your ideas into tangible features.]]></description>
			<content:encoded><![CDATA[<p>We have published a bit more information about how we work &#8211; our <a href="/blog/beautiful-code">Beautiful Code</a> doctrine, the <a href="/blog/beautiful-code/process-and-engineering/">process that we follow</a> and how we <a href="/blog/beautiful-code/converting-an-idea-into-a-feature/">convert your ideas into tangible features</a>.  </p>
]]></content:encoded>
			<wfw:commentRss>http://www.3hv.co.uk/blog/2011/02/27/how-we-work/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>&#8211;format=specdoc</title>
		<link>http://www.3hv.co.uk/blog/2011/02/24/formatspecdoc/</link>
		<comments>http://www.3hv.co.uk/blog/2011/02/24/formatspecdoc/#comments</comments>
		<pubDate>Thu, 24 Feb 2011 09:00:17 +0000</pubDate>
		<dc:creator>Rahoul Baruah</dc:creator>
				<category><![CDATA[Beautiful Code]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Designing Great Software]]></category>
		<category><![CDATA[Writing Reliable, Bug-Free Code]]></category>
		<category><![CDATA[details]]></category>
		<category><![CDATA[rspec]]></category>

		<guid isPermaLink="false">http://www.3hv.co.uk/blog/?p=807</guid>
		<description><![CDATA[One of the greatest things about RSpec is that the specifications you write not only prove that your code is doing what it should be doing, but also it provides a starting point for your technical documentation. Which means you are secure enough in your development to add functionality like this: ApplicationHelper greeting - should [...]]]></description>
			<content:encoded><![CDATA[<p>One of the greatest things about RSpec is that the specifications you write not only prove that your code is doing what it should be doing, but also it provides a starting point for your technical documentation.  </p>
<p>Which means you are secure enough in your development to add functionality like this: </p>
<pre>
ApplicationHelper greeting
- should say 'morning' between 4am and 12pm
- should say 'afternoon' between 12pm and 5pm
- should say 'evening' between 5pm and 9pm
- should say 'night' between 9pm and 4am
</pre>
<p>One of those <a href="http://www.3hv.co.uk/blog/2007/05/25/great-features-you-see-great-features-you-dont/">tiny details</a> that most people won&#8217;t even notice &#8211; but makes a subliminal impression on your users (in this case, greeting them with a &#8220;Good morning&#8221; or &#8220;Good evening&#8221; depending upon the time).  </p>
]]></content:encoded>
			<wfw:commentRss>http://www.3hv.co.uk/blog/2011/02/24/formatspecdoc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Technology Radar</title>
		<link>http://www.3hv.co.uk/blog/2011/02/01/technology-radar/</link>
		<comments>http://www.3hv.co.uk/blog/2011/02/01/technology-radar/#comments</comments>
		<pubDate>Tue, 01 Feb 2011 21:29:29 +0000</pubDate>
		<dc:creator>Rahoul Baruah</dc:creator>
				<category><![CDATA[Designing Great Software]]></category>
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.3hv.co.uk/blog/?p=763</guid>
		<description><![CDATA[Technologies that look interesting and need further investigation: Redis: the only &#8216;NoSQL&#8217; database that interests me Resque: I love queueing and messaging and Resque looks like the simplest, most performant, way to get started (especially when Redis gains clustering) JSON: not really a new technology but the idea of having a server-side app that is [...]]]></description>
			<content:encoded><![CDATA[<p>Technologies that look interesting and need further investigation:</p>
<ul>
<li>Redis: the only &#8216;NoSQL&#8217; database that interests me</li>
<li>Resque: I love queueing and messaging and Resque looks like the simplest, most performant, way to get started (especially when Redis gains clustering)</li>
<li>JSON: not really a new technology but the idea of having a server-side app that is nothing more than a JSON API is gaining traction</li>
<li>Backbone.js: I really liked the look of Sproutcore but it was just too heavy, backbone gets us many of the benefits without the weight</li>
<li>Mustache.js: No point having a JSON API if you can&#8217;t display your results on the page</li>
<li>Sencha Touch: Commercial and/or GPL but produces amazing results</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.3hv.co.uk/blog/2011/02/01/technology-radar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Has Apple forgotten how to design user interfaces?</title>
		<link>http://www.3hv.co.uk/blog/2010/10/21/has-apple-forgotten-how-to-design-user-interfaces/</link>
		<comments>http://www.3hv.co.uk/blog/2010/10/21/has-apple-forgotten-how-to-design-user-interfaces/#comments</comments>
		<pubDate>Thu, 21 Oct 2010 06:55:02 +0000</pubDate>
		<dc:creator>Rahoul Baruah</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Designing Great Software]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[ios]]></category>
		<category><![CDATA[ipad]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[lion]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[osx]]></category>

		<guid isPermaLink="false">http://www.3hv.co.uk/blog/?p=724</guid>
		<description><![CDATA[In the olden days I used to hold Apple up as an example of great user-interface (and &#8220;user-experience&#8221;) design. This was down to lots of things &#8211; a love of minimalism and simplicity, the high standards that Mac users held Apple to, a feeling that computers were just too complicated. But overall, this came down [...]]]></description>
			<content:encoded><![CDATA[<p>In the <a href="http://en.wikipedia.org/wiki/Mac_OS_9">olden days</a> I used to hold Apple up as an example of great user-interface (and &#8220;user-experience&#8221;) design.  This was down to lots of things &#8211; a love of minimalism and simplicity, the high standards that Mac users held Apple to, a feeling that computers were just too complicated.  </p>
<p>But overall, this came down to one simple principle &#8211; &#8220;<em>top-to-bottom, left-to-right</em>&#8220;.  </p>
<p>Eye-tracking studies showed that people&#8217;s eyes scan from top-to-bottom, left-to-right (at least for &#8220;western&#8221; readers &#8211; I don&#8217;t know if it applies to Hebrew or Arabic readers).  The eye starts and lingers in the top-left corner and stops and lingers in the bottom-right corner, following an across and down pattern as it moves along the page.  </p>
<p>Why is the Apple menu in the top-left corner?  Because that&#8217;s where you start.  Not in the bottom-left, as on Windows.  </p>
<p>Why is the trash can in the bottom-right corner?  Because that&#8217;s where you finish up.  No in the top-left, as on Windows.  </p>
<p>Why is the default button in the bottom-right corner of every pop-up box?  Because that&#8217;s where your eye lingers when it has finished scanning the box.  No point using that valuable scanning time to show you the Cancel button, as on Windows.  </p>
<p>Why is the &#8220;close&#8221; button in the top-left corner of a window?  Because closing a window is a &#8220;dangerous&#8221; action and so should be taken as far out of the flow of normal operations as possible.  </p>
<p>Apple started to give up on this with the transition to Mac OSX.  Early versions had the Apple menu in the centre of the menu bar.  And the Dock breaks the model completely &#8211; the application launcher at the bottom of the screen (although I <a href="http://www.3hv.co.uk/blog/2008/07/29/in-praise-of-the-dock/">understand why they did it</a>).  But after a period of experimentation, Apple settled down into a reasonably consistent pattern by the time OSX 10.5 (Leopard) was released.  </p>
<p>The iPhone changed this. For the better.  The iPhone could not use the top-to-bottom, left-to-right pattern.  Partly because it is less important on the smaller screen.  Partly because the bottom two corners are &#8220;dangerous&#8221; areas &#8211; it is extremely easy to hit any buttons there when using the phone one-handed.  For this reason, the default button is positioned in the top-right corner in iOS.  That, coupled with Apple&#8217;s minimalism (if it&#8217;s not absolutely essential then get rid of it) makes the iPhone UI, and it&#8217;s associated interface guidelines, better than the rest. All good.  </p>
<p>But what about the iPad?  It&#8217;s an iOS device with a larger screen.  So should it follow the top-to-bottom, left-to-right pattern or should it use the iPhone pattern?  I don&#8217;t know and I don&#8217;t think Apple knows either.  I have to say I find some of the iPhone apps that Apple has built confusing &#8211; especially iTunes and the App Store.  Not enough to put me off, but enough for me to stop and think.  Which is very un-Apple.  </p>
<p><a href="http://www.3hv.co.uk/blog/wp-content/uploads/2010/10/Screen-shot-2010-10-21-at-07.52.38.png"><img src="http://www.3hv.co.uk/blog/wp-content/uploads/2010/10/Screen-shot-2010-10-21-at-07.52.38-133x300.png" alt="Bad User Interface" title="Facetime sign up page" width="133" height="300" class="alignright size-medium wp-image-726" /></a>And then last night I installed the Facetime beta.  Unsurprisingly, Apple has started borrowing from iOS in its Mac designs.  This isn&#8217;t a problem.  But during the signup phase I suddenly got stuck and didn&#8217;t know what to do next.  It took about a second of searching around before I noticed that the &#8220;next&#8221; button was actually positioned in the top-right.  That&#8217;s right &#8211; it was positioned out of the ordinary flow because on an iPhone it would be too easy to hit accidentally if it was in its natural position.  </p>
<p>There are reasons for things being the way they are.  Apple has known these reasons for twenty five years and are choosing to break with them for no real reason.  That bodes badly for the upcoming OSX 10.7 (Lion) release.  </p>
]]></content:encoded>
			<wfw:commentRss>http://www.3hv.co.uk/blog/2010/10/21/has-apple-forgotten-how-to-design-user-interfaces/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Always write tests</title>
		<link>http://www.3hv.co.uk/blog/2010/09/02/always-write-tests/</link>
		<comments>http://www.3hv.co.uk/blog/2010/09/02/always-write-tests/#comments</comments>
		<pubDate>Thu, 02 Sep 2010 19:50:54 +0000</pubDate>
		<dc:creator>Rahoul Baruah</dc:creator>
				<category><![CDATA[Designing Great Software]]></category>
		<category><![CDATA[Managing Successful Projects]]></category>
		<category><![CDATA[Ruby on Rails and Software Development]]></category>
		<category><![CDATA[Writing Reliable, Bug-Free Code]]></category>

		<guid isPermaLink="false">http://www.3hv.co.uk/blog/?p=710</guid>
		<description><![CDATA[One of the things that stands out about Ruby and Rails developers is that the vast majority obsess over “behaviour-driven-development” (or its similar predecessor “test-driven-development”). At first glance, this allows a suite of automated tests to be run against your code &#8211; the idea being that you have proof that your system does what it [...]]]></description>
			<content:encoded><![CDATA[<p>One of the things that stands out about Ruby and Rails developers is that the vast majority obsess over “behaviour-driven-development” (or its similar predecessor “test-driven-development”).</p>
<p>At first glance, this allows a suite of automated tests to be run against your code &#8211; the idea being that you have proof that your system does what it is supposed to. Bugs are caught early and, most importantly, a new feature cannot break existing features without you knowing about it.</p>
<p>But there is a much bigger advantage to behaviour-driven-development.</p>
<p>The very act of writing your tests before writing your code clarifies what you are trying to achieve and results in designs and code that are actually simpler &#8211; and hence easier to maintain.</p>
<p>I was reminded of this when trying to build a data importer. My colleague wrote a huge piece of code that seemed to work at first. But upon further investigation, it appeared to get some internal references wrong &#8211; and as the import took an hour to run, debugging became a pain.</p>
<p>So I started over. I wrote out a series of names for my specification: it should import a single product, it should import all variations of that product, it should import the images for a product, it should update an existing product.</p>
<p>These bullet points are a simple description for what it was supposed to achieve.</p>
<p>I then implemented the first bullet point in code &#8211; I took a copy of the import file, stripped out most of the data till I found a relevant piece, loaded that and then called the importer. My test just checked the results and ensured that the results were what was expected. The first run failed &#8211; because I didn’t have any code in my importer. But I implemented the simple “import a product” case and the test passed. Then I implemented the second bullet point in code. The first test passed, the second failed. I added the code to get the new test to pass &#8211; two passing tests and a very simple piece of code for the importer. Continue till all the tests were implemented &#8211; fantastic. The importer worked. But the most important thing &#8211; because it was built incrementally, it was simple. Even better, if it did start getting messy I could rewrite and rearrange the code to simplify it &#8211; and still be sure it was working as the tests proved it.</p>
<p>Writing the tests does not take much time &#8211; in fact it saves time as you have to explain to yourself what you are doing before you begin. But even more importantly, it results in clean, simple code. Which saves even more time (and money) in the long run, as that becomes cheaper to maintain.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.3hv.co.uk/blog/2010/09/02/always-write-tests/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using Cucumber to estimate a project</title>
		<link>http://www.3hv.co.uk/blog/2009/05/15/using-cucumber-to-estimate-a-project/</link>
		<comments>http://www.3hv.co.uk/blog/2009/05/15/using-cucumber-to-estimate-a-project/#comments</comments>
		<pubDate>Fri, 15 May 2009 16:39:45 +0000</pubDate>
		<dc:creator>Rahoul Baruah</dc:creator>
				<category><![CDATA[Designing Great Software]]></category>
		<category><![CDATA[Managing Successful Projects]]></category>
		<category><![CDATA[Ruby on Rails and Software Development]]></category>
		<category><![CDATA[Writing Reliable, Bug-Free Code]]></category>
		<category><![CDATA[cucumber]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[estimates]]></category>
		<category><![CDATA[project planning]]></category>
		<category><![CDATA[requirements gathering]]></category>

		<guid isPermaLink="false">http://www.3hv.co.uk/blog/?p=521</guid>
		<description><![CDATA[Writing estimates up-front is a really tricky part of client work. From the customer&#8217;s point of view it&#8217;s pretty essential. You need to know how much you are spending before the work begins so you don&#8217;t get stung. From the developer&#8217;s point of view it&#8217;s pretty difficult to do because you don&#8217;t know how long [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.3hv.co.uk/blog/wp-content/uploads/2009/05/281211_6743jpg-300x225.jpg" alt="Invoice" title="Invoice" width="300" height="225" class="alignright size-medium wp-image-524" style="margin: 4px" />Writing estimates up-front is a really tricky part of client work.  </p>
<p>From the customer&#8217;s point of view it&#8217;s pretty essential.  You need to know how much you are spending before the work begins so you don&#8217;t get stung.    </p>
<p>From the developer&#8217;s point of view it&#8217;s pretty difficult to do because you don&#8217;t know how long things will take until you know what you&#8217;re building.  And you don&#8217;t know the details of what you are building until they become apparent, which is normally while you are doing the work.  </p>
<p>For this particular client I wanted to get this piece of work out of the way as quickly as possible and the requirements were deceptively complicated.  As trying to deal with intangibles is a recipe for disaster, and time was short, I was pretty sure that whatever estimate I came up with would be totally inaccurate.  </p>
<p>So to deal with the intangibles I thought I may as well get stuck in with the actual work.  And what&#8217;s the first thing that I do?  Write a <a href="http://cukes.info">cucumber</a> story.  </p>
<p>I went through the requirements documents (which after weeks of to and fro were actually quite detailed and refined) and broke it down into four features, each with a number of scenarios.  Each scenario was then broken down into individual steps &#8211; however, I did not write any step definition (ruby) files.  This is cucumber as customer documentation, not as integration testing.  </p>
<p>We agreed that the features met the requirements (the client was very impressed with the level of detail and the clarity that cucumber offered) and I simply went through each feature, scenario and step and came up with a price for the step individually.  It&#8217;s still guesswork, but it&#8217;s guesswork on a small scale, so you&#8217;re less likely to be way off.  Total the lot and there&#8217;s your estimate.  </p>
<p>And even better, once the client has agreed the price and you&#8217;ve started development, you&#8217;ve got a development plan, a measure of progress and proof that it all works &#8211; all just a simple <tt>rake features</tt> away.  </p>
<p><small>Image by <a href="http://www.sxc.hu/profile/lemon_drop">lemon drop</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.3hv.co.uk/blog/2009/05/15/using-cucumber-to-estimate-a-project/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Balsamiq Mockups</title>
		<link>http://www.3hv.co.uk/blog/2009/04/24/balsamiq-mockups/</link>
		<comments>http://www.3hv.co.uk/blog/2009/04/24/balsamiq-mockups/#comments</comments>
		<pubDate>Fri, 24 Apr 2009 16:21:54 +0000</pubDate>
		<dc:creator>Rahoul Baruah</dc:creator>
				<category><![CDATA[Designing Great Software]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[balsamiq mockups]]></category>
		<category><![CDATA[user interface design]]></category>

		<guid isPermaLink="false">http://www.3hv.co.uk/blog/?p=469</guid>
		<description><![CDATA[Recently I&#8217;ve been playing around with Balsamiq Mockups. This is an application that lets you chuck screen designs (for web pages, desktop applications or iPhone applications) together very simply and quickly. The UI is pretty straightforward &#8211; create a screen, select some controls (via drag/drop or by typing in a name) and place them where [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I&#8217;ve been playing around with <a href="http://www.balsamiq.com/products/mockups">Balsamiq Mockups</a>.  This is an application that lets you chuck screen designs (for web pages, desktop applications or iPhone applications) together very simply and quickly.   </p>
<div class="wp-caption alignnone" style="width: 705px"><img alt="Balsamiq Mockups" src="http://www.balsamiq.com/images/boogle.gif" title="Balsamiq Mockups" width="463" height="302" /><p class="wp-caption-text">Balsamiq Mockups</p></div>
<p>The UI is pretty straightforward &#8211; create a screen, select some controls (via drag/drop or by typing in a name) and place them where you want them.  Each control can then be roughly edited (for example, the table control lets you put comma-separated values in) so that you can make it look something like the expected data.  </p>
<p>I have to say that it&#8217;s a pretty good application.  It&#8217;s the first thing I&#8217;ve found that comes anywhere near the convenience of a whiteboard (or even better a piece of A3 and a 6B pencil).  Even more amazing is that it&#8217;s also the first Adobe AIR application that doesn&#8217;t want to make me gouge my own eyes out in frustration at its non-standard user interface.  </p>
<p>So, overall I have to recommend it (and if you ask nicely, they may even give you a <a href="http://www.balsamiq.com/products/mockups/desktop">free copy</a>).  </p>
<p>Is it better than a piece of paper?  No.  </p>
<p>Is it better than everything else I&#8217;ve tried <em>on a computer</em>?  Yes.  </p>
]]></content:encoded>
			<wfw:commentRss>http://www.3hv.co.uk/blog/2009/04/24/balsamiq-mockups/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Complexity is everywhere</title>
		<link>http://www.3hv.co.uk/blog/2009/02/11/complexity-is-everywhere/</link>
		<comments>http://www.3hv.co.uk/blog/2009/02/11/complexity-is-everywhere/#comments</comments>
		<pubDate>Wed, 11 Feb 2009 10:23:33 +0000</pubDate>
		<dc:creator>Rahoul Baruah</dc:creator>
				<category><![CDATA[Designing Great Software]]></category>
		<category><![CDATA[complexity]]></category>
		<category><![CDATA[software design]]></category>

		<guid isPermaLink="false">http://www.3hv.co.uk/blog/?p=391</guid>
		<description><![CDATA[I&#8217;ve been a fan of Basecamp for years.  Ever since I heard about it (all the way back in 2005) I&#8217;ve encouraged its use whenever possible.  It has pretty much become the de-facto standard for web-developers across the world.  Part of its appeal is its unstructured nature &#8211; it&#8217;s basically a series of messages with [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been a fan of <a title="simple project management" href="http://www.basecamphq.com" target="_blank">Basecamp</a> for years.  Ever since I heard about it (all the way back in 2005) I&#8217;ve encouraged its use whenever possible.  It has pretty much become the de-facto standard for web-developers across the world.  Part of its appeal is its unstructured nature &#8211; it&#8217;s basically a series of messages with task lists and dates.  Use what you want, how you want.  Each task item has three variables &#8211; title, task list it belongs to and position in the list (and they recently added a comments stream so you can discuss the item).  </p>
<p>However, sometimes its laissez faire approach is <em>too</em> unstructured.  So you may move to a bug-tracker.  The big problem there is, no matter how simple you think things are, how many fields you <a title="complicated bug tracker" href="http://www.fogcreek.com/FogBugz/LearnMore.html?section=ScreenshotTool" target="_blank">make optional</a>, there is <em>always</em> an issue about complexity.  What takes precedence?  The issue-priority or the version that it has been assigned to?  Or does something over due date take precedence over both of those?  </p>
<p>You see, adding <em>anything</em> increases the complexity exponentially &#8211; going from three variables in Basecamp to eight or nine in a bug-tracker (and that&#8217;s a simple bug-tracker, not like the beast that is <a title="don't even go there" href="http://www.bugzilla.org/" target="_blank">Bugzilla</a>) means you have to define what each of those fields means <em>to you</em> and how they interact.  </p>
<p>Even the most apparently simple piece of software has this inherent complexity &#8211; look at the massive variation in <a title="how on earth do you describe twitter?" href="http://twitter.com" target="_blank">Twitter</a> clients &#8211; despite Twitter being nothing than a single 140-character text field.  All of which shows why software development can sometimes be very very hard to get right.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.3hv.co.uk/blog/2009/02/11/complexity-is-everywhere/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.241 seconds -->

