<?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>Mike Griffiths</title>
	<atom:link href="http://www.mike-griffiths.co.uk/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.mike-griffiths.co.uk</link>
	<description>Blog</description>
	<lastBuildDate>Tue, 13 Dec 2011 13:01:09 +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>My iOS Development Findings and Experiences</title>
		<link>http://www.mike-griffiths.co.uk/my-ios-development-findings-and-experiences/</link>
		<comments>http://www.mike-griffiths.co.uk/my-ios-development-findings-and-experiences/#comments</comments>
		<pubDate>Tue, 13 Dec 2011 01:55:16 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.mike-griffiths.co.uk/?p=212</guid>
		<description><![CDATA[Over the last 18 months or so I have developed several iOS apps.  These apps were developed either for myself or for clients of my work.  I have built utilities, games, fun apps as well as apps to accompany websites for large multi-nationals.  Some of my apps/games have also won awards.
The apps [...]]]></description>
			<content:encoded><![CDATA[<p>Over the last 18 months or so I have developed several iOS apps.  These apps were developed either for myself or for clients of my work.  I have built utilities, games, fun apps as well as apps to accompany websites for large multi-nationals.  Some of my apps/games have also won awards.</p>
<p>The apps that I build for myself are done under the umbrella of <a href="http://www.bamify.com" target="_blank">BAMify</a>, a company I am co-owner of.  BAMify is the entity that owns <a href="http://www.bamifyads.com" target="_blank">BAMify Ads</a>, the successful <strong>free ad network</strong>.</p>
<p>This post is all about the findings and experiences I have had in the last 18 months.  Some of them have been pleasant, speeding up my development.  Others have been so frustrating that I have seriously contemplated giving it all up, deleting my iOS account and selling my kit (MacBook Pro, iPad, iPod Touch).  The idea of the post is to stop you hitting the same pitfalls I have and to try and give you a heads up on best practices.  I have also picked up a ton of useful information that I haven&#8217;t been able to find anywhere, I will be sharing this all with you.</p>
<p>There are a few things I would like to point out and admit.  It has been literally years since I touched Objective C.  I have also not touched Appcelerator in a serious way for about 8 or 9 months.  It isn&#8217;t beyond the bounds of possibility that things I have said have now been fixed or remedied now.  The Corona comments are all up to date though.</p>
<p>I&#8217;ll be constantly referencing my latest app called <a href="http://www.pirateislandgame.com">Pirate Island</a>.  It might be worth giving it a download (it&#8217;s free) to see how all of this ties into a real-world example.</p>
<p>To begin with, let me go through the frameworks I have tried.  Which framework to use depends on what you are building.  If you&#8217;re building a little app to accompany your blog that pulls in RSS feeds, then I&#8217;d go for Appcelerator.  If you&#8217;re building the next Angry Birds, then go with Corona.</p>
<h2>Native Objective-C</h2>
<p>This is Apple&#8217;s language of choice.  The idea is to use XCode to build the app, and Apple&#8217;s toolkits are there to help you along the way.  There are clear advantages of this.  If done right, it will always give you the &#8216;fastest&#8217; app.  Because the code is as low-level as you can go it means you have full control, and there isn&#8217;t anything in between your code and the device to slow things down.</p>
<p>There are also massive disadvantages.  I spent a week or so trying to get to grips with Objective-C but it was a massive uphill struggle.  Because it is a low-level language there is a lot to think about you don&#8217;t normally need to.  The amount of code you have to write also seems a bit far fetched.  I soon realised it wasn&#8217;t for me, and the learning curve was just too steep.</p>
<p>If you&#8217;re after rapid development then stay clear of this method.  The amount of time and effort it will take is massive compared to other methods.  You should have clear advantages and no other choice to go with this, in my opinion.</p>
<h2>Appcelerator</h2>
<p>I have built a few apps in Appcelerator and it definitely has its uses.  First and foremost, it&#8217;s free.  But, be sure it&#8217;s right for you.</p>
<h3>The good points</h3>
<p>There is quite a good community following with Appcelerator, and this is only made stronger by the fact that it has been around for quite a long time now.  The community website is a Q&#038;A StackOverflow style system, which does work well.  Appcelerator has also received substantial financial backing by PayPal, so you know it isn&#8217;t going to go bump over night.</p>
<p>Appcelerator is JavaScript based.  If you know JavaScript then you can just open your favourite editor and away you go.  There is an object you can reference for the various functions Appcelerator brings.  If you have any basic JavaScript skills you should be good to go here straight away, speeding up development time massively.</p>
<p>Appcelerator recently bought Aptana, who made an Eclipse branch IDE.  Because of this, Appcelerator now has a full IDE to help build your apps.  I have added this as an advantage, but after a week of using it you&#8217;ll probably see it as a disadvantage, as it&#8217;s pretty unstable, and often didn&#8217;t want to build the app.  I did play with it when it was first released though, so hopefully the bugs have been ironed out by now.</p>
<h3>The not so good points</h3>
<p>Appcelerator is not without its flaws.  </p>
<p>Probably the biggest and most important of these flaws is the bugs.  I have used Appcelerator in a commercial environment with a strict specification in place.  This makes things very, VERY difficult when you&#8217;re faced with a game stopping bug.  One of the biggest advantages of Appcelerator is how it uses all of the native UI elements &#8211; in the app I last built using Appcelerator I needed to show a list of hotels.  Traditionally, this is very simple, and for iOS it should be equally simple.  However, Appcelerator&#8217;s &#8216;TableView&#8217; was seriously flawed, and after a few days to trying to build the listings I was unable to due to serious bugs on Appcelerator&#8217;s side.  These were well-documented bugs in the community, but no fixes were made during the time I was building the app.  This lead me to build my own UI element using a series of loops and cleverly placed images, not ideal, not practical, and not what the specification required.  This wasn&#8217;t an isolated incident either.</p>
<p>The documentation for Appcelerator isn&#8217;t the best.  I personally feel that whoever was writing the documentation explained the interesting API methods in great detail, but the less interesting methods get left out a little.  There are some methods with a ton of example, and others with none at all.  It basically leaves you having to play about with the code to try and work out how it works.  There is a &#8216;kitchen sink&#8217; app that they provide that you will be referred to if you post any questions.  This is basically an app that has every bit of functionality that Appcelerator allows.  It is handy, but sometimes you don&#8217;t want to have to search through thousands of lines of code and dosens of files to find the snippet of code you need.</p>
<p>From time to time, I did stumble across API methods that were available but weren&#8217;t mentioned anywhere in the documentation.  Very annoying.  It must take what, 20 mins to write up an API method?</p>
<p>There is lots of additional functionality available from the Appcelerator &#8216;MarketPlace&#8217; where developers can sell modules they have made.  Frustratingly, a lot of this code (some from Appcelerator themselves) is chargable.  I&#8217;m not talking $1-2 a library either.</p>
<p>Another clincher.  Appcelerator has subscriptions if you want some of the more advanced API methods.  It isn&#8217;t cheap, with the cheapest subscription package coming in at $50 a month.  If you want analytical data for more than 1 week (so everyone) you&#8217;ll need the enterprise package, which is priced individually &#8211; which is code for &#8220;bloody expensive, so call a sales guy and let&#8217;s hope he can sell it to you&#8221;.</p>
<p>You may find Appcelerator a little slow depending on what you are doing.  As an example, I have seen apps out there that load a Google Map with thousands of pointers on it, and the device doesn&#8217;t flinch.  I did this with Appcelerator and even the simulator threw a wobbler &#8211; none of my devices could come close to rendering it.</p>
<p>Another frustrating feature of Appcelerator is the way they market themselves as &#8216;cross-platform&#8217;.  I have created all of my apps for iOS only, as that is the client&#8217;s requirement.  I did attempt to build for Android once though.  Once I installed the SDK, I hit Build, and expected it to pop up.  No such luck, I was greeted with a multitude of errors from my code.  It turns out that you&#8217;ll probably need 2 code bases, one for Android and one for iOS as both are handled slightly differently.  Of course it won&#8217;t take as long to code as starting from scratch, but it certainly isn&#8217;t click and go.</p>
<p>Another thing I noticed is Retina Display support.  Standard practice is is to have images suffixed with @2x for Retina Displays, meaning you have two versions of each image.  I wasn&#8217;t aware of this though &#8211; and I guess this is another example of poor documentation &#8211; so I was left serving poor imagery for Retina devices.</p>
<h2>Corona SDK (Ansca Mobile)</h2>
<p>So Corona is a little different to Appcelerator.  The first difference you notice is that you code in a language called Lua.  I had never heard of Lua before touching Corona.  It is so very, very easy to learn though, that it&#8217;s just like using a language you&#8217;ve always used.  The syntax is very clean and very forgiving, and there are only slight differences from the mainstream languages like PHP or JavaScript.  I personally didn&#8217;t feel this to be in any way hindering.</p>
<h3>Advantages</h3>
<p>There are some massive advantages over other frameworks that you might find.  The first I noticed that quickly becomes a massive help is the frequency of updates.  Ansca (the company behind Corona) have &#8216;Daily Builds&#8217; where they release a new version every single day.  There are exceptions, when a build isn&#8217;t released, but generally it&#8217;s a daily occurrence.  In these updates are bug fixes and feature enhancements.  The big difference here &#8211; and I&#8217;ll be mentioning this a few times in the post &#8211; is how Ansca listen to the community.  If there is a small bug which is annoying the hell out of people on the forums, then it seems to take priority and gets fixed in the daily builds.  This is just fantastic, and it makes a big difference when you voice your opinions and someone listens.</p>
<p>On the subject of communities and forums.  Corona&#8217;s forum is one of it&#8217;s strongest advantages.  There are always active people snooping around who are willing to help, and you usually find you&#8217;ll get a response within 10 minutes to most questions.  Slightly different to a lot of companies though, you don&#8217;t always just get a response, but a response from a staff member who knows what they are doing.  This is a welcomed surprise, and a life saver when it comes to app submissions, which we&#8217;ll come onto later.</p>
<p>Ansca is a very open company.  It&#8217;s headed by two guys, Walter and Carlos &#8211; both residing in California where their offices are.  Carlos is always frequenting the forums, giving out his private email address to customers with queries and is on hand to help out.  Everyone there is very approachable.  I have spoken to a couple of guys from their office via email.</p>
<p>The Corona SDK build sequence is very intuitive and helpful.  If you started with Appcelerator &#8211; like I did &#8211; then you&#8217;ll find this a breath of fresh air.  Instead of having to feed in all of these files which you probably don&#8217;t yet understand (provisioning profilers, certificates, etc) Corona picks them all up from XCode.  You then simply select your app from the drop-down and hit build.  Building for App Store is also that simple, assuming all goes well &#8211; which is highly unlikely&#8230; read on for more on this.</p>
<p>There are tons of third-party add-ons for Corona.  As an example, I was disappointed with Corona&#8217;s support for high res text.  It does support Retina text, but this appears fuzzy on an iPad, which is a high-res display, but not a Retina Display.  Annoying, but one post on the forums and I&#8217;ll receive a link to a third-party library.  One copy and paste later and it&#8217;s fixed.</p>
<p>There are also lots of sample code snippets, and even full apps available for download for free.  This makes learning Lua and Corona very, very easy.  Where the &#8216;Kitchen Sink&#8217; app is useful for Appcelerator, the sample apps show you real-world usage and give you a building block for your games or apps.</p>
<p>Corona also comes with built-in libraries that a lot of people would want but could potentially struggle to implement.  Box 2D, the very popular physics engine, comes built-in.  All you need to do to get real-world physics to be applied is to &#8220;require( &#8216;physics&#8217; )&#8221;, and set what objects you would like to have physics applied to.  I had not used physics on anything before Corona, but I picked it up within a day &#8211; it&#8217;s a complex thing made very simple.  Another fantastic feature which I struggled with on Appcelerator is &#8216;Storyboard&#8217;.  This is basically a scene editor for your apps.  Imagine your standard game, it has the following &#8217;scenes&#8217;:</p>
<ul>
<li>Loading screen</li>
<li>Main menu</li>
<li>High scores</li>
<li>The game itself</li>
<li>Game over</li>
</ul>
<p>Traditionally this is difficult to manage.  With Storyboard you&#8217;re able to have each of these &#8217;scenes&#8217; totally separate, in different files.  You can pass variables you need to pass between each one easily, and the rest is disposed of properly, so you don&#8217;t get memory issues (which is a problem in games especially).</p>
<p>Corona don&#8217;t just do games either.  It&#8217;s very easy to make e-books (interactive or not) and there is even a comic book API.  There is also a native iOS UI library, so you can make utility apps easily if you want to.</p>
<p>As mentioned before, you can easily make your app/game Retina Display optimised.  Just make 2 versions of each image, one with a @2x suffix (myimage.jpg and myimage@2x.jpg).  Corona will pluck out the @2x image on Retina Displays, making all graphics nice and crisp.  You can also get the text Retina optimised if you use the display.newRetinaText method.</p>
<p>One of the biggest advantages for me is how Ansca keep on delivering after you have submitted your app.  Ansca automatically &#8216;tag&#8217; all apps so you can track them.  Number of downloads, sessions, that sort of thing.  You can turn this off if you want, but Apple&#8217;s own reporting is dreadful, so it will be your best friend a couple of weeks after launch.</p>
<p>Ansca have also spent some time making ties with the App review sites out there.  Once you have submitted your app you will be given a discount for advertising on each of the sites they are linked to.  Ansca also have publications available to you with marketing hints and tips.</p>
<p>Ansca also promote apps on their own website.  There is a free showcase you can add apps to, and in doing so you will be given a small spot on the home page for a while.  There are also awards given out for &#8216;App of the Week&#8217; and &#8216;App of the Month&#8217;.  Winners are given free reviews on each of the partner websites (including videos), and are interviewed in a podcast.  This is a great boost if you win and it&#8217;s a great way to get some free publicity for your app.  One of my apps, Pirate Island, won App of the Week and I was the first podcast interviewee &#8211; this alone got me thousands of downloads.</p>
<h3>Disadvantages</h3>
<p>There are some disadvantages though.</p>
<p>First of all, you need a subscription to access the daily builds.  You also need one if you want to build for the App Store or Android Marketplace.  You can still develop the app without the subscription though.</p>
<p>There is a learning curve with Lua.  It&#8217;s very, very easy to pick up, but it is still something else to pick up.</p>
<p>There is no native 3D support.  Although this is a disadvantage, I don&#8217;t know of any other frameworks that do offer this, other than specialised frameworks such as Unity &#8211; so I&#8217;m not sure it is even fair to bring it up.</p>
<p>You don&#8217;t get the full feature list available on iOS, such as Push Notifications.  This is also a common problem with frameworks.  Most features are available, though.</p>
<p>Although the documentation is always up to date, the reference guide can sometimes have out-of-date references in it.  This can get frustrating, but you can always go to the API documentation if you&#8217;re unsure, which is always up to date.</p>
<p>As already mentioned, there is an annoying problem with the Retina Text on an iPad &#8211; which I do understand as it isn&#8217;t technically a Retina display.  It is still irritating though &#8211; but fixable with a small library.</p>
<h2>The Others</h2>
<p>There are lots of other frameworks out there.  The two big ones being Unity and Phone Gap.  </p>
<p>Unity is a 3D package.  It&#8217;s used to create 3D games using OpenGL.  If you&#8217;re after doing anything on iOS that is 3D related I would always go for Unity.</p>
<p>Phone Gap is similar to Appcelerator.  It has recently been purchased by Adobe, which means you can expect it to be integrated into Dreamweaver in the very near future.  Which also means you can expect a ton of pretty poor apps to get submitted with very limited functionality.  Hopefully this will spur Apple on to improve the App Store&#8217;s search functionality to help discover decent apps.  I have never actually used Phone Gap, but I am aware of it.  As such, I can&#8217;t comment on it too much.</p>
<h2>General Tips</h2>
<p>If you want a game or app to be successful it isn&#8217;t always enough to have something that just works well.  I cannot stress enough how important it is to have good, crisp, <strong>original</strong> and consistant graphics in your game.  I work as head developer for a very successful development studio in the UK, so I have access to some great designers.  If you don&#8217;t have this luxury then try and form a partnership with a graphic designer as a revenue share.  Do this with your first app, and use any money you make from it to fund graphics for future apps.</p>
<p>Another important part of games are good sounds.  Pirate Island has an excellent soundtrack as well as some nice sound effects for various events in the game (game over, collisions, button clicks, etc).  It really does make a difference, especially when it comes to your ratings on the App Store.  There are lots of stock sites where you can download game sounds for a few dollars &#8211; even iStockPhoto have started doing it.</p>
<p>Depending on how you monetise your app this is more or less important.  If you get money from replay value (in-app purchases, ads) then you want to get people who have the game installed but don&#8217;t play it playing it again.  A great way of doing this is to release updates for the game.  The user will receive an update on the App Store, and may think &#8220;I&#8217;ll give that another go&#8221;.  It might be a small percentage, but when you have hundreds of thousands of downloads even 1% is enough.  The updates don&#8217;t have to do much, just tweak a level&#8217;s difficulty or add some new sound effects.  Make the &#8216;Update Details&#8217; that you place in iTunes Connect as interesting as possible though, don&#8217;t just say &#8220;Bug fix&#8221;, say &#8220;Made graphics more engaging and fun.  Added some new addictive additions&#8221; &#8211; what&#8217;s more likely to make you play it?</p>
<p>I cannot emphasise enough how important it is to integrate Facebook into your game or app.  I have built a few very successful Facebook apps over the years, and I know first hand how powerful it can be (500,000 unique visitors a day to one app).  You can harness this power within your game and spread the word socially.  Offer incentives to the user if they post to Facebook.  Make it worth their while.  Do the same with Twitter.</p>
<p>When creating chunks of code for various things try to modulise it.  If you&#8217;re like me, you will get the urge to make new games and apps once one does well.  You don&#8217;t want to write the same drab code over and over.  With Lua it is easy to make modulised code.  As an example, I have built a FacebookPost.lua file, all I do to post to Facebook is include the library, pass it the user&#8217;s score and it will show the login box to the user, request permissions to post, and then post an image and text &#8220;Joe Bloggs scores 43,432 on App Name!&#8221;.  It&#8217;s very easy to add to new games.  You can modulise everything to an extent, from your main menu, level select screen, leaderboards, game over screen &#8211; make things generic and reusable, test it heavily once, and then you know it is solid and reliable so you can re-use it again and again.</p>
<p>Integrate a leaderboard service into your game.  I use OpenFeint because it&#8217;s a doddle to integrate (2 lines of code) and comes with tons of features.  It is one of the simplest features to add to a game, but it adds so much it really is a no brainer.  OpenFeint comes with tons of stuff out-of-the-box, including:</p>
<ul>
<li>Achievements &#8211; Things like &#8216;Beat level one&#8217;, &#8216;Kill 10 monsters in one game&#8217;, etc</li>
<li>Leaderboards &#8211; Submit scores to various leaderboards, the user can view them and their friend&#8217;s scores at any time</li>
<li>Forums &#8211; Let your users chat amoungst themselves on their device within your game.  You can even have cross-game forums for your company</li>
<li>Real-time chat &#8211; Similar to FB Chat</li>
</ul>
<p>A lot of people download a game purely because it has achievements in OpenFeint.  Every achievement you unlock gives you &#8216;Feint Points&#8217; (you dictate how many), people compete against friends and globally to get the most points &#8211; which means you get free downloads.  You can also edit things within OpenFeint without having to resubmit your app.</p>
<p>Ratings are worth a lot, whether they are on the App Store on external sites.  Try and get people to rate your app or game, but don&#8217;t push them to do it.  Don&#8217;t make up fake reviews either, as these can be spotted a mile away.  20 genuine reviews are worth 500 fake ones.</p>
<p>Try and make sure your apps name fits onto the home screen of the device (iPod, iPhone, etc).  If you have a long name if will be truncated in the centre.  So, if your game is called &#8216;Pirate Island&#8217;, but it gets truncated to &#8216;Pir&#8230;and&#8217;, try removing the space and call it &#8216;PirateIsland&#8217; so it all fits.  I realise this may seem tedious, but it will result in slightly more plays of your game.</p>
<p>Memory management within your game is very, very important.  Good garbage collection (removing unwanted objects cleanly) is critical.  Imagine a game where you jump as high as you can, landing on randomly placed platforms similar to Doodle Jump.  It&#8217;s quite easy to have the platforms move down and to randomly generate new ones every few pixels.  Each of those platforms probably take up about 1kb of memory though.  Imagine playing the game for 5 minutes, you&#8217;d have tens of thousands of platforms still moving down off screen.  It will soon mount up and slow your game right down.  Make sure you delete objects cleanly as soon as they are unneeded.  You will hear a lot of people talk about this, and it&#8217;s very important, more important than you&#8217;ll probably initially think.</p>
<p>Are you thinking of creating a game with In-App purchases?  Think carefully.  They take a substantial amount of time to integrate, stressful time.  The code itself to integrate these (in Corona) is very basic, and it can be done in under 20 lines &#8211; there are lots of examples.  The problem lies at Apple&#8217;s end.  You will quickly discover that Apple&#8217;s developer portals look nice, but don&#8217;t work very well at all.  StackOverflow and the like are riddled with questions and complaints about In-App purchases not working despite very simple code being in place.  No matter what language or framework you use, I guarantee you will have issues.  The problems with Apple&#8217;s dev portals are too large to list here, and I don&#8217;t want to turn this into a rant, but do think very carefully about tackling In-App purchases.  If you are torn between 2 revenue streams, go with the other.  The main issue I encountered is the lag between changes you make on the developer portal to when they come into effect.  Someone said this is down to the numbers of servers Apple copies the changes across to &#8211; I have no idea whether he is right, but there certainly is a random-length time lapse on changes made, even on test servers.  ANY change you make and you must leave 24 hours before testing it, as the odds are your change won&#8217;t be in effect, and you often get confused about whether you&#8217;re pre-change or post-change.</p>
<p>This 24 hour time lapse is also in effect (this truly is unbelievable) on live apps.  Yes, live apps.  I discovered this recently when I launched an app for a client.  The client had a marketing strategy in place which was started the second the app went live.  This meant a huge amount of downloads happened almost instantaneously.  We immediately got inundated with complaints of In-App purchases not working properly as the app couldn&#8217;t find the purchases it was looking for.  Weirdly, about 70% of the devices worked fine, about 30% didn&#8217;t.  24 hours later everyone&#8217;s worked fine.  </p>
<p>Another thing to budget a good chunk of time for is the submission process.  Having something like Corona in place does make this easier, but it is still difficult.  There are a few steps to this process, which I will go through now.</p>
<h4>Set the app up in iTunes Connect</h4>
<p>iTunes Connect is the portal between you and the App Store.  You upload your apps here to be reviewed and to edit your App Store entries.  This is the easy bit.  Add all of your details for the app (version number, keywords, etc).  It is VERY important to pay attention to your app&#8217;s icon, screenshots and description.  These 3 things along with the reviews all decide whether someone will download or not.  If any of these things are poor then you won&#8217;t get downloads.  The screenshots don&#8217;t need to be actual full-size screenshots, although the dimensions must match &#8211; you can fancy them up a little by adding device frames and feature lists next to the actual screenshot.  Take a look at the most popular games for inspiration.</p>
<p><span style="color:red;">It isn&#8217;t documented anywhere, but you MUST do the following in Safari.  Apple have written all sorts of crap into their systems that prevents files from being produced properly if you upload them in anything but Safari.  Helpfully, they keep this to themselves.  This was hours of stress for a lot of people before it was made common knowledge</span></p>
<h4>Make a distribution certificate</h4>
<p>After a few days you will be able to do the rest in your sleep because you&#8217;ll have to do it so many times.</p>
<p>Open &#8216;Spotlight&#8217; and search for &#8216;KeyChain&#8217;.  Once opened, click &#8216;KeyChain Access&#8217; from the top menu, select &#8216;KeyChain services&#8217;, then select &#8216;Request certificate from a certificate authority&#8230;&#8217;.  Once loaded, enter your details (same as iTunes details) and select &#8220;Save to disc&#8221; as well as &#8220;Let me specify key-pair info&#8221;.  From time to time this program decides to hide the &#8216;Let me specify&#8230;&#8217; checkbox.  When this happens you&#8217;ll need to reboot.  I have no idea why it happens, and it&#8217;s a pain.</p>
<p>Once you have saved the file this produces you&#8217;ll need to log into iTunes Provisioning Portal.  Click the &#8216;Distribution&#8217; tab.  Click &#8216;Request Certificate&#8217;.  Upload your file you just created.  It will now say your certificate is &#8216;Processing&#8217;.  It&#8217;s lying, it isn&#8217;t processing, it&#8217;s been created &#8211; you just need to refresh the page.  DON&#8217;T just refresh, click the &#8216;Distribution&#8217; tab again.  Refreshing will send the post data again, and for some reason it buggers up the whole process and you&#8217;ll need to start again.  Once you&#8217;ve got back to where you were download the certificate and open it.</p>
<h4>Make an App ID</h4>
<p>Next is to make an App ID.  Click &#8216;App ID&#8217; on the left.  If you already have an App ID for your app by using the helpful wizard Apple provides then you&#8217;re out of luck.  You will need to create a new one and try and guess the right one from drop down lists throughout this website where both apps are listed with the same name.  Helpfully you cannot delete or hide an App ID, so you&#8217;re stuck with it.  You need a &#8216;fully-qualified&#8217; App ID in order for the latest version of XCode to upload your app properly (at least in my experiences).  A fully-qualified App ID is usually your domain reversed followed by the app name.  Pirate Island&#8217;s is: com.bamify.pirateisland</p>
<p>Follow the steps to make a new App with this fully-qualified App ID.  Once you have done this you can move on.</p>
<h4>Make a provisioning profile</h4>
<p>Click &#8216;Provisioning&#8217; from the left.  Select the Distribution tab.  Click &#8216;New Profile&#8217;.  Select the app from the drop down, and make sure &#8216;App Store&#8217; is selected.  Click submit.</p>
<p>If you had to make 2 App ID&#8217;s you may have to repeat this process until you select the right one.  You can view the source of the page as the ID&#8217;s are listed in the &lt;select&gt; option value.</p>
<p>Once you hit submit you&#8217;ll get the whole &#8216;Processing&#8230;&#8217; fiasco again.  Make sure you don&#8217;t just refresh, but click &#8216;Distribution&#8217; again.  Download it and open it.</p>
<h4>Verify in XCode</h4>
<p>All being well, XCode will have opened and you should see the app in the provisioning profiles section.  This doesn&#8217;t necessarily mean everything has worked.  Try distributing your App by building for App Store in Corona and see if any errors appear.</p>
<p>The odds are this won&#8217;t have gone smoothly.  I have released about 10 apps, and god knows how many updates for these apps.  I haven&#8217;t had one go problem free.  There are lots more in-depth guides to doing this online, some people find that different things work.  I personally think that you just have to keep repeating the process until it eventually works.  This can take days.  I have had it take weeks.  Reboot often, cross your fingers.  </p>
<h2>Marketing</h2>
<p>Arguably more important than the app or game itself is the marketing.  If you have made a fantastic game it is utterly pointless unless you get people using it.  You can make money from a crap game that people play &#8211; you can&#8217;t make money from a great game that no one plays.  It&#8217;s harsh, but it&#8217;s how it works unfortunately.</p>
<p>Get your app into as many places as you can.  Just as website directories sprouted into popularity in the 90&#8217;s, app directories are coming into their own now.  There are lots out there, get a few different descriptions written and spend a day submitting to them all.</p>
<p>Your ratings on the App Store are ever increasingly important.  Recently Google started reading them and giving App Store listings their own unique view in the Google search listings.  Similar to businesses with Google, apps with better reviews rank better.</p>
<p>Do some video reviews.  Some sites will want a YouTube video of your app, and people want to see your game before buying/downloading it.  Don&#8217;t just record yourself playing it, do it properly.  I use an app called ScreenFlow to record a section of my screen.  I then run the game in the simulator and record it.  ScreenFlow turns your mouse into an opaque white blob which mimics your finger press.  If your app uses the accelerometer or compass then you won&#8217;t be able to do this natively in the simulator.  Don&#8217;t worry though, there are tools for doing this with Corona &#8211; basically you install an app on your device and it allows you to control your Corona apps in the simulator.</p>
<p>If you have an email newsletter list then use it.  We have a 6,000 strong list we have accumulated over the years.  It&#8217;s a full opt-in list, people who want to hear from us.  We send an email out once a month with details of the apps, what is to come, any updates, etc.  It gets people playing the game again and gets them involved on Facebook and Twitter.  We use Campaign Monitor to send the emails as the stats are the best out there.</p>
<p>You may have heard of <a href="http://www.bamifyads.com" target="_blank">BAMify Ads</a>.  It is a free ad network that we run.  We are now branching out into mobile ads.  It works in the following way:<br />
1.  You add BAMify Ads to your website/blog/app.  It&#8217;s a copy and paste job, 2 lines of JS.<br />
2.  Every time you receive 1 visit you&#8217;ll get a few credits.  More depending on the size of the ad.<br />
3.  Upload an advert for your game.  Text or images, as many as you want.<br />
4.  Your ad is published around the Internet and on apps, using your credits every time it is shown.</p>
<p>BAMify Ads is a great way to get some attention to your app.  It doesn&#8217;t cost a penny, takes 5 minutes to set up and will get you tons of downloads with no work needed on your end.  Just make sure your credits are topped up by displaying ads on a website or app somewhere.</p>
<p>Try and time your release to coincide with pay day.  You can schedule release of the app so try and make it around the end of the month.  You will find that in the first few days you will get around 1,000 downloads per day for free apps, depending on how attractive your icon and description is.  This is down to Apple&#8217;s RSS feeds for new apps &#8211; tons of sites list them.  If you&#8217;re getting 3,000 downloads for your app and you want these 3,000 to spend money, you want to make sure you get the downloads when the users have the most money&#8230; pay day.</p>
<p>Set up Facebook and Twitter accounts for your app.  Link them together (facebook.com/twitter).  Post to Facebook once every 2-3 days while you&#8217;re developing the game/app.  Once the app is on the App Store try and post once a day.  Give things away.  Promo codes, or other give aways.  Have people do your marketing for you &#8211; give a free version of your app away for anyone who gets you 5 followers.  It is possible to buy &#8216;Likes&#8217; and followers from websites like Fiverr.com.  I have never done this, but it might be worth doing, you can get a few thousand Likes for about $20.  It can&#8217;t hurt.</p>
<p>Add &#8216;rate me&#8217; functionality to your app.  You can easily set your app to show a small alert every 5 times the app is opened.  In this alert you can ask the user to rate your app.  It&#8217;s important to make sure you do it every 5 times the app is opened, and not every time.  If it&#8217;s the 5th time your app is opened then the odds are the user likes it, so will give it a positive review.  If it&#8217;s the first time they&#8217;ve opened the app you&#8217;re just going to annoy them, giving you a poor review.</p>
<p>Make a website for the game.  Pirate Island&#8217;s is <a href="http://www.pirateislandgame.com" target="_blank">here</a>.  Have the video you produced on here.  Have some keyword-rich text in there.  Download links to the App Store are a must.  Also, make sure you have &#8216;Like&#8217; and Follow buttons for Facebook and Twitter.  Mention OpenFeint if you have it supported.</p>
<p>As mentioned before, integrating OpenFeint can generate downloads for your game.  User&#8217;s of OpenFeint can see games their friends are playing or have played.  They can also see that they can earn 2,000 Feint points on your game and it&#8217;s free&#8230; so why not download it?</p>
<p>SEO your app&#8217;s website and iTunes page.  You won&#8217;t get anywhere for &#8216;iPhone game&#8217;, or anything generic, but you will be able to get up there for more specific words.</p>
<p>Get active in communities.  Corona&#8217;s is an excellent one.  Other app developers will appreciate your help and may give you valuable feedback about your app or game.  If you&#8217;re a respected member of a community then you can get community members to download the game.  Imagine a community of 10,000.  You&#8217;re very active and respected.  You get 10% of those people to download the game, that&#8217;s 1,000 downloads.  They post to their Facebook profiles to help you out (using the very handy FB tools in your game), and they each have 200 friends.  Before you know it your app has been seen by 200,000 people.  What it they start posting to Facebook too?</p>
<h2>Monetisation</h2>
<p>Now it gets interesting.  We all want to make money from our apps and games.  There are a few things to think very carefully about here.</p>
<p>The first thing I think about when weighing up a feature is what I call &#8216;time vs. return&#8217;.  If I&#8217;m going to spend 10 hours writing some awesome feature for my game that won&#8217;t get me any downloads then is it worth it?  Probably not.  That isn&#8217;t always the case, obviously, as lots of features are must-haves that won&#8217;t directly effect downloads.  A good example of this though, is In-App purchases.  You can easily spend a week implementing In-App purchases, but implementing ads takes only 2 minutes.  You could spend that week creating your next awesome game/app, or marketing your app.</p>
<p>There are 5 different ways of making money from games/apps.</p>
<p>Number 1.  Find someone who wants a game/app for their business and make it for them.  This offers guaranteed returns and is often good if you&#8217;re not very creative.  The client can have a clear understanding of what they want, but can&#8217;t do it &#8211; that&#8217;s where you come in.  Good app developers can earn huge amounts, so this isn&#8217;t to be sniffed at.</p>
<p>Number 2.  Sell your app.  You can sell your app based on Apple&#8217;s tiers.  The lowest is 69p, then £1.29 and upwards.  Apple takes about 30%.  I would not recommend this.  Some apps work well with it (Sat Nav systems for example), but most don&#8217;t.  No one wants to just buy a game without playing it.  Screenshots and descriptions can lie, and people don&#8217;t want to waste their money.  Paid apps are also expected to be utterly amazing.  If they&#8217;re not, expect very poor reviews.</p>
<p>Number 3.  In-App purchases.  Once implemented these can be really effective.  It does depend on the implementation of course.  Take an RPG.  You give the game away for free knowing that people will get addicted.  The user can then buy items as they go on, or pay to &#8216;level up&#8217;.  Take another example of excellent usage.  The game comes for free.  It&#8217;s a fast-paced action game where you must jump on platforms to get higher.  Once you&#8217;ve hit 10,000 pixels you&#8217;re hooked, but then up pops an alert &#8220;Please purchase the pro version for XYZ features and to continue&#8221;.  A lot of people will happily pay 69p once they know it&#8217;s a good game.</p>
<p>Number 4.  In-game currency.  This is becoming more popular, although Apple aren&#8217;t huge fans.  Basically you serve ads for other apps.  The user is then told that if they download and play one of these apps they&#8217;ll be given 10,000 coins to be used on your game.  Your coins are swapped for weapons, lives, whatever.  I&#8217;m not a huge fan of this.  As a user I don&#8217;t want to flood my device with apps just to further myself in another app.</p>
<p>Number 5.  Ads.  You can&#8217;t get around it, ads are the building blocks of the Internet these days.  Lots of websites survive very happily from ad revenue and users have come to accept it.  When mobile ads first came onto the scene they weren&#8217;t warmly received by users, understandably.  But the fact is, ads allow great games to be given away for free.  I am a big fan of ads, everyone is happy.  Your users get free games/apps, you get better stats for your app (based on clicks, impressions, etc), and advertisers get traffic.  You&#8217;ll find that short play arcade games work well with ads.  Large games not so much so.  This is because user&#8217;s get used to where the ads appear and naturally ignore them.  If it&#8217;s a game that they only play whilst sat on the toilet a couple of times a week then you&#8217;re more likely to get clicks.</p>
<p>If you&#8217;re interested in getting an app or game built, please email <a href="mailto:info@bamify.com">info@bamify.com</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mike-griffiths.co.uk/my-ios-development-findings-and-experiences/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Postcode CSV and SQL</title>
		<link>http://www.mike-griffiths.co.uk/postcode-csv-and-sql/</link>
		<comments>http://www.mike-griffiths.co.uk/postcode-csv-and-sql/#comments</comments>
		<pubDate>Tue, 01 Nov 2011 14:44:44 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[csv]]></category>
		<category><![CDATA[data]]></category>
		<category><![CDATA[postcodes]]></category>
		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">http://www.mike-griffiths.co.uk/?p=209</guid>
		<description><![CDATA[I&#8217;ve recently been part of a project that built a large database of the UK&#8217;s address data, including postcodes and place names.
I have placed this data online to sell.  The full set of data is over 100MB, and includes latitude and longitude coordinates of postcodes and some place names.
This data has a ton of [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve recently been part of a project that built a large database of the UK&#8217;s address data, including postcodes and place names.</p>
<p>I have placed this data online to sell.  The full set of data is over 100MB, and includes latitude and longitude coordinates of postcodes and some place names.</p>
<p>This data has a ton of uses, including integration with Google Maps for various things.  I use it to create a &#8216;find my nearest&#8230;&#8217; search, or to plot items onto a map.</p>
<p>You can get the data at a very, very, very small fee over on <a href="http://www.postcodecsv.com">Postcode CSV</a> website.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mike-griffiths.co.uk/postcode-csv-and-sql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CodeIgniter SEO Quick Tip</title>
		<link>http://www.mike-griffiths.co.uk/codeigniter-seo-quick-tip/</link>
		<comments>http://www.mike-griffiths.co.uk/codeigniter-seo-quick-tip/#comments</comments>
		<pubDate>Sun, 26 Jun 2011 17:18:00 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[CodeIgniter]]></category>
		<category><![CDATA[SEO]]></category>

		<guid isPermaLink="false">http://www.mike-griffiths.co.uk/?p=204</guid>
		<description><![CDATA[In your template (assuming you&#8217;re using some sort of engine), within the &#60;head&#62;, place this:
&#60;link rel="canonical" href="&#60;?php echo site_url().$this->uri->uri_string();?&#62;" /&#62;
It will produce the current full URL of the page the user is viewing, with the correct structure to your segments and subdomain (www.).  This will avoid any canonical issues with search engines, as lots [...]]]></description>
			<content:encoded><![CDATA[<p>In your template (assuming you&#8217;re using some sort of engine), within the &lt;head&gt;, place this:</p>
<pre lang="php">&lt;link rel="canonical" href="&lt;?php echo site_url().$this->uri->uri_string();?&gt;" /&gt;</pre>
<p>It will produce the current full URL of the page the user is viewing, with the correct structure to your segments and subdomain (www.).  This will avoid any canonical issues with search engines, as lots of search engines treat example.com/page, www.example.com/page and example.com/page/ as 3 separate pages.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mike-griffiths.co.uk/codeigniter-seo-quick-tip/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Strip HTML from a string in JavaScript</title>
		<link>http://www.mike-griffiths.co.uk/strip-html-from-a-string-in-javascript/</link>
		<comments>http://www.mike-griffiths.co.uk/strip-html-from-a-string-in-javascript/#comments</comments>
		<pubDate>Fri, 20 May 2011 14:43:53 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://www.mike-griffiths.co.uk/?p=202</guid>
		<description><![CDATA[Nice handy way of removing all HTML from a string using on JavaScript:
variable.replace(//g, '');
There are other ways of doing this, but they rely on the presence of a web browser.  This should work in most modern JS engines.
]]></description>
			<content:encoded><![CDATA[<p>Nice handy way of removing all HTML from a string using on JavaScript:</p>
<pre lang="javascript">variable.replace(/<.*?>/g, '');</pre>
<p>There are other ways of doing this, but they rely on the presence of a web browser.  This should work in most modern JS engines.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mike-griffiths.co.uk/strip-html-from-a-string-in-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Electronic Cigarette Articles</title>
		<link>http://www.mike-griffiths.co.uk/electronic-cigarette-articles/</link>
		<comments>http://www.mike-griffiths.co.uk/electronic-cigarette-articles/#comments</comments>
		<pubDate>Mon, 21 Feb 2011 19:28:46 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[Findings]]></category>
		<category><![CDATA[electronic cigarettes]]></category>

		<guid isPermaLink="false">http://www.mike-griffiths.co.uk/?p=200</guid>
		<description><![CDATA[Looking for a bunch of quit smoking and electronic cigarette articles?  Find them on the site below:
Electronic Cigarette Articles
Most of them are great reads, there&#8217;s the odd dud though.
]]></description>
			<content:encoded><![CDATA[<p>Looking for a bunch of quit smoking and electronic cigarette articles?  Find them on the site below:</p>
<h2><a href="http://electroniccigarettearticles.org/">Electronic Cigarette Articles</a></h2>
<p>Most of them are great reads, there&#8217;s the odd dud though.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mike-griffiths.co.uk/electronic-cigarette-articles/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to Print Part of a Page in JavaScript</title>
		<link>http://www.mike-griffiths.co.uk/how-to-print-part-of-a-page-in-javascript/</link>
		<comments>http://www.mike-griffiths.co.uk/how-to-print-part-of-a-page-in-javascript/#comments</comments>
		<pubDate>Tue, 21 Dec 2010 16:30:50 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[print]]></category>

		<guid isPermaLink="false">http://www.mike-griffiths.co.uk/?p=198</guid>
		<description><![CDATA[Recently I was working on a project that needed a &#8216;print&#8217; button.  Usually I work with database-driven content, so creatign a &#8216;prinkt&#8217; page is fairly simple &#8211; I just use a blank page template and load in the content.  In thsi project though, there was quite an advanced templating system, which turned out [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I was working on a project that needed a &#8216;print&#8217; button.  Usually I work with database-driven content, so creatign a &#8216;prinkt&#8217; page is fairly simple &#8211; I just use a blank page template and load in the content.  In thsi project though, there was quite an advanced templating system, which turned out to be not quite so advanced as I couldn&#8217;t pull the data from the template view into a blank template&#8230;</p>
<p>So anyway.  I wanted to use JavaScript to pull in page of the page rather than having to recreate a lot of the templating system.  Below is what I made, hopefully you&#8217;ll find it useful.</p>
<pre lang="javascript">
function printDiv()
{
   var divToPrint=document.getElementById('page-content');
   newWin= window.open("");
   newWin.document.write(divToPrint.innerHTML);
   newWin.print();
   newWin.close();
}
</pre>
<p>Basically you have a div on your page called &#8216;page-content&#8217; (or whatever you want).  You can then call the function on a button press or whatever (<button onclick="printDiv();">Print</button>).</p>
<p>The script basically creates a new window, puts the contents of the selected div into it, prints that new page, and then close that new page.  The user may see a flicker while that happens, unfortunately unavoidable.</p>
<p>Hope it helps.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mike-griffiths.co.uk/how-to-print-part-of-a-page-in-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GSID.net review</title>
		<link>http://www.mike-griffiths.co.uk/gsid-net-review/</link>
		<comments>http://www.mike-griffiths.co.uk/gsid-net-review/#comments</comments>
		<pubDate>Wed, 20 Oct 2010 12:50:11 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[Findings]]></category>

		<guid isPermaLink="false">http://www.mike-griffiths.co.uk/?p=195</guid>
		<description><![CDATA[I do not often post reviews about providers, good or bad, but I believe in this case the review is well deserved. This company has exceeded my expectations by far in many ways, and to this day continues to do so by helping me keep several high-traffic websites online, without an exorbitant price tag. 
A [...]]]></description>
			<content:encoded><![CDATA[<p>I do not often post reviews about providers, good or bad, but I believe in this case the review is well deserved. This company has exceeded my expectations by far in many ways, and to this day continues to do so by helping me keep several high-traffic websites online, without an exorbitant price tag. </p>
<p>A collection of forums and the like are all I host. They&#8217;re simple, but receive a staggering amount of traffic that has scared away every shared hosting provider I have tried to use. I tried moving to a unmanaged VPS, but found my lack of server knowledge and experience holding me back. I was just about to go to a managed VPS, until I saw GSID.net&#8217;s prices. </p>
<p>GSID.net&#8217;s prices for <a href="http://www.gsid.net">dedicated servers</a> in the specification range I required were almost the same for a similarly spec&#8217;ed VPS from most providers. This wasn&#8217;t the final thing that caused me to decide though – their price for <a href="http://www.gsid.net">managed servers</a> was also extremely competitive. After having a brief talk with their precise and prompt live chat staff I ordered the package necessary, and had the migration performed.  The migration took far less time than I expected, and everything worked flawlessly. No one on the forums even knew about the change, and I was sure to keep it this way. Some portions of the forums became even faster, thanks to some optimization by GSID.net&#8217;s technicians. </p>
<p>I had a slight issue while ordering the package due to a misinterpretation on their side, but it was corrected very quickly and professionally. I have no complaints about this – the mistake was minor, and I was even credited and apologized to multiple times. To be honest I never noticed the mistake until their sales team notified me of it. Any company that treats me like this deserves a raving review, hence my decision to write one.  </p>
<p>Right now I am in the process of leasing out more servers in several other locations for my communities, all from this one provider. They offer servers in all the locations I need – the U.S., Asia, and Europe. Dealing with one provider has definitely made managing my bills easier, as well as increase my trust in the reliability of my servers. Very few providers will offer servers in more than one location, and especially ones in other continents. The servers they say will be online within 24 hours, but these guys always use the scotty approach and claim far more time then they actually need. (Reference to Star Trek for those who do not understand.) </p>
<p>I&#8217;d recommend GSID.net to anyone who is in need of <a href="http://www.gsid.net">managed servers</a>, or even just <a href="http://www.gsid.net">dedicated servers</a>. Their support and expertise is top notch, and my forum users would certainly appreciate all the help they have provided me with in keeping the forums online and fast.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mike-griffiths.co.uk/gsid-net-review/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Electronic Cigarette Blogs</title>
		<link>http://www.mike-griffiths.co.uk/electronic-cigarette-blogs/</link>
		<comments>http://www.mike-griffiths.co.uk/electronic-cigarette-blogs/#comments</comments>
		<pubDate>Mon, 27 Sep 2010 17:12:39 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[Findings]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[electronic cigarette]]></category>
		<category><![CDATA[squidoo]]></category>
		<category><![CDATA[tumblr]]></category>

		<guid isPermaLink="false">http://www.mike-griffiths.co.uk/?p=193</guid>
		<description><![CDATA[I&#8217;ve just started up an electronic cigarette blog and a Squidoo electronic cigarette &#8216;lens&#8217;.
I haven&#8217;t used Tumblr before, but I&#8217;m impressed from the off.  It works out the box, looks great and is pretty idiot-proof.  I think they only thing it&#8217;s missing is better networking &#8211; I have yet to find any other [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve just started up an <a href="http://eciglover.tumblr.com">electronic cigarette blog</a> and a <a href="http://www.squidoo.com/ecig-lover">Squidoo electronic cigarette</a> &#8216;lens&#8217;.</p>
<p>I haven&#8217;t used Tumblr before, but I&#8217;m impressed from the off.  It works out the box, looks great and is pretty idiot-proof.  I think they only thing it&#8217;s missing is better networking &#8211; I have yet to find any other similar blogs without resorting to Google.</p>
<p>Squidoo I have used before, but only briefly.  It works well and does what it says on the tin.  I also like the revenue sharing through Google AdSense, although I&#8217;m not sure quite how well it works as I&#8217;m convinced I must have had at least one click after having thousands of visits.</p>
<p>Check them both out.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mike-griffiths.co.uk/electronic-cigarette-blogs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iPad Accessories</title>
		<link>http://www.mike-griffiths.co.uk/ipad-accessories/</link>
		<comments>http://www.mike-griffiths.co.uk/ipad-accessories/#comments</comments>
		<pubDate>Wed, 11 Aug 2010 11:26:45 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[Findings]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[iPad]]></category>

		<guid isPermaLink="false">http://www.mike-griffiths.co.uk/?p=190</guid>
		<description><![CDATA[So, the Apple iPad came out a couple of months back.  It&#8217;s advertised as being &#8220;unbelievable price of $499&#8243;, which at first glance is pretty unbelievable, as I can get a pretty high spec computer for that price.
However, I&#8217;ve had chance to play with them a few times and someone in work has one. [...]]]></description>
			<content:encoded><![CDATA[<p>So, the Apple <a href="http://www.apple.com/ipad/" rel="nofollow">iPad</a> came out a couple of months back.  It&#8217;s advertised as being &#8220;unbelievable price of $499&#8243;, which at first glance is pretty unbelievable, as I can get a pretty high spec computer for that price.</p>
<p>However, I&#8217;ve had chance to play with them a few times and someone in work has one.  As with most Apple products, it looks good.  I like most Apple products apart from the computers (had a lot of issues with them in the past and find OSX to be difficult to work with), and the iPad is no exception.</p>
<p>I was privledged enough to have a play with one before they were released.  I wasn&#8217;t too impressed with it.  Ok, it seemed great when I slid the slider across and got to the menu, but that was about it.  Because it was pre-release date there were next to no apps for it available, and those that come with it are fairly limiting.  I was bored in less than 3 minutes.</p>
<p>I have since played with a few iPads that have been loaded with apps though, and they do, for the most part, seem pretty good.  There are a few decent games, some of which have been ported over from standard platforms, others have been made specifically.  Command and Conquer, for example, is pretty slick.</p>
<p>As much as I do like the product, I cannot justify buying them.  People who own them swear by them, but whenever I ask them when they use them the only answer I get is &#8220;on the toilet mostly&#8221; &#8211; so it seems to be an expensive toilet break.  I think I&#8217;d rather spend the money on a new laptop that I can take anywhere and run anything on.  It probably won&#8217;t look as cool, but I&#8217;ll be able to run anything I want, wherever I want, and if I want 3G support I can just pay £5 a month for a dongle, rather than the ~£25 that Apple ask.</p>
<p>As with most Apple products, from day dot there have been a large number of <a href="http://www.appleaccessorystore.com/ipad-accessories.html">iPad Accessories</a> available, things like iPad socks, sleeves, screen protectors, etc.  As with any touch screen device I would highly recommend getting a screen protector to try and protect against scratches.  These things get grubby and marked very easily, so it is important to try and protect them.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mike-griffiths.co.uk/ipad-accessories/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Interesting Electronic Cigarette Article</title>
		<link>http://www.mike-griffiths.co.uk/interesting-electronic-cigarette-article/</link>
		<comments>http://www.mike-griffiths.co.uk/interesting-electronic-cigarette-article/#comments</comments>
		<pubDate>Thu, 15 Jul 2010 10:17:07 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[Findings]]></category>
		<category><![CDATA[electronic cigarettes]]></category>
		<category><![CDATA[Smart Smoker USA]]></category>

		<guid isPermaLink="false">http://www.mike-griffiths.co.uk/?p=188</guid>
		<description><![CDATA[On my travels round the interwebs I&#8217;ve stumbled upon an article I wrote a while ago about Electronic Cigarettes.  It appears that someone has published it in my name, and it wasn&#8217;t me!
Take a look at the article in question: electronic cigarettes
]]></description>
			<content:encoded><![CDATA[<p>On my travels round the interwebs I&#8217;ve stumbled upon an article I wrote a while ago about Electronic Cigarettes.  It appears that someone has published it in my name, and it wasn&#8217;t me!</p>
<p>Take a look at the article in question: <a href="http://latestarticles.net/health-and-fitness/smoking/can-the-electronic-cigarette-help-you-quit-smoking/">electronic cigarettes</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.mike-griffiths.co.uk/interesting-electronic-cigarette-article/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

