<?xml version="1.0"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">

<channel>
	<title>PySoy Blog</title>
	<link>http://blog.pysoy.org/</link>
	<language>en</language>
	<description>PySoy Blog - http://blog.pysoy.org/</description>

<item>
	<title>Arc Riley: Hyperfocus and balance</title>
	<guid>tag:blogger.com,1999:blog-28358787.post-3428722383016352912</guid>
	<link>http://arcriley.blogspot.com/2012/02/hyperfocus-and-balance.html</link>
	<description>&lt;p&gt;For as long as I can remember I've worked in short hyperfocused bursts, regardless of what I was learning or doing.  For example, a few weeks ago I spent 8 hours all night learning everything I could about sugars and how they're digested, absorbed, and metabolized by our bodies.  Fascinating stuff.&lt;/p&gt; &lt;p&gt;Last year around this time I learned my health, turning 32, was in very poor shape - hypertension, difficulty losing weight, trouble remembering to eat and when I did I didn't pay much attention to how much or how it would affect me.  At that point I was on a low-carb diet which had plateaued but was the only thing that kept me from ballooning back to 36%+ body fat.  This worked for me because it didn't require much attention, I could continue doing whatever I wanted as long as I followed a few simple rules, except that it didn't work.  The root of the problem wasn't diet or lack of exercise (I walk/bike everywhere), but that when not eating or exercising I was sitting for hours (10+) at a time and would often go for days glued in front of a computer screen.&lt;/p&gt; &lt;p&gt;Rugby was at first a reason to get off my ass more often, after I played a few games &lt;a href=&quot;http://youtu.be/MNqSNCFF18k&quot;&gt;it became an obsession&lt;/a&gt; (Red #23).  Thinking back I can't remember when I switched from playing rugby to get in shape, to getting in shape to play rugby, but after spending 5 days a week all Winter training my ass off to be ready for &lt;a href=&quot;http://binghamcup.com/&quot;&gt;Bingham Cup 2012&lt;/a&gt; I'm well past that tipping point.  Rugby isn't a career, especially at my age it'll never become one, though it has strongly altered my lifestyle and choices.&lt;/p&gt; &lt;p&gt;Training has become a much-needed metronome for my life.  I wake up with the sun now, every day I have something on my schedule (including days for rest/recovery), every meal is timed and planned, my time in front of a computer fits into that schedule.&lt;/p&gt; &lt;p&gt;My best work is done after 3-4 days of concentration, when the hyperfocus reaches a point where the &lt;a href=&quot;http://paulgraham.com/head.html&quot;&gt;only thing I'm aware of is the code I'm working on&lt;/a&gt;.  I have a few hours to be absolutely brilliant in that state until my neurotransmitters, dopamine, cortisol, and countless other support systems give out - but in those few hours I'd have completed weeks of work.  This presents a problem that I'm looking to overcome; how can I reach that state within the small slices of time available while keeping the nasty recovery effects to a minimum?&lt;/p&gt; &lt;p&gt;I'm working to solve that now with biofeedback in much the same way as I learned to control my sympathetic and parasympathetic systems, weight management, and sleep cycle.  I believe that if I'm successful I can work much more efficiently without any noticeable recovery time between sessions.&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/28358787-3428722383016352912?l=arcriley.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Fri, 17 Feb 2012 23:58:14 +0000</pubDate>
	<dc:creator>Arc Riley (noreply@blogger.com)</dc:creator>
