<?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>Mobster Lobster : Ruthless Crustaceans</title>
	<atom:link href="http://www.mobsterlobster.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.mobsterlobster.com/blog</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Mon, 10 Aug 2009 07:03:23 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>SlidePix 1.0 Released!</title>
		<link>http://www.mobsterlobster.com/blog/2009/08/slidepix-1-0-released/</link>
		<comments>http://www.mobsterlobster.com/blog/2009/08/slidepix-1-0-released/#comments</comments>
		<pubDate>Mon, 10 Aug 2009 07:03:23 +0000</pubDate>
		<dc:creator>wwarby</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.mobsterlobster.com/blog/?p=70</guid>
		<description><![CDATA[SlidePix 1.0 finally made it through the review process 12 days after the last submission. It&#8217;s available now from the App Store here.
SlidePix is a version of the classic puzzle game where you have to rearrange a picture split into a tile grid with a single tile missing in the shortest time and with the [...]]]></description>
			<content:encoded><![CDATA[<div class="wp-caption alignleft" style="width: 155px"><a href="itms://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=324538487&amp;mt=8&amp;s=143441"><img title="Available on the App Store" src="http://www.mobsterlobster.com/images/button-appstore.png" alt="" width="145" height="66" /></a><p class="wp-caption-text">Get it Now</p></div>
<p><a href="/slidepix">SlidePix</a> 1.0 finally made it through the review process 12 days after the last submission. It&#8217;s available now from the App Store <a href="itms://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=324538487&amp;mt=8&amp;s=143441">here</a>.</p>
<p>SlidePix is a version of the classic puzzle game where you have to rearrange a picture split into a tile grid with a single tile missing in the shortest time and with the fewest number of moves.</p>
<p>FEATURES:</p>
<ul>
<li>Create an instant puzzle from your own photo library or iPhone camera!</li>
<li>Re-size and reposition the selected photo</li>
<li>Have the game choose a photo randomly from the included set of 25 beautiful photos</li>
<li>Choose between 3&#215;3, 4&#215;4, 5&#215;5 and 6&#215;6 grids</li>
<li>Track your scores and times automatically</li>
<li>Hold down a button to view hints in case you get stuck</li>
<li>Complete with sound effects</li>
<li>Pause and restore previous session in case you get interrupted while playing</li>
<li>Animatedly shuffles the tiles with each new game</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.mobsterlobster.com/blog/2009/08/slidepix-1-0-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Company Name Woes for Social Networking Sites</title>
		<link>http://www.mobsterlobster.com/blog/2009/07/company-name-woes-for-social-networking-sites/</link>
		<comments>http://www.mobsterlobster.com/blog/2009/07/company-name-woes-for-social-networking-sites/#comments</comments>
		<pubDate>Sat, 25 Jul 2009 16:47:39 +0000</pubDate>
		<dc:creator>wwarby</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[company name]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[mobsterlobster]]></category>
		<category><![CDATA[social media]]></category>
		<category><![CDATA[twitter]]></category>
		<category><![CDATA[web 2.0]]></category>

		<guid isPermaLink="false">http://www.mobsterlobster.com/blog/?p=63</guid>
		<description><![CDATA[I've owned the mobsterlobster.com domain for about 5 years so when I decided to start a software development business, it seemed like as good a name as any to use since I already had the domain name. What I didn't factor into my considerations was that today's Internet isn't about just having your own site; you need a presence on Twitter, Facebook and YouTube at the very least.]]></description>
			<content:encoded><![CDATA[<div class="wp-caption alignleft" style="width: 250px"><a href="http://www.flickr.com/photos/bensheldon/212159782/"><img title="Web 2.0" src="http://farm1.static.flickr.com/59/212159782_9adee5b425_m.jpg" alt="Credit: bensheldon" width="240" height="108" /></a><p class="wp-caption-text">Credit: bensheldon</p></div>
<p>I&#8217;ve owned the <a href="http://www.mobsterlobster.com">mobsterlobster.com</a> domain for about 5 years (not counting a 1 year gap where I forgot to renew it and some unscrupulous despot snatched it up to fill it with an auto-generated page of adverts about sea food restaurants), so when I decided to start a software development business, it seemed like as good a name as any to use since I already had the domain name.</p>
<p>What I didn&#8217;t factor into my considerations was that today&#8217;s Internet isn&#8217;t  about just having your own site. If you&#8217;re planning on building up any kind of following for your brand, you need a presence on <a href="http://twitter.com">Twitter</a>, <a href="http://www.facebook.com">Facebook</a> and <a href="http://www.youtube.com">YouTube</a> at the very least and probably several other social media sites. Too late in the day I realised that somebody else had the Twitter handle mobsterlobster, and my plea for the rightful owner to hand it over fell on deaf ears (which is absolutely fair &#8211; I have no claim whatsoever to the name). Due to length restrictions on Twitter, my next choice (mobsterlobsterapps) was not an option so I was left with the rather lame <a href="http://twitter.com/mlobster">mlobster</a> handle I&#8217;m now using.<span id="more-63"></span></p>
<p>If that wasn&#8217;t annoying enough, both mobsterlobster and mlobster were already taken on YouTube so I went back to the <a href="http://www.youtube.com/mobsterlobsterapps">mobsterlobsterapps</a> handle that I wanted for Twitter, so now I have three variants of the company name. Then I went over to Facebook to sort my presence out over there and that situation is just a mess in it&#8217;s own right.</p>
<p>Facebook lets you create what it calls a &#8220;page&#8221; to promote your business (which is actually a great deal more than a page), but it stops short of allowing you to do most of the useful things you might want to do with it. Recently Facebook started allowing users to create &#8220;vanity&#8221; URLs for their personal profiles which look something like <a class="linkification-ext" title="Linkification: http://facebook.com/myname" href="http://facebook.com/myname">facebook.com/myname</a>, but they have not extended this feature to where it would be really useful &#8211; in promoting businesses. Needless to say, somebody has already snatched up the one I wanted, <a class="linkification-ext" title="Linkification: http://facebook.com/mobsterlobster" href="http://facebook.com/mobsterlobster">facebook.com/mobsterlobster</a>, not that I would have been able to use it anyway. So I&#8217;m stuck with <a href="http://www.facebook.com/pages/Mobster-Lobster/111282171221">http://www.facebook.com/pages/Mobster-Lobster/111282171221</a> for my Facebook presence. Great. That one just rolls of the tongue doesn&#8217;t it?</p>
<p>None of this represents a major problem exactly, it just somewhat dilutes the brand identity. My brand is worth nothing at all right now as I&#8217;m just starting out but I&#8217;m hoping that won&#8217;t always be the case and already I&#8217;m regretting the choices I made with the company name. I&#8217;ve always liked coined names like &#8220;Pixoria&#8221;, &#8220;Expedia&#8221;, &#8220;Reebok&#8221; etc which don&#8217;t have any meaning at all outside of the company name, but those names have another very distinct advantage: unless somebody else has already used the name (in which case you shouldn&#8217;t be using it anyway), it&#8217;s a safe bet that all related domain names and &#8220;handles&#8221; on social networking sites will be available for the taking. Next time I&#8217;m picking a company name, that&#8217;s the way I&#8217;ll be going.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mobsterlobster.com/blog/2009/07/company-name-woes-for-social-networking-sites/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SlidePix 1.0 Rejected for Crashing Bug</title>
		<link>http://www.mobsterlobster.com/blog/2009/07/slidepix-1-rejected-for-crashing-bug/</link>
		<comments>http://www.mobsterlobster.com/blog/2009/07/slidepix-1-rejected-for-crashing-bug/#comments</comments>
		<pubDate>Sat, 25 Jul 2009 08:33:23 +0000</pubDate>
		<dc:creator>wwarby</dc:creator>
				<category><![CDATA[Apps]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[SlidePix]]></category>
		<category><![CDATA[app store]]></category>
		<category><![CDATA[rejected]]></category>
		<category><![CDATA[review process]]></category>
		<category><![CDATA[submission]]></category>

		<guid isPermaLink="false">http://www.mobsterlobster.com/blog/?p=60</guid>
		<description><![CDATA[Better that Apple find a bug like this than the first few users find it and give me a thrashing on the ratings system. I had a crasher in SlidePix that occurred the first time you run the application after installing it.]]></description>
			<content:encoded><![CDATA[<p>Urgh. Well, it&#8217;s things like this that make me appreciate the app store review process. Better that Apple find a bug like this than the first few users find it and give me a thrashing on the ratings system. I had a crasher in <a href="/slidepix">SlidePix</a> that occurred the first time you run the application after installing it. It was only discoverable by completely removing the app from my phone, which I did very rarely during development since doing so deleted all my high scores &#8211; I had probably seen the bug before and forgotten about it. Note to self: before submitting an app to Apple, always test cleanly installing said app!</p>
<p>On the up side, Apple rejected my app in just five days which hopefully means the newly patched app release will be up in a week or so &#8211; unless Apple find any more bugs of course.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mobsterlobster.com/blog/2009/07/slidepix-1-rejected-for-crashing-bug/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SlidePix Submitted to App Store</title>
		<link>http://www.mobsterlobster.com/blog/2009/07/slidepix-submitted-to-app-store/</link>
		<comments>http://www.mobsterlobster.com/blog/2009/07/slidepix-submitted-to-app-store/#comments</comments>
		<pubDate>Wed, 22 Jul 2009 08:17:43 +0000</pubDate>
		<dc:creator>wwarby</dc:creator>
				<category><![CDATA[Apps]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[SlidePix]]></category>
		<category><![CDATA[app]]></category>
		<category><![CDATA[app store]]></category>
		<category><![CDATA[game]]></category>
		<category><![CDATA[release]]></category>

		<guid isPermaLink="false">http://www.mobsterlobster.com/blog/?p=57</guid>
		<description><![CDATA[My first iPhone application, SlidePix, has been submitted to Apple and is currently under review. With any luck it will sail through the approval process in about a week and appear on the iTunes Store. It&#8217;s taken about 5 weeks of hard work from start to finish but that included learning the Objective-C programming language [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_10" class="wp-caption alignleft" style="width: 110px"><img class="size-full wp-image-10" title="SlidePix" src="http://www.mobsterlobster.com/blog/wp-content/uploads/2009/07/002.jpg" alt="SlidePix" width="100" height="150" /><p class="wp-caption-text">SlidePix</p></div>
<p>My first iPhone application, <a href="/slidepix">SlidePix</a>, has been submitted to Apple and is currently under review. With any luck it will sail through the approval process in about a week and appear on the iTunes Store. It&#8217;s taken about 5 weeks of hard work from start to finish but that included learning the Objective-C programming language and building this website, so I&#8217;m feeling pleased with myself.</p>
<p>It&#8217;s been fun developing this little game and I will continue to develop it further as long as there&#8217;s some interest in it. Two features I had planned for the initial release but dropped to get it completed more quickly are online scoreboards and French localisation (my mother speaks fluent French, so that should be a fairly quick win).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mobsterlobster.com/blog/2009/07/slidepix-submitted-to-app-store/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iPhone SDK: Responding to the Volume Rocker</title>
		<link>http://www.mobsterlobster.com/blog/2009/07/iphone-sdk-responding-to-the-volume-rocker/</link>
		<comments>http://www.mobsterlobster.com/blog/2009/07/iphone-sdk-responding-to-the-volume-rocker/#comments</comments>
		<pubDate>Sun, 19 Jul 2009 21:49:47 +0000</pubDate>
		<dc:creator>wwarby</dc:creator>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.mobsterlobster.com/blog/?p=33</guid>
		<description><![CDATA[Have you ever wanted to use the iPhone's volume rocker buttons to control your app's volume but weren't sure how to go about it? This is how I did it. Possibly not the only way and certainly not the cleanest - in fact, it's a downright dirty hack, but it does work.]]></description>
			<content:encoded><![CDATA[<div id="attachment_35" class="wp-caption alignleft" style="width: 160px"><img class="size-thumbnail wp-image-35" title="Speaker" src="http://www.mobsterlobster.com/blog/wp-content/uploads/2009/07/Speaker1-150x150.png" alt="Sound" width="150" height="150" /><p class="wp-caption-text">Sound</p></div>
<p>For the game I have just finished developing I have a few very short and simple sound effects. Right away as I added the first one it was clear I would have to add some way of controlling the volume because the sound was inappropriately loud at whatever setting I had my phone on at the time.</p>
<p>I didn&#8217;t want to make the user go to the settings page and pull a slider up or down just to change the volume when there&#8217;s a perfectly good hardware volume rocker on the side of the iPhone, but when I pressed the volume rocker in my game, I was changing the volume of the phone ringer. So how have other people done it I wondered? Surely there had to be a way to hook into the volume rocker press event using Cocoa Touch.<span id="more-33"></span></p>
<p>After a few minutes searching the SDK documentation it was clear there is not a standard Cocoa Touch API for this and in fact, Apple confirmed as much to me when I used one of my then soon to expire free support incidents to ask them out it. So again, now had other people done it? And not just a few &#8211; virtually every game behaves in the way I wanted to make mine behave and couldn&#8217;t figure out how. Then by pure chance I pressed the volume rocker at the exact moment when my 0.2 second click sound was playing, and eureka! it changed the volume of my app. By trial and error, I learned the exact behaviour I desired was enabled by default on the phone without my having to do anything at all, just as long as I touched the rocker button <em>whilst a sound was playing</em>.</p>
<p>That was great &#8211; it even persists the volume between runs of the application without my having to write any additional code &#8211; it was everything I wanted, except for one tiny problem; all my sounds were incredibly short. Even if they weren&#8217;t, this behaviour is unexpected and likely to confuse the user. I wanted the game to respond to the volume rockers all the time, even when no sound was playing. The popular <a href="http://www.firemint.com/flightcontrol">Flight Control</a> game has the exact behaviour I was looking for.</p>
<p>So I went and asked my old pal Google how those geniuses at Firemint had done it. Well, it turns out there&#8217;s a hack, and a really dirty one at that, but it works. I was using the AVAudioPlayer Objective-C class to play my sounds. Once initialized with the URL path of a bundled audio file, the AVAudioPlayer instance can be made to buffer it&#8217;s sound in readiness to play the sound by calling the &#8220;prepareToPlay&#8221; method. The idea is that you call &#8220;play&#8221; soon after. Well it turns out, if you initialize an instance of AVAudioPlayer with a valid audio file and call &#8220;prepareToPlay&#8221; on it but never call &#8220;play&#8221;, that&#8217;s enough to put the application into a permanent state of responsiveness to the volume rocker.</p>
<p>I felt dirty after implementing this hack and I&#8217;ve submitted a feature request for a better way of doing it at <a href="http://bugreport.apple.com">bugreport.apple.com</a>, and I encourage anyone with similar requirements to do the same, but it&#8217;s quite effective. The only small problem I found is that a few seconds after calling prepareToPlay on my otherwise unused AVAudioPlayer instance I see a small leak coming from the instance even though I have kept a reference to the object as class member variable. There could be a way around this that I haven&#8217;t discovered yet but since it only leaks a tiny amount of memory and it only happens once, I haven&#8217;t gone to any great effort to resolve it.</p>
<p>If anyone knows a better way of doing this please do comment and explain how. I feel somewhat dubious that this is how every developer has achieved interaction with the volume rocker button, especially on such popular titled as <a href="http://www.firemint.com/flightcontrol">Flight Control</a> but I can&#8217;t find another way. Unfortunately I can&#8217;t seem to track down the forum post that lead me to this discovery but if I find it I will post a link and credit the wise man (or woman) who discovered the hack.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mobsterlobster.com/blog/2009/07/iphone-sdk-responding-to-the-volume-rocker/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Objective-C for a Visual Basic / JavaScript Programmer</title>
		<link>http://www.mobsterlobster.com/blog/2009/07/objective-c-for-a-visual-basic-javascript-programmer/</link>
		<comments>http://www.mobsterlobster.com/blog/2009/07/objective-c-for-a-visual-basic-javascript-programmer/#comments</comments>
		<pubDate>Sat, 18 Jul 2009 20:43:51 +0000</pubDate>
		<dc:creator>wwarby</dc:creator>
				<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[cocoa]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[vb]]></category>
		<category><![CDATA[visual basic]]></category>

		<guid isPermaLink="false">http://www.mobsterlobster.com/blog/?p=17</guid>
		<description><![CDATA[I knew what roughly what Objective-C was like before I decided to learn it and I had a really solid grounding on Object-oriented programming from years working in Visual Basic.NET and object-oriented JavaScript but when I actually applied myself to the task, I found I was in for a much tougher ride than I had expected.]]></description>
			<content:encoded><![CDATA[<div id="attachment_21" class="wp-caption alignleft" style="width: 160px"><img class="size-thumbnail wp-image-21" title="X-Code" src="http://www.mobsterlobster.com/blog/wp-content/uploads/2009/07/extra-xcode-150x150.png" alt="X-Code" width="150" height="150" /><p class="wp-caption-text">X-Code</p></div>
<p>I knew what roughly what Objective-C was like before I decided to learn it. I hadn&#8217;t really ever written C or C++ (or even C#) before, but I had tweaked and compiled code written by others in all of them and I had a really solid grounding on Object-oriented programming from years working in Visual Basic.NET and object-oriented JavaScript, insofar as either of those languages support object-orientation, but when I actually applied myself to the task, I found I was in for a much tougher ride than I had expected.</p>
<p>My first instinct was to just start a project blind and try to find my way by feel. I quickly realised Objective-C and X-Code were just too different than anything I was familiar with, so I posted on the <a href="http://devforums.apple.com">Apple Developer forums</a> asking for recommendations on some online learning resources. On a recommendation from a user, I picked up a copy of <a href="http://www.amazon.com/Beginning-iPhone-Development-Exploring-SDK/dp/1430216263/ref=dp_cp_ob_b_title_1">Beginning iPhone Development</a>. Another recommendation was for a series of video lectures from Stanford University that were available on iTunes U for free. I have read about the first third of the book and watched about half of the videos. Both were excellent learning resources and I recommend both to anyone starting out. Learning by reading though or even watching is something I prefer to avoid wherever possible. As soon as I&#8217;m off and running with a new system or language I prefer to learn by exploration.<span id="more-17"></span></p>
<p>Apple&#8217;s documentation is actually fantastic (far, far better than MSDN that comes with Visual Studio from Microsoft) and gives you real world sample code for most of the things you might want to do when starting out, and now that the NDA has been lifted the blogosphere and forum communities are starting to come alive with ready made solutions to problems and sample code for the taking. The community over at the <a href="http://devforums.apple.com/">Apple Developer forums</a> has been a tremendous source of help with my many questions too.</p>
<p>After completing about seven of the sample apps from the book I couldn&#8217;t face doing any more so I started a real project and figured I&#8217;d work the rest out as I went along. This approach worked really well because I chose a suitably modest goal for your first application for which I knew I would only need entry level iPhone programming skills. There were a lot of new concepts to learn and I knew I&#8217;d end up rewriting a lot of code as I learned the right ways of doing things so it was essential that I didn&#8217;t start off with a project that was more than I could handle.</p>
<p>The first surprise I had was how difficult I found it adopting X-Code as my new IDE. I&#8217;d only ever used Visual Studio for native platform development and Adobe Dreamweaver for the web, but I wasn&#8217;t expecting to have any trouble adapting to a new IDE for the iPhone but this was one of the more difficult learning experiences. X-Code has a concept called &#8220;NIB Files&#8221; which are a visual representation of views and windows, created in a tool called Interface Builder. Unlike Visual Basic forms, NIB files are not tightly coupled to a source code file. In Visual Basic all the IDE is doing for you is generating hidden source code at the top of a class file. In Interface Builder, the NIB files represent a packaged set of object instances that are &#8220;unbundled&#8221; at runtime when they are needed. Because they are not tightly integrated with one particular source code file, you can reuse them.</p>
<p>The re-usability of NIB files is a key element in the Model-View-Controller application architecture that Apple so love to evangelise about. The principal behind MVC is incredibly simple &#8211; it states that you the code that deals with your model (the data in your application) should be separate from the code that deals with your view (the presentation of the data to the user) which should be separate from the controller code, which is basically the glue that binds the model to the data. At first, MVC seemed to me like one of those vacant management acronyms you hear so often in the corporate world that really have much practical application, but it isn&#8217;t, not at all. I have always tried to write code that is reusable and always struggled, and the reason is because I wasn&#8217;t following the principals of MVC. My first piece of advice to anyone starting out in iPhone programming is that if you don&#8217;t already have a good understanding of MVC, go and read up on it before you do anything else.</p>
<p>After getting to grips with Interface Builder and NIB files, my next major problem was learning which classes and methods to use in which circumstances. It&#8217;s easy to take for granted the years of accumulated knowledge you build up when using a framework language like VB.NET or Java which provides an enormous library of ready-made code for you to consume, and to forget how frustrating it can be having to relearn that knowledge for a new framework.</p>
<p>Cocoa is like .NET &#8211; it contains classes for nearly everything you might want to do but it also contains some curious omissions. For example, it has no native support for JSON &#8211; incredible when you consider that JSON is fast becoming the language of choice for data transfer all over the Internet and the iPhone is touted as <em>the</em> mobile Internet device, but there you have it. Support for regular expressions is also scant &#8211; there&#8217;s a very old C implementation of POSIX regular expressions (which has a very limited feature set), and in the iPhone OS 3.0 there is proper support for them, albeit in quite an obscure and unexpected corner of the framework (NSPredicate if you&#8217;re curious).</p>
<p>The Objective-C language syntax, though very different than JavaScript and PHP and especially Visual Basic, was surprisingly easy to pick up because the language features are fundamentally no different than any other language, they&#8217;re just written differently. I did struggle with was understanding when to use C variables and when to use Objective-C objects &#8211; &#8220;int&#8221; variables vs &#8220;NSNumber&#8221; objects for example. I&#8217;m still getting the hang of this.</p>
<div id="attachment_25" class="wp-caption alignright" style="width: 189px"><img class="size-full wp-image-25" title="Debugger" src="http://www.mobsterlobster.com/blog/wp-content/uploads/2009/07/Debugger.jpg" alt="Debugger in X-Code" width="179" height="257" /><p class="wp-caption-text">Debugger in X-Code</p></div>
<p>Then finally, there&#8217;s debugging. Oh, how I have been spoiled by Microsoft with Visual Studio&#8217;s debugging suite and Firebug for debugging JavaScript. I didn&#8217;t realise just how much. For performance reasons, iPhone OS doesn&#8217;t support garbage collection and comes with a fairly feeble 128MB of RAM (although this has doubled in the iPhone 3GS). That means you have to manage your own memory allocation, and do it well. Having to do this made me realise just how lazy I was with memory management. I found I was forever crashing because I had released objects too early or leaking because I wasn&#8217;t releasing objects at all. Getting the balance right is harder than it seems, but it&#8217;s actually a lot easier if you follow some basic rules which Apple has set out has a very good document about <a href="http://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/MemoryMgmt/MemoryMgmt.html">memory management for iPhone development</a>.</p>
<p>Frankly I find the debugging tools in X-Code piss poor compared with what I&#8217;m used to. When your instance variables are pointers for example, instead of showing you the data at the memory address to which the pointer points, the debugger shows you the hex address of the memory address. Really helpful I&#8217;m sure. Theoretically VB&#8217;s &#8220;Edit and Continue&#8221; is present in X-Code with the &#8220;Fix&#8221; command, but I couldn&#8217;t get it to work. And there&#8217;s no immediate window or console command line for executing arbitrary code whilst the application is running. Some of the tools, particularly in performance analysis with &#8220;Instruments&#8221; are second to none, but overall I have found debugging to be the biggest source of frustration as I have been working my way slowly but surely into the exciting and hopefully lucrative world of developing for the iPhone.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mobsterlobster.com/blog/2009/07/objective-c-for-a-visual-basic-javascript-programmer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why I don&#8217;t support Internet Explorer 6</title>
		<link>http://www.mobsterlobster.com/blog/2009/07/why-i-dont-support-internet-explorer-6/</link>
		<comments>http://www.mobsterlobster.com/blog/2009/07/why-i-dont-support-internet-explorer-6/#comments</comments>
		<pubDate>Sat, 18 Jul 2009 15:38:46 +0000</pubDate>
		<dc:creator>wwarby</dc:creator>
				<category><![CDATA[Web Programming]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[ie6]]></category>
		<category><![CDATA[internet explorer]]></category>
		<category><![CDATA[policy]]></category>
		<category><![CDATA[rant]]></category>
		<category><![CDATA[web standards]]></category>

		<guid isPermaLink="false">http://www.mobsterlobster.com/blog/?p=3</guid>
		<description><![CDATA[Internet Explorer 6 was released in 2001. With the possible exception of earlier versions of Internet Explorer, it is indisputably the worst web browser ever created. It is full of bugs, hopelessly insecure, totally disrespectful of web standards and slower than a tortoise with a broken leg. No respectable web developer would disagree that IE6 has been and continues to be severely injurous to the progress of the Internet.]]></description>
			<content:encoded><![CDATA[<div id="attachment_4" class="wp-caption alignleft" style="width: 130px"><img class="size-full wp-image-4 " title="Internet Explorer 6" src="http://www.mobsterlobster.com/blog/wp-content/uploads/2009/07/ie6-bin.png" alt="Internet Explorer 6 belongs in the recycle bin" width="120" height="166" /><p class="wp-caption-text">Internet Explorer 6</p></div>
<p>Internet Explorer 6 was released in 2001. With the possible exception of earlier versions of Internet Explorer, it is indisputably the worst web browser ever created. It is <a href="http://www.positioniseverything.net/explorer.html">full of bugs</a>, hopelessly insecure, totally disrespectful of web standards and slower than a tortoise with a broken leg. No respectable web developer would disagree that IE6 has been and continues to be severely injurious to the progress of the Internet.</p>
<p>As a general rule, most web developers aim to support the latest versions of Mozilla Firefox, Apple Safari, Google Chrome, and possibly Opera. But with Internet Explorer, we are generally expected to support the version released <strong>eight years ago</strong>. Supporting IE6 increases development time by a factor of about 1.5x because a fair percentage of your design that works in every other browser is guaranteed not to work in IE6. Customising the design for IE6 is a joyless exercise since developer tools for IE6 are all but non-existent. Then there are things you simply cannot do in IE6 which means everybody in the class is held back by the slowest kid in the class.</p>
<p>I have come to the view that by continuing to support this loathsome browser, we developers are actually contributing to the problem we are so quick to moan about. As of June 2009, according to Wikipedia some 12.8% of Internet users are still using IE6. I am under no illusion that my small protest will have any impact at all on that percentage, but I do believe it&#8217;s in the interest of both web developers and users to encourage upgrading and the fastest way to achieve that is to actually break Internet Explorer 6 by refusing to support it. Therefore, for the first time since I started developing for the web, I have built a site which does not support Internet Explorer 6 at all. If you attempt to view the site in IE6 or lower you will be greeted by a slightly longer version of this rant <img src='http://www.mobsterlobster.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.mobsterlobster.com/blog/2009/07/why-i-dont-support-internet-explorer-6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introductions</title>
		<link>http://www.mobsterlobster.com/blog/2009/07/introductions/</link>
		<comments>http://www.mobsterlobster.com/blog/2009/07/introductions/#comments</comments>
		<pubDate>Sat, 11 Jul 2009 20:47:13 +0000</pubDate>
		<dc:creator>wwarby</dc:creator>
				<category><![CDATA[Apps]]></category>
		<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[SlidePix]]></category>
		<category><![CDATA[intro]]></category>
		<category><![CDATA[welcome]]></category>
		<category><![CDATA[wwarby]]></category>

		<guid isPermaLink="false">http://www.mobsterlobster.com/blog/?p=1</guid>
		<description><![CDATA[My name is William Warby. I decided I needed a channel through which to publish news about what I'm doing or planning to do with my iPhone applications and a blog seemed as good a channel as any. As well as news about my iPhone applications I will probably publish technical posts occasionally about programming because, well - it's my blog, and I want to.]]></description>
			<content:encoded><![CDATA[<div class="wp-caption alignright" style="width: 110px"><a href="http://www.flickr.com/photos/wwarby/3632363415/"><img title="Red Arrows" src="http://farm3.static.flickr.com/2423/3632363415_a92bb1b224_t.jpg" alt="Red Arrows on Flickr" width="100" height="75" /></a><p class="wp-caption-text">Red Arrows on Flickr</p></div>
<p>My name is William Warby. You can read a little more about me on my &#8220;<a href="/about">about</a>&#8221; page if you&#8217;re interested. I couldn&#8217;t decide initially whether to include a blog in the design of my new site but in the end I decided I needed a channel through which to publish news about what I&#8217;m doing or planning to do with my iPhone applications and a blog seemed as good a channel as any though which to do it. As well as news about my iPhone  applications I will probably publish technical posts occasionally about programming because, well &#8211; it&#8217;s my blog, and I want to. The odd photograph might find it&#8217;s way on to the blog too &#8211; <a href="http://www.flickr.com/photos/wwarby">photography</a> is my main hobby besides programming.<span id="more-1"></span></p>
<p>So on to Mobster Lobster then. About a month before iPhone OS 2.0 was launched in July 2008 I decided I was going to learn Objective-C and become a millionaire programming the iPhone. I knew at least a dozen programming languages to some degree and I considered myself an expert in at least 5 of them, so I figured one more wouldn&#8217;t be much of a challenge. I was wrong. I&#8217;ll be posting about my experience of learning Objective-C for anyone who&#8217;s interested, but for now let&#8217;s just say it was more different than I expected it to be &#8211; a lot more different.</p>
<p>You may remember that at the time Apple had in place a <a href="http://www.webmonkey.com/blog/iPhone_Coders_Miffed__Muzzled_By_Apple_s_NDA">non-disclosure agreement</a> that forbade anyone from discussing anything to do with development on the iPhone SDK, even in private. That also meant nobody could write any tutorials, books, code samples or libraries for the device &#8211; there could be no knowledge sharing whatsoever. This, combined with my frustration at how different the language and programming tools were and my desperation to get in early on the gold rush saw to it that I failed completely on the whole endeavour and gave up. A year later and with three weeks to go before my £59 investment in the right to test my applications on a real iPhone expired, I decided to give it another go, and this time I had more success.</p>
<div id="attachment_10" class="wp-caption alignleft" style="width: 110px"><img class="size-full wp-image-10" title="SlidePix" src="http://www.mobsterlobster.com/blog/wp-content/uploads/2009/07/002.jpg" alt="SlidePix" width="100" height="150" /><p class="wp-caption-text">SlidePix</p></div>
<p>My first app is called <a href="/slidepix">SlidePix</a>. It&#8217;s a version of the a <a href="http://en.wikipedia.org/wiki/Fifteen_puzzle">135 year old 15-puzzle</a>. It has been done dozens of times in the iTunes App Store with varying degrees of finesse and perhaps the world didn&#8217;t really need yet another sliding tile game, but I wanted my first project to be something relatively simple that I could do well without taking too many risks as I learned how to program for the iPhone. The last thing I wanted to do was ruin one of my better ideas with a poor realisation of a concept due to my novice status, so I picked an app I&#8217;d already written years ago for the Christmas game on our company Intranet which I knew I could do competently learning as I went.</p>
<p>It&#8217;s not going to make my a millionaire &#8211; at least, I don&#8217;t think it is. I&#8217;ll be publishing my sales stats on this blog, so we&#8217;ll soon find out. I hope that the graphics, feature set, price point and included photos will put it in good standing with the competition, but I realise it&#8217;s not going to be the next <a href="http://www.firemint.com/flightcontrol/">Flight Control</a>.</p>
<p>I haven&#8217;t decided what my next app is going to be yet but it will be a bigger and more ambitious project. Now that I know what I&#8217;m doing in X-Code and I&#8217;ve built a website to publicise and support my efforts, I can&#8217;t wait to get started on something new. Thanks for reading <img src='http://www.mobsterlobster.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.mobsterlobster.com/blog/2009/07/introductions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

