<?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>iDevBlogADay &#187; Kyle Newsome</title>
	<atom:link href="http://idevblogaday.com/archives/author/kyle-newsome/feed" rel="self" type="application/rss+xml" />
	<link>http://idevblogaday.com</link>
	<description>iOS indie developers writing every day about their stuff.</description>
	<lastBuildDate>Thu, 16 May 2013 23:19:36 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>App Rewards Club’s First Report [Kyle Newsome]</title>
		<link>http://www.bitwit.ca/blog/app-rewards-clubs-first-report/</link>
		<comments>http://idevblogaday.com/archives/1588#comments</comments>
		<pubDate>Wed, 14 Nov 2012 13:53:46 +0000</pubDate>
		<dc:creator>Kyle Newsome</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://idevblogaday.com/archives/1588</guid>
		<description><![CDATA[This morning Ken and I released our first report on the App Rewards Club blog. Inside, we&#8217;ve shared aggregate results for 12 apps that switched from paid to free as well as some analysis on Free App A Day. In addition, there&#8217;s also other news about our business so far. I hope you enjoy the]]></description>
				<content:encoded><![CDATA[<p>This morning Ken and I <a title="Reporting blog" href="http://blog.apprewardsclub.com/going-free-our-launch-results-and-market-observations/">released our first report on the App Rewards Club blog</a>. Inside, we&#8217;ve shared aggregate results for 12 apps that switched from paid to free as well as some analysis on Free App A Day. In addition, there&#8217;s also other news about our business so far.</p>
<p>I hope you enjoy the read and find it insightful. We&#8217;ll be doing more of this in the future.</p>
<p>Read it at: <a title="Reporting Blog Entry" href="http://blog.apprewardsclub.com/going-free-our-launch-results-and-market-observations/">http://blog.apprewardsclub.com/going-free-our-launch-results-and-market-observations/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://idevblogaday.com/archives/1588/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>App Rewards Club [Kyle Newsome]</title>
		<link>http://www.bitwit.ca/blog/app-rewards-club/</link>
		<comments>http://idevblogaday.com/archives/1502#comments</comments>
		<pubDate>Mon, 30 Jul 2012 13:00:53 +0000</pubDate>
		<dc:creator>Kyle Newsome</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://idevblogaday.com/archives/1502</guid>
		<description><![CDATA[I've been a little bit secretive about what I've been working on lately, but with our launch approaching it's time to let the cat out of the bag and start talking about App Rewards Club.]]></description>
				<content:encoded><![CDATA[<p>Today myself and Ken Carpenter are starting our awareness campaign for a new free app marketing service called <a title="App Rewards Club" href="http://www.apprewardsclub.com">App Rewards Club</a> which is replacing freeappcalender.com. This new service will be launching in full force within a few weeks time with an iOS app and several other new features. You can learn more by reading on, or by visiting our new <a title="App Rewards Club Blog" href="http://blog.apprewardsclub.com">App Rewards Club Blog site</a>. We felt it was important to speak from our own hearts candidly prior to unifying our voice through App Rewards Club. What follows below is more about my personal reasons for starting this service. You can also <a title="Ken's personal blog" href="http://www.mindjuice.net/2012/07/30/introducing-apprewardsclub-com/">read Ken&#8217;s personal entry here</a>.</p>
<hr />
<h3>Long time, no blog</h3>
<p>I&#8217;ve been a little bit secretive about what I&#8217;ve been working on lately, but with our launch approaching it&#8217;s time to let the cat out of the bag and start talking about <a title="App Rewards Club Site" href="http://www.apprewardsclub.com">App Rewards Club</a> &#8211; A new free app promotions service that is fair and equitable to indie developers and companies alike. For those who are familiar with the <a title="iDevBlogADay" href="http://www.idevblogaday.com">#iDevBlogADay</a> community, you should also be familiar with my partner on this project, Ken Carpenter; He&#8217;s also introduced App Rewards Club on his site this week.</p>
<p>Before I go further into the reason for this project and the vision Ken and I have created, let me share my frustration with the existing free app promotion services:</p>
<h3>The problem with free app promotion services</h3>
<p>Over a year ago when my first app, Pixel Fighters, was still fresh on the store, I sought to promote it on a free app promotion service. The desire to use one of these services quickly faded when I realized a few things</p>
<ul>
<li>The best services were easily charging $5000 or more to use their service</li>
<li>These services made NO guarantee whatsoever about their outcome</li>
<li>In the majority of cases they were not willing to be paid in part based on post-promotion sales and IAP revenue</li>
<li>The apps were offered little respect, jammed into a 3 or 5 pack of free apps that day</li>
<li>Many of the services were all popping up ads and generally degrading the user experience</li>
</ul>
<p>Now I can&#8217;t blame these services for some of these things. In particular, I understand that it is hard to guarantee performance and take compensation based on results. However, I think it is highly unethical to just take anyone&#8217;s money if you really didn&#8217;t give a crap either way.</p>
<p>There enlies my biggest beef with the existing services today &#8211; they just don&#8217;t seem to care to try or be fair or transparent, they are just there.</p>
<p>How do they get away with this? Two reasons:</p>
<ol>
<li>They work (just not for everyone)</li>
<li>Many people still have the gold rush syndrome</li>
</ol>
<div><span>When you think about it, those are two decent reasons not to change or challenge one&#8217;s business model until you absolutely need to.</span></div>
<h3>Time for change</h3>
<p>Most simply put, Ken and I feel everyone deserves a better option. We&#8217;ve spent many hours discussing what works, what doesn&#8217;t, and what needs to change in the free app promotion business:</p>
<ul>
<li>Users shouldn&#8217;t be bombarded with ads and the daily offering should be simple</li>
<li>Further to the above, every app promoted should be given full attention for a day. A service should demonstrate that it respects and is proud of the apps it promotes</li>
<li>An app service should be more fairly priced, listed on the website, and highly discounted among developers who cooperate</li>
<li>Users should have a strong incentive to return every day</li>
<li>Social Media should be a strategy and not an afterthought (aka the typical plugin like/tweet buttons)</li>
</ul>
<h3>Introducing App Rewards Club</h3>
<p>App Rewards Club is our free app promotions service that will be launching soon on both iPhone and iPad in the coming weeks. In addition to addressing the points above, let me explain what we are about.</p>
<p>App Rewards Club is a promotional service designed to reward users for downloading and spreading the word about apps. Rewards come in the form of <strong>Kiip </strong>instant redemption prizes, chances to win <strong>paid apps</strong> and <strong>Rewards Den</strong> points.</p>
<p>Users are encouraged to say whatever they want in a social media message about the app. We believe that canned social messages only contribute to the clutter and offer little value added. It&#8217;s better instead that users speak from the heart whether they like something or not and be rewarded just for saying anything socially.</p>
<p>For developers, we want to offer the most competitively priced service that maximizes return on investment.  We believe that an entirely free service, which is forced to use advertising for revenue, cannot offer the best results.</p>
<p>In addition to our competitive price, we will also offer multiple cooperative discounts. This means that developers who are the most flexible and willing to help us, will save even more money.</p>
<h3>Where do we go from here?</h3>
<p>So I&#8217;ve told you a little bit about App Rewards Club and what it is going to be. Hopefully you are excited, maybe you aren&#8217;t. At the end of the day I can tell you it is our mission to be the most fair, transparent and innovative free app promotions services in the iOS App Store. What that means to you is that we are always listening and looking to improve our model for the benefit of both the user and the developer.</p>
<p><strong>If you are planning to use a free app promotions service this year, shouldn&#8217;t it be App Rewards Club?</strong></p>
<h4>Users come first, developers come second</h4>
<p>The only reason to use the most expensive promotion services right now are the sheer number of eyeballs they offer &#8211; <strong>We get that</strong>.  We know that the only way to deliver on our promise is to drive users to our app first and get developers on board second. If in the next few weeks you don&#8217;t see us trying to shove App Rewards Club down every developers&#8217; throat, that is why.</p>
<h3>Join us now!</h3>
<p>We are looking to promote apps immediately. App Rewards Club has replaced Ken&#8217;s FreeAppCalendar.com and is continuing forward. Now is the time to get a great deal from a new promotion service that is actively trying to grow its user base in the the coming months. We want developers on board now.</p>
<h3>The ARC Blog begins now</h3>
<p>In addition to the awesome new service we want you to us, we will also be launching a <a title="App Rewards Club Blog" href="http://blog.apprewardsclub.com">transparent blog</a> which will cover any and all topics related to App Rewards Club, its development and app marketing. Ken and I will work together on blog entries for App Reward Club for here on.</p>
<p>I expect this is the first and last time I will talk at length about App Rewards Club on my own blog. Thanks for reading and I look forward to talking with everyone more about this exciting new service.</p>
]]></content:encoded>
			<wfw:commentRss>http://idevblogaday.com/archives/1502/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My First Experience at a Game Jam [Kyle Newsome]</title>
		<link>http://www.bitwit.ca/blog/my-first-experience-at-a-game-jam/</link>
		<comments>http://idevblogaday.com/archives/1431#comments</comments>
		<pubDate>Fri, 18 May 2012 10:00:37 +0000</pubDate>
		<dc:creator>Kyle Newsome</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://idevblogaday.com/archives/1431</guid>
		<description><![CDATA[My experience and reflections up my first game jam and the prototype we developed that will become a small free HTML5 iPad App.]]></description>
				<content:encoded><![CDATA[<p>I heard about the Toronto Game Jam about one year ago. Unfortunately, it was far too short notice to actually participate but I was absolutely fixated on attending next time. I can now say I accomplished that goal as of last Sunday evening, when &#8220;TOJam &#8211; The Sevening&#8221; completed.</p>
<p>Leading up to the game jam this year, I had read <a title="TOJam Website" href="http://www.tojam.ca" target="_blank">the website</a> probably near to 50 times. I was quite obsessed with understanding what exactly a game jam was and how it functioned. Through Toronto Game Jam&#8217;s Twitter account I heard about a game jam documentary that was trying to raise money and watched their intro video &#8211; <a href="http://www.indiegogo.com/Game-Jam-The-Documentary" target="_blank">http://www.indiegogo.com/Game-Jam-The-Documentary</a> . Something about those 3 minutes of people trying to explain what a game jam completely ignited me with excitement for seizing this opportunity.</p>
<p>From my understanding, game jams are about achieving a personal best. Much like many competitive individual sports (though TOJam is non-competitive), you are motivated by your peers to push yourself to new levels and finish with a new personal accomplishment. On long drawn out projects, it can be difficult sometimes to know how efficient and organized you are really being. A 3 day game jam requires you to be extremely concise in what you expect to achieve and how you expect to achieve it. Something about this is incredibly empowering.</p>
<h3>Our personal goal</h3>
<p>Having adopted tojam.ca as my new bible for game jam philosophy and strategy, I came to understand that it was EXTREMELY hard to accomplish an idea in 3 days without any prior design or planning especially on a team of more than 1 person. Given that understanding I started contemplating an idea about a month ahead of time and recruited the people I felt were necessary to accomplish a complete game idea. We ended up with a team of 6 &#8211; 3 programmers including myself, 1 designer, 1 composer and 1 sound technician. </p>
<p>Our goal was to build a small HTML5 RPG micro-management game that could be played single player or multiplayer through network play using node.js. It was an incredibly ambitious goal to say the least. We knew we probably wouldn&#8217;t get it all done so we laid out goals for ourselves. We hoped to have a simple prototype by Saturday midnight and then add as many features as we had time for on Sunday. We placed a strong importance on design and had all our static images ready to go for Friday morning first thing; animations were designed during the jam. Our designer and composer worked remotely the whole time from overseas. One of our programmers and sound guy were remote most of the jam as well. Luckily, everyone made it for the team photo:</p>
<p><img class="alignleft size-full wp-image-1199" src="http://www.bitwit.ca/wp-content/uploads/2012/05/7201129800_e8c17e122f_b.jpg" alt="" width="600" /></p>
<h2>My Experience</h2>
<p>Unlike the Game Jam Documentary intro video, I get to sum things up in more than a compound word, but &#8216;mind-blowing&#8217; would probably be a good one.</p>
<p>The jam totalled 58 hours and I estimate that I personally spent about 40-42 of those at the jam working on our game. We had an incredible amount to code for both the front end and the backend; things were very tight. In addition to the challenge of coding, I also worked to manage a team, 4 of whom were remate and available through Skype at completely different hours.<br />
By Saturday night, we did not have our working prototype. The front and back ends hadn&#8217;t even been married together yet. We had a few animations going, but there was nothing playable about our game; it was a well designed demonstration at best. The backend coder was our remote guy and we had to keep our fingers crossed his part would work with what we were building based on the agreed plan.</p>
<p>It wasn&#8217;t until 3pm Sunday, five hours before the end of the jam, that we actually finally merged our code bases and combined the back and front end. Stress levels were pretty high in the last few hours, connecting all the dots and making things work. We completely threw single player out the window, multiplayer became the only priority.</p>
<p>In the end, we managed to pull it all together and have a small playable game in time!</p>
<h3>The final result</h3>
<p>While it was a bit hard for anyone to play at the jam, we were able to successfully demonstrate it. I actually couldn&#8217;t get my public node server working in time for the 8pm deadline.<br />
In this demonstration I&#8217;m connecting 4 separate tabs on my computer to the game as well as 2 from my iPad. Some of the animations are pretty shaky, partially from pushing my laptop, and partially due to performance optimization we have yet to do.</p>
</p>
<p>It can be this incredibly gruelling experience at times with an amazing payout at the end. The atmosphere changes from days of focus to an instant arcade and celebration at 8pm Sunday. After all that hard work and exhaustion, you are rewarded with this blast of positive energy and new inspiration as hundreds of computer screens that mostly displayed code now show off incredible accomplishments.</p>
<p>It&#8217;s funny to say this about complete strangers, but I&#8217;m really proud of everyone. There were so many awesome ideas and executions all fascinating in their own ways. You can also see the way different people interpret the jam and what they make their personal goal to do; I find that really cool.</p>
<h3>Lessons learned</h3>
<p>While I&#8217;m very happy with what we did during this jam, I think next time I would still try to accomplish something more bite sized. It seems that game jams can be used to create very small highly polished games or to quickly prototype an idea into playable condition. In the end, we fell into the prototype category because our game was certainly not complete. I don&#8217;t see anything wrong with this, but next time I would like to challenge myself to do make something smaller and complete.</p>
<p>In addition to making something smaller for challenge purposes, I would also like to be able to socialize more next time. The game idea was so overwhelmingly ambitious, I barely had time to meet anyone new or make any connections.</p>
<p>I&#8217;m really glad that I prepared a team, planned and did some design ahead. I think this was a smart game plan for executing on a bigger idea in such a small period of time. If your concept is ambitious, you really need to be able to fire out the door with no questions asked. While I understand that some people incubate their entire idea in the period of the game jam, that is not for me. I fear falling into the trap of coding and game designing at the same time which I don&#8217;t think demonstrates a clean process and leads to many hours wasted sorting out details that should be spent building with a strong vision under such time contraints. Furthermore, I really enjoy the challenge of ironing out details and creating a strong team plan. I&#8217;m a process oriented guy.</p>
<h2>What&#8217;s Next</h2>
<p>There&#8217;s still a lot of work to be done on our game, but all the assets are there. We actually have 3 more bosses to add and some serious balancing to do.<br />
We want to get the single/multiplayer version up on a server for play, there are just some hosting cost concerns at the moment since our game is kind of an unorthodox shape for inclusion on any other website being 980 pixels wide, running the backend on node.js and weighing in at over a 30MB download.</p>
<p>So for the time being, we&#8217;ve decided to finish the full experience, make a single player only version and release it for free on iPad. It will be an interesting exercise in building an HTML5 game for iPad and from what I&#8217;ve seen the performance on our game has been good prior to any optimizing. I expect that this will be released before the end of the summer. We all need to take a small breather in the meantime after what I estimate to be about 90 hours of coding/asset preparation between 3 programmers in 58 hours. Look out for <strong>Ragnarokked</strong> coming to an iPad near you soon!</p>
<p>I really look forward to finishing up what we started last weekend and I&#8217;m incredibly proud of what we have accomplished so far. Game Jams are an amazing experience that can really teach you a lot about yourself and your craft. I couldn&#8217;t be more thankful for the experience and I hope to participate again next year.</p>
<p><img class="alignleft size-full wp-image-1200" src="http://www.bitwit.ca/wp-content/uploads/2012/05/7186398072_6b59643a02_b.jpg" alt="" width="660" height="683" /><br />
My colleague James showing TOJam founder Jim McGuinley our game in progress on Saturday Night</p>
]]></content:encoded>
			<wfw:commentRss>http://idevblogaday.com/archives/1431/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pixel Fighters: A Post-Mortem [Kyle Newsome]</title>
		<link>http://www.bitwit.ca/blog/pixel-fighters-a-post-mortem/</link>
		<comments>http://idevblogaday.com/archives/1682#comments</comments>
		<pubDate>Fri, 20 Apr 2012 04:15:31 +0000</pubDate>
		<dc:creator>Kyle Newsome</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://idevblogaday.com/archives/1682</guid>
		<description><![CDATA[Allow me to get straight to the sales juice of this post, the rest can come from there. This project cost me a total of $5000 for the original game and $2000 in my second major update.  As you can calculate from the numbers, I&#8217;ve made only about $2250 in the past year and a quarter.]]></description>
				<content:encoded><![CDATA[<p>Allow me to get straight to the sales juice of this post, the rest can come from there. This project cost me a total of $5000 for the original game and $2000 in my second major update.  As you can calculate from the numbers, I&#8217;ve made only about $2250 in the past year and a quarter.</p>
<p><span>(Click for a larger image)</span><br />
<a href="http://www.bitwit.ca/wp-content/uploads/2012/04/Apr19th-Pixel-Family-Sales-Data.png"><img class="alignleft size-large wp-image-1168" style="float: none" src="http://www.bitwit.ca/wp-content/uploads/2012/04/Apr19th-Pixel-Family-Sales-Data-1024x529.png" alt="" width="600" /></a>I imagine that this data might be shock to some, either that I spent so much on art to build my game or that I would announce a $5000 net-loss almost proudly. Well that&#8217;s because this game has singlehandedly changed my career landscape and paid for itself many times over.  In less than 3 years since I left my job in market research as a project manager with only the programming knowledge of a light hobbyist, I&#8217;ve increased my annual income by 75%. I actually hate talking about my income but at the risk of coming off as a pompous ass, I need to make a point. This app has meant so much more to me than the code that it&#8217;s comprised of or the money it&#8217;s earned. The wealth of experience, the people I&#8217;ve met, the blogging, and seeing a project through from start to finish &#8211; these are the elements that have helped build who I am today; Pixel Fighters was just a catalyst.</p>
<h3>Goals/ Accomplishments</h3>
<p>I&#8217;ve written <a title="Previous Pixel Fighters Blogs" href="http://www.bitwit.ca/tag/pixel-fighters/">several previous entries</a> on my experience along the way, so I will skip the &#8220;story of&#8221; and discuss only end results and reflections. Entering the market in January of 2011, I set a personal goal that I felt was reasonable based on what I thought market conditions were at the time.  I just wanted to sell 30,000 copies and pocket enough after taxes to pay my rent over the year. Before the second update, Pixel Frenzy and lite version, I <a title="Revisited sales goal" href="http://www.bitwit.ca/blog/setting-reasonable-market-expectations/">blogged a goal of 9000 more copies</a> on my ~3000 so far. My second goal was to hit the developer job market with my new &#8220;resume maker&#8221;. While I did not come even close to my first goal, and that has been hard to accept at times, I think I knocked goal #2 out of the park.</p>
<p>Developing an app in your own name is a well respected accomplishment. It provided an interesting topic of conversation during my search for a job that also demonstrated my capabilities in a number of important fields. Between the iOS app, the promotional website, the designer/musician I hired and managed, the personal market experience and the blogging, I had a number of strong talking points. Following the release of my app in January 2011, I&#8217;ve been occasionally contacted by recruiters and HR reps; One of these actually led to my current position with TC Media.</p>
<h3>The iOS community and personal growth</h3>
<p>In addition to the positive impact on my career, I&#8217;ve also enjoyed the benefits of just being a part of the iOS development community. Entering the market, I don&#8217;t think I had a profound enough appreciation for just how full of brilliant people this marketplace is; I am empowered by the entrepreneurial energy. I&#8217;ve been humbled time and time again and I&#8217;m sure I will continue to be. In particular, I had one experience early in my <a href="https://twitter.com/#!/search/%23idevblogaday">#idevblogaday</a> days <a href="http://www.bitwit.ca/blog/dont-release-your-first-app-ever-made/">when I wrote an entry about not releasing your first app</a>. While my blog isn&#8217;t visited nearly enough to say this was &#8220;widely panned&#8221;, it was panned enough. I listened those who scorned me, asked some to help me understand why they disagreed and absorbed as much as I could from the experience. Reflecting now, I do reject my original hypothesis completely and I&#8217;m happy to have had Pixel Fighters to blog about so that people could help slap the silly out of me. My experiences with Pixel Fighters helped shape the way I look at software development, there&#8217;s nothing to regret or be ashamed of.</p>
<h3>Do&#8217;s and Don&#8217;ts</h3>
<p><strong>DO</strong> spend something on art; art matters. I think that many of the sales I do have been thanks to the quality of the art. I also learned a lot from the experience of hiring and working with a designer.</p>
<p><strong>DON&#8217;T</strong> spend <em>so damn much</em> on art though, especially on your first app!  My original budget was $2600 for all my art, which was pretty high, and I let myself totally blow that, overconfident that I could at least break even in-market. That said, I invested in art to motivate myself, take my project seriously, see it through to the end and sell it for $0.99. You can probably get that kind of motivation for under $500 though. Learn to be strategic with art if you&#8217;re operating with a tight budget. Can you make this yourself? Does that really need a new graphic animation? Is there another way to animate or draw this programmatically?</p>
<p><strong>DO</strong> have a plan. Plan and plan and plan. Then plan some more. The original 9 months of my development were just crazy. I was building the game on the fly, incorporating what I wanted when I wanted. Planning is quite difficult, particularly on your first app, when you lack the experience to outline the &#8217;how&#8217; and the &#8216;why&#8217; - but do your best to roadmap your intended improvements. Also, try and build in testable cycles, so you don&#8217;t leave a massive mess of issues until 2 weeks before submitting to Apple. (I did)</p>
<p><strong>DO</strong> think about all the extra value you get from building your app. Look for ways other than the obvious that your app can help you. For me, it was about moving into a development career. As an independent, it&#8217;s for the portfolio. People are going to be impressed by the fact that you&#8217;ve personally built <em>anything</em> for iPhone &#8211; Use that to your advantage.</p>
<p><strong>DON&#8217;T</strong> get discouraged. This past year it has not always been easy accepting my app&#8217;s results. I tried several different ideas. I invested in an update, released a separate themed mini-game and I finally created a lite version. While originally I had thought any one of these things might give me a massive boost, the reality is that none have. Still, I have to say I&#8217;m not discouraged and just glad to have tried and learned. At this point, I just need to accept the results and focus my time and energy on new and exciting opportunities. So much has been learned in the last few years, and I really look forward to taking this experience to my next personal game project.</p>
<p><strong>DO</strong> blog. Blogging is a wonderful way to grow. When you blog you share with your community, you learn from your peers and you demonstrate professionalism/expertise. I&#8217;m so glad I started blogging and participating in the <a href="https://twitter.com/#!/search/%23idevblogaday">#idevblogaday</a> community because it&#8217;s another skill I&#8217;ve picked up thanks to this experience that I don&#8217;t plan to stop.</p>
<h3>Conclusions/The Horizon</h3>
<p>I didn&#8217;t want to overload this blog with information or story but please ask me anything in the comments. Nothing is too personal and I want this information to be as whole and useful as possible.</p>
<p>This year I&#8217;ll be working as an iOS Developer for TC Media in Toronto, making apps mostly, maybe a game if I&#8217;m lucky and probably a couple web projects. On my weekends and after hours I have a few things planned, some of which I will discuss at a later date.</p>
<h5>TOJam &#8211; The next game(er&#8230; prototype?)</h5>
<p>I&#8217;m really excited to register for <a href="http://tojam.ca">TOJam this year</a> (when registration opens soon). I&#8217;ve assembled a team of 5 including myself, my musician and artist from Pixel Fighters as well as 2 other developers from work. We are going to be making a mini-RPG (surprised?). I&#8217;m really looking forward to making a new RPG based on my past experiences and working on it with a team &#8211; it&#8217;s going to be a great experience. I also look forward to meeting face to face with the game development community in Toronto. I&#8217;ll post on how it went in a month&#8217;s time.</p>
]]></content:encoded>
			<wfw:commentRss>http://idevblogaday.com/archives/1682/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pixel Fighters: A Post-Mortem [Kyle Newsome]</title>
		<link>http://www.bitwit.ca/blog/pixel-fighters-a-post-mortem/</link>
		<comments>http://idevblogaday.com/archives/1397#comments</comments>
		<pubDate>Fri, 20 Apr 2012 04:15:31 +0000</pubDate>
		<dc:creator>Kyle Newsome</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://idevblogaday.com/archives/1397</guid>
		<description><![CDATA[Allow me to get straight to the sales juice of this post, the rest can come from there. This project cost me a total of $5000 for the original game and $2000 in my second major update.  As you can calculate from the numbers, I&#8217;ve made only about $2250 in the past year and a quarter.]]></description>
				<content:encoded><![CDATA[<p>Allow me to get straight to the sales juice of this post, the rest can come from there. This project cost me a total of $5000 for the original game and $2000 in my second major update.  As you can calculate from the numbers, I&#8217;ve made only about $2250 in the past year and a quarter.</p>
<p><span>(Click for a larger image)</span><br />
<a href="http://www.bitwit.ca/wp-content/uploads/2012/04/Apr19th-Pixel-Family-Sales-Data.png"><img class="alignleft size-large wp-image-1168" style="float: none" src="http://www.bitwit.ca/wp-content/uploads/2012/04/Apr19th-Pixel-Family-Sales-Data-1024x529.png" alt="" width="600" /></a>I imagine that this data might be shock to some, either that I spent so much on art to build my game or that I would announce a $5000 net-loss almost proudly. Well that&#8217;s because this game has singlehandedly changed my career landscape and paid for itself many times over.  In less than 3 years since I left my job in market research as a project manager with only the programming knowledge of a light hobbyist, I&#8217;ve increased my annual income by 75%. I actually hate talking about my income but at the risk of coming off as a pompous ass, I need to make a point. This app has meant so much more to me than the code that it&#8217;s comprised of or the money it&#8217;s earned. The wealth of experience, the people I&#8217;ve met, the blogging, and seeing a project through from start to finish &#8211; these are the elements that have helped build who I am today; Pixel Fighters was just a catalyst.</p>
<h3>Goals/ Accomplishments</h3>
<p>I&#8217;ve written <a title="Previous Pixel Fighters Blogs" href="http://www.bitwit.ca/tag/pixel-fighters/">several previous entries</a> on my experience along the way, so I will skip the &#8220;story of&#8221; and discuss only end results and reflections. Entering the market in January of 2011, I set a personal goal that I felt was reasonable based on what I thought market conditions were at the time.  I just wanted to sell 30,000 copies and pocket enough after taxes to pay my rent over the year. Before the second update, Pixel Frenzy and lite version, I <a title="Revisited sales goal" href="http://www.bitwit.ca/blog/setting-reasonable-market-expectations/">blogged a goal of 9000 more copies</a> on my ~3000 so far. My second goal was to hit the developer job market with my new &#8220;resume maker&#8221;. While I did not come even close to my first goal, and that has been hard to accept at times, I think I knocked goal #2 out of the park.</p>
<p>Developing an app in your own name is a well respected accomplishment. It provided an interesting topic of conversation during my search for a job that also demonstrated my capabilities in a number of important fields. Between the iOS app, the promotional website, the designer/musician I hired and managed, the personal market experience and the blogging, I had a number of strong talking points. Following the release of my app in January 2011, I&#8217;ve been occasionally contacted by recruiters and HR reps; One of these actually led to my current position with TC Media.</p>
<h3>The iOS community and personal growth</h3>
<p>In addition to the positive impact on my career, I&#8217;ve also enjoyed the benefits of just being a part of the iOS development community. Entering the market, I don&#8217;t think I had a profound enough appreciation for just how full of brilliant people this marketplace is; I am empowered by the entrepreneurial energy. I&#8217;ve been humbled time and time again and I&#8217;m sure I will continue to be. In particular, I had one experience early in my <a href="https://twitter.com/#!/search/%23idevblogaday">#idevblogaday</a> days <a href="http://www.bitwit.ca/blog/dont-release-your-first-app-ever-made/">when I wrote an entry about not releasing your first app</a>. While my blog isn&#8217;t visited nearly enough to say this was &#8220;widely panned&#8221;, it was panned enough. I listened those who scorned me, asked some to help me understand why they disagreed and absorbed as much as I could from the experience. Reflecting now, I do reject my original hypothesis completely and I&#8217;m happy to have had Pixel Fighters to blog about so that people could help slap the silly out of me. My experiences with Pixel Fighters helped shape the way I look at software development, there&#8217;s nothing to regret or be ashamed of.</p>
<h3>Do&#8217;s and Don&#8217;ts</h3>
<p><strong>DO</strong> spend something on art; art matters. I think that many of the sales I do have been thanks to the quality of the art. I also learned a lot from the experience of hiring and working with a designer.</p>
<p><strong>DON&#8217;T</strong> spend <em>so damn much</em> on art though, especially on your first app!  My original budget was $2600 for all my art, which was pretty high, and I let myself totally blow that, overconfident that I could at least break even in-market. That said, I invested in art to motivate myself, take my project seriously, see it through to the end and sell it for $0.99. You can probably get that kind of motivation for under $500 though. Learn to be strategic with art if you&#8217;re operating with a tight budget. Can you make this yourself? Does that really need a new graphic animation? Is there another way to animate or draw this programmatically?</p>
<p><strong>DO</strong> have a plan. Plan and plan and plan. Then plan some more. The original 9 months of my development were just crazy. I was building the game on the fly, incorporating what I wanted when I wanted. Planning is quite difficult, particularly on your first app, when you lack the experience to outline the &#8217;how&#8217; and the &#8216;why&#8217; - but do your best to roadmap your intended improvements. Also, try and build in testable cycles, so you don&#8217;t leave a massive mess of issues until 2 weeks before submitting to Apple. (I did)</p>
<p><strong>DO</strong> think about all the extra value you get from building your app. Look for ways other than the obvious that your app can help you. For me, it was about moving into a development career. As an independent, it&#8217;s for the portfolio. People are going to be impressed by the fact that you&#8217;ve personally built <em>anything</em> for iPhone &#8211; Use that to your advantage.</p>
<p><strong>DON&#8217;T</strong> get discouraged. This past year it has not always been easy accepting my app&#8217;s results. I tried several different ideas. I invested in an update, released a separate themed mini-game and I finally created a lite version. While originally I had thought any one of these things might give me a massive boost, the reality is that none have. Still, I have to say I&#8217;m not discouraged and just glad to have tried and learned. At this point, I just need to accept the results and focus my time and energy on new and exciting opportunities. So much has been learned in the last few years, and I really look forward to taking this experience to my next personal game project.</p>
<p><strong>DO</strong> blog. Blogging is a wonderful way to grow. When you blog you share with your community, you learn from your peers and you demonstrate professionalism/expertise. I&#8217;m so glad I started blogging and participating in the <a href="https://twitter.com/#!/search/%23idevblogaday">#idevblogaday</a> community because it&#8217;s another skill I&#8217;ve picked up thanks to this experience that I don&#8217;t plan to stop.</p>
<h3>Conclusions/The Horizon</h3>
<p>I didn&#8217;t want to overload this blog with information or story but please ask me anything in the comments. Nothing is too personal and I want this information to be as whole and useful as possible.</p>
<p>This year I&#8217;ll be working as an iOS Developer for TC Media in Toronto, making apps mostly, maybe a game if I&#8217;m lucky and probably a couple web projects. On my weekends and after hours I have a few things planned, some of which I will discuss at a later date.</p>
<h5>TOJam &#8211; The next game(er&#8230; prototype?)</h5>
<p>I&#8217;m really excited to register for <a href="http://tojam.ca">TOJam this year</a> (when registration opens soon). I&#8217;ve assembled a team of 5 including myself, my musician and artist from Pixel Fighters as well as 2 other developers from work. We are going to be making a mini-RPG (surprised?). I&#8217;m really looking forward to making a new RPG based on my past experiences and working on it with a team &#8211; it&#8217;s going to be a great experience. I also look forward to meeting face to face with the game development community in Toronto. I&#8217;ll post on how it went in a month&#8217;s time.</p>
]]></content:encoded>
			<wfw:commentRss>http://idevblogaday.com/archives/1397/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Brief Reflections On A Meeting With iTunes Canada [Kyle Newsome]</title>
		<link>http://www.bitwit.ca/blog/brief-reflections-on-a-meeting-with-itunes-canada/</link>
		<comments>http://idevblogaday.com/archives/1361#comments</comments>
		<pubDate>Fri, 23 Mar 2012 10:00:26 +0000</pubDate>
		<dc:creator>Kyle Newsome</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://idevblogaday.com/archives/1361</guid>
		<description><![CDATA[This week, thanks to my employer, I was very lucky to have the opportunity to visit iTunes Canada and meet several employees who manage marketing. I was ridiculously excited about the chance to visit an Apple office and hear about App Store marketing from the source. It was a great experience, everyone was really friendly]]></description>
				<content:encoded><![CDATA[<p>This week, thanks to my employer, I was very lucky to have the opportunity to visit iTunes Canada and meet several employees who manage marketing. I was ridiculously excited about the chance to visit an Apple office and hear about App Store marketing from the source. It was a great experience, everyone was really friendly and I was really impressed with the positive atmosphere. Leaving the meeting, here are a few quick take aways:</p>
<ol>
<li>Everything iTunes shares in their meetings is 100% public information, so there&#8217;s nothing you can&#8217;t learn about the App Store market outside of speaking/meeting with them directly. In my opinion, the blogging/twitter community is pretty strong and if you are engaged in these spaces in addition to your own development then you know what&#8217;s going on. I felt like I already knew 98% of everything they told my colleagues.</li>
<li>The app approval process is managed on a central basis. The details of this process is private and iTunes employees don&#8217;t know what goes on either (or hide it really well)</li>
<li>iTunes has many featured lists all over their App Store that are hand picked apps by employees to fit various appropriate themes. Each country we get separate revenue reports from has it&#8217;s own iTunes department. (i.e. US, Canada, UK, Mexico,&#8230; WorldWide). These departments will have a few lists that are picked for the country/countries in that category.</li>
<li>The App Store turns over worldwide on Thursdays, new lists will appear.</li>
<li>It shouldn&#8217;t be any surprise that there&#8217;s really no trick to getting featured; just build good, engaging, innovative apps and have proper product descriptions/screenshots. Updating with new features (not just bug fixes) to satisfy/grow your user base is seen as a positive too.</li>
<li>Further to point #5, <strong>there is no substitute to a good marketing plan</strong>. Make sure you are getting the word out about your app ahead of time to all the right people of influence. There&#8217;s a tremendous number of apps coming through the store every day, so you&#8217;ve got to be communicating above the clutter. These employees are users too, so it really isn&#8217;t hard to bet they will read publications on what&#8217;s popular early in the week.</li>
</ol>
<div><span>There should be no big surprises here and, personally, I believe that&#8217;s a really good thing. I think we can all feel at times like so much of Apple&#8217;s internal workings are shrouded in mystery so it was a refreshing experience to be reassured what we know about the App Store and marketing is right. I hope others find this useful and reassuring.</span></div>
]]></content:encoded>
			<wfw:commentRss>http://idevblogaday.com/archives/1361/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>An iOS5 Ready Native Web App Template [Kyle Newsome]</title>
		<link>http://www.bitwit.ca/blog/an-ios5-ready-native-web-app-template/</link>
		<comments>http://idevblogaday.com/archives/1319#comments</comments>
		<pubDate>Fri, 24 Feb 2012 10:00:34 +0000</pubDate>
		<dc:creator>Kyle Newsome</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://idevblogaday.com/archives/1319</guid>
		<description><![CDATA[Several months ago, I wrote a template/tutorial on developing a Native iOS Web App that seized the phone&#8217;s camera functionality. Since then it has been a relatively popular article on my blog, iOS5 was released and I&#8217;ve also received some questions/feedback. So, I thought it might be appropriate to revise this template, based on the]]></description>
				<content:encoded><![CDATA[<p>Several months ago, I wrote a <a href="http://www.bitwit.ca/blog/an-native-ios-web-app-tutorialtemplate/">template/tutorial on developing a Native iOS Web App</a> that seized the phone&#8217;s camera functionality. Since then it has been a relatively popular article on my blog, iOS5 was released and I&#8217;ve also received some questions/feedback. So, I thought it might be appropriate to revise this template, based on the previous one and go over the changes. <a href="http://www.bitwit.ca/wp-content/uploads/2012/02/Web-View-Controller.zip">Download the code here.</a></p>
<p>Let me begin by saying that this template isn&#8217;t anything like or close to Phone Gap.  If you are serious about portability and want to remain Objective-C illiterate, Phone Gap is a better alternative. This is just a basic template for those who want a Native iOS Web App with the possibility to dive into as much or as little Objective-C as you like. It&#8217;s more like an alternative to Interface Builder. The template comes with camera functionality and some basic Javascript-to-Objective-C message sending.</p>
<p>So lets briefly discuss what we are going to do:</p>
<ul>
<li>This template will use ARC (Automatic Reference Counting) introduced in iOS5</li>
<li>We won&#8217;t use Interface Builder at all in this template</li>
<li>We will instead create a subclass of UIViewController and place a webview on top programatically</li>
<li>The class will automatically detect objc:// schema links and try to run that method in a custom delegate class we will build</li>
</ul>
<h2>The HTML stuff</h2>
<p>First let&#8217;s briefly revise the basic HTML view we will load. You should notice that 3 out of 4 of the links are seemingly dead &#8211; these will be linked with Objective-C once inside of the iPhone. I tried to make this template look a little bit nicer looking and iPhone-like than the last one. The buttons are inspired by <a href="http://hellohappy.org/css3-buttons/">Chad Mazzola&#8217;s CSS3 Buttons</a> and I&#8217;m using the <a href="http://www.jquery.com">jQuery library</a>. If you are loading pages via the web and interested in a smaller Javascript library, check out <a href="http://zeptojs.com/">Zepto</a></p>
<div>
<div>
<div>
        <a href="http://www.bitwit.ca/">jQuery Alert</a><br />
        <label for="username">Enter your name:</label></p>
<p>        <a href="objcMessage();">Objective-C Alert</a><br />
        <a href="//takecameraimage">Take a camera image</a><br />
        <a href="//takelibraryimage">Image from library</a>
    </div>
<p>    <img src="http://www.bitwit.ca/wp-content/uploads/2011/09/iphonebattery1.jpeg" /></p>
</div>
<p><!-- #container -->
</p>
</div>
<h4>index.html</h4>
<pre>&lt;!doctype html&gt;
&lt;head&gt;
    &lt;meta charset="utf-8"&gt;
      &lt;meta name="viewport" content="width=device-width,initial-scale=1"&gt;

      &lt;link rel="stylesheet" href="style.css"&gt;
      &lt;script src="jquery-1.6.2.min.js"&gt;&lt;/script&gt;
      &lt;script defer src="script.js"&gt;&lt;/script&gt;
&lt;/head&gt;
&lt;body id="body"&gt;
  &lt;div id="container"&gt;

    &lt;div id="iphone"&gt;
        &lt;a href="/" class="js"&gt;jQuery Alert&lt;/a&gt;&lt;br /&gt;
        &lt;label for="username"&gt;Enter your name:&lt;/label&gt;
        &lt;input type="text" id="username" /&gt;
        &lt;a href="javascript:objcMessage();"&gt;Objective-C Alert&lt;/a&gt;&lt;br /&gt;
        &lt;a href="objc://takeCameraImage"&gt;Take a camera image&lt;/a&gt;&lt;br /&gt;
        &lt;a href="objc://takeLibraryImage"&gt;Image from library&lt;/a&gt;&lt;br /&gt;
    &lt;/div&gt;

    &lt;img id="testImage" src="iphonebattery.jpeg" /&gt;

  &lt;/div&gt;&lt;!-- #container --&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<h4>styles.css</h4>
<pre>
body{
    margin: 0;
    padding: 0;
}
#container {
    padding: 10px;
    font-family: "helvetica neue", helvetica, arial, sans-serif;
    background-image: -webkit-gradient(
	linear,
	left bottom,
	left top,
	color-stop(0.14, rgb(138,138,138)),
	color-stop(1, rgb(199,191,199))
    );

}

#iphone a{

    display: block;
    width: 300px;
    -webkit-touch-callout: none;
   /* -webkit-user-select: none; */
    background-color: #8C9CBF;
    background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #8C9CBF), color-stop(50%, #546A9E), color-stop(50%, #36518F), color-stop(100%, #3D5691));
    background-image: -webkit-linear-gradient(top, #8C9CBF 0%, #546A9E 50%, #36518F 50%, #3D5691 100%);
    border: 1px solid #172D6E;
    border-bottom: 1px solid #0E1D45;
    -webkit-border-radius: 5px;
    -webkit-box-shadow: inset 0 1px 0 0 #b1b9cb;
    color: white;
    font: bold 16px "helvetica neue", helvetica, arial, sans-serif;
    padding: 7px 0 8px 0;
    margin: 0 auto;
    text-decoration: none;
    text-align: center;
    text-shadow: 0 -1px 1px #000F4D;
}
label{
    width: 300px;
    text-align: center;
    padding: 10px;
    font-size: 18px;
}
input#username{
    width: 300px;
    border-radius: 5px;
    text-align: center;
    padding: 5px 0;
    font-size: 24px;
    margin: 0 0 10px 0;
}

#testImage{
    border: 1px solid #CCC;
    width: 100%;
    height: 66%;
}
</pre>
<h4>scripts.js</h4>
<pre>
$(document).ready(function(){
    $("a.js").click(
        function(e){
            e.preventDefault();
            alert("You clicked on a link that activates javascript");
        }
    );
});

function objcMessage()
{
    var name = "empty";
    if( $("#username").val() != "" )
        name =  $("#username").val();
    window.location = "objc://message/" + name;
}

function processImage( img )
{
    $('#testImage').remove();
    $('#body').append( '<img src="http://www.bitwit.ca/' + img + '" />' );
}
</pre>
<h2>The XCode Project</h2>
<p>Now we can move on to our XCode project. You can build your own or follow along in the <a href="http://www.bitwit.ca/wp-content/uploads/2012/02/Web-View-Controller.zip">sample code</a>.<br />
I&#8217;ve used a simple View Based Application. First thing, we will temporarily ignore the UIViewController that XCode makes for us with the template and create our own file from scratch &#8211; Call it &#8220;WebViewController&#8221; and its contents will be as follows:</p>
<h4>WebViewController.h</h4>
<pre>
#import &lt;UIKit/UIKit.h&gt;

@class WebViewControllerDelegate;
@interface WebViewController : UIViewController &lt;UIWebViewDelegate&gt;

@property (nonatomic, strong) UIWebView *webView;
@property (nonatomic, strong) WebViewControllerDelegate *functionDelegate;

-(void)loadPageWithURL:(NSString *)url;
-(void)loadPageFromFile:(NSString *)html;

@end
</pre>
<h4>WebViewController.m</h4>
<pre>
#import "WebViewController.h"
#import "WebViewControllerDelegate.h"

@implementation WebViewController

@synthesize webView;
@synthesize functionDelegate;

- (void)didReceiveMemoryWarning {
    // Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];
    // Release any cached data, images, etc that aren't in use.
}

#pragma mark - View lifecycle

- (void)viewDidLoad {
    [super viewDidLoad];

    //make a frame fore the webview based on the view's frame
    CGRect frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
    self.webView = [[UIWebView alloc] initWithFrame:frame];
    [self.view addSubview:webView];

    //UIWebViewDelegate will be self
    [webView setDelegate:self];
    // Web Requests that start with the scheme "objc://" will be caught and sent to the WebViewControllerDelegate
    self.functionDelegate = [[WebViewControllerDelegate alloc] init];
    functionDelegate.webViewController = self;
}

- (void)viewDidUnload {
    [super viewDidUnload];
    self.webView = nil;
    self.functionDelegate = nil;
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    // Return YES for supported orientations
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

#pragma mark - StackingWebViewController

/* Loads a URL string into the webview */
- (void)loadPageWithURL:(NSString *)url {
    NSURL *theURL = [NSURL URLWithString:url];
    NSURLRequest *theRequest = [NSURLRequest requestWithURL:theURL];
    [webView loadRequest:theRequest];
}
/* Loads page from file */
- (void)loadPageFromFile:(NSString *)html {
    //First we load up the index.html file
    NSString *path = [[NSBundle mainBundle] pathForResource:[html stringByDeletingPathExtension] ofType:@"html"];
    NSData *htmlData = [NSData dataWithContentsOfFile:path];

    // Next we need to set up a proper base URL for our files
    NSString *resourceURL = [[NSBundle mainBundle] resourcePath];
    // The URL in the raw still needs some cleaning
    // Need to be double-slashes to work correctly with UIWebView, so change all "/" to "//"
    resourceURL = [resourceURL stringByReplacingOccurrencesOfString:@"/" withString:@"//"];
    // Also need to replace all spaces with "%20"
    resourceURL = [resourceURL stringByReplacingOccurrencesOfString:@" " withString:@"%20"];
    //And make a proper URL
    NSURL *baseURL = [NSURL URLWithString:[NSString stringWithFormat:@"file:/%@//", resourceURL]];

    //Finally let's load up the html data and passthe Base URL for the CSS and Javascript files
    [webView loadData:htmlData MIMEType:@"text/html" textEncodingName:@"UTF-8" baseURL:baseURL];
}

#pragma mark - UIWebViewDelegate

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {

    //This will catch clicked links and location changes made from Javascript, but no other request types
    if (navigationType == UIWebViewNavigationTypeLinkClicked || navigationType == UIWebViewNavigationTypeOther)
    {
        NSURL *URL = [request URL]; //Get the URL
        //The [URL scheme] is the "http" or "ftp" portion, for example
        //so let's make one up that isn't used at all -&gt; "objc"
        //
        if ( [[URL scheme] isEqualToString:@"objc"] ) {
            //The [URL host] is the next part of the link
            //so we can use that like a selector

            NSString *selectorName = [URL host];
            id data = nil;

            NSMutableArray *parameters = [NSMutableArray array];
            if ( ![[URL path] isEqualToString:@""] )
            {
                selectorName =  [NSString stringWithFormat:@"%@:", selectorName];
                parameters = [NSMutableArray arrayWithArray: [[URL path] componentsSeparatedByString:@"/"] ];
                [parameters removeObjectAtIndex:0]; //first object is just a slash "/"
                if ( [parameters count] == 1 ){
                    data = [parameters objectAtIndex:0];
                }
                else{
                    data = parameters;
                }
            }

            SEL method = NSSelectorFromString( selectorName );
            if ([functionDelegate respondsToSelector:method])
            {
                //This line may give a warning but that's ok, we are being memory concious
                // See: http://stackoverflow.com/questions/7017281/performselector-may-cause-a-leak-because-its-selector-is-unknown
                [functionDelegate performSelector:method withObject:data];
            }
            return NO;
        }

    }
    return YES;
}

@end
</pre>
<p>The code is well commented but let&#8217;s look at the functionality of this class from a high level.</p>
<ul>
<li>On <em>viewDidLoad</em> the class instantiates a UIWebView programatically and adds it to the view</li>
<li>We set the class as the UIWebView Delegate, so it will listen directly to the UIWebView we added</li>
<li>The class has two functions to load either a URL or a local .html file</li>
<li>We receive a callback from the UIWebView to ask permission to follow any link with <strong>webView:shouldStartLoadWithRequest:navigationType:</strong></li>
<li>We listen in the callback specifically for &#8220;objc&#8221; schemed links and we fire the appropriate method on our <strong>WebViewControllerDelegate</strong> if it can respond to this method</li>
<li>&#8220;objc&#8221; schemed links can also send string parameters. For example, <strong>&#8220;objc://doThis/then/that&#8221;</strong> would run a method
<p> <strong>-(void)doThis:(NSArray *)data</strong></p>
<p> and the NSArray would have 2 NSStrings : @&#8221;then&#8221;,@&#8221;that&#8221; </li>
<li>For convenience sake if there is only 1 parameter, it will pass as a <br /> <strong>(NSString *)</strong> instead</li>
</ul>
<p>Speaking of our <strong>WebViewControllerDelegate</strong>, let&#8217;s look at it next:</p>
<h4>WebViewControllerDelegate.h</h4>
<pre>
/**
* WebViewController is responsible for all
* messages that can be used in HTML
*/

@class WebViewController;
@interface WebViewControllerDelegate : NSObject &lt;UINavigationControllerDelegate, UIImagePickerControllerDelegate&gt;

@property (nonatomic, weak) WebViewController *webViewController;

/*
* Test alert from Objective-C
 */
-(void)message:(NSString *)name;

/* On successful picture selection, a base64 image
* is sent to the JS function processImage();
*/
-(void)takeCameraImage;
-(void)takeLibraryImage;

@end
</pre>
<h4>WebViewControllerDelegate.m</h4>
<pre>
#import "WebViewControllerDelegate.h"
#import "NSData+Base64.h"
#import "WebViewController.h"

@implementation WebViewControllerDelegate

@synthesize webViewController;

-(void)message:(NSString *)name
{
    //Showing a basic pop up alert

    NSString *message = [NSString stringWithFormat:
                         @"Your name is %@", name ];

    UIAlertView *alert = [[UIAlertView alloc]
                          initWithTitle:@"Message From OBJ-C"
                          message:message
                          delegate:nil
                          cancelButtonTitle:@"OK"
                          otherButtonTitles:nil, nil];

    [alert show];
}

-(void)takeCameraImage
{
    if ( ![UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera] )
    {
        NSString *message = [NSString stringWithString:
                             @"Your device does not have a camera" ];

        UIAlertView *alert = [[UIAlertView alloc]
                              initWithTitle:@"No camera available"
                              message:message
                              delegate:nil
                              cancelButtonTitle:@"OK"
                              otherButtonTitles:nil, nil];

        [alert show];
        return;
    }

    // Set the UIImagePicker, set it to theCamer and set self as the delegate
    UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
	imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
	imagePicker.delegate = self;

    // Present the image picker
	[webViewController presentModalViewController:imagePicker animated:YES];

}

-(void)takeLibraryImage
{
    // Set the UIImagePicker, set it to theCamer and set self as the delegate
    UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
	imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
	imagePicker.delegate = self;

    // Present the image picker
	[webViewController presentModalViewController:imagePicker animated:YES];

}

#pragma mark - Image Picker

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    //Get the Image
	UIImage *image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];

    //flatten it to NSData as a JPEG, low quality
    NSData *flatImage = UIImageJPEGRepresentation(image, 0.1f);

    // convert NSData to a base 64 encoded string
    // NSData+Base64 Category provided by Matt Gallagher
    // http://cocoawithlove.com/2009/06/base64-encoding-options-on-mac-and.html
    //
    NSString *image64 = [flatImage base64EncodedString];

    //process the image in javascript to be added to the page
    NSString *js = [NSString stringWithFormat: @"processImage('data:image/jpeg;base64,%@')", image64];
    [webViewController.webView stringByEvaluatingJavaScriptFromString:js];

    //dismiss the image picker
    [picker dismissModalViewControllerAnimated:YES];

}
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {

    //cancel was hit inside of the camera view
    [picker dismissModalViewControllerAnimated:YES];
}
@end
</pre>
<p>The WebViewControllerDelegate is only responsible for dealing with methods that are intended to be called from HTML. In my previous template, the equivalent delegate class was also the UIWebViewDelegate, so it was the gatekeeper for following links as well.  However, I feel it is wrong to do this for one important reason: You should have a fresh delegate capable of <strong>only</strong> responding to methods you actually want exposed to HTML.  Using the old method from my previous template, we were effectively exposing methods more methods that we wouldn&#8217;t really ever want to call. With that, you could argue that my UIImagePickerController related methods shouldn&#8217;t even be in this delegate. If this template was more complex, I would have moved it out.</p>
<p>To summarize the functionality we are seeing:</p>
<ul>
<li>The <strong>message:</strong> function can accept a single string parameter and tell you your name. We set up a corresponding method in javascript that took the name from the input box and added it as a parameter. (As an aside, you could use a &#8220;/&#8221; in your name and see how multiple parameters work without crashing the app)</li>
<li>We have a <strong>takeCameraImage:</strong> function which checks if your device has a camera and then launches a UIImagePickerController</li>
<li>We also have a <strong>takeLibraryImage:</strong> function which opens the photo library instead</li>
<li>After selecting an image, a Javascript function <strong>processImage( img )</strong> is called to pass over the Base64Encoded image from Obj-C</li>
</ul>
<h4>One last step</h4>
<p>So with that, we are set up and ready to do some Native iOS HTML&#8217;in , there&#8217;s just one more thing.  Go back to our original UIViewController that we ignored at the start and subclass it from WebViewController instead, like so:</p>
<h4>ViewController.h</h4>
<pre>
#import &lt;UIKit/UIKit.h&gt;
#import "WebViewController.h"

@interface ViewController : WebViewController

@end
</pre>
<h4>ViewController.m</h4>
<pre>
#import "ViewController.h"

@implementation ViewController

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
}

#pragma mark - View lifecycle
/* We are ready to load a page using our new webview functionality */
- (void)viewDidLoad
{
    [super viewDidLoad];

    [self loadPageFromFile:@"index.html"];
    //[self loadPageWithURL:@"http://www.google.ca"];
}

- (void)viewDidUnload
{
    [super viewDidUnload];
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    // Return YES for supported orientations
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
        return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
    } else {
        return YES;
    }
}

@end
</pre>
<p>And it&#8217;s just that easy. In one simple line in our <strong>viewDidLoad</strong> we are now capable of loading HTML files that can call exposed obj-c methods that we write. The nice thing about this template, is you can subclass it to your heart&#8217;s content and reuse the functionality easily in multiple places across a more complex app.</p>
<h4>In Summary</h4>
<p>So now you have your Native iOS5 ready Web App. You can now code your views exclusively in HTML/CSS/Javascript and take full advantage of an Objective-C backend on your iPhone as desired. If you have any questions, let me know and I will try and respond/amend asap.</p>
<p><a href="http://www.bitwit.ca/wp-content/uploads/2012/02/Web-View-Controller.zip">Download the code here.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://idevblogaday.com/archives/1319/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>2012 – My year of iOS [Kyle Newsome]</title>
		<link>http://www.bitwit.ca/blog/2012-my-year-of-ios/</link>
		<comments>http://idevblogaday.com/archives/1280#comments</comments>
		<pubDate>Fri, 27 Jan 2012 10:00:43 +0000</pubDate>
		<dc:creator>Kyle Newsome</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://idevblogaday.com/archives/1280</guid>
		<description><![CDATA[A brief personal update. A new job and personal game plan make it look like this year is coming up iOS for me.]]></description>
				<content:encoded><![CDATA[<p><img src="http://www.bitwit.ca/wp-content/uploads/2012/01/IMG_0054-660x200.jpg" /></p>
<p>Looks like 2012 is going to be a big iOS year for me. Here&#8217;s why:</p>
<h3>A spiffy new job</h3>
<p>I&#8217;m very proud to announce that I recently started a new position with <a href="http://www.transcontinental-interactive.com/home.aspx">Transcontinental Interactive</a> as an iOS Developer. This is a huge landmark for me, as it has been a goal of mine to be a mobile developer at an agency for quite some time. If you read my blog entry <a href="http://www.bitwit.ca/blog/arent-you-glad-you-learned-ios/">&#8220;Aren&#8217;t You Glad You Learned iOS?&#8221;</a> several months ago, you know that iOS pioneered my career change over the last 2.5 years and this is another landmark in that accomplishment.  I&#8217;m really excited to improve/develop apps for some big name brands from Canada/North America this year. The experience will be fantastic.</p>
<p>Speaking of which, my past iOS experience/blog content has been almost exclusively related to game development.  Other than some prototyping, I haven&#8217;t actually developed anything with UIKit, despite being well familiar. I look forward to gaining a more in depth knowledge about UIKit App development and hopefully sharing some tips.</p>
<h3>An iOS marketing goal</h3>
<p>Since I first got involved in the iOS App Store, it has been my goal to develop an strong understanding of the marketplace.<br />
In the past year, I&#8217;ve done a decent job of being as transparent as possible about my personal experiences, sales and goals, but I can&#8217;t speak much for the market as a whole. This year I want to continue working at this goal but expand in a way that allows me to help share a greater wealth of information about the market as a whole. I&#8217;ll talk more about this at a later date.</p>
<h3>A RPG game(system) in the pipes</h3>
<p>While I&#8217;m not confident that I will be releasing a new full game by the end of the year, I will be working away at building a strong/flexible RPG foundation for another iOS game in the future. I&#8217;ve thought a lot about other genres, but they just aren&#8217;t my thing. Creating Pixel Fighters not only challenged me as a developer, it challenged me as an RPG lover. We, as RPG enthusiasts, have a real fixation on our systems, their intricacies and the strategies/statistics that make our characters the strongest they can be.  One area that I think I failed with Pixel Fighters was creating a system deep enough to generate that kind of energy from its fan base, including myself. I also have a lot of personal gripes about the system&#8217;s flexibility. So the focus this year will be on getting a good system and prototyping ideas. A strong enough system should be able to play to many RPG game ideas. While I don&#8217;t expect to give away everything I&#8217;m doing, I expect to be sharing more details on the core of Pixel Fighters, its weaknesses and the direction I&#8217;m going next.</p>
<h3>More iOS blogging to come</h3>
<p>So with that, I&#8217;ll keep this entry short. Expect more blogging this year related to the topics above; that&#8217;s my direction this year</p>
]]></content:encoded>
			<wfw:commentRss>http://idevblogaday.com/archives/1280/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Have You Tried AppCode by JetBrains Yet? [Kyle Newsome]</title>
		<link>http://www.bitwit.ca/blog/have-you-tried-appcode-by-jetbrains-yet/</link>
		<comments>http://idevblogaday.com/archives/1233#comments</comments>
		<pubDate>Fri, 13 Jan 2012 12:00:16 +0000</pubDate>
		<dc:creator>Kyle Newsome</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://idevblogaday.com/archives/1233</guid>
		<description><![CDATA[How many hours are you spending coding in Objective-C these days? Are you being as efficient as you can possibly be? If you haven't tried AppCode by JetBrains yet, there may be room for improvement. AppCode is a recently released Objective-C IDE that has entered the market to make our Objective-C coding process more efficient. Personally, I'm someone who really appreciates it when a 'Point, Click, Click' action becomes a simple press of a hotkey, and it's amazing how those little time savings start to add up.]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.jetbrains.com/objc/"><img class="alignleft size-full wp-image-966" src="http://www.bitwit.ca/wp-content/uploads/2012/01/Screen-Shot-2012-01-05-at-12.15.06-PM.png" alt="App Code Introduction Image" width="622" height="148" /></a><br />
How many hours are you spending coding in Objective-C these days? Are you being as efficient as you can possibly be? If you haven&#8217;t tried AppCode by JetBrains yet, there may be room for improvement. AppCode is a recently released Objective-C IDE that has entered the market to make our Objective-C coding process more efficient. Personally, I really appreciate when a &#8216;Point, Click, Click&#8217; action becomes a simple press of a hotkey, and it&#8217;s amazing how those little time savings start to add up.</p>
<h3>Why/how I tried AppCode</h3>
<p>My discovery of AppCode first started with my discovery of <a href="http://www.jetbrains.com/phpstorm/">PHPStorm</a>, also developed by JetBrains. In the past 9 months, I have been coding in PHP heavily at work &#8211; originally on the Eclipse IDE which I thought was as perfect for PHP as it got. I was wrong. In October, after a glitch in my Eclipse IDE forced me to reinstall the program and lose my preferences, I decided to search for an alternative and came upon PHPStorm, which seemed to be well liked by many in the StackOverflow community. Three days into my free trial, I was enamoured with PHPStorm and made the purchase. Sure, I could have stretched the trial to day #30 and then purchased but I was already infinitely thankful for the improvements JetBrains had made to my day-to-day coding workflow.</p>
<p>It was then that I also noticed a product &#8220;AppCode&#8221; that was soon to be released for the iOS developer community. As soon as 1.0 came out, I gave it a shot but unfortunately didn&#8217;t code much during my trial period. I recently purchased it over the holidays, however, when I had more time to pursue personal endeavours and have been quite satisfied.</p>
<h3>What AppCode can do for you</h3>
<p>Here&#8217;s a brief list of some of the things I noticed about AppCode. This is not even close to an exhaustive list of everything AppCode does, but rather things that I appreciate or felt were noteworthy. I apologize if my explanations seem convoluted at times &#8211; some of this you might need to try for yourself to get it.</p>
<h5>**Personal favorite** Alt + Up/Down = Smart selection expansion</h5>
<p>This is kind of a tricky thing to explain without actually trying it but, in my opinion, it&#8217;s one of the most awesome features of JetBrains&#8217; IDEs, (PHP Storm does this too).<br />
Pressing Alt + UP expands your current selection in a logical fashion<br />
Pressing Alt + DOWN contracts your current selection in a logical fashion</p>
<p>This is a really nice addition to the Alt + Left/Right functions that XCode has (also in AppCode). It is worthwhile mentioning at this point that AppCode fits all its functionality around the XCode hotkeys so they&#8217;ve only added/improved functionality without reprogramming your keymap.</p>
<h5>Dropdown menus</h5>
<p>Here&#8217;s a simple visual of the different options that are available upon right clicking a file. Notice all the hotkeys set up and the handy refactor options completely missing from XCode among other extras. No additional detail necessary, just some food for thought for you.<br />
<a href="http://www.bitwit.ca/wp-content/uploads/2012/01/Screen-Shot-2012-01-05-at-12.03.14-PM.png"><img class="alignleft size-medium wp-image-959" style="float: left" src="http://www.bitwit.ca/wp-content/uploads/2012/01/Screen-Shot-2012-01-05-at-12.03.14-PM-212x300.png" alt="XCode dropdown" width="212" height="300" /></a><a href="http://www.bitwit.ca/wp-content/uploads/2012/01/Screen-Shot-2012-01-05-at-12.02.46-PM.png"><img class="alignleft size-medium wp-image-960" style="float: left" src="http://www.bitwit.ca/wp-content/uploads/2012/01/Screen-Shot-2012-01-05-at-12.02.46-PM-188x300.png" alt="JetBrains Dropdown" width="188" height="300" /></a></p>
<h5>Better safeguards</h5>
<p>I appreciate that AppCode doesn&#8217;t let you do certain things the wrong way, such as file refactoring. In Xcode, it is pretty easy to refactor the wrong way if you are new/oblivious i.e. double click your files and rename them, then systematically find and replace all mentions. AppCode simply doesn&#8217;t have this option, you can only rename by refactoring &#8211; I appreciate this safeguard because occasionally I (stupidly) treat XCode like the filesystem and start refactoring the wrong way before I correct myself.</p>
<p>Furthermore, JetBrains also offers a &#8220;Safe Delete&#8221; refactor that will help you make sure there are no trailing mentions of a file you have deleted.</p>
<h5>More columns oriented</h5>
<p>JetBrains is a highly columns oriented editor. By that I mean that when you click on a new line, your cursor starts where you clicked, and not at column 1, followed by hitting TAB 3 times to start where you wanted. Most of the time XCode is pretty smart about where to put the cursor, but occasionally I feel like I&#8217;m fighting with it to type where I want.</p>
<p>Secondly, when you hold ALT + select to highlight text by columns, the functionality is improved over what XCode offers. It is more comparable to how TextMate treats ALT + select i.e. pasting one line across multiple rows, pastes from the clipboard for each row rather than only on the first and deleting on the rest as XCode does. Prior to AppCode, I used TextMate for my more complicated ALT + select needs and then pasted back to XCode. It&#8217;s nice to have an Objective-C IDE that does it itself.</p>
<h5>Greys variables and functions not being used in the code yet</h5>
<p>You will notice that newly introduced variables and functions will have their names greyed out after introduction. That&#8217;s because JetBrains monitors your code base to see if this variable or function has been called across the project. I find this particularly handy with objects that I have had to tweak and recode several times. It is pretty easy to leave a whole function in your code that is long since obsolete &#8211; AppCode helps you see that.</p>
<h5>File templates</h5>
<p>App Code offers you several file templates to help your new files start off in better shape. Ever wanted more from the XCode class template? &#8211; here you go. How about adding an empty <strong>-(void)dealloc{}</strong> to all of your new .m files? Yes please. The file templates even go as far as allowing variables though I have not explored this. I&#8217;m sure you can think of even better uses.</p>
<h5>Spell Check for variables</h5>
<p>Ever forget that it&#8217;s &#8220;I before E except after C&#8221; when typing out a new variable? AppCode will notice and add a squiggly line. It even reads your multi-word Camel Cased variables for incorrect spelling word-by-word. While this functionality isn&#8217;t perfect (sometimes you will disagree with its opinion on a variable&#8217;s spelling), I appreciate the early indicators. You can also adjust your preferences on spell check or disable it completely.</p>
<h5>Preferences, preferences, and more preferences</h5>
<p>Tons and tons of preferences! Introduce entirely new file types and get basic syntax highlighting. Heck!, syntax highlight every file type differently if you are hardcore. There&#8217;s a lot of power in the preferences of AppCode. I think it demonstrates how flexible/personalizable this tool really is.</p>
<h5>Tabbed navigation between open files</h5>
<p>There are many things I like about the way XCode traverses your files, so I have no criticisms. It is nice, however, that AppCode offers the more common tabbed file navigation that I am used to from all my Web Development IDEs, and Internet browsers. AppCode also includes the ability to split your window several times over horizontally or vertically. Ever wanted to work with two unrelated files directly side by side? AppCode can do that.</p>
<h5>Actionscript Support</h5>
<p>While I am not a flash developer, I think its worthwhile mentioning that AppCode supports Actionscript with syntax highlighting. I don&#8217;t really know anything about the Flash to iOS process but I thought that this was interesting. It&#8217;s at least clear that JetBrains doesn&#8217;t play favourites or do as Apple says &#8211; they are just thinking about what makes our coding easier.</p>
<h3>Still early days for AppCode</h3>
<p>AppCode 1.0 was released at the end of October 2011, so it is a brand new IDE, only a couple of months old. For such a young IDE, I would say it has started off quite polished, leveraging some universal JetBrains code base for all their IDEs, I&#8217;m sure. However, it is not without flaws and growing pains.</p>
<p>For one thing, AppCode is currently NOT a replacement to Xcode, rather it is a full-featured supplement. The good news is that AppCode is built to play very nicely with XCode so leaving them both open is a non-issue.</p>
<p>Admittedly, I have had occasional issues with compiling and running projects on AppCode, so I sometimes code in AppCode and switch to XCode for my compile needs. I&#8217;m confident that these are just early issues that will sort themselves out sooner rather than later &#8211; JetBrains is switched on and very responsive to developers feedback.</p>
<p>I also have been told that Version 1.5 is due for late Q1/Q2 of this year, so a new leap of improvements is just around the corner. There is also an attractive Early Access Beta Program available &#8211; read on&#8230;</p>
<h3>The price tag</h3>
<p>AppCode starts with a 30-day full access free trial. Better yet, you can use their Early Access Beta release to AppCode Version 1.5 entirely free until its official release in a few months from now. The regular price of AppCode is $99 for a personal license. I purchased AppCode as a nerdy gift to myself over the holidays while it was on sale for $69.</p>
<p>I know I will be coding a lot of Objective-C this year and believe it is well worth it. I have this feeling that some readers will immediately dismiss AppCode right after hearing the price. If you are a developer hobbyist currently learning the language, or just not coding Objective-C enough these days, I understand. However, if your day-to-day involves heavy amounts of Objective-C coding, I think it&#8217;s important to consider this IDE. It probably costs two of your work hours (depending on what you quote freelance) and could save you a ton more hours in the future. If you work for a company, perhaps you can convince them to front the cost of a transferrable company license ($199).</p>
<h3>In conclusion</h3>
<p>If you haven&#8217;t tried JetBrains&#8217; AppCode yet, you really have nothing to lose. There is a full access 30-day trial period that is well worth checking out and an even longer Early Access Beta program that will let you trial their latest Beta release indefinitely until official deployment. If your day-to-day consists of a lot of Objective-C coding, I think you will appreciate the little extras that JetBrains puts into their IDEs to make them as flexible and work-efficient as possible.</p>
<p>Personally, I&#8217;m excited to see a competitor in the Objective-C IDE market, particularly JetBrains since they wooed me over with PHPStorm. However, AppCode is only going to be as good as we make it. If we don&#8217;t ever give it a shot, if we don&#8217;t tell them what we like and what we want, and if we don&#8217;t submit issues we&#8217;ll never see the full potential. I&#8217;ve definitely heard my share of moans and groans about the quirks of XCode &#8211; here is a company that wants to help us &#8220;develop with pleasure&#8221;, as their slogan says. JetBrains is very committed to continuous improvements of their products. I am a massive fan of PHPStorm (now version 3.0), and I&#8217;ve heard wonderful things about their Java IDE as well. These are two of their more successful and mature products &#8211; I think AppCode can become one of them too.</p>
<p>So <a href="http://www.jetbrains.com/objc/">give it a shot</a> and see if this product is right for your coding workflow. If you aren&#8217;t ready for it yet or not coding enough Objective-C to justify the purchase, keep your ear to the ground for the future because AppCode is only going to get better.</p>
]]></content:encoded>
			<wfw:commentRss>http://idevblogaday.com/archives/1233/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Company, App, or Individual – How Do You Represent Yourself? [Kyle Newsome]</title>
		<link>http://www.bitwit.ca/blog/company-app-or-individual-how-do-you-represent-yourself/</link>
		<comments>http://idevblogaday.com/archives/1163#comments</comments>
		<pubDate>Fri, 02 Dec 2011 13:15:49 +0000</pubDate>
		<dc:creator>Kyle Newsome</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://idevblogaday.com/archives/1163</guid>
		<description><![CDATA[Company, App, or Individual - How do you represent yourself when entering the iOS Market and communicating? Some pros and cons]]></description>
				<content:encoded><![CDATA[<p>Company, App, or Individual &#8211; How do you represent yourself when entering the iOS Market and communicating? This is a short entry outlining what I think some of the pros and cons of each scenario are and I welcome your contribution in the comments.  But first, a short anecdote on my personal experience so far.</p>
<h3>My own indecision</h3>
<p>When I first released my game Pixel Fighters last January I was very conflicted about how to represent myself and, as a result, I did a little bit of all of them. In retrospect, I wish I&#8217;d been a bit more organized and consistent in my communications. Let&#8217;s take a look at what I did:</p>
<ul>
<li>App Store Display Name : Pixel Fighters</li>
<li>App Store Display Company : BitWit Games</li>
<li>App Store Details Company Name : Kyle Newsome</li>
<li>Game email : pixelfightersgame@bitwit.ca</li>
<li>Website : www.pixelfightersgame.com</li>
<li>Facebook Page : www.facebook.com/pixelfighters</li>
<li>Twitter : @pixelfighersgm</li>
<li>Touch Arcade: pixelfightersgame</li>
<li>Personal Twitter: @bitwitdotca</li>
<li>Cocos2d Forums Acct Name : spadict</li>
</ul>
<p>All in all, I think I could have benefitted from a better consistency and it is something I will be improving upon in the future. Notice also, I mentioned a couple of development related usernames &ndash; It&#8217;s relevant how you represent yourself between customer and fellow developers alike.</p>
<h3>Pros and Cons</h3>
<p>With that said, let&#8217;s take a look at what I believe to be some of the pros and cons of each approach.</p>
<h4>Represent yourself as a game</h4>
<p><strong>Pro</strong>: It is to the point and there is no confusion for people about what they are interacting with. There&#8217;s no navigation necessary on websites from the homepage, or issue of multiple topics on various types of threads e.g. Twitter, Facebook, Support Email&#8230;</p>
<p><strong>Pro</strong>: Popular apps can benefit from single focus if their threads are very active</p>
<p><strong>Con</strong>: Smaller scale apps will probably have pretty stale and low activity</p>
<p><strong>Con</strong>: Communicating to your entire fan base across all apps present and future is going to be more work if you&#8217;ve filtered them across different channels</p>
<h4>Represent yourself as you</h4>
<p><strong>Pro</strong>: It has the benefit of a personal touch that all other representation lacks</p>
<p><strong>Pro(/Con?)</strong>: It can make it clear that you are small/indie</p>
<p><strong>Con</strong>: Not all usernames can be your name (too long, taken already etc..), which may force you to be inconsistent for some accounts</p>
<p><strong>Con</strong>: Not all personal names are catchy or different enough to be iconic</p>
<h4>Represent yourself as a company</h4>
<p><strong>Pro</strong>: You get a unique name</p>
<p><strong>Pro</strong>: You can make an icon/logo for your company</p>
<p><strong>Pro</strong>: Filter all of your followers to one place across Facebook, Twitter, Website etc..</p>
<p><strong>Con</strong>: For those of us who like to blog and participate in the community, you are combining your developer communications with your fan base communications</p>
<h3>In summary</h3>
<p>In my opinion, it makes the most sense for an individual to medium size company to go with company representation and large companies might choose to start dividing communications by app. Representing yourself as an individual isn&#8217;t wrong, but I question its long-term benefits if you are growing.</p>
<p>I also think it is a mistake as an individual or small company to start by communicating as a game, which is admittedly a fault of my own. I think it is shortsighted and irrelevant in its benefits when you are small.</p>
<p>
I welcome you to share your thoughts on advantages/disadvantages of different types of representation.</p>
]]></content:encoded>
			<wfw:commentRss>http://idevblogaday.com/archives/1163/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
