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

<channel>
	<title>The Flying Developer &#187; OCRI</title>
	<atom:link href="http://theflyingdeveloper.com/category/ocri/feed" rel="self" type="application/rss+xml" />
	<link>http://theflyingdeveloper.com</link>
	<description>The daring adventures of an aspiring software developer</description>
	<lastBuildDate>Sat, 19 May 2012 14:09:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>OCRI: Final Spring 2010 Update</title>
		<link>http://theflyingdeveloper.com/ocri-final-spring-2010-update</link>
		<comments>http://theflyingdeveloper.com/ocri-final-spring-2010-update#comments</comments>
		<pubDate>Sat, 05 Jun 2010 15:32:26 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[OCRI]]></category>
		<category><![CDATA[olpc]]></category>
		<category><![CDATA[xo]]></category>

		<guid isPermaLink="false">http://theflyingdeveloper.com/?p=287</guid>
		<description><![CDATA[This week marked the last session that I spent volunteering my time at a high school as a programming mentor for the current school term. Here are some of my thoughts about the experience. Over the last 2 months I&#8217;ve &#8230; <a href="http://theflyingdeveloper.com/ocri-final-spring-2010-update">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>This week marked the last session that I spent volunteering my time at a high school as a programming mentor for the current school term. Here are some of my thoughts about the experience.<span id="more-287"></span></p>
<p>Over the last 2 months I&#8217;ve been continually surprised by the ideas that the students have come up with. As I wrote in a previous post, the 5 groups that I mentored all came up with very different game ideas for their projects. I was really pleased that all of them were interested and committed to the class and that I didn&#8217;t see any of them get bored or lose interest. What was even more impressive was the degree to which they actually finished the game ideas they presented to us. My main worry was that they would bite off more than they could chew and end up with some half-finished product that didn&#8217;t run, or just stopped part way through the game because that was how far they&#8217;d gotten. We tried from the outset to impress upon them how important having something that worked was and how they could implement their gameplay in increments. Judging by the state of the projects that I saw on Tuesday, this advice seems to have paid off.</p>
<p>The teacher whose class we were attached to had some great feedback on the project as a whole, but first some background: The project is not just about people like myself going into classrooms and helping out with the students. There are also several off-site days organised for them where they get bussed out to the IBM offices in Kanata and get to do things like take laptops apart, have an introduction to a development environment and more.</p>
<p>However, the thing our teacher said was that none of the off-site trips were really important to him and his class. For starters, they took time away from other classes and therefore made the whole scheme <em>less </em>attractive.</p>
<p>The XO laptops weren&#8217;t the main draw either: Sure they&#8217;re excellent machines and there are educational aspects involved in learning about the target market. OLPC is a great project. But in the classroom, from a programming perspective, it was sometimes a hindrance. The testing cycle was always longer as code had to be copied across to the laptop every time a change was made. We didn&#8217;t have as many XOs as project groups, so we had to share and give limited time to each group. Furthermore, there were issues with performance. As anyone who has ever done any embedded development will tell you, optimizing code to run on a target device is a huge consideration. For grade 12 students who are just learning programming, worrying about how many times you can redraw the game background before the performance suffers (for instance) is not high on their list of priorities. Nor should it.</p>
<p>The most important aspect of the whole OCRI program for our teacher was us. The mentors. His opinion was that even if there had been no off-site visits or XO laptops then he would still have wanted us to come in and talk to the students and help them out. That was what made the difference, and it meant that the students didn&#8217;t get bored, or lose interest.</p>
<p>OCRI is currently looking at what form the program should take next  year, and I&#8217;d like to be involved in it whatever form it takes. That said, I will also talk to them about the pluses and minuses of the current scheme and see if we can&#8217;t improve it for the next batch of students.</p>
]]></content:encoded>
			<wfw:commentRss>http://theflyingdeveloper.com/ocri-final-spring-2010-update/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Student Projects Get Underway at OCRI</title>
		<link>http://theflyingdeveloper.com/student-projects-get-underway-at-ocri</link>
		<comments>http://theflyingdeveloper.com/student-projects-get-underway-at-ocri#comments</comments>
		<pubDate>Wed, 05 May 2010 01:51:42 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[OCRI]]></category>
		<category><![CDATA[realbasic]]></category>

		<guid isPermaLink="false">http://theflyingdeveloper.com/?p=273</guid>
		<description><![CDATA[Today Dan and I ventured forth again into our adopted high-school to see how the students were getting on with their projects. Last week they had all presented their game ideas in front of ourselves, the rest of the class &#8230; <a href="http://theflyingdeveloper.com/student-projects-get-underway-at-ocri">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Today <a href="http://dan-menard.com">Dan</a> and I ventured forth again into our adopted high-school to see how the students were getting on with their projects. Last week they had all presented their game ideas in front of ourselves, the rest of the class and a representative from OCRI. A week later, I was interested to see if they still had the enthusiasm they&#8217;d shown in the presentations.<span id="more-273"></span>This session was interesting because it was the first time I&#8217;d seen any of the students do any actual programming. So far all the sessions have been &#8216;lead up&#8217;, allowing us to explain the goals of the project and the specifics of the hardware they&#8217;d be developing for (<a href="http://laptop.org">OLPC&#8217;s XO laptop</a>). This week we finally got started on the project proper and it&#8217;s this part that I&#8217;m really interested in.</p>
<p>I was pleasantly surprised that all of the groups had started out in different ways. The first pair that we spoke to had jumped right into their astronomy-based game and wanted to know how to make a sprite move in a circle. This required a brief maths lesson from the teacher as he explained the equations for finding the x and y co-ordinates of an orbiting object based on the distance from the center of rotation  (the Sun in this case) and the angle the object was at.</p>
<p>One of the other teams had started straight out with designing their interface in photoshop. It was therefore the prettiest (albeit least functional for the time being) of the games at this early stage. Fortunately,because REAL Basic is a visual editor, there&#8217;s no harm in throwing design elements at the canvas first and then hooking up the logic later.</p>
<p>Another group hadn&#8217;t done any coding at all. They had decided to theme their game around the environment, concentrating on endangered species. Rather than tack this element onto the end of their game production they had instead decided to do the research required up front and when I saw them they were busy looking species of exotic birds on Wikipedia.</p>
<p>There are other groups in our class, but these three were the ones that I spent the most time with today. The range of different approaches to the project is interesting as since university I&#8217;ve not been part of a project from the get-go besides my own personal one-man efforts. I think all of the student teams have made a good start and I&#8217;m looking forward to heading back next week and seeing how they&#8217;re progressing.</p>
]]></content:encoded>
			<wfw:commentRss>http://theflyingdeveloper.com/student-projects-get-underway-at-ocri/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Networking on the XO with REALBasic</title>
		<link>http://theflyingdeveloper.com/networking-on-the-xo-with-realbasic</link>
		<comments>http://theflyingdeveloper.com/networking-on-the-xo-with-realbasic#comments</comments>
		<pubDate>Thu, 22 Apr 2010 14:01:16 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[OCRI]]></category>
		<category><![CDATA[networking]]></category>
		<category><![CDATA[olpc]]></category>
		<category><![CDATA[realbasic]]></category>
		<category><![CDATA[xo]]></category>

		<guid isPermaLink="false">http://theflyingdeveloper.com/?p=252</guid>
		<description><![CDATA[One of the main things that I personally wanted to get across to the students here in Ottawa was that the XO is not just another laptop. There are certain key features that make it unique compared to the desktops &#8230; <a href="http://theflyingdeveloper.com/networking-on-the-xo-with-realbasic">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>One of the main things that I personally wanted to get across to the  students here in Ottawa was that the XO is not just another laptop.  There are certain key features that make it unique compared to the  desktops and notebooks that they may have seen before.</p>
<div class="wp-caption alignleft" style="width: 250px"><img src="http://farm3.static.flickr.com/2062/2265749376_d3e1f3fba7_m.jpg" alt="3 XO laptops on a desk" width="240" height="180" /><p class="wp-caption-text">3 XO Laptops</p></div>
<p style="text-align: left;">Chief amongst these is the mesh networking capabilities of the XO.  Whilst it can connect to a regular wireless network just like any other  computer, the XO can also form its own peer-to-peer network with others in the vicinity. This is really important as many of the  applications that ship with the XO are social or collaborative in nature  and the mesh allows them to be used in situations where a centralized  network is unavailable.<span id="more-252"></span></p>
<p>With this in mind, I started thinking about how to harness the powerful  capabilities of the mesh for my own applications. As far as I could  tell, the whole thing just worked by magic. This was great, but didn&#8217;t  give me any idea on how to send and receive messages from other machines  on the network.</p>
<p>The teacher of the particular grade 12 class I&#8217;m mentoring (along  with my good friend <a href="http://danmenard.com">Dan Menard</a>) is teaching his students  <a href="http://www.realsoftware.com/realbasic/">REAL Basic</a>. I&#8217;d  not seen this environment before, and I can&#8217;t remember the last time I  did any Basic programming. Fortunately, RB comes with extensive  documentation.</p>
<p>RB comes with a set of pre-defined &#8216;modules&#8217;,  roughly equivalent to the way that Java provides default  packages/objects for common tasks. There were a couple of interesting  modules that I wanted to take a closer look at: EasyTCPSocket and  EastUDPSocket.</p>
<p>Both of these allow simple interaction over the network. You bind  them to a port, then send information to a specified IP on that port.  That&#8217;s all well and good, but what I really wanted was a way of  discovering other machines on the network automatically. I knew that  each XO on the mesh was somehow assigned an IP address, but neither  socket provided a means searching for addresses automatically. I dug a  little deeper, and struck gold.</p>
<p>RB has a nice little module called AutoDiscovery. Subclassed from the  EasyUDPSocket, it allows you to bind to a port and then join a named  group within the subnet. Furthermore, it can pull back a list of IPs in  that same group. Perfect! After a little bit of trial and error, I  managed to get two desktop computers on my home network to join the same  group and exchange IP addresses. For proof-of-concept, that was enough.  It was time to move to the XOs.</p>
<p>Fortunately, RB can cross-compile applications for Windows, Mac and  Linux. The XO runs a modified version of Fedora, so I built a linux  version of my simple app and transferred it to my pair of laptops via a  USB key. I was slightly worried that they wouldn&#8217;t have the required GTK  libraries installed, but both applications started up fine. A couple of  seconds later, and success! Each XO was proudly displaying the other&#8217;s  IP in it&#8217;s group list.</p>
<div id="attachment_263" class="wp-caption alignleft" style="width: 310px"><a href="http://theflyingdeveloper.com/blog/wp-content/uploads/2010/04/IMAG0205.jpg"><img class="size-medium wp-image-263 " title="Two XO  laptops demonstrating mesh networking" src="http://theflyingdeveloper.com/blog/wp-content/uploads/2010/04/IMAG0205-300x200.jpg" alt="Two XO laptops demonstrating mesh networking" width="300" height="200" /></a><p class="wp-caption-text">A pair of XOs running my proof-of-concept app</p></div>
<p>From this starting point, it is easy to see that more complex network-enabled apps can be built: Either by using the discovery mechanism as a way to exchange IP addresses before forming dedicated one-to-one connections with other machines (using the EasyTCPSocket, for example) or communicating with the group directly using a broadcast function. Both options have their pros and cons, but the main hurdle of harnessing the underlying mesh has been solved.</p>
<p>I&#8217;m really excited to see what the students do with the starting point I&#8217;ve given them. They&#8217;re still at the design stage right now, but by the end of term I expect that they&#8217;ll have produced some really phenomenal stuff.</p>
]]></content:encoded>
			<wfw:commentRss>http://theflyingdeveloper.com/networking-on-the-xo-with-realbasic/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Flying Developer is a Mentor</title>
		<link>http://theflyingdeveloper.com/the-flying-developer-is-a-mentor</link>
		<comments>http://theflyingdeveloper.com/the-flying-developer-is-a-mentor#comments</comments>
		<pubDate>Wed, 21 Apr 2010 14:44:11 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[OCRI]]></category>
		<category><![CDATA[mentoring]]></category>
		<category><![CDATA[olpc]]></category>
		<category><![CDATA[xo]]></category>

		<guid isPermaLink="false">http://theflyingdeveloper.com/?p=233</guid>
		<description><![CDATA[Over the last couple of weeks I have had the pleasure of a pair of XO Laptops at my disposal. The XO is the result of the One Laptop Per Child project, founded by Nicholas Negroponte. The device itself is &#8230; <a href="http://theflyingdeveloper.com/the-flying-developer-is-a-mentor">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div id="attachment_253" class="wp-caption alignleft" style="width: 310px"><a href="http://theflyingdeveloper.com/blog/wp-content/uploads/2010/04/xo.png"><img class="size-medium wp-image-253 " title="XO Laptop" src="http://theflyingdeveloper.com/blog/wp-content/uploads/2010/04/xo-300x187.png" alt="My XO Laptop" width="300" height="187" /></a><p class="wp-caption-text">An XO Laptop on my desk at work</p></div>
<p>Over the last couple of weeks I have had the pleasure of a pair of XO Laptops at my disposal. The XO is the result of the <a href="http://laptop.org/en/">One Laptop Per Child project</a>, founded by Nicholas Negroponte. The device itself is a real marvel of design and engineering, and I&#8217;ve had great fun hacking around with it.</p>
<p>The reason I am able to do this is because I am a volunteer mentor for OCRI, the Ottawa Center for Research and Innovation.<span id="more-233"></span> In a nutshell, their remit is to promote Ottawa as a prime candidate for software and other technology companies to set up shop in. To quote from their website:</p>
<blockquote><p>Our Vision for 2010 [is] to make Ottawa recognized as one of the most innovative  cities worldwide.</p></blockquote>
<p>One of the things OCRI does  is run a high-school program to encourage students to consider a career in the technology sector. That&#8217;s where the XO laptops and I come in.</p>
<p>Over the course of 12 or so weeks, myself and other industry professionals (I feel like such a fraud calling myself a &#8216;professional&#8217;) go into classrooms around Ottawa and mentor the students as they design, create and test an educational game for the XO laptop platform. The idea is that these projects will become available over the internet to teachers in Africa whose schools are part of the OLPC project and that they in turn can pass the games on to their students.</p>
<p>The students at the school I&#8217;m mentoring in are currently preparing presentations on their game designs, and I&#8217;m really excited to see what they come up with. I hope to post follow-up articles over the coming weeks describing some of the challenges of programming for the XO, as well as neat things the students manage to pull of. I already have a post in the works on mesh networking which I will be putting up later this week.</p>
]]></content:encoded>
			<wfw:commentRss>http://theflyingdeveloper.com/the-flying-developer-is-a-mentor/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

