<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<feed xmlns="http://www.w3.org/2005/Atom">

	<title>Planet PySoy</title>
	<link rel="self" href="http://planet.pysoy.org/atom.xml"/>
	<link href="http://planet.pysoy.org/"/>
	<id>http://planet.pysoy.org/atom.xml</id>
	<updated>2010-03-12T01:45:03+00:00</updated>
	<generator uri="http://www.planetplanet.org/">Planet/2.0 +http://www.planetplanet.org</generator>

	<entry>
		<title type="html">PyCon 2010 forced out of space by hotel</title>
		<link href="http://arcriley.blogspot.com/2010/02/pycon-2010-forced-out-of-space-by-hotel.html"/>
		<id>tag:blogger.com,1999:blog-28358787.post-3984428242210849733</id>
		<updated>2010-02-27T03:04:48+00:00</updated>
		<content type="html">&lt;a href=&quot;http://1.bp.blogspot.com/_OiANIGzqG6k/S4a7ego2ZHI/AAAAAAAAAJo/K1SpaGoMrIw/s1600-h/IMAG0181.jpg&quot;&gt;&lt;img src=&quot;http://1.bp.blogspot.com/_OiANIGzqG6k/S4a7ego2ZHI/AAAAAAAAAJo/K1SpaGoMrIw/s320/IMAG0181.jpg&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5442243332555564146&quot; /&gt;&lt;/a&gt;&lt;br /&gt;I write this blog post from PyCon 2010, sitting on the floor in a tiny crowded room the hotel, &lt;a href=&quot;http://atlantaregency.hyatt.com/&quot;&gt;Hyatt Regency Atlanta&lt;/a&gt;, has relocated us to.&lt;br /&gt;&lt;br /&gt;For the &lt;a href=&quot;http://us.pycon.org/2010&quot;&gt;PyCon&lt;/a&gt; sprints we had reserved the large room used for lunches over the weekend plus seven break-out rooms; just after the sprints began we found another convention (Christian Colleges) setting up in the large dining room and setting up signage throughout the area.  As it turns out the hotel double-booked the space we were using starting a chain of reducing our space and relocating us.  Today, the final day of the sprints, we were relocated to a small room in the basement of the International Tower; a separate building entirely.  The PyCon organizers have opened up the Chicago Room for work space as well (previously used for the media and organizers), but many people have simply left because there's no space to work.&lt;br /&gt;&lt;br /&gt;This is only a long chain of disrespect and negligence the hotel has demonstrated toward us; turning heat off in our work space at night (last night everyone had to relocate to the only room with heat) and leaving exterior doors open near the space, refusing to remove garbage (or even provide garbage cans) in the work space, continually rearranging tables in the open space, the list goes on.&lt;br /&gt;&lt;br /&gt;Above this, I found the catering over the weekend extremely sub-par and some of the waiters rude.  I actually had to argue with the waitress Sunday to give me a vegan meal because so many other people had claimed to be vegan for an alternative to the apparently less palatable meat lunch they were offering.  I don't think most of the attendees would have chosen to pay what they must have been charging for these meals and many of us found them so skimpy that we went out for lunch anyway.&lt;br /&gt;&lt;br /&gt;I truly hope the PyCon organizers get either a full refund for this convention, including some reimbursement for us attendees, or cancel the second year of the contract and find a better hotel for next year.  We all took time off work/school/life to be here, and frankly, I would have left Monday if this was known ahead of time.  If PyCon is at the same hotel next year I know I'll be seeking alternative housing arrangements.&lt;br /&gt;&lt;br /&gt;At least the &lt;a href=&quot;http://www.python.org/&quot;&gt;PSF&lt;/a&gt; is buying us pizza for lunch today.&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-3984428242210849733?l=arcriley.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Arc Riley</name>
			<email>noreply@blogger.com</email>
			<uri>http://arcriley.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Arc's Soy Machine</title>
			<link rel="self" href="http://arcriley.blogspot.com/feeds/posts/default"/>
			<id>tag:blogger.com,1999:blog-28358787</id>
			<updated>2010-03-10T11:16:05+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">working on gtypes</title>
		<link href="http://arcriley.blogspot.com/2010/02/working-on-gtypes.html"/>
		<id>tag:blogger.com,1999:blog-28358787.post-1613023220246269856</id>
		<updated>2010-02-20T23:03:30+00:00</updated>
		<content type="html">We've been moving forward on the &lt;a href=&quot;http://www.pysoy.org/&quot;&gt;PySoy&lt;/a&gt; rewrite using &lt;a href=&quot;http://live.gnome.org/Genie&quot;&gt;Genie&lt;/a&gt; in faith that a &lt;a href=&quot;http://www.python.org/&quot;&gt;Python 3&lt;/a&gt; binding for &lt;a href=&quot;http://en.wikipedia.org/wiki/GObject&quot;&gt;GObject&lt;/a&gt; would come about.&lt;br /&gt;&lt;br /&gt;At &lt;a href=&quot;http://us.pycon.org/&quot;&gt;PyCon&lt;/a&gt; this weekend I've brainstormed with &lt;a href=&quot;http://kirkmcdonald.blogspot.com/&quot;&gt;Kirk McDonald&lt;/a&gt;, author of &lt;a href=&quot;http://pyd.dsource.org/&quot;&gt;PyD&lt;/a&gt; which serves a similar role to use &lt;a href=&quot;http://digitalmars.com/d/&quot;&gt;D&lt;/a&gt; types/objects in Python, and several other authors of &lt;a href=&quot;http://en.wikipedia.org/wiki/Foreign_function_interface&quot;&gt;FFIs&lt;/a&gt; for Python.  A rough strategy is coming together to solve this in a dynamic manner.&lt;br /&gt;&lt;br /&gt;The first part of the solution is &lt;a href=&quot;http://live.gnome.org/Vala&quot;&gt;libvala&lt;/a&gt;; using a small part of its functionality to parse .vapi and .gir files for existing GObject libraries such as GTK and Cairo as well as any library written in Vala or Genie.  This gets us the C API for the library in all it's object oriented goodness, and with that we can dynamically generate bindings using Python's ctypes.&lt;br /&gt;&lt;br /&gt;The second part is a GObject type in Python which supports subclassing in Python.  Kirk detailed how this is done in PyD; each generated GObject type gets a subtype with all of its virtual methods all running Python methods which call the superclass's C method by default.  When a Python subclass of a GObject class is made this GObject subclass is used allowing Python to override any of its methods and pass objects of the subclass back to GObject where they'll perform as expected.  Not simple or easy, but its a strategy.&lt;br /&gt;&lt;br /&gt;The end result is dynamic Python 3 bindings for GTK as well as PySoy and all the other tools we work on.&lt;br /&gt;&lt;br /&gt;I'm organizing a sprint for this at PyCon.  If anyone has ideas on this please comment, or if you'd like to help (whether at PyCon 2010 or not) get in touch with me.&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-1613023220246269856?l=arcriley.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Arc Riley</name>
			<email>noreply@blogger.com</email>
			<uri>http://arcriley.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Arc's Soy Machine</title>
			<link rel="self" href="http://arcriley.blogspot.com/feeds/posts/default"/>
			<id>tag:blogger.com,1999:blog-28358787</id>
			<updated>2010-03-10T11:16:05+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">It's all about hackerspaces!</title>
		<link href="http://jon-neal.blogspot.com/2010/02/its-all-about-hackerspaces.html"/>
		<id>tag:blogger.com,1999:blog-3723981155102888739.post-4322095153398209526</id>
		<updated>2010-02-16T15:17:13+00:00</updated>
		<content type="html">Recently Arc tuned me on to a wonderful concept deemed a Hackerspace.  For those of you who haven't heard about them they are places where people can get together and do things related to art, technology, science, and much more!  After a quick google search I found a local &lt;a href=&quot;http://hive13.org/&quot;&gt;hackerspace&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The hackerspace has a plethora of neat items such as a makerbot (a type of reprap machine) and a multitude of arcade cabinets a group of people are currently modifying.  Everyone at the space is extremely welcoming and really, really freaking helpful with a multitude of subjects.  The type of people that show up really did surprise me from engineers, to music artists, to just plain artists.  Take a look around your city! I bet you have one near.&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/3723981155102888739-4322095153398209526?l=jon-neal.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Jon</name>
			<email>noreply@blogger.com</email>
			<uri>http://jon-neal.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">PySoy development</title>
			<link rel="self" href="http://jon-neal.blogspot.com/feeds/posts/default"/>
			<id>tag:blogger.com,1999:blog-3723981155102888739</id>
			<updated>2010-03-06T22:25:07+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Libsoy r131 on Windows 7</title>
		<link href="http://pysoy-dev-win32.blogspot.com/2010/01/libsoy-r131-on-windows-7.html"/>
		<id>tag:blogger.com,1999:blog-7726002498961487304.post-491888636490114365</id>
		<updated>2010-01-28T18:09:46+00:00</updated>
		<content type="html">&lt;a href=&quot;http://4.bp.blogspot.com/__9OKPwqEels/S2I8pnK5rdI/AAAAAAAAABA/rRxZMxyfrwc/s1600-h/libsoy2.png&quot;&gt;&lt;img src=&quot;http://4.bp.blogspot.com/__9OKPwqEels/S2I8pnK5rdI/AAAAAAAAABA/rRxZMxyfrwc/s400/libsoy2.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5431970786149248466&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;After porting &lt;a href=&quot;http://www.pysoy.org/browser/src/widgets/Canvas.pym&quot;&gt;Canvas&lt;/a&gt; over to &lt;a href=&quot;http://live.gnome.org/Genie&quot;&gt;Genie&lt;/a&gt; in the new &lt;a href=&quot;http://arcriley.blogspot.com/2010/01/libsoy-building-separately-now.html&quot;&gt;libsoy&lt;/a&gt; library, I decided to try it out on my new Windows 7 machine. Take a look at the result, it shows a 1 Dimensional texture applied to a &lt;a href=&quot;http://hg.pysoy.org/libsoy/file/b44b4d9c375d/src/widgets/Canvas.gs&quot;&gt;Canvas&lt;/a&gt; widget. This is somewhat of a &lt;a href=&quot;http://philosophistry.com/archives/2009/01/what-is-a-black.html&quot;&gt;&quot;Black Triangle&quot;&lt;/a&gt; moment, where it's a simple test, but a step in the right direction. The Canvas widget just displays a texture on the window. Libsoy works on Linux, Windows, and somewhat on Mac.&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/7726002498961487304-491888636490114365?l=pysoy-dev-win32.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>pysoy-dev-win32</name>
			<email>noreply@blogger.com</email>
			<uri>http://pysoy-dev-win32.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">PySoy Windows Development Blag</title>
			<subtitle type="html">Pysoy opengl python 3D engine, windows development blog</subtitle>
			<link rel="self" href="http://pysoy-dev-win32.blogspot.com/feeds/posts/default"/>
			<id>tag:blogger.com,1999:blog-7726002498961487304</id>
			<updated>2010-03-11T21:14:02+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Epson Artisan 810 on Linux (Ubuntu)</title>
		<link href="http://arcriley.blogspot.com/2010/01/epson-artisan-810-on-linux-ubuntu.html"/>
		<id>tag:blogger.com,1999:blog-28358787.post-5329256361187965070</id>
		<updated>2010-01-13T15:27:16+00:00</updated>
		<content type="html">We purchased a new printer for the house last night to replace the windows-only Dell printer that ran out of ink (and would cost almost as much as a new printer for replacements).&lt;br /&gt;&lt;br /&gt;First, some advice: plan ahead, order online, don't buy from Staples.  We paid $170 for this when Epson is offering them &lt;a href=&quot;http://www.epson.com/cgi-bin/Store/consumer/consDetail.jsp?oid=63082419&amp;ref=r03032FbKV&amp;s_kwcid=TC|6812|epson%20artisan||S||4450464972&amp;gclid=CP6iiL2Uop8CFcNM5QodEzQ1Iw&quot;&gt;direct for $130&lt;/a&gt; with free shipping.  If we were not in need of immediate replacement we could have saved $40 and waited a week.  Further, the rep at the store lied when he told us the printer was going to the back to get a unit &quot;fresh off the truck&quot;, it was a unit another customer had returned with ink spilled and dried on the inside and some of the packaging torn open.  Buyer beware.  Otherwise, they seemed to clean it up and repackaged it well.  I have half a mind to order the printer online and return this one within 14 days for refund to save the $40.&lt;br /&gt;&lt;br /&gt;The printer itself is fairly impressive.  Two paper trays (letter/legal plus photo/cardstock) and a built-in CD printing tray that slides out when you select CD printing, scanner with auto-document feeder, and built in 10/100 and wifi so we don't need to depend on any computer in the house to properly &quot;share&quot; the printer.  All I had to do is select our access point on the front controls and give it a static IP on our router.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.ubuntu.com/&quot;&gt;Ubuntu 9.10&lt;/a&gt; detects the printer over the network in seconds and I was printing the Ubuntu test page in under a minute, so more than half the systems in the house were easy.  Windows setup was not hard, but time consuming as loads of bundled software installed from the CD.  The only complaint I have is the color seems a little off; printing the same image in both Linux and Windows shows a fairly radical difference in quality.  The prints from Linux are still much better than printing from Windows to our older printer.&lt;br /&gt;&lt;br /&gt;Next I tried to use the scanner function.  Using &lt;a href=&quot;http://gimp.org/&quot;&gt;GIMP&lt;/a&gt; to launch &lt;a href=&quot;http://www.sane-project.org/&quot;&gt;SANE&lt;/a&gt; (Scanner Access Now Easy), the printer was automatically detected and let me select either the flatbed or auto-document feeder.  Both options work fine &lt;a href=&quot;https://bugs.launchpad.net/ubuntu/+source/sane-backends/+bug/507153&quot;&gt;until I start the scan, at which point the Epson Artisan 810 locks up&lt;/a&gt; and needs to be rebooted.&lt;br /&gt;&lt;br /&gt;There is a scan function from the front panel, not supporting anywhere near the scanner's full resolution and storing in JPEG format with obvious artifacts around text/etc, but at least we don't need to use a Windows system for basic scans until SANE is fixed.  Since I have a stand-alone Epson scanner that works beautifully this isn't a huge issue for me, though it would be great to be able to use the auto-document feeder from Linux and be able to put this older scanner into storage.&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-5329256361187965070?l=arcriley.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Arc Riley</name>
			<email>noreply@blogger.com</email>
			<uri>http://arcriley.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Arc's Soy Machine</title>
			<link rel="self" href="http://arcriley.blogspot.com/feeds/posts/default"/>
			<id>tag:blogger.com,1999:blog-28358787</id>
			<updated>2010-03-10T11:16:05+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">soy.windows.Window rendering, GLEW headache</title>
		<link href="http://arcriley.blogspot.com/2010/01/soywindowswindow-rendering-glew.html"/>
		<id>tag:blogger.com,1999:blog-28358787.post-7219111041636082268</id>
		<updated>2010-01-11T01:00:46+00:00</updated>
		<content type="html">I'm seeing &quot;red&quot; now with our Windows, in more ways than one.  The rendering code for soy.windows.Windows is to the point that, by changing the glClear color, we're seeing red in the window rather than black.  This is a big step forward given that porting to use &lt;a href=&quot;http://library.gnome.org/devel/gdk/unstable/&quot;&gt;GDK&lt;/a&gt; is a big part of the libsoy migration.&lt;br /&gt;&lt;br /&gt;On the other side of &quot;red&quot; is anger over GLEW.  I really wish I knew of a decent, mature alternative to &lt;a href=&quot;http://glew.sourceforge.net/&quot;&gt;GLEW&lt;/a&gt;.  The project is so immature that, though one of the maintainers is a &lt;a href=&quot;http://debian.org&quot;&gt;Debian&lt;/a&gt; developer, they do not provide the pkgconfig file for it.  Without this file, which provides Waf with the location of the library and it's headers, we would have to write a search script to verify that it's installed and find it's location.  None of the major distros I looked at provide the pkgconfig on their own.&lt;br /&gt;&lt;br /&gt;It's also at least partially redundant with the functionality of &lt;a href=&quot;http://projects.gnome.org/gtkglext/&quot;&gt;gtkglext&lt;/a&gt; which I believe should be able to replace GLEW entirely.&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-7219111041636082268?l=arcriley.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Arc Riley</name>
			<email>noreply@blogger.com</email>
			<uri>http://arcriley.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Arc's Soy Machine</title>
			<link rel="self" href="http://arcriley.blogspot.com/feeds/posts/default"/>
			<id>tag:blogger.com,1999:blog-28358787</id>
			<updated>2010-03-10T11:16:05+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">libsoy running on OSX - briefly</title>
		<link href="http://arcriley.blogspot.com/2010/01/libsoy-running-on-osx-briefly.html"/>
		<id>tag:blogger.com,1999:blog-28358787.post-6143470934648720845</id>
		<updated>2010-01-08T03:33:05+00:00</updated>
		<content type="html">For the first time in 3.5 years, we had &lt;a href=&quot;http://www.pysoy.org/wiki/Window&quot;&gt;soy.windows.Window&lt;/a&gt; running on OSX.  Just the basics; opening, (re)setting the title, resizing - but it worked.  This is thanks to &lt;a href=&quot;http://library.gnome.org/devel/gdk/unstable/&quot;&gt;GDK&lt;/a&gt;, the windowing and event backend to &lt;a href=&quot;http://www.gtk.org/&quot;&gt;GTK+&lt;/a&gt;, &lt;a href=&quot;http://www.gtk-osx.org/&quot;&gt;running on Mac OSX&lt;/a&gt; via native Quartz backend (not X11).&lt;br /&gt;&lt;br /&gt;Shortly after we moved the window code to a &lt;a href=&quot;http://www.pysoy.org/wiki/Threading&quot;&gt;background thread&lt;/a&gt; and it broke.  The code runs fine on GNU/Linux and Windows, but on OSX all we get are white rectangles where the windows would normally be rendered.  The rectangles even resize properly, and window events are getting processed by our code, just nothing rendered inside (not even the window title or buttons).  I &lt;a href=&quot;https://bugzilla.gnome.org/show_bug.cgi?id=606378&quot;&gt;filed this bug&lt;/a&gt; and hope the problem to be solved quickly.&lt;br /&gt;&lt;br /&gt;The problem could be as simple as a missing &lt;a href=&quot;http://developer.apple.com/mac/library/DOCUMENTATION/Cocoa/Reference/ApplicationKit/Classes/NSGraphicsContext_Class/Reference/Reference.html#//apple_ref/doc/uid/20000336-flushGraphics&quot;&gt;NSGraphicsContext.flushGraphics&lt;/a&gt; call (which is only needed when rendering is done in a non-main thread).  If the bug hasn't been fixed by our next release I'll look into patching this myself.&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-6143470934648720845?l=arcriley.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Arc Riley</name>
			<email>noreply@blogger.com</email>
			<uri>http://arcriley.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Arc's Soy Machine</title>
			<link rel="self" href="http://arcriley.blogspot.com/feeds/posts/default"/>
			<id>tag:blogger.com,1999:blog-28358787</id>
			<updated>2010-03-10T11:16:05+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">language mixing</title>
		<link href="http://arcriley.blogspot.com/2010/01/language-mixing.html"/>
		<id>tag:blogger.com,1999:blog-28358787.post-6466994339826667990</id>
		<updated>2010-01-05T17:45:58+00:00</updated>
		<content type="html">After some work to update our &lt;a href=&quot;http://ode.org/&quot;&gt;ODE&lt;/a&gt; bindings for &lt;a href=&quot;http://live.gnome.org/Vala&quot;&gt;Vala&lt;/a&gt;, we discussed &lt;a href=&quot;http://bulletphysics.org/&quot;&gt;Bullet&lt;/a&gt; again last night and returned to the conclusion to drop further work on ODE and focus on Bullet for the next release.&lt;br /&gt;&lt;br /&gt;It quickly became clear that the C bindings for Bullet are utter horse crap; praise for the effort for whoever wrote them, and I by no means intend to disparage your ability or intentions, but they're horribly incomplete and usable for little more than the two demo apps included in the source.  Moreso, the C bindings are &quot;higher level&quot; than the C++ library, performing several steps automatically (such as calculating body inertia from mass and shape) which our &lt;a href=&quot;http://www.pysoy.org/&quot;&gt;3d game engine&lt;/a&gt; needs more direct control over.  I first wrote an alternative (ABI compatible) C header for it, and then started to rewrite it entirely.&lt;br /&gt;&lt;br /&gt;I decided that if we're going to write our own Bullet compatibility layer, we may as well go all the way in wrapping it with &lt;a href=&quot;http://en.wikipedia.org/wiki/GObject&quot;&gt;GObject&lt;/a&gt;.  The code is simple enough, but defining GObject in C involves &lt;a href=&quot;http://library.gnome.org/devel/gobject/stable/howto-gobject.html&quot;&gt;a lot of boilerplate&lt;/a&gt; - in some cases more than the code itself.  To get through this and retain my sanity, I started work this morning on a C++ code generator that takes the relevant functions and wraps them in the standard boilerplate.&lt;br /&gt;&lt;br /&gt;The format I'm using is &lt;a href=&quot;http://live.gnome.org/Genie&quot;&gt;Genie&lt;/a&gt;-like for class and method definition, then C++ within dumped directly to the target .cpp.  The code generator will generate the .vapi as it works and compile our wrapper as a static library which &lt;a href=&quot;http://hg.pysoy.org/libsoy&quot;&gt;libsoy&lt;/a&gt; can link to directly.&lt;br /&gt;&lt;br /&gt;Kudos again to &lt;a href=&quot;http://code.google.com/p/waf/&quot;&gt;Waf&lt;/a&gt; for making this rather eccentric use of their build system dead simple and clean.&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-6466994339826667990?l=arcriley.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Arc Riley</name>
			<email>noreply@blogger.com</email>
			<uri>http://arcriley.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Arc's Soy Machine</title>
			<link rel="self" href="http://arcriley.blogspot.com/feeds/posts/default"/>
			<id>tag:blogger.com,1999:blog-28358787</id>
			<updated>2010-03-10T11:16:05+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">libsoy building separately now</title>
		<link href="http://arcriley.blogspot.com/2010/01/libsoy-building-separately-now.html"/>
		<id>tag:blogger.com,1999:blog-28358787.post-3660226876858635215</id>
		<updated>2010-01-04T17:30:15+00:00</updated>
		<content type="html">We've been working on the &quot;libsoy&quot; branch of &lt;a&gt;PySoy&lt;/a&gt; for some time, a split of the compiled code to a &lt;a href=&quot;http://en.wikipedia.org/wiki/GObject&quot;&gt;GObject&lt;/a&gt;-based C library with Python bindings plus the pure Python code constituting PySoy itself.&lt;br /&gt;&lt;br /&gt;Previously we were struggling to build this with &lt;a href=&quot;http://www.python.org/&quot;&gt;Python&lt;/a&gt;'s distutils system, which didn't support building system-wide C libraries nor using valac to do so.  &lt;a href=&quot;http://www.ohloh.net/accounts/reportingsjr&quot;&gt;Jon&lt;/a&gt; and I started looking into &lt;a href=&quot;http://code.google.com/p/waf/&quot;&gt;Waf&lt;/a&gt; last week.  It's pretty impressive; Python based (and works with Python 3), simple, intuitive, does everything we need with only a few dozen lines of script.  Last night we setup &lt;a href=&quot;http://hg.pysoy.org/libsoy&quot;&gt;libsoy in it's own repository&lt;/a&gt; and building (just a very basic soy.windows for now) on it's own.&lt;br /&gt;&lt;br /&gt;I think we're settled to work with &lt;a href=&quot;http://live.gnome.org/Genie&quot;&gt;Genie&lt;/a&gt;, a comparison between the syntax of soy.windows &lt;a href=&quot;http://hg.pysoy.org/pysoy/file/fc0d72456e59/lib/windows.vala&quot;&gt;in Vala&lt;/a&gt; vs &lt;a href=&quot;http://hg.pysoy.org/libsoy/file/363e16cbfca8/src/windows.gs&quot;&gt;in Genie&lt;/a&gt; makes that choice simple.  The only complaint I have with Genie is needing to escape newlines inside struct {}'s (ie, &lt;a href=&quot;http://hg.pysoy.org/libsoy/file/363e16cbfca8/src/windows.gs&quot;&gt;line 32-35&lt;/a&gt;), but reportedly this is being fixed in an upcoming release to be more Python-like (ignoring newlines while inside () or {}).&lt;br /&gt;&lt;br /&gt;After a bit of searching (through source code, I wish Waf had better API reference in it's docs) I found the gir= option for Vala building, and another hour later both soy-1.0.gir and soy-1.0.typelib were being generated, except both were empty save the &quot;soy&quot; namespace:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;&amp;lt;repository version=&amp;quot;1.0&amp;quot; xmlns=&amp;quot;&lt;a href=&quot;http://www.gtk.org/introspection/core/1.0&quot;&gt;http://www.gtk.org/introspection/core/1.0&lt;/a&gt;&amp;quot; xmlns:c=&amp;quot;&lt;a href=&quot;http://www.gtk.org/introspection/c/1.0&quot;&gt;http://www.gtk.org/introspection/c/1.0&lt;/a&gt;&amp;quot; xmlns:glib=&amp;quot;&lt;a href=&quot;http://www.gtk.org/introspection/glib/1.0&quot;&gt;http://www.gtk.org/introspection/glib/1.0&lt;/a&gt;&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;package name=&amp;quot;soy&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;namespace name=&amp;quot;soy&amp;quot; version=&amp;quot;1.0&amp;quot; c:prefix=&amp;quot;soy&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;/namespace&amp;gt;&lt;br /&gt;&amp;lt;/repository&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;I've hit this before with trying to generate &lt;a href=&quot;http://live.gnome.org/GObjectIntrospection&quot;&gt;GObject Introspection&lt;/a&gt; from distutils but chalked it up to not building it correctly.  As it turns out, this is a known &lt;a href=&quot;https://bugzilla.gnome.org/show_bug.cgi?id=576327&quot;&gt;bug in GIR&lt;/a&gt; and a previously unknown bug in &lt;a href=&quot;http://live.gnome.org/Vala&quot;&gt;valac&lt;/a&gt; to fail silently.&lt;br /&gt;&lt;br /&gt;I'm still hoping the GIR developers will come to their senses and support nested namespaces, but given that they've stubbornly rejected this for months already I'm afraid we'll have to build a cross-language bindings builder based on Vala/Genie instead of helping to update &lt;a href=&quot;http://live.gnome.org/PyGI&quot;&gt;PyGI&lt;/a&gt; for Python 3.&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-3660226876858635215?l=arcriley.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Arc Riley</name>
			<email>noreply@blogger.com</email>
			<uri>http://arcriley.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Arc's Soy Machine</title>
			<link rel="self" href="http://arcriley.blogspot.com/feeds/posts/default"/>
			<id>tag:blogger.com,1999:blog-28358787</id>
			<updated>2010-03-10T11:16:05+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">state of Vala IDEs</title>
		<link href="http://arcriley.blogspot.com/2010/01/state-of-vala-ides.html"/>
		<id>tag:blogger.com,1999:blog-28358787.post-4402517190645634828</id>
		<updated>2010-01-02T00:46:23+00:00</updated>
		<content type="html">Wasted quite a few hours today trying to get a &lt;a href=&quot;http://live.gnome.org/Vala&quot;&gt;Vala&lt;/a&gt;/&lt;a href=&quot;http://live.gnome.org/Genie&quot;&gt;Genie&lt;/a&gt; IDE working.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://vtg.googlecode.com/&quot;&gt;VTG&lt;/a&gt; is basically broken, crashing at random.  It had problems before this; having a fairly rigid concept of a &quot;project&quot;, not supporting non-autotools build systems or libraries very easily, not supporting Genie, and the symbol mapping having odd quirks, so this is not a huge loss.&lt;br /&gt;&lt;br /&gt;A newer Vala plugin for gEdit, &lt;a href=&quot;http://yorba.org/valencia&quot;&gt;Valencia&lt;/a&gt;, looks promising but doesn't support recent Vala versions and attempting to build it raised pages of errors.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://live.gnome.org/Anjuta&quot;&gt;Anjuta&lt;/a&gt; has always looked interesting, but I've never managed to get the &lt;a href=&quot;http://abderrahim.arablug.org/blog/&quot;&gt;Anjuta Vala plugin&lt;/a&gt; to compile.  At present, it doesn't appear to work with Gnome 2.28.&lt;br /&gt;&lt;br /&gt;I don't use Eclipse or Mono, so the final option is &lt;a href=&quot;http://www.valaide.org/&quot;&gt;Valide&lt;/a&gt;.  To my surprise, it's been packaged for &lt;a href=&quot;http://ubuntu.com/&quot;&gt;Ubuntu&lt;/a&gt; and works out of the box.  It supports Genie, it seems to have features on-par with VTG and the other IDEs, and works with the latest version of Vala.&lt;br /&gt;&lt;br /&gt;My only complaint so far is the new project wizard doesn't list the &lt;a href=&quot;http://www.fsf.org/licensing/licenses/agpl-3.0.html&quot;&gt;AGPLv3&lt;/a&gt; as a license option, but then none of the Vala IDE options do yet.&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-4402517190645634828?l=arcriley.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Arc Riley</name>
			<email>noreply@blogger.com</email>
			<uri>http://arcriley.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Arc's Soy Machine</title>
			<link rel="self" href="http://arcriley.blogspot.com/feeds/posts/default"/>
			<id>tag:blogger.com,1999:blog-28358787</id>
			<updated>2010-03-10T11:16:05+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Python meme 2009</title>
		<link href="http://arcriley.blogspot.com/2009/12/python-meme-2009.html"/>
		<id>tag:blogger.com,1999:blog-28358787.post-7652816143110574896</id>
		<updated>2009-12-29T15:55:14+00:00</updated>
		<content type="html">Here’s a short, 5 questions, 2009 Python meme. Copy-paste the questions, and blog your answers !&lt;br /&gt;&lt;br /&gt;1. What’s the coolest Python application, framework or library you have discovered in 2009 ?&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.sqlalchemy.org/&quot;&gt;SQLAlchemy&lt;/a&gt;, not only does it fully (properly) abstract the SQL database for you, but provides a full &lt;a href=&quot;http://en.wikipedia.org/wiki/Object-relational_mapping&quot;&gt;Object Relational Mapping&lt;/a&gt;.  What's more, it's Python 3 ready.&lt;br /&gt;&lt;br /&gt;2. What new programming technique did you learn in 2009 ?&lt;br /&gt;&lt;br /&gt;Using &lt;a href=&quot;http://live.gnome.org/GObjectIntrospection&quot;&gt;GObject Introspection&lt;/a&gt; to mix several languages (ie, Python and Javascript) in the same application.&lt;br /&gt;&lt;br /&gt;3. What’s the name of the open source project you contributed the most in 2009 ? What did you do ?&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://concordance-xmpp.org/&quot;&gt;Concordance XMPP&lt;/a&gt;, an XMPP service framework for Python I started January 1st 2009.  &lt;br /&gt;&lt;br /&gt;4. What was the Python blog or website you read the most in 2009 ?&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://planet.python.org/&quot;&gt;Python Planet&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;5. What are the three top things you want to learn in 2010 ?&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a href=&quot;http://www.analog.com/en/embedded-processing-dsp/sharc/products/index.html&quot;&gt;SHARC DSPs&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Arc_welding&quot;&gt;Welding&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Aikido&quot;&gt;Aikido&lt;/a&gt;&lt;/li&gt;&lt;/ol&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-7652816143110574896?l=arcriley.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Arc Riley</name>
			<email>noreply@blogger.com</email>
			<uri>http://arcriley.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Arc's Soy Machine</title>
			<link rel="self" href="http://arcriley.blogspot.com/feeds/posts/default"/>
			<id>tag:blogger.com,1999:blog-28358787</id>
			<updated>2010-03-10T11:16:05+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">peer1/serverbeach severe failure</title>
		<link href="http://arcriley.blogspot.com/2009/12/peer1serverbeach-severe-failure.html"/>
		<id>tag:blogger.com,1999:blog-28358787.post-607215358281632416</id>
		<updated>2009-12-07T13:36:07+00:00</updated>
		<content type="html">We've seen a greater than average share of service outages at &lt;a href=&quot;http://www.serverbeach.com/&quot;&gt;Serverbeach&lt;/a&gt;; incompetent electricians blowing out the battery backup system causing an evening of downtime, network failures taking the server down for hours at a time, other random outages without explanation.&lt;br /&gt;&lt;br /&gt;Of course these outages affect large numbers of customers so you get 500 errors when trying to access the customer portal or put on hold for up to an hour waiting to talk to someone only able to enter a ticket into the system on your behalf.&lt;br /&gt;&lt;br /&gt;This latest outage tops them all, however.  Yesterday afternoon they attempted to merge the &lt;a href=&quot;http://peer1.com/&quot;&gt;Peer1&lt;/a&gt; and Serverbeach customer portals which knocked out DNS for a &quot;large number&quot; of customers.  They sent out an email to everyone and I fully expected it to be a short outage.&lt;br /&gt;&lt;br /&gt;Last night at around 8pm all of our domains were still down.  I attempted to log into the customer portal to find my old password not working, and after a lengthy process to recover it I found myself locked out of it unless I agreed to a lengthy new service agreement which I certainly don't have time to read through in the middle of an outage.&lt;br /&gt;&lt;br /&gt;After sitting on hold with customer service a ticket was filed.  Which I replied to, and replied to, and have only received blanket emails asking to reply again if we're still out.  More than 24 hours later we are still down.&lt;br /&gt;&lt;br /&gt;Serverbeach claims they refund customers for outages, but I have yet to receive a dime credited for any past issues and I fully expect them to make getting credit for this difficult as well.  At this point I don't think it's fair to myself or the communities which rely on this server to continue hosting with them.&lt;br /&gt;&lt;br /&gt;I've found a really decent deal with &lt;a href=&quot;http://he.com/&quot;&gt;Hurricane Electric&lt;/a&gt; with the added perks of IPV6, more bandwidth, and newer hardware for less than I'm paying now.&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-607215358281632416?l=arcriley.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Arc Riley</name>
			<email>noreply@blogger.com</email>
			<uri>http://arcriley.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Arc's Soy Machine</title>
			<link rel="self" href="http://arcriley.blogspot.com/feeds/posts/default"/>
			<id>tag:blogger.com,1999:blog-28358787</id>
			<updated>2010-03-10T11:16:05+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Gentoo wins again with Python 3</title>
		<link href="http://arcriley.blogspot.com/2009/12/gentoo-wins-again-with-python-3.html"/>
		<id>tag:blogger.com,1999:blog-28358787.post-1870979962198199384</id>
		<updated>2009-12-01T04:42:51+00:00</updated>
		<content type="html">Despite being heavily involved in &lt;a href=&quot;http://www.ubuntu.com/&quot;&gt;Ubuntu&lt;/a&gt; advocacy and promotion, being a member of the Ubuntu project, and using it on my personal systems, I've had to keep my servers and development machines running &lt;a href=&quot;http://gentoo.org/&quot;&gt;Gentoo&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;When developing software, we need to work on what will be &quot;mainstream&quot; in 6 to 12 months, not what's already mainstream.  When a new version of our physics library is released, it may depreciate certain methods or include new features we'll really want in our release, but that version won't be packaged until 2-8 months after the new library was released, given the typical release cycles and &quot;feature freeze&quot; stopping new packages from being included too close to release time.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.python.org/&quot;&gt;Python&lt;/a&gt; 3 is a great example of this; &lt;a href=&quot;http://arcriley.blogspot.com/feeds/posts/www.gnome.org/&quot;&gt;Gnome 3&lt;/a&gt; will apparently use Python 3 for many applets, and Gnome 3's release schedule sets it for inclusion in Ubuntu 10.10 (next Fall), but at present Python 3.1 is packaged but none of the 3rd party packages are available for it - even those which explicitly support Python 3 already.&lt;br /&gt;&lt;br /&gt;While doing my periodic Gentoo upgrade, I just noticed that Portage, the package system for Gentoo, can now be built to run on Python 3 directly.  When you have both Python 2 and 3 installed on your system, packages wich support both will build and install for both, and their packaged versions are often available just days after release.  From what I've seen, Gentoo is one of the best distributions for Python developers right now.&lt;br /&gt;&lt;br /&gt;I wouldn't recommend that my family run Gentoo, many of whom happily run Ubuntu, but it's lack of support for developers is concerning to me.  I do not believe it should be difficult to both support new Linux users and experienced developers with the same distribution.&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-1870979962198199384?l=arcriley.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Arc Riley</name>
			<email>noreply@blogger.com</email>
			<uri>http://arcriley.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Arc's Soy Machine</title>
			<link rel="self" href="http://arcriley.blogspot.com/feeds/posts/default"/>
			<id>tag:blogger.com,1999:blog-28358787</id>
			<updated>2010-03-10T11:16:05+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Dell employee discounts a joke</title>
		<link href="http://arcriley.blogspot.com/2009/11/dell-employee-discounts-joke.html"/>
		<id>tag:blogger.com,1999:blog-28358787.post-8815005589635926260</id>
		<updated>2009-11-30T14:21:14+00:00</updated>
		<content type="html">I just learned that the Dell employee discount, which is offered to employees of numerous Dell partners, does not apply to their &lt;a href=&quot;http://www.dell.com/ubuntu&quot;&gt;N-series&lt;/a&gt; laptops, even though many people only have this discount because of their work with Ubuntu.&lt;br /&gt;&lt;br /&gt;The irony continues to drip as the models I compared between the employee purchase price and the Ubuntu versions of the same, such as the Inspiron 15 and Inspiron 15n, roughly discounted the added cost of Windows 7 only.  It appears that the employee discount equates to free Windows 7.&lt;br /&gt;&lt;br /&gt;The current Dell Ubuntu offerings lack in many other areas, such as not offering gigabit ethernet or 802.11n as options.  While I would love to support Dell in working with the Ubuntu community more, I really can't justify buying a sub-par laptop at the prices they're offering them at.&lt;br /&gt;&lt;br /&gt;My friend &lt;a href=&quot;http://ubuntulinuxtipstricks.blogspot.com/&quot;&gt;Mackenzie&lt;/a&gt; showed off her &lt;a href=&quot;http://system76.com/&quot;&gt;System76&lt;/a&gt; laptop at the 9.10 release party a few weeks ago.  All of their laptops include gigabit ethernet, 802.11agn wireless, and many other options Dell doesn't offer.  They're a bit more pricey, but according to Mackenzie their service is significantly better.&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-8815005589635926260?l=arcriley.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Arc Riley</name>
			<email>noreply@blogger.com</email>
			<uri>http://arcriley.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Arc's Soy Machine</title>
			<link rel="self" href="http://arcriley.blogspot.com/feeds/posts/default"/>
			<id>tag:blogger.com,1999:blog-28358787</id>
			<updated>2010-03-10T11:16:05+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">moving to Bullet</title>
		<link href="http://arcriley.blogspot.com/2009/11/moving-to-bullet.html"/>
		<id>tag:blogger.com,1999:blog-28358787.post-8432161361074213244</id>
		<updated>2009-11-19T15:41:46+00:00</updated>
		<content type="html">&lt;a href=&quot;http://bulletphysics.org/&quot;&gt;Bullet&lt;/a&gt; has some really great features over &lt;a href=&quot;http://ode.org/&quot;&gt;ODE&lt;/a&gt;; soft body physics, particle physics, and hardware acceleration among the top.&lt;br /&gt;&lt;br /&gt;After talking with a &lt;a href=&quot;http://crystalspace3d.org/&quot;&gt;Crystal Space&lt;/a&gt; developer about this, I put it on my list of things to look into when &lt;a href=&quot;http://pysoy.org/&quot;&gt;PySoy&lt;/a&gt; is a bit more mature.  However, a &lt;a href=&quot;http://debian.org/&quot;&gt;Debian&lt;/a&gt; packager's decision has accelerated these plans.&lt;br /&gt;&lt;br /&gt;ODE is not designed to be installed as a single shared library, it has many build-time options which radically change it's behaviour - such as whether the library uses single or double precision, or whether to calculate gyroscopic force.  As a general rule, distributions stick to the defaults when packaging as much as possible, but Debian (and thus &lt;a href=&quot;http://ubuntu.com/&quot;&gt;Ubuntu&lt;/a&gt; and other Debian-based distros) ship a single system-wide library with non-default compile flags (Double precision) that would result in sub-par performance, network sync issues, and in some cases bugs in games.&lt;br /&gt;&lt;br /&gt;Debian could have shipped four or eight different versions of the ODE library, such that games could be linked against the one it was designed for and work as expected, or ODE could have been designed to build both a single and double precision library with the other options as runtime flags, but instead we game developers are caught in the middle.&lt;br /&gt;&lt;br /&gt;We fought this battle before with Soya, for some time actually, and in the end Soya had to ship their own version of ODE embedded in the source and statically linked to get around the problem.  Even then it was an issue to get the package including a static ODE included.  It's a battle not worth fighting.&lt;br /&gt;&lt;br /&gt;While Bullet also supports building as double precision, it's an option so rarely used that no distro builds with it (&lt;a href=&quot;http://gentoo.org/&quot;&gt;Gentoo&lt;/a&gt; doesn't even have a USE flag to switch it), and given that Bullet is currently not packaged for Debian it'd be easier to add it as a new proper package than fight Debian packages to improve their build of ODE.&lt;br /&gt;&lt;br /&gt;I am not looking forward to working with Bullet's incomplete C-API, likely having to fill in some gaps as we work on it, nor writing the &lt;a href=&quot;http://live.gnome.org/Vala&quot;&gt;Vala&lt;/a&gt; bindings for Bullet, but it'd be a lot faster and fun - not to mention resulting in new features.&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-8432161361074213244?l=arcriley.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Arc Riley</name>
			<email>noreply@blogger.com</email>
			<uri>http://arcriley.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Arc's Soy Machine</title>
			<link rel="self" href="http://arcriley.blogspot.com/feeds/posts/default"/>
			<id>tag:blogger.com,1999:blog-28358787</id>
			<updated>2010-03-10T11:16:05+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">On the Compilation of Go Packages</title>
		<link href="http://kirkmcdonald.blogspot.com/2009/11/on-compilation-of-go-packages.html"/>
		<id>tag:blogger.com,1999:blog-3465761147722302880.post-1633721127664147003</id>
		<updated>2009-11-13T11:29:28+00:00</updated>
		<content type="html">&lt;blockquote&gt;&lt;i&gt;Man, Go sucks, the creators went and invented their own encoding, which Go source code is required to be in.&lt;/i&gt;&lt;/blockquote&gt;