</item>
<item>
	<title>Arc Riley: GCI Low Hanging Fruit</title>
	<guid>tag:blogger.com,1999:blog-28358787.post-8241363508642992407</guid>
	<link>http://arcriley.blogspot.com/2011/12/gci-low-hanging-fruit.html</link>
	<description>&lt;p&gt;I have to admit I'm pretty surprised that at halfway through Google Code-In 2011 only about a quarter of the tasks we posted for the first half have been completed or in-progress.  Further, most of the tasks thus far haven't been coding tasks.&lt;/p&gt; &lt;p&gt;I'm going to publish here a list of what we consider &quot;low hanging fruit&quot;; coding tasks which are fairly easy to get started with.  If you're a student age 13-17 these would be an easy way to earn a Google tshirt and some cash.  All of these tasks deal with OpenGL rendering, usually just arrays for points and lines/triangles which connect the points.  There's a lot of examples in the code already for this and numerous tutorials on the web (such as &lt;a href=&quot;http://nehe.gamedev.net/&quot;&gt;NeHe&lt;/a&gt;).&lt;/p&gt;&lt;dl&gt;&lt;dt&gt;Simple Rendering&lt;/dt&gt;&lt;dd&gt;We have 2 new tasks listed for rendering simple models; &lt;a href=&quot;http://www.google-melange.com/gci/task/view/google/gci2011/7237313&quot;&gt;Camera&lt;/a&gt; and &lt;a href=&quot;http://www.google-melange.com/gci/task/view/google/gci2011/7234264&quot;&gt;Light&lt;/a&gt;.  Camera is very simple, while Light can be as simple or complex as you want to make it.&lt;/dd&gt; &lt;dt&gt;Shapes Rendering&lt;/dt&gt;&lt;dd&gt;We have 3 tasks for rendering shapes, &lt;a href=&quot;http://www.google-melange.com/gci/task/view/google/gci2011/7127345&quot;&gt;Box&lt;/a&gt;, &lt;a href=&quot;http://www.google-melange.com/gci/task/view/google/gci2011/7229261&quot;&gt;Room&lt;/a&gt;, and &lt;a href=&quot;http://www.google-melange.com/gci/task/view/google/gci2011/7116340&quot;&gt;Sphere&lt;/a&gt;.  Any of these could be knocked out in a few hours even without prior OpenGL knowledge.&lt;/dd&gt; &lt;dt&gt;Joints Rendering&lt;/dt&gt;&lt;dd&gt;We have 6 new tasks up for rendering joints; &lt;a href=&quot;http://www.google-melange.com/gci/task/view/google/gci2011/7228305&quot;&gt;Ball&lt;/a&gt;, &lt;a href=&quot;http://www.google-melange.com/gci/task/view/google/gci2011/7245257&quot;&gt;Fixed&lt;/a&gt;, &lt;a href=&quot;http://www.google-melange.com/gci/task/view/google/gci2011/7228304&quot;&gt;Hinge&lt;/a&gt;, &lt;a href=&quot;http://www.google-melange.com/gci/task/view/google/gci2011/7238256&quot;&gt;Piston&lt;/a&gt;, &lt;a href=&quot;http://www.google-melange.com/gci/task/view/google/gci2011/7230270&quot;&gt;Slider&lt;/a&gt;, and &lt;a href=&quot;http://www.google-melange.com/gci/task/view/google/gci2011/7233301&quot;&gt;Universal&lt;/a&gt;.  Joints (soy.joints) connect two bodies such that they can only move in respect to each other in a certain way, such as a door hinge or piston.  These are all &lt;a href=&quot;http://opende.sourceforge.net/wiki/index.php/Manual_%28Joint_Types_and_Functions%29#Joint_parameter_setting_functions&quot;&gt;documented&lt;/a&gt; with graphic depictions.  This is slightly more complex than the simple rendering tasks (above) in that there's two pieces to each joint and they can be rendered as either wireframe or solid (with provided materials).&lt;/dd&gt;&lt;/dl&gt; As always, we're on IRC if a student wants to discuss these or other tasks.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/28358787-8241363508642992407?l=arcriley.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Fri, 16 Dec 2011 12:06:28 +0000</pubDate>
	<dc:creator>Arc Riley (noreply@blogger.com)</dc:creator>
</item>
<item>
	<title>Arc Riley: PyTTY 0.3</title>
	<guid>tag:blogger.com,1999:blog-28358787.post-1209438369849206793</guid>
	<link>http://arcriley.blogspot.com/2011/12/pytty-03.html</link>
	<description>&lt;p&gt;Continuing my annual end-of-year coding sprint, I just released PyTTY 0.3.&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://www.pytty.org/&quot;&gt;PyTTY&lt;/a&gt; is a Python serial communication package I started last year after a friend said he couldn't use &lt;a href=&quot;http://python.org/&quot;&gt;Python&lt;/a&gt; 3 yet because pyserial wasn't ported.  The point of writing this was to show him that he didn't need an ancient, bloated, poorly-maintained package to do something as simple as serial communication.&lt;/p&gt; &lt;p&gt;What I wrote over an afternoon turned out to be a little over 100 lines of fairly useful code which I've since used in quite a few microcontroller projects (eg, &lt;a href=&quot;http://www.arduino.cc/&quot;&gt;Arduino&lt;/a&gt;).  Its by no means complete, the only setting is baud rate and there's no Windows support, but its done everything I've needed it to over the last year.  The only problem that's been reported is poor documentation which this release aims to fix.  It includes a short code example (&quot;pydoc pytty.TTY&quot;) which runs on both legacy Python and Python 3.&lt;/p&gt; &lt;p&gt;PyTTY 0.3 is under 135 lines of pure Python and relies only on the Python standard library.  If there's a feature you need which this doesn't have either email me a patch or a feature request so I can add it.  The &lt;a href=&quot;http://mercurial.selenic.com/&quot;&gt;Mercurial&lt;/a&gt; repository is &lt;a href=&quot;http://hg.pytty.org/pytty&quot;&gt;http://hg.pytty.org/pytty&lt;/a&gt;.&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/28358787-1209438369849206793?l=arcriley.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Wed, 14 Dec 2011 00:27:30 +0000</pubDate>
	<dc:creator>Arc Riley (noreply@blogger.com)</dc:creator>
