<?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; grahamzibar</title>
	<atom:link href="http://devblog.blackberry.com/author/grahamzibar/feed/" rel="self" type="application/rss+xml" />
	<link>http://devblog.blackberry.com</link>
	<description></description>
	<lastBuildDate>Fri, 17 May 2013 17:47:42 +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; grahamzibar</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>JavaScript FTW: Episode 2: Classes and Inheritance (and why it matters!)</title>
		<link>http://devblog.blackberry.com/2013/03/javascript-ftw-episode-2/</link>
		<comments>http://devblog.blackberry.com/2013/03/javascript-ftw-episode-2/#comments</comments>
		<pubDate>Mon, 11 Mar 2013 15:54:40 +0000</pubDate>
		<dc:creator>grahamzibar</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Efficiency]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://devblog.blackberry.com/?p=14008</guid>
		<description><![CDATA[As we discussed last time, if we have code that&#8217;s disorganized and difficult to debug, coding performance and scalability optimizations becomes moot. However, being explicit with your code not only makes your life easier, but actually makes your code faster (say whaaaaaaaat?). We have to remember that JavaScript isn&#8217;t like most other languages. The majority [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=14008&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>As we discussed last time, if we have code that&#8217;s disorganized and difficult to debug, coding performance and scalability optimizations becomes moot. However, being explicit with your code not only makes your life easier, but actually makes your code faster (say whaaaaaaaat?).</p>
<p>We have to remember that JavaScript isn&#8217;t like most other languages. The majority of languages do as they&#8217;re told regardless of whether they&#8217;re machine languages, scripting languages, markup languages, or whatever else. When you tell Python to make an Array, we get an Array. When you tell ActionScript to create an Object, you get just that – an Object. We&#8217;re pretty safe in assuming the language we&#8217;re using isn&#8217;t lying to us. JavaScript, however, takes another approach. JavaScript has a plan – and you&#8217;re a part of it – it&#8217;s just going to take your ideas and try to do something better. Problem is.. it&#8217;s not always right.<br />
<span id="more-14008"></span></p>
<p>JavaScript, along with the rest of the web platform, is <strong>not</strong> implemented by one organization. It is an implemented standard and nothing more. So, it is up to several teams to implement this standard and compete with one another (Mozilla, Apple, Microsoft, BlackBerry, Opera, and so on). But, it&#8217;s not just enough to implement the standard – it has to be fast, efficient, and&#8230; well&#8230; better than everyone else&#8217;s. Thus, each platform will try to make different assumptions and educated guesses as to what you&#8217;re trying to accomplish and find ways to make it run faster. Therefore, the more you cater to a JavaScript Engine&#8217;s ability to guess what you&#8217;re trying to do, the more you&#8217;ll see a boost in performance (and a surprisingly large one too). For example, if you have a sparse array (an array which has a lot of empty indices between ones that have values), an engine will typically manage that array as a dictionary to save resources, but it will cost you when it comes time to iterate over that array.</p>
<p>I could go on for an entire article about which particular optimizations to make (and I definitely will in my next post) but here I&#8217;m going to focus on how creating clean explicit code is an amazing start to make your JavaScript run faster.</p>
<h3><strong>OK. How do I this?</strong></h3>
<p>If you remember from my previous post, I wrote about all sorts of “good practices” junk but, most importantly, I touched on <strong>classes</strong> and <strong>inheritance</strong>. We all know JavaScript to be loosely-typed, polymorphic, and prototype-based. These characteristics of JavaScript can be incredibly effective and yet, if used incorrectly, you&#8217;re gonna have a bad time.</p>
<p>When we want to extend the functionality of DOM Elements, there&#8217;s really only so many ways to do this and the most effective being the following:</p>
<pre>HTMLElement.prototype.someFunction = function(param1, param2) {
	// Your code here
};</pre>
<p>Depending on the engine, this might compile <strong>someFunction</strong> into the <strong>HTMLElement</strong> class or it might create a separate “hidden class” for managing this new functionality behind the scenes. Either way, this slows down our application a great deal and needs to be kept to a minimum and only when necessary. A more common use-case is as follows:</p>
<pre>var Point = function Point(x, y) {
	this.x = x;
	this.y = y;
};

var point3D = new Point(3, 4);
point3D.z = 6;</pre>
<p>We have some class called <strong>Point</strong> which did a fine job of being a model for 2-dimensional coordinates. However, at some point in our application, we needed to keep track of an extra coordinate for whatever really good reason we have (don&#8217;t ask questions and just believe me) and so we decided to add the property <strong>z</strong>. To most JavaScript developers, this seems like an awesome solution. The problem is the engine that is interpreting our JavaScript code is going to have troubling guessing what we want to do and, in some cases, will keep a “hidden class” for <strong>Point</strong> and an arbitrary one for our one-time <strong>point3D</strong> variable which was created at runtime and, as a result, greatly slowed down our application. Instead we should have created another class called <strong>Point3D</strong>, or added the property <strong>z</strong> to the <strong>Point</strong> class and setting its default value to 0 like this:</p>
<pre>var Point = function Point(x, y, z) {
	this.x = x;
	this.y = y;
	this.z = z ? z : 0;
};</pre>
<p>This way we don&#8217;t break previous code that relied on this class and we now have a more generic point model for future 3-dimensional uses.</p>
<p>As our classes become increasingly complex and modifications to existing classes are required, constantly modifying our original class can turn our once easy-to-use reusable code snippet into a monster. This is easily solved with <a href="http://en.wikipedia.org/wiki/Inheritance_(object-oriented_programming" target="_new">Object Inheritance</a>. For example, perhaps we create a simple class for dispatching generic events like so:</p>
<pre>// EventDispatcher
(function EventDispatcherStaticScope() {
	// Give functions an extra somethin' for the EventDispatcher to use.
	Function.prototype.EventDispatcher_ID = 0;	
	// A static variable for creating unique IDs
	var ID = 0;
	// The class itself (note no 'var' makes EventDispatcher global)
	EventDispatcher = function EventDispatcher() {
		// Private global variables to this class
		var _events = {};
		// more vars goes here...
		this.addEventListener = function(event, callback) {
			// Whatever goes here...
		};
		this.removeEventListener = function(event, callback) {
			// More codez
		};
		this.dispatchEvent = function(event, data) {
			// dispatching event logic
		};
	};
})();</pre>
<p>Whatever the above class does exactly isn&#8217;t important. What is important is what we&#8217;re about to do next. Let&#8217;s say we want a <strong>Timer</strong> class for expanding the basal <strong>setInterval</strong> function JavaScript provides and giving it some event dispatching capabilities. We could do what we first did with <strong>Point</strong> and just add the necessary properties we need to an instance of EventDispatcher. Unfortunately, that code wouldn&#8217;t be reusable and, as we learned, will slow down our app while executing. We could copy and paste all of <strong>EventDispatcher</strong>&#8216;s functionality but this wouldn&#8217;t help us keep our code <strong>DRY</strong> (Don&#8217;t Repeat Yourself) and any fixes would have to be made in two places. We can, however, have <strong>Timer</strong> be a subclass of <strong>EventDispatcher</strong>! This way, we can create a class our engine will make good guesses about while, at the same, extending functionality we might only need for now but can be easily reused later. Nice!</p>
<p>Here&#8217;s how you would go about it:</p>
<pre>var Timer = function Timer(ms) {
	var __self__ = this; // Internal reference
	this.inheritFrom = EventDispatcher;
	this.inheritFrom();
	delete this.inheritFrom; // Save us a bit of memory.

	var _timer = false; // Class's global variable
	var timerDispatch = function() {
		__self__.dispatchEvent('timer');
	};
	this.start = function() {
		if (!_timer)
			_timer = setInterval(timerDispatch, ms);
	};
	this.stop = function() {
		if (!_timer)
			return;
		clearInterval(_timer);
		_timer = false;
	};
};</pre>
<p>And, just so we&#8217;re clear, <strong>Timer</strong> has all the same functions <strong>EventDispatcher</strong> has – plus its own!</p>
<p>Creating classes and inheriting functionality is a sure way to keep your code running well, the JavaScript engine happy, and your code clean and easy to debug. This sure beats creating generic objects and modifying properties (deleting them and adding new ones) during runtime.</p>
<p>This is a lot to swallow and hence why I tried to focus only a few things for this particular post. Be sure to ask questions and I&#8217;ll be sure to answer them!</p>
<p>See you next time!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rimdevblog.wordpress.com/14008/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rimdevblog.wordpress.com/14008/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=14008&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devblog.blackberry.com/2013/03/javascript-ftw-episode-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/b76b419d6179f12c0faa2e8e7632bfc3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">grahamzibar</media:title>
		</media:content>
	</item>
		<item>
		<title>Javascript FTW</title>
		<link>http://devblog.blackberry.com/2013/02/javascript/</link>
		<comments>http://devblog.blackberry.com/2013/02/javascript/#comments</comments>
		<pubDate>Fri, 15 Feb 2013 14:45:22 +0000</pubDate>
		<dc:creator>grahamzibar</dc:creator>
				<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Efficiency]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[webworks]]></category>

		<guid isPermaLink="false">http://devblog.blackberry.com/?p=13497</guid>
		<description><![CDATA[So You’re a Web Developer? That’s pretty cool. And if you&#8217;re here wanting to develop mobile apps, that’s pretty cool too. We have an unparalleled HTML5 app platform which makes it very accessible for those familiar with building web apps to transition into making mobile apps. But is it ever that easy? On the web, [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=13497&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<h3><strong>So You’re a Web Developer?</strong></h3>
<p><a href="http://rimdevblog.files.wordpress.com/2013/02/me11.jpg"><img class="aligncenter size-full wp-image-13795" alt="TITLE_IMAGE" src="http://rimdevblog.files.wordpress.com/2013/02/me11.jpg?w=403&#038;h=604" width="403" height="604" /></a></p>
<p>That’s pretty cool. And if you&#8217;re here wanting to develop mobile apps, that’s pretty cool too. We have an unparalleled <a href="http://developer.blackberry.com/html5" target="_new">HTML5 app platform</a> which makes it very accessible for those familiar with building web apps to transition into making mobile apps. But is it ever that easy?</p>
<p>On the web, we’re accustomed to building page-to-page or AJAX navigation, as opposed to using templates and transitioning from view-to-view all within JavaScript; it’s a nice top-down/linear way of thinking. We start at the top with a request, scripts execute, and then the page is done. However, we want our apps to feel like apps &#8211; not like webpages.</p>
<p><span id="more-13497"></span></p>
<p>So, we use all sorts of magical libraries and frameworks to do the legwork for us. We slap their scripts in the “head” tag, create some views, create either a server-side or client-side model, and then we have ourselves an app. But then it’s slow. Or it’s buggy. We try to fix it and the framework or library we’re using is picky, or requires more modification than what’s really worthwhile. We want to make changes (we know your boss asked for it) and suddenly we have to re-write our code. But what really happens is you hack something together that merges your codebase into one hot unmanageable mess. Next thing you know, the HTML5 app you’re building isn&#8217;t awesome. We want awesome. <strong>So let’s fix that</strong>.</p>
<h3><strong>Where Do We Start?</strong></h3>
<p>Before you can worry about writing efficient JavaScript, you need to write efficient JavaScript. Yeah, you read that right. If your codebase isn’t scalable or manageable, there’s no point in writing sneaky algorithms. In order to squeeze every bit of performance out of your app, you need to be able to see how your codebase talks to all of its different parts. If you don’t, you’re gonna have a bad time. Not only will this help you see your code more clearly, but it will help the JavaScript engine that runs your script see your code more clearly (and therefore, run your code faster). We will talk about that more in my next blog post, but for now, trust me!</p>
<p>You want to make each piece of code you write as modular as possible. Begin by thinking of your app as being made up of smaller programs. Just like you would group methods and properties together to make a class based on their function, group your classes together based on the tasks you need to perform. I like to call these wee programs <strong>“modules”</strong> &#8211; for the obvious reason that they keep your code modular. The only top-down/linear part of your script we want is the starting of these modules. From there, you should be able to start, stop, add, or remove them. Now you’re almost ready to write some awesome JavaScript. Below are some initial tips; we&#8217;ll get started with these, and then next time we&#8217;ll delve into other speed boosting and architecture tips.</p>
<p>Your code should:</p>
<ol>
<li>Have a <strong>namespace/package</strong>. Organize all of your classes in a logical manner. This will enable you to have a large collection of classes without interfering with the names of other classes you have written or have included in your app.
<pre>// EXAMPLE: Create our namespace
	if (!window.com)
		com = new Object();
	if (!com.grahamzibar)
		com.grahamzibar = new Object();
	if (!com.grahamzibar.mouse_tracker)
		com.grahamzibar.mouse_tracker = new Object();</pre>
</li>
<li>Be able to run more than once. If your code breaks when it is called multiple times, <strong>you’re gonna have a bad time</strong>. This goes for everything: classes, methods, scripts, etc. You need to take into consideration that you&#8217;re code might run synchronously or asynchronously throughout the lifetime of your app and, as a consequence, may be invoked from two or more separate places from within your app in a very short interval of time. Below, we have a view that can be applied to any two DOM Elements and can be instantiated any number of times.
<pre>// EXAMPLE:	
	mouse_tracker.View = function View(renderContainer, bodyContainer) {
		var MAX_VALUE = 255;
		var MIN_VALUE = 225;

		this.displayCoordinates = function(x, y) {
			// Incremental string concatenation(sp?) is the bomb.  Trust.
			var result = 'x: ';
			result += x;
			result += 'px - y: ';
			result += y;
			result += 'px';
			renderContainer.innerHTML = result;
		};

		this.modifyBackground = function(x) {
			var half_width = bodyContainer.offsetWidth / 2;
			var val = Math.round((Math.abs(x - half_width) / half_width) *
					(MIN_VALUE - MAX_VALUE) + MAX_VALUE);
			var rgb = 'rgb(';
			rgb += val;
			rgb += ', ';
			rgb += val;
			rgb += ', ';
			rgb += val;
			rgb += ')';
			bodyContainer.style.backgroundColor = rgb;
		};

		this.clear = function() {
			renderContainer.innerHTML = '';
		};
	};</pre>
</li>
<li>Usually be an <strong>instance</strong> of some class. If it isn’t, you’re probably breaking rule 2. Break rule 2, and you’re gonna have a bad time.</li>
</ol>
<ul>
<li><strong>Inherit, inherit, inherit</strong>. A view in your app should be some class (let’s call it app.pages.SettingsPage) which <strong>inherits</strong> some base view class (maybe app.pages.BasePage). This, in turn, probably inherits some event dispatcher (perhaps events.EventDispatcher) so another class can use it to display page request and load progress by adding event listeners. This is a great way to help keep your code <strong>DRY</strong> (<a href="http://en.wikipedia.org/wiki/Don't_repeat_yourself" target="_new">http://en.wikipedia.org/wiki/Don&#8217;t_repeat_yourself</a>).</li>
<li><strong>Disposable</strong>. When you create an object and it does all sorts of things like add timers and subscribes to events, always write the reverse so you can clean-up when needed. You never know when this will come in handy and will save you hours of headaches and frustration. This will help you keep on top of removing event listeners and references to objects that are no longer required to avoid memory leaks and buggy code.
<pre>// EXAMPLE:
	mouse_tracker.Controller = function Controller(model, view) {
		var onChangeModel = function(e) {
			view.displayCoordinates(e.x, e.y);
			view.modifyBackground(e.x);
		};

		var init = function() {
			model.onchange = onChangeModel;
		};

		this.dispose = function() {
			model.onchange = null;
		};

		init();
	};</pre>
</li>
</ul>
<p>Let&#8217;s use the above concepts together in a quick code sample. The only item in the above list I didn&#8217;t get the chance to use was <strong>inheritance</strong>. It&#8217;s a bit beyond the scope of the code sample this time around, but I&#8217;ll certainly touch on that next time when we talk about events.</p>
<p>I have a very particular way I like to write my JavaScript that tends to boggle developers from time-to-time (note the way I write classes). Therefore, feel free to ask questions in the comments below and I&#8217;ll be sure to respond as best I can.</p>
<p>Later, mobile devs.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rimdevblog.wordpress.com/13497/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rimdevblog.wordpress.com/13497/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=13497&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devblog.blackberry.com/2013/02/javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/b76b419d6179f12c0faa2e8e7632bfc3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">grahamzibar</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2013/02/me11.jpg" medium="image">
			<media:title type="html">TITLE_IMAGE</media:title>
		</media:content>
	</item>
		<item>
		<title>Join Us Monday, January 21st at the Toronto BlackBerry Developer Group</title>
		<link>http://devblog.blackberry.com/2013/01/toronto-dev-group-january-2013/</link>
		<comments>http://devblog.blackberry.com/2013/01/toronto-dev-group-january-2013/#comments</comments>
		<pubDate>Thu, 17 Jan 2013 18:32:55 +0000</pubDate>
		<dc:creator>grahamzibar</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[WebWorks]]></category>
		<category><![CDATA[BBDevGroup]]></category>
		<category><![CDATA[BlackBerry Developer Group]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[Toronto]]></category>
		<category><![CDATA[web development]]></category>
		<category><![CDATA[webworks]]></category>

		<guid isPermaLink="false">http://devblog.blackberry.com/?p=13118</guid>
		<description><![CDATA[Our very own @mendozamiche, @naveenan5, and myself - @grahamzibar will be in downtown Toronto for a hands-on WebWorks experience this coming Monday, January 21st starting at 6 pm  We&#8217;ll be showing you how to build your first BlackBerry 10 app using the BlackBerry WebWorks SDK. We&#8217;ll be doing awesome things like downloading the SDKs, setting-up your environment, enjoying some beverages, [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=13118&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p style="text-align:center;"><a href="http://rimdevblog.files.wordpress.com/2013/01/webworkslab.png"><img class="aligncenter  wp-image-13119" alt="TITLE_IMAGE" src="http://rimdevblog.files.wordpress.com/2013/01/webworkslab.png?w=587&#038;h=198" width="587" height="198" /></a></p>
<p>Our very own <a href="https://twitter.com/mendozamiche" target="_blank">@mendozamiche</a>, <a href="https://twitter.com/naveenan5" target="_blank">@naveenan5</a>, and myself - <a href="https://twitter.com/grahamzibar" target="_blank">@grahamzibar</a> will be in downtown Toronto for a <a href="http://www.milestoneintegrated.com/_hosted/2217RIMM/RIMM2217_Toronto_DevGroup_Invite_Online.html" target="_blank">hands-on</a> <a href="https://developer.blackberry.com/html5/" target="_blank">WebWorks</a> experience this coming Monday, January 21st starting at 6 pm  We&#8217;ll be showing you how to build your first <a href="http://global.blackberry.com/blackberry-10.html" target="_blank">BlackBerry 10</a> app using the BlackBerry WebWorks SDK.</p>
<p>We&#8217;ll be doing awesome things like downloading the SDKs, setting-up your environment, enjoying some beverages, and a slew of other fun stuff you&#8217;ll need to know so you can make your first super awesome BlackBerry 10 app. I think there will be chicken wings too&#8230; (<em>Confirmed &#8211; there will be chicken wings &#8211; Ed.</em>)</p>
<p>Why come you may ask?? If not for the food, beer, and awesome people, <a href="http://devblog.blackberry.com/2013/01/blackberry-10-port-a-thon-recap/" target="_blank">everyone else is making BlackBerry 10 apps</a>, so you should probably give into peer pressure and do the same.</p>
<p>Come see us at the <a href="http://tobbdevgroup.eventbrite.com/" target="_blank">Toronto BlackBerry Developer Group</a> at the Fox &amp; Fiddle this Monday. See you all there!</p>
<p>p.s. If you want to get a head start, try downloading the <a href="https://developer.blackberry.com/html5/" target="_blank">tools</a> and getting your <a href="https://www.blackberry.com/SignedKeys/codesigning.html" target="_blank">signing keys</a> before the event.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rimdevblog.wordpress.com/13118/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rimdevblog.wordpress.com/13118/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=13118&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devblog.blackberry.com/2013/01/toronto-dev-group-january-2013/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/b76b419d6179f12c0faa2e8e7632bfc3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">grahamzibar</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2013/01/webworkslab.png" medium="image">
			<media:title type="html">TITLE_IMAGE</media:title>
		</media:content>
	</item>
	</channel>
</rss>
