<?xml version="1.0" encoding="UTF-8"?>
<!--Generated by Squarespace Site Server v5.11.5 (http://www.squarespace.com/) on Fri, 03 Sep 2010 16:53:33 GMT--><feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/"><title>Blog</title><subtitle>Blog</subtitle><id>http://www.nanaimostudio.com/blog/</id><link rel="alternate" type="application/xhtml+xml" href="http://www.nanaimostudio.com/blog/"/><link rel="self" type="application/atom+xml" href="http://www.nanaimostudio.com/blog/atom.xml"/><updated>2010-08-23T01:55:27Z</updated><generator uri="http://www.squarespace.com/" version="Squarespace Site Server v5.11.5 (http://www.squarespace.com/)">Squarespace</generator><entry><title>Idea Organizer - Best iPhone Design</title><id>http://www.nanaimostudio.com/blog/2010/8/22/idea-organizer-best-iphone-design.html</id><link rel="alternate" type="text/html" href="http://www.nanaimostudio.com/blog/2010/8/22/idea-organizer-best-iphone-design.html"/><author><name>Boon Chew</name></author><published>2010-08-23T01:44:28Z</published><updated>2010-08-23T01:44:28Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p>Idea Organizer is featured in <a href="http://www.iospirations.com/component/iphoneinspirations/2/1﻿">iOSpirations's Best iPhone Design Gallery</a>.</p>
<p>&nbsp;</p>
<p><span class="full-image-block ssNonEditable"><span><img src="http://img.skitch.com/20100823-def3jpka8wxqjyyi19xunpgh32.jpg?__SQUARESPACE_CACHEVERSION=1282528524482" alt="" /></span></span></p>]]></content></entry><entry><title>You shall Git</title><id>http://www.nanaimostudio.com/blog/2010/8/22/you-shall-git.html</id><link rel="alternate" type="text/html" href="http://www.nanaimostudio.com/blog/2010/8/22/you-shall-git.html"/><author><name>Boon Chew</name></author><published>2010-08-22T08:11:33Z</published><updated>2010-08-22T08:11:33Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p>Git is quickly becoming the de facto standard for version control in software development.&nbsp; There used to be a time when cvs was the prevalent solution.&nbsp; Then svn came along and slowly but surely, everyone switched over to svn because it had solved certain issues that cvs is plagued with.&nbsp; But git is more than just a switch from cvs to svn, it's fundamentally better than svn.&nbsp; Anyone who is still working with svn only falls into one camp -- they have not used git in any real capacity yet.&nbsp; The one main advantage of git (and this factor alone is enough for anyone to consider staying away from svn) is its distributed nature.&nbsp; In other words, there is no central repository to speak of like you do with svn.&nbsp; All version info is stored inside a folder at the root of your project called .git.&nbsp; Another big thing is that with Git you don't have .svn file sprinkled all over your project folders.&nbsp; These two factors alone allow you to quickly version control your project without any need to set up a repository and deploy your source by removing just one folder.</p>
<p>The superiority of Git means that it will totally replace svn faster than svn did to cvs.</p>]]></content></entry><entry><title>Problem exporting your Push Certificate into p12</title><category term="apns"/><category term="iPhone"/><category term="push"/><id>http://www.nanaimostudio.com/blog/2010/7/27/problem-exporting-your-push-certificate-into-p12.html</id><link rel="alternate" type="text/html" href="http://www.nanaimostudio.com/blog/2010/7/27/problem-exporting-your-push-certificate-into-p12.html"/><author><name>Boon Chew</name></author><published>2010-07-28T05:44:23Z</published><updated>2010-07-28T05:44:23Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p>If you have an issue exporting your push ceritifcate into .p12 format from keychain access (the option to export to p12 is disabled), check to make sure you have selected My Certificates on the left pane.&nbsp; We add push notifications to our apps from time to time, but some times we still miss this step and waste a few minutes on this.</p>
<p><span class="full-image-block ssNonEditable"><span><img src="http://img.skitch.com/20100728-bxgbbkt3iejqr7wqc9a9gmrd6h.png?__SQUARESPACE_CACHEVERSION=1280295984454" alt="" /></span></span></p>
<p><span class="full-image-block ssNonEditable"><span><img src="http://skitch.com/pixelrenderer/dqqiu/keychain-access?__SQUARESPACE_CACHEVERSION=1280295960108" alt="" /></span></span></p>]]></content></entry><entry><title>Chinese iPad - Gotta love it</title><id>http://www.nanaimostudio.com/blog/2010/7/14/chinese-ipad-gotta-love-it.html</id><link rel="alternate" type="text/html" href="http://www.nanaimostudio.com/blog/2010/7/14/chinese-ipad-gotta-love-it.html"/><author><name>Boon Chew</name></author><published>2010-07-14T20:43:01Z</published><updated>2010-07-14T20:43:01Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p>&nbsp;</p>
<p>Can't afford an iPad or wanna stay away from Apple's closed ecosystem? I hereby present you the Chinese iPad - iRobot.&nbsp; Obviously there is no competition when it comes to this versus the actual iPad in terms of build quality and large display, but if iPad had some of the features of iRobot (such as camera, ethernet slot, and SD expansion slot), it would really make it unstoppable in this market.</p>
<p>Brief Tech Spec:</p>
<p>CPU by Anyka<br />256MB RAM<br />2GB solid state drive space, with expansion slot<br />7" TFT Display (Resolution: 800x480)<br />1.3 Megapixel camera<br />Wireless card<br />Ethernet slot<br />Android OS 1.5</p>
<p><br />Original Detailed Tech Spec:</p>
<p>主控芯片 安凯主控<br />&nbsp;&nbsp;&nbsp; 内存 ●256MB<br />&nbsp;&nbsp; 内置容量 ●2GB(另支持外扩卡1GB-16GB)&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp; 显示屏 ●7"高亮高清宽屏（800X480分辩率）/触摸</p>
<p>&nbsp; 带130万像素摄像头</p>
<p>&nbsp;&nbsp; Bitmap Touch-screen,ConvertibleDisply(800*480)<br />&nbsp; Google谷歌操作系统Android1.5(2.1)<br />&nbsp;&nbsp; 网络接口</p>
<p>&nbsp;●Wireless LAN 802.11无线上网&nbsp;&nbsp; 以及有线接口<br />&nbsp;&nbsp;&nbsp; 无线上网 ●标配WIFI&nbsp;&nbsp;</p>
<p>同时支持有线上网：可连接网线上网，具有更大拓展性！！！</p>
<p><br />&nbsp;&nbsp; 输入设备 ●触摸&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp; 接口 ●1个USB2.0输出接口&nbsp; 1个耳机输出口&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp; 扩充接口 ●TF卡&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp; BitmapBitmap<br />&nbsp;&nbsp; 电池容量 ●3300mAh&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp; 颜色 ●银&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp; 净重 ●0.35Kg（含电池）&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp; 输入电源 ● INPUT 5V 2A&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp; 支持音频格式 ● 支持MP3、WMA、APE、FLAC、AAC、AC3、WAV等多种音频格式</p>
<p>&nbsp; 本机可以支持30多种语言<br />&nbsp;&nbsp; 视频格式 ●最大可支持到1080X720（720P），支持MKV(H.264 HP)、AVI、&nbsp;<br />&nbsp;&nbsp; FLV、MPEG-1、MPEG-2等多种视频格式<br />&nbsp;&nbsp; 网上视频 ● 支持浏览网页,FLV下载（限若干主流站点）独特网站视频在线播放技术&nbsp;<br />&nbsp;&nbsp; 图片浏览 ● 支持JPEG、BMP、GIF、PNG、TIFF格式图片浏览、自动浏览&nbsp;<br />&nbsp;&nbsp; 定位应用 ● 支持Goolge地图定位，追踪目前位置、检视即时交通状况和目的地详细方向&nbsp;<br />&nbsp;&nbsp; 软件下载 ● 附带google market（android应用软件市场）,目前2万多个应用程序下载。</p>
<p>&nbsp;</p>
<p>Photo of an iRobot alongside an iPad.</p>
<p><span class="full-image-block ssNonEditable"><span><img src="http://img.skitch.com/20100714-xknashfc9fpyf1d81gwgfp1sbw.png?__SQUARESPACE_CACHEVERSION=1279128670800" alt="" /></span></span></p>
<p>More photos of Chinese iPad: <a href="http://item.taobao.com/item.htm?id=5775058978">http://item.taobao.com/item.htm?id=5775058978<br /><br /></a></p>]]></content></entry><entry><title>The Corrupt App Review Process</title><id>http://www.nanaimostudio.com/blog/2010/7/14/the-corrupt-app-review-process.html</id><link rel="alternate" type="text/html" href="http://www.nanaimostudio.com/blog/2010/7/14/the-corrupt-app-review-process.html"/><author><name>Boon Chew</name></author><published>2010-07-14T17:43:30Z</published><updated>2010-07-14T17:43:30Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p>We got into iPhone development with passion and love for Apple's products and their development platform.&nbsp; In the short time of developing products for iPhone, we have run into rejections that went from technical glitch (internal tool used by the App Review Team thinks we are using private API when we are not) to violation of Apple's subjective interpretation of what makes for objectional contents to downright corruption.<br />This post is not another post ranting about the arbitrary and inconsistent nature of the App Review process.&nbsp; We understand the imperfect nature of things and appreciate having an app review process manage the quality of app going into the store.&nbsp; But we have a problem when a small group of people abuse their power for self-interest.&nbsp; It's true, absolute power corrupts absolutely, and the App Review Team has too much power.</p>
<p>Long story short:</p>
<p>&bull; We submitted our app "<a href="http://www.nanaimostudio.com/are-we-same">Are We Same?</a>" (originally called "We All Look Same") on June 1st.<br />&bull; A week later we received an email stating that the app was rejected for violating Section 3.3.17 of the License Agreement, the infamous "the app is deemed to contain objectionable content".<br />&bull; Not sure what's objectionable about our app as no specific reason is stated in the email -- we went about changing the app title, icon and a few other things we thought might remotely throw people off.&nbsp; Resubmitted app for approval.<br />&bull; Right around this time, an App Review Team rep called.&nbsp; He explained that any use of photos for rating purposes is simply not allowed.&nbsp; Suggested that we use language instead of people's photos for the identification of ethnicity/cultural heritage.&nbsp; We failed to convince him that's such a criteria is bogus.&nbsp; He suggested that we talked to the manager.<br />&bull; After the phone call, we sent an email to the rep for the manager to review detailing our conversation (per rep's suggestion) and made our case on why our app should not be termed objectionable.<br />&bull; A few days later we got to talk to the manager.&nbsp; Similar thing ensued.&nbsp; Main reason for rejection: The app involves using photos to identify ethnicty, that may offend some people.&nbsp; Apple is a conservative company so would rather not deal with apps of this nature.&nbsp; We offered the manager the option of us releasing our app for free and/or removing the app immediately if any complaint is received.&nbsp; His response: one complaint is one complaint too many.<br />&bull; We told contributors and peers about what happened as many of them checked with us on the status of the app.&nbsp; When they found out what happened, most were disappointed and couldn't understand why.&nbsp; A few ridiculed us for developing for iPhone instead of Android - we find ourselves having to defend that Apple is not evil.&nbsp; A few asked us to release the app on Cydia store.<br />&bull; We decided not to do any of the above.&nbsp; Let's just put it to rest and repurpose the contents, which also means 1+ month of work down the drain.&nbsp; We had to collect the photos from friends and volunteers around us, rather than using stock, which is painfully time-consuming but we feel it's the right thing to do.&nbsp; If people are willing to contribute their photos after we show them the app, it validates that the legitimacy of it.<br />&bull; A week later, out of the blue a friend who is not aware of what happened to our app sent me a link to a Korean app. I looked at the app and could right away tell the app uses photos for identification purposes.&nbsp; Wait, isn't that not allowed?<br />&bull; Out of curiosity, we went searching on the App Store using the keyword "ethnicity".&nbsp; Gulp -- found three other apps that not only use photos but involve the subject of ethnicty as well.&nbsp; (<a href="http://festival.asianamericanmedia.org/2010/interactive/filipino-or-not-game/">Filipino or Not?</a>, Guess My Race? and Who Am I?)<br />&bull; OK, not a big deal - we thought, maybe a few reviewers let them slipped by.&nbsp; This is nothing new with the App Review process, we just have to help them correct the mistakes.<br />&bull; We resubmitted app promptly and called the same App Review Team rep.&nbsp; We told him what we foundWe also explained to him that from the reviews no one seems to find those apps objectionable.&nbsp; He said: "You have a good point there" and asked us to email him the links to the apps we found.</p>
<p>&bull; Another week or so of waiting went by, we finally emailed the rep to check in on the status.&nbsp; The rep called right away and explained that our app will remain rejected because it is not the same as the other apps.&nbsp; While the app Guess My Race involves using photos to identify ethnicity, it's educational as it has multiple choices and explanation right after you select your answer. It's also done by a Harvard cultural anthropologist. Our app - on the other hand, uses photos and ethnicity for game play. Interesting...so what about the criteria of "the use of people's photos for rating purposes being objectionable"? Let's skip right over that. Wait...the app Filipino or Not? makes use of photos, ethnicity and it's a game.&nbsp; Well, they used famous people, the rep responded.&nbsp; It's clear to us that the reason was made up on the fly and cannot stand on its own.<br />&bull; At this point, it became painfully clear that the App Review Team chooses to ignore all the previous reasons on why our app was rejected and now uncovered the reasons for the rejection of our app by picking out all the differences between our app and the others.&nbsp; Such behavior is far more serious than the arbitrary and the inconsistent patterns that we have witnessed - which can be corrected easily, it's downright lacking integrity.</p>
<p>In upcoming posts, we will talk about what we learned from all these and the effects of the tyrannical nature of App Review process on the app development ecosystem.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>]]></content></entry><entry><title>So you want to be an enterpreneur?</title><id>http://www.nanaimostudio.com/blog/2010/7/7/so-you-want-to-be-an-enterpreneur.html</id><link rel="alternate" type="text/html" href="http://www.nanaimostudio.com/blog/2010/7/7/so-you-want-to-be-an-enterpreneur.html"/><author><name>Boon Chew</name></author><published>2010-07-07T15:47:07Z</published><updated>2010-07-07T15:47:07Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p>What does it take to be an enterpreneur?</p>
<p>1) You gotta want to work your tail off.</p>
<p>2) You gotta have tremendous passion for what you do.</p>
<p>David Neeleman of Jet Blue has a lot to share in this video.</p>
<p>&nbsp;</p>
<p><object width="480" height="385"><param name="movie" value="http://www.youtube.com/v/pS_ZpMsZ-co&amp;hl=en_US&amp;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/pS_ZpMsZ-co&amp;hl=en_US&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"></embed></object></p>]]></content></entry><entry><title>Cloud-based game -- The next big thing</title><id>http://www.nanaimostudio.com/blog/2010/7/1/cloud-based-game-the-next-big-thing.html</id><link rel="alternate" type="text/html" href="http://www.nanaimostudio.com/blog/2010/7/1/cloud-based-game-the-next-big-thing.html"/><author><name>Boon Chew</name></author><published>2010-07-01T17:54:13Z</published><updated>2010-07-01T17:54:13Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p><a href="http://games.venturebeat.com/2010/06/15/onlive-unveils-its-line-up-for-cloud-based-online-gaming-service-at-a-much-lower-price/">Cloud-based gaming service</a> is seriously the next big thing.&nbsp; This goes along with the<a href="blog/2010/6/2/random-thoughts-on-web-games-and-mobile-games.html"> web&lt;-&gt;mobile</a> I brought up earlier in that games will no longer be tied to platform and the best experience is experience that is ever present, no matter where you are and what you are using.&nbsp; With the cloud-based approach, your game states will be centralized and you can experience your game wherever you are.&nbsp; Obviously, for cloud-based games to work, you need to have persistent high speed connection.&nbsp; And we won't see that happening to the mobile platform anytime soon (at least not with AT&amp;T being the sole provider for my iPhone...), but the cloud can indeed carve a piece of it out to synchronize game states on the mobile phones and cloud-based gaming services will be really useful for games that don't require real-time updates.&nbsp; Think of it as <a href="http://www.dropbox.com">DropBox</a> for games.</p>]]></content></entry><entry><title>Modal Form Sheet + Navigation Controller</title><id>http://www.nanaimostudio.com/blog/2010/6/30/modal-form-sheet-navigation-controller.html</id><link rel="alternate" type="text/html" href="http://www.nanaimostudio.com/blog/2010/6/30/modal-form-sheet-navigation-controller.html"/><author><name>Boon Chew</name></author><published>2010-06-30T08:28:31Z</published><updated>2010-06-30T08:28:31Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p>This quick tutorial shows you how to create a modal form sheet with a navigation controller to display master-detail view for your iPad application.&nbsp; Basic knowledge of iPhone programming is assumed. Download the sample code <a href="http://www.nanaimostudio.com/storage/sample_code/ModalFormSheetTest.zip">here</a>.</p>