</item>
<item>
	<title>Arc Riley: NodeTree 0.2 Released</title>
	<guid>tag:blogger.com,1999:blog-28358787.post-3369351492720751137</guid>
	<link>http://arcriley.blogspot.com/2011/12/nodetree-02-released.html</link>
	<description>&lt;p&gt;I just shipped &lt;a href=&quot;http://nodetree.org/&quot;&gt;NodeTree&lt;/a&gt; 0.2.&lt;/p&gt; &lt;p&gt;This version will not parse an XML stream.  All it contains are some basic types representing XML nodes such as &lt;code&gt;Comment&lt;/code&gt;, &lt;code&gt;Document&lt;/code&gt;, and &lt;code&gt;Element&lt;/code&gt;.  As promised, text is also handled as a node but uses standard Python strings (UTF-8 strings/bytes and unicode).  These should all be fairly intuitive to use.&lt;/p&gt; &lt;p&gt;The magic is the XML data is being managed in C using a libxml2 DOM tree but accessed through a Pythonic object-oriented API.  For example, in DOM each node may have exactly one parent - in NodeTree a node may be added to any number of parents with a separate DOM node and context for each.&lt;/p&gt; &lt;p&gt;I started this project because the existing XML packages for &lt;a href=&quot;http://www.python.org/&quot;&gt;Python&lt;/a&gt; proved too difficult to use with &lt;a href=&quot;http://xmpp.org/&quot;&gt;XMPP&lt;/a&gt;.  Fritzy's &lt;a href=&quot;https://github.com/fritzy/SleekXMPP/wiki&quot;&gt;SleekXMPP&lt;/a&gt; uses lxml but had to jump through several hoops to get stream parsing to work, looking over his work I certainly didn't want to repeat it with &lt;a href=&quot;http://concordance-xmpp.org/&quot;&gt;Concordance-XMPP&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Beyond this the leading XML API for Python, ElementTree, includes several unfortunate design decisions that make it frustrating to use in the best cases and unusable in others.  A full list of why can be left for another time, but the difference to NodeTree can be described in their names - ElementTree is a tree of XML Element nodes with other kinds of nodes either silently dropped, mangled, or made available in bizarre ways (eg, .text and .tail).  In contrast, NodeTree provides XML data as a tree of nodes &lt;i&gt;starting with the Document node&lt;/i&gt; and includes comment and text nodes in its tree.  I plan to provide 100% XML 1.0 support in a future release while maintaining a clean, simple, and intuitive API.&lt;/p&gt; &lt;p&gt;Storing XML data in libxml2 DOM format gives us a few advantages over other XML libraries.  First, we'll have XPath, XInclude, and XSLT available without having to convert the data between formats.  Second, Python objects only need to be created for nodes Python wants a reference to so when we get to parsing data this will happen much faster and with less memory.&lt;/p&gt; &lt;p&gt;At version 0.2 NodeTree is still in its infancy but some of its API can be demonstrated.  Here's a short example:&lt;/p&gt;&lt;pre&gt;&lt;br /&gt;Python 3.2.2 (default, Oct  3 2011, 00:20:58) &lt;br /&gt;[GCC 4.5.2] on linux2&lt;br /&gt;Type &quot;help&quot;, &quot;copyright&quot;, &quot;credits&quot; or &quot;license&quot; for more information.&lt;br /&gt;&gt;&gt;&gt; import nodetree&lt;br /&gt;&gt;&gt;&gt; doc = nodetree.Document()&lt;br /&gt;&gt;&gt;&gt; doc.append(nodetree.Comment(' Start '))&lt;br /&gt;&gt;&gt;&gt; doc.append(nodetree.Element('data'))&lt;br /&gt;&gt;&gt;&gt; doc.append(nodetree.Comment(' Fini '))&lt;br /&gt;&gt;&gt;&gt; doc[1].attributes['thing'] = 'normal'&lt;br /&gt;&gt;&gt;&gt; doc[1].append(nodetree.Element('record'))&lt;br /&gt;&gt;&gt;&gt; doc[1][0].append('First') &lt;br /&gt;&gt;&gt;&gt; doc[1].append(nodetree.Element('record'))&lt;br /&gt;&gt;&gt;&gt; doc[1][1].append('Second')&lt;br /&gt;&gt;&gt;&gt; doc&lt;br /&gt;&amp;lt;?xml version=&quot;1.0&quot;?&amp;gt;&lt;br /&gt;&amp;lt;!-- Start --&amp;gt;&lt;br /&gt;&amp;lt;data thing=&quot;normal&quot;&amp;gt;&lt;br /&gt;  &amp;lt;record&amp;gt;First&amp;lt;/record&amp;gt;&lt;br /&gt;  &amp;lt;record&amp;gt;Second&amp;lt;/record&amp;gt;&lt;br /&gt;&amp;lt;/data&amp;gt;&lt;br /&gt;&amp;lt;!-- Fini --&amp;gt;&lt;br /&gt;&lt;/pre&gt; &lt;p&gt;NodeTree 0.2 is tested to work with Python 2.6, 2.7, 3.1, 3.2, and 3.3-pre.  The next release is intended to support basic file and stream parsing.&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/28358787-3369351492720751137?l=arcriley.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 08 Dec 2011 12:05:03 +0000</pubDate>
	<dc:creator>Arc Riley (noreply@blogger.com)</dc:creator>