&lt;h4&gt;Compilation environment&lt;/h4&gt;

&lt;p&gt;I have been playing with the &lt;a href=&quot;http://golang.org&quot;&gt;Go programming language&lt;/a&gt;. The &lt;tt&gt;gc&lt;/tt&gt; compilation environment is broadly similar to &lt;tt&gt;gcc&lt;/tt&gt;'s, but with enough subtle differences that I am seeing a lot of confusion about how it works.&lt;/p&gt;

&lt;p&gt;Traditionally, C is thought of as consisting of &lt;tt&gt;.c&lt;/tt&gt; source files and &lt;tt&gt;.h&lt;/tt&gt; header files. Each &lt;tt&gt;.c&lt;/tt&gt; file compiles to a &lt;tt&gt;.o&lt;/tt&gt; object file. The object files are then linked into some manner of final binary, be it a &lt;tt&gt;.a&lt;/tt&gt; static library, a &lt;tt&gt;.so&lt;/tt&gt; dynamic library, or an executable binary.&lt;/p&gt;

&lt;p&gt;In this scenario, the binary depends on the object files which are linked into it, the object files each depend on their respective source file, and each source file depends on the headers which it includes (directly or indirectly).&lt;/p&gt;

&lt;p&gt;The &lt;tt&gt;gc&lt;/tt&gt; compiler for Go (the one also known variously as &lt;tt&gt;5g&lt;/tt&gt;, &lt;tt&gt;6g&lt;/tt&gt;, and &lt;tt&gt;8g&lt;/tt&gt;) works slightly differently. Here, we have &lt;tt&gt;.go&lt;/tt&gt; source files. Every &lt;tt&gt;.go&lt;/tt&gt; file belongs to exactly one &lt;i&gt;package&lt;/i&gt;, and a package may be comprised of as many &lt;tt&gt;.go&lt;/tt&gt; files as you desire. Packages have a &lt;tt&gt;.5&lt;/tt&gt;, &lt;tt&gt;.6&lt;/tt&gt;, or &lt;tt&gt;.8&lt;/tt&gt; extension, depending on the architecture you are compiling for. A package is obtained by &lt;em&gt;compiling&lt;/em&gt; all of the &lt;tt&gt;.go&lt;/tt&gt; files which comprise it.&lt;/p&gt;

