<?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>The Orbital Station &#187; PlanetCDOT</title>
	<atom:link href="http://orbitalstation.wordpress.com/category/planetcdot/feed/" rel="self" type="application/rss+xml" />
	<link>http://orbitalstation.wordpress.com</link>
	<description>News from 350 miles above Earth&#039;s surface.</description>
	<lastBuildDate>Fri, 25 May 2012 15:46:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='orbitalstation.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>The Orbital Station &#187; PlanetCDOT</title>
		<link>http://orbitalstation.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://orbitalstation.wordpress.com/osd.xml" title="The Orbital Station" />
	<atom:link rel='hub' href='http://orbitalstation.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Euler Quaternions and the Trouble with Y-Up Space, Part 1</title>
		<link>http://orbitalstation.wordpress.com/2012/05/25/euler-quaternions-and-the-trouble-with-y-up-space-part-1/</link>
		<comments>http://orbitalstation.wordpress.com/2012/05/25/euler-quaternions-and-the-trouble-with-y-up-space-part-1/#comments</comments>
		<pubDate>Fri, 25 May 2012 15:20:25 +0000</pubDate>
		<dc:creator>northwind87</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[open-source]]></category>
		<category><![CDATA[PlanetCDOT]]></category>
		<category><![CDATA[northWind]]></category>
		<category><![CDATA[Hasan]]></category>
		<category><![CDATA[Kamal-Al-Deen]]></category>
		<category><![CDATA[math]]></category>
		<category><![CDATA[matrix]]></category>
		<category><![CDATA[quaternion]]></category>
		<category><![CDATA[euler]]></category>
		<category><![CDATA[pitch axis]]></category>
		<category><![CDATA[roll pitch]]></category>
		<category><![CDATA[roll axis]]></category>
		<category><![CDATA[angle roll]]></category>

		<guid isPermaLink="false">http://orbitalstation.wordpress.com/?p=276</guid>
		<description><![CDATA[Yesterday I did something that I didn&#8217;t think I was capable of. It involved quaternions, matrices and a decent amount of math. Let&#8217;s start with the problem definition: We have a system that tracks rotations using quaternions We would like people to be able to use Euler coordinates (Tait-Bryan angles if you&#8217;re picky) Our world [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=orbitalstation.wordpress.com&#038;blog=9405833&#038;post=276&#038;subd=orbitalstation&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Yesterday I did something that I didn&#8217;t think I was capable of. It involved quaternions, matrices and a decent amount of math. Let&#8217;s start with the problem definition:</p>
<ul>
<li>We have a system that tracks rotations using quaternions</li>
<li>We would like people to be able to use Euler coordinates (Tait-Bryan angles if you&#8217;re picky)</li>
<li>Our world is Y-UP</li>
</ul>
<p>Doesn&#8217;t sound too hard. In fact, half of it was fairly easy. Turning a set of Euler coordinates into a quaternion is as simple as creating three quaternions using angle axis pairs derived from the incoming Euler rotation. For us, the three Quaternions were as follows:</p>
<ul>
<li>[<strong>Angle:</strong> Yaw, <strong>Axis:</strong> [0, 1, 0]]</li>
<li>[<strong>Angle:</strong> Pitch, <strong>Axis:</strong> [0, 0, 1]]</li>
<li>[<strong>Angle:</strong> Roll, <strong>Axis:</strong> [1, 0, 0]]</li>
</ul>
<p>We create a combined rotation quaternion by conjugating the three quaternions together in the following order:</p>
<p>Roll * (Pitch * (Yaw) * Pitch<sup>-1</sup>) * Roll<sup>-1</sup></p>
<p>This is all that is required to produce a quaternion from a set of Euler coordinates. Now, we also had to retrieve Euler coordinates from a given quaternion. This is more difficult than taking Euler coordinates and converting them into a quaternion as the task requires a fairly solid understanding of the math. This too would be simple, if it weren&#8217;t for the fact that <em>the entire Internet</em> agrees that Z-Up is the way to go for Euler/Quaternion conversions. From what I could tell, the equations for converting a rotation quaternion into a Y-Up Euler coordinate do not exist! (On the internet).</p>
<p>To my shock, horror and dismay, this meant that I had to derive the equations myself. Needless to say, this was a daunting task. But, after an arm and a leg… and the other arm… and the other leg… and parts of my face/body and an assortment of pieces from whichever organs remain… I was victorious. My glorious victory over the maths was quite euphoric.</p>
<p>First, let&#8217;s talk about why Y-Up Euler coordinates are so different from Z-Up Euler coordinates. The idea behind Euler coordinates is that given three angular values, you apply three rotational transformations in a predetermined order around three dynamic or constant axes (depending on convention) and arrive at a destination rotation.</p>
<p>Rotational transformations are not commutative, that means that applying them in a different order will produce a different rotation all-together. I won&#8217;t get into <em>why</em> that is but it has to do with the fact that the space of all 3D rotations is something akin to the surface of a 4 dimensional hypersphere and applying a rotation is like <em>traveling</em> from one point on the surface of that sphere to another surface point while always remaining on the surface. (Feel like going for a dip in some advanced math? <a href="http://en.wikipedia.org/wiki/Quaternions_and_spatial_rotation#The_hypersphere_of_rotations">Read here</a>).</p>
<p>The effect is that a rotation quaternion composed from rotations around axes in the order ZYX is fundamentally different from one composed from rotations in the order YZX, which is what we want. So, the equations must be derived. I won&#8217;t delve very much into <em>why</em> the following works as that could take several blogs. First, we must build a rotation matrix that will compose our Euler coordinates in the order that we want. This is as simple as getting the angle-axis matrix formula and plugging some numbers into it. That formula is the following:</p>
<p><a href="http://orbitalstation.files.wordpress.com/2012/05/image001.png"><img class="aligncenter size-full wp-image-280" title="image001" src="http://orbitalstation.files.wordpress.com/2012/05/image001.png?w=600" alt=""   /></a></p>
<p>Where c is cos(θ), s is sin(θ) and C is 1-c, θ is the angle of rotation and (x,y,z) are the vector components of the axis. This is taken from <a href="http://en.wikipedia.org/wiki/Rotation_matrix#Axis_and_angle">here</a> . By plugging in axis and angle, we construct three rotation matrices:<span style="font-family:Arial;"><br />
</span></p>
<p><strong>Yaw, about [0, 1, 0], angle sign Ψ (Psi):</strong></p>
<p><strong><a href="http://orbitalstation.files.wordpress.com/2012/05/image002.png"><img class="aligncenter size-full wp-image-281" title="image002" src="http://orbitalstation.files.wordpress.com/2012/05/image002.png?w=600" alt=""   /></a><br />
</strong></p>
<p><strong>Pitch, about [0, 0, 1], angle sign Θ (Theta):</strong></p>
<p><strong><a href="http://orbitalstation.files.wordpress.com/2012/05/image003.png"><img class="aligncenter size-full wp-image-282" title="image003" src="http://orbitalstation.files.wordpress.com/2012/05/image003.png?w=600" alt=""   /></a><br />
</strong></p>
<p><strong>Roll, about [1,0,0], angle sign Φ (Phi):</strong></p>
<p><strong><a href="http://orbitalstation.files.wordpress.com/2012/05/image004.png"><img class="aligncenter size-full wp-image-283" title="image004" src="http://orbitalstation.files.wordpress.com/2012/05/image004.png?w=600" alt=""   /></a><br />
</strong></p>
<p><strong>Now, we multiply the matrices together in the order (Roll)(Pitch)(Yaw), producing the following:</strong></p>
<p><strong><a href="http://orbitalstation.files.wordpress.com/2012/05/image005.png"><img class="aligncenter size-full wp-image-284" title="image005" src="http://orbitalstation.files.wordpress.com/2012/05/image005.png?w=600&h=53" alt="" width="600" height="53" /></a><br />
</strong></p>
<p><strong>Next step is to refer to the Quaternion -&gt; Rotation matrix formula:<br />
</strong></p>
<p><img src="http://orbitalstation.files.wordpress.com/2012/05/052512_1520_eulerquater1.png?w=600" alt="" /><strong><br />
</strong></p>
<p>This formula was taken from <a href="http://en.wikipedia.org/wiki/Conversion_between_quaternions_and_Euler_angles#Rotation_matrices">here</a>. The quaternion components are [w, x, y, z] -&gt; [0, 1, 2, 3]</p>
<p>Finally, to retrieve the Euler coordinates we must match the matrix form of the rotation quaternion to our RPY rotation matrix exploiting cells where the values are easy to retrieve. In this case, the values are as follows (Notation, Matrix <sub>Row Column</sub> where row and column are in the range [1,3]):</p>
<ul>
<li><span style="font-family:Cambria Math;">Φ, roll: atan2(RPY<sub>32</sub>, RPY<sub>22</sub>) = atan2(2(q<sub>0</sub>q<sub>1</sub> + q<sub>2</sub>q<sub>3</sub>), q<sub>0</sub>q<sub>0</sub> &#8211; q<sub>1</sub>q<sub>1</sub> + q<sub>2</sub>q<sub>2</sub> &#8211; q<sub>3</sub>q<sub>3</sub>)</span></li>
<li><span style="font-family:Cambria Math;">Θ, pitch: asin(-RPY<sub>12</sub>) = asin(2(q<sub>0</sub>q<sub>3</sub> – q<sub>1</sub>q<sub>2</sub>))</span></li>
<li><span style="font-family:Cambria Math;">Ψ, yaw: atan2(RPY<sub>13</sub>, RPY<sub>11</sub>) = atan2(2(q<sub>0</sub>q<sub>2</sub> + q<sub>1</sub>q<sub>3</sub>), q<sub>0</sub>q<sub>0</sub> + q<sub>1</sub>q<sub>1</sub> &#8211; q<sub>2</sub>q<sub>2</sub> &#8211; q<sub>3</sub>q<sub>3</sub>)</span></li>
</ul>
<p>This is almost enough. What is left is to test for pitch singularities (+90, -90) and treat them specially. Since this blog has gone on for far too long, I will stop now as what has been given is certainly enough to get a similar system working. In my next blog, I will detail how we could cheaply test for the singularities and what we could do in that case. You can do some advance reading on that <a href="http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToEuler/index.htm">here</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/orbitalstation.wordpress.com/276/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/orbitalstation.wordpress.com/276/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/orbitalstation.wordpress.com/276/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/orbitalstation.wordpress.com/276/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/orbitalstation.wordpress.com/276/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/orbitalstation.wordpress.com/276/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/orbitalstation.wordpress.com/276/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/orbitalstation.wordpress.com/276/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/orbitalstation.wordpress.com/276/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/orbitalstation.wordpress.com/276/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/orbitalstation.wordpress.com/276/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/orbitalstation.wordpress.com/276/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/orbitalstation.wordpress.com/276/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/orbitalstation.wordpress.com/276/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=orbitalstation.wordpress.com&#038;blog=9405833&#038;post=276&#038;subd=orbitalstation&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://orbitalstation.wordpress.com/2012/05/25/euler-quaternions-and-the-trouble-with-y-up-space-part-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/bed4c3bc8be041473de2bebf97d2bcb8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">northwind87</media:title>
		</media:content>

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

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

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

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

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

		<media:content url="http://orbitalstation.files.wordpress.com/2012/05/052512_1520_eulerquater1.png" medium="image" />
	</item>
		<item>
		<title>A Scalable Solution Part One: Local Reference Frame</title>
		<link>http://orbitalstation.wordpress.com/2012/05/10/a-scalable-solution-part-one-local-reference-frame/</link>
		<comments>http://orbitalstation.wordpress.com/2012/05/10/a-scalable-solution-part-one-local-reference-frame/#comments</comments>
		<pubDate>Thu, 10 May 2012 21:49:21 +0000</pubDate>
		<dc:creator>northwind87</dc:creator>
				<category><![CDATA[open-source]]></category>
		<category><![CDATA[PlanetCDOT]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[3d]]></category>
		<category><![CDATA[Hasan]]></category>
		<category><![CDATA[Kamal-Al-Deen]]></category>
		<category><![CDATA[northWind]]></category>
		<category><![CDATA[open]]></category>
		<category><![CDATA[reference frame]]></category>
		<category><![CDATA[source]]></category>
		<category><![CDATA[transform]]></category>

		<guid isPermaLink="false">http://orbitalstation.wordpress.com/?p=269</guid>
		<description><![CDATA[Blog Reading Requirement: you need to know what a reference frame is, from wiki: “A frame of reference in physics, may refer to a coordinate system or set of axes within which to measure the position, orientation, and other properties of objects in it, or it may refer to an observational reference frame tied to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=orbitalstation.wordpress.com&#038;blog=9405833&#038;post=269&#038;subd=orbitalstation&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Blog Reading Requirement: you need to know what a reference frame is, from wiki:</p>
<p><em>“A frame of reference in physics, may refer to a coordinate system or set of axes within which to measure the position, orientation, and other properties of objects in it, or it may refer to an observational reference frame tied to the state of motion of an observer. It may also refer to both an observational reference frame and an attached coordinate system as a unit…”</em></p>
<p>Read the source article <a href="http://en.wikipedia.org/wiki/Frame_of_reference">here</a>.</p>
<p>In this series of blog posts, I will be talking about scaling 3D objects in their local reference frame and in the world reference frame. In part one, I will be introducing the topic and detailing scaling in the local reference frame. In part two, I will be introducing scaling in the world reference frame as well as detailing some of the differences between the two types of scaling. I will also be detailing some of the complexities as well as a possible implementation.</p>
<p>As an artist, the ability to scale groups of objects is fairly important when working with 3D models. When scaling an object, it is done against a known axial reference frame; typically, the two most useful reference frames are the world reference frame and the local reference frame and they are vastly different. The local reference frame changes as the object is rotated while the world reference frame never changes. I will take this blog to elaborate on some of the challenges and requirements involved in implementing these manipulations as well as giving a possible implementation.</p>
<p>Local reference frame scaling is the simpler of the two as it is performed against the local reference frame of the object that is being scaled. With groups of objects, it is expected that each object in the group is scaled against its own local reference frame as opposed to the reference frame of the group. It is also expected that the positions of the objects in the group will not be affected by the scaling operation.</p>
<p>This scaling method is simple because it only involves applying a scaling transform against the 3 known axes of any given object. This means that the scale parameters can be stored as 3 floats. During frame rendering, the transform could be applied after position and rotation have been applied; this fits in with the rendering pipeline of most 3D engines and means that one could simply alter the scale parameter present on a renderable object in most 3D engines.</p>
<p>In part two, I will be introducing world reference frame scaling and what complexities may arise from allowing the combination of the two methods. Thank you for reading.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/orbitalstation.wordpress.com/269/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/orbitalstation.wordpress.com/269/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/orbitalstation.wordpress.com/269/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/orbitalstation.wordpress.com/269/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/orbitalstation.wordpress.com/269/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/orbitalstation.wordpress.com/269/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/orbitalstation.wordpress.com/269/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/orbitalstation.wordpress.com/269/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/orbitalstation.wordpress.com/269/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/orbitalstation.wordpress.com/269/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/orbitalstation.wordpress.com/269/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/orbitalstation.wordpress.com/269/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/orbitalstation.wordpress.com/269/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/orbitalstation.wordpress.com/269/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=orbitalstation.wordpress.com&#038;blog=9405833&#038;post=269&#038;subd=orbitalstation&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://orbitalstation.wordpress.com/2012/05/10/a-scalable-solution-part-one-local-reference-frame/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/bed4c3bc8be041473de2bebf97d2bcb8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">northwind87</media:title>
		</media:content>
	</item>
		<item>
		<title>Release 0.4 – Not so much a bang but a whisper</title>
		<link>http://orbitalstation.wordpress.com/2011/12/13/release-0-4-not-so-much-a-bang-but-a-whisper/</link>
		<comments>http://orbitalstation.wordpress.com/2011/12/13/release-0-4-not-so-much-a-bang-but-a-whisper/#comments</comments>
		<pubDate>Tue, 13 Dec 2011 05:16:25 +0000</pubDate>
		<dc:creator>northwind87</dc:creator>
				<category><![CDATA[open-source]]></category>
		<category><![CDATA[PlanetCDOT]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[Hasan]]></category>
		<category><![CDATA[Kamal-Al-Deen]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[northWind]]></category>
		<category><![CDATA[open]]></category>
		<category><![CDATA[OSD600]]></category>
		<category><![CDATA[paladin]]></category>
		<category><![CDATA[xssme]]></category>

		<guid isPermaLink="false">https://orbitalstation.wordpress.com/?p=255</guid>
		<description><![CDATA[Here we are at the bottom end of OSD600. This course has been fun and has taught me a lot. This is why it is all the more unfortunate that my 0.4 release is not nearly as atomic as my 0.3. For my 0.4, I had 2 projects to work on alongside another course. One [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=orbitalstation.wordpress.com&#038;blog=9405833&#038;post=255&#038;subd=orbitalstation&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Here we are at the bottom end of OSD600. This course has been fun and has taught me a lot. This is why it is all the more unfortunate that my 0.4 release is not nearly as atomic as my 0.3. For my 0.4, I had 2 projects to work on alongside another course. One project was migrating XSS Me from the current tab-based threadpool implementation to Web Workers. This didn&#8217;t go so well. The conclusion of my research into Web Workers deemed them unusable for XSS Me&#8217;s requirements. So instead, a very minor fixup was in order.</p>
<p>As for Paladin, as usual, quite a lot of work went into the configurator. The configurator is now closer than ever to landing but still has not landed. This iteration, quite a number of changes went into the configurator. I&#8217;ve itemized the changes below:</p>
<ul>
<li>Store/load now accept named parameters</li>
<li>Configurator objects were receiving undefined guids, now test suite fails if that happens</li>
<li>ConfNode is now it&#8217;s own require module</li>
<li>Configurator constructor is now not stored on engine</li>
<li>Configurator attempts to test for db caps on engine startup</li>
<li>Logger is now accepted as a construction option</li>
<li>Configurator now picks up default.js</li>
<li>/gladius/gameID is now just /id</li>
<li>Error handlers now introduced to indexeddb function hierarchy</li>
<li>Try/catch around sensitive areas</li>
</ul>
<p>I will continue to work on XSS Me and paladin.</p>
<h3>Release Details:</h3>
<p><strong>XSS Me:</strong></p>
<p>commit: <a href="https://github.com/northWind87/XSSMe/commit/731fe1563f97ab3951a5c799257a9acaea945cd3">731fe1563f97ab3951a5c799257a9acaea945cd3</a></p>
<p>issue thread: <a href="https://github.com/SecurityCompass/XSSMe/issues/3">https://github.com/SecurityCompass/XSSMe/issues/3</a></p>
<p>pull request: <a href="https://github.com/SecurityCompass/XSSMe/pull/4">https://github.com/SecurityCompass/XSSMe/pull/4</a></p>
<p><strong>Paladin:</strong></p>
<p>commit: <a href="https://github.com/northWind87/gladius/commit/4539a66ee3a5ac6a38c420c089781f66e4120eb7">4539a66ee3a5ac6a38c420c089781f66e4120eb7</a></p>
<p>issue thread: <a href="https://github.com/alankligman/gladius/issues/21">https://github.com/alankligman/gladius/issues/21</a></p>
<p>pull request: <a href="https://github.com/alankligman/gladius/pull/52">https://github.com/alankligman/gladius/pull/52</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/orbitalstation.wordpress.com/255/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/orbitalstation.wordpress.com/255/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/orbitalstation.wordpress.com/255/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/orbitalstation.wordpress.com/255/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/orbitalstation.wordpress.com/255/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/orbitalstation.wordpress.com/255/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/orbitalstation.wordpress.com/255/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/orbitalstation.wordpress.com/255/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/orbitalstation.wordpress.com/255/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/orbitalstation.wordpress.com/255/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/orbitalstation.wordpress.com/255/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/orbitalstation.wordpress.com/255/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/orbitalstation.wordpress.com/255/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/orbitalstation.wordpress.com/255/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=orbitalstation.wordpress.com&#038;blog=9405833&#038;post=255&#038;subd=orbitalstation&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://orbitalstation.wordpress.com/2011/12/13/release-0-4-not-so-much-a-bang-but-a-whisper/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/bed4c3bc8be041473de2bebf97d2bcb8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">northwind87</media:title>
		</media:content>
	</item>
		<item>
		<title>Release 0.3!</title>
		<link>http://orbitalstation.wordpress.com/2011/11/23/release-0-3/</link>
		<comments>http://orbitalstation.wordpress.com/2011/11/23/release-0-3/#comments</comments>
		<pubDate>Wed, 23 Nov 2011 08:13:42 +0000</pubDate>
		<dc:creator>northwind87</dc:creator>
				<category><![CDATA[open-source]]></category>
		<category><![CDATA[PlanetCDOT]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[configuration]]></category>
		<category><![CDATA[Hasan]]></category>
		<category><![CDATA[Kamal-Al-Deen]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[northWind]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[OSD600]]></category>
		<category><![CDATA[paladin]]></category>
		<category><![CDATA[registry]]></category>

		<guid isPermaLink="false">http://orbitalstation.wordpress.com/?p=250</guid>
		<description><![CDATA[Whew! It&#8217;s been a while but my 0.3 has now been released! In this release, I&#8217;ve been working on Paladin/configurator subsystem. By now, it has become quite mature and achieves all required functionality. Also being used is IndexedDB as the load/store backend. Also important is that the codebase has now been brought up-to-date with the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=orbitalstation.wordpress.com&#038;blog=9405833&#038;post=250&#038;subd=orbitalstation&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Whew! It&#8217;s been a while but my 0.3 has now been released! In this release, I&#8217;ve been working on Paladin/configurator subsystem. By now, it has become quite mature and achieves all required functionality. Also being used is IndexedDB as the load/store backend. Also important is that the codebase has now been brought up-to-date with the rest of the engine.</p>
<p>Changelog:</p>
<ul>
<li>Added comments to all of the Configurator tests that didn&#8217;t have any. Improved some of the comments that were there before as well as improving some test structures slightly.</li>
<li>Removed Cookie.js from the engine. Cookies are no longer used as load/store backend, now replaced with IndexedDB.</li>
<li>Many functions had vague local variable names; their names have been improved.</li>
<li>load/store are now both asynchronous.</li>
<li>Added config/default.js for local configurations that need to be baked into the engine.</li>
<li>Configurator now uses gameID to load/save configurations.</li>
<li>Brought Configurator codebase up-to-date.</li>
</ul>
<p>commit: <a title="a94ea288daabd84ea222a5a08da78ec4095479b3" href="https://github.com/northWind87/gladius/commit/a94ea288daabd84ea222a5a08da78ec4095479b3">a94ea288daabd84ea222a5a08da78ec4095479b3</a></p>
<p>issue thread: <a href="https://github.com/alankligman/gladius/issues/21">https://github.com/alankligman/gladius/issues/21</a></p>
<p>pull request: <a href="https://github.com/alankligman/gladius/pull/52">https://github.com/alankligman/gladius/pull/52</a></p>
<p>I also have some work to do for XSS Me but that has taken a back-seat to the work on Paladin. Currently, the plan is to dedicate most of 0.4 towards XSS Me. We&#8217;ll see how this all pans out.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/orbitalstation.wordpress.com/250/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/orbitalstation.wordpress.com/250/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/orbitalstation.wordpress.com/250/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/orbitalstation.wordpress.com/250/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/orbitalstation.wordpress.com/250/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/orbitalstation.wordpress.com/250/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/orbitalstation.wordpress.com/250/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/orbitalstation.wordpress.com/250/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/orbitalstation.wordpress.com/250/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/orbitalstation.wordpress.com/250/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/orbitalstation.wordpress.com/250/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/orbitalstation.wordpress.com/250/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/orbitalstation.wordpress.com/250/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/orbitalstation.wordpress.com/250/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=orbitalstation.wordpress.com&#038;blog=9405833&#038;post=250&#038;subd=orbitalstation&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://orbitalstation.wordpress.com/2011/11/23/release-0-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/bed4c3bc8be041473de2bebf97d2bcb8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">northwind87</media:title>
		</media:content>
	</item>
		<item>
		<title>Rome</title>
		<link>http://orbitalstation.wordpress.com/2011/11/15/rome/</link>
		<comments>http://orbitalstation.wordpress.com/2011/11/15/rome/#comments</comments>
		<pubDate>Tue, 15 Nov 2011 08:39:53 +0000</pubDate>
		<dc:creator>northwind87</dc:creator>
				<category><![CDATA[PlanetCDOT]]></category>
		<category><![CDATA[Hasan]]></category>
		<category><![CDATA[Kamal-Al-Deen]]></category>
		<category><![CDATA[northWind]]></category>
		<category><![CDATA[OSD600]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[X11]]></category>

		<guid isPermaLink="false">http://orbitalstation.wordpress.com/?p=229</guid>
		<description><![CDATA[Rome is awesome. Rome is a build server that is speedy and hooked up to a fat pype ( I was getting ~5.5MB/s downloading from github ( ! )  ). I got acquainted with Rome just tonight when I asked @humph for an account on it ( which he kindly obliged &#60;3 ). Long story [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=orbitalstation.wordpress.com&#038;blog=9405833&#038;post=229&#038;subd=orbitalstation&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Rome is awesome. Rome is a build server that is speedy and hooked up to a fat pype ( I was getting ~5.5MB/s downloading from github ( ! )  ). I got acquainted with Rome just tonight when I asked @humph for an account on it ( which he kindly obliged &lt;3 ). Long story short, complete make do nothing cycle in ~52 seconds; this is down from ~10 minutes on my supercomputer of a laptop. To get started, follow the following easy steps:</p>
<ol>
<li>Ask @humph to get you an account on Rome.</li>
<li>Configure your environment to forward X11 to a local X11 server. On Linux, this should be as simple as passing -CX to ssh when connecting. On Windows, this is a bit more involved but boils down to the following steps:
<ol>
<li>Get <a href="http://sourceforge.net/projects/xming/files/Xming/6.9.0.31/">Xming</a></li>
<li>Start Xming.</li>
<li>Start PuTTy.</li>
<li>In the options on the left, select Connection -&gt; SSH -&gt; X11</li>
<li>On this window, click &#8220;Enable X11 forwarding&#8221; and in the box labeled &#8220;X display location&#8221; enter 127.0.0.1:0.0</li>
<li>You probably want to save your configuration options. Switch back to the session options by selecting Session in the options on the left.</li>
<li>Enter a reasonable name for this configuration, something like 01 &#8211; Rome should be fine.</li>
<li>Enter rome.proximity.on.ca as the server address.</li>
<li>Hit save and you should now be set to login and forward X11!</li>
</ol>
</li>
<li>Execute any application that you desire. In the case of our firefox build, you will probably want to call the debug firefox binary. This should be as simple as navigating to the top-level of your mozilla-central repo and calling:<br />
[whatever your build directory is]/dist/bin/firefox -ProfileManager -no-remote</p>
<ul>
<li>If you already have a profile that you like to use on this machine for nightlies, you can substitute -ProfileManager on the commandline with -P [whatever the profile name is]</li>
<li>Obviously, you will need to build firefox first before you can call the binary <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </li>
</ul>
</li>
<li>Sit back, relax and enjoy the lightning speed builds.</li>
</ol>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/orbitalstation.wordpress.com/229/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/orbitalstation.wordpress.com/229/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/orbitalstation.wordpress.com/229/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/orbitalstation.wordpress.com/229/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/orbitalstation.wordpress.com/229/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/orbitalstation.wordpress.com/229/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/orbitalstation.wordpress.com/229/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/orbitalstation.wordpress.com/229/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/orbitalstation.wordpress.com/229/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/orbitalstation.wordpress.com/229/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/orbitalstation.wordpress.com/229/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/orbitalstation.wordpress.com/229/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/orbitalstation.wordpress.com/229/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/orbitalstation.wordpress.com/229/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=orbitalstation.wordpress.com&#038;blog=9405833&#038;post=229&#038;subd=orbitalstation&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://orbitalstation.wordpress.com/2011/11/15/rome/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/bed4c3bc8be041473de2bebf97d2bcb8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">northwind87</media:title>
		</media:content>
	</item>
		<item>
		<title>0.3 Coming Up Fast</title>
		<link>http://orbitalstation.wordpress.com/2011/11/14/0-3-coming-up-fast/</link>
		<comments>http://orbitalstation.wordpress.com/2011/11/14/0-3-coming-up-fast/#comments</comments>
		<pubDate>Mon, 14 Nov 2011 22:52:45 +0000</pubDate>
		<dc:creator>northwind87</dc:creator>
				<category><![CDATA[open-source]]></category>
		<category><![CDATA[PlanetCDOT]]></category>
		<category><![CDATA[Hasan]]></category>
		<category><![CDATA[Kamal-Al-Deen]]></category>
		<category><![CDATA[northWind]]></category>
		<category><![CDATA[OSD600]]></category>
		<category><![CDATA[paladin]]></category>

		<guid isPermaLink="false">https://orbitalstation.wordpress.com/?p=222</guid>
		<description><![CDATA[So the due date for 0.3 is coming up soon and I&#8217;m honestly just a tad bit worried… The project that I&#8217;ve picked up for 0.3 ( migrating XSS Me to web workers ) is proving to be too big for the time that I have left for 0.3 so I&#8217;m thinking that I&#8217;ll push [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=orbitalstation.wordpress.com&#038;blog=9405833&#038;post=222&#038;subd=orbitalstation&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>So the due date for 0.3 is coming up soon and I&#8217;m honestly just a tad bit worried… The project that I&#8217;ve picked up for 0.3 ( migrating XSS Me to web workers ) is proving to be too big for the time that I have left for 0.3 so I&#8217;m thinking that I&#8217;ll push most of the work that has to go into it to 0.4 with some preliminary work done for 0.3 but I&#8217;m wondering if that will be enough…</p>
<p>As for Paladin, unfortunately the guys are fairly busy so for now I&#8217;m just waiting till they have some time to take another look at the issue thread. Still, I&#8217;m confident that my questions will get some attention at some point and until then… I only have to wait.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/orbitalstation.wordpress.com/222/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/orbitalstation.wordpress.com/222/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/orbitalstation.wordpress.com/222/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/orbitalstation.wordpress.com/222/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/orbitalstation.wordpress.com/222/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/orbitalstation.wordpress.com/222/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/orbitalstation.wordpress.com/222/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/orbitalstation.wordpress.com/222/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/orbitalstation.wordpress.com/222/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/orbitalstation.wordpress.com/222/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/orbitalstation.wordpress.com/222/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/orbitalstation.wordpress.com/222/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/orbitalstation.wordpress.com/222/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/orbitalstation.wordpress.com/222/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=orbitalstation.wordpress.com&#038;blog=9405833&#038;post=222&#038;subd=orbitalstation&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://orbitalstation.wordpress.com/2011/11/14/0-3-coming-up-fast/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/bed4c3bc8be041473de2bebf97d2bcb8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">northwind87</media:title>
		</media:content>
	</item>
		<item>
		<title>Done and Done, Pt. 2</title>
		<link>http://orbitalstation.wordpress.com/2011/11/13/done-and-done-pt-2/</link>
		<comments>http://orbitalstation.wordpress.com/2011/11/13/done-and-done-pt-2/#comments</comments>
		<pubDate>Sun, 13 Nov 2011 23:43:38 +0000</pubDate>
		<dc:creator>northwind87</dc:creator>
				<category><![CDATA[open-source]]></category>
		<category><![CDATA[PlanetCDOT]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[Hasan]]></category>
		<category><![CDATA[Kamal-Al-Deen]]></category>
		<category><![CDATA[lock]]></category>
		<category><![CDATA[mouse]]></category>
		<category><![CDATA[mouselock]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[northWind]]></category>
		<category><![CDATA[open]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[OSD600]]></category>
		<category><![CDATA[paladin]]></category>

		<guid isPermaLink="false">http://orbitalstation.wordpress.com/?p=208</guid>
		<description><![CDATA[Success! I&#8217;ve managed to alter the reported location of the cursor! Here&#8217;s what I did to get it to work: The file that I had to modify was content/events/src/nsDOMMouseEvent.cpp, this is the implementation file of the DOM MouseEvent in firefox. The updates were as follows: // ... snip ... line 223 NS_METHOD nsDOMMouseEvent::GetScreenX(PRInt32* aScreenX) { [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=orbitalstation.wordpress.com&#038;blog=9405833&#038;post=208&#038;subd=orbitalstation&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Success! I&#8217;ve managed to alter the reported location of the cursor! Here&#8217;s what I did to get it to work:</p>
<p>The file that I had to modify was content/events/src/nsDOMMouseEvent.cpp, this is the implementation file of the DOM MouseEvent in firefox.<br />
The updates were as follows:</p>
<pre>// ... snip ... line 223

NS_METHOD nsDOMMouseEvent::GetScreenX(PRInt32* aScreenX)
{
  NS_ENSURE_ARG_POINTER(aScreenX);
  //*aScreenX = GetScreenPoint().x;
  *aScreenX = 17000;
  return NS_OK;
}

NS_IMETHODIMP
nsDOMMouseEvent::GetScreenY(PRInt32* aScreenY)
{
  NS_ENSURE_ARG_POINTER(aScreenY);
  //*aScreenY = GetScreenPoint().y;
  *aScreenY = 18000;
  return NS_OK;
}

NS_METHOD nsDOMMouseEvent::GetClientX(PRInt32* aClientX)
{
  NS_ENSURE_ARG_POINTER(aClientX);
  //*aClientX = GetClientPoint().x;
  *aClientX = 7000;
  return NS_OK;
}

NS_IMETHODIMP
nsDOMMouseEvent::GetClientY(PRInt32* aClientY)
{
  NS_ENSURE_ARG_POINTER(aClientY);
  //*aClientY = GetClientPoint().y;
  *aClientY = 8000;
  return NS_OK;
}

// ... /snip ...</pre>
<p>As you can see, I forced the reported values for the cursor&#8217;s position to be 17000/18000 for the screenX/screenY members and 7000/8000 for the clientX/clientY members. This is a pretty naive way to do it but it proved to produce results. Check it out!</p>
<p><a href="http://orbitalstation.files.wordpress.com/2011/11/right_click_after.jpg"><img class="aligncenter size-full wp-image-210" title="right_click_after" src="http://orbitalstation.files.wordpress.com/2011/11/right_click_after.jpg?w=600&h=337" alt="" width="600" height="337" /></a></p>
<p>This is what happens now when a user attempts to right click anywhere in the page. As you can see, the context menu appears far off into the right bottom corner ( since the coordinates go off screen ).</p>
<p><a href="http://orbitalstation.files.wordpress.com/2011/11/right_click_header.jpg"><img class="aligncenter size-full wp-image-211" title="right_click_header" src="http://orbitalstation.files.wordpress.com/2011/11/right_click_header.jpg?w=600&h=337" alt="" width="600" height="337" /></a></p>
<p>Interestingly enough, the changes to the event class do not affect the native windows right click context menu ( can be triggered by right clicking in the same vertical space as the minimize/maximize/close buttons ), as can be seen here. Also not affected is text selection and clicking buttons/links and forms.</p>
<p>Also interesting is that no assertion errors are usually thrown. I have managed to provoke an assertion error however simply by middle clicking ( click the wheel of your mouse if you have a mouse wheel ) somewhere inside the page; the page being used should have sufficient text for the quick drag middle click popup to appear, for an example <a href="http://www.lipsum.com/banners/">this page</a> should work. Scroll around a bit if you don&#8217;t first succeed.<a href="http://orbitalstation.files.wordpress.com/2011/11/assertion.jpg"><img class="aligncenter size-full wp-image-215" title="assertion" src="http://orbitalstation.files.wordpress.com/2011/11/assertion.jpg?w=600&h=337" alt="" width="600" height="337" /></a></p>
<p>In conclusion, it seems that it is not immediately obvious how MouseEvent is used internally. On the one hand, the values reported through the event to the js engine are the only way for the js to figure out where the cursor is; so as far as the js is concerned, whatever we return here will be where the js believes the cursor to be. On the other hand, some internals seem to use the values returned from the getter functions of the mouse event object as well; this may make updating the values to our whims possibly difficult due to the sheer size of firefox&#8217;s internals and the fact that we don&#8217;t <strong>*exactly*</strong> know what will be affected by our meddling.</p>
<hr />
<p>P.S. The MouseEvent class also defines some longs (screenX, screenY, clientX, clientY); from what I could tell, these are only updated during initialization:</p>
<pre>// ... snip ... line 106

NS_IMETHODIMP
nsDOMMouseEvent::InitMouseEvent(const nsAString &amp; aType, PRBool aCanBubble, PRBool aCancelable,
                                nsIDOMAbstractView *aView, PRInt32 aDetail, PRInt32 aScreenX, 
                                PRInt32 aScreenY, PRInt32 aClientX, PRInt32 aClientY, 
                                PRBool aCtrlKey, PRBool aAltKey, PRBool aShiftKey, 
                                PRBool aMetaKey, PRUint16 aButton, nsIDOMEventTarget *aRelatedTarget)
{
  nsresult rv = nsDOMUIEvent::InitUIEvent(aType, aCanBubble, aCancelable, aView, aDetail);
  NS_ENSURE_SUCCESS(rv, rv);

  switch(mEvent-&gt;eventStructType)
  {
    case NS_MOUSE_EVENT:
    case NS_MOUSE_SCROLL_EVENT:
    case NS_DRAG_EVENT:
    case NS_SIMPLE_GESTURE_EVENT:
    case NS_MOZTOUCH_EVENT:
    {
       static_cast(mEvent)-&gt;relatedTarget = aRelatedTarget;
       static_cast(mEvent)-&gt;button = aButton;
       nsInputEvent* inputEvent = static_cast(mEvent);
       inputEvent-&gt;isControl = aCtrlKey;
       inputEvent-&gt;isAlt = aAltKey;
       inputEvent-&gt;isShift = aShiftKey;
       inputEvent-&gt;isMeta = aMetaKey;
       mClientPoint.x = aClientX;
       mClientPoint.y = aClientY;
       inputEvent-&gt;refPoint.x = aScreenX;
       inputEvent-&gt;refPoint.y = aScreenY;

       if (mEvent-&gt;eventStructType == NS_MOUSE_EVENT) {
         nsMouseEvent* mouseEvent = static_cast(mEvent);
         mouseEvent-&gt;clickCount = aDetail;
       }
       break;
    }
    default:
       break;
  }

  return NS_OK;
} 

// ... /snip ...</pre>
<p>It may also be interesting to play around with these values; I have not touched these values for this update.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/orbitalstation.wordpress.com/208/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/orbitalstation.wordpress.com/208/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/orbitalstation.wordpress.com/208/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/orbitalstation.wordpress.com/208/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/orbitalstation.wordpress.com/208/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/orbitalstation.wordpress.com/208/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/orbitalstation.wordpress.com/208/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/orbitalstation.wordpress.com/208/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/orbitalstation.wordpress.com/208/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/orbitalstation.wordpress.com/208/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/orbitalstation.wordpress.com/208/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/orbitalstation.wordpress.com/208/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/orbitalstation.wordpress.com/208/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/orbitalstation.wordpress.com/208/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=orbitalstation.wordpress.com&#038;blog=9405833&#038;post=208&#038;subd=orbitalstation&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://orbitalstation.wordpress.com/2011/11/13/done-and-done-pt-2/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/bed4c3bc8be041473de2bebf97d2bcb8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">northwind87</media:title>
		</media:content>

		<media:content url="http://orbitalstation.files.wordpress.com/2011/11/right_click_after.jpg" medium="image">
			<media:title type="html">right_click_after</media:title>
		</media:content>

		<media:content url="http://orbitalstation.files.wordpress.com/2011/11/right_click_header.jpg" medium="image">
			<media:title type="html">right_click_header</media:title>
		</media:content>

		<media:content url="http://orbitalstation.files.wordpress.com/2011/11/assertion.jpg" medium="image">
			<media:title type="html">assertion</media:title>
		</media:content>
	</item>
		<item>
		<title>Done and Done, Pt. 1</title>
		<link>http://orbitalstation.wordpress.com/2011/11/12/done-and-done-pt-1/</link>
		<comments>http://orbitalstation.wordpress.com/2011/11/12/done-and-done-pt-1/#comments</comments>
		<pubDate>Sat, 12 Nov 2011 21:28:24 +0000</pubDate>
		<dc:creator>northwind87</dc:creator>
				<category><![CDATA[open-source]]></category>
		<category><![CDATA[PlanetCDOT]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[Hasan]]></category>
		<category><![CDATA[Kamal-Al-Deen]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[northWind]]></category>

		<guid isPermaLink="false">http://orbitalstation.wordpress.com/?p=196</guid>
		<description><![CDATA[I set myself to two tasks, the first of which was getting something to appear in the Firefox logs. Taking a page out of David Humphrey&#8217;s in-class demonstration&#8211; //////////////////////////////////////////////////////////////////////////////// //// Connection Connection::Connection(Service *aService, int aFlags) : sharedAsyncExecutionMutex("Connection::sharedAsyncExecutionMutex") , sharedDBMutex("Connection::sharedDBMutex") , threadOpenedOn(do_GetCurrentThread()) , mDBConn(nsnull) , mAsyncExecutionThreadShuttingDown(false) , mTransactionInProgress(PR_FALSE) , mProgressHandler(nsnull) , mFlags(aFlags) , mStorageService(aService) { // [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=orbitalstation.wordpress.com&#038;blog=9405833&#038;post=196&#038;subd=orbitalstation&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I set myself to two tasks, the first of which was getting something to appear in the Firefox logs. Taking a page out of David Humphrey&#8217;s in-class demonstration&#8211;</p>
<pre>////////////////////////////////////////////////////////////////////////////////
//// Connection

Connection::Connection(Service *aService,
                       int aFlags)
: sharedAsyncExecutionMutex("Connection::sharedAsyncExecutionMutex")
, sharedDBMutex("Connection::sharedDBMutex")
, threadOpenedOn(do_GetCurrentThread())
, mDBConn(nsnull)
, mAsyncExecutionThreadShuttingDown(false)
, mTransactionInProgress(PR_FALSE)
, mProgressHandler(nsnull)
, mFlags(aFlags)
, mStorageService(aService)
{
  // Hasan Edit
  fprintf( stderr, "Hello, Hasan. I like you and you are turning me on." );

  mFunctions.Init();
}</pre>
<p style="text-align:center;">And the result:<br />
<a href="http://orbitalstation.files.wordpress.com/2011/11/hello_hasan.jpg"><img class="aligncenter size-large wp-image-202" title="hello_hasan" src="http://orbitalstation.files.wordpress.com/2011/11/hello_hasan.jpg?w=645&h=363" alt="" width="645" height="363" /></a></p>
<p style="text-align:center;">
<p>Done and done! Now to report/abuse X/Y mouse values&#8230;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/orbitalstation.wordpress.com/196/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/orbitalstation.wordpress.com/196/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/orbitalstation.wordpress.com/196/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/orbitalstation.wordpress.com/196/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/orbitalstation.wordpress.com/196/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/orbitalstation.wordpress.com/196/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/orbitalstation.wordpress.com/196/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/orbitalstation.wordpress.com/196/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/orbitalstation.wordpress.com/196/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/orbitalstation.wordpress.com/196/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/orbitalstation.wordpress.com/196/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/orbitalstation.wordpress.com/196/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/orbitalstation.wordpress.com/196/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/orbitalstation.wordpress.com/196/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=orbitalstation.wordpress.com&#038;blog=9405833&#038;post=196&#038;subd=orbitalstation&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://orbitalstation.wordpress.com/2011/11/12/done-and-done-pt-1/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/bed4c3bc8be041473de2bebf97d2bcb8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">northwind87</media:title>
		</media:content>

		<media:content url="http://orbitalstation.files.wordpress.com/2011/11/hello_hasan.jpg?w=1024" medium="image">
			<media:title type="html">hello_hasan</media:title>
		</media:content>
	</item>
		<item>
		<title>Building Firefox</title>
		<link>http://orbitalstation.wordpress.com/2011/11/02/building-firefox/</link>
		<comments>http://orbitalstation.wordpress.com/2011/11/02/building-firefox/#comments</comments>
		<pubDate>Wed, 02 Nov 2011 16:53:41 +0000</pubDate>
		<dc:creator>northwind87</dc:creator>
				<category><![CDATA[PlanetCDOT]]></category>
		<category><![CDATA[Hasan]]></category>
		<category><![CDATA[Kamal-Al-Deen]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[northWind]]></category>
		<category><![CDATA[OSD600]]></category>

		<guid isPermaLink="false">http://orbitalstation.wordpress.com/?p=187</guid>
		<description><![CDATA[It&#8217;s building :O<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=orbitalstation.wordpress.com&#038;blog=9405833&#038;post=187&#038;subd=orbitalstation&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s building :O</p>
<p style="text-align:center;"><a href="http://orbitalstation.files.wordpress.com/2011/11/building1.png"><img class="aligncenter size-large wp-image-191" title="building" src="http://orbitalstation.files.wordpress.com/2011/11/building1.png?w=717&h=403" alt="" width="717" height="403" /></a><a href="http://orbitalstation.files.wordpress.com/2011/11/building.png"><br />
</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/orbitalstation.wordpress.com/187/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/orbitalstation.wordpress.com/187/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/orbitalstation.wordpress.com/187/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/orbitalstation.wordpress.com/187/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/orbitalstation.wordpress.com/187/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/orbitalstation.wordpress.com/187/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/orbitalstation.wordpress.com/187/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/orbitalstation.wordpress.com/187/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/orbitalstation.wordpress.com/187/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/orbitalstation.wordpress.com/187/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/orbitalstation.wordpress.com/187/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/orbitalstation.wordpress.com/187/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/orbitalstation.wordpress.com/187/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/orbitalstation.wordpress.com/187/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=orbitalstation.wordpress.com&#038;blog=9405833&#038;post=187&#038;subd=orbitalstation&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://orbitalstation.wordpress.com/2011/11/02/building-firefox/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/bed4c3bc8be041473de2bebf97d2bcb8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">northwind87</media:title>
		</media:content>

		<media:content url="http://orbitalstation.files.wordpress.com/2011/11/building1.png?w=1024" medium="image">
			<media:title type="html">building</media:title>
		</media:content>
	</item>
		<item>
		<title>Game Development for the Student Enthusiast/Entrepreneur and Why Threads Aren’t Always Great</title>
		<link>http://orbitalstation.wordpress.com/2011/11/01/game-development-for-the-student-enthusiastentrepreneur-and-why-threads-aren%e2%80%99t-always-great/</link>
		<comments>http://orbitalstation.wordpress.com/2011/11/01/game-development-for-the-student-enthusiastentrepreneur-and-why-threads-aren%e2%80%99t-always-great/#comments</comments>
		<pubDate>Wed, 02 Nov 2011 01:15:42 +0000</pubDate>
		<dc:creator>northwind87</dc:creator>
				<category><![CDATA[PlanetCDOT]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[game]]></category>
		<category><![CDATA[games]]></category>
		<category><![CDATA[graphics]]></category>
		<category><![CDATA[Hasan]]></category>
		<category><![CDATA[Kamal-Al-Deen]]></category>
		<category><![CDATA[northWind]]></category>
		<category><![CDATA[ode]]></category>
		<category><![CDATA[ogre]]></category>
		<category><![CDATA[parallel]]></category>
		<category><![CDATA[physics]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[thread]]></category>
		<category><![CDATA[threading]]></category>
		<category><![CDATA[threads]]></category>

		<guid isPermaLink="false">https://orbitalstation.wordpress.com/?p=162</guid>
		<description><![CDATA[This is the story of one student&#8217;s quest to code up a massively parallel game engine. It all started about 6 months ago when my group-mates and I, one of which I now co-own a startup game company with, decided to write up a game engine for our PRJ666 project requirement. At the end of [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=orbitalstation.wordpress.com&#038;blog=9405833&#038;post=162&#038;subd=orbitalstation&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>This is the story of one student&#8217;s quest to code up a massively parallel game engine. It all started about 6 months ago when my group-mates and I, one of which I now co-own a startup game company with, decided to write up a game engine for our PRJ666 project requirement. At the end of PRJ666, we had a fully functioning 3D game engine. Complete with physics, shaders, sound, input, etc… Our home-made engine possessed the absolute essentials for someone to be able to create a game. However, our engine did suffer from a few problems; the one I will be talking about today is performance.</p>
<p>I will explain how the engine operates in order to give you an idea of <em>why</em> we&#8217;re even running into a performance bottleneck.<br />
The starting point is a highly serial and synchronous game engine. We constructed this engine on the backs of many open source back-end systems; systems like OGRE for graphics, ODE for physics, Lua for scripting, etc… <img class="aligncenter" src="http://orbitalstation.files.wordpress.com/2011/11/110211_0115_gamedevelop1.jpg?w=600" alt="" /></p>
<p>The idea was that a time keeping core and a list of objects, together with a number of specialized subsystems, could be made to represent a game world by continually updating each object at each tick. The picture above shows what a typical tick cycle looks like. Typically, each subsystem will iterate over all objects and update them as required then pass control onto the next subsystem. The Lua subsystem does a bit more work as it iterates over each object in the object list and calls the object&#8217;s update function, passing it the amount of time that had passed.</p>
<p>This architecture proved to work but it suffered from heavy performance issues, mostly during the execution of the Lua subsystem.</p>
<p>After butting heads for a while with my partner and a quick consultation with my father, we came up with what we thought to be the perfect solution: a massively parallelized architecture. The goal here was not just to be subsystem-parallel but to be object-parallel as well. That meant that all objects in the world would be updating in parallel and all subsystems would be updating in parallel, although all subsystem updates (except for scripting/Lua) had to happen before any object updates were started. The idea was that by dividing each and every update step into discrete read and write steps, we could run many things in parallel and gain a massive performance boost.</p>
<p>To assess this architecture, we decided to ask for some good-old-fashioned academic review. In this case, the victims were David Humphrey and Chris Szalwinski; my &#8220;Open Source Development&#8221; and &#8220;Game Engine Design&#8221; professors, respectively. Having lured them in with the promise of coffee and donuts, they were going to give me feedback on this proposed architecture.</p>
<p>My meeting with them was today. Walking into the meeting, I honestly had no idea where to start. By the end of the meeting, I had learned quite a lot about threading and about where some of the problems of our current system lie. Here&#8217;s a summary:</p>
<ol>
<li>Parallelism breaks down if the unit of work is too small; in this case, an object&#8217;s update function is far too small to offset the costs of thread synchronization.</li>
<li>Cause and effect become ambiguous as object updates lose their sequential nature.</li>
<li>The number of bugs and the complexity of bugs dramatically increase as micro-threading issues enter the fray.</li>
<li>Threads are a band-aid solution that should be used with caution.</li>
</ol>
<p>Before anyone jumps on my head for <em>implying</em> that threads may not always be the best idea, let me elaborate. The first concern is perfectly legitimate and would take sound design decisions to avoid; for young developers such as ourselves, going down this route so early is premature.</p>
<p>The second concern is interesting as real-world philosophical problems have suddenly jump into the synthetic game world when objects begin updating in parallel, even if only the read steps are parallel. On its own, this is not so bad; it simply implies that our programming practices would have to adapt to this new environment with its set of constraints. Mixed with the third concern however, this is a recipe for disaster.</p>
<p>The third concern is of course, heisenbugs. Everyone knows that threading is sometimes tricky, and that&#8217;s on large systems with obvious and static threading routines. On a system like ours, where all objects thread dynamically ( assign parallel tasks to a dispatcher on the fly ) and interact in non-obvious ways, this is a nightmare.</p>
<p>Really it was the fourth concern which finally turned me away from going down the threads route so quickly. The reason why threads should be considered a band-aid solution is because we are using hardware potential to solve a design problem. The design problem in this case is that the system does not update efficiently. The reason for this is that <em>all objects are treated as equals</em>. Due to this, it is <strong>impossible</strong> for the system to cull objects from an update cycle. This is the most basic and fundamental problem of this system.</p>
<p>The solution then is <strong>not</strong> to treat all objects as equals. One way to gain the ability to filter objects is by using context scopes to isolate and group groups of related objects. These structures can then be used to traverse trees of relevance. This really is the key point; the system must be able to detect the relevance of a given object and to filter it from some or all update activities given the current game state. A key tenet here is that objects in one context should <strong>not</strong> be able to directly change objects in parent or sibling contexts.</p>
<p>Furthermore, this divergence of contexts can later be threaded where appropriate and the performance boosts will then be obvious and controlled.</p>
<p>In order to break large lists of objects into contexts however, some concrete data must be used to govern the design choices. To that end, I will re-iterate what many big businesses already know: automated testing is king. A test harness full of performance and integration tests, coupled with a fixed time demo that puts the engine through some typical scenarios while monitoring performance, can be used to generate graph after graph of data. This data can be used to find where the system is behaving inefficiently and influence later design decisions. This also made the need for some kind of automated build system obvious.</p>
<p>The benefits of a system that could build the codebase given a particular changeset target, automatically run tests against it, collect test data and then publish the data somewhere should be obvious. Such a system could be used on a daily basis by developers to gauge the performance of their code on the fly. This is crucial as this way, it becomes clear what broke the system down, in which way, when and to what effect.</p>
<p>With this in mind, I went to the library, took out some books on simulating the natural processes of the world on a computer and set to reading. Today was quite useful and inspirational and I had hoped to share as much of it as possible with others. I hope this hasn&#8217;t been <strong>*too*</strong> boring of a read and wish you luck on your journey in software development.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/orbitalstation.wordpress.com/162/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/orbitalstation.wordpress.com/162/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/orbitalstation.wordpress.com/162/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/orbitalstation.wordpress.com/162/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/orbitalstation.wordpress.com/162/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/orbitalstation.wordpress.com/162/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/orbitalstation.wordpress.com/162/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/orbitalstation.wordpress.com/162/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/orbitalstation.wordpress.com/162/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/orbitalstation.wordpress.com/162/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/orbitalstation.wordpress.com/162/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/orbitalstation.wordpress.com/162/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/orbitalstation.wordpress.com/162/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/orbitalstation.wordpress.com/162/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=orbitalstation.wordpress.com&#038;blog=9405833&#038;post=162&#038;subd=orbitalstation&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://orbitalstation.wordpress.com/2011/11/01/game-development-for-the-student-enthusiastentrepreneur-and-why-threads-aren%e2%80%99t-always-great/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/bed4c3bc8be041473de2bebf97d2bcb8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">northwind87</media:title>
		</media:content>

		<media:content url="http://orbitalstation.files.wordpress.com/2011/11/110211_0115_gamedevelop1.jpg" medium="image" />
	</item>
	</channel>
</rss>