</item>
<item>
	<title>Arc Riley: XMPP on the web</title>
	<guid>tag:blogger.com,1999:blog-28358787.post-635684739293847958</guid>
	<link>http://arcriley.blogspot.com/2011/12/xmpp-on-web.html</link>
	<description>&lt;p&gt;A &lt;a href=&quot;https://plus.google.com/109741359399131092509/posts/L9zcgcjzVsL&quot;&gt;short thread on G+&lt;/a&gt; has prompted this longer sharing of my vision for &lt;a href=&quot;http://xmpp.org/&quot;&gt;XMPP&lt;/a&gt; on the web.&lt;/p&gt; &lt;p&gt;For XMPP use on a website we currently have &lt;a href=&quot;http://xmpp.org/extensions/xep-0206.html&quot;&gt;BOSH&lt;/a&gt; and, in an extreme-alpha state, &lt;a href=&quot;http://tools.ietf.org/html/draft-moffitt-xmpp-over-websocket-00&quot;&gt;XMPP over websockets&lt;/a&gt;.  The advantage of websockets is obvious, BOSH is a high overhead protocol that we'd all rather not have to use, however both have the same problem: you either must share your login credentials (and thus access to your account) with every website you use a single account with, or must create a new account (JID) for every XMPP-based website you use.&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://oauth.net/2/&quot;&gt;Oauth2&lt;/a&gt; for XMPP might be a partial solution to this by requiring your authorization through a central identity site and using the resulting token for logging in, however, you're still opening yourself up to the 3rd party website accessing your roster, sending spam messages on your behalf, and potentially worse.  All this really gives you is the ability to later disable access to websites who misuse your account.&lt;/p&gt; &lt;p&gt;This is the crux of the issue: when using an Javascript library provided by a website and using a proxy provided by that website, whether BOSH, websockets, or otherwise, you're giving that website unlimited access to your account.  I have not seen a workable proposal to solve this and until this is solved XMPP cannot see widespread use on the web.&lt;/p&gt; &lt;p&gt;I'm proposing that we solve this by putting XMPP in the browser, either directly or through a plugin.  Expose a standard javascript API for allowing websites to use an XMPP connection along with a security model which gives users control as to what a website is allowed to use their connection for.  Ie, if a script on a website wants access to their roster the user will be prompted for it, if they want to join a MUC room display a standard prompt for that.  Browsers can have multiple XMPP sessions at once and allow the user to select which account they'd like to use with an XMPP-enabled site.&lt;/p&gt; &lt;p&gt;This is just some early ideas, I'm nowhere near implementing this though I think the conversation would be useful to get started.&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/28358787-635684739293847958?l=arcriley.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sat, 03 Dec 2011 20:55:59 +0000</pubDate>
	<dc:creator>Arc Riley (noreply@blogger.com)</dc:creator>
