<?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>Shane&#039;s blog &#187; Programming</title>
	<atom:link href="http://blog.shamess.info/category/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.shamess.info</link>
	<description>Personal blog of Shane Preece. Occaisional politics and tech minddump.</description>
	<lastBuildDate>Wed, 18 Jan 2012 10:28:47 +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>X-UA-Compatible causes non-valid HTML5</title>
		<link>http://blog.shamess.info/2012/01/18/x-ua-compatible-causes-non-valid-html5/</link>
		<comments>http://blog.shamess.info/2012/01/18/x-ua-compatible-causes-non-valid-html5/#comments</comments>
		<pubDate>Wed, 18 Jan 2012 10:28:47 +0000</pubDate>
		<dc:creator>Shane</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[sound tiger]]></category>
		<category><![CDATA[standards]]></category>

		<guid isPermaLink="false">http://blog.shamess.info/?p=1174</guid>
		<description><![CDATA[It&#8217;s just something you&#8217;ll have to live with, and another reason why trying to live and die by standards is stupid. Doing so often leaves some users without experimental features (remember -moz-border-radius?); even if others can&#8217;t see them, you can still &#8230; <a href="http://blog.shamess.info/2012/01/18/x-ua-compatible-causes-non-valid-html5/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s just something you&#8217;ll have to live with, and another reason why trying to live and die by standards is stupid. Doing so often leaves some users without experimental features (remember -moz-border-radius?); even if others can&#8217;t see them, you can still improve your website for others.</p>
<p>The annoying thing is that I don&#8217;t need X-UA-Compatible on my web app. The only reason I need to use it is to stop Internet Explorer incorrectly telling people &#8220;this website is probably broken, you know. Click here to fix that.&#8221;</p>
<p>Websites, including html5boilerplate, appear to be telling people to use <code>&lt;meta http-equiv="X-UA-Compatible" content="IE=edge" /&gt;</code>, which means to say &#8220;this is supported in every future version of IE, and current ones&#8221;. I don&#8217;t find that to be a sensible choice though. If you&#8217;re going to use this invalid meta element, why not actually have it work properly?</p>
<p>For Sound Tiger, I decided to set it to IE=9.</p>
<ul>
<li>Fairly old (Firefox 3 era) A List Apart article: <a href="http://www.alistapart.com/articles/beyonddoctype/">Beyond DOCTYPE: Web Standards, Forward Compatibility, and IE8</a></li>
<li>456 Berea Street: <a href="http://www.456bereastreet.com/archive/201103/x-ua-compatible_and_html5/">X-UA-Compatible and HTML5</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.shamess.info/2012/01/18/x-ua-compatible-causes-non-valid-html5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>POST/REQUEST/GET Pattern in PHP</title>
		<link>http://blog.shamess.info/2012/01/06/postrequestget-pattern-in-php/</link>
		<comments>http://blog.shamess.info/2012/01/06/postrequestget-pattern-in-php/#comments</comments>
		<pubDate>Fri, 06 Jan 2012 02:34:41 +0000</pubDate>
		<dc:creator>Shane</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[user experience]]></category>

		<guid isPermaLink="false">http://blog.shamess.info/?p=1169</guid>
		<description><![CDATA[The &#8220;do you want to resend the POST data to the website again?&#8221; error message a user gets when they try to refresh or go back to a page really scares them. Understandably, since the browser often says &#8220;this could &#8230; <a href="http://blog.shamess.info/2012/01/06/postrequestget-pattern-in-php/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>The &#8220;do you want to resend the POST data to the website again?&#8221; error message a user gets when they try to refresh or go back to a page really scares them. Understandably, since the browser often says &#8220;this could mean you&#8217;ll pay for the item twice!&#8221;.</p>
<p>The first way to fix that is by sending all form data over an AJAX request. But if the user has javascript disabled then you&#8217;ll need to fall back to my next suggestion anyway.</p>
<p>The POST/REQUEST/GET (PRG) pattern removes that possibility by never allowing the user to fall onto a page which POST data has been sent to. Putting it simply, whenever you want POST data, you take it and then immediately redirect them.</p>
<p>You do the redirect by using a <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.4">HTTP1.1 303</a>, and although that sounds a little hacky it&#8217;s what was intended for that status to be used for.</p>
<p><a href="https://gist.github.com/1568621">You can see a gist with sample code here.</a></p>
<p>In that example I used a SESSION in order to give feedback. Although as a stackoverflow post points out, you could also <a href="http://stackoverflow.com/questions/4297371/prg-pattern-problem">send data back using GET variables</a> (as the pattern truly intended). Sessions are handy for when you don&#8217;t want the user always coming back to the page, or when you don&#8217;t want to put sensitive data in the URL.</p>
<p>PRG is particularly important these days with single page Javascript applications becoming more popular. I came across this with my <a href="http://taskapp.info">notebook application</a>, where trying to refresh would annoyingly bring up &#8220;would you like to resubmit [your log in data]?&#8221;, which adds friction to the flow.</p>
<p>Further reading:</p>
<ul>
<li><a href="http://blogs.msdn.com/b/ieinternals/archive/2011/08/19/understanding-the-impact-of-redirect-response-status-codes-on-http-methods-like-head-get-post-and-delete.aspx">HTTP Methods and Redirect Status Codes</a></li>
<li><a href="http://www.reddit.com/r/webdev/comments/o47mr/this_has_got_to_be_the_worst_web_usability/">this has got to be the worst web usability problem that still exists today; do regular users have a clue what this means? &#8211; reddit</a></li>
<li><a href="http://en.wikipedia.org/wiki/Post/Redirect/Get">Wikipedia article</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.shamess.info/2012/01/06/postrequestget-pattern-in-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My Project is Unsuitable for Paper Prototyping</title>
		<link>http://blog.shamess.info/2011/11/14/my-project-is-unsuitable-for-paper-prototyping/</link>
		<comments>http://blog.shamess.info/2011/11/14/my-project-is-unsuitable-for-paper-prototyping/#comments</comments>
		<pubDate>Mon, 14 Nov 2011 16:50:33 +0000</pubDate>
		<dc:creator>Shane</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[paper prototyping]]></category>
		<category><![CDATA[sound tiger]]></category>
		<category><![CDATA[user experience]]></category>
		<category><![CDATA[user interface]]></category>

		<guid isPermaLink="false">http://blog.shamess.info/?p=1154</guid>
		<description><![CDATA[I was really looking forwards to paper prototyping, and read Carolyn Snyder&#8217;s (US) book. I was planning on creating my widgets and elements this and last week but keep running into problems&#8230; I wanted to use this technique based on &#8230; <a href="http://blog.shamess.info/2011/11/14/my-project-is-unsuitable-for-paper-prototyping/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I was really looking forwards to paper prototyping, and read <a href="http://www.amazon.co.uk/gp/product/1558608702/ref=as_li_ss_tl?ie=UTF8&amp;tag=allroundnews-21&amp;linkCode=as2&amp;camp=1634&amp;creative=19450&amp;creativeASIN=1558608702">Carolyn Snyder&#8217;s</a><img style="border: none !important; margin: 0px !important;" src="http://www.assoc-amazon.co.uk/e/ir?t=allroundnews-21&amp;l=as2&amp;o=2&amp;a=1558608702" alt="" width="1" height="1" border="0" /> (<a href="http://www.amazon.com/gp/product/1558608702/ref=as_li_ss_tl?ie=UTF8&amp;tag=shasblo093-20&amp;linkCode=as2&amp;camp=217145&amp;creative=399369&amp;creativeASIN=1558608702">US</a><img style="border: none !important; margin: 0px !important;" src="http://www.assoc-amazon.com/e/ir?t=shasblo093-20&amp;l=as2&amp;o=1&amp;a=1558608702&amp;camp=217145&amp;creative=399369" alt="" width="1" height="1" border="0" />) book. I was planning on creating my widgets and elements this and last week but keep running into problems&#8230;</p>
<p>I wanted to use this technique based on advice from my tutor to figure out if my UI is intuitive enough; I&#8217;ve managed to fit all the elements I want to show of the media player on one screen, and have missed off a few widgets (like the song progress bar, and length and genre information) which could be considered risky. It&#8217;s of wasting a lot of time coding I could jot the idea down on paper and ask a focus group of users to let me know what they thought of the idea on paper. Super quick, in theory. If they don&#8217;t like it, I can literally pencil the changes in.</p>
<p>It could also help with the flow of the application, removing the <em>will the user understand that they have to click this bit of the UI to get to this page..?</em> worry. You ask them to do a task (&#8220;Can you add a song by Coldplay to the now playing queue.&#8221;) and then see how they go about doing it. Was it easy for them? Could they instantly find the play button?</p>
<p>But as I mentioned, problems occurred.</p>
<p>The first issue was that I did it on paper. &#8220;Paper prototyping&#8221; is a misnomer, as paper is too light. Too easy blown away by a sneeze, and too hard to pick up to move around. You need something heavier, like card. This wasn&#8217;t an issue though, I could just get some card (I actually had a tonne of card stock lying around.) However, it meant redrawing what I&#8217;d already done onto the card.</p>
<p>The drawing was very, very hard for me. Simple boxes would end up being horribly unaligned, in such a way I couldn&#8217;t fit the rest of the elements on (which would easily fit on a screen when done with CSS). My play button looked more like an oversized equilateral when next to the badly drawn next track button. The book mentions, as well as everyone else, that <a href="http://www.userfocus.co.uk/articles/paperprototyping.html">good drawing isn&#8217;t a requisite</a>. But it wasn&#8217;t something I could be any more than embarrassed about.</p>
<div id="attachment_1155" class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.shamess.info/wp-content/uploads/2011/11/paper-prototyping.jpg"><img class="size-medium wp-image-1155" title="paper-prototyping" src="http://blog.shamess.info/wp-content/uploads/2011/11/paper-prototyping-300x225.jpg" alt="A fairly messy looking paper UI..." width="300" height="225" /></a><p class="wp-caption-text">My ill fated attempt with recreating my UI on paper</p></div>
<p>I decided to try an do it all on Photoshop, and print the elements onto card. That&#8217;d get rid of my issues with drawing. I spent two hours today in a lab trying to use Photoshop to create an empty rectangle with a stroked edge. That&#8217;s definitely not a piece of software you can pick up and play with. You need training, which I can&#8217;t get and don&#8217;t have time for. This is not a rapid way of doing testing, like the book boasts.</p>
<p>My prototype would have to be fairly data heavy too; sample track titles and artists on individual bits for the user to be able to drag around. Once they move to another view, I&#8217;d have to spend a few minutes sorting on the paper, only for the user to potentially decide to &#8220;go back&#8221; and have to redraw it all again.</p>
<p>Paper prototyping is usually carried out by a number of people &#8211; at least three really. Snyder says maybe two, but that&#8217;s an absolute extreme. Pushing myself down to a session with just one person is incredibly hard, I expect.</p>
<p>None of these issues are issues with the testing method. It&#8217;s more a reflection on my constraints. All of them can be fixed with having more people, and one of them with marginally better skill at drawing sketched boxes. However, it is what it is, and I won&#8217;t be able to use Paper Prototyping.</p>
<p>I&#8217;m glad I learnt about it though, and will definitely be trying to use this again in the future when I&#8217;m in a team at work.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.shamess.info/2011/11/14/my-project-is-unsuitable-for-paper-prototyping/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MP3s and Grouping By Album</title>
		<link>http://blog.shamess.info/2011/11/07/mp3s-and-grouping-by-album/</link>
		<comments>http://blog.shamess.info/2011/11/07/mp3s-and-grouping-by-album/#comments</comments>
		<pubDate>Mon, 07 Nov 2011 15:49:17 +0000</pubDate>
		<dc:creator>Shane</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[sound tiger]]></category>

		<guid isPermaLink="false">http://blog.shamess.info/?p=1148</guid>
		<description><![CDATA[It&#8217;s a little more annoying than I&#8217;d like to be able to group by an album. The need to group a set of songs by album is obvious when you&#8217;re trying to create a page which lists unique albums, and &#8230; <a href="http://blog.shamess.info/2011/11/07/mp3s-and-grouping-by-album/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s a little more annoying than I&#8217;d like to be able to group by an album.</p>
<p>The need to group a set of songs by album is obvious when you&#8217;re trying to create a page which lists unique albums, and lets the user click through to view the tracks in the album.</p>
<p>When a user gives a set of MP3 files, all the data I have about the files is in the ID3 tags, and looks a little like this:</p>
<pre>    array
      'title' =&gt;
        array
          0 =&gt; string 'I Feel Fantastic' (length=16)
      'artist' =&gt;
        array
          0 =&gt; string 'Jonathan Coulton' (length=16)
      'composer' =&gt;
        array
          0 =&gt; string 'Jonathan Coulton' (length=16)
      'album' =&gt;
        array
          0 =&gt; string 'Our Bodies, Ourselves, Our Cybernetic Arms' (length=42)
      'year' =&gt;
        array
          0 =&gt; string '2005' (length=4)
      'encoded_by' =&gt;
        array
          0 =&gt; string 'iTunes v4.9' (length=11)
      'comments' =&gt;
        array
          0 =&gt; string '00001630 00000344 0000E27C 000031E5[...]
          1 =&gt; string 'From the soundtrack for the Future [...]
      'track_number' =&gt;
        array
          0 =&gt; string '2/5' (length=3)</pre>
<p>(That&#8217;s the data from Jonathan Coulton&#8217;s <a href="http://www.jonathancoulton.com/wiki/I_Feel_Fantastic"><em>I Feel Fantastic</em></a>, which you can download for free under a CC license.)</p>
<p>The similar data between tracks for each album are: <em>encoded_by</em> (not helpful, different tracks may have been obtained in different ways), <em>comments</em> (not helpful, same reason as <em>encoded_by</em>), <em>year</em> (potential candidate), <em>album title</em> (very helpful), <em>artist</em> (somewhat helpful).</p>
<p>None of that data is actually helpful to find a unique album since all the data may be used by <em>another completely different album</em>.</p>
<p>For instance, the album name alone doesn&#8217;t help; there are many albums called <a href="http://en.wikipedia.org/wiki/Resurrection_%28disambiguation%29">Resurrection</a>. And even the artist name doesn&#8217;t guarantee a unique album; Westlife have two self titled albums, and two &#8216;Greatest Hits&#8217; albums. Both of these cases can be solved by including the year though (though, this is assuming that the year is the same across the entire album).</p>
<p>It gets more complicated when you think of compilation albums; same album name, but many different artists.</p>
<p>For this iteration I&#8217;m going to focus on grouping albums by artist name, band name, and year on the track. Compilation albums won&#8217;t be supported in this three month development release, but instead they&#8217;ll show as a different album for each artist on the compilation.</p>
<p>I think that&#8217;s a good fall back because you can still listen to the music, and saves me a lot of time coding in work arounds for compilations and exceptions (which will have to be done in the second three months of development).</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.shamess.info/2011/11/07/mp3s-and-grouping-by-album/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A bit of organisation: bug tracking</title>
		<link>http://blog.shamess.info/2011/11/07/a-bit-of-organisation-bug-tracking/</link>
		<comments>http://blog.shamess.info/2011/11/07/a-bit-of-organisation-bug-tracking/#comments</comments>
		<pubDate>Mon, 07 Nov 2011 15:19:25 +0000</pubDate>
		<dc:creator>Shane</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[bug tracking]]></category>
		<category><![CDATA[sound tiger]]></category>
		<category><![CDATA[unfuddled]]></category>

		<guid isPermaLink="false">http://blog.shamess.info/?p=1145</guid>
		<description><![CDATA[I&#8217;m not really at the part of my project which requires bug tracking just yet, since I&#8217;m just starting but I still have a use for it. When I start a new class, like the Import one I&#8217;ve just been &#8230; <a href="http://blog.shamess.info/2011/11/07/a-bit-of-organisation-bug-tracking/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m not really at the part of my project which requires bug tracking just yet, since I&#8217;m just starting but I still have a use for it.</p>
<p>When I start a new class, like the Import one I&#8217;ve just been working on, I like to write out the methods with their parameters I&#8217;m expecting. This was easy this time, since I had class diagrams to follow, but usually this helps me notice logical inconsistencies in the way I think it should work. Then I quickly run through and fill out the methods with their general purpose.</p>
<p>At that point, I usually notice small bugs, or since I just want to have something to ship, edge cases which aren&#8217;t handled well. Typically I&#8217;ll add a double-hash-comment, like <code>## This will fail if we've not been given an absolute path.</code> And then later, once I&#8217;ve done the main focus of the class I&#8217;ll do a directory wide search for ## and fix those issues.</p>
<p>I realised that&#8217;s a fair bit informal, and can lead to unexpected results if anyone but me uses the software. It&#8217;s easy to miss these comments if a search doesn&#8217;t pick up on them, or I forget to look out for them. They&#8217;re very much &#8220;out of site out of mind&#8221; issues.</p>
<p>That&#8217;s why I wanted a super lightweight bug tracker (though, my purpose is more of an issue tracker I suppose). I wanted to use FogBugz, but they don&#8217;t have a free version. Trac and Bugzilla are both too overkill, especially for a one man team.</p>
<p>Stackoverflow pointed me towards <a href="http://http://unfuddle.com/">Unfuddle </a>though.</p>
<div id="attachment_1146" class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.shamess.info/wp-content/uploads/2011/11/unfuddle-soundtiger.png"><img class="size-medium wp-image-1146" title="Unfuddled Dashboard" src="http://blog.shamess.info/wp-content/uploads/2011/11/unfuddle-soundtiger-300x193.png" alt="" width="300" height="193" /></a><p class="wp-caption-text">Unfuddled dashboard for Sound Tiger</p></div>
<p>It&#8217;s much lighter than the alternatives, or at least the UI makes it feel less intimidating. Most importantly they have a free package for people with small teams, like me.</p>
<p>Also, which was a nice addition, they let me upload my git repo. That&#8217;s another place I can consider my software backed up.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.shamess.info/2011/11/07/a-bit-of-organisation-bug-tracking/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quick aside on Paper Prototyping</title>
		<link>http://blog.shamess.info/2011/11/03/quick-aside-on-paper-prototyping/</link>
		<comments>http://blog.shamess.info/2011/11/03/quick-aside-on-paper-prototyping/#comments</comments>
		<pubDate>Thu, 03 Nov 2011 18:43:00 +0000</pubDate>
		<dc:creator>Shane</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[paper prototyping]]></category>
		<category><![CDATA[sound tiger]]></category>
		<category><![CDATA[user experience]]></category>
		<category><![CDATA[user interface]]></category>

		<guid isPermaLink="false">http://blog.shamess.info/?p=1143</guid>
		<description><![CDATA[Ironically, you can&#8217;t actually use thin paper. The bits are too fiddly. Fortunately I have card stock in my crafts box, so I&#8217;m going to try using that.]]></description>
			<content:encoded><![CDATA[<p>Ironically, you can&#8217;t actually use thin paper. The bits are too fiddly. Fortunately I have card stock in my crafts box, so I&#8217;m going to try using that.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.shamess.info/2011/11/03/quick-aside-on-paper-prototyping/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Indenting HTML: WHY!?</title>
		<link>http://blog.shamess.info/2011/11/02/indenting-html-why/</link>
		<comments>http://blog.shamess.info/2011/11/02/indenting-html-why/#comments</comments>
		<pubDate>Wed, 02 Nov 2011 08:28:02 +0000</pubDate>
		<dc:creator>Shane</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[rant]]></category>

		<guid isPermaLink="false">http://blog.shamess.info/?p=1140</guid>
		<description><![CDATA[The problem with creating pretty HTML that&#8217;s indented nicely is that it&#8217;s a language that can&#8217;t really be indented! It sometimes have an affect on the actual look of the page. For instance with a &#60;pre&#62; tag, trying to indent &#8230; <a href="http://blog.shamess.info/2011/11/02/indenting-html-why/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>The problem with creating pretty HTML that&#8217;s indented nicely is that it&#8217;s a language that can&#8217;t really be indented! It sometimes have an affect on the actual look of the page.</p>
<p>For instance with a &lt;pre&gt; tag, trying to indent that nicely with the rest of your page will make the output shifted massively to the right. The only way to fix it is to have the pre tag the only piece of the source that isn&#8217;t indented, which looks uglier than having no indentation at all.</p>
<p>Which inefficient weirdos are debugging by looking at their source and not using Firebug anyway? In your editor you should have &#8220;highlight matching tags&#8221; turned on. It adds completely useless characters to the page, which are literally invisible. You&#8217;re paying for those bytes, and the user is being made to wait fractions of seconds (which Google ranks you on) longer.</p>
<p>Just stop doing it!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.shamess.info/2011/11/02/indenting-html-why/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Playing MP3 Files In Every Browser</title>
		<link>http://blog.shamess.info/2011/10/31/playing-mp3-files-in-every-browser/</link>
		<comments>http://blog.shamess.info/2011/10/31/playing-mp3-files-in-every-browser/#comments</comments>
		<pubDate>Mon, 31 Oct 2011 19:24:04 +0000</pubDate>
		<dc:creator>Shane</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[audio]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[jplayer]]></category>
		<category><![CDATA[jsmad]]></category>
		<category><![CDATA[sound tiger]]></category>

		<guid isPermaLink="false">http://blog.shamess.info/?p=1138</guid>
		<description><![CDATA[I&#8217;ve been looking into various ways of being able to playing MP3 files within the browser, trying to avoid using Flash. Spoiler alert: You can&#8217;t do it just yet. I&#8217;ve ended up using another player called jPlayer. (Demo on my &#8230; <a href="http://blog.shamess.info/2011/10/31/playing-mp3-files-in-every-browser/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been looking into various ways of being able to playing MP3 files within the browser, trying to avoid using Flash. Spoiler alert: <strong>You can&#8217;t do it just yet.</strong></p>
<p>I&#8217;ve ended up using another player called <a href="http://jplayer.org/">jPlayer</a>. (<a href="http://shamess.info/soundtiger/course_docs/proto/streaming/">Demo on my prototype page.</a>) It&#8217;s a jQuery library which uses HTML5 where ever possible but is able to fall back to Flash if it&#8217;s needed, like in Firefox.</p>
<p>The Flash player is invisible when you end up using it, and you control it entirely through the Javascript, which means your UI can be however you want it to look.</p>
<p>I was raving about jsMad, but it doesn&#8217;t look like it&#8217;s <a href="http://stackoverflow.com/questions/7877940/how-do-i-use-jsmad">up to the task just yet</a>. The people behind it are planning to spend more time on it in the future though, so that&#8217;s definitely exciting.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.shamess.info/2011/10/31/playing-mp3-files-in-every-browser/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Risk analysis</title>
		<link>http://blog.shamess.info/2011/10/03/risk-analysis/</link>
		<comments>http://blog.shamess.info/2011/10/03/risk-analysis/#comments</comments>
		<pubDate>Mon, 03 Oct 2011 17:33:05 +0000</pubDate>
		<dc:creator>Shane</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[risk assessment]]></category>
		<category><![CDATA[sound tiger]]></category>

		<guid isPermaLink="false">http://blog.shamess.info/?p=1107</guid>
		<description><![CDATA[An important part of the development process, and especially at the start, is keeping an eye out for issues that could arise. And then just to be one step a head of the game, decided how you will get over &#8230; <a href="http://blog.shamess.info/2011/10/03/risk-analysis/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>An important part of the development process, and especially at the start, is keeping an eye out for issues that could arise. And then just to be one step a head of the game, decided how you will get over those hurdles once they do come.</p>
<p>Hardware failure or loss of data is a constant concern since there are so many variables which make them so likely. It&#8217;s actually surprising how few cases of data loss I&#8217;ve come across. Between losing a flash drive, or a hard drive dying, or burst pipes destroying my machine, and the many hundreds of other ways which data can be lost, it&#8217;s always important to have a back up.</p>
<p>To guard against this risk though I&#8217;m using a distributed version control package (Git) to keep my code (and all my course docs) in a number of places, and all synced up at any one time. I have a repository on my laptop, on my desktop, and on my server. My server is hosted with AWS, and so is redundantly backed up by Amazon all over the world. To guard against bad administration of my server, and losing data that way, I have various snapshots of my server which I take once a week and keep for a month or two.</p>
<p>Another unlikely but constant threat is prolonged illness which means I can&#8217;t get work done on time. To avoid this I could make some lifestyle changes, like eating more fruit. However, if I do fall ill I have given myself a week at Christmas, and almost three weeks before the deadline which are empty on my Gantt chart. This time could be used to catch up.</p>
<p>An immediate risk is to do with the legal and technical issues around having the browser play an MP3 file. I&#8217;m not sure if modern browser support the playing of MP3 encoded audio files. This is an important issue since the majority of people keep their music in that file type. Without the ability for them to be listened to Sound Tiger will be almost useless.</p>
<p>Some quick research tells me that Firefox (my main browser, and so the one I most definitely wanted to support) <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=541286">doesn&#8217;t intend to add support for MP3 files</a>. MP3 <em>is</em> a patent encumbered file format, but as is GIF and that&#8217;s still supported in every browser. Nevertheless, Mozilla have decided against adding support. There are javascript based tools to <a href="http://jsmad.org/">bring MP3 playing abilities to Firefox</a> though. That means I&#8217;ll have to rely on the support of a third party library.</p>
<p>I&#8217;ve given myself a week of research time into the methods of playing audio though, which will including experimenting with that javascript library. If at the end of that week I haven&#8217;t been able to work out how to play MP3 files in Firefox I&#8217;ll have to withdraw support for it (as a user, and for Sound Tiger). Another way around this would be to attempt to convert the file formats into a more open format on the server, once a user uploads their music.</p>
<p>Ignoring the fact that I might not be able to use MP3 files for a moment, simply <em>playing</em> the files could be considered a risk to the project. The &lt;audio&gt; element, which would be used to avoid using Flash, is still fairly young both in the specification of HTML5 and in support for it with browsers. At any moment, a browser manufacturer could decide to withdraw support for it.</p>
<p>This isn&#8217;t very likely however. Other the past few years, most noticeably with Internet Explorer, browser creators are beginning to see that the way forward is a standardised web, rather than a competitive one. More browsers are happier to follow the standards set out by W3C. The likelihood of W3C removing the audio element is almost zero; and even if they did, the committee works so slowly there would be discussion of its removal for many years before anything actually happens.</p>
<p>I thin support for the &lt;audio&gt; element will only get more widespread, rather than revoked.</p>
<p>In the unlikely event, a contingency for this would be to use Flash, however. Despite the fact that I really wanted to avoid using it, as much is said in my project contract, it will be the ultimate fall back. This is also the case for if there is really no way to have Firefox play MP3 files.</p>
<p>All in all, I think those issues aren&#8217;t likely to crop up, and if they do I have thought out contingencies which will allow the project to be finished by the deadline.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.shamess.info/2011/10/03/risk-analysis/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Project Management: Issues With Flying Solo</title>
		<link>http://blog.shamess.info/2011/10/02/issues-with-flying-solo/</link>
		<comments>http://blog.shamess.info/2011/10/02/issues-with-flying-solo/#comments</comments>
		<pubDate>Sun, 02 Oct 2011 17:42:47 +0000</pubDate>
		<dc:creator>Shane</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[paper prototyping]]></category>
		<category><![CDATA[rapid application development]]></category>
		<category><![CDATA[sound tiger]]></category>

		<guid isPermaLink="false">http://blog.shamess.info/?p=1105</guid>
		<description><![CDATA[I&#8217;m part way through reading two books; Inside RAD (US), and Paper Prototyping (US). Both these books offer really interesting ideas about the development process of software. Inside RAD talks about rapid application development &#8211; making a piece of software &#8230; <a href="http://blog.shamess.info/2011/10/02/issues-with-flying-solo/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m part way through reading two books; <a href="http://www.amazon.co.uk/gp/product/0070342237/ref=as_li_ss_tl?ie=UTF8&amp;tag=allroundnews-21&amp;linkCode=as2&amp;camp=1634&amp;creative=19450&amp;creativeASIN=0070342237">Inside RAD</a> (<a href="http://www.amazon.com/gp/product/0070342237/ref=as_li_ss_tl?ie=UTF8&amp;tag=shasblo093-20&amp;linkCode=as2&amp;camp=217145&amp;creative=399373&amp;creativeASIN=0070342237">US</a>), and <a href="http://www.amazon.co.uk/gp/product/1558608702/ref=as_li_ss_tl?ie=UTF8&amp;tag=allroundnews-21&amp;linkCode=as2&amp;camp=1634&amp;creative=19450&amp;creativeASIN=1558608702">Paper Prototyping</a> (<a href="http://www.amazon.com/gp/product/1558608702/ref=as_li_ss_tl?ie=UTF8&amp;tag=shasblo093-20&amp;linkCode=as2&amp;camp=217145&amp;creative=399369&amp;creativeASIN=1558608702">US</a>).</p>
<p>Both these books offer really interesting ideas about the development process of software.</p>
<p><em>Inside RAD</em> talks about rapid application development &#8211; making a piece of software in 90 days or less. This fits my project perfectly, since I wanted to have two release iterations of ninety days each anyway (I have until April, so that works out pretty well). It&#8217;s a quick, agile method which I&#8217;m really attracted too.</p>
<p><em>Paper Prototyping</em> deals with the novel idea of having actual paper versions of your user interface, and then getting a few actual users to &#8220;use&#8221; the application in the medium. It allows you to see what a user is expecting to happen when they &#8220;press&#8221; a certain button, or see their flow of actions when you ask them to do something. You get all this user experience research before having even written a line of code. If you need to change something, you just rub it out and sketch in a new design whilst the user is still sitting there!</p>
<p>The issue I&#8217;ve come across with both of these methods though is that they are tailored for a <em>group</em> of people working on the project. RAD requires meetings and discussion from a number of people who are experts in their role, and <em>then</em> a scribe to take minutes. Paper prototyping requires a person to watch the user, and give instructions, and write down their actions, and also someone to act as the &#8220;computer&#8221;.</p>
<p>Whilst the ethos of both these methods will definitely help my project, and lessons will be learnt, actually putting them into practice needs to tweaking or outright rewriting of the techniques.</p>
<p>Regardless though, I&#8217;m planning on doing some paper prototyping in early December. I&#8217;ll likely have to train a friend to be the computer, whilst I take lead. I&#8217;ll also be sticking to the two 90 day iterations.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.shamess.info/2011/10/02/issues-with-flying-solo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