<p>Step 1) Create a navigation controller and initialize it with the first view controller (TestModalViewController in this case) to show.<br />
Step 2) Present the navigation controller as modal.</p>


<pre>

        // Step 1
        TestModalViewController *viewController = [[[TestModalViewController alloc] initWithNibName:@&quot;TestModalViewController&quot; bundle:nil] autorelease];
	modalViewNavController = [[UINavigationController alloc] initWithRootViewController:viewController];

        // Step 2
	modalViewNavController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
	modalViewNavController.modalPresentationStyle = UIModalPresentationFormSheet;
	
	[self presentModalViewController:modalViewNavController animated:YES];

</pre>


<p>
<span class="full-image-block ssNonEditable"><br />
<span><br />
<img src="http://img.skitch.com/20100630-tdj5w2xagyig31i1tgf1g9f3x9.png?__SQUARESPACE_CACHEVERSION=1277886867096" alt="" />
</span><br />
</span><br />
</p>

<p>
3) In TestModalViewController, create a done button for the modal form sheet.


<pre>
- (void)viewDidLoad {
	[super viewDidLoad];
	
	self.title = @&quot;Modal Form Sheet Test&quot;;
	self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(dismiss)];
}

- (IBAction)dismiss
{
	[self.parentViewController dismissModalViewControllerAnimated:YES];
}