</item>
<item>
	<title>Arc Riley: OpenGL ES support complete</title>
	<guid>tag:blogger.com,1999:blog-28358787.post-732662806970378169</guid>
	<link>http://arcriley.blogspot.com/2011/11/opengl-es-support-complete.html</link>
	<description>&lt;p&gt;The experimental branch, where the OpenGL ES migration was being done, has just been closed and merged into the default branch of &lt;a href=&quot;http://www.pysoy.org/&quot;&gt;PySoy&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Thanks to Steve Anton, one of our &lt;a href=&quot;http://code.google.com/gci&quot;&gt;Google Code-In 2011&lt;/a&gt; students, for some of the last bits of work to complete the merge.  We are now one step closer to mobile support!  If you're a student ages 13-17 and would like to earn a Google tshirt and some cash by helping us with Android support, sign up for Google Code-In and claim &lt;a href=&quot;http://www.google-melange.com/gci/task/view/google/gci2011/7129341&quot;&gt;this task&lt;/a&gt;.&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/28358787-732662806970378169?l=arcriley.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Mon, 28 Nov 2011 02:04:56 +0000</pubDate>
	<dc:creator>Arc Riley (noreply@blogger.com)</dc:creator>
</item>
<item>
	<title>Arc Riley: Google Code-In 2011 is Open</title>
	<guid>tag:blogger.com,1999:blog-28358787.post-3103335143049011759</guid>
	<link>http://arcriley.blogspot.com/2011/11/google-code-in-2011-is-open.html</link>
	<description>&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://media.pysoy.org/img/gci_logo_2011.jpg&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://media.pysoy.org/img/gci_logo_2011.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Google Code-In has officially begun!&lt;br /&gt;&lt;br /&gt;From today through January 16th students age 13-17 can earn up to &lt;b&gt;$500&lt;/b&gt; working on small tasks for software projects such as &lt;a href=&quot;http://www.moinmoin.org/&quot;&gt;MoinMoin&lt;/a&gt;, &lt;span class=&quot;proflinkWrapper&quot;&gt;&lt;span class=&quot;proflinkPrefix&quot;&gt;&lt;/span&gt;&lt;a class=&quot;proflink&quot; href=&quot;http://www.sympy.org/&quot;&gt;SymPy&lt;/a&gt;&lt;/span&gt;, and &lt;a href=&quot;http://www.pysoy.org/&quot;&gt;PySoy&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;Tasks  include coding, documentation, graphic design, video production,  testing, translation, research, public speaking, and many other kinds of  challenges of varying difficulty.&lt;br /&gt;&lt;br /&gt;Completing just one task earns  a student a Google tshirt.  Every 3 tasks they complete earns them  $100, and the 10 top students worldwide will earn an all-expense paid  trip to Mountain View, CA to receive an award at Google.&lt;br /&gt;&lt;br /&gt;PySoy  has over 75 tasks offered for the first half of the program and another  75-100 will be made available December 16th.  Our mentors are on  &lt;a href=&quot;http://www.freenode.net/&quot;&gt;Freenode&lt;/a&gt; channel &lt;a class=&quot;ot-hashtag&quot; href=&quot;http://www.pysoy.org/&quot;&gt;#PySoy&lt;/a&gt; ready to help students start earning their tshirt and cash today.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.google-melange.com/&quot;&gt;Sign up&lt;/a&gt; today and get started!&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/28358787-3103335143049011759?l=arcriley.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Mon, 21 Nov 2011 04:49:33 +0000</pubDate>
	<dc:creator>Arc Riley (noreply@blogger.com)</dc:creator>
