<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ReignDesign Blog</title>
	<atom:link href="http://www.reigndesign.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.reigndesign.com/blog</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Wed, 24 Feb 2010 07:02:19 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Why is our app twice as large as what we submitted? &#8220;Contagious zeros&#8221;</title>
		<link>http://www.reigndesign.com/blog/why-is-our-app-twice-as-large-as-what-we-submitted-contagious-zeros/</link>
		<comments>http://www.reigndesign.com/blog/why-is-our-app-twice-as-large-as-what-we-submitted-contagious-zeros/#comments</comments>
		<pubDate>Wed, 24 Feb 2010 07:01:28 +0000</pubDate>
		<dc:creator>Stephen Ceresia</dc:creator>
				<category><![CDATA[Apps]]></category>
		<category><![CDATA[app store]]></category>
		<category><![CDATA[iphone]]></category>

		<guid isPermaLink="false">http://www.reigndesign.com/blog/?p=1293</guid>
		<description><![CDATA[
As you probably know, Apple has an app download limit for users downloading over 3G. Up until recently, this limit was 10 MB. If your app's file size exceeds the limit, users attempting to download it over 3G receive an error and must try again later over wifi. Needless to say, this can lead to [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.reigndesign.com/blog/wp-content/uploads/2010/02/AppStoreicon.png" alt="iTunes App Store" title="iTunes App Store" width="200" height="198" class="alignleft size-full wp-image-1315" /></p>
<p>As you probably know, Apple has an app download limit for users downloading over 3G. <a href="http://reviews.cnet.com/8301-19512_7-10456067-233.html">Up until recently</a>, this limit was 10 MB. If your app's file size exceeds the limit, users attempting to download it over 3G receive an error and must try again later over wifi. Needless to say, this can lead to frustrated users and lost sales and if you can get your app under this limit, it's definitely worth the effort.</p>
<p>So, when we submitted our latest update of <a href="http://www.pigrush.com">Pig Rush</a> to Apple for review, we worked hard to get it under the (then) 10 MB 3G app download limit.<br />
<span id="more-1293"></span></p>
<p>Eventually, we got the file size down to <strong>8.9 MB</strong>, knocking a massive 66% off of the original file size. Awesome!</p>
<p>We then submitted our update to Apple for review. Amazingly, <a href="http://www.reigndesign.com/blog/pig-rush-1-2-released-and-approved-by-apple-in-12-5-hours/">only 12.5 hours later</a> it was approved and live on the App Store. Excellent!</p>
<p>Then we noticed the file size listed in the App Store… <strong>16.5 MB</strong>.</p>
<p>How could this be? This was nearly double the size of what what we submitted!</p>
<p>We downloaded the compressed package from the app store, and compared it to the version we uploaded. Sure enough, the version on the App Store was larger: 17.4 MB vs. our 8.9 MB version.</p>
<p>We extracted both files to compare, but apart from some standard config files added everything was the same.</p>
<p>Upon further inspection, it turned out there was one big difference: the main executable was 13.7 MB in both versions. However, the App Store version of this file compressed to <strong>12.4 MB</strong> while ours compressed to <strong>4 MB</strong>.</p>
<p>That's a pretty significant difference. We decided to ask Apple about this, and here's the answer we got:</p>
<blockquote><p>"When your application is delivered to Apple, it is encrypted for DRM purposes and re-compressed. When the encryption is added, the size of the compressed file will increase. The exact size of the increase will vary from app to app, however, the size increase can be large when the binary has a lot of contagious zeros in it. We are unable to guarantee the size of your file after the encryption has been added."</p></blockquote>
<p>File size increasing after encryption is added makes sense - but an increase from 4 MB to 13.7 MB seems extremely high. I've also never heard of "contagious zeros" before, and it looks like <a href="http://www.google.com/search?hl=en&client=opera&hs=xAq&rls=en&q=%22contagious+zeros%22&aq=f&aqi=&aql=&oq=">I'm not the only one</a>.</p>
<p>Luckily, the new 3G limit has been upped to 20 MB so we still fall under it, but I'd still be interested in hearing others' experiences in final app package size vs. what was uploaded. Also, if you have any suggestions on limiting the number of contagious zeros in your binaries, please let us know.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.reigndesign.com/blog/why-is-our-app-twice-as-large-as-what-we-submitted-contagious-zeros/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Pig Rush 1.2 released&#8230; and approved by Apple in 12.5 hours!</title>
		<link>http://www.reigndesign.com/blog/pig-rush-1-2-released-and-approved-by-apple-in-12-5-hours/</link>
		<comments>http://www.reigndesign.com/blog/pig-rush-1-2-released-and-approved-by-apple-in-12-5-hours/#comments</comments>
		<pubDate>Thu, 18 Feb 2010 03:29:22 +0000</pubDate>
		<dc:creator>Stephen Ceresia</dc:creator>
				<category><![CDATA[Apps]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[pigrush]]></category>

		<guid isPermaLink="false">http://www.reigndesign.com/blog/?p=1264</guid>
		<description><![CDATA[
We've heard buzz about improvements to Apple's release process resulting in shorter review periods, but this is the first time we've experienced it directly. 
Last night, we submitted a major update of our addictive game Pig Rush to Apple for review. At 7:17 PM we received the standard notice that it was Waiting for Review:


This [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.reigndesign.com/blog/wp-content/uploads/2010/02/logo.png"><img src="http://www.reigndesign.com/blog/wp-content/uploads/2010/02/logo.png" alt="Pig Rush" title="Pig Rush" width="188" height="187" class="size-full wp-image-1268" /></a></p>
<p>We've heard buzz about improvements to Apple's release process resulting in shorter review periods, but this is the first time we've experienced it directly. </p>
<p>Last night, we submitted a <a href="http://itunes.apple.com/us/app/pig-rush/id330072839?mt=8">major update</a> of our addictive game <a href="http://www.pigrush.com">Pig Rush</a> to Apple for review. At 7:17 PM we received the standard notice that it was Waiting for Review:<br />
<span id="more-1264"></span></p>
<p><a href="http://www.reigndesign.com/blog/wp-content/uploads/2010/02/waiting.png"><img src="http://www.reigndesign.com/blog/wp-content/uploads/2010/02/waiting.png" alt="Waiting for Review..." title="Waiting for Review..." width="579" height="226" class="size-full wp-image-1265" /></a></p>
<p>This morning, we received an email at 7:56 AM that the app was already approved and ready for sale:</p>
<p><a href="http://www.reigndesign.com/blog/wp-content/uploads/2010/02/approved.png"><img src="http://www.reigndesign.com/blog/wp-content/uploads/2010/02/approved.png" alt="Approved!" title="Approved!" width="589" height="282" class="size-full wp-image-1266" /></a></p>
<p>In disbelief, we checked iTunes Connect and the App Store to confirm. Sure enough, Pig Rush 1.2 is out, a mere 12.5 hours from the time of submission. I can't think of any reason why it was approved so quickly, considering that recent minor updates to <a href="http://www.reigndesign.com/apps">our other apps</a> took over a week. That said, hopefully this will become the norm!</p>
<p>Pig Rush 1.2 is available on the iTunes App Store: <a href="http://itunes.apple.com/us/app/pig-rush/id330072839?mt=8">iTunes App Store link</a> ($0.99)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.reigndesign.com/blog/pig-rush-1-2-released-and-approved-by-apple-in-12-5-hours/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bible Promises 1.6: New sharing features, user suggested categories, and many new verses</title>
		<link>http://www.reigndesign.com/blog/bible-promises-1-6-new-sharing-features-user-suggested-categories-and-many-new-verses/</link>
		<comments>http://www.reigndesign.com/blog/bible-promises-1-6-new-sharing-features-user-suggested-categories-and-many-new-verses/#comments</comments>
		<pubDate>Fri, 29 Jan 2010 04:51:19 +0000</pubDate>
		<dc:creator>Stephen Ceresia</dc:creator>
				<category><![CDATA[Apps]]></category>
		<category><![CDATA[biblepromises]]></category>

		<guid isPermaLink="false">http://www.reigndesign.com/blog/?p=1243</guid>
		<description><![CDATA[
The top Bible reference guide on the iTunes App Store keeps getting better. Bible Promises version 1.6 has just been released, and is available as a free download to all existing Bible Promises users.
Since the original 1.0 launch, users have been asking us for more ways to share promises with their friends and family members, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.reigndesign.com/blog/wp-content/uploads/2010/01/logo_minbp.png"><img class="alignleft size-full wp-image-1245" title="logo_minbp" src="http://www.reigndesign.com/blog/wp-content/uploads/2010/01/logo_minbp.png" alt="" width="57" height="57" /></a></p>
<p>The top Bible reference guide on the iTunes App Store keeps getting better. Bible Promises version 1.6 has just been released, and is available as a free download to all existing Bible Promises users.</p>
<p>Since the original 1.0 launch, users have been asking us for more ways to share promises with their friends and family members, and we've been listening. For version 1.6, we've implemented a new Sharing page which easily allows users to send promises to their loved ones via email and SMS, through Facebook Connect, or to copy a verse to the clipboard to paste in a note or other application.</p>
<p><span id="more-1243"></span></p>
<p style="text-align: center;"><a href="http://www.reigndesign.com/blog/wp-content/uploads/2010/01/2-1_6.png"><img class="size-full wp-image-1246 aligncenter" title="New Sharing features in Bible Promises 1.6" src="http://www.reigndesign.com/blog/wp-content/uploads/2010/01/2-1_6.png" alt="" width="320" height="480" /></a></p>
<p>In addition to the Sharing features, we've added two more categories (Protection, and Stress and Anxiety) and over 40 new verses most requested by users including:</p>
<blockquote><p><strong>Matthew 7:12 (Suggested by Michael B.)<br />
</strong>So in everything, do to others what you would have them do to you, for this sums up the Law and the Prophets.</p>
<p><strong>Corinthians 13:4-8 (Suggested by Paula W.)<br />
</strong>Love is patient and kind; love does not envy or boast; it is not arrogant or rude. It does not insist on its own way; it is not irritable or resentful; it does not rejoice at wrongdoing, but rejoices with the truth.  Love bears all things, believes all things, hopes all things, endures all things. Love never ends. As for prophecies, they will pass away; as for tongues, they will cease; as for knowledge, it will pass away.</p>
<p><strong>John 1:9 (Suggested by Alex J. and Piers F.)<br />
</strong>If we confess our sins, he is faithful and just to forgive us our sins and to cleanse us from all unrighteousness.</p></blockquote>
<p><a href="http://biblepromises.reigndesign.com/download/iphone?s=blog">Download Bible Promises</a> now on the iTunes App Store.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.reigndesign.com/blog/bible-promises-1-6-new-sharing-features-user-suggested-categories-and-many-new-verses/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pig Rush on iPad</title>
		<link>http://www.reigndesign.com/blog/pig-rush-on-ipad/</link>
		<comments>http://www.reigndesign.com/blog/pig-rush-on-ipad/#comments</comments>
		<pubDate>Wed, 27 Jan 2010 19:07:46 +0000</pubDate>
		<dc:creator>Matt Mayer</dc:creator>
				<category><![CDATA[Fun]]></category>
		<category><![CDATA[iphone ipad pigrush]]></category>

		<guid isPermaLink="false">http://www.reigndesign.com/blog/?p=1241</guid>
		<description><![CDATA[It was great to see Steve Jobs demoing Pig Rush on the new iPad at the launch event  

]]></description>
			<content:encoded><![CDATA[<p>It was great to see Steve Jobs demoing <a href="http://pigrush.reigndesign.com/">Pig Rush</a> on the new iPad at the launch event <img src='http://www.reigndesign.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><img src="http://www.reigndesign.com/blog/wp-content/uploads/2010/01/pig-rush-ipad.jpg" alt="" title="pig-rush-ipad" width="640" height="425" class="aligncenter size-full wp-image-1240" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.reigndesign.com/blog/pig-rush-on-ipad/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>PigRush Video Review!</title>
		<link>http://www.reigndesign.com/blog/pigrush-video-review/</link>
		<comments>http://www.reigndesign.com/blog/pigrush-video-review/#comments</comments>
		<pubDate>Mon, 04 Jan 2010 11:22:55 +0000</pubDate>
		<dc:creator>Anna Grueter</dc:creator>
				<category><![CDATA[Apps]]></category>
		<category><![CDATA[Fun]]></category>
		<category><![CDATA[iphone pigrush]]></category>

		<guid isPermaLink="false">http://www.reigndesign.com/blog/?p=1222</guid>
		<description><![CDATA[
We are proud to say that we got a awesome review on our iPhone game pigrush on Aol Video and YouTube by iPawdKid!
It's quite detailed and has instructions on how to play. If you haven't played PigRush here you can see how the game actually works and looks like.
Many thanks to the reviewer, and we [...]]]></description>
			<content:encoded><![CDATA[<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/3nVGx_pAnEA&amp;hl=en_US&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/3nVGx_pAnEA&amp;hl=en_US&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>We are proud to say that we got a awesome review on our iPhone game pigrush on Aol Video and YouTube by <a href="http://www.youtube.com/user/iPawdKid">iPawdKid</a>!</p>
<p>It's quite detailed and has instructions on how to play. If you haven't played PigRush here you can see how the game actually works and looks like.</p>
<p>Many thanks to the reviewer, and we promise to bring many exciting updates to PigRush in 2010! Did you know there is a secret way to play pigrush with a reigndeer christmas mode? You just shake your iphone when you are in the menu - screen until you hear the bells ring.... Try it out and see what happens!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.reigndesign.com/blog/pigrush-video-review/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>From Arduino to apps: our most popular blog articles of 2009</title>
		<link>http://www.reigndesign.com/blog/from-arduino-to-apps-our-most-popular-blog-articles-of-2009/</link>
		<comments>http://www.reigndesign.com/blog/from-arduino-to-apps-our-most-popular-blog-articles-of-2009/#comments</comments>
		<pubDate>Tue, 29 Dec 2009 10:18:37 +0000</pubDate>
		<dc:creator>Matt Mayer</dc:creator>
				<category><![CDATA[Apps]]></category>
		<category><![CDATA[Fun]]></category>
		<category><![CDATA[Lists]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.reigndesign.com/blog/?p=1212</guid>
		<description><![CDATA[As the end of the year approaches, we though we'd highlight the most popular articles on our blog from 2009. It's clear you enjoyed our "how-to" style articles, so we'll definitely have more in 2010!
1. Using your own SQLite database in Android applications Fluxa explained how to get SQLite working on Android.
2. Liven up your [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.reigndesign.com/blog/wp-content/uploads/2009/12/lgo_TopTen-300x299.jpg" alt="lgo_TopTen" title="lgo_TopTen" width="300" height="299" class="alignleft size-medium wp-image-1219" />As the end of the year approaches, we though we'd highlight the most popular articles on our blog from 2009. It's clear you enjoyed our "how-to" style articles, so we'll definitely have more in 2010!</p>
<p>1. <a href="http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/">Using your own SQLite database in Android applications</a> Fluxa explained how to get SQLite working on Android.</p>
<p>2. <a href="http://www.reigndesign.com/blog/liven-up-your-boring-uitableview-part-1/">Liven up your boring UITableView: part 1</a> Matt gave a basic introduction to styling Table Views for the iPhone platform</p>
<p>3. <a href="http://www.reigndesign.com/blog/from-bytes-to-beats-digital-to-analog-conversion-using-as3-arduino/">From bytes to beats, Digital to Analog Conversion using AS3-Arduino</a> Fluxa built a digital to analog converter with Arduino</p>
<p>4. <a href="http://www.reigndesign.com/blog/app-store-update-what-does-it-mean-for-your-app/">App Store update: what does it mean for your app?</a> Steve analyzed the latest changes on the iTunes App Store</p>
<p>5. <a href="http://www.reigndesign.com/blog/how-to-update-your-iphone-app-for-christmas/">Updating your iPhone app for Christmas</a> Steve explained how we updated our apps for Christmas</p>
<p>6. <a href="http://www.reigndesign.com/blog/google-appengine-vs-amazon-ec2/">Google AppEngine vs Amazon EC2</a> Todd compared two cloud computing platforms</p>
<p>7. <a href="http://www.reigndesign.com/blog/design-an-iphone-app-in-15-minutes-then-build-and-publish-it-in-a-day/">Design an iPhone app in 15 minutes… then build and publish it in a day!</a> Matt explained how we made 'Save Me!' in a day</p>
<p>8. <a href="http://www.reigndesign.com/blog/highlight-your-sites-hot-content-with-the-google-analytics-api/">Highlight your site’s hot content with the Google Analytics API</a> Matt's tutorial on creating a "what's hot" section on your site</p>
<p>9. <a href="http://www.reigndesign.com/blog/make-your-blog-weather-interactive-in-6-easy-steps/">Make your blog weather-interactive in 6 easy steps</a> Anna explains how to skin Wordpress depending on current weather conditions</p>
<p>10. <a href="http://www.reigndesign.com/blog/building-faster-websites-by-reducing-http-requests-three-techniques/">Building faster websites by reducing HTTP requests: three techniques</a> Matt on how to build a speedy website</p>
]]></content:encoded>
			<wfw:commentRss>http://www.reigndesign.com/blog/from-arduino-to-apps-our-most-popular-blog-articles-of-2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>App Store update: what does it mean for your app?</title>
		<link>http://www.reigndesign.com/blog/app-store-update-what-does-it-mean-for-your-app/</link>
		<comments>http://www.reigndesign.com/blog/app-store-update-what-does-it-mean-for-your-app/#comments</comments>
		<pubDate>Tue, 15 Dec 2009 14:12:27 +0000</pubDate>
		<dc:creator>Stephen Ceresia</dc:creator>
				<category><![CDATA[Apps]]></category>
		<category><![CDATA[Work methods]]></category>
		<category><![CDATA[app store]]></category>
		<category><![CDATA[iphone]]></category>

		<guid isPermaLink="false">http://www.reigndesign.com/blog/?p=1133</guid>
		<description><![CDATA[
Over the weekend, Apple quietly made a major design update to the App Store.  On the surface, these changes seem purely aesthetic.  
Users will notice that app pages now focus on the visuals, and a cleaner white background makes everything easier to read.  The content that's important to most users - images, [...]]]></description>
			<content:encoded><![CDATA[<p><img class="size-full wp-image-1207" style="float:left;padding:10px;" title="App Store" src="http://www.reigndesign.com/blog/wp-content/uploads/2009/12/AppStoreicon.png" alt="App Store" width="200" height="198" /></p>
<p>Over the weekend, Apple quietly made a major design update to the App Store.  On the surface, these changes seem purely aesthetic.  </p>
<p>Users will notice that app pages now focus on the visuals, and a cleaner white background makes everything easier to read.  The content that's important to most users - images, ratings, and company links - are now much more prominent. </p>
<p>If you're a developer selling your app through the App Store however, these changes will have a significant impact on how you present and market your app.</p>
<p>So, what's changed and what should you consider doing about it?</p>
<p><span id="more-1133"></span></p>
<p style="text-align: left;"><span style="font-size: medium;"><strong>Description</strong></span></p>
<p style="text-align: center;"><a href="http://pigrush.reigndesign.com/"><img class="size-full wp-image-1154 aligncenter" title="Description" src="http://www.reigndesign.com/blog/wp-content/uploads/2009/12/description.png" alt="Description" width="400" height="201" /></a></p>
<p>Gone is the long column on the right side of the store that enabled you to write a novel about how great your app was, and be certain everyone viewing your app page would see it.  Instead, the description has been truncated to the first two or three lines of text with a "...More" link.</p>
<p>The good news is that you can still include the same content you could before; the bad news is that users that don't click that "...More" link will not see any of it except for your first few sentences.  Now more than ever, it's vital to have a slogan, tagline, or quick description that both summarizes your app and attracts a user's attention in only a few words.</p>
<p>In other words, if your app description in the updated App Store now reads:</p>
<p><em>*** #43 in Games/Action in Croatia!!! ***</em><br />
<em>"lol this is teh best game" --gamemaniac94@aol.com</em><br />
<em>Once upon a time, in a far, far away land, there lived a…<br />
<strong>…More</strong></em></p>
<p>... you may want to consider a revision.</p>
<p><span style="font-size: medium;"><strong>Website and Support links</strong></span></p>
<p>Immediately following your truncated description, users will see links to your website and support page.  Therefore, it's pretty safe to assume that you'll be getting a lot more direct traffic from the App Store than ever before.  Now that you'll be getting a lot more hits, it may be a good time to update your website.</p>
<p>In the pre-update App Store, a detailed description could have ended up being a reasonable substitute for having a site or blog for your app; at least you'd be certain everyone would see it.  Now, since many users may not see that description and will instead be looking to your website for more info, you should make it as polished and easy to navigate as possible.</p>
<p>Additionally, you may want to consider taking advantage of the dedicated "Support" link to provide users with access to help files, tips, FAQs, contact information, etc. about your app.</p>
<p><span style="font-size: medium;"><strong>What's New</strong></span></p>
<p style="text-align: center;"><a href="http://spotthedifference.reigndesign.com/"><img class="size-full wp-image-1155 aligncenter" title="What's New" src="http://www.reigndesign.com/blog/wp-content/uploads/2009/12/whatsnew.png" alt="What's New" width="475" height="260" /></a></p>
<p>No longer at the bottom of the Description column, "What's new" is displayed immediately after the Description and website/support links.  As with the Description section, you only have a few lines of text visible by default, so make them count.  Depending on your app, it may be a good idea to display new features first followed by 'boring' things like bug fixes later.</p>
<p><span style="font-size: medium;"><strong>Screenshots</strong></span></p>
<p style="text-align: center;"><a href="http://spotthedifference.reigndesign.com/"><img class="size-full wp-image-1144 aligncenter" title="Screenshots" src="http://www.reigndesign.com/blog/wp-content/uploads/2009/12/screenshots.png" alt="Screenshots" width="500" height="273" /></a></p>
<p>The screenshots section has been revamped, and is now presented in the form of a horizontal slideshow instead of the one at a time view presented before.  This may not seem to make much of a difference, but now users will see several of your images simultaneously, so you may want to rethink which images you're using and the order in which they are displayed.</p>
<p>Since the images are in the form of a slideshow, showing film reel or animation like progression with your screenshots may be an interesting way to present your app.</p>
<p><span style="font-size: medium;"><strong>Customer Reviews</strong></span></p>
<p style="text-align: center;"><a href="http://biblepromises.reigndesign.com/"><img class="size-full wp-image-1156 aligncenter" title="Customer Reviews" src="http://www.reigndesign.com/blog/wp-content/uploads/2009/12/customerreviews.png" alt="Customer Reviews" width="507" height="291" /></a></p>
<p>By default, only Customer Reviews for the "Current Version" of your app are displayed; users must click the "All versions" button to see all of the reviews users have left.</p>
<p>If you haven't updated your app in a while, this shouldn't affect you… yet.  If you have or plan to however, expect the number of your displayed reviews to be very low or non-existent until users get a chance to use your updated version and write an app review for it.</p>
<p>On the one hand, this provides relevant reviews to App Store users.  No longer will you see reviews from version 1.0 of your app complaining about the lack of a feature that was included months ago.  On the other hand, it discourages frequent updates.  When the penalty for releasing a minor update for your app is resetting your displayed review count, many developers may wait to release a much needed or requested update, or just update as infrequently as possible.  Some developers may also take to spamming their userbase to resubmit reviews so that they are displayed on the front page.</p>
<p><span style="font-size: medium;"><strong>More by...</strong></span></p>
<p style="text-align: center;"><a href="http://spotthedifference.reigndesign.com/"><img class="size-full wp-image-1146 aligncenter" title="More by.." src="http://www.reigndesign.com/blog/wp-content/uploads/2009/12/more.png" alt="More by.." width="180" height="379" /></a></p>
<p>In the left frame, users will now see links to the other applications you have available in the App Store.  While for most this may be a great addition, you may also want to consider any unwanted cross-promotion that may occur as a result.</p>
<p>For example, customers of our "Bible Promises" application may not be interested in our game "Pig Rush".  In the new layout you can't control what is displayed, so users could potentially see any of your other apps.</p>
<p><span style="font-size: medium;"><strong>App icon</strong></span></p>
<p style="text-align: center;"><a href="http://pigrush.reigndesign.com/"><img class="size-full wp-image-1147 aligncenter" title="App icon" src="http://www.reigndesign.com/blog/wp-content/uploads/2009/12/icon.png" alt="App icon" width="274" height="329" /></a></p>
<p>Your icon is now displayed prominently in the top-left hand corner as a beefy 180x180 image.  It goes without saying that your app icon is important, but now even more so.  Your app icon is often the first introduction many users will have to your app, it's what users will come to associate your app with, and for many it will be the deciding factor in whether they explore your app any further.  That said, you may want to consider revising or polishing your app icon since it's now getting center stage.</p>
<p><span style="font-size: medium;"><strong>Customers Also Bought</strong></span></p>
<p style="text-align: center;"><a href="http://www.reigndesign.com/apps"><img class="size-full wp-image-1149 aligncenter" title="Customers Also Bought" src="http://www.reigndesign.com/blog/wp-content/uploads/2009/12/alsobought.png" alt="Customers Also Bought" width="518" height="221" /></a></p>
<p>A new scroll box at the bottom displays icons and links to other apps that your users have also purchased.  Due to the nature of the App Store, it can be difficult to compile any sort of metrics about your userbase, so this is an interesting addition.  How accurate or relevant it is remains to be seen, but it can provide you with some valuable information about what customers of some of your apps are interested in.</p>
<p>Last week's update was the biggest design update that the App Store has seen since its launch last year. Overall, I think the changes implemented do make for a better user experience and, ultimately, this is what matters most.  Unfortunately, for app developers, Apple isn't exactly transparent when it comes to things like this.  In the future, it would be nice if they would provide a bit of warning or a heads up to the developer community before making such significant changes.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.reigndesign.com/blog/app-store-update-what-does-it-mean-for-your-app/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Converting Flash Animations to &lt;Canvas /&gt;</title>
		<link>http://www.reigndesign.com/blog/converting-flash-animations-to-canvas/</link>
		<comments>http://www.reigndesign.com/blog/converting-flash-animations-to-canvas/#comments</comments>
		<pubDate>Sun, 13 Dec 2009 20:32:15 +0000</pubDate>
		<dc:creator>Todd Cullen</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.reigndesign.com/blog/?p=1105</guid>
		<description><![CDATA[
In preparation for a talk I was going to give at the last Shanghai Barcamp, I converted a Flash animation class by Grant Skinner to the HTML5 &#60;canvas /&#62; tag. Sadly, I didn't have time to finish the demo before the event so I've decided to post it here with a breakdown on the conversion [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.reigndesign.com/blog/wp-content/uploads/2009/12/wander-as3-300x257.PNG" alt="wander-as3" title="wander-as3" width="300" height="257" style="float:left;padding:10px;" /></p>
<p>In preparation for a talk I was going to give at the last Shanghai Barcamp, I converted a Flash animation class by <a href="http://www.gskinner.com">Grant Skinner</a> to the HTML5 &lt;canvas /&gt; tag. Sadly, I didn't have time to finish the demo before the event so I've decided to post it here with a breakdown on the conversion process from Flash -&gt; web standards.</p>
<p><span id="more-1105"></span></p>
<p>To start off, take a peek at the Flash <a href="http://www.gskinner.com/blog/archives/2009/11/wander_motion_c_1.html">reference</a>. The animation has a "target" DisplayObject (shown in red) that animates across the stage with x number of chasing DisplayObjects.</p>
<p>The AS3 Wander class acts as a decorator on a DisplayObject so it doesn't directly contain any drawing logic, only mathematical calculations. This allows the conversion from a Class based language to a prototype based language to be pretty straight forward. Here's a simple example of the conversion process.</p>
<p>The starting AS3 Class:</p>
<pre class="actionscript">&nbsp;
<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">class</span> ExampleClass<span style="color: #66cc66;">&#123;</span>
    <span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> _count:<span style="color: #0066CC;">int</span>;
    <span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> _autoUpdate:<span style="color: #0066CC;">Boolean</span>;
&nbsp;
   <span style="color: #000000; font-weight: bold;">function</span> ExampleClass<span style="color: #66cc66;">&#40;</span>count:<span style="color: #0066CC;">int</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
      _count = count;
   <span style="color: #66cc66;">&#125;</span>
&nbsp;
   <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> <span style="color: #0066CC;">set</span> autoUpdate<span style="color: #66cc66;">&#40;</span>value:<span style="color: #0066CC;">Boolean</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span><span style="color: #66cc66;">&#123;</span>
      _autoUpdate = value;
      <span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>_autoUpdate<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
          addListeners<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
      <span style="color: #66cc66;">&#125;</span><span style="color: #b1b100;">else</span><span style="color: #66cc66;">&#123;</span>
         removeListeners<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
      <span style="color: #66cc66;">&#125;</span>
   <span style="color: #66cc66;">&#125;</span>
   <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> <span style="color: #0066CC;">get</span> autoUpdate<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Boolean</span><span style="color: #66cc66;">&#123;</span>
      <span style="color: #b1b100;">return</span> _autoUpdate;
   <span style="color: #66cc66;">&#125;</span>
&nbsp;
   <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> <span style="color: #0066CC;">start</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span><span style="color: #66cc66;">&#123;</span>
      <span style="color: #808080; font-style: italic;">//do something important</span>
   <span style="color: #66cc66;">&#125;</span>
&nbsp;
   <span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> addListeners<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span><span style="color: #66cc66;">&#123;</span>
      <span style="color: #808080; font-style: italic;">//add event listeners here</span>
   <span style="color: #66cc66;">&#125;</span>
&nbsp;
   <span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> removeListeners<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span><span style="color: #66cc66;">&#123;</span>
      <span style="color: #808080; font-style: italic;">//remove event listeners</span>
   <span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #66cc66;">&#125;</span>
&nbsp;</pre>
<p>A simple conversion:</p>
<pre class="actionscript">&nbsp;
<span style="color: #000000; font-weight: bold;">var</span> ExampleClass = <span style="color: #000000; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span>count<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
<span style="color: #808080; font-style: italic;">//initial function pass is essentially the constructor</span>
<span style="color: #808080; font-style: italic;">//note the argument is the same as in the AS3 Class</span>
&nbsp;
   <span style="color: #808080; font-style: italic;">//initialize private variables</span>
  <span style="color: #808080; font-style: italic;">//remove all the AS3 types</span>
   <span style="color: #000000; font-weight: bold;">var</span> _count = count,
   _autoUpdate = <span style="color: #000000; font-weight: bold;">true</span>;
&nbsp;
   <span style="color: #808080; font-style: italic;">//private functions</span>
   <span style="color: #000000; font-weight: bold;">var</span> addListeners = <span style="color: #000000; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
      <span style="color: #808080; font-style: italic;">//add event listeners here</span>
   <span style="color: #66cc66;">&#125;</span>;
   <span style="color: #000000; font-weight: bold;">var</span> removeListeners = <span style="color: #000000; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
      <span style="color: #808080; font-style: italic;">//remove event listeners</span>
   <span style="color: #66cc66;">&#125;</span>;
&nbsp;
   <span style="color: #0066CC;">this</span>.<span style="color: #006600;">setAutoUpdate</span> = <span style="color: #000000; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span>value<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
      _autoUpdate = value;
      <span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>_autoUpdate<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
          addListeners<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
      <span style="color: #66cc66;">&#125;</span><span style="color: #b1b100;">else</span><span style="color: #66cc66;">&#123;</span>
         removeListeners<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
      <span style="color: #66cc66;">&#125;</span>
   <span style="color: #66cc66;">&#125;</span>;
   <span style="color: #0066CC;">this</span>.<span style="color: #006600;">getAutoUpdate</span> = <span style="color: #000000; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
      <span style="color: #b1b100;">return</span> _autoUpdate;
   <span style="color: #66cc66;">&#125;</span>
   <span style="color: #0066CC;">this</span>.<span style="color: #0066CC;">start</span> = <span style="color: #000000; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
      <span style="color: #808080; font-style: italic;">//do something important</span>
      <span style="color: #808080; font-style: italic;">//has access to all private/public variables/functions</span>
   <span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span>;
&nbsp;</pre>
<p>For the full conversion, see the library source file below. </p>
<p>After converting the class into javascript, I then had to come to grips with a couple of the core differences between Flash and the &lt;canvas&gt; element. Here's a quick list of the hurdles I had to get around:</p>
<ol>
<li><strong>Flash executes code on a frame-based system.</strong> Grant Skinner's Wander class used the "enterFrame" event dispatched at the lowest level in the Flash player to update the x, y, and rotation of the particular DisplayObject. To mimic the "enterFrame" event, I created a FrameCounter object that could queue functions to execute on a set interval (via setInterval).</li>
<li><strong>The Wander Class is tightly coupled to the DisplayObject interface in Flash.</strong> It expected all DisplayObjects to have three properties: x, y, and rotation. Since there is no concept of a DisplayObject in the canvas API, I created a javascript object with the same interface as the Flash DisplayObject. It is the javascript DisplayObject that is also responsible for actual draw calls to the canvas.</li>
<li><strong>In the canvas drawing API there is no concept of separate drawing layers for DisplayObjects.</strong> The javascript version of the DisplayObject class can't be used to handle clearing graphics since it could clear a section of the canvas with another DisplayObjects graphics on it. In the demo, I haven't actually solved this issue. I've delegated the clearing of graphics to the FrameCounter object, which is admittedly a hack. One potential solution is to use separate canvas elements for each DisplayObject but that seems like a unduly large amount of DOM manipulation for this type of animation, not to mention the potential for massive performance issues. Something I'll look into tackling in a latter experiment.</li>
</ol>
<p><img src="http://www.reigndesign.com/blog/wp-content/uploads/2009/12/wander-js-300x271.PNG" alt="wander-js" title="wander-js" width="300" height="271" class="alignleft size-medium wp-image-1130" /></p>
<p>Okay, okay, enough talk...here's the <a href="http://reigndesign.com/downloads/canvas/">demo</a>.<br />
Add the javascript library <a href="http://reigndesign.com/downloads/canvas/wander.js">file</a>.</p>
<p>Cheers,<br />
Todd</p>
<p>PS - Hats off to GSkinner on the initial implementation in Flash.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.reigndesign.com/blog/converting-flash-animations-to-canvas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Make your blog weather-interactive in 6 easy steps</title>
		<link>http://www.reigndesign.com/blog/make-your-blog-weather-interactive-in-6-easy-steps/</link>
		<comments>http://www.reigndesign.com/blog/make-your-blog-weather-interactive-in-6-easy-steps/#comments</comments>
		<pubDate>Fri, 11 Dec 2009 04:52:43 +0000</pubDate>
		<dc:creator>Anna Grueter</dc:creator>
				<category><![CDATA[Fun]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.reigndesign.com/blog/?p=1072</guid>
		<description><![CDATA[Follow these steps to have your wordpress-blog's design change according to the users local daytime and weather.
The first step explains how to modify the default wordpress theme. If you don't have a wordpress blog, or use a different theme, skip to step 2!

1. Access your wordpress-blog theme
First we will make a copy of the default [...]]]></description>
			<content:encoded><![CDATA[<p>Follow these steps to have your wordpress-blog's design change according to the users local daytime and weather.</p>
<p>The first step explains how to modify the default wordpress theme. If you don't have a wordpress blog, or use a different theme, skip to step 2!</p>
<p><img src="http://www.reigndesign.com/blog/files/version2.jpg" alt="" /></p>
<p><strong>1. Access your wordpress-blog theme</strong></p>
<p>First we will make a copy of the default theme to create your own theme, so that your changes wont be overwritten with the next wordpress- update:</p>
<p>On your server where your blog is located go into the folder "wp-content" and copy the "default" theme and rename it into something sensible, like "weathertheme".  In your blog's admin-area on the left menu under "Appearance" activate your new theme.  Change the read-write permissions for the "weathertheme"-folder on your FTP-server as explained on the <a href="http://codex.wordpress.org/Changing_File_Permissions">wordpress-codex</a> to 777.  Now you are able to edit your theme's CSS and PHP files, best done from the editor in the admin-area under "Appearance"&gt;"Editor".<br />
<span id="more-1072"></span><br />
We will be using the Yahoo weather api to retrieve the viewers weather condition. Unfortunately Yahoo's weather api only returns it's weather info if you give them a US- zip code or a yahoo-specific code for worldwide weather stations. We will use <a href="http://ongmap.com">ongmap.com</a>'s service to get the user's closest weatherstation and then pass that to the yahoo api.</p>
<p>First, create a PHP-file and call it "weather.php".</p>
<p><strong>2. Get the viewer's IP-address</strong></p>
<p>Now add his piece of code grabs your viewer's IP-address:</p>
<pre class="php"><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$_SERVER</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'HTTP_X_FORWARD_FOR'</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
	<span style="color: #0000ff;">$ip</span> = <span style="color: #0000ff;">$_SERVER</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'HTTP_X_FORWARD_FOR'</span><span style="color: #66cc66;">&#93;</span>;
<span style="color: #66cc66;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #66cc66;">&#123;</span>
	<span style="color: #0000ff;">$ip</span> = <span style="color: #0000ff;">$_SERVER</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'REMOTE_ADDR'</span><span style="color: #66cc66;">&#93;</span>;
<span style="color: #66cc66;">&#125;</span></pre>
<p><strong>3. Get the viewer's current location (Latitude/Longitude) worldwide</strong></p>
<p>With <a href="http://ipinfodb.com/ip_location_api.php">this API</a> you can get any IP-address's location, local time and so on.</p>
<pre class="php">&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> getWeatherClass<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$ip</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
&nbsp;
	<span style="color: #808080; font-style: italic;">//get viewer's location:</span>
	<span style="color: #0000ff;">$url</span> = <span style="color: #ff0000;">&quot;http://ipinfodb.com/ip_query.php?ip=&quot;</span>.<span style="color: #0000ff;">$ip</span>;
	<span style="color: #0000ff;">$location_xml</span> = get_response<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$url</span><span style="color: #66cc66;">&#41;</span>;
	<span style="color: #0000ff;">$lat</span> = get_match<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'/&lt;Latitude&gt;(.*)&lt;/isU'</span>,<span style="color: #0000ff;">$location_xml</span><span style="color: #66cc66;">&#41;</span>;
        <span style="color: #0000ff;">$long</span> = get_match<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'/&lt;Longitude&gt;(.*)&lt;/isU'</span>,<span style="color: #0000ff;">$location_xml</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;</pre>
<p>With a function called get_response we will get the xml response containing the users location based on their IP-address:</p>
<pre class="php"><span style="color: #000000; font-weight: bold;">function</span> get_response<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$url</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
&nbsp;
	<span style="color: #0000ff;">$request</span> = <span style="color: #0000ff;">$url</span>;
        <span style="color: #0000ff;">$postargs</span> = <span style="color: #ff0000;">'u='</span>.<a href="http://www.php.net/urlencode"><span style="color: #000066;">urlencode</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'c'</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #ff0000;">'&amp;amp;p='</span>.<a href="http://www.php.net/urlencode"><span style="color: #000066;">urlencode</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'GMXX6091'</span><span style="color: #66cc66;">&#41;</span>;
    	<span style="color: #0000ff;">$ch</span> = curl_init<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$request</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
        curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$ch</span>, CURLOPT_VERBOSE, <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>;
        curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$ch</span>, CURLOPT_NOBODY, <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span>;
        curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$ch</span>, CURLOPT_HEADER, <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span>;
        curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$ch</span>, CURLOPT_USERAGENT, <span style="color: #ff0000;">''</span><span style="color: #66cc66;">&#41;</span>;
        curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$ch</span>, CURLOPT_RETURNTRANSFER, <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
        <span style="color: #0000ff;">$response</span> = curl_exec<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$ch</span><span style="color: #66cc66;">&#41;</span>;
        <span style="color: #0000ff;">$responseInfo</span> = curl_getinfo<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$ch</span><span style="color: #66cc66;">&#41;</span>;
        curl_close<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$ch</span><span style="color: #66cc66;">&#41;</span>;
        <span style="color: #b1b100;">return</span> <span style="color: #0000ff;">$response</span>;
<span style="color: #66cc66;">&#125;</span></pre>
<p>With a little regex function we will extract the latitude and longitude from the location-xml:</p>
<pre class="php"> <span style="color: #000000; font-weight: bold;">function</span> get_match<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$regex</span>,<span style="color: #0000ff;">$content</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
		<a href="http://www.php.net/preg_match"><span style="color: #000066;">preg_match</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$regex</span>,<span style="color: #0000ff;">$content</span>,<span style="color: #0000ff;">$matches</span><span style="color: #66cc66;">&#41;</span>;
		<span style="color: #b1b100;">return</span> <span style="color: #0000ff;">$matches</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#93;</span>;
<span style="color: #66cc66;">&#125;</span></pre>
<p><strong>4. Retrieve the yahoo-weather-API URL of the viewer's closest weather-station</strong></p>
<p>Having the location, we need to get the weather condition of the user's nearest weather-station. To do that we are using ongmap.com's api:</p>
<pre>'http://ongmap.com/api/?v=1.0&amp;data=weather&amp;lat='.$lat.'&amp;lng='.$long.'&amp;num=1';</pre>
<p>If we pass the latitude and longitude, it will return us a yahoo-weather-api URL containing a ID of a weatherstation. "num=1" means that we only want one weather-station to be returned, the closest one found.</p>
<p>Having the Yahoo- URL we can finally also add the code to get yahoo-API's xml with the weather-condition.Again we use regular expressions to extract the weather code, which stands for one of yahoo's 47 weather conditions.</p>
<p>To do all that, extend your getWeatherClass - function, so that it looks like this:</p>
<pre class="php">&nbsp;
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> getWeatherClass<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$ip</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
&nbsp;
	<span style="color: #808080; font-style: italic;">//get viewer's location:</span>
	<span style="color: #0000ff;">$url</span> = <span style="color: #ff0000;">&quot;http://ipinfodb.com/ip_query.php?ip=&quot;</span>.<span style="color: #0000ff;">$ip</span>;
	<span style="color: #0000ff;">$location_xml</span> = get_response<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$url</span><span style="color: #66cc66;">&#41;</span>;
	<span style="color: #0000ff;">$lat</span> = get_match<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'/&lt;Latitude&gt;(.*)&lt;/isU'</span>,<span style="color: #0000ff;">$location_xml</span><span style="color: #66cc66;">&#41;</span>;
        <span style="color: #0000ff;">$long</span> = get_match<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'/&lt;Longitude&gt;(.*)&lt;/isU'</span>,<span style="color: #0000ff;">$location_xml</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
	<span style="color: #808080; font-style: italic;">//get the url for the yahoo weather api</span>
	<span style="color: #0000ff;">$api_url</span> = <span style="color: #ff0000;">'http://ongmap.com/api/?v=1.0&amp;data=weather&amp;lat='</span>.<span style="color: #0000ff;">$lat</span>.<span style="color: #ff0000;">'&amp;lng='</span>.<span style="color: #0000ff;">$long</span>.<span style="color: #ff0000;">'&amp;num=1'</span>;
        <span style="color: #0000ff;">$response</span> = get_response<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$api_url</span><span style="color: #66cc66;">&#41;</span>;
        <span style="color: #0000ff;">$yahoo_url</span> =  get_match<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'/&lt;Link&gt;(.*)&lt;/isU'</span>,<span style="color: #0000ff;">$response</span><span style="color: #66cc66;">&#41;</span>;
        <span style="color: #0000ff;">$yahoo_url</span> = <a href="http://www.php.net/str_replace"><span style="color: #000066;">str_replace</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;&amp;amp;&quot;</span>,<span style="color: #ff0000;">&quot;&amp;&quot;</span>,<span style="color: #0000ff;">$yahoo_url</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
	<span style="color: #808080; font-style: italic;">//get the local weather with yahoo's api</span>
	<span style="color: #0000ff;">$yahoo_response</span> = get_response<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$yahoo_url</span><span style="color: #66cc66;">&#41;</span>;
	<span style="color: #0000ff;">$weather_code</span> = get_match<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'/  code=&quot;(.*)&quot;/isU'</span>,<span style="color: #0000ff;">$yahoo_response</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
	<span style="color: #b1b100;">return</span> getWeatherCSS<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$weather_code</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #66cc66;">&#125;</span></pre>
<p>To finish the script we need to save the return value of the function getWeatherClass in a variable called $weather_class and pass the user's  $ip:</p>
<pre class="php"><span style="color: #0000ff;">$weather_class</span> = getWeatherClass<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$ip</span><span style="color: #66cc66;">&#41;</span>;</pre>
<p><strong>5. Process the weather code<br />
</strong></p>
<p>Yahoo's weather api has 47 different weather conditions. Here, we only want to visually adjust the blog's theme to the current weather and not build a weather-station itself. Therefore I grouped similar weather-states into arrays.</p>
<pre class="php"><span style="color: #000000; font-weight: bold;">function</span> getWeatherCSS<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$code</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
	<span style="color: #0000ff;">$storm</span> 			= <a href="http://www.php.net/array"><span style="color: #000066;">array</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">1</span>,<span style="color: #cc66cc;">2</span>,<span style="color: #cc66cc;">3</span>,<span style="color: #cc66cc;">4</span>,<span style="color: #cc66cc;">17</span>,<span style="color: #cc66cc;">35</span>,<span style="color: #cc66cc;">37</span>,<span style="color: #cc66cc;">38</span>,<span style="color: #cc66cc;">39</span>,<span style="color: #cc66cc;">40</span>,<span style="color: #cc66cc;">45</span>,<span style="color: #cc66cc;">47</span><span style="color: #66cc66;">&#41;</span>;
	<span style="color: #0000ff;">$snow</span> 			= <a href="http://www.php.net/array"><span style="color: #000066;">array</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">13</span>,<span style="color: #cc66cc;">14</span>,<span style="color: #cc66cc;">15</span>,<span style="color: #cc66cc;">16</span>,<span style="color: #cc66cc;">18</span>,<span style="color: #cc66cc;">25</span>,<span style="color: #cc66cc;">41</span>,<span style="color: #cc66cc;">42</span>,<span style="color: #cc66cc;">46</span><span style="color: #66cc66;">&#41;</span>;
	<span style="color: #0000ff;">$fog</span> 			= <a href="http://www.php.net/array"><span style="color: #000066;">array</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">19</span>,<span style="color: #cc66cc;">20</span>,<span style="color: #cc66cc;">21</span>,<span style="color: #cc66cc;">22</span><span style="color: #66cc66;">&#41;</span>;
	<span style="color: #0000ff;">$windy</span> 			= <a href="http://www.php.net/array"><span style="color: #000066;">array</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">23</span>,<span style="color: #cc66cc;">24</span><span style="color: #66cc66;">&#41;</span>;
	<span style="color: #0000ff;">$rain</span> 			= <a href="http://www.php.net/array"><span style="color: #000066;">array</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">5</span>,<span style="color: #cc66cc;">6</span>,<span style="color: #cc66cc;">7</span>,<span style="color: #cc66cc;">8</span>,<span style="color: #cc66cc;">9</span>,<span style="color: #cc66cc;">10</span>,<span style="color: #cc66cc;">11</span>,<span style="color: #cc66cc;">12</span><span style="color: #66cc66;">&#41;</span>;
	<span style="color: #0000ff;">$cloudy</span> 		= <a href="http://www.php.net/array"><span style="color: #000066;">array</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">26</span>,<span style="color: #cc66cc;">28</span><span style="color: #66cc66;">&#41;</span>;
	<span style="color: #0000ff;">$night</span> 			= <a href="http://www.php.net/array"><span style="color: #000066;">array</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">29</span>,<span style="color: #cc66cc;">27</span>,<span style="color: #cc66cc;">31</span>,<span style="color: #cc66cc;">33</span><span style="color: #66cc66;">&#41;</span>;
	<span style="color: #0000ff;">$partlycloudy</span> 		= <a href="http://www.php.net/array"><span style="color: #000066;">array</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">30</span>,<span style="color: #cc66cc;">44</span><span style="color: #66cc66;">&#41;</span>;
	<span style="color: #0000ff;">$clear</span> 			= <a href="http://www.php.net/array"><span style="color: #000066;">array</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">34</span>,<span style="color: #cc66cc;">32</span>,<span style="color: #cc66cc;">36</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
 	<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span><a href="http://www.php.net/in_array"><span style="color: #000066;">in_array</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$code</span>,<span style="color: #0000ff;">$storm</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
		<span style="color: #b1b100;">return</span> <span style="color: #ff0000;">&quot;storm&quot;</span>;
	<span style="color: #66cc66;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span><a href="http://www.php.net/in_array"><span style="color: #000066;">in_array</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$code</span>,<span style="color: #0000ff;">$snow</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
		<span style="color: #b1b100;">return</span> <span style="color: #ff0000;">&quot;snow&quot;</span>;
	<span style="color: #66cc66;">&#125;</span><span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span><a href="http://www.php.net/in_array"><span style="color: #000066;">in_array</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$code</span>,<span style="color: #0000ff;">$fog</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
		<span style="color: #b1b100;">return</span> <span style="color: #ff0000;">&quot;fog&quot;</span>;
	<span style="color: #66cc66;">&#125;</span><span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span><a href="http://www.php.net/in_array"><span style="color: #000066;">in_array</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$code</span>,<span style="color: #0000ff;">$windy</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
		<span style="color: #b1b100;">return</span> <span style="color: #ff0000;">&quot;windy&quot;</span>;
	<span style="color: #66cc66;">&#125;</span><span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span><a href="http://www.php.net/in_array"><span style="color: #000066;">in_array</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$code</span>,<span style="color: #0000ff;">$rain</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
		<span style="color: #b1b100;">return</span> <span style="color: #ff0000;">&quot;rain&quot;</span>;
	<span style="color: #66cc66;">&#125;</span><span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span><a href="http://www.php.net/in_array"><span style="color: #000066;">in_array</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$code</span>,<span style="color: #0000ff;">$cloudy</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
		<span style="color: #b1b100;">return</span> <span style="color: #ff0000;">&quot;cloudy&quot;</span>;
	<span style="color: #66cc66;">&#125;</span><span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span><a href="http://www.php.net/in_array"><span style="color: #000066;">in_array</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$code</span>,<span style="color: #0000ff;">$night</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
		<span style="color: #b1b100;">return</span> <span style="color: #ff0000;">&quot;night&quot;</span>;
	<span style="color: #66cc66;">&#125;</span><span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span><a href="http://www.php.net/in_array"><span style="color: #000066;">in_array</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$code</span>,<span style="color: #0000ff;">$partlycloudy</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
		<span style="color: #b1b100;">return</span> <span style="color: #ff0000;">&quot;partlycloudy&quot;</span>;
	<span style="color: #66cc66;">&#125;</span><span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span><a href="http://www.php.net/in_array"><span style="color: #000066;">in_array</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$code</span>,<span style="color: #0000ff;">$clear</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
		<span style="color: #b1b100;">return</span> <span style="color: #ff0000;">&quot;clear&quot;</span>;
	<span style="color: #66cc66;">&#125;</span><span style="color: #b1b100;">else</span><span style="color: #66cc66;">&#123;</span>
		<span style="color: #b1b100;">return</span> <span style="color: #ff0000;">&quot;not found&quot;</span>;
	<span style="color: #66cc66;">&#125;</span>
 <span style="color: #66cc66;">&#125;</span></pre>
<p><strong>6. Put it all together: Integrate your php script into your blog and add the visual changes</strong></p>
<p>In this tutorial I'll show you how to use this  as a scripted dynamic CSS-class to change the blog's background and header - image. Of course you can use it change any other part of your blog's design in the same manner too.</p>
<p>First upload your "weather.php" script to your server and place it under "wp-content"&gt;"themes"&gt;"{your weather theme}" . Under that path you will also find the "images" folder.  I have prepared sample images fitting to this tutorial. <a href="http://www.reigndesign.com/blog/weathertheme-images.zip">Download them here</a>. Now upload them to you server to the "images" folder</p>
<p>Back in your blog's admin area under "Appeareance"&gt;"Editor" you will find it listed among the other Template files on the right. If you find it, you can now include it into the theme.</p>
<p>Look for the "header.php" also on the right and open it. Right at the top paste this line of code to include your php file :</p>
<pre class="php"><span style="color: #000000; font-weight: bold;">&lt;?</span> <span style="color: #b1b100;">include_once</span> <span style="color: #ff0000;">&quot;weather.php&quot;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>;</pre>
<p>To change the header-Image: Scroll all the way to the bottom and find the header - div.  Change the div as shown below to add your css class:</p>
<pre class="php">&nbsp;
&lt;div <span style="color: #000000; font-weight: bold;">class</span>=<span style="color: #ff0000;">&quot;header-&lt;? echo $weather_class; ?&gt;&quot;</span>&gt;
&lt;!-- instead of:
&lt;div id=<span style="color: #ff0000;">&quot;header&quot;</span> role=<span style="color: #ff0000;">&quot;banner&quot;</span>&gt;--&gt;
&lt;/div&gt;
&nbsp;</pre>
<p>The $weather_class will return a different string depending on what weather it is. The div will therefore look for a different style -tag in the style.css file each time.</p>
<p>To change the blog's background: add this body -class in the -tag of the header.php. It will overwrite the style.css just for the background value of the body class:</p>
<pre class="php">body<span style="color: #66cc66;">&#123;</span>
 background: url<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;&lt;? bloginfo('stylesheet_directory'); ?&gt;/images/kubrickbgcolor_&lt;? echo $weather_class; ?&gt;.jpg&quot;</span><span style="color: #66cc66;">&#41;</span>;
 <span style="color: #66cc66;">&#125;</span></pre>
<p>This will directly look into the image folder on your server for the correct background image, each time the weather changes.</p>
<p>Adjustments in the style.css for displaying the correct header-image:</p>
<pre class="php">	.header-rain <span style="color: #66cc66;">&#123;</span>
		background: url<span style="color: #66cc66;">&#40;</span>images/kubrickheader_rain.jpg<span style="color: #66cc66;">&#41;</span> no-repeat bottom center;
	<span style="color: #66cc66;">&#125;</span>
	.header-snow <span style="color: #66cc66;">&#123;</span>
		background: url<span style="color: #66cc66;">&#40;</span>images/kubrickheader_snow.jpg<span style="color: #66cc66;">&#41;</span> no-repeat bottom center;
	<span style="color: #66cc66;">&#125;</span>
	.header-clear <span style="color: #66cc66;">&#123;</span>
		background: url<span style="color: #66cc66;">&#40;</span>images/kubrickheader_clear.jpg<span style="color: #66cc66;">&#41;</span> no-repeat bottom center;
	<span style="color: #66cc66;">&#125;</span>
	.header-storm <span style="color: #66cc66;">&#123;</span>
		background: url<span style="color: #66cc66;">&#40;</span>images/kubrickheader_storm.jpg<span style="color: #66cc66;">&#41;</span> no-repeat bottom center;
        <span style="color: #66cc66;">&#125;</span>
	.header-cloudy <span style="color: #66cc66;">&#123;</span>
		background: url<span style="color: #66cc66;">&#40;</span>images/kubrickheader_cloudy.jpg<span style="color: #66cc66;">&#41;</span> no-repeat bottom center;
	<span style="color: #66cc66;">&#125;</span>
	.header-partlycloudy <span style="color: #66cc66;">&#123;</span>
		background: url<span style="color: #66cc66;">&#40;</span>images/kubrickheader_partlycloudy.jpg<span style="color: #66cc66;">&#41;</span> no-repeat bottom center;
	<span style="color: #66cc66;">&#125;</span>
	.header-fog <span style="color: #66cc66;">&#123;</span>
		background: url<span style="color: #66cc66;">&#40;</span>images/kubrickheader_foggy.jpg<span style="color: #66cc66;">&#41;</span> no-repeat bottom center;
	<span style="color: #66cc66;">&#125;</span>
       .header-night <span style="color: #66cc66;">&#123;</span>
		background: url<span style="color: #66cc66;">&#40;</span>images/kubrickheader_night.jpg<span style="color: #66cc66;">&#41;</span> no-repeat bottom center;
	<span style="color: #66cc66;">&#125;</span>
	.header-windy <span style="color: #66cc66;">&#123;</span>
		background: url<span style="color: #66cc66;">&#40;</span>images/kubrickheader_windy.jpg<span style="color: #66cc66;">&#41;</span> no-repeat bottom center;
	<span style="color: #66cc66;">&#125;</span></pre>
<p>You can find all the edited files (weather.php, header.php, style.css) for download <a href="http://www.reigndesign.com/blog/weathertheme-files.zip">here</a>. and images for testing <a href="http://www.reigndesign.com/blog/weathertheme-images.zip">here</a>.<br />
To take things further: You can use the flickr-api to retrieve images fitting to yahoo's weather keywords and patch them up to make a background.</p>
<p>I am sure there are other weather API's out there that take lat/long directly, like the google api, but i found this way the most accessible and best documented. please let me know if you find any faster possibilities. This post was inspired by David's <a href="http://css-tricks.com/using-weather-data-to-change-your-websites-apperance-through-php-and-css/">article</a> for csstricks, which lets you post a static US-zipcode and see the weather of the region of that zip-code modify your blog's theme.</p>
<p>Take a look at all the weather conditions the yahoo API provides and sort them into your own groups:</p>
<table id="codetable" style="width: 80%;" border="0">
<tbody>
<tr>
<th style="width: 10%;">Code</th>
<th>Weather Condition</th>
</tr>
<tr>
<td>0</td>
<td>tornado</td>
</tr>
<tr>
<td>1</td>
<td>tropical storm</td>
</tr>
<tr>
<td>2</td>
<td>hurricane</td>
</tr>
<tr>
<td>3</td>
<td>severe thunderstorms</td>
</tr>
<tr>
<td>4</td>
<td>thunderstorms</td>
</tr>
<tr>
<td>5</td>
<td>mixed rain and snow</td>
</tr>
<tr>
<td>6</td>
<td>mixed rain and sleet</td>
</tr>
<tr>
<td>7</td>
<td>mixed snow and sleet</td>
</tr>
<tr>
<td>8</td>
<td>freezing drizzle</td>
</tr>
<tr>
<td>9</td>
<td>drizzle</td>
</tr>
<tr>
<td>10</td>
<td>freezing rain</td>
</tr>
<tr>
<td>11</td>
<td>showers</td>
</tr>
<tr>
<td>12</td>
<td>showers</td>
</tr>
<tr>
<td>13</td>
<td>snow flurries</td>
</tr>
<tr>
<td>14</td>
<td>light snow showers</td>
</tr>
<tr>
<td>15</td>
<td>blowing snow</td>
</tr>
<tr>
<td>16</td>
<td>snow</td>
</tr>
<tr>
<td>17</td>
<td>hail</td>
</tr>
<tr>
<td>18</td>
<td>sleet</td>
</tr>
<tr>
<td>19</td>
<td>dust</td>
</tr>
<tr>
<td>20</td>
<td>foggy</td>
</tr>
<tr>
<td>21</td>
<td>haze</td>
</tr>
<tr>
<td>22</td>
<td>smoky</td>
</tr>
<tr>
<td>23</td>
<td>blustery</td>
</tr>
<tr>
<td>24</td>
<td>windy</td>
</tr>
<tr>
<td>25</td>
<td>cold</td>
</tr>
<tr>
<td>26</td>
<td>cloudy</td>
</tr>
<tr>
<td>27</td>
<td>mostly cloudy (night)</td>
</tr>
<tr>
<td>28</td>
<td>mostly cloudy (day)</td>
</tr>
<tr>
<td>29</td>
<td>partly cloudy (night)</td>
</tr>
<tr>
<td>30</td>
<td>partly cloudy (day)</td>
</tr>
<tr>
<td>31</td>
<td>clear (night)</td>
</tr>
<tr>
<td>32</td>
<td>sunny</td>
</tr>
<tr>
<td>33</td>
<td>fair (night)</td>
</tr>
<tr>
<td>34</td>
<td>fair (day)</td>
</tr>
<tr>
<td>35</td>
<td>mixed rain and hail</td>
</tr>
<tr>
<td>36</td>
<td>hot</td>
</tr>
<tr>
<td>37</td>
<td>isolated thunderstorms</td>
</tr>
<tr>
<td>38</td>
<td>scattered thunderstorms</td>
</tr>
<tr>
<td>39</td>
<td>scattered thunderstorms</td>
</tr>
<tr>
<td>40</td>
<td>scattered showers</td>
</tr>
<tr>
<td>41</td>
<td>heavy snow</td>
</tr>
<tr>
<td>42</td>
<td>scattered snow showers</td>
</tr>
<tr>
<td>43</td>
<td>heavy snow</td>
</tr>
<tr>
<td>44</td>
<td>partly cloudy</td>
</tr>
<tr>
<td>45</td>
<td>thundershowers</td>
</tr>
<tr>
<td>46</td>
<td>snow showers</td>
</tr>
<tr>
<td>47</td>
<td>isolated thundershowers</td>
</tr>
<tr>
<td>3200</td>
<td>not available</td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.reigndesign.com/blog/make-your-blog-weather-interactive-in-6-easy-steps/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Updating your iPhone app for Christmas</title>
		<link>http://www.reigndesign.com/blog/how-to-update-your-iphone-app-for-christmas/</link>
		<comments>http://www.reigndesign.com/blog/how-to-update-your-iphone-app-for-christmas/#comments</comments>
		<pubDate>Wed, 09 Dec 2009 10:27:42 +0000</pubDate>
		<dc:creator>Stephen Ceresia</dc:creator>
				<category><![CDATA[Apps]]></category>
		<category><![CDATA[Work methods]]></category>
		<category><![CDATA[biblepromises]]></category>
		<category><![CDATA[christmas]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[pigrush]]></category>
		<category><![CDATA[spotthedifference]]></category>

		<guid isPermaLink="false">http://www.reigndesign.com/blog/?p=988</guid>
		<description><![CDATA[There seems to be a bit of a tradition in which many developers update their iPhone apps or games for the Christmas season.  Whether the update consists of new artwork, adding a Santa Claus, Christmas music, or even creating a completely new Christmas app, everyone seems to be getting in on the Christmas spirit, [...]]]></description>
			<content:encoded><![CDATA[<p>There seems to be a bit of a tradition in which many developers update their iPhone apps or games for the Christmas season.  Whether the update consists of new artwork, adding a Santa Claus, Christmas music, or even creating a completely new Christmas app, everyone seems to be getting in on the Christmas spirit, and expressing it through their iPhone apps.<br />
<span id="more-988"></span></p>
<p>Some may call it a cheap way to get back into the "New and notable" section of the App Store and bring fresh attention to your app, but the less cynical may see it as a fun way to add some new elements and features, along with some Christmas cheer.</p>
<p>At ReignDesign, we decided to update three of our apps for the season (Pig Rush, Bible Promises, Spot the Difference!), each in different ways.  We thought the iPhone user and development community might be interested in what we did, what worked for us, and what didn't.</p>
<p><span style="font-size: medium;"><a href="http://pigrush.reigndesign.com/">Pig Rush</a></span></p>
<p style="text-align: center;"><a href="http://pigrush.reigndesign.com"><img class="aligncenter" title="Pig Rush" src="http://www.reigndesign.com/blog/wp-content/uploads/2009/12/pigrush_screenshot2.png" alt="Pig Rush" /></a></p>
<p><strong>App description</strong></p>
<p>Pig Rush, is a simple and addictive platform game where you control a cute cartoon pig who jumps from platform to platform dodging obstacles.</p>
<p style="text-align: center;"><a href="http://pigrush.reigndesign.com"><img class="size-full wp-image-1073 aligncenter" title="Reindeer Rush" src="http://www.reigndesign.com/blog/wp-content/uploads/2009/12/reindeerrush.PNG" alt="Reindeer Rush" width="480" height="320" /></a></p>
<p><strong>How did we update it for Christmas?</strong></p>
<p>We re-skinned the game as "Reindeer Rush", changing all of the main artwork, and by adding some falling snow.  Additionally, we changed the background music to something with a more Christmas feel.</p>
<p>Since very few programming changes were made, other than the artwork, it took relatively little development and testing effort to come up with this release.</p>
<p>We decided to implement it via - ironically - an Easter egg.  I won't go into how to unlock it here, but triggering the Easter egg unlocks a "Christmas mode", in this case "Reindeer Rush".  We decided to go the Easter egg route for a number of reasons:</p>
<ul>
<li>Completely re-branding the game as a Christmas app would not only cause brand confusion, but guarantees we'll have to re-release another version in January.</li>
<li>Creating it as a separate app may also cause brand confusion, and - since it's a 'new' app - take longer for Apple's reviewers to approve than an update to an existing app.</li>
<li>Implementing it as an Easter egg means that the game will never be dated as a "Christmas app", but it will have the benefit of users being able to access the "Christams mode" any time of year, as long as we don't remove it from future updates.</li>
</ul>
<p><span style="font-size: medium;"><a href="http://spotthedifference.reigndesign.com/">Spot the Difference!</a></span></p>
<p style="text-align: center;"><a href="http://spotthedifference.reigndesign.com"><img class="size-full wp-image-995 aligncenter" title="Spot the Difference!" src="http://www.reigndesign.com/blog/wp-content/uploads/2009/12/std_screenshot1.png" alt="Spot the Difference!" width="480" height="320" /></a></p>
<p><strong>App description</strong></p>
<p>Spot the Difference!, as the name suggests, is a game that shows you two images with subtle differences which you must identify and tap before the timer runs out.</p>
<p style="text-align: center;"><a href="http://spotthedifference.reigndesign.com"><img class="size-full wp-image-1023 aligncenter" title="Spot the Difference!" src="http://www.reigndesign.com/blog/wp-content/uploads/2009/12/Screenshotxmas.png" alt="Spot the Difference!" width="480" height="320" /></a></p>
<p><strong>How did we update it for Christmas?</strong></p>
<p>With Spot the Difference!, we decided that it would be better to focus on implementing our most requested feature than to spend too much time on a seasonal update.  With this type of game, we decided that seasonal content would seem outdated quickly. Instead, our plan is to implement an in-app purchase feature for level packs.</p>
<p>We did add a Christmas level, though.  And while we had the code open, we also took the opportunity to fix a couple of bugs and throw in some other user requested features like a victory screen and time penalty for mistakes made.</p>
<p><span style="font-size: medium;"><a href="http://biblepromises.reigndesign.com/">Bible Promises</a></span></p>
<p style="text-align: center;"><a href="http://biblepromises.reigndesign.com"><img class="aligncenter" title="Bible Promises" src="http://www.reigndesign.com/blog/wp-content/uploads/2009/12/bp_screenshot1.png" alt="Bible Promises" /></a></p>
<p><strong>App description</strong></p>
<p>Probably our top selling app, Bible Promises is a topical Bible reference guide that enables users to find verses from the Bible organized by various topics such as Peace, Encouragement, Grief, etc.  Verses are displayed on top of background photos.</p>
<p style="text-align: center;"><a href="http://biblepromises.reigndesign.com"><img class="size-full wp-image-1046 aligncenter" title="Bible Promises" src="http://www.reigndesign.com/blog/wp-content/uploads/2009/12/biblepromises.png" alt="Bible Promises" width="320" height="480" /></a></p>
<p><strong>How did we update it for Christmas?</strong></p>
<p>Unlike our other apps, updating Bible Promises was fairly straightforward.  We added a new Christmas category, along with several Christmas themed verses from the Bible.  Additionally, we had to hack the Christmas category a bit to only display photos that were relevant to Christmas.  It seemed a bit out of place to display a background image of a summer field with a quote from the Christmas category, so we modified it so that only relevant images display when a user selects a verse from this category.</p>
<p>Obviously not every app is the same, and the methods we used may not work for your existing apps.  However, adding some Christmas spirit to your app through an update doesn't have to be too difficult, and it can be a fun way to mark the holiday season and provide a little Christmas cheer to your users.  One point that is very worth noting however: as of this writing, none of our updates have been approved yet, so remember (for now and for next year): submit your app for review as early as possible!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.reigndesign.com/blog/how-to-update-your-iphone-app-for-christmas/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
