<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>BlackBerry Developer Blog</title>
	<atom:link href="http://devblog.blackberry.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://devblog.blackberry.com</link>
	<description></description>
	<lastBuildDate>Tue, 15 May 2012 17:12:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='devblog.blackberry.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://1.gravatar.com/blavatar/9ef0a66c09615fa946c4179662398878?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>BlackBerry Developer Blog</title>
		<link>http://devblog.blackberry.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://devblog.blackberry.com/osd.xml" title="BlackBerry Developer Blog" />
	<atom:link rel='hub' href='http://devblog.blackberry.com/?pushpress=hub'/>
		<item>
		<title>BlackBerry 10 Jam &#8211; Interview with Jeff Bacon [VIDEO]</title>
		<link>http://devblog.blackberry.com/2012/05/blackberry-10-jam-bitheads-interview/</link>
		<comments>http://devblog.blackberry.com/2012/05/blackberry-10-jam-bitheads-interview/#comments</comments>
		<pubDate>Mon, 14 May 2012 19:58:37 +0000</pubDate>
		<dc:creator>veronchiquita</dc:creator>
				<category><![CDATA[Cascades]]></category>
		<category><![CDATA[Dev Con]]></category>
		<category><![CDATA[Interviews/Thought Leadership]]></category>
		<category><![CDATA[Native SDK Development]]></category>
		<category><![CDATA[apps]]></category>
		<category><![CDATA[bitHeads]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[interview]]></category>
		<category><![CDATA[Jeff Bacon]]></category>
		<category><![CDATA[native development]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://devblog.blackberry.com/?p=9418</guid>
		<description><![CDATA[An interview with Jeff Bacon of bitHeads during BlackBerry 10 Jam.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=9418&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Jeff Bacon, Director of Mobile Strategy for <a href="http://www.bitheads.com" target="_new">bitHeads</a>, shares his advice on building successful apps on the BlackBerry® platform. Check out the interview with Patrick Mollins to learn more about the benefits of building native and unlocking the power of <a href="http://devblog.blackberry.com/2012/05/blackberry-10-cascades-available-now/" target="_new">Cascades™</a>.</p>
<p style="text-align:center;"><span style="text-align:center; display: block;"><a href="http://devblog.blackberry.com/2012/05/blackberry-10-jam-bitheads-interview/"><img src="http://img.youtube.com/vi/oGhppdc5I0g/2.jpg" alt="" /></a></span></p>
<p style="text-align:center;">[<a href="http://www.youtube.com/embed/oGhppdc5I0g" target="_new">YouTube link for mobile viewing</a>]</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rimdevblog.wordpress.com/9418/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rimdevblog.wordpress.com/9418/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/rimdevblog.wordpress.com/9418/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/rimdevblog.wordpress.com/9418/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/rimdevblog.wordpress.com/9418/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/rimdevblog.wordpress.com/9418/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/rimdevblog.wordpress.com/9418/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/rimdevblog.wordpress.com/9418/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/rimdevblog.wordpress.com/9418/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/rimdevblog.wordpress.com/9418/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/rimdevblog.wordpress.com/9418/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/rimdevblog.wordpress.com/9418/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/rimdevblog.wordpress.com/9418/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/rimdevblog.wordpress.com/9418/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=9418&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devblog.blackberry.com/2012/05/blackberry-10-jam-bitheads-interview/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7b375d2578c668cc015d7452d495c9ff?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">veronchiquita</media:title>
		</media:content>
	</item>
		<item>
		<title>BlackBerry Samples for jQuery Mobile</title>
		<link>http://devblog.blackberry.com/2012/05/jquery-mobile-blackberry-samples/</link>
		<comments>http://devblog.blackberry.com/2012/05/jquery-mobile-blackberry-samples/#comments</comments>
		<pubDate>Mon, 14 May 2012 18:36:13 +0000</pubDate>
		<dc:creator>Tim W.</dc:creator>
				<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[jQuery Mobile]]></category>
		<category><![CDATA[mobile web development]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[sample code]]></category>
		<category><![CDATA[samples]]></category>

		<guid isPermaLink="false">http://devblog.blackberry.com/?p=9386</guid>
		<description><![CDATA[Our 49th repository on Github, jQuery-Mobile-Samples, will contain samples and tutorials using jQuery Mobile.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=9386&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-9415" title="" src="http://rimdevblog.files.wordpress.com/2012/05/blackberry-10-jam.jpg" alt="" width="600" height="398" /></p>
<p>Supporting open standards and open source are keystones of the BlackBerry® platform. We are pleased to announce another repository of open source contributions through <a href="https://github.com/blackberry/" target="_new">Github</a>. Our 56th repository, <a href="https://github.com/blackberry/jQuery-Mobile-Samples" target="_new">jQuery-Mobile-Samples</a>, will contain samples and tutorials using <a href="http://jquerymobile.com/" target="_new">jQuery Mobile</a> for building outstanding BlackBerry applications and mobile web experiences.</p>
<p>If you’ve done mobile web development, then jQuery will be familiar to you. It’s used by many organizations to make compelling websites and applications on the leading platforms. jQuery Mobile is a recent release focused on mobile devices with excellent cross-platform capabilities. With this repository we will be providing examples that detail some advanced features of the jQuery Mobile Framework which you will want to use in your next project.</p>
<p>Watch the <a href="https://github.com/blackberry/jQuery-Mobile-Samples" target="_new">repository on Github</a> and you’ll see the first few tutorials with sample code appearing this month. Later in the roadmap are examples for using jQuery Mobile with other frameworks for even more opportunities to impress your users.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rimdevblog.wordpress.com/9386/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rimdevblog.wordpress.com/9386/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/rimdevblog.wordpress.com/9386/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/rimdevblog.wordpress.com/9386/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/rimdevblog.wordpress.com/9386/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/rimdevblog.wordpress.com/9386/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/rimdevblog.wordpress.com/9386/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/rimdevblog.wordpress.com/9386/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/rimdevblog.wordpress.com/9386/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/rimdevblog.wordpress.com/9386/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/rimdevblog.wordpress.com/9386/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/rimdevblog.wordpress.com/9386/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/rimdevblog.wordpress.com/9386/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/rimdevblog.wordpress.com/9386/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=9386&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devblog.blackberry.com/2012/05/jquery-mobile-blackberry-samples/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d4af90af66399bef37f445ec81aba64a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">timwin1</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2012/05/blackberry-10-jam.jpg" medium="image" />
	</item>
		<item>
		<title>BlackBerry 10 Jam World Tour Update</title>
		<link>http://devblog.blackberry.com/2012/05/blackberry_10_jam_world_tour_update_2/</link>
		<comments>http://devblog.blackberry.com/2012/05/blackberry_10_jam_world_tour_update_2/#comments</comments>
		<pubDate>Sat, 12 May 2012 13:25:15 +0000</pubDate>
		<dc:creator>Alex K.</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Dev Con]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[BlackBerry 10]]></category>
		<category><![CDATA[BlackBerry 10 Dev Alpha]]></category>
		<category><![CDATA[BlackBerry 10 Jam]]></category>
		<category><![CDATA[BlackBerry 10 Jam World Tour]]></category>

		<guid isPermaLink="false">http://devblog.blackberry.com/?p=9423</guid>
		<description><![CDATA[We&#8217;ve just updated the BlackBerry 10 Jam World Tour page with new cities and dates. Here&#8217;s the run down of where we&#8217;re heading: May 29 – Milan, Italy May 31 – Barcelona, Spain June – California June – New York June 5 – Austin, TX, USA June 12 – Paris, France June 14 – London, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=9423&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://rimdevblog.files.wordpress.com/2012/05/jam-logo.png"><img class="aligncenter size-full wp-image-9424" title="jam-logo" src="http://rimdevblog.files.wordpress.com/2012/05/jam-logo.png" alt="TITLE_IMAGE" width="458" height="36" /></a></p>
<p>We&#8217;ve just updated the <a href="http://www.blackberryjamworldtour.com/">BlackBerry 10 Jam World Tour</a> page with new cities and dates. Here&#8217;s the run down of where we&#8217;re heading:</p>
<p>May 29 – Milan, Italy<br />
May 31 – Barcelona, Spain<br />
June – California<br />
June – New York<br />
June 5 – Austin, TX, USA<br />
June 12 – Paris, France<br />
<strong>June 14 – London, UK [Updated to June 14]</strong><br />
June 21 – Toronto, ON, Canada<br />
June 26 – Moscow, Russia<br />
June 28 – Berlin, Germany<br />
July 3 – Warsaw, Poland<br />
July 4 – Delhi, India<br />
July 6 – Beijing, China<br />
July 9 – Singapore, Singapore<br />
July 10 – Jakarta, Indonesia<br />
July 12 – Sydney, Australia<br />
August – Buenos Aires, Argentina<br />
August – Mexico City, Mexico</p>
<p>A limited number of BlackBerry® 10 Dev Alpha devices will be available to qualified developers at each city in the World Tour. During the event registration process, apply to receive a BlackBerry 10 Dev Alpha device, available only to developers attending BlackBerry 10 Jam. If you received a BlackBerry 10 Dev Alpha device at a previous BlackBerry developer event, you do not qualify for this offer.</p>
<p>We&#8217;ll have more updates soon  - keep checking back here to the Inside BlackBerry Developers Blog.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rimdevblog.wordpress.com/9423/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rimdevblog.wordpress.com/9423/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/rimdevblog.wordpress.com/9423/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/rimdevblog.wordpress.com/9423/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/rimdevblog.wordpress.com/9423/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/rimdevblog.wordpress.com/9423/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/rimdevblog.wordpress.com/9423/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/rimdevblog.wordpress.com/9423/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/rimdevblog.wordpress.com/9423/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/rimdevblog.wordpress.com/9423/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/rimdevblog.wordpress.com/9423/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/rimdevblog.wordpress.com/9423/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/rimdevblog.wordpress.com/9423/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/rimdevblog.wordpress.com/9423/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=9423&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devblog.blackberry.com/2012/05/blackberry_10_jam_world_tour_update_2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7d0e94a7e96e80d5911732d43f31a39c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Alex K.</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2012/05/jam-logo.png" medium="image">
			<media:title type="html">jam-logo</media:title>
		</media:content>
	</item>
		<item>
		<title>BlackBerry 10 Jam &#8211; Interview with Sri Ramanathan from Kony Solutions</title>
		<link>http://devblog.blackberry.com/2012/05/blackberry-10-jam-interview-with-sri-ramanathan-from-kony-solutions/</link>
		<comments>http://devblog.blackberry.com/2012/05/blackberry-10-jam-interview-with-sri-ramanathan-from-kony-solutions/#comments</comments>
		<pubDate>Wed, 09 May 2012 19:44:30 +0000</pubDate>
		<dc:creator>veronchiquita</dc:creator>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Dev Con]]></category>
		<category><![CDATA[Editorials]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[Interviews/Thought Leadership]]></category>
		<category><![CDATA[Enterprise]]></category>
		<category><![CDATA[native]]></category>
		<category><![CDATA[native apps]]></category>
		<category><![CDATA[Native Development Kit]]></category>
		<category><![CDATA[native sdk]]></category>
		<category><![CDATA[qt]]></category>

		<guid isPermaLink="false">http://devblog.blackberry.com/?p=9398</guid>
		<description><![CDATA[Sri Ramanathan, CTO of Kony Solutions, shares his thoughts on the BlackBerry® 10 platform in this video interview. From Kony Solutions’ press release: “Kony Solutions, the leading mobile application development platform (MADP) provider, announced that it is one of the first mobile platform providers to support the new BlackBerry® 10 platform. Kony customers and partners [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=9398&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Sri Ramanathan, CTO of Kony Solutions, shares his thoughts on the BlackBerry® 10 platform in this video interview.</p>
<p>From Kony Solutions’ <a title="press release" href="http://www.kony.com/kony-solutions-one-first-mobile-platform-vendors-support-blackberry-10" target="_blank">press release</a>:</p>
<blockquote><p>“Kony Solutions, the leading mobile application development platform (MADP) provider, announced that it is one of the first mobile platform providers to support the new BlackBerry® 10 platform. Kony customers and partners can expand their mobile applications to support BlackBerry 10 users immediately, with just a few clicks of a button.<br />
Kony’s flagship product is its KonyOne mobile enterprise application platform. Kony’s patent-pending “Write Once, Run Everywhere” technology enables developers to deploy their apps across more than 10,000 mobile smartphones/tablets/kiosks and operating systems from a single code base. All Kony applications can be delivered in native and mobile web (HTML5 and non-HTML5), across every mobile channel. Kony offers the mobile industry’s most comprehensive Service Level Agreement, ensuring support for new versions of existing platforms or OS within 30 days of code release, and within 90 days for any new device or OS.”</p></blockquote>
<span style="text-align:center; display: block;"><a href="http://devblog.blackberry.com/2012/05/blackberry-10-jam-interview-with-sri-ramanathan-from-kony-solutions/"><img src="http://img.youtube.com/vi/QGIDDW9P6aw/2.jpg" alt="" /></a></span>
<p style="text-align:center;">[ <a href="http://youtu.be/QGIDDW9P6aw" target="_new">YouTube link for mobile viewing</a> ]</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rimdevblog.wordpress.com/9398/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rimdevblog.wordpress.com/9398/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/rimdevblog.wordpress.com/9398/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/rimdevblog.wordpress.com/9398/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/rimdevblog.wordpress.com/9398/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/rimdevblog.wordpress.com/9398/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/rimdevblog.wordpress.com/9398/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/rimdevblog.wordpress.com/9398/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/rimdevblog.wordpress.com/9398/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/rimdevblog.wordpress.com/9398/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/rimdevblog.wordpress.com/9398/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/rimdevblog.wordpress.com/9398/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/rimdevblog.wordpress.com/9398/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/rimdevblog.wordpress.com/9398/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=9398&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devblog.blackberry.com/2012/05/blackberry-10-jam-interview-with-sri-ramanathan-from-kony-solutions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7b375d2578c668cc015d7452d495c9ff?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">veronchiquita</media:title>
		</media:content>
	</item>
		<item>
		<title>Bringing your BlackBerry PlayBook apps to BlackBerry 10</title>
		<link>http://devblog.blackberry.com/2012/05/blackberry-playbook-apps-on-blackberry-10/</link>
		<comments>http://devblog.blackberry.com/2012/05/blackberry-playbook-apps-on-blackberry-10/#comments</comments>
		<pubDate>Wed, 09 May 2012 17:32:51 +0000</pubDate>
		<dc:creator>russellandrade</dc:creator>
				<category><![CDATA[How-to]]></category>
		<category><![CDATA[Native SDK Development]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[apis]]></category>
		<category><![CDATA[apps]]></category>
		<category><![CDATA[BlackBerry 10]]></category>
		<category><![CDATA[blackberry playbook]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[native]]></category>
		<category><![CDATA[native apps]]></category>
		<category><![CDATA[Native Development Kit]]></category>
		<category><![CDATA[native sdk]]></category>
		<category><![CDATA[orientation]]></category>
		<category><![CDATA[porting]]></category>

		<guid isPermaLink="false">http://devblog.blackberry.com/?p=9160</guid>
		<description><![CDATA[Going over two important upcoming changes to the BlackBerry 10 Native SDK in order to help developers prepare for upcoming releases, and examining how developers can easily port their BlackBerry PlayBook tablet apps to BlackBerry 10.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=9160&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>While all the SDKs for <a href="http://blogs.blackberry.com/2012/05/blackberry-10-world-keynote/" target="_new">BlackBerry®</a> 10 are amazing, our pride and joy is the BlackBerry 10 Native SDK. If you’ve built native apps for the <a href="http://www.blackberry.com/playbook" target="_new">BlackBerry® PlayBook™</a> tablet, then you’ve used our BlackBerry Native SDK for Tablet OS. The new BlackBerry 10 Native SDK has the same underlying framework as the NDK platform and exposes many new APIs and tooling that will make your development experience even better. If you haven’t had a chance to download and write apps for the BlackBerry PlayBook tablet yet, now is a great time to start building some apps.</p>
<p>One of our priorities is to make sure that apps written with the BlackBerry Native SDK for Tablet OS will transition with minimal hassle to our BlackBerry 10 platform. We don’t want you, our <a href="http://www.blackberry.com/developer" target="_new">developer community</a>, to have to reinvent the wheel or tweak significant amounts of code. We also want to make sure that our developers are aware of changes coming to the platform that may impact them so they can prepare accordingly. With that in mind, I want to talk about two important upcoming changes to the BlackBerry 10 Native SDK in order to help developers prepare for upcoming releases. The motivation for both changes is to help developers scale their apps from tablets to phones.</p>
<p><span id="more-9160"></span></p>
<p>The first change has to do with multi-icon support. We want to create a seamless way for developers to port their BlackBerry PlayBook tablet applications to the BlackBerry 10 smartphone. As we support two device screen sizes, applications may need to provide more than one icon size depending on the device they are being installed on. Developers will now be able to specify a list of icons and splash screens per locale and per resolution in the bar descriptor. These would be of various sizes to suit the different target displays. The runtime will then choose the icon and splash screen that matches the given display. We will be maintaining backwards compatibility, so existing apps written for the BlackBerry PlayBook tablet should not have to modify anything. However, if you are moving your app to a BlackBerry 10 device, you will have to specify icons and splash screens with alternate sizes.</p>
<p>The second important change is with respect to orientation. On BlackBerry 10, native applications will not be able to get the width and height values that they need for sizing their windows and determining orientation by querying the ‘WIDTH’ and ‘HEIGHT’ environment variables. If the width is greater than the height, the application will know it is running in landscape mode and vice versa. This behaviour has changed from BlackBerry PlayBook OS 2.0. On BlackBerry PlayBook OS 2.0, an application would query the screen APIs to get its width and height. For applications running on BlackBerry PlayBook OS 2.0, they can continue to rely on this behaviour as this is now going to change. On BlackBerry 10, however, applications are discouraged from querying for their width and height using the screen APIs. The following code snippet illustrates how an app can query for its width and height:</p>
<p><code>int screen_resolution[2];<br />
screen_resolution[0] = atoi(getenv("WIDTH")); //get width<br />
screen_resolution[1] = atoi(getenv("HEIGHT")); //get height</code></p>
<p>Once the application gets these values (which it can and should do at startup), the application can proceed to create and set up its window.</p>
<p><code>screen_create_window(&amp;window, context);<br />
rc = screen_set_window_property_iv(window,<br />
SCREEN_PROPERTY_SIZE, screen_resolution);<br />
if (rc) {<br />
//handle error …<br />
}</code></p>
<p>rc = screen_set_window_property_iv(screen_win,<br />
SCREEN_PROPERTY_BUFFER_SIZE, screen_resolution);<br />
if (rc) {<br />
//handle error …<br />
}</p>
<p>Applications written for BlackBerry 10 should not set the SCREEN_PROPERTY_ROTATION value, as Navigator will set this for the application automatically when it posts its window.</p>
<p>Furthermore, if you were writing native apps on BlackBerry PlayBook OS 2.0, you would have had to write extra logic to rotate your window based on what you read out from the “ORIENTATION” environment variable. The box below shows an example of how orientation was set up in the BlackBerry PlayBook OS 2.0 setup. This code can now be removed, thereby simplifying your setup logic.</p>
<p><code>//THIS CODE CAN NOW BE DELETED</code></p>
<p>int angle = atoi(getenv(&#8220;ORIENTATION&#8221;));<br />
int buffer_size[2] = {screen_resolution[0], screen_resolution[1]};<br />
int flip = false;</p>
<p>if ((orientation == LANDSCAPE) &amp;&amp; (buffer_size[0] &lt;<br />
buffer_size[1])) {<br />
//In landscape, rotate to portrait<br />
buffer_size[0] = screen_resolution[1];<br />
buffer_size[1] = screen_resolution[0];</p>
<p>if ((angle == 0) || (angle == 180)) {<br />
//Landscape device in landscape mode<br />
angle = 90;<br />
} else if ((angle == 90) || (angle == 270)) {<br />
//Portrait device in landscape mode<br />
angle = 0;<br />
}</p>
<p>flip = true;<br />
}</p>
<p>if (flip) {<br />
rc = screen_set_window_property_iv(screen_win, SCREEN_PROPERTY_ROTATION,<br />
&amp;angle);<br />
if (rc) {<br />
//handle error …<br />
}</p>
<p>rc = screen_set_window_property_iv(screen_win,<br />
SCREEN_PROPERTY_BUFFER_SIZE, buffer_size);<br />
if (rc) {<br />
//handle error …<br />
}<br />
}</p>
<p>When it comes to determining current orientation, applications should always rely on the navigator to present current orientation. You should never use the accelerometer to determine orientation. The navigator will also inform the application when it needs to rotate and will initiate the rotation sequence by sending the application a rotate (PORTRAIT or LANDSCAPE) message. These new “rotate” messages are replacing the “orientation” messages on the current 2.0 Navigator. It is to be noted as well that the old orientation messages used to specify rotation in angles, while rotation will be specified as Landscape or Portrait in the new messages. These new units are much more intuitive in my opinion and map more closely with how we think of orientation on the device.</p>
<p>As a native app developer, there are several things you need to consider:</p>
<ul>
<li>Continuing to support your application on BlackBerry PlayBook OS 2.0 won’t require any change – things will continue to work as before.</li>
<li>If you are developing a native app only for BlackBerry 10, you should make sure to use the new method of getting width and height parameters from navigator as well as using the new rotate messages.</li>
<li>If you already have an app on BlackBerry PlayBook OS 2.0 and want to move it to BlackBerry 10, you will have some minor changes to make to port your app over. Your code on BlackBerry PlayBook OS 2.0 will not be able to get the width/height parameters via environment variables, so you will continue to use the old methods. On BlackBerry 10, you should use the parameters you receive from navigator for this.</li>
</ul>
<p>These changes are not drastic, and our hope is that you will be able to migrate from BlackBerry PlayBook OS 2.0 to BlackBerry 10 with minimal fuss. In passing, I should also point out that these changes target developers who are writing applications right on top of our low-level windowing framework, so these changes mainly impact game developers. If you are writing a Cascades™-based application, you should also be abstracted from most of these changes and should consult your Cascades documentation.</p>
<p>I am personally excited about these changes as they will enhance the development capabilities of the BlackBerry 10 Native SDK when it comes to supporting multiple resolutions and orientation. When the time comes for you to start developing or moving your app or game over to the BlackBerry 10 platform, you should definitely consult the developer documentation for more details on these two features and how they will impact your application.</p>
<p>Happy developing!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rimdevblog.wordpress.com/9160/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rimdevblog.wordpress.com/9160/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/rimdevblog.wordpress.com/9160/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/rimdevblog.wordpress.com/9160/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/rimdevblog.wordpress.com/9160/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/rimdevblog.wordpress.com/9160/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/rimdevblog.wordpress.com/9160/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/rimdevblog.wordpress.com/9160/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/rimdevblog.wordpress.com/9160/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/rimdevblog.wordpress.com/9160/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/rimdevblog.wordpress.com/9160/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/rimdevblog.wordpress.com/9160/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/rimdevblog.wordpress.com/9160/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/rimdevblog.wordpress.com/9160/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=9160&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devblog.blackberry.com/2012/05/blackberry-playbook-apps-on-blackberry-10/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/aacfb04e6b02273d991e7bb0c519fdec?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">russellandrade</media:title>
		</media:content>
	</item>
		<item>
		<title>We Jam. We Listen.</title>
		<link>http://devblog.blackberry.com/2012/05/blackberry-10-jam-nobex/</link>
		<comments>http://devblog.blackberry.com/2012/05/blackberry-10-jam-nobex/#comments</comments>
		<pubDate>Tue, 08 May 2012 19:31:58 +0000</pubDate>
		<dc:creator>Alec Saunders</dc:creator>
				<category><![CDATA[Editorials]]></category>
		<category><![CDATA[alec saunders]]></category>
		<category><![CDATA[BlackBerry 10]]></category>
		<category><![CDATA[BlackBerry 10 Jam]]></category>
		<category><![CDATA[blackberry app world]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[developers]]></category>
		<category><![CDATA[nobex]]></category>
		<category><![CDATA[nobex radio]]></category>

		<guid isPermaLink="false">http://devblog.blackberry.com/?p=9359</guid>
		<description><![CDATA[Highlighting a letter from a developer that comments on BlackBerry 10 Jam.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=9359&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:center;"><img src="http://rimdevblog.files.wordpress.com/2012/05/alec-saunders-bb10jam.jpg" alt="" title="BlackBerry 10 Jam Super Session, Cypress 3" width="400" height="600" class="aligncenter size-full wp-image-9371" /></p>
<p>One of the true pleasures of my job is talking with developers. Creative, outspoken, funny, smart, artistic, genuine – they’re just some of the best people in the world to hang with. <a href="http://www.blackberryjamconference.com/" target="_new">BlackBerry® 10 Jam</a> was amazing last week. The code demos, <a href="http://blackberry10jam.appcircus.com/" target="_new">AppCircus</a>, the lunches and down time with people at the bar – these were the highlights for me.</p>
<p>As you know, I publish my email address everywhere (<a href="mailto:alec.saunders@rim.com">alec.saunders@rim.com</a>), and people write to me. <a href="http://appworld.blackberry.com/webstore/vendor/13/" target="_new">Nobex</a> Chief Software Architect Jamie Julius wrote me the following last Friday, and gave me permission to share it with you all:</p>
<blockquote><p>Hi Alec,</p>
<p>I wanted to thank you personally for such a great BB 10 Jam.</p>
<p>Last November, a letter that I had sent to someone at RIM was forwarded to you. In it I described my feelings after attending DevCon last fall in San Francisco.</p>
<p>Well, things have definitely changed. The difference between that DevCon and this Jam is like night and day.</p>
<p>Over the last three days, in keynotes and in sessions, the messages coming from RIM were very clear. Not only do we now see more clearly where RIM is going, but also what we should be doing as developers. As opposed to a vague range of technologies to be supported, it has now been made more clear which will work best for what.</p>
<p>For Nobex Radio, for example, all the RIM technical representatives made it very clear to me why Cascades is the way for us to go. The list of reasons is long. We never received such a clear message before.</p>
<p>I came away feeling that BB10 is now tangible. And I don&#8217;t just mean that I can hold the Dev Alpha device in my hand. I see real API&#8217;s! Even if some aren&#8217;t ready yet, I see them coming. I know what they will cover. That makes a really big difference. I also have an IDE with which to start writing real code. That makes a big difference too.</p>
<p>Back in November, games were over-emphasized. Not anymore. I think RIM has re-focused its identity. Games should definitely have an important place on BlackBerry smartphones, but not blown out of proportion.</p>
<p>So, a big congratulations to you and your team for doing such a great job putting together BB 10 Jam.</p>
<p>The enormous investment that RIM is making in dev relations has not gone unnoticed.</p>
<p>THANK YOU!</p>
<p>Jamie Julius<br />
Chief Software Architect<br />
Nobex Technologies</p></blockquote>
<p>Thanks Jamie.</p>
<p>There are still lots of milestones to cross on the road to BlackBerry 10, but last week was a major step forward for RIM and the development community. We hope everyone who came to <a href="http://www.blackberryjamconference.com/" target="_new">BlackBerry 10 Jam</a> walked away with the same experience as Jamie, and we’re counting on you all, so let’s go write some code together!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rimdevblog.wordpress.com/9359/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rimdevblog.wordpress.com/9359/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/rimdevblog.wordpress.com/9359/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/rimdevblog.wordpress.com/9359/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/rimdevblog.wordpress.com/9359/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/rimdevblog.wordpress.com/9359/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/rimdevblog.wordpress.com/9359/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/rimdevblog.wordpress.com/9359/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/rimdevblog.wordpress.com/9359/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/rimdevblog.wordpress.com/9359/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/rimdevblog.wordpress.com/9359/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/rimdevblog.wordpress.com/9359/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/rimdevblog.wordpress.com/9359/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/rimdevblog.wordpress.com/9359/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=9359&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devblog.blackberry.com/2012/05/blackberry-10-jam-nobex/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6d4fe58df3d76e08b4f82f7df3aa56ea?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">asaund1</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2012/05/alec-saunders-bb10jam.jpg" medium="image">
			<media:title type="html">BlackBerry 10 Jam Super Session, Cypress 3</media:title>
		</media:content>
	</item>
		<item>
		<title>BlackBerry 10 Jam &#8211; Interview with Martin Herdina, CEO of Wikitude [VIDEO]</title>
		<link>http://devblog.blackberry.com/2012/05/blackberry-10-jam-wikitude-interview/</link>
		<comments>http://devblog.blackberry.com/2012/05/blackberry-10-jam-wikitude-interview/#comments</comments>
		<pubDate>Tue, 08 May 2012 18:02:56 +0000</pubDate>
		<dc:creator>veronchiquita</dc:creator>
				<category><![CDATA[Interviews/Thought Leadership]]></category>
		<category><![CDATA[Java Development]]></category>
		<category><![CDATA[BlackBerry 10]]></category>
		<category><![CDATA[BlackBerry 10 Jam]]></category>
		<category><![CDATA[interview]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[wikitude]]></category>

		<guid isPermaLink="false">http://devblog.blackberry.com/?p=9355</guid>
		<description><![CDATA[Watch a video from BlackBerry 10 Jam featuring an interview with the CEO of Wikitude.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=9355&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Interested in creating location-based apps on <a href="http://blogs.blackberry.com/2012/05/blackberry-10-world-keynote/" target="_new">BlackBerry® 10</a>? Patrick Mollins from our Developer Relations team had the opportunity to chat with Martin Herdina, CEO of Wikitude at <a href="http://www.blackberryjamconference.com/" target="_new">BlackBerry 10 Jam</a>. Wikitude is a Java®-based app on BlackBerry® 7 OS devices that is now available as a C++ core platform for developers to build location-based apps enhanced with Augmented Reality on BlackBerry 10.</p>
<p>Check out Patrick’s interview in the video:</p>
<p style="text-align:center;"><span style="text-align:center; display: block;"><a href="http://devblog.blackberry.com/2012/05/blackberry-10-jam-wikitude-interview/"><img src="http://img.youtube.com/vi/wlL9gosv2MY/2.jpg" alt="" /></a></span></p>
<p style="text-align:center;">[ <a href="http://www.youtube.com/watch?v=wlL9gosv2MY" target="_new">YouTube link for mobile viewing</a> ]</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rimdevblog.wordpress.com/9355/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rimdevblog.wordpress.com/9355/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/rimdevblog.wordpress.com/9355/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/rimdevblog.wordpress.com/9355/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/rimdevblog.wordpress.com/9355/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/rimdevblog.wordpress.com/9355/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/rimdevblog.wordpress.com/9355/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/rimdevblog.wordpress.com/9355/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/rimdevblog.wordpress.com/9355/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/rimdevblog.wordpress.com/9355/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/rimdevblog.wordpress.com/9355/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/rimdevblog.wordpress.com/9355/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/rimdevblog.wordpress.com/9355/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/rimdevblog.wordpress.com/9355/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=9355&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devblog.blackberry.com/2012/05/blackberry-10-jam-wikitude-interview/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7b375d2578c668cc015d7452d495c9ff?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">veronchiquita</media:title>
		</media:content>
	</item>
		<item>
		<title>Lightweight Maps for Mobile, Part 1: Introduction to Map APIs and Libraries</title>
		<link>http://devblog.blackberry.com/2012/05/lightweight-maps-for-mobile-part-1/</link>
		<comments>http://devblog.blackberry.com/2012/05/lightweight-maps-for-mobile-part-1/#comments</comments>
		<pubDate>Tue, 08 May 2012 13:18:17 +0000</pubDate>
		<dc:creator>Jim Ing</dc:creator>
				<category><![CDATA[How-to]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[apis]]></category>
		<category><![CDATA[Bing]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Libraries]]></category>
		<category><![CDATA[MapQuest]]></category>
		<category><![CDATA[maps]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[mobile web apps]]></category>
		<category><![CDATA[tile naming conventions]]></category>

		<guid isPermaLink="false">http://devblog.blackberry.com/?p=9328</guid>
		<description><![CDATA[Discussing the creation of lightweight maps for mobile web apps.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=9328&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>When it comes to building interactive maps for desktop web, most of us are quite comfortable using APIs like Google Maps or Bing Maps. But when we need to port or build something for mobile, it often feels like we&#8217;re crumpling a clean sheet of paper into a paper ball. Certainly, dealing with a smaller screen size, slower processor, and less memory can feel like a frustrating step backwards. But if you consider that mobile devices have touch screens, cameras, microphones, accelerometers, wireless and GPS capabilities on top of being portable, mobile devices are in a way better place than desktop PCs. So if we take the time to understand their limitations and features, we can build lightweight applications that are more like origami — compact, elegant, and functional — instead of like a crumpled paper ball that you&#8217;re ready to throw in the trash can.</p>
<table style="border:1px solid #DDD;border-radius:10px;">
<tbody>
<tr>
<td style="padding:10px;text-align:center;font-weight:bold;">Desktop web development is like this&#8230;</td>
<td style="padding:10px;text-align:center;font-weight:bold;">Mobile web can feel like this&#8230;</td>
<td style="padding:10px;text-align:center;font-weight:bold;">But mobile should and can be like this&#8230;</td>
</tr>
<tr>
<td style="padding:10px;text-align:center;"><a href="http://rimdevblog.files.wordpress.com/2012/05/sheet_sm.png"><img class="aligncenter size-full wp-image-9341" title="sheet_sm" src="http://rimdevblog.files.wordpress.com/2012/05/sheet_sm.png" alt="" width="140" height="151" /></a></td>
<td style="padding:10px;text-align:center;"><a href="http://rimdevblog.files.wordpress.com/2012/05/crumpled_sm.png"><img class="aligncenter size-full wp-image-9342" title="crumpled_sm" src="http://rimdevblog.files.wordpress.com/2012/05/crumpled_sm.png" alt="" width="90" height="90" /></a></td>
<td style="padding:10px;text-align:center;"><a href="http://rimdevblog.files.wordpress.com/2012/05/origami_sm.png"><img class="aligncenter size-full wp-image-9343" title="origami_sm" src="http://rimdevblog.files.wordpress.com/2012/05/origami_sm.png" alt="" width="140" height="80" /></a></td>
</tr>
<tr>
<td style="padding:10px;text-align:center;">fairly standard</td>
<td style="padding:10px;text-align:center;">frustrating</td>
<td style="padding:10px;text-align:center;">compact, elegant, and functional</td>
</tr>
</tbody>
</table>
<p><span id="more-9328"></span></p>
<p>So where do we start? Well, when it comes to mobile web apps, file and transfer size matters — the smaller, the better. So the first thing I wanted to do was survey the landscape and compare the size of some of the different APIs that are available. (If I missed some that are lightweight, please let me know.) Although <a href="http://maps.google.com/" target="_blank">Google Maps</a> is the most popular API out there (and deservedly so), it&#8217;s JavaScript API and tile images are quite large. In my tests below, I created basic map pages for a 1024×768 screen using each of the APIs, and I found that Google Maps transfers about <span style="background-color:#b94a48;color:#fff;font-weight:bold;padding-left:10px;padding-right:10px;border-radius:15px;">950 KB</span> of data! This can be a problem for smartphones since they have limited memory. Besides causing an application to crash, a memory-intensive app can also chew up precious kilobytes from a user&#8217;s data plan, and it can drain their battery faster than they want. Thankfully, we have some choices&#8230;</p>
<table style="border:1px solid #DDD;border-radius:10px;">
<tbody>
<tr style="background-color:#000;color:#fff;">
<td style="padding:10px;text-align:center;">API Provider</td>
<td style="padding:10px;text-align:center;">Requests</td>
<td style="padding:10px;text-align:center;">Transferred<br />
(KB)</td>
<td style="padding:10px;text-align:center;">Images<br />
(KB)</td>
<td style="padding:10px;text-align:center;">Scripts<br />
(KB)</td>
</tr>
<tr>
<td style="padding:10px;"><a href="http://msdn.microsoft.com/en-us/library/bb429619.aspx" target="_blank">Bing 6.3</a></td>
<td style="padding:10px;">43</td>
<td style="padding:10px;">596.07</td>
<td style="padding:10px;">358.06 (35)</td>
<td style="padding:10px;">228.92 (4)</td>
</tr>
<tr style="background-color:#eee;">
<td style="padding:10px;"><a href="http://msdn.microsoft.com/en-us/library/ff710049.aspx" target="_blank">Bing 6.3c (Core)</a></td>
<td style="padding:10px;">43</td>
<td style="padding:10px;">423.53</td>
<td style="padding:10px;">371.28 (34)</td>
<td style="padding:10px;">46.72 (5)</td>
</tr>
<tr>
<td style="padding:10px;"><a href="http://msdn.microsoft.com/en-us/library/gg427610.aspx" target="_blank">Bing 7.0</a></td>
<td style="padding:10px;">40</td>
<td style="padding:10px;"><span style="background-color:#468847;color:#fff;font-weight:bold;padding-left:10px;padding-right:10px;border-radius:15px;">431.45</span></td>
<td style="padding:10px;"><span style="background-color:#468847;color:#fff;font-weight:bold;padding-left:10px;padding-right:10px;border-radius:15px;">339.49 (30)</span></td>
<td style="padding:10px;">86.67 (6)</td>
</tr>
<tr style="background-color:#eee;">
<td style="padding:10px;"><a href="https://developers.google.com/maps/documentation/javascript/tutorial" target="_blank">Google v3</a></td>
<td style="padding:10px;"><span style="background-color:#b94a48;color:#fff;font-weight:bold;padding-left:10px;padding-right:10px;border-radius:15px;">66</span></td>
<td style="padding:10px;"><span style="background-color:#b94a48;color:#fff;font-weight:bold;padding-left:10px;padding-right:10px;border-radius:15px;">949.65</span></td>
<td style="padding:10px;"><span style="background-color:#b94a48;color:#fff;font-weight:bold;padding-left:10px;padding-right:10px;border-radius:15px;">842.93 (54)</span></td>
<td style="padding:10px;"><span style="background-color:#b94a48;color:#fff;font-weight:bold;padding-left:10px;padding-right:10px;border-radius:15px;">105.88 (12)</span></td>
</tr>
<tr>
<td style="padding:10px;"><a href="http://leaflet.cloudmade.com/reference.html" target="_blank">Leaflet 0.3.1 (Cloudmade)</a></td>
<td style="padding:10px;"><span style="background-color:#468847;color:#fff;font-weight:bold;padding-left:10px;padding-right:10px;border-radius:15px;">30</span></td>
<td style="padding:10px;">603.23</td>
<td style="padding:10px;">513.56 (26)</td>
<td style="padding:10px;">81.52 (1)</td>
</tr>
<tr style="background-color:#eee;">
<td style="padding:10px;"><a href="http://developer.mapquest.com/web/documentation/sdk/javascript/v7.0" target="_blank">MapQuest 7.0</a></td>
<td style="padding:10px;">60</td>
<td style="padding:10px;">900.30</td>
<td style="padding:10px;"><span style="background-color:#b94a48;color:#fff;font-weight:bold;padding-left:10px;padding-right:10px;border-radius:15px;">851.82 (53)</span></td>
<td style="padding:10px;"><span style="background-color:#468847;color:#fff;font-weight:bold;padding-left:10px;padding-right:10px;border-radius:15px;">46.81 (4)</span></td>
</tr>
<tr>
<td style="padding:10px;"><a href="https://github.com/stamen/modestmaps-js/wiki" target="_blank">Modest Maps 1.0.0 beta (MapBox)</a></td>
<td style="padding:10px;">38</td>
<td style="padding:10px;">901.48</td>
<td style="padding:10px;"><span style="background-color:#b94a48;color:#fff;font-weight:bold;padding-left:10px;padding-right:10px;border-radius:15px;">859.96 (35)</span></td>
<td style="padding:10px;"><span style="background-color:#468847;color:#fff;font-weight:bold;padding-left:10px;padding-right:10px;border-radius:15px;">39.62 (1)</span></td>
</tr>
<tr style="background-color:#eee;">
<td style="padding:10px;"><a href="http://api.maps.ovi.com/devguide/overview.html" target="_blank">Nokia Ovi</a></td>
<td style="padding:10px;">48</td>
<td style="padding:10px;">523.87</td>
<td style="padding:10px;"><span style="background-color:#468847;color:#fff;font-weight:bold;padding-left:10px;padding-right:10px;border-radius:15px;">372.47 (36)</span></td>
<td style="padding:10px;"><span style="background-color:#b94a48;color:#fff;font-weight:bold;padding-left:10px;padding-right:10px;border-radius:15px;">150.16 (10)</span></td>
</tr>
<tr>
<td style="padding:10px;"><a href="http://docs.openlayers.org/" target="_blank">OpenLayers 2.11 Mobile</a></td>
<td style="padding:10px;">52</td>
<td style="padding:10px;">595.28</td>
<td style="padding:10px;">508.70 (48)</td>
<td style="padding:10px;">83.35 (1)</td>
</tr>
<tr>
<td style="padding:10px;font-size:8pt;" colspan="5">* Note:</p>
<ul>
<li>These pages were tested at 1024×768.</li>
<li>The KBs for documents and stylesheets were excluded.</li>
</ul>
</td>
</tr>
</tbody>
</table>
<h2>Bing</h2>
<p>As we can see from the results, Microsoft&#8217;s <a href="http://www.bing.com/maps/" target="_blank">Bing Maps</a> is a good alternative that has improved a lot since version 6.3. In version 6.3, Bing quietly introduced a &#8220;core&#8221; version for mobile that stripped out features like drawing lines and polygons. This reduced their JavaScript library from 230 KB to 47 KB! Unfortunately, if you needed some of those features, you were out of luck. But in version 7.0, they cleaned up their API and reduced it to 87 KB (without stripping features). So when you combine that savings with Bing&#8217;s smaller tile size, the Bing test map transferred <span style="background-color:#468847;color:#fff;font-weight:bold;padding-left:10px;padding-right:10px;border-radius:15px;">432 KB</span> — that&#8217;s less than half of Google Maps! So I could stop here and just tell you to use Bing instead, but (as you&#8217;ll see) it&#8217;s always good to look at other options&#8230;</p>
<h2>Modest Maps</h2>
<p>Especially if we look at the API with the smallest library, <a href="http://modestmaps.com/" target="_blank">Modest Maps</a>, is a new library that weighs in at only <span style="background-color:#468847;color:#fff;font-weight:bold;padding-left:10px;padding-right:10px;border-radius:15px;">40 KB</span>! It was designed to be simple, extensible, and it even works in older browsers like IE7. However, it&#8217;s tile size was the largest at <span style="background-color:#b94a48;color:#fff;font-weight:bold;padding-left:10px;padding-right:10px;border-radius:15px;">861 KB</span>!</p>
<h2>MapQuest</h2>
<p><a href="http://www.mapquest.com/" target="_blank">MapQuest</a> is a provider that has been around for a while. Their version 7.0 is the second-smallest library at only <span style="background-color:#468847;color:#fff;font-weight:bold;padding-left:10px;padding-right:10px;border-radius:15px;">47 KB</span>, but their tile size is the third largest at <span style="background-color:#b94a48;color:#fff;font-weight:bold;padding-left:10px;padding-right:10px;border-radius:15px;">852 KB</span>.</p>
<h2>Nokia Ovi</h2>
<p>So if we&#8217;re also looking for an API that has the smallest tile size, Bing looks like the best choice. <a href="http://maps.nokia.com/" target="_blank">Nokia&#8217;s Ovi</a> tiles are also lightweight at <span style="background-color:#468847;color:#fff;font-weight:bold;padding-left:10px;padding-right:10px;border-radius:15px;">373 KB</span>, but their JavaScript library is the largest at <span style="background-color:#b94a48;color:#fff;font-weight:bold;padding-left:10px;padding-right:10px;border-radius:15px;">151 KB</span>! It&#8217;s too bad we couldn&#8217;t use Modest Map&#8217;s compact library with Bing&#8217;s lightweight tiles&#8230;or can we? Well, in a way we can&#8230;</p>
<h2>OpenLayers</h2>
<p><a href="http://openlayers.org/" target="_blank">OpenLayers</a>, as the name suggests, is a completely free and Open Source library that allows you to switch between different base layers like Google Maps, Virtual Earth (Bing), Yahoo, etc. From a business model, this approach makes a lot of sense because it means you&#8217;re not tied to one mapping provider and you&#8217;re not as restricted by licensing or forced-API changes. With this approach, you can switch providers without having to completely change your code.</p>
<p>However, OpenLayers supports other maps by creating their own API layer <strong>on top</strong> of the other mapping APIs. So to use OpenLayers with Google or Bing, you&#8217;d have to include their libraries as well! This approach is fine for desktop, but it doesn&#8217;t make sense for mobile. Also, OpenLayers is not as well-documented as some of the others, and its API can be harder to learn. But, if you&#8217;re doing some serious GIS work, this is an API you&#8217;ll want to consider.</p>
<h2>Leaflet</h2>
<p>Fortunately, a new lightweight library called <a href="http://leaflet.cloudmade.com/index.html" target="_blank">Leaflet</a> has been gaining popularity because it is a modern Open Source library that uses HTML5 and CSS3. It was designed from the ground up to work in modern and mobile browsers. Since CSS3 is hardware-accelerated on many mobile devices, visuals like zooming and fading will be much faster than JavaScript-based animations.</p>
<p>Also, Leaflet has an easy-to-use API. So just how easy is it to add a map? First, we include the CSS and JavaScript:</p>
<pre class="prettyprint">                <code class="language-html"> &lt;link rel="stylesheet" href="leaflet.css"&gt; &lt;script type="text/javascript" src="leaflet.js"&gt;&lt;/script&gt; </code></pre>
<p>Then we create a new tile layer specifying the format of the tile URL with some options like maximum zoom level:</p>
<pre class="prettyprint">                <code class="language-js"> var tileUrl = "http://{s}.tile.cloudmade.com/BC9A493B41014CAABB98F0471D759707/997/256/{z}/{x}/{y}.png", tileAttr = "Map data © 2011 OpenStreetMap contributors, Imagery © 2011 CloudMade", tileLayer = new L.TileLayer(tileUrl, { maxZoom: 18, attribution: tileAttr }); </code></pre>
<p>Then we create the map and add the tile layer to it:</p>
<pre class="prettyprint">                <code class="language-js"> var map = new L.Map("map", { center: new L.LatLng(43.6425778753, -79.3870621920), // Toronto zoom: 14 }); map.addLayer(tileLayer); </code></pre>
<p>That&#8217;s it! Like OpenLayers, Leaflet allows you to easily switch between tile providers, but it does this in a much cleaner way — all you have to do is change the tile URL. So you don&#8217;t even need to include a vendor&#8217;s API to use their tiles. Of course, if you do use another tile provider, make sure you contact them about licensing and include the proper attribution.</p>
<pre class="prettyprint">                <code class="language-js"> var tileUrl = "http://{s}.googleapis.com/vt?lyrs=m@174225136&amp;src=apiv3&amp;hl=en-US&amp;x={x}&amp;y={y}&amp;z={z}&amp;s=Galile&amp;style=api%7Csmartmaps", tileAttr = "Map data © 2012 Google", tileLayer = new L.TileLayer(tileUrl, { maxZoom: 22, subdomains: ['mt0', 'mt1'], attribution: tileAttr }); </code></pre>
<p>So with this simple approach, you can change the base tile layer to almost any provider as long as they are using OpenStreetMap&#8217;s <a href="http://wiki.openstreetmap.org/wiki/Slippy_map_tilenames" target="_blank">&#8220;Slippy&#8221;</a> tile naming convention, which is pretty much every provider, except for Bing because Microsoft uses a different <a href="http://msdn.microsoft.com/en-us/library/bb259689.aspx" target="_blank">&#8220;Quadkey&#8221;</a> convention.</p>
<h2>Tile Naming Conventions</h2>
<p>Basically, Slippy uses a straight-forward naming convention that looks like this (&#8220;mustache-style&#8221; URL template):</p>
<pre>http://<span style="background-color:#ff0;">{s}</span>.tile.cloudmade.com/YOUR-API-KEY/997/256/<span style="background-color:#ff0;">{z}</span>/<span style="background-color:#ff0;">{x}</span>/<span style="background-color:#ff0;">{y}</span>.png</pre>
<p>where,</p>
<ul>
<li>{s} = subdomain</li>
<li>{x} = x-coordinate</li>
<li>{y} = y-coordinate</li>
<li>{z} = zoom level</li>
</ul>
<p>Here&#8217;s an example of an actual tile (near the CN Tower):</p>
<pre>http://<span style="background-color:#ff0;">b</span>.tile.cloudmade.com/BC9A493B41014CAABB98F0471D759707/997/256/<span style="background-color:#ff0;">14</span>/<span style="background-color:#ff0;">4578</span>/<span style="background-color:#ff0;">5980</span>.png</pre>
<p>But if we compare Slippy to the Quadkey format, you&#8217;ll notice it&#8217;s different enough that we can&#8217;t easily use it (at least not with Leaflet — we can with Modest Maps):</p>
<pre>http://ecn.<span style="background-color:#ff0;">{s}</span>.tiles.virtualearth.net/tiles/<span style="background-color:#ff0;">{style}</span><span style="background-color:#ff0;">{quadkey}</span>?g=914&amp;mkt=en-us&amp;lbl=l1&amp;stl=h&amp;shading=hill&amp;n=z

http://ecn.<span style="background-color:#ff0;">t0</span>.tiles.virtualearth.net/tiles/<span style="background-color:#ff0;">r</span><span style="background-color:#ff0;">03022313122210</span>?g=914&amp;mkt=en-us&amp;lbl=l1&amp;stl=h&amp;shading=hill&amp;n=z</pre>
<p>because the Quadkey format works like this:</p>
<ul>
<li>At zoom level 1 (of the entire world), there are only 4 tiles (or quadrants) numbered from 0 to 3. At the next zoom level, each tile is sub-divided into &#8220;quads&#8221;, and so on.</li>
<li>So the length of the quadkey represents the number of zoom levels.</li>
<li>The quadkey of any tile starts with the quadkey of its parent tile.</li>
<li>The first letter (which is not really part of the quadkey) specifies the base map style (r = Road, a = Aerial (Satellite), h = Hybrid (Aerial + Labels)</li>
</ul>
<p><a href="http://rimdevblog.files.wordpress.com/2012/05/ic962381.jpg"><img class="aligncenter size-full wp-image-9345" title="IC96238" src="http://rimdevblog.files.wordpress.com/2012/05/ic962381.jpg" alt="TITLE_IMAGE" width="623" height="365" /></a></p>
<figure>
<figcaption><a href="http://msdn.microsoft.com/en-us/library/bb259689.aspx" target="_blank">&#8220;Bing Maps Tile System&#8221;</a></figcaption>
</figure>
<p>Although it might be tempting to complain about Microsoft being different, from a database perspective, quadkeys makes indexing and storage really efficient.</p>
<h2>Hybrid Approach</h2>
<p>Hopefully, that gives you a better understanding of tile structures. Do you see the possibilities? This is AWESOME! This means we can easily interchange libraries and tiles to suit our needs. Essentially, we can build our own &#8220;hybrid&#8221; API or &#8220;mashup&#8221; from the best pieces available. So now we can have an API that uses Bing&#8217;s tiles, but is even <strong>lighter</strong> than Bing itself (which was already light to begin with at 432 KB)!</p>
<p>Here are some other combinations that are under 450 KB that you may want to consider:</p>
<table style="border:1px solid #DDD;border-radius:10px;">
<tbody>
<tr style="background-color:#000;color:#fff;">
<td style="padding:10px;text-align:center;">API Provider</td>
<td style="padding:10px;text-align:center;">Requests</td>
<td style="padding:10px;text-align:center;">Transferred<br />
(KB)</td>
<td style="padding:10px;text-align:center;">Images<br />
(KB)</td>
<td style="padding:10px;text-align:center;">Scripts<br />
(KB)</td>
</tr>
<tr>
<td style="padding:10px;">Modest Maps 1.0.0 beta + Bing Tiles</td>
<td style="padding:10px;">38</td>
<td style="padding:10px;"><span style="background-color:#468847;color:#fff;font-weight:bold;padding-left:10px;padding-right:10px;border-radius:15px;">380.51</span></td>
<td style="padding:10px;">338.97 (35)</td>
<td style="padding:10px;">39.62 (1)</td>
</tr>
<tr style="background-color:#eee;">
<td style="padding:10px;">Modest Maps 1.0.0 beta + Nokia Tiles</td>
<td style="padding:10px;">38</td>
<td style="padding:10px;"><span style="background-color:#468847;color:#fff;font-weight:bold;padding-left:10px;padding-right:10px;border-radius:15px;">412.41</span></td>
<td style="padding:10px;">370.93 (35)</td>
<td style="padding:10px;">39.62 (1)</td>
</tr>
<tr>
<td style="padding:10px;">Leaflet 0.3.1 + Nokia Tiles</td>
<td style="padding:10px;">30</td>
<td style="padding:10px;"><span style="background-color:#468847;color:#fff;font-weight:bold;padding-left:10px;padding-right:10px;border-radius:15px;">431.78</span></td>
<td style="padding:10px;">342.09 (26)</td>
<td style="padding:10px;">81.52 (1)</td>
</tr>
</tbody>
</table>
<p>Since we were able to make Bing lighter, I was curious to see if we could do the same with Google, and the result really surprised me! As you may recall, Google Maps transferred <strong>950 KB</strong>, but when I combined Leaflet with Google&#8217;s tiles, it only transferred <strong>498 KB</strong>! That&#8217;s half the size, which is great! But why such a difference?! Well, if we look at the number of requests, it gives us a big clue — Google&#8217;s API is loading <strong>twice</strong> the number of tiles!</p>
<table style="border:1px solid #DDD;border-radius:10px;">
<tbody>
<tr style="background-color:#000;color:#fff;">
<td style="padding:10px;text-align:center;">API Provider</td>
<td style="padding:10px;text-align:center;">Requests</td>
<td style="padding:10px;text-align:center;">Transferred<br />
(KB)</td>
<td style="padding:10px;text-align:center;">Images<br />
(KB)</td>
<td style="padding:10px;text-align:center;">Scripts<br />
(KB)</td>
</tr>
<tr>
<td style="padding:10px;">Google v3</td>
<td style="padding:10px;">66</td>
<td style="padding:10px;">949.65</td>
<td style="padding:10px;">842.93 (54)</td>
<td style="padding:10px;">105.88 (12)</td>
</tr>
<tr style="background-color:#eee;">
<td style="padding:10px;">Leaflet 0.3.1 + Google Tiles</td>
<td style="padding:10px;">30</td>
<td style="padding:10px;">497.71</td>
<td style="padding:10px;">408.01 (26)</td>
<td style="padding:10px;">81.52 (1)</td>
</tr>
<tr>
<td style="padding:10px;"><strong>Difference:</strong></td>
<td style="border-top:2px solid #000;"><span style="background-color:#b94a48;color:#fff;font-weight:bold;padding-left:10px;padding-right:10px;border-radius:15px;">36</span></td>
<td style="border-top:2px solid #000;"><span style="background-color:#b94a48;color:#fff;font-weight:bold;padding-left:10px;padding-right:10px;border-radius:15px;">451.94</span></td>
<td style="border-top:2px solid #000;"><span style="background-color:#b94a48;color:#fff;font-weight:bold;padding-left:10px;padding-right:10px;border-radius:15px;">434.92</span></td>
<td style="border-top:2px solid #000;">24.36</td>
</tr>
</tbody>
</table>
<p>At first, I thought it might be pre-fetching or &#8220;lazy loading&#8221; tiles for areas outside the bounding box in case a user pans or zooms. But when I inspected the extra tiles, I found it&#8217;s actually loading another set of tiles for the <strong>same area</strong>, which I haven&#8217;t been able to figure out why — the extra tiles don&#8217;t seem to be displayed anywhere. It&#8217;s still a map view tile, but it has slightly different labels. Notice the one on the right has &#8220;Corktown&#8221; and the other one doesn&#8217;t?</p>
<table style="border:1px solid #DDD;border-radius:10px;">
<tbody>
<tr>
<td style="padding:10px;text-align:center;font-weight:bold;">Tile Set 1 (displayed)</td>
<td style="padding:10px;text-align:center;font-weight:bold;">Tile Set 2 (not displayed)</td>
</tr>
<tr>
<td style="padding:10px;font-size:8pt;"><span style="background-color:#ff0;"><a href="http://rimdevblog.files.wordpress.com/2012/05/vt_dvp_gardiner1_circle.png"><img class="aligncenter size-full wp-image-9347" title="vt_dvp_gardiner1_circle" src="http://rimdevblog.files.wordpress.com/2012/05/vt_dvp_gardiner1_circle.png" alt="" width="256" height="256" /></a>m@174232040</span>&amp;src=apiv3&amp;hl=en-US&amp;x=4580&amp;y=5979</p>
<p>&amp;z=14</p>
<p>&amp;s=Galileo</p>
<p>&amp;style=api%7Csmartmaps</td>
<td style="padding:10px;font-size:8pt;"><span style="background-color:#ff0;"><a href="http://rimdevblog.files.wordpress.com/2012/05/vt_dvp_gardiner2_circle.png"><img class="aligncenter size-full wp-image-9348" title="vt_dvp_gardiner2_circle" src="http://rimdevblog.files.wordpress.com/2012/05/vt_dvp_gardiner2_circle.png" alt="" width="256" height="256" /></a>m@174000000</span>&amp;src=apiv3&amp;hl=en-US&amp;x=4580&amp;y=5979</p>
<p>&amp;z=14</p>
<p>&amp;s=Galileo</p>
<p>&amp;style=api%7Csmartmaps</td>
</tr>
</tbody>
</table>
<p>I&#8217;m sure there&#8217;s a good reason for this, but I&#8217;d be curious if there&#8217;s an option to disable that? Either way, the good news is Google&#8217;s tiles are not as heavy as I first thought so we can use them with Modest Maps or Leaflet to build familiar-looking mapping applications that will be more lightweight especially for mobile.</p>
<p>Besides being able to switch between providers, this hybrid approach has other advantages:</p>
<ol>
<li>For packaged applications like <a href="https://bdsc.webapps.blackberry.com/html5/" target="_blank">BlackBerry® WebWorks™</a>, you can locally include the required API files (JavaScript, CSS, and images) with your application so you don&#8217;t need to fetch them from a remote server. This makes loading an app faster and reduces bandwidth charges.</li>
<li>Another advantage of having local files is you don&#8217;t have to worry as much about a provider forcing an API change that can break your customizations. Although, you can usually reference an older API, sometimes a provider will force an upgrade even if you try to reference an older version.</li>
<li>In the case of Yahoo! Maps, which discontinued its map service in September 2011, a local version means your app can still work. For example, Leaflet provides a layer control so you can select from different base layers.</li>
</ol>
<p>These advantages are important especially for enterprise or mission-critical applications that need to minimize risk and downtime. So in the next post, I&#8217;ll cover some techniques for adding offline capabilities to your map. Hopefully, with this &#8220;best of breed&#8221; approach, you&#8217;ll be ready to build a map-based app that will feel more like a paper airplane than a paper ball.</p>
<div style="text-align:center;"><a href="http://rimdevblog.files.wordpress.com/2012/05/origami_sm1.png"><img class="aligncenter size-full wp-image-9349" title="origami_sm" src="http://rimdevblog.files.wordpress.com/2012/05/origami_sm1.png" alt="" width="140" height="80" /></a></div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rimdevblog.wordpress.com/9328/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rimdevblog.wordpress.com/9328/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/rimdevblog.wordpress.com/9328/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/rimdevblog.wordpress.com/9328/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/rimdevblog.wordpress.com/9328/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/rimdevblog.wordpress.com/9328/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/rimdevblog.wordpress.com/9328/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/rimdevblog.wordpress.com/9328/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/rimdevblog.wordpress.com/9328/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/rimdevblog.wordpress.com/9328/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/rimdevblog.wordpress.com/9328/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/rimdevblog.wordpress.com/9328/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/rimdevblog.wordpress.com/9328/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/rimdevblog.wordpress.com/9328/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=9328&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devblog.blackberry.com/2012/05/lightweight-maps-for-mobile-part-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/01266d01d1ae9a95d889f5143acd2a49?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">myjing</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2012/05/sheet_sm.png" medium="image">
			<media:title type="html">sheet_sm</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2012/05/crumpled_sm.png" medium="image">
			<media:title type="html">crumpled_sm</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2012/05/origami_sm.png" medium="image">
			<media:title type="html">origami_sm</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2012/05/ic962381.jpg" medium="image">
			<media:title type="html">IC96238</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2012/05/vt_dvp_gardiner1_circle.png" medium="image">
			<media:title type="html">vt_dvp_gardiner1_circle</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2012/05/vt_dvp_gardiner2_circle.png" medium="image">
			<media:title type="html">vt_dvp_gardiner2_circle</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2012/05/origami_sm1.png" medium="image">
			<media:title type="html">origami_sm</media:title>
		</media:content>
	</item>
		<item>
		<title>Payment Service SDK v1.8 for BlackBerry Java has been released!</title>
		<link>http://devblog.blackberry.com/2012/05/payment-service-sdk-new-release/</link>
		<comments>http://devblog.blackberry.com/2012/05/payment-service-sdk-new-release/#comments</comments>
		<pubDate>Mon, 07 May 2012 18:54:49 +0000</pubDate>
		<dc:creator>garett</dc:creator>
				<category><![CDATA[Java Development]]></category>
		<category><![CDATA[BlackBerry Java]]></category>
		<category><![CDATA[class]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[Payment Service SDK]]></category>

		<guid isPermaLink="false">http://devblog.blackberry.com/?p=8728</guid>
		<description><![CDATA[Payment Service SDK version 1.8  is now available for download, and is specifically for BlackBerry Java development.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=8728&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I am pleased to announce that the Payment Service SDK version 1.8 (“Version 1.8”) is now <a href="https://bdsc.webapps.blackberry.com/devzone/appworld/payment">available for download</a>. This update is specifically for BlackBerry® Java® development and adds three new features:</p>
<ol>
<li>Asynchronous Retrieval of Purchase History</li>
<li>The DigitalGood Class</li>
<li>Asynchronous Retrieval of Digital Goods Available for Purchase</li>
</ol>
<h3><strong>Asynchronous Retrieval of Purchase History</strong></h3>
<p>In the previous Payment Service SDK version 1.5 (Version 1.5), only synchronous retrieval of purchase history was possible. This meant that when retrieval was occurring, the user interface would be unusable &#8211; a busy indicator would be displayed. This was acceptable for some situations but it could really impede usability of the application. With Version 1.8, you can now program your application to perform this pull request asynchronously using the following line of code:</p>
<p><span id="more-8728"></span></p>
<pre><code>PurchaseHistory.get(PurchaseHistoryListingListener purchaseHistoryListingListener);</code></pre>
<p>The PurchaseHistoryListingListener interface has only 2 methods:</p>
<pre><code>PurchaseHistoryListingListener(){</code>
public void error(String message, int errorCode) {
}
public void success(Purchase[] goods) {
 }
};</pre>
<p>The huge benefit here is that it is very easy to retrieve the purchase history of a user in the background without causing any impact to the user interface.</p>
<h3><strong>The DigitalGood Class</strong></h3>
<p>In Version 1.5, digital goods existed only in the BlackBerry App World™ storefront client. There are no actual classes in the Payment Service SDK to encapsulate what a digital good object actually is. Version 1.8 adds a DigitalGood class to do just this. The new DigitalGood class allows the application to retrieve information about the goods hosted on BlackBerry App World available for purchase by the user, where the Purchase class previously used only provides information about the actual purchase. The big benefit of this class: a developer can add new items to the Vendor Portal without needing to release a new version of their application. This new addition is also greeted with a way to retrieve all available digital goods asynchronously (continued in the next section).</p>
<h3><strong>Asynchronous Retrieval of Digital Goods Available for Purchase</strong></h3>
<p>The method to retrieve a list of digital goods available for purchase by the user is very similar to that used above to retrieve the PurchaseHistory. First, call the DigitalGoods#get() method passing in your DigitalGoodsListingListener:</p>
<pre><code>DigitalGoods.get(DigitalGoodsListingListener digitalGoodsListingListener);</code></pre>
<p>In your DigitalGoodsListingListener implement the 2 defined methods:</p>
<pre><code>DigitalGoodsListingListener(){</code>
public void error(String message, int errorCode) {
}
public void success(DigitalGood[] goods) {
}
};</pre>
<p>This is virtually identical to the PurchaseHistoryListingListener implementation; however, the <code>success()</code> method receives an array of DigitalGood objects as opposed to Purchase.</p>
<p>The above three new features are easy to implement and should help simplify the development logic as well as improve the overall user experience of your application. You can find the new Payment Service SDK version 1.8 <a href="https://bdsc.webapps.blackberry.com/devzone/appworld/payment">available for download here</a>. The download includes full JavaDocs, and additional documentation (developer’s guide, release notes) can be viewed <a href="http://docs.blackberry.com/en/developers/subcategories/?userType=21&amp;category=Payment+Service" target="_new">here</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rimdevblog.wordpress.com/8728/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rimdevblog.wordpress.com/8728/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/rimdevblog.wordpress.com/8728/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/rimdevblog.wordpress.com/8728/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/rimdevblog.wordpress.com/8728/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/rimdevblog.wordpress.com/8728/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/rimdevblog.wordpress.com/8728/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/rimdevblog.wordpress.com/8728/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/rimdevblog.wordpress.com/8728/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/rimdevblog.wordpress.com/8728/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/rimdevblog.wordpress.com/8728/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/rimdevblog.wordpress.com/8728/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/rimdevblog.wordpress.com/8728/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/rimdevblog.wordpress.com/8728/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=8728&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devblog.blackberry.com/2012/05/payment-service-sdk-new-release/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/75e7e69af37da351a3462a17576c2209?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">gbeuk</media:title>
		</media:content>
	</item>
		<item>
		<title>ZXing and CppUnit ported for BlackBerry 10</title>
		<link>http://devblog.blackberry.com/2012/05/zxing-and-cppunit-ported-for-blackberry-10/</link>
		<comments>http://devblog.blackberry.com/2012/05/zxing-and-cppunit-ported-for-blackberry-10/#comments</comments>
		<pubDate>Mon, 07 May 2012 18:32:10 +0000</pubDate>
		<dc:creator>Eduardo P-L.</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[app]]></category>
		<category><![CDATA[apps]]></category>
		<category><![CDATA[BlackBerry 10]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[CppUnit]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[ZXing]]></category>

		<guid isPermaLink="false">http://devblog.blackberry.com/?p=9295</guid>
		<description><![CDATA[Hope your Monday is going great. Here&#8217;s a guest post from Clifford Hung (hungc on Github) on two new contributions to the BlackBerry Open Source community. Image By André Karwath (Own work) [CC-BY-SA-3.0 (www.creativecommons.org/licenses/by-sa/3.0)], via Wikimedia Commons ZXing (pronounced “zebra crossing”) is an open-source, multi-format 1D/2D barcode image processing library implemented in Java, with ports to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=9295&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h5><em>Hope your Monday is going great. Here&#8217;s a guest post from Clifford Hung (<a href="https://github.com/hungc">hungc on Github</a>)</em> on two new contributions to the BlackBerry Open Source community.</h5>
<h6 style="text-align:center;"><a href="http://rimdevblog.files.wordpress.com/2012/05/640px-equus_grevyi_aka.jpg"><img class="aligncenter  wp-image-9299" title="640px-Equus_grevyi_(aka)" src="http://rimdevblog.files.wordpress.com/2012/05/640px-equus_grevyi_aka.jpg?w=576&h=366" alt="TITLE_IMAGE" width="576" height="366" /></a></h6>
<h6 style="text-align:center;">Image By André Karwath (Own work) [CC-BY-SA-3.0 (www.creativecommons.org/licenses/by-sa/3.0)], via Wikimedia Commons</h6>
<p><a href="http://code.google.com/p/zxing/">ZXing</a> (pronounced “zebra crossing”) is an open-source, multi-format 1D/2D barcode image processing library implemented in Java, with ports to other languages. It decodes barcodes on the device without communicating with a server. ZXing currently support these formats:</p>
<table width="100%" border="1" cellspacing="0" cellpadding="3">
<tbody>
<tr>
<td>
<ul>
<li>UPC-A and UPC-E</li>
</ul>
</td>
<td>
<ul>
<li>EAN-8 and EAN-13</li>
</ul>
</td>
<td>
<ul>
<li>Code 39</li>
</ul>
</td>
</tr>
<tr>
<td>
<ul>
<li>Code 93</li>
</ul>
</td>
<td>
<ul>
<li>Code 128</li>
</ul>
</td>
<td>
<ul>
<li>ITF</li>
</ul>
</td>
</tr>
<tr>
<td>
<ul>
<li>Codabar</li>
</ul>
</td>
<td>
<ul>
<li>RSS-14 (all)</li>
</ul>
</td>
<td>
<ul>
<li>QR Code</li>
</ul>
</td>
</tr>
<tr>
<td>
<ul>
<li>Data Matrix</li>
</ul>
</td>
<td>
<ul>
<li>PDF 417 (alpha)</li>
</ul>
</td>
<td>
<ul>
<li>Aztec (beta)</li>
</ul>
</td>
</tr>
</tbody>
</table>
<p>The port of ZXing 2.0 for BlackBerry® 10 devices is available in our <a href="https://github.com/blackberry/zxing">ZXing repository at GitHub</a>; note that only the C++ source under zxing/cpp/core was ported. See the <a href="https://github.com/blackberry/ZXing#readme">README.md</a> for build instructions.</p>
<p>The ZXing unit test suite uses CppUnit, so a port of version 1.12.1 of this C++ unit testing framework was also done for BlackBerry 10 and it is available at the <a href="https://github.com/blackberry/CppUnit">CppUnit repository</a>. Build instructions are listed in the <a href="https://github.com/blackberry/CppUnit#readme">README.md</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rimdevblog.wordpress.com/9295/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rimdevblog.wordpress.com/9295/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/rimdevblog.wordpress.com/9295/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/rimdevblog.wordpress.com/9295/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/rimdevblog.wordpress.com/9295/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/rimdevblog.wordpress.com/9295/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/rimdevblog.wordpress.com/9295/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/rimdevblog.wordpress.com/9295/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/rimdevblog.wordpress.com/9295/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/rimdevblog.wordpress.com/9295/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/rimdevblog.wordpress.com/9295/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/rimdevblog.wordpress.com/9295/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/rimdevblog.wordpress.com/9295/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/rimdevblog.wordpress.com/9295/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=9295&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devblog.blackberry.com/2012/05/zxing-and-cppunit-ported-for-blackberry-10/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f662e1b4e55509b4205db5b8187e374f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">eduardopele</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2012/05/640px-equus_grevyi_aka.jpg" medium="image">
			<media:title type="html">640px-Equus_grevyi_(aka)</media:title>
		</media:content>
	</item>
	</channel>
</rss>