</item>
<item>
	<title>Arc Riley: Rugby season nearly over, getting back to work</title>
	<guid>tag:blogger.com,1999:blog-28358787.post-750959451615879213</guid>
	<link>http://arcriley.blogspot.com/2011/11/rugby-season-nearly-over-getting-back.html</link>
	<description>Wow its been a long time.  &lt;p&gt;We wrapped up &lt;a href=&quot;http://socghop.appspot.com/gsoc/homepage/google/gsoc2011&quot;&gt;Google's Summer of Code 2011&lt;/a&gt; in August.  The &lt;a href=&quot;http://python.org/&quot;&gt;Python Software Foundation&lt;/a&gt; did wonderfully overall, for &lt;a href=&quot;http://www.pysoy.org/&quot;&gt;PySoy&lt;/a&gt; 6 of our 7 students passed.  A great year overall - thanks to all the mentors and students!&lt;/p&gt; &lt;p&gt;&lt;img src=&quot;http://blog.pysoy.org/images/ArcGettingSchooled-small.jpg&quot; align=&quot;right&quot; width=&quot;200&quot; height=&quot;150&quot; alt=&quot;Five man scrum vs Warrington&quot; /&gt;Rugby has been a life changer for me.  My first game was in September, after floating in and out of practice for years and training pretty heavily since April.  No serious injuries, but no shortage of pain; I've frequently needed to sleep in a reclining chair to keep blood from pooling in my shoulders and nurse bruised ribs, dislocated fingers and toes, shin splints, and pulled muscles everywhere.  All so worth it.&lt;/p&gt; &lt;p&gt;These guys are like family to me.  I know it sounds sappy, but I've come to trust the men in my pack with my life - in a way we all do every time we bind onto each other a scrum.  Its not that big of an adjustment culturally though due to the large number of programmers, lawyers, and IT professionals on the team.  When you work behind a desk all day its nice to balance it out with a physically intensive training in the evening and games on Saturday.&lt;/p&gt; &lt;p&gt;&lt;br clear=&quot;both&quot; /&gt;&lt;img src=&quot;http://blog.pysoy.org/images/renegades-hellfest2011.jpg&quot; align=&quot;center&quot; width=&quot;400&quot; height=&quot;250&quot; alt=&quot;Renegades Reds at Hellfest 2011&quot; /&gt;&lt;/p&gt; &lt;p&gt;The climax of the season was Hellfest October 29th in Dallas, TX.  &lt;a href=&quot;http://dcrugby.com/&quot;&gt;Washington Renegades&lt;/a&gt; brought our B-side to compete and returned with the 1st place trophy.  My teammate &lt;a href=&quot;http://www.jimbo.info/weblog/?p=1996&quot;&gt;Jimbo&lt;/a&gt; has more pics on his blog of the tournament, I was wearing #23 as tighthead prop.&lt;/p&gt; &lt;p&gt;We have two more games this season before we settle in for the Winter and indoor off-season training at the gym.  A group of us plan to do a 8-week program run by &lt;a href=&quot;http://web.usarugby.org/cgi-bin/viadesto/natteams/mnt/15ProfileDetail.pl?playerId=368&quot;&gt;a professional rugby player&lt;/a&gt; this Winter to get ready for the Spring season and the &lt;a href=&quot;http://www.binghamcup.com/&quot;&gt;Bingham Cup 2012&lt;/a&gt; in Manchester UK next June.&lt;/p&gt; &lt;p&gt;Today the PySoy project was accepted to &lt;a href=&quot;http://code.google.com/gci&quot;&gt;Google Code-In&lt;/a&gt;.  We've got a number of &lt;a href=&quot;http://www.pysoy.org/wiki/CodeIn/2011&quot;&gt;student tasks&lt;/a&gt; lined up, with many more being worked on for the first batch set to release in less than two weeks.  Interested students should hop on &lt;a href=&quot;http://www.freenode.net/&quot;&gt;Freenode&lt;/a&gt; (#PySoy) and get oriented before the program starts so they're ready to jump right into their first task!&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/28358787-750959451615879213?l=arcriley.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 10 Nov 2011 01:15:57 +0000</pubDate>
	<dc:creator>Arc Riley (noreply@blogger.com)</dc:creator>
