<?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 &#187; Laurence Muller</title>
	<atom:link href="http://devblog.blackberry.com/tag/laurence-muller/feed/" rel="self" type="application/rss+xml" />
	<link>http://devblog.blackberry.com</link>
	<description></description>
	<lastBuildDate>Tue, 18 Jun 2013 16:50:23 +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 &#187; Laurence Muller</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>NodeBeat: A BlackBerry Open Source Success Story</title>
		<link>http://devblog.blackberry.com/2012/07/dev-success-nodebeat/</link>
		<comments>http://devblog.blackberry.com/2012/07/dev-success-nodebeat/#comments</comments>
		<pubDate>Wed, 25 Jul 2012 15:25:36 +0000</pubDate>
		<dc:creator>Alex Kinsella</dc:creator>
				<category><![CDATA[Case Studies & Success Stories]]></category>
		<category><![CDATA[blackberry playbook]]></category>
		<category><![CDATA[blackberry tablet os]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[Laurence Muller]]></category>
		<category><![CDATA[NodeBeat]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[qnx]]></category>

		<guid isPermaLink="false">http://devblog.blackberry.com/?p=10429</guid>
		<description><![CDATA[Check out a great success story about how a pair of developers ported NodeBeat to the BlackBerry OS using open source.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=10429&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><em>Guest post from <a href="https://twitter.com/RSSessantotto" target="_blank">Roberto S.</a> &#8211; Ed.</em></p>
<p><a href="http://rimdevblog.files.wordpress.com/2012/07/nodebeat.jpg"><img class="aligncenter size-full wp-image-10441" title="nodebeat" src="http://rimdevblog.files.wordpress.com/2012/07/nodebeat.jpg?w=480&#038;h=281" alt="TITLE_IMAGE" width="480" height="281" /></a></p>
<p>Every once in a while, a feel good story comes around that rallies the troops in the BlackBerry® Developer Relations team. Such was the case with this story. It all started with a developer named <a href="http://twitter.com/LaurenceMuller" target="_new">Laurence Muller</a> taking advantage of the RIM® offer to submit his Android™ app (fIRC) to the <a href="http://appworld.blackberry.com" target="_new">BlackBerry App World™</a> storefront to qualify for a free BlackBerry® PlayBook™tablet. After Laurence received his <a href="http://www.blackberry.com/playbook" target="_new">BlackBerry PlayBook</a> tablet, he instantly recognized how powerful the device was – especially the BlackBerry® Tablet OS built on QNX – and thought that it might be possible to port the <a href="http://appworld.blackberry.com/webstore/content/106167" target="_new">NodeBeat</a> application to BlackBerry PlayBook tablet as a native app.</p>
<p>Laurence had worked on porting the NodeBeat application to the Android platform in collaboration with Affinity Blue (owned by <a href="http://twitter.com/SethSandler" target="_new">Seth Sandler</a>). NodeBeat is built using an open source application framework called openFrameworks. Therefore, the first task at hand was porting the framework. Laurence started reading the NDK documentation and began the process of porting the API under the ofxQNX repository he setup on GitHub. One by one, each API set and sample was ported and running.</p>
<p><span id="more-10429"></span></p>
<p>Laurence eventually hit a roadblock with audio. He built a native app to test some audio code but it wasn’t running properly. He finally decided to post a question to the <a href="http://supportforums.blackberry.com/t5/Developer-Support-Forums/ct-p/blackberrydev" target="_new">BlackBerry Developer Support Forum</a> to explain his project and ask for help. I was assigned this question to answer. I reviewed the question and sample code provided, checked the blogs that Laurence previously posted (Laurence’s blog is available at <a href="http://www.multigesture.net/" target="_new">http://www.multigesture.net/</a>) and, after checking the NDK documentation myself, ascertained that Laurence was running into a buffer underflow issue and that his current test approach was not running consistently enough without a separate thread.</p>
<p>I answered the post and provided some suggestions to try to correct the problem. Laurence tried the suggestions and it did get better, but not quite good enough. After someone else on my team suggested that OpenAL might help and I passed that suggestion on to Laurence, further investigation by Laurence’s partner Seth Sandler led to switching over to SDL for injecting the audio &#8212; and suddenly the audio was performing much better. At this point, the ofxQNX port was complete, and Laurence contributed it to the BlackBerry GitHub repo. To see some of the samples in action, check out the video below:</p>
<p style="text-align:center;"><span class='embed-youtube' style='text-align:center; display: block;'><iframe class='youtube-player' type='text/html' width='560' height='315' src='http://www.youtube.com/embed/4FuC9AEg1LQ?version=3&#038;rel=1&#038;fs=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;wmode=transparent' frameborder='0'></iframe></span></p>
<p style="text-align:center;">[ <a href="http://www.youtube.com/watch?v=4FuC9AEg1LQ" target="_new">YouTube link for mobile viewing</a> ]</p>
<p>The next task was porting the NodeBeat app, which took just a few days once RIM supplied another BlackBerry PlayBook tablet to Seth. Laurence and Seth were pleased that the native BlackBerry PlayBook tablet port easily outperformed their Android port. This was primarily due to the low input and audio latency for the native implementation (whereas the Android build runs slower since native code is running in a different layer and communication between GUI and the native thread is slow over JNI) and its performance was on par with their iOS version. NodeBeat was quickly submitted to BlackBerry App World for approval.</p>
<p style="text-align:center;"><span class='embed-youtube' style='text-align:center; display: block;'><iframe class='youtube-player' type='text/html' width='560' height='315' src='http://www.youtube.com/embed/xhZ46PpccGQ?version=3&#038;rel=1&#038;fs=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;wmode=transparent' frameborder='0'></iframe></span></p>
<p style="text-align:center;">[ <a href="http://www.youtube.com/watch?feature=player_embedded&amp;v=xhZ46PpccGQ" target="_new">YouTube link for mobile viewing</a> ]</p>
<p>What’s in the cards for NodeBeat? Well, Laurence has already started porting it to BlackBerry® 10 using the simulator, and they’re looking forward to getting their hands on a BlackBerry 10 Dev Alpha testing device. In the meantime, if you like composing music and want to try a new app for doing so, give their app a whirl.</p>
<p>What makes this story so special is this project was not sponsored by RIM. It was totally driven by developers in the open source community and it was almost completed without any help from RIM. This clearly demonstrates that RIM’s open source strategy is working, facilitating the port of apps from other platforms to BlackBerry PlayBook tablet and BlackBerry 10. Our developer community is engaged, resulting in even more improvements to the platform for all developers. We strongly encourage our developer community to follow their desires and port what they need to the platform. However, know that we’re here and ready to help if you run into any issues. In the end, by working together, the platform will get even better and everyone wins.</p>
<p>If you are working on an open source project for the BlackBerry platform utilizing the NDK, let us know. We’ll be glad to write a blog post about it.</p>
<p>For more information about OpenFrameworks, Laurence’s port, and Laurence himself, check out the links below:</p>
<ul>
<li>The openFrameworks repository that where ofxQNX is currently hosted: <a href="https://github.com/falcon4ever/openFrameworks/tree/developPlayBook" target="_new">https://github.com/falcon4ever/openFrameworks/tree/developPlayBook</a></li>
<li>Some additional video material (most links are on Laurence’s Twitter stream): <a href="https://www.youtube.com/user/falcon4ever?feature=mhee" target="_new">https://www.youtube.com/user/falcon4ever?feature=mhee</a></li>
<li>The official openFrameworks website/ support forums: <a href="http://www.openframeworks.cc/" target="_new">http://www.openframeworks.cc/</a></li>
<li>Some more information about the project on Laurence’s blog: <a href="http://www.multigesture.net/2012/04/27/playbook-add-on-ofxqnx/" target="_new">http://www.multigesture.net/2012/04/27/playbook-add-on-ofxqnx/</a> and <a href="http://www.multigesture.net/projects/ofxqnx/" target="_new">http://www.multigesture.net/projects/ofxqnx/</a></li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rimdevblog.wordpress.com/10429/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rimdevblog.wordpress.com/10429/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=10429&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devblog.blackberry.com/2012/07/dev-success-nodebeat/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/07/nodebeat.jpg" medium="image">
			<media:title type="html">nodebeat</media:title>
		</media:content>
	</item>
	</channel>
</rss>