&lt;p&gt;Packages are the result of compiling &lt;tt&gt;.go&lt;/tt&gt; files. They fill two roles. They are roughly the equivalent of object files in C (though, as I will explore in a moment, they are not exactly equivalent). They also fill the role that header files fill in C. Packages contain meta-data describing what the public interface of the package is.

&lt;p&gt;Therefore, in order for one package to use another, you require the other package to be compiled, and you do not require the source files for the other package. Further, when a package is compiled, it statically links in all of its dependencies.&lt;/p&gt;

&lt;p&gt;Once you have a &quot;main&quot; package, you may then link it into an executable binary. The only file required to do this is the compiled &quot;main&quot; package.&lt;/p&gt;

&lt;h4&gt;An example&lt;/h4&gt;

&lt;p&gt;Here is an example &lt;tt&gt;Makefile&lt;/tt&gt; for a simple executable binary. The binary will be named &lt;i&gt;hello&lt;/i&gt;. It depends on two custom packages, &lt;i&gt;foo&lt;/i&gt; and &lt;i&gt;bar&lt;/i&gt;, which each consist of a number of &lt;tt&gt;.go&lt;/tt&gt; files. The &quot;main&quot; package itself contains two &lt;tt&gt;.go&lt;/tt&gt; files: &lt;i&gt;hello.go&lt;/i&gt; and &lt;i&gt;goodbye.go&lt;/i&gt;.&lt;/p&gt;