</pre>



<p>4) Write the code to push the detail view (TestModalDetailViewController) into the navigation stack (in this case when user taps the Show Details button).</p>



<pre>
- (IBAction)showDetails
{
	TestModalDetailViewController *viewController = [[[TestModalDetailViewController alloc] init] autorelease];
	[self.navigationController pushViewController:viewController animated:YES];
}

</pre>


<span class="full-image-block ssNonEditable"><br />
<span><br />
<img src="http://img.skitch.com/20100630-k69nyiixefd9shw5d89i9unq5a.png?__SQUARESPACE_CACHEVERSION=1277886884801" alt="" /></span></span></p>
]]></content></entry><entry><title>For Liberty: How the Ron Paul Revolution Watered the Withered Tree of Liberty</title><id>http://www.nanaimostudio.com/blog/2010/6/29/for-liberty-how-the-ron-paul-revolution-watered-the-withered.html</id><link rel="alternate" type="text/html" href="http://www.nanaimostudio.com/blog/2010/6/29/for-liberty-how-the-ron-paul-revolution-watered-the-withered.html"/><author><name>Boon Chew</name></author><published>2010-06-30T05:46:10Z</published><updated>2010-06-30T05:46:10Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p>When you need a break from your daily routine, watch this.&nbsp; Seriously, watch it.</p>

