<?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/"
	
	xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Ziray Studio Labs &#187; iphone</title>
	<atom:link href="http://www.mikeziray.com/category/iphone/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.mikeziray.com</link>
	<description>Life, Logged Through Light</description>
	<lastBuildDate>Sun, 18 Dec 2011 21:49:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>NetRef &#8211; New iPhone App</title>
		<link>http://www.mikeziray.com/2011/12/08/netref-new-iphone-app/?utm_campaign=feed&#038;utm_medium=feed&#038;utm_source=blog&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=rss</link>
		<comments>http://www.mikeziray.com/2011/12/08/netref-new-iphone-app/#comments</comments>
		<pubDate>Thu, 08 Dec 2011 18:15:20 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[projects]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://www.mikeziray.com/?p=1271</guid>
		<description><![CDATA[NetRef is our latest iPhone app, published through LTZ. With NetRef, you can look up all default passwords and IP addresses for those new or old routers. Once you set up your router, you can use the built-in Ping feature to ping and test the connectivity of the router. The Ping feature also includes DNS [...]<p><a href="http://www.mikeziray.com/2011/12/08/netref-new-iphone-app/">NetRef &#8211; New iPhone App</a> is a post from: <a href="http://www.mikeziray.com">Ziray Studio Labs</a></p>

Related posts:<ol>
<li><a href='http://www.mikeziray.com/2010/04/14/barninja-an-iphone-app-postmortem/' rel='bookmark' title='BarNinja &#8211; An iPhone App Postmortem'>BarNinja &#8211; An iPhone App Postmortem</a></li>
<li><a href='http://www.mikeziray.com/2008/06/29/home-improvement/' rel='bookmark' title='Home Improvement'>Home Improvement</a></li>
<li><a href='http://www.mikeziray.com/2010/10/20/photos-of-the-week-faces-in-places/' rel='bookmark' title='Photos of the Week: Faces in Places'>Photos of the Week: Faces in Places</a></li>
<li><a href='http://www.mikeziray.com/2010/04/10/iphone-pricing/' rel='bookmark' title='iPhone Pricing'>iPhone Pricing</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>NetRef is our latest iPhone app, published through <a title="LTZ Mobile and Web Apps" href="http://www.ltzllc.com" target="_blank">LTZ</a>. With NetRef, you can look up all default passwords and IP addresses for those new or old routers. Once you set up your router, you can use the built-in Ping feature to ping and test the connectivity of the router. The Ping feature also includes DNS resolution so you can ping a web address as well as a IP address.</p>
<p>We developed the app with the help of <a title="Think Mac" href="http://www.thinkmac.net" target="_blank">Jonathan Cost</a> who has a strong expertise in networks and network hardware. Check out <a title="NetRef Wi-Fi Router Reference" href="http://netrefapp.com/" target="_blank">http://netrefapp.com</a> to download the app. We&#8217;re always adding more routers and features, but if you have any feedback, we&#8217;d love to hear from you!</p>
<p>&nbsp;</p>
<div id="attachment_1278" class="wp-caption alignnone" style="width: 242px"><a href="http://www.mikeziray.com/blog/wp-content/uploads/2011/12/networkappdesign.png?utm_campaign=feed&utm_medium=feed&utm_source=blog"><img class="size-medium wp-image-1278 " title="Initial App Design" src="http://www.mikeziray.com/blog/wp-content/uploads/2011/12/networkappdesign-232x300.png" alt="" width="232" height="300" /></a><p class="wp-caption-text">Initial App Design</p></div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div id="attachment_1272" class="wp-caption alignnone" style="width: 210px"><a href="http://www.mikeziray.com/blog/wp-content/uploads/2011/12/NetRef-1.png?utm_campaign=feed&utm_medium=feed&utm_source=blog"><img class="size-medium wp-image-1272" title="Router Manufacturers" src="http://www.mikeziray.com/blog/wp-content/uploads/2011/12/NetRef-1-200x300.png" alt="Router Manufacturers" width="200" height="300" /></a><p class="wp-caption-text">Router Manufacturers</p></div>
<div id="attachment_1273" class="wp-caption alignnone" style="width: 210px"><a href="http://www.mikeziray.com/blog/wp-content/uploads/2011/12/NetRef-2.png?utm_campaign=feed&utm_medium=feed&utm_source=blog"><img class="size-medium wp-image-1273" title="Router Detail View" src="http://www.mikeziray.com/blog/wp-content/uploads/2011/12/NetRef-2-200x300.png" alt="Router Detail View" width="200" height="300" /></a><p class="wp-caption-text">Router Detail View</p></div>
<div id="attachment_1274" class="wp-caption alignnone" style="width: 210px"><a href="http://www.mikeziray.com/blog/wp-content/uploads/2011/12/NetRef-3.png?utm_campaign=feed&utm_medium=feed&utm_source=blog"><img class="size-medium wp-image-1274" title="Ping a Server" src="http://www.mikeziray.com/blog/wp-content/uploads/2011/12/NetRef-3-200x300.png" alt="Ping a Server" width="200" height="300" /></a><p class="wp-caption-text">Ping a Server</p></div>
<div id="attachment_1275" class="wp-caption alignnone" style="width: 210px"><a href="http://www.mikeziray.com/blog/wp-content/uploads/2011/12/NetRef-4.png?utm_campaign=feed&utm_medium=feed&utm_source=blog"><img class="size-medium wp-image-1275" title="Reference Material and Tips" src="http://www.mikeziray.com/blog/wp-content/uploads/2011/12/NetRef-4-200x300.png" alt="Reference Material and Tips" width="200" height="300" /></a><p class="wp-caption-text">Reference Material and Tips</p></div>
<div id="attachment_1276" class="wp-caption alignnone" style="width: 210px"><a href="http://www.mikeziray.com/blog/wp-content/uploads/2011/12/NetRef-5.png?utm_campaign=feed&utm_medium=feed&utm_source=blog"><img class="size-medium wp-image-1276" title="Router Manuals in PDF" src="http://www.mikeziray.com/blog/wp-content/uploads/2011/12/NetRef-5-200x300.png" alt="Router Manuals in PDF" width="200" height="300" /></a><p class="wp-caption-text">Router Manuals in PDF</p></div>
<div id="attachment_1277" class="wp-caption alignnone" style="width: 210px"><a href="http://www.mikeziray.com/blog/wp-content/uploads/2011/12/netref-6.png?utm_campaign=feed&utm_medium=feed&utm_source=blog"><img class="size-medium wp-image-1277" title="All models available" src="http://www.mikeziray.com/blog/wp-content/uploads/2011/12/netref-6-200x300.png" alt="All models available" width="200" height="300" /></a><p class="wp-caption-text">All models available</p></div>
<p>&nbsp;</p>
<p><a href="http://www.mikeziray.com/2011/12/08/netref-new-iphone-app/">NetRef &#8211; New iPhone App</a> is a post from: <a href="http://www.mikeziray.com">Ziray Studio Labs</a></p>
<p>Related posts:<ol>
<li><a href='http://www.mikeziray.com/2010/04/14/barninja-an-iphone-app-postmortem/' rel='bookmark' title='BarNinja &#8211; An iPhone App Postmortem'>BarNinja &#8211; An iPhone App Postmortem</a></li>
<li><a href='http://www.mikeziray.com/2008/06/29/home-improvement/' rel='bookmark' title='Home Improvement'>Home Improvement</a></li>
<li><a href='http://www.mikeziray.com/2010/10/20/photos-of-the-week-faces-in-places/' rel='bookmark' title='Photos of the Week: Faces in Places'>Photos of the Week: Faces in Places</a></li>
<li><a href='http://www.mikeziray.com/2010/04/10/iphone-pricing/' rel='bookmark' title='iPhone Pricing'>iPhone Pricing</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.mikeziray.com/2011/12/08/netref-new-iphone-app/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:thumbnail url="http://www.mikeziray.com/blog/wp-content/uploads/2011/12/networkappdesign-150x150.png" />
		<media:content url="http://www.mikeziray.com/blog/wp-content/uploads/2011/12/networkappdesign.png" medium="image">
			<media:title type="html">Initial App Design</media:title>
			<media:description type="html">Initial App Design</media:description>
			<media:thumbnail url="http://www.mikeziray.com/blog/wp-content/uploads/2011/12/networkappdesign-150x150.png" />
		</media:content>
		<media:content url="http://www.mikeziray.com/blog/wp-content/uploads/2011/12/NetRef-1.png" medium="image">
			<media:title type="html">Router Manufacturers</media:title>
			<media:description type="html">Router Manufacturers</media:description>
			<media:thumbnail url="http://www.mikeziray.com/blog/wp-content/uploads/2011/12/NetRef-1-150x150.png" />
		</media:content>
		<media:content url="http://www.mikeziray.com/blog/wp-content/uploads/2011/12/NetRef-2.png" medium="image">
			<media:title type="html">Router Detail View</media:title>
			<media:description type="html">Router Detail View</media:description>
			<media:thumbnail url="http://www.mikeziray.com/blog/wp-content/uploads/2011/12/NetRef-2-150x150.png" />
		</media:content>
		<media:content url="http://www.mikeziray.com/blog/wp-content/uploads/2011/12/NetRef-3.png" medium="image">
			<media:title type="html">Ping a Server</media:title>
			<media:description type="html">Ping a Server</media:description>
			<media:thumbnail url="http://www.mikeziray.com/blog/wp-content/uploads/2011/12/NetRef-3-150x150.png" />
		</media:content>
		<media:content url="http://www.mikeziray.com/blog/wp-content/uploads/2011/12/NetRef-4.png" medium="image">
			<media:title type="html">Reference Material and Tips</media:title>
			<media:description type="html">Reference Material and Tips</media:description>
			<media:thumbnail url="http://www.mikeziray.com/blog/wp-content/uploads/2011/12/NetRef-4-150x150.png" />
		</media:content>
		<media:content url="http://www.mikeziray.com/blog/wp-content/uploads/2011/12/NetRef-5.png" medium="image">
			<media:title type="html">Router Manuals in PDF</media:title>
			<media:description type="html">Router Manuals in PDF</media:description>
			<media:thumbnail url="http://www.mikeziray.com/blog/wp-content/uploads/2011/12/NetRef-5-150x150.png" />
		</media:content>
		<media:content url="http://www.mikeziray.com/blog/wp-content/uploads/2011/12/netref-6.png" medium="image">
			<media:title type="html">All models available</media:title>
			<media:description type="html">All models available</media:description>
			<media:thumbnail url="http://www.mikeziray.com/blog/wp-content/uploads/2011/12/netref-6-150x150.png" />
		</media:content>
	</item>
		<item>
		<title>Mobile Application Development</title>
		<link>http://www.mikeziray.com/2011/02/22/mobile-application-development/?utm_campaign=feed&#038;utm_medium=feed&#038;utm_source=blog&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=rss</link>
		<comments>http://www.mikeziray.com/2011/02/22/mobile-application-development/#comments</comments>
		<pubDate>Wed, 23 Feb 2011 03:06:19 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[iphone]]></category>
		<category><![CDATA[work]]></category>
		<category><![CDATA[blacksburg]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[iPhone development]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[mobile application development]]></category>
		<category><![CDATA[mobile development]]></category>
		<category><![CDATA[new river valley]]></category>
		<category><![CDATA[nrv]]></category>
		<category><![CDATA[virginia]]></category>

		<guid isPermaLink="false">http://www.mikeziray.com/?p=1239</guid>
		<description><![CDATA[I&#8217;ve been doing a ton of application development for LTZ lately. Not only have I been working hard at getting iPhone and Android apps finished, but I&#8217;ve also been updating the website and making sure our apps are properly represented. Take a look at the website to see the changes that have been made! Mobile [...]<p><a href="http://www.mikeziray.com/2011/02/22/mobile-application-development/">Mobile Application Development</a> is a post from: <a href="http://www.mikeziray.com">Ziray Studio Labs</a></p>

Related posts:<ol>
<li><a href='http://www.mikeziray.com/2010/12/06/ios-development-code-kitchen/' rel='bookmark' title='iOS Development Code Kitchen'>iOS Development Code Kitchen</a></li>
<li><a href='http://www.mikeziray.com/2011/04/17/dive-centers-iphone-apps-and-more/' rel='bookmark' title='Dive Centers, iPhone apps and More'>Dive Centers, iPhone apps and More</a></li>
<li><a href='http://www.mikeziray.com/2010/04/10/iphone-pricing/' rel='bookmark' title='iPhone Pricing'>iPhone Pricing</a></li>
<li><a href='http://www.mikeziray.com/2010/10/07/i-am-not-an-entrepreneur/' rel='bookmark' title='I Am Not an Entrepreneur'>I Am Not an Entrepreneur</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been doing a ton of application development for <a href="http://www.ltzllc.com" target="_blank">LTZ</a> lately. Not only have I been working hard at getting iPhone and Android apps finished, but I&#8217;ve also been updating the website and making sure our apps are properly represented. Take a look at the website to see the changes that have been made!</p>
<p><a href="http://www.mikeziray.com/2011/02/22/mobile-application-development/">Mobile Application Development</a> is a post from: <a href="http://www.mikeziray.com">Ziray Studio Labs</a></p>
<p>Related posts:<ol>
<li><a href='http://www.mikeziray.com/2010/12/06/ios-development-code-kitchen/' rel='bookmark' title='iOS Development Code Kitchen'>iOS Development Code Kitchen</a></li>
<li><a href='http://www.mikeziray.com/2011/04/17/dive-centers-iphone-apps-and-more/' rel='bookmark' title='Dive Centers, iPhone apps and More'>Dive Centers, iPhone apps and More</a></li>
<li><a href='http://www.mikeziray.com/2010/04/10/iphone-pricing/' rel='bookmark' title='iPhone Pricing'>iPhone Pricing</a></li>
<li><a href='http://www.mikeziray.com/2010/10/07/i-am-not-an-entrepreneur/' rel='bookmark' title='I Am Not an Entrepreneur'>I Am Not an Entrepreneur</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.mikeziray.com/2011/02/22/mobile-application-development/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
	</item>
		<item>
		<title>iOS Development Code Kitchen</title>
		<link>http://www.mikeziray.com/2010/12/06/ios-development-code-kitchen/?utm_campaign=feed&#038;utm_medium=feed&#038;utm_source=blog&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=rss</link>
		<comments>http://www.mikeziray.com/2010/12/06/ios-development-code-kitchen/#comments</comments>
		<pubDate>Mon, 06 Dec 2010 18:53:34 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[advice]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[projects]]></category>
		<category><![CDATA[work]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[blacksburg]]></category>
		<category><![CDATA[code kitchen]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[ios]]></category>
		<category><![CDATA[ltz]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[mobile development]]></category>
		<category><![CDATA[nrv]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[virginia]]></category>
		<category><![CDATA[virginia tech]]></category>

		<guid isPermaLink="false">http://www.mikeziray.com/?p=1214</guid>
		<description><![CDATA[I&#8217;ll be putting on a workshop on iOS and iPhone development this Saturday from 9AM to 5PM on the Virginia Tech campus. The event is free so if you&#8217;re in the area feel free to sign up: http://www.ltzllc.com/2010/11/ios-development-code-kitchen/ The event will run all day and will be hands-on programming, but all levels of experience are [...]<p><a href="http://www.mikeziray.com/2010/12/06/ios-development-code-kitchen/">iOS Development Code Kitchen</a> is a post from: <a href="http://www.mikeziray.com">Ziray Studio Labs</a></p>

Related posts:<ol>
<li><a href='http://www.mikeziray.com/2010/07/01/why-your-code-sucks-naming-conventions/' rel='bookmark' title='Naming Conventions &#8211; Why Your Code Sucks'>Naming Conventions &#8211; Why Your Code Sucks</a></li>
<li><a href='http://www.mikeziray.com/2011/02/22/mobile-application-development/' rel='bookmark' title='Mobile Application Development'>Mobile Application Development</a></li>
<li><a href='http://www.mikeziray.com/2010/01/27/handling-your-initial-view-controllers-for-iphone/' rel='bookmark' title='Handling Your Initial View Controllers for iPhone'>Handling Your Initial View Controllers for iPhone</a></li>
<li><a href='http://www.mikeziray.com/2007/06/23/temporary-apartment/' rel='bookmark' title='Temporary Apartment'>Temporary Apartment</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ll be putting on a workshop on iOS and iPhone development this Saturday from 9AM to 5PM on the Virginia Tech campus. The event is free so if you&#8217;re in the area feel free to sign up:</p>
<p><a href="http://www.ltzllc.com/2010/11/ios-development-code-kitchen/" target="_blank">http://www.ltzllc.com/2010/11/ios-development-code-kitchen/</a></p>
<p>The event will run all day and will be hands-on programming, but all levels of experience are welcome and encouraged to come.</p>
<p><a href="http://www.mikeziray.com/2010/12/06/ios-development-code-kitchen/">iOS Development Code Kitchen</a> is a post from: <a href="http://www.mikeziray.com">Ziray Studio Labs</a></p>
<p>Related posts:<ol>
<li><a href='http://www.mikeziray.com/2010/07/01/why-your-code-sucks-naming-conventions/' rel='bookmark' title='Naming Conventions &#8211; Why Your Code Sucks'>Naming Conventions &#8211; Why Your Code Sucks</a></li>
<li><a href='http://www.mikeziray.com/2011/02/22/mobile-application-development/' rel='bookmark' title='Mobile Application Development'>Mobile Application Development</a></li>
<li><a href='http://www.mikeziray.com/2010/01/27/handling-your-initial-view-controllers-for-iphone/' rel='bookmark' title='Handling Your Initial View Controllers for iPhone'>Handling Your Initial View Controllers for iPhone</a></li>
<li><a href='http://www.mikeziray.com/2007/06/23/temporary-apartment/' rel='bookmark' title='Temporary Apartment'>Temporary Apartment</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.mikeziray.com/2010/12/06/ios-development-code-kitchen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
	</item>
		<item>
		<title>I Am Not an Entrepreneur</title>
		<link>http://www.mikeziray.com/2010/10/07/i-am-not-an-entrepreneur/?utm_campaign=feed&#038;utm_medium=feed&#038;utm_source=blog&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=rss</link>
		<comments>http://www.mikeziray.com/2010/10/07/i-am-not-an-entrepreneur/#comments</comments>
		<pubDate>Thu, 07 Oct 2010 14:13:34 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[iphone]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[personal]]></category>
		<category><![CDATA[projects]]></category>
		<category><![CDATA[app]]></category>
		<category><![CDATA[app store]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[blacksburg]]></category>
		<category><![CDATA[college of engineering]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[entrepreneur]]></category>
		<category><![CDATA[ios]]></category>
		<category><![CDATA[ipad]]></category>
		<category><![CDATA[ltz]]></category>
		<category><![CDATA[virginia tech]]></category>

		<guid isPermaLink="false">http://www.mikeziray.com/?p=1188</guid>
		<description><![CDATA[Many people throw around the term entrepreneur. It seems most people put that in their bios. Don&#8217;t tell me you&#8217;re an entrepreneur, show me. What have you done? When we started LTZ, our mobile and web app development company, we didn&#8217;t need any venture capital funding. We didn&#8217;t need a fancy office to rent. We [...]<p><a href="http://www.mikeziray.com/2010/10/07/i-am-not-an-entrepreneur/">I Am Not an Entrepreneur</a> is a post from: <a href="http://www.mikeziray.com">Ziray Studio Labs</a></p>

Related posts:<ol>
<li><a href='http://www.mikeziray.com/2010/04/10/iphone-pricing/' rel='bookmark' title='iPhone Pricing'>iPhone Pricing</a></li>
<li><a href='http://www.mikeziray.com/2011/02/22/mobile-application-development/' rel='bookmark' title='Mobile Application Development'>Mobile Application Development</a></li>
<li><a href='http://www.mikeziray.com/2010/04/11/what-ive-been-up-to/' rel='bookmark' title='What I&#8217;ve Been Up To'>What I&#8217;ve Been Up To</a></li>
<li><a href='http://www.mikeziray.com/2011/04/17/dive-centers-iphone-apps-and-more/' rel='bookmark' title='Dive Centers, iPhone apps and More'>Dive Centers, iPhone apps and More</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Many people throw around the term entrepreneur. It seems most people put that in their bios. Don&#8217;t tell me you&#8217;re an entrepreneur, show me. What have you done?</p>
<p>When we started <a href="http://www.ltzllc.com" target="_blank">LTZ, our mobile and web app development company,</a> we didn&#8217;t need any venture capital funding. We didn&#8217;t need a fancy office to rent. We didn&#8217;t need to do the whole fancy company launch. We just sat down at our computers and started coding. And when we finally had a product to ship, we did all the legal paper work and got ourselves a little LLC.</p>
<p>Sure there were risks. The risk of becoming single again was always there. Sure there were long days. 16 hours seemed to be the norm. And sure there were a few new technologies that we created. But when it came down to it, we just had a simple plan: work really hard and make some great products.</p>
<p>The business model we had, seemed like a great idea: become an authority and gateway for indie developers to develop their apps with. Sort of like a record label for mobile app developers, but without the whole ripping them off bit. We&#8217;d mentor and direct them to a finished product and take a minimal cut from the net profits. Any programmer can attest to the numerous projects that never make it to a finished, polished, tested app. But that&#8217;s exactly what separates the professionals from the amateurs: finished products.</p>
<p>Now, we&#8217;re looking at things differently and adjusting our model. We&#8217;ve found out a little more about what works and what doesn&#8217;t in this new space. When you&#8217;re such a small company, the saying, &#8220;If you want things done right, you gotta do it yourself,&#8221; turns into, &#8220;If you want something done, you gotta do it yourself.&#8221; It&#8217;s really hard to concentrate on writing good code when you&#8217;re the tester, the project manager and the client manager all in one.</p>
<p>I&#8217;ll talk more about the new direction we&#8217;re heading soon. In the meantime, we&#8217;re still working on the details and we&#8217;ll update everyone as soon as we finalize everything.</p>
<p>I am not an entrepreneur. I just create stuff.</p>
<p><a href="http://www.mikeziray.com/2010/10/07/i-am-not-an-entrepreneur/">I Am Not an Entrepreneur</a> is a post from: <a href="http://www.mikeziray.com">Ziray Studio Labs</a></p>
<p>Related posts:<ol>
<li><a href='http://www.mikeziray.com/2010/04/10/iphone-pricing/' rel='bookmark' title='iPhone Pricing'>iPhone Pricing</a></li>
<li><a href='http://www.mikeziray.com/2011/02/22/mobile-application-development/' rel='bookmark' title='Mobile Application Development'>Mobile Application Development</a></li>
<li><a href='http://www.mikeziray.com/2010/04/11/what-ive-been-up-to/' rel='bookmark' title='What I&#8217;ve Been Up To'>What I&#8217;ve Been Up To</a></li>
<li><a href='http://www.mikeziray.com/2011/04/17/dive-centers-iphone-apps-and-more/' rel='bookmark' title='Dive Centers, iPhone apps and More'>Dive Centers, iPhone apps and More</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.mikeziray.com/2010/10/07/i-am-not-an-entrepreneur/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
	</item>
		<item>
		<title>Building a Game</title>
		<link>http://www.mikeziray.com/2010/07/09/building-a-game/?utm_campaign=feed&#038;utm_medium=feed&#038;utm_source=blog&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=rss</link>
		<comments>http://www.mikeziray.com/2010/07/09/building-a-game/#comments</comments>
		<pubDate>Fri, 09 Jul 2010 14:29:48 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[projects]]></category>
		<category><![CDATA[ansca]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[corona]]></category>
		<category><![CDATA[game design]]></category>
		<category><![CDATA[game development]]></category>
		<category><![CDATA[lua]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[sdk]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.mikeziray.com/?p=1047</guid>
		<description><![CDATA[A lot of my peers went to school to become game developers. Instead, most went on to work for big software companies in northern Virginia. I studied human-computer interaction and wanted to fix everything from poorly designed user interfaces to frustratingly complex household items. Instead, I became a Mac, iPhone, Flash and game developer. In [...]<p><a href="http://www.mikeziray.com/2010/07/09/building-a-game/">Building a Game</a> is a post from: <a href="http://www.mikeziray.com">Ziray Studio Labs</a></p>

Related posts:<ol>
<li><a href='http://www.mikeziray.com/2010/06/27/corona-game-template-in-lua/' rel='bookmark' title='Corona Game Template in Lua'>Corona Game Template in Lua</a></li>
<li><a href='http://www.mikeziray.com/2010/04/10/iphone-pricing/' rel='bookmark' title='iPhone Pricing'>iPhone Pricing</a></li>
<li><a href='http://www.mikeziray.com/2008/06/12/some-of-my-old-music-part-3-of-4/' rel='bookmark' title='Some of My Old Music &#8211; Part 3 of 4'>Some of My Old Music &#8211; Part 3 of 4</a></li>
<li><a href='http://www.mikeziray.com/2008/12/26/a-very-european-christmas/' rel='bookmark' title='A Very European Christmas'>A Very European Christmas</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>A lot of my peers went to school to become game developers. Instead, most went on to work for big software companies in northern Virginia. I studied human-computer interaction and wanted to fix everything from poorly designed user interfaces to frustratingly complex household items. Instead, I became a Mac, iPhone, Flash and game developer. In a way, we both went where the money was.</p>
<h2>How to start your game</h2>
<p>I&#8217;ll assume you already have a game idea. No matter how ambitious you want to be though, think in milestones</p>
<ol>
<li>Display some graphics.</li>
<li>Animate your graphics, either manually, or with basic input controls</li>
<li>Get hit detection working.</li>
<li>Everything else! (level loading, artificial intelligence, etc.)</li>
</ol>
<p>If you can even make it to the fourth milestone, you&#8217;re farther than 90% of most game developers. If you make it past milestone four, you&#8217;re farther than 99% of game developers. Only the passionate, motivated and able ship. This is how I&#8217;ve started all of my games and it&#8217;s important to achieve tangible results to keep yourself motivated. In fact, this same step-by-step process can be used in regular application development as well.</p>
<h2>Design</h2>
<p>Start your development with a skeleton application. This does one of two things: first, it forces you to plan the architecture of your application by creating the objects (in files) that you&#8217;ll need in your development and second, it provides an outline for you to work from. So first, think about what display controllers and object controllers you&#8217;ll need, what model objects you&#8217;ll need and then go ahead and create the files for those. Also go ahead and fill in some functions too for the basic functionality. The point is, make sure you break up the functionality into bite size chunks. It&#8217;ll make your life easier, trust me.</p>
<p>Put in the functions you think you&#8217;ll want and then just put in print or trace statements to make sure they&#8217;re being called correctly. Then, just build it piece by piece, usually starting with getting something like a player character on the screen (DisplayController, PlayerController, GameController), then getting him to move, moving him via inputs (InputController), then applying constraints like hit detection or getting him to jump (implementing basic gravity), etc, etc. Just keep introducing and implementing new features, one at a time, playing the game, realizing you want to tweak something and playing it some more. This is called <a href="http://en.wikipedia.org/wiki/Iterative_design" target="_blank">iterative design</a>.</p>
<p>Get those milestones done as quickly as possible, keeping your code organized in your skeleton application. Don&#8217;t worry about graphics at first. Personally, I stick in multi-colored boxes instead spending a lot of time on graphics I may not use in the end. Objects will be added as you realize you need them, but the idea is to keep it organized, simple and cohesive.</p>
<p>When designing your class structures and diagrams, keep the low level functionality, like file access and keyboard inputs, abstracted and hidden in wrapper classes. The reason you abstract objects is for a couple of reasons: One is to be able to add in hooks before and after a part of code. For example, instead of calling the system clock directly, you want to calculate the elapsed time if your game was paused or suspended on the computer. If you abstracted this in the beginning with a GameClock object, you&#8217;d only have to change it once, in a single place. If you called it directly, you&#8217;d have to go back to every place in your code and calculate that value. Keep object responsibilities where they belong!</p>
<h2>Start Programming!</h2>
<p>To start you off, check out <a href="http://www.mikeziray.com/2010/06/27/corona-game-template-in-lua/?utm_campaign=feed&utm_medium=feed&utm_source=blog" target="_blank">a game template </a>designed for the <a href="http://anscamobile.com/corona/" target="_blank">Corona SDK</a> (free 30 day trial), written in Lua. I recommend you create a template of all your project tyes as it&#8217;ll help jump start your next big idea and also keep you organized from the start.</p>
<p><a href="http://www.mikeziray.com/2010/07/09/building-a-game/">Building a Game</a> is a post from: <a href="http://www.mikeziray.com">Ziray Studio Labs</a></p>
<p>Related posts:<ol>
<li><a href='http://www.mikeziray.com/2010/06/27/corona-game-template-in-lua/' rel='bookmark' title='Corona Game Template in Lua'>Corona Game Template in Lua</a></li>
<li><a href='http://www.mikeziray.com/2010/04/10/iphone-pricing/' rel='bookmark' title='iPhone Pricing'>iPhone Pricing</a></li>
<li><a href='http://www.mikeziray.com/2008/06/12/some-of-my-old-music-part-3-of-4/' rel='bookmark' title='Some of My Old Music &#8211; Part 3 of 4'>Some of My Old Music &#8211; Part 3 of 4</a></li>
<li><a href='http://www.mikeziray.com/2008/12/26/a-very-european-christmas/' rel='bookmark' title='A Very European Christmas'>A Very European Christmas</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.mikeziray.com/2010/07/09/building-a-game/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
	</item>
		<item>
		<title>Corona Game Template in Lua</title>
		<link>http://www.mikeziray.com/2010/06/27/corona-game-template-in-lua/?utm_campaign=feed&#038;utm_medium=feed&#038;utm_source=blog&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=rss</link>
		<comments>http://www.mikeziray.com/2010/06/27/corona-game-template-in-lua/#comments</comments>
		<pubDate>Mon, 28 Jun 2010 00:18:29 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[projects]]></category>
		<category><![CDATA[ansca]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[corona]]></category>
		<category><![CDATA[game edition]]></category>
		<category><![CDATA[game template]]></category>
		<category><![CDATA[ipad]]></category>
		<category><![CDATA[ipod touch]]></category>
		<category><![CDATA[lua]]></category>
		<category><![CDATA[sdk]]></category>

		<guid isPermaLink="false">http://www.mikeziray.com/?p=1048</guid>
		<description><![CDATA[This is a template I threw together for the Corona SDK from Ansca Mobile. Since Lua is not a language most people are familiar with, I figured I&#8217;d throw together some sample code for Corona and share what I learned so far with the rest of the Corona SDK community by including the template here. [...]<p><a href="http://www.mikeziray.com/2010/06/27/corona-game-template-in-lua/">Corona Game Template in Lua</a> is a post from: <a href="http://www.mikeziray.com">Ziray Studio Labs</a></p>

Related posts:<ol>
<li><a href='http://www.mikeziray.com/2010/07/09/building-a-game/' rel='bookmark' title='Building a Game'>Building a Game</a></li>
<li><a href='http://www.mikeziray.com/2010/04/10/iphone-pricing/' rel='bookmark' title='iPhone Pricing'>iPhone Pricing</a></li>
<li><a href='http://www.mikeziray.com/2008/12/26/a-very-european-christmas/' rel='bookmark' title='A Very European Christmas'>A Very European Christmas</a></li>
<li><a href='http://www.mikeziray.com/2010/10/07/i-am-not-an-entrepreneur/' rel='bookmark' title='I Am Not an Entrepreneur'>I Am Not an Entrepreneur</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>This is a template I threw together for <a href="http://anscamobile.com/corona/" target="_blank">the Corona SDK from Ansca Mobile</a>. Since Lua is not a language most people are familiar with, I figured I&#8217;d throw together some sample code for Corona and share what I learned so far with the rest of the Corona SDK community by including the template here.</p>
<p>The template includes example code for:</p>
<ul>
<li>Display groups</li>
<li>Orientation and accelerometer</li>
<li>Touch with buttons</li>
<li>File reading</li>
<li>Example level file for scripting game play</li>
</ul>
<p>The template separates functionality into modules for an object oriented approach. I&#8217;m still learning the techniques for Lua, so if you notice a better way to do it, please don&#8217;t hesitate to let me know in the comments below. Some things in the template are not the best way to accomplish some things, but should give people a good idea on best practices of software design. This will also with work Corona&#8217;s Game Edition.</p>
<p>If you find the template useful, take a look at some of <a href="http://www.ltzllc.com/products" target="_blank">our current applications</a> to support us. It&#8217;d mean a lot.</p>
<p><a href="http://www.mikeziray.com/dev/corona/CoronaGameTemplate.zip?utm_campaign=feed&utm_medium=feed&utm_source=blog" target="_blank">Download the Template Code</a></p>
<p>Also, check out the links on the side. Thanks!</p>
<p><a href="http://www.mikeziray.com/2010/06/27/corona-game-template-in-lua/">Corona Game Template in Lua</a> is a post from: <a href="http://www.mikeziray.com">Ziray Studio Labs</a></p>
<p>Related posts:<ol>
<li><a href='http://www.mikeziray.com/2010/07/09/building-a-game/' rel='bookmark' title='Building a Game'>Building a Game</a></li>
<li><a href='http://www.mikeziray.com/2010/04/10/iphone-pricing/' rel='bookmark' title='iPhone Pricing'>iPhone Pricing</a></li>
<li><a href='http://www.mikeziray.com/2008/12/26/a-very-european-christmas/' rel='bookmark' title='A Very European Christmas'>A Very European Christmas</a></li>
<li><a href='http://www.mikeziray.com/2010/10/07/i-am-not-an-entrepreneur/' rel='bookmark' title='I Am Not an Entrepreneur'>I Am Not an Entrepreneur</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.mikeziray.com/2010/06/27/corona-game-template-in-lua/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
	
	</item>
		<item>
		<title>BarNinja &#8211; An iPhone App Postmortem</title>
		<link>http://www.mikeziray.com/2010/04/14/barninja-an-iphone-app-postmortem/?utm_campaign=feed&#038;utm_medium=feed&#038;utm_source=blog&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=rss</link>
		<comments>http://www.mikeziray.com/2010/04/14/barninja-an-iphone-app-postmortem/#comments</comments>
		<pubDate>Wed, 14 Apr 2010 18:42:49 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[personal]]></category>
		<category><![CDATA[projects]]></category>
		<category><![CDATA[algorithm]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[BarNinja]]></category>
		<category><![CDATA[hci]]></category>
		<category><![CDATA[mixed drink]]></category>
		<category><![CDATA[usability]]></category>
		<category><![CDATA[ux]]></category>
		<category><![CDATA[WWDC]]></category>

		<guid isPermaLink="false">http://www.mikeziray.com/?p=986</guid>
		<description><![CDATA[The BarNinja iPhone app is a mixed drink application with over 730 drink recipes with additional features including a random drink selector, bartending tips, powerful search, and a shots per bottle calculator for party planning. The Beginning As far as we could tell when we started the BarNinja iPhone app, there weren&#8217;t any other apps [...]<p><a href="http://www.mikeziray.com/2010/04/14/barninja-an-iphone-app-postmortem/">BarNinja &#8211; An iPhone App Postmortem</a> is a post from: <a href="http://www.mikeziray.com">Ziray Studio Labs</a></p>

Related posts:<ol>
<li><a href='http://www.mikeziray.com/2011/12/08/netref-new-iphone-app/' rel='bookmark' title='NetRef &#8211; New iPhone App'>NetRef &#8211; New iPhone App</a></li>
<li><a href='http://www.mikeziray.com/2010/04/10/iphone-pricing/' rel='bookmark' title='iPhone Pricing'>iPhone Pricing</a></li>
<li><a href='http://www.mikeziray.com/2010/10/07/i-am-not-an-entrepreneur/' rel='bookmark' title='I Am Not an Entrepreneur'>I Am Not an Entrepreneur</a></li>
<li><a href='http://www.mikeziray.com/2010/01/27/handling-your-initial-view-controllers-for-iphone/' rel='bookmark' title='Handling Your Initial View Controllers for iPhone'>Handling Your Initial View Controllers for iPhone</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>The BarNinja iPhone app is a mixed drink application with over 730 drink recipes with additional features including a random drink selector, bartending tips, powerful search, and a shots per bottle calculator for party planning.</p>
<h2>The Beginning</h2>
<p>As far as we could tell when we started <a href="http://itunes.apple.com/us/app/barninja/id366557970?mt=8" target="_blank">the BarNinja iPhone app</a>, there weren&#8217;t any other apps like it on the Apple App Store. That was back in April of 2009. While I was in San Francisco back in March, I got a Facebook message from Jason asking if I was interested in doing an iPhone app. I had done a bunch of Mac development and even independently sold a previous application. I had also attended Apple&#8217;s developer conference (WWDC) on two separate occasions so I was quite comfortable with developing for Apple products. When I got back from California, we sat down at a local bar in Blacksburg and wrote down our ideas for the app he wanted to make. That was prior to iPhone OS 3.0 being released and we were counting on some key features in that release for our app. In the end, we ultimately failed when the features didn&#8217;t work out exactly as we expected. Luckily, only a little code had been written and that was enough to get me up to speed with the current iPhone development platform.</p>
<p>Instead of quitting, we got <a href="http://www.barninja.com" target="_blank">BarNinja</a>, another local Blacksburg startup involved in another app idea. We wanted to leverage the shake feature (iPhones can detect when you shake them) that was relatively new and make a mixed drink app based around that.</p>
<p>Soon after we started, a few other apps starting hitting the app store with exactly those features. But the competition didn&#8217;t deter us, but instead pushed the bar higher for us. We now knew we couldn&#8217;t just make another mixed drink app with a shaker feature, we had to make <em>the best</em> mixed drink app with a shaker feature. We were also creating a 730+ recipe database (including ingredients and other drink information) that would hopefully give us an added advantage. Luckily, at the last WWDC (2005) that I attended, they announced a technology called CoreData which allows developers to place small databases easily within their applications. They also included it in the iPhone OS and I ran with it.</p>
<h2>Problems and Solutions</h2>
<p>The problem with having 730+ recipes is that it becomes nearly impossible to find a drink in a list. The list view we had, took minutes to scroll through and even tired out your finger having to swipe so much! We added an index on the side to quickly scroll through the list alphabetically. We also added a search to find a drink by name and even added a filter to sort out if the drink was a &#8220;mixed drink&#8221; or a &#8220;shooter.&#8221; But that still wasn&#8217;t good enough.</p>
<p>I could find drinks like &#8220;Vodka Martini,&#8221; but what if I wanted a drink with vodka as an ingredient? So we added in a search that would find ingredients too. That worked out well, but often times vodka isn&#8217;t named vodka, it&#8217;s also names just &#8220;Absolut,&#8221; which everyone knows is vodka, but the iPhone doesn&#8217;t, so we had to teach it what kind of alcohol those products were.</p>
<p>More progress, and we were rolling right along until we tested it out on the actual device; it was painfully slow. The user would hit a key on the virtual iPhone keyboard and the key would get stuck in the &#8220;up&#8221; position until the search was done and only then could you hit the next key. Searching 730+ recipes is easy, but searching on average 6 ingredients for 730+ (~730 x 6 = a lot) takes 4 or 5 seconds on an iPod Touch 2nd generation. So we had to get a little creative.</p>
<p>My solution was to split off the search into a separate thread (a simultaneous process within the application) and perform the search in the background. This introduced a few other problems that I had to fix but the responsiveness improved dramatically. Then, using Apple&#8217;s performance tools, increased the search algorithm by about seven times. Thanks to all those boring Computer Science classes I took at <a href="http://www.vt.edu" target="_blank">Virginia Tech</a> I was able to speed it up and also make it appear to speed up.</p>
<p>Updating the table view, after finding each recipe that matches the criteria, is slow (thanks to the performance tools for reminding me of this). So I returned the first 5 results instantly because those are the only ones you can see initially on the screen and then the rest were updated in a decaying frequency as they were found until the search was done.</p>
<h2>Iteration</h2>
<div id="attachment_988" class="wp-caption aligncenter" style="width: 266px"><a href="http://www.mikeziray.com/blog/wp-content/uploads/2010/04/2009-09-23_Shaker-03.jpg?utm_campaign=feed&utm_medium=feed&utm_source=blog"><img class="size-full wp-image-988" title="Early Search" src="http://www.mikeziray.com/blog/wp-content/uploads/2010/04/2009-09-23_Shaker-03.jpg" alt="Early Search" width="256" height="488" /></a><p class="wp-caption-text">Early Search</p></div>
<div id="attachment_989" class="wp-caption aligncenter" style="width: 330px"><a href="http://www.mikeziray.com/blog/wp-content/uploads/2010/04/Screenshot-2009.12.08-21.15.21.png?utm_campaign=feed&utm_medium=feed&utm_source=blog"><img class="size-full wp-image-989" title="Icons, glass name and index" src="http://www.mikeziray.com/blog/wp-content/uploads/2010/04/Screenshot-2009.12.08-21.15.21.png" alt="Icons, glass name and index" width="320" height="480" /></a><p class="wp-caption-text">Icons, glass name and index</p></div>
<div id="attachment_990" class="wp-caption aligncenter" style="width: 330px"><a href="http://www.mikeziray.com/blog/wp-content/uploads/2010/04/Screenshot-2009.12.08-21.26.07.png?utm_campaign=feed&utm_medium=feed&utm_source=blog"><img class="size-full wp-image-990" title="Early drink details view" src="http://www.mikeziray.com/blog/wp-content/uploads/2010/04/Screenshot-2009.12.08-21.26.07.png" alt="Early drink details view" width="320" height="480" /></a><p class="wp-caption-text">Early drink details view</p></div>
<h2>The Final Product</h2>
<div id="attachment_991" class="wp-caption aligncenter" style="width: 330px"><a href="http://www.mikeziray.com/blog/wp-content/uploads/2010/04/Screenshot1.jpg?utm_campaign=feed&utm_medium=feed&utm_source=blog"><img class="size-full wp-image-991" title="Initial Screen" src="http://www.mikeziray.com/blog/wp-content/uploads/2010/04/Screenshot1.jpg" alt="Initial Screen" width="320" height="460" /></a><p class="wp-caption-text">Initial Screen</p></div>
<div id="attachment_992" class="wp-caption aligncenter" style="width: 330px"><a href="http://www.mikeziray.com/blog/wp-content/uploads/2010/04/Screenshot3.jpg?utm_campaign=feed&utm_medium=feed&utm_source=blog"><img class="size-full wp-image-992" title="New search screen" src="http://www.mikeziray.com/blog/wp-content/uploads/2010/04/Screenshot3.jpg" alt="New search screen" width="320" height="460" /></a><p class="wp-caption-text">New search screen</p></div>
<div id="attachment_993" class="wp-caption aligncenter" style="width: 330px"><a href="http://www.mikeziray.com/blog/wp-content/uploads/2010/04/Screenshot4.jpg?utm_campaign=feed&utm_medium=feed&utm_source=blog"><img class="size-full wp-image-993" title="New drink details view" src="http://www.mikeziray.com/blog/wp-content/uploads/2010/04/Screenshot4.jpg" alt="New drink details view" width="320" height="460" /></a><p class="wp-caption-text">New drink details view</p></div>
<h2>Results</h2>
<p>They say if you&#8217;re happy with your 1.0 version of your application, you didn&#8217;t release it early enough. While we definitely have plenty of work yet to do on this application, we didn&#8217;t release it soon enough. It did not take a year of programming to get this done. The programming was the easy part, it was all the other stuff that got in the way, distracted me and things I had to wait on that took the longest. Back in the day, when doing my Computer Science homework, the motto was &#8220;Start early, and start often.&#8221; That rings true for every long term task.</p>
<p>We didn&#8217;t run any real usability tests. This upsets me a bit, but we never really got to show it to too many people. Now LTZ has a few more developers working on more apps, so we have a larger pool of testers, but in the end, we still need to test it out on real human beings and put all those Human Computer Interaction (HCI) skills I spent a lot of time learning, to use.</p>
<p>I did try to apply those skills with the layout of the app. When the app launches, the first screen is the random drink screen, which you can tailor to your tastes in the options. We wanted to give the person using our app something to do right away. We didn&#8217;t want to over whelm them with a list of 730+ ingredients; it doesn&#8217;t impress anyone. In our limited testing everyone figured it out and got a kick out of the shake feature. With other apps, we noticed, they presented a huge list of options that just left you wondering what you should do next. It&#8217;s that classic &#8220;uuuuh&#8221; moment. With ours, right after the launch of the app you can start enjoying the functionality.</p>
<p>The next screen is the raw list of drinks, plain and simple. Our search is straight forward and easy to figure out and the index on the right helps users navigate down the list quickly. We also stuck to using as many user interface elements from the standard set of Apple iPhone as possible. Many other apps try to be creative and diverge from the standard set of UI elements and consequently from the Human Interface Guidelines that Apple has set forth. The result is a poorly designed, clunky looking application that takes time to figure out how to use. Since we&#8217;re using a standard search bar, people using our app know right away what that means and can start right away in using the search feature.</p>
<p>We also chose a dark theme for our colors, not because it looks cool, but because most of our users, we assume, will be using it in a bar, or bar like conditions such as a party, etc. But we also didn&#8217;t want to give it a depressing theme since it was suppose to be fun and helpful, so there are a few bright colors in there. The design will most likely change and be updated, but that&#8217;s the rationale for the initial release. We&#8217;ll see what our users think and how they use the app.</p>
<p>We know our app isn&#8217;t perfect, but we&#8217;re confident we know where to go from here to improve it and fix some of the problems we know exist in it. Through additional usability testing, we&#8217;ll slowly improve upon BarNinja to make it the best drink application on the app store. We know we&#8217;re not there yet with the initial release, but we look forward to adding great functionality that people will love.</p>
<p><a href="http://itunes.apple.com/us/app/barninja/id366557970?mt=8&utm_campaign=feed&utm_medium=feed&utm_source=blog" target="_blank"><img class="aligncenter size-full wp-image-1017" title="Available on App Store" src="http://www.mikeziray.com/blog/wp-content/uploads/2010/05/Available-on-App-Store.png" alt="" width="160" height="61" /></a></p>
<p><a href="http://www.mikeziray.com/2010/04/14/barninja-an-iphone-app-postmortem/">BarNinja &#8211; An iPhone App Postmortem</a> is a post from: <a href="http://www.mikeziray.com">Ziray Studio Labs</a></p>
<p>Related posts:<ol>
<li><a href='http://www.mikeziray.com/2011/12/08/netref-new-iphone-app/' rel='bookmark' title='NetRef &#8211; New iPhone App'>NetRef &#8211; New iPhone App</a></li>
<li><a href='http://www.mikeziray.com/2010/04/10/iphone-pricing/' rel='bookmark' title='iPhone Pricing'>iPhone Pricing</a></li>
<li><a href='http://www.mikeziray.com/2010/10/07/i-am-not-an-entrepreneur/' rel='bookmark' title='I Am Not an Entrepreneur'>I Am Not an Entrepreneur</a></li>
<li><a href='http://www.mikeziray.com/2010/01/27/handling-your-initial-view-controllers-for-iphone/' rel='bookmark' title='Handling Your Initial View Controllers for iPhone'>Handling Your Initial View Controllers for iPhone</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.mikeziray.com/2010/04/14/barninja-an-iphone-app-postmortem/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:thumbnail url="http://www.mikeziray.com/blog/wp-content/uploads/2010/04/2009-09-23_Shaker-03-150x150.jpg" />
		<media:content url="http://www.mikeziray.com/blog/wp-content/uploads/2010/04/2009-09-23_Shaker-03.jpg" medium="image">
			<media:title type="html">Early Search</media:title>
			<media:description type="html">Early Search</media:description>
			<media:thumbnail url="http://www.mikeziray.com/blog/wp-content/uploads/2010/04/2009-09-23_Shaker-03-150x150.jpg" />
		</media:content>
		<media:content url="http://www.mikeziray.com/blog/wp-content/uploads/2010/04/Screenshot-2009.12.08-21.15.21.png" medium="image">
			<media:title type="html">Icons, glass name and index</media:title>
			<media:description type="html">Icons, glass name and index</media:description>
			<media:thumbnail url="http://www.mikeziray.com/blog/wp-content/uploads/2010/04/Screenshot-2009.12.08-21.15.21-150x150.png" />
		</media:content>
		<media:content url="http://www.mikeziray.com/blog/wp-content/uploads/2010/04/Screenshot-2009.12.08-21.26.07.png" medium="image">
			<media:title type="html">Early drink details view</media:title>
			<media:description type="html">Early drink details view</media:description>
			<media:thumbnail url="http://www.mikeziray.com/blog/wp-content/uploads/2010/04/Screenshot-2009.12.08-21.26.07-150x150.png" />
		</media:content>
		<media:content url="http://www.mikeziray.com/blog/wp-content/uploads/2010/04/Screenshot1.jpg" medium="image">
			<media:title type="html">Initial Screen</media:title>
			<media:description type="html">Initial Screen</media:description>
			<media:thumbnail url="http://www.mikeziray.com/blog/wp-content/uploads/2010/04/Screenshot1-150x150.jpg" />
		</media:content>
		<media:content url="http://www.mikeziray.com/blog/wp-content/uploads/2010/04/Screenshot3.jpg" medium="image">
			<media:title type="html">New search screen</media:title>
			<media:description type="html">New search screen</media:description>
			<media:thumbnail url="http://www.mikeziray.com/blog/wp-content/uploads/2010/04/Screenshot3-150x150.jpg" />
		</media:content>
		<media:content url="http://www.mikeziray.com/blog/wp-content/uploads/2010/04/Screenshot4.jpg" medium="image">
			<media:title type="html">New drink details view</media:title>
			<media:description type="html">New drink details view</media:description>
			<media:thumbnail url="http://www.mikeziray.com/blog/wp-content/uploads/2010/04/Screenshot4-150x150.jpg" />
		</media:content>
		<media:content url="http://www.mikeziray.com/blog/wp-content/uploads/2010/05/Available-on-App-Store.png" medium="image">
			<media:title type="html">Available on App Store</media:title>
			<media:thumbnail url="http://www.mikeziray.com/blog/wp-content/uploads/2010/05/Available-on-App-Store-150x61.png" />
		</media:content>
	</item>
		<item>
		<title>What I&#8217;ve Been Up To</title>
		<link>http://www.mikeziray.com/2010/04/11/what-ive-been-up-to/?utm_campaign=feed&#038;utm_medium=feed&#038;utm_source=blog&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=rss</link>
		<comments>http://www.mikeziray.com/2010/04/11/what-ive-been-up-to/#comments</comments>
		<pubDate>Sun, 11 Apr 2010 16:34:48 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[europe]]></category>
		<category><![CDATA[goals]]></category>
		<category><![CDATA[hungary]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[music]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[personal]]></category>
		<category><![CDATA[scuba]]></category>
		<category><![CDATA[travel]]></category>
		<category><![CDATA[work]]></category>
		<category><![CDATA[blacksburg]]></category>
		<category><![CDATA[dog]]></category>
		<category><![CDATA[nrv]]></category>
		<category><![CDATA[petunia]]></category>
		<category><![CDATA[spanish]]></category>

		<guid isPermaLink="false">http://www.mikeziray.com/?p=980</guid>
		<description><![CDATA[I&#8217;ve been crazy busy ever since we returned from Colombia. We fell back into life in the US at full sprint and have only had a few periods since where we could rest. As a result, I don&#8217;t think I&#8217;ve been clear on what exactly I&#8217;ve been up to with my family and friends. So [...]<p><a href="http://www.mikeziray.com/2010/04/11/what-ive-been-up-to/">What I&#8217;ve Been Up To</a> is a post from: <a href="http://www.mikeziray.com">Ziray Studio Labs</a></p>

Related posts:<ol>
<li><a href='http://www.mikeziray.com/2011/03/13/avalon-dive-center-blacksburg-va/' rel='bookmark' title='Avalon Dive Center &#8211; Blacksburg, VA'>Avalon Dive Center &#8211; Blacksburg, VA</a></li>
<li><a href='http://www.mikeziray.com/2009/04/13/first-dive-2009-new-river/' rel='bookmark' title='First Dive 2009 &#8211; New River'>First Dive 2009 &#8211; New River</a></li>
<li><a href='http://www.mikeziray.com/2010/01/09/more-photos-of-petunia/' rel='bookmark' title='More Photos of Petunia'>More Photos of Petunia</a></li>
<li><a href='http://www.mikeziray.com/2010/10/07/i-am-not-an-entrepreneur/' rel='bookmark' title='I Am Not an Entrepreneur'>I Am Not an Entrepreneur</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been crazy busy ever since we returned from Colombia. We fell back into life in the US at full sprint and have only had a few periods since where we could rest. As a result, I don&#8217;t think I&#8217;ve been clear on what exactly I&#8217;ve been up to with my family and friends. So here&#8217;s the short version of most of the major things I&#8217;ve been up to since getting back:</p>
<h2>iPhone Development</h2>
<p>We started a company last year to allow independent iPhone app developers to make the transition from &#8220;wanna-be&#8221; to published developer. The model works similar to a record label, where <a href="http://www.ltzllc.com" target="_blank">LTZ</a> provides the leverage, so that developers can concentrate on coding rather than the logistics of getting apps out. We wanted to start small, get a few early successes and then use that momentum to gather a pool of developers. We&#8217;re also planning a Code Kitchen, which is a class to teach iPhone and Mac programming to anyone interested for free.</p>
<p>Most of our early time was spent on logistics, even though we had our first app idea right from the start. It was a lot of waiting; we waited for resources (copy, data, images, feedback), we waited for Apple, we waited for the lawyers and we waited for contracts. So in a year&#8217;s time, we finally had an application ready to release. But thankfully, most of that work won&#8217;t have to be completed again since the contracts, setup and other logistics are taken care of. I&#8217;ll post a longer article on the whole process (what it took, what we learned, etc), but as I type this, our app, <a href="http://www.ltzllc.com/products/barninja.php" target="_blank">BarNinja</a> is &#8220;In Review,&#8221; waiting to go up on the Apple App Store. It still might get rejected (one never knows with these processes), but we&#8217;re hopeful that it will appease the Apple review gods. We&#8217;re also more hopeful that the app will actually sell well and we can get some money into the business so we can buy &#8220;test&#8221; devices, like the brand new iPad for all our people.</p>
<h2>Scuba Diving in Blacksburg</h2>
<p>As many already know, scuba diving is a relatively new thing for me. However, I instantly fell in love with the sport and have tried to progress as quickly as I can. It&#8217;s been a lot cheaper than flying.</p>
<p>I got my Open Water (OW) certification in November of &#8217;08 (<a href="http://www.mikeziray.com/2009/02/05/flying-string-rays/?utm_campaign=feed&utm_medium=feed&utm_source=blog" target="_blank">with dives in Cozumel, Mexico</a> in December), my Advanced Open Water (AOW) in July of &#8217;09 (<a href="http://www.mikeziray.com/2009/08/12/pleasure-reef-key-largo-florida/" target="_blank">with dives in the Florida Keys</a> and o<a href="http://www.mikeziray.com/2009/08/19/life-goal-complete-us-coast-guard-bibb-wreck-dive/" target="_blank">n the US Coast Guard Cutter my grandfather served on in World War II</a>), my Rescue Diver certification (that required another certification of Emergency First Responder) and now I&#8217;m working on my Divemaster certification, which is a professional level diving certification. As you can image, this has been a long journey, with a ton of training, reading, and diving. The diving part was especially difficult due to the location. <a href="http://www.mikeziray.com/2009/05/18/new-river-dive/" target="_blank">Blacksburg is not known for it&#8217;s amazing scuba diving</a>, but diving in the local river, which has a maximum depth of 41 feet, has made it a bit easier.</p>
<p>We should be able to finish up the divemaster certification in May of this year. That&#8217;ll allow me to help teach some classes with Scott, who runs Avalon Adventures here in Blacksburg and the New River Valley (NRV). He&#8217;s my current instructor and I&#8217;ve helped him out with his website. The plan is to serve Blacksburg, Christiansburg, Radford, and the surrounding NRV to provide classes, dive trips, dive refreshers and other adventures. Hopefully, we&#8217;ll also make some money in the process.</p>
<h2>Music</h2>
<p>I&#8217;ve picked up my guitars again. Sadly, I don&#8217;t think I&#8217;ve picked them up in at least six months, but I&#8217;m at it again. Luckily it only took me a few minutes to remember what those six months made me forget. I am also helping my old Computer Science instructor with his business at <a href="http://www.RocketMusic.net" target="_blank">Rocket Music</a>. It helps me get back into music, even though its on a strictly computer programming level. Just talking about guitars, buying guitars, customizing guitars and everything guitars reminds me to go pick up one of my guitars and practice, if for only 15 minutes.</p>
<h2>Our Foster Dog</h2>
<p>Our <a href="http://www.mikeziray.com/2009/10/29/petunia/?utm_campaign=feed&utm_medium=feed&utm_source=blog" target="_blank">foster dog Petunia</a> has really adjusted well with us. When we first got her, she had some problems with other dogs, being generally nervous, crying when we left her home alone, etc. We weren&#8217;t surprised, since her previous owners abandoned her and she spent a long time in the shelter. Now all she does it try to cuttle up with us and never leaves us, even if that means following us from room to room.</p>
<p>Ana is getting attached to Petunia and I don&#8217;t think we&#8217;re going to get her adopted. Being a Pitbull mix, people are afraid of her. However, everyone that&#8217;s met her has loved her, which is another reason we don&#8217;t think we&#8217;ll let her be adopted. She never barks, is great with our cat, loves to play, never complains, and is so adorable. She&#8217;s gathered such nicknames as Petu, Petufilese and just Perrita. Dogs are a lot of work, but I think in this case, for her, she&#8217;s worth it.</p>
<h2>Apartment</h2>
<p>My girlfriend of about a year, moved in officially a few months ago. She still has her old apartment, but the rent there is taken care of by a sort of sub-lease. Previously, we were always together anyway, cooking food, studying together, grocery shopping together. The only difference was, she wasn&#8217;t paying rent or the massive electricity bill we seemed to rack up with her presence. I have an extra bedroom in my condo, which I gave to her for all her stuff. We moved in her tredmill into that room (producing some of the first small scratches in my new hard wood floors), her desk and a bunch of other things so that she has her own space. It&#8217;s worked out extremely well and while we&#8217;ve had our fights about stupid apartment and living stuff, you don&#8217;t truly know a person until you lived with them. That goes for friends and girlfriends.</p>
<h2>Spanish</h2>
<p>As a result of living with a native Spanish speaker, I&#8217;ve picked up a lot. I never learned Spanish. It was always the language of poor people where I lived. Instead I studied German, the language that&#8217;s most understood in Europe. While living in Hungary, I learned Hungarian so picking up Spanish was probably the easiest thing for me. With Spanish, for example, just add an &#8216;O&#8217; or an &#8216;A&#8217; after any English word of more than 2 syllables and translate word for word and you have a pretty good, understandable sentence.</p>
<p>Before I met Ana (pronounced Ah-na, not Anne-uh by the way), I probably knew less than 20 words, and that&#8217;s after having spent two weeks in Mexico scuba diving. Before that, I probably knew around 5. Now I wish I would have learned it sooner, but I&#8217;m glad I learned German since Ana and I are planning a trip back to Europe. Ana has never been, so I&#8217;ll take us around Hungary, we&#8217;ll visit Italy (which is a language both of us have studied, but she understands a lot better) and she can take us around Spain since they almost speak the same language as she does.</p>
<p>We have a savings account set up that we&#8217;ve been putting money in since last summer. It&#8217;s not a lot, but it&#8217;ll at least pay for the plane tickets out there. Then we plan on staying with friends where we can, and since we both have friends all over Europe, it shouldn&#8217;t be an issue.</p>
<p><a href="http://www.mikeziray.com/2010/04/11/what-ive-been-up-to/">What I&#8217;ve Been Up To</a> is a post from: <a href="http://www.mikeziray.com">Ziray Studio Labs</a></p>
<p>Related posts:<ol>
<li><a href='http://www.mikeziray.com/2011/03/13/avalon-dive-center-blacksburg-va/' rel='bookmark' title='Avalon Dive Center &#8211; Blacksburg, VA'>Avalon Dive Center &#8211; Blacksburg, VA</a></li>
<li><a href='http://www.mikeziray.com/2009/04/13/first-dive-2009-new-river/' rel='bookmark' title='First Dive 2009 &#8211; New River'>First Dive 2009 &#8211; New River</a></li>
<li><a href='http://www.mikeziray.com/2010/01/09/more-photos-of-petunia/' rel='bookmark' title='More Photos of Petunia'>More Photos of Petunia</a></li>
<li><a href='http://www.mikeziray.com/2010/10/07/i-am-not-an-entrepreneur/' rel='bookmark' title='I Am Not an Entrepreneur'>I Am Not an Entrepreneur</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.mikeziray.com/2010/04/11/what-ive-been-up-to/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
	</item>
		<item>
		<title>iPhone Pricing</title>
		<link>http://www.mikeziray.com/2010/04/10/iphone-pricing/?utm_campaign=feed&#038;utm_medium=feed&#038;utm_source=blog&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=rss</link>
		<comments>http://www.mikeziray.com/2010/04/10/iphone-pricing/#comments</comments>
		<pubDate>Sat, 10 Apr 2010 23:06:10 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[advice]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[work]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[cocoa]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[ipod]]></category>
		<category><![CDATA[itunes]]></category>
		<category><![CDATA[marketing]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.mikeziray.com/?p=847</guid>
		<description><![CDATA[As with any product or service, the question of pricing is always one of the many challenges of selling a product or service. Many price their products or services low in an attempt to under cut their competition or initially sell a lot and get their name out there. Others charge way more than a [...]<p><a href="http://www.mikeziray.com/2010/04/10/iphone-pricing/">iPhone Pricing</a> is a post from: <a href="http://www.mikeziray.com">Ziray Studio Labs</a></p>

Related posts:<ol>
<li><a href='http://www.mikeziray.com/2010/01/16/how-to-program-for-the-iphone-a-plan/' rel='bookmark' title='How to Program for the iPhone &#8211; A Plan'>How to Program for the iPhone &#8211; A Plan</a></li>
<li><a href='http://www.mikeziray.com/2010/01/27/handling-your-initial-view-controllers-for-iphone/' rel='bookmark' title='Handling Your Initial View Controllers for iPhone'>Handling Your Initial View Controllers for iPhone</a></li>
<li><a href='http://www.mikeziray.com/2010/04/14/barninja-an-iphone-app-postmortem/' rel='bookmark' title='BarNinja &#8211; An iPhone App Postmortem'>BarNinja &#8211; An iPhone App Postmortem</a></li>
<li><a href='http://www.mikeziray.com/2010/10/07/i-am-not-an-entrepreneur/' rel='bookmark' title='I Am Not an Entrepreneur'>I Am Not an Entrepreneur</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>As with any product or service, the question of pricing is always one of the many challenges of selling a product or service. Many price their products or services low in an attempt to under cut their competition or initially sell a lot and get their name out there. Others charge way more than a person is willing to pay for such a product.</p>
<p>With iPhone development, more often than not, you&#8217;re selling a product as opposed to a service, which may be a compliment to your physical or web based service. If your iPhone app is a complimentary product to a service that you already offer and charge for, your iPhone app should probably be free (depending on complexity). Look at it as a value-added feature to put you above your competition and make using your service more convenient and enjoyable. By creating more ways to access your service, you provide more opportunity for your customers to use it more often and really benefit from what you&#8217;re trying to offer them.</p>
<p>So what&#8217;s the sweet spot for a price for your iPhone app? It obviously depends, but there are some guidelines we came up with.</p>
<h2>Be Unique with Your iPhone App</h2>
<p>The more unique your application is, the more you can sell it for. By being unique, you have less competition and thus a higher demand.</p>
<h2>Complexity of Your iPhone App</h2>
<p>If your application can be easily reproduced by a 16 year old kid on a weekend, you either shouldn&#8217;t charge for your application, or if you do, don&#8217;t charge more than a dollar because that 16 year old kid won&#8217;t.</p>
<h2>Proprietary</h2>
<p>If your application uses proprietary information, software, APIs or other technologies that aren&#8217;t easily implemented or obtained, you can charge more for your application. This relates to complexity, but be aware that people will often create equivalent systems if it&#8217;s popular enough so proprietary systems and information require a lot of maintenance to keep them relevant.</p>
<h2>Usefulness of Your Application</h2>
<p>How often will someone use your app? Is it just a novelty or something someone will only use for a certain chore that they rarely do? If so, the demand for the app diminishes and so should your price.</p>
<p>No application should be more than $10 with few exceptions. Remember that you&#8217;re developing for a mobile platform and the software is limited and your price should be limited too.</p>
<p>If it&#8217;s a game, how is the quality and length of game play? The quality, the game play and the fun factor all play a part in your price. Obviously, people much prefer spending money on entertainment than on a new fancy laundry list application. Games are usually unique (to the App Store at least), are complex and provide a greater satisfaction to buyers, which allows them to enjoy a higher price tag.</p>
<h2>Perspective</h2>
<p>Having a higher price on the App Store shows more confidence in your application. Giving your app away usually means you don&#8217;t think people would be even willing to spend the price of a soda on your application. These applications are fine, but for some of us, we need to make a living.</p>
<p>Making your app a dollar usually means, I want to make some money, but I don&#8217;t think people will pay any more for it. But charging a dollar can also be good if your app has a wide appeal. What you lack in big numbers, you make up with bulk sales. So, if it&#8217;s a game, you could potentially have a larger market as opposed to a utility application that the user spends 30 seconds on. So you really need to look hard at your application and keep several factors in mind before you price your app. You can always change it later, so one approach is to start low and see how sales go.</p>
<p><a href="http://www.mikeziray.com/2010/04/10/iphone-pricing/">iPhone Pricing</a> is a post from: <a href="http://www.mikeziray.com">Ziray Studio Labs</a></p>
<p>Related posts:<ol>
<li><a href='http://www.mikeziray.com/2010/01/16/how-to-program-for-the-iphone-a-plan/' rel='bookmark' title='How to Program for the iPhone &#8211; A Plan'>How to Program for the iPhone &#8211; A Plan</a></li>
<li><a href='http://www.mikeziray.com/2010/01/27/handling-your-initial-view-controllers-for-iphone/' rel='bookmark' title='Handling Your Initial View Controllers for iPhone'>Handling Your Initial View Controllers for iPhone</a></li>
<li><a href='http://www.mikeziray.com/2010/04/14/barninja-an-iphone-app-postmortem/' rel='bookmark' title='BarNinja &#8211; An iPhone App Postmortem'>BarNinja &#8211; An iPhone App Postmortem</a></li>
<li><a href='http://www.mikeziray.com/2010/10/07/i-am-not-an-entrepreneur/' rel='bookmark' title='I Am Not an Entrepreneur'>I Am Not an Entrepreneur</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.mikeziray.com/2010/04/10/iphone-pricing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
	</item>
		<item>
		<title>Handling Your Initial View Controllers for iPhone</title>
		<link>http://www.mikeziray.com/2010/01/27/handling-your-initial-view-controllers-for-iphone/?utm_campaign=feed&#038;utm_medium=feed&#038;utm_source=blog&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=rss</link>
		<comments>http://www.mikeziray.com/2010/01/27/handling-your-initial-view-controllers-for-iphone/#comments</comments>
		<pubDate>Wed, 27 Jan 2010 16:50:54 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[advice]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[appdelegate]]></category>
		<category><![CDATA[class diagram]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[program]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[singleton]]></category>
		<category><![CDATA[software engineering]]></category>
		<category><![CDATA[tabbed bar controller]]></category>
		<category><![CDATA[viewcontrollers]]></category>

		<guid isPermaLink="false">http://www.mikeziray.com/?p=884</guid>
		<description><![CDATA[Programming starts with a design A lot of webpages and articles talk about how to program, but they don&#8217;t talk about how to design a program. Good program design separates the weekend programmers from the professionals. Sure, anyone can piece together a working application but a good design allows a power and flexibility of adding [...]<p><a href="http://www.mikeziray.com/2010/01/27/handling-your-initial-view-controllers-for-iphone/">Handling Your Initial View Controllers for iPhone</a> is a post from: <a href="http://www.mikeziray.com">Ziray Studio Labs</a></p>

Related posts:<ol>
<li><a href='http://www.mikeziray.com/2010/01/16/how-to-program-for-the-iphone-a-plan/' rel='bookmark' title='How to Program for the iPhone &#8211; A Plan'>How to Program for the iPhone &#8211; A Plan</a></li>
<li><a href='http://www.mikeziray.com/2010/12/06/ios-development-code-kitchen/' rel='bookmark' title='iOS Development Code Kitchen'>iOS Development Code Kitchen</a></li>
<li><a href='http://www.mikeziray.com/2010/07/01/why-your-code-sucks-naming-conventions/' rel='bookmark' title='Naming Conventions &#8211; Why Your Code Sucks'>Naming Conventions &#8211; Why Your Code Sucks</a></li>
<li><a href='http://www.mikeziray.com/2010/06/27/corona-game-template-in-lua/' rel='bookmark' title='Corona Game Template in Lua'>Corona Game Template in Lua</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<h1>Programming starts with a</h1>
<h1>design</h1>
<p>A lot of webpages and articles talk about how to program, but they don&#8217;t talk about how to design a program. Good program design separates the weekend programmers from the professionals. Sure, anyone can piece together a working application but a good design allows a power and flexibility of adding new features, for example, without having to recode half of your application.</p>
<p>Here, we&#8217;ll talk about handling your initial views when your iPhone application loads. This might be a simple task if your application is simple, but take the case of having a welcome screen followed by a login screen followed by a tabbed view controller. You might set it up so that one activates the other upon being dismissed itself.</p>
<p>Here&#8217;s an example of how the process might look:</p>
<p>Program loads AppDelegate</p>
<p>Load Welcome view from AppDelegate</p>
<p>Dismiss Welcome view -&gt; Tell Welcome view to load Login view</p>
<p>Dismiss Login view -&gt; Tell Login view to load Tabbed view</p>
<p>What if you had to add a view or remove one, say if the login was no longer needed if you gave your users the option to save their credentials. You&#8217;d have to rewrite two different view controllers at least. And this is just a simple example so you can see how complicated this chain of views would get once your application grows. For most programmers this way is fine, and sadly enough most of the time, this is the way it&#8217;s done. But true programmers are lazy. Lazy programmers are good programmers. So be lazy and write good code so that when (not if) you go back and edit your code, it&#8217;ll be a snap.</p>
<h1>A design starts on paper</h1>
<p>Your programs should be conceived on paper. Even with applications that attempt to do this, I still find paper the ultimate programming tool (even though I did the one below on a computer).</p>
<div id="attachment_895" class="wp-caption aligncenter" style="width: 512px"><a href="http://www.mikeziray.com/blog/wp-content/uploads/2010/01/MultiViewExample.png?utm_campaign=feed&utm_medium=feed&utm_source=blog"><img class="size-full wp-image-895" title="Class Diagram" src="http://www.mikeziray.com/blog/wp-content/uploads/2010/01/MultiViewExample.png" alt="Class Diagram" width="502" height="426" /></a><p class="wp-caption-text">Class Diagram</p></div>
<p>First off, your controllers should be logically separated based on their tasks that they need to accomplish (not based on how the user will view them). So, you should have a controller or controllers to handle logging in and session creation and have appropriate UIViews and UIViewControllers to get and display info to your user. This may not be a one-to-one relationship though. For example, you may not have a UIViewController that&#8217;s associated with creating your sessions at all.</p>
<p>Next you will have your application&#8217;s business logic view controllers, controllers and all that jazz. The controllers sit independently to the view controllers except, of course, where there&#8217;s coupling or interaction. They are not tied directly, or rely upon any particular view. You illustrate those connections on paper (or in this case in the example diagram above). So if your &#8220;Add New Event&#8221; feature, let&#8217;s say, needs access to the session data, draw a line from your SessionController to your EventsController with an arrow pointing in the direction of the flow (from EventsController to SessionController in our case since the Events controller needs to know about the SessionController but not vise versa).</p>
<h1>Abstraction solves everything</h1>
<p>Since your controller code should be independent of how your views are laid out, you won&#8217;t have your AddNewEventViewController (the view that lets the user add an event) handling the actual creation and saving of events but will instead gathering and packaging the information taken from the user and given to an EventsController to handle the manipulation. Who knows, you may have several views that edit an Event in one way or another and if you change something in how the Event is saved, you&#8217;ll have to go into the code of each one that touches Event and rewrite code &#8212; exactly what we&#8217;re trying to avoid.</p>
<p>Abstracting the data in this way is called indirection and &#8220;<em>All problems in computer science can be solved by another level of indirection</em>;&#8221; &#8212; <a title="David Wheeler (computer scientist)" href="http://en.wikipedia.org/wiki/David_Wheeler_(computer_scientist)">David Wheeler</a>, except as <a title="Kevlin Henney" href="http://en.wikipedia.org/wiki/Kevlin_Henney">Kevlin Henney</a> says, <em>&#8220;&#8230;except for the problem of too many layers of indirection.&#8221;</em></p>
<h1>Singletons, under used</h1>
<h1>and under appreciated</h1>
<p>So, you should have a session controller that sits somewhere ready to be called by who ever needs to validate a session or login (those views that would need access could be your tabbed views, could be your app delegate when your app starts, or could be in your settings views where you type your login info or when you log out). This is usually accomplished with a <a href="http://en.wikipedia.org/wiki/Singleton_pattern" target="_blank">singleton </a>class where any controller can access that one (and only) instance of your controller without having to pass around references to that controller. It not only cleans up your code, but also helps data integrity by not allowing multiple objects to edit the same data.</p>
<h1>Handling your initial views</h1>
<p>You should really have a separate controller handle organizing your views rather than the app delegate since the app delegate should really only be used to initialize your app and handle delegation of your application, not controlling business logic. So the structure should look like:</p>
<p>AppDelegate -&gt; MainViewController -&gt; LoginViewController</p>
<p>I like to have an overall MainViewController that handles all the subviews, be it a tab bar view controller, a table view controller, or whatever your main view is going to be. This level of indirection allows you to easily change what your main view controller is later, should your requirements or ideas change. Having said that, the MainViewController is going to need to get and maintain a reference to the application&#8217;s window.</p>
<p>To actually add the views, stack them on top of each other. Add the Tab Bar Controller&#8217;s view to the Window&#8217;s view first, then if needed, add your login views after that to stack them on top, and then remove them as needed when you&#8217;re done with them. By removing them from the top, it reveals the bottom view.</p>
<p>In MainViewController&#8217;s implementation file, your viewDidLoad: will look like:</p>
<div class="codesnip-container" >
<div class="objc codesnip" style="font-family:monospace;"><span class="sy0">-</span> <span class="br0">&#40;</span><span class="kw4">void</span><span class="br0">&#41;</span>viewDidLoad<br />
<span class="br0">&#123;</span><br />
<span class="br0">&#91;</span>super viewDidLoad<span class="br0">&#93;</span>;<br />
<span class="br0">&#91;</span>mainWindow addSubview<span class="sy0">:</span> tabBarController.view<span class="br0">&#93;</span>;<br />
<span class="br0">&#91;</span>mainWindow addSubview<span class="sy0">:</span> loginViewController.view<span class="br0">&#93;</span>;<br />
<span class="br0">&#91;</span>mainWindow addSubview<span class="sy0">:</span> welcomeViewController.view<span class="br0">&#93;</span>;<br />
<span class="br0">&#125;</span></div>
</div>
<p>Where mainWindow is an IBOutlet to your Window in your MainWindow.xib file (or you could get it programatically if you prefer). Also, loginViewController is a pointer to your view controller that you put on top of the tab bar controller. On top of your login view, put a welcome view displaying any text, graphics or video to show after your application loads; note that this is different from your Default.png initial image. Then when you&#8217;re done with your login view, call removeFromSuperview on them to remove them from the view stack. So something like this in your MainViewController (since it handles all manipulation of your main views):</p>
<div class="codesnip-container" >
<div class="objc codesnip" style="font-family:monospace;"><span class="sy0">-</span> <span class="br0">&#40;</span><span class="kw4">void</span><span class="br0">&#41;</span>removeWelcomeView<br />
<span class="br0">&#123;</span><br />
<span class="br0">&#91;</span>welcomeViewController.view removeFromSuperview<span class="br0">&#93;</span>;<br />
<span class="co2">// Any other code you need to clean up after your welcome view is removed</span><br />
<span class="br0">&#125;</span><br />
<span class="sy0">-</span> <span class="br0">&#40;</span><span class="kw4">void</span><span class="br0">&#41;</span>removeLoginView<br />
<span class="br0">&#123;</span><br />
<span class="br0">&#91;</span>loginViewController.view removeFromSuperview<span class="br0">&#93;</span>;<br />
<span class="co2">// Any other code you need to clean up after your login view is removed</span><br />
<span class="br0">&#125;</span></div>
</div>
<p>Obviously, when you remove the welcome screen view, under it (since you added it on the stack before the welcome view) is your login view. Then, removing the login view will show the tab bar view since that was added first in your view stack:</p>
<p>(Top)</p>
<p>Welcome View</p>
<p>Login View</p>
<p>Tab Bar View</p>
<p>This way we&#8217;re loading all of our views at once and stacking them so the one on top hides the one below. This has a slight overhead since you&#8217;re adding all your views when your applications starts but you can always delay adding the tab bar controller to the Window&#8217;s view until all the initial views are removed, for example. Then, if you&#8217;d like, using the MainViewController, you can add views on top of the tab bar view during execution, for example if you need to login again.</p>
<p>There are a few different ways to handle multiple views and each case is different. This is just one idea, with a few general guidelines. Feel free to ask any questions in the comments if anything wasn&#8217;t clear enough.</p>
<h2>Sample Code</h2>
<p>The following sample code is provided as is for educational and demonstration purposes. I threw it together really quickly and is only used to demonstrate the use of a MainViewController. Normally, you&#8217;ll want to make your MainViewController a singleton class, but in this example I passed the MainViewController instance to the subviews in order for them to call different methods on MainViewController to change the current views. By using a singleton design, you can avoid passing around this reference since there is only ever one MainViewController.</p>
<p>Also, this code demonstrates how to create a tab bar programmatically. It needs to be the root view of your window, but that doesn&#8217;t mean it needs to be the root view controller. We are still allowed to use a MainViewController as our root to handle all subviews and their controllers.</p>
<p><a href="http://www.mikeziray.com/blog/wp-content/uploads/2010/01/2010-02-11_TabBarTest.zip?utm_campaign=feed&utm_medium=feed&utm_source=blog">Download sample code (2010-02-11_TabBarTest.zip)</a></p>
<p><a href="http://www.mikeziray.com/2010/01/27/handling-your-initial-view-controllers-for-iphone/">Handling Your Initial View Controllers for iPhone</a> is a post from: <a href="http://www.mikeziray.com">Ziray Studio Labs</a></p>
<p>Related posts:<ol>
<li><a href='http://www.mikeziray.com/2010/01/16/how-to-program-for-the-iphone-a-plan/' rel='bookmark' title='How to Program for the iPhone &#8211; A Plan'>How to Program for the iPhone &#8211; A Plan</a></li>
<li><a href='http://www.mikeziray.com/2010/12/06/ios-development-code-kitchen/' rel='bookmark' title='iOS Development Code Kitchen'>iOS Development Code Kitchen</a></li>
<li><a href='http://www.mikeziray.com/2010/07/01/why-your-code-sucks-naming-conventions/' rel='bookmark' title='Naming Conventions &#8211; Why Your Code Sucks'>Naming Conventions &#8211; Why Your Code Sucks</a></li>
<li><a href='http://www.mikeziray.com/2010/06/27/corona-game-template-in-lua/' rel='bookmark' title='Corona Game Template in Lua'>Corona Game Template in Lua</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.mikeziray.com/2010/01/27/handling-your-initial-view-controllers-for-iphone/feed/</wfw:commentRss>
		<slash:comments>22</slash:comments>
	
		<media:thumbnail url="http://www.mikeziray.com/blog/wp-content/uploads/2010/01/MultiViewExample-150x150.png" />
		<media:content url="http://www.mikeziray.com/blog/wp-content/uploads/2010/01/MultiViewExample.png" medium="image">
			<media:title type="html">Class Diagram</media:title>
			<media:description type="html">Class Diagram</media:description>
			<media:thumbnail url="http://www.mikeziray.com/blog/wp-content/uploads/2010/01/MultiViewExample-150x150.png" />
		</media:content>
	</item>
	</channel>
</rss>