</item>
<item>
	<title>Mayank Singh: Post Gsoc musings</title>
	<guid>tag:blogger.com,1999:blog-7950945591602024170.post-8334393024163988524</guid>
	<link>http://aneeksview.blogspot.com/2011/08/post-gsoc-musings.html</link>
	<description>&lt;!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } 	--&gt;&lt;p&gt;It's been a long time since I last blogged. And yes my gsoc got over officially and successfully on 26th. So, I thought of this to be a nice occasion to blog.&lt;/p&gt;  &lt;p&gt;I got a really nice oppportunity to work on a game engine still in its nascent stages and observe all the hurdles and problems related to creating such an engine when I got into the gsoc program under python software foundation this april. And yes I experienced all those showstoppers. But due to enormous help from my mentor Arc and google, I was able to surpass them.&lt;/p&gt; &lt;p&gt;To begin with the tale, I was supposed to create a controller for wiimotes to be used with &lt;a href=&quot;http://pysoy.org&quot;&gt;PySoy&lt;/a&gt;. But this first involved getting the wiimote communicate with the PC. A wiimote communicates via bluetooth. I googled a lot about this communication and found out that it was almost fully reverse engineered. The best place to visit regarding all this revengs would be wiibrew.org. However, I didn't want to delve into sockets and all considering there were ready-made libraries for wiimote communication. I did a study of all those libraries. I found two libraries that seemed to catch my eye and thus suit for this purpose. One of them was cwiid and the other wiiuse. Cwiid seemed to be the most popular considering its packages in all major linux distros. So, I went forward with cwiid (I would regret this later). Having decided upon the library, next step was to figure out how to use it in the game engine. Since, the backend of our engine(libsoy) was being written in vala and genie (abstractions over C and gobject based), I had to write the vala apis of each non-gobject C library I used. For me, there were two: cwiid and bluez. I spent the first fifteen days understanding the concept of vala apis, and writing vala apis(vapis) for cwiid and bluez. At the end of this period, I was able to write code in Genie(pythonic form of vala) and connect to a wiimote. In the next period that lasted upto the mid-term evaluations, I created various examples to leverage the functions of the library with our game engine. One example allowed to control a cube via the accelerometer though it wasn't calibrated properly. Another allowed to control the same cube via the buttons on the wiimote. However, the technique used to control the cube was to query the wiimote every time for state information and use it to move the cube. As is clear, this wasn't a nice method. Near the end of this period, I started to correct this and write callback functions to act as interrupts for events happening on the wiimote. However, Due to a possible race condition I got stuck on a segmentation fault. Arc suggested to create a separate thread for  non-window controller events. I embarked on that. However, in a discussion with Arc later, we discovered that the library cwiid was already using three threads inside it and had a lot of redundant code as well. That's when I had to take tough decision to dump cwiid and do something else.  &lt;/p&gt; &lt;p&gt;            At this point, Arc started taking great interest in my project and found out that another gsoc student David herrmann was working on writing a bluez driver for wiimote. He even got him on Google+. There we checked out his kernel driver and bluez plugin which were all working great (Kudos to him). The good part about it was that this made the wiimote directly accessible by the x11 xinput2 (something that allows multiple pointers and cursors on the same screen). Also in the meantime, Arc made the major decision to dump Gdk for windowing and is currently using vanilla x11 with egl on top (this is currently in experimental). At this very time, I did my first custom kernel compilations patched with the kernel driver after which numerous more followed due to some mistakes here and there. When I finally got wiimote pairing with my laptop natively, I started looking into the usage of his kernel driver. Turned out, he had switched off accelerometer and IR pointer information reporting due to large usage of bandwidth and you could switch it on by writing to sysfs files created for the wiimote on pairing. I tried googling on a library to edit sysfs files but turned out they did not need any special library but normal file handling to write to them. Also, Arc wasn't happy with sysfs file editing in the game engine so I resolved upon writing an x.org driver for wiimote to handle all this and also map buttons and handle accelerometer and IR data. Currently, the driver isn't yet complete and I am taking a bit of rest post-gsoc. You can check it out at &lt;a href=&quot;http://hg.pysoy.org/xf86-input-wiimote&quot;&gt;here&lt;/a&gt;. I plan to complete it after my college tests. Meanwhile, to test the IR pointer, I had made a makeshift circuit on a breadboard using some IR emitters from certain obstacle detectors I had from an earlier project.  &lt;/p&gt; &lt;p&gt;            All in all, my gsoc experience was a perfect example of a real-world coding environment filled with all its ups and lows.&lt;/p&gt; &lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7950945591602024170-8334393024163988524?l=aneeksview.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Tue, 30 Aug 2011 20:39:00 +0000</pubDate>
	<dc:creator>Mayank Singh (noreply@blogger.com)</dc:creator>
</item>

</channel>
</rss>