<p><object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/BIcIkoOwp7s&amp;hl=en_US&amp;fs=1&amp;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/BIcIkoOwp7s&amp;hl=en_US&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object></p>
]]></content></entry><entry><title>Alert Box</title><id>http://www.nanaimostudio.com/blog/2010/6/24/alert-box.html</id><link rel="alternate" type="text/html" href="http://www.nanaimostudio.com/blog/2010/6/24/alert-box.html"/><author><name>Boon Chew</name></author><published>2010-06-25T04:19:02Z</published><updated>2010-06-25T04:19:02Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p><br />When the battery on my SonicCare toothbrush runs out, it beeps to prompt me to recharge it.&nbsp; Without this alert, I would find myself with a dead toothbrush one morning.</p>
<p><a href="http://www.mint.com">Mint.com</a> sends alerts to me when I spend too much or deposit a large sum of money into my bank.&nbsp; The alerts help me make sure things are under control and nothing fishy is going on with my bank account.</p>
<p>When you are operating your business, make sure you have the appropriate monitoring and alert services in place to provide you with valuable feedback regarding the health of your business.&nbsp; Alert may not be a good thing when it comes to user interaction, it's absolutely essential when it comes to managing the risk profile of everything you do.</p>
<p>&nbsp;<span class="full-image-block ssNonEditable"><span><img src="http://img.skitch.com/20100625-ee5d831ugntk829s3swcgg8h3d.png?__SQUARESPACE_CACHEVERSION=1277440104613" alt="" /></span></span></p>]]></content></entry></feed>