<?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:rssdatehelper="urn:rssdatehelper"><channel><title>Copper Starfish Blog</title><link>http://www.copperstarfish.com</link><pubDate></pubDate><generator>umbraco</generator><description>Musings of New Apps and General iPhone Development</description><language>en</language><item><title>Test First Works.</title><link>http://www.copperstarfish.com/blog/2009/8/18/test-first-works</link><pubDate>Tue, 18 Aug 2009 19:18:10 GMT</pubDate><guid>http://www.copperstarfish.com/blog/2009/8/18/test-first-works</guid><content:encoded><![CDATA[ 
<p>I've been a big advocate of Agile development for a while.
&nbsp;The only thing is, I hadn't really done any true Agile
development.</p>

<p>I've worked in an agile environment with an already designed
system, and that worked well. We managed to do everything required,
get it in on time, and add a bit more than was expected to boot.
&nbsp;We could never have done any of that work without tools like
CruiseControl(.Net in this instance), unit testing, code coverage,
or the metrics supplied by a myriad of other tools. &nbsp;Not to
mention the 3 massive architecture re-shuffles we did (ahh, we
forgot a few things :-s).</p>

<p>And so the other day, as a skills sharpening excercise, and a
means of doing something I'd wanted to do for a while, I began the
task of upgrading an application I started writing 6-8 years ago,
and shelved due to conflicts with my work some 4 years ago.
&nbsp;At the time, I had no idea about Agile and even less about
Design Patterns.</p>

<p>My task: to upgrade the app using a whole host of cutting edge
technologies&nbsp;and use Design Patterns judiciously throughout.
&nbsp;I pretty much had a design in my head, but when I started
coding it, I got a little stuck. &nbsp;I didn't quite know where to
begin this journey, and of course I wanted it to be perfect.
&nbsp;So I dawdled round a few classes and didn't really get
anything constructive.</p>

<p>Eventually, it struck me. &nbsp;<strong>Test first!</strong> So
I took a step back, and re-started my development in a TDD manner.
&nbsp;Interestingly, the app took shape in a near heart-beat.
&nbsp;One test had set up a structure of about 10 classes and
interfaces, and spawned another 50 tests to test the functionality
represented in those new application artifacts. &nbsp;I'm still a
long way away from the re-written app I set out to develop, but the
exercise highlighted to me two very important lessons.</p>

<ol>
<li>TDD does work. &nbsp;There's absolutely no doubt in my mind
about it. (and yes, I do know that TDD is not Agile)</li>

<li>I've got a long way to go to really be a true Agile guy.</li>
</ol>

<p>The situation might be slightly skewed by the fact that I've
thought about this application almost every day for the last 8
years, regardless of my ability to program it, but then how many
developments are truly greenfield? &nbsp;Almost every app I know
takes a little something from somewhere else, and that's as good a
starting point as any. &nbsp;Before you know it, you'll have a full
application architecture using Agile, and writing those pesky
little tests first.</p>

<p>Enjoy.</p>
]]></content:encoded></item><item><title>YouTube Channel Launched</title><link>http://www.copperstarfish.com/blog/2009/8/17/youtube-channel-launched</link><pubDate>Mon, 17 Aug 2009 12:19:52 GMT</pubDate><guid>http://www.copperstarfish.com/blog/2009/8/17/youtube-channel-launched</guid><content:encoded><![CDATA[ 
<p>We launched our <a
href="http://www.youtube.com/user/copperstarfishltd"
target="_blank">YouTube channel</a> last week including a video of
our newest app (currently in review with Apple) - <a
href="/apps/itouch-it" title="iTouch It">iTouch It</a>.</p>

<p>Check it out!...</p>

<p>&nbsp;</p>

<p><object width="425" height="344"
data="http://www.youtube.com/v/xIqQZtfHlyY&amp;hl=en&amp;fs=1&amp;"
type="application/x-shockwave-flash"><param name="allowFullScreen"
value="true" />
<param name="allowscriptaccess" value="always" />
<param name="src"
value="http://www.youtube.com/v/xIqQZtfHlyY&amp;hl=en&amp;fs=1&amp;" />
<param name="allowfullscreen" value="true" />
</object></p>
]]></content:encoded></item><item><title>Using subversion to check in apps</title><link>http://www.copperstarfish.com/blog/2009/8/10/using-subversion-to-check-in-apps</link><pubDate>Mon, 10 Aug 2009 23:36:54 GMT</pubDate><guid>http://www.copperstarfish.com/blog/2009/8/10/using-subversion-to-check-in-apps</guid><content:encoded><![CDATA[ 
<p>We came across an interesting problem whilst trying to build an
app with ad-hoc distribution for testing.<br />
<br />
We use subversion for version control and as a central storage for
all our source code and general documents etc. and using Versions
as our tool to check out files (Versions is awesome by the way!) We
were building an app on the mac that had the distribution profile
installed and putting it on an iPhone. Things worked fine.<br />
<br />
The problem came when we were then checking the .app file into the
respository, checking it out on another mac and trying to install
on another iPhone using iTunes. iTunes kept showing the message "An
unexpected error has occurred".<br />
<br />
We were stumped for a good few hours assuming this was something to
do with the certificate signing until one of us had a brainstorm -
.app files are like folders and so subversion was treating them as
such and placing a .svn hidden directory within it. This was
screwing with iTunes and so it would refuse to install the
application.<br />
<br />
The solution was to use .ipa files - basically a zip file with a
certain structure that iTunes understands as an application. To
create an ipa file do the following...<br />
<br />
1. Create a folder called payload and place your app file in
it.<br />
<br />
2. Zip the folder<br />
<br />
3. Rename the file with the name of your application and give it an
ipa extension.<br />
<br />
Subversion will treat these as a single file (just like it does any
other zip file) and so these are left intact. Once we did this the
application installed correctly on whatever machine checked the
file out.</p>
]]></content:encoded></item></channel></rss>