&lt;p&gt;For the sake of clarity, all of these source files live in the same directory (in a real application, each package's source files might live in their own directory), and I have hardcoded the architecture to &lt;tt&gt;amd64&lt;/tt&gt;.&lt;/p&gt;

&lt;pre&gt;MAIN_FILES=hello.go goodbye.go
FOO_FILES=foo1.go foo2.go foo3.go
BAR_FILES=bar1.go bar2.go bar3.go

hello: main.6
        6l -o hello main.6
main.6: $(MAIN_FILES) foo.6 bar.6
        6g -I. -o main.6 $(MAIN_FILES)
foo.6: $(FOO_FILES)
        6g -o foo.6 $(FOO_FILES)
bar.6: $(BAR_FILES)
        6g -o bar.6 $(BAR_FILES)
.PHONY: clean
clean:
        rm -f hello main.6 foo.6 bar.6&lt;/pre&gt;

&lt;p&gt;I will explain each of these rules one at a time.&lt;/p&gt;

&lt;pre&gt;hello: main.6
        6l -o hello main.6&lt;/pre&gt;

&lt;p&gt;The &lt;i&gt;hello&lt;/i&gt; executable binary is obtained by linking the &lt;i&gt;main&lt;/i&gt; package. This package already (statically) contains the other packages which it depends on, thus, the only prerequisite is the &lt;i&gt;main&lt;/i&gt; package itself.&lt;/p&gt;

&lt;pre&gt;main.6: $(MAIN_FILES) foo.6 bar.6
        6g -I. -o main.6 $(MAIN_FILES)&lt;/pre&gt;

&lt;p&gt;The &lt;i&gt;main&lt;/i&gt; package is obtained by compiling the source files which comprise the package, and statically linking in the packages which they depend on. Thus, the &lt;i&gt;foo&lt;/i&gt; and &lt;i&gt;bar&lt;/i&gt; packages are prerequisites of the &lt;i&gt;main&lt;/i&gt; package. However, we do not explicitly pass these packages to the compiler. Instead, we pass the compiler the &lt;tt&gt;-I&lt;/tt&gt; option to inform it of where these packages may be found. It is therefore important for a package's filename to match the name it is imported as.&lt;/p&gt;

&lt;pre&gt;foo.6: $(FOO_FILES)
        6g -o foo.6 $(FOO_FILES)
bar.6: $(BAR_FILES)
        6g -o bar.6 $(BAR_FILES)&lt;/pre&gt;

&lt;p&gt;The &lt;i&gt;foo&lt;/i&gt; and &lt;i&gt;bar&lt;/i&gt; packages are simple, and consist only of their own source files.&lt;/p&gt;

&lt;pre&gt;.PHONY: clean
clean:
        rm -f hello main.6 foo.6 bar.6&lt;/pre&gt;

&lt;p&gt;We can &lt;tt&gt;make clean&lt;/tt&gt; by removing all of the binary files. These are the binary, and the packages.&lt;/p&gt;

&lt;h4&gt;Simplifying matters&lt;/h4&gt;

&lt;p&gt;It would be relatively straightforward to write a tool which, given a list of source files, could determine which files belong to which package, what the dependencies between these packages are, and automatically rebuild what is required in a &lt;tt&gt;make&lt;/tt&gt;-like fashion. Writing such a tool may be a project for the future.&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/3465761147722302880-1633721127664147003?l=kirkmcdonald.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;&lt;/p&gt;</content>
		<author>
			<name>Kirk</name>
			<email>noreply@blogger.com</email>
			<uri>http://kirkmcdonald.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">The Audacity to Code</title>
			<subtitle type="html">scope(exit) Py_DECREF(foo);</subtitle>
			<link rel="self" href="http://kirkmcdonald.blogspot.com/feeds/posts/default"/>
			<id>tag:blogger.com,1999:blog-3465761147722302880</id>
			<updated>2010-03-11T18:54:03+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">beta-3 roadmap updated</title>
		<link href="http://arcriley.blogspot.com/2009/11/beta-3-roadmap-updated.html"/>
		<id>tag:blogger.com,1999:blog-28358787.post-7473409357017143391</id>
		<updated>2009-11-05T16:50:16+00:00</updated>
		<content type="html">I updated the &lt;a href=&quot;http://www.pysoy.org/milestone/beta3&quot;&gt;Roadmap for 1.0-beta3&lt;/a&gt; today.&lt;br /&gt;&lt;br /&gt;In short, we're dropping ambitions for audio support in this release.  Once our migration to &lt;a href=&quot;http://live.gnome.org/Vala&quot;&gt;Vala&lt;/a&gt; is complete and the related changes implemented we'll release without further delay.  After that we'll begin work on the newer features like audio, networking, and browser embedding for &lt;a href=&quot;http://www.pysoy.org/milestone/beta4&quot;&gt;beta4&lt;/a&gt; while the community tests and gives feedback on beta3.&lt;br /&gt;&lt;br /&gt;There are a lot of new features already compared to the beta2 release.  We're aiming for a beta3 release by January 1st 2010, 2 years from the beta2 release.&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-7473409357017143391?l=arcriley.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Arc Riley</name>
			<email>noreply@blogger.com</email>
			<uri>http://arcriley.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Arc's Soy Machine</title>
			<link rel="self" href="http://arcriley.blogspot.com/feeds/posts/default"/>
			<id>tag:blogger.com,1999:blog-28358787</id>
			<updated>2010-03-10T11:16:05+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Kudos for Mercurial going GPLv2+</title>
		<link href="http://arcriley.blogspot.com/2009/10/kudos-for-mercurial-going-gplv2.html"/>
		<id>tag:blogger.com,1999:blog-28358787.post-4168532926777273558</id>
		<updated>2009-10-27T14:26:50+00:00</updated>
		<content type="html">The largest problem with integrating &lt;a href=&quot;http://mercurial.selenic.com/&quot;&gt;Mercurial&lt;/a&gt; with our new web framework is being resolved; they are upgrading Mercurial's license to &lt;a href=&quot;http://mercurial.selenic.com/wiki/Relicensing&quot;&gt;GPLv2 or later&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Thanks to this, our favoured dVCS will be available for integrating into &lt;a href=&quot;http://www.fsf.org/licensing/licenses/agpl-3.0.html&quot;&gt;GPLv3&lt;/a&gt; and &lt;a href=&quot;http://www.fsf.org/licensing/licenses/agpl-3.0.html&quot;&gt;AGPLv3&lt;/a&gt; licensed projects without any weird hacks or work-arounds.&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-4168532926777273558?l=arcriley.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Arc Riley</name>
			<email>noreply@blogger.com</email>
			<uri>http://arcriley.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Arc's Soy Machine</title>
			<link rel="self" href="http://arcriley.blogspot.com/feeds/posts/default"/>
			<id>tag:blogger.com,1999:blog-28358787</id>
			<updated>2010-03-10T11:16:05+00:00</updated>
		</source>
	</entry>

</feed>
