<rss version="2.0">
  <channel>
    <title>Main</title>
    <link>http://wiki.slembcke.net/main/published/HomePage</link>
    <description>An Instiki wiki</description>
    <language>en-us</language>
    <ttl>40</ttl>
    <item>
      <title>HomePage</title>
      <description>&lt;h1 style="text-align: center;"&gt;Scott Lembcke&amp;#8217;s Wiki&lt;/h1&gt;


	&lt;h1&gt;Current Projects:&lt;/h1&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://howlingmoonsoftware.com/scribball.shtml"&gt;ScribBall&lt;/a&gt; &amp;#8211; Puzzle game I&amp;#8217;ve worked on with a friend under the &lt;a href="http://www.howlingmoonsoftware.com"&gt;Howling Moon Software&lt;/a&gt; moniker.&lt;/li&gt;
		&lt;li&gt;&lt;a class="existingWikiWord" href="http://wiki.slembcke.net/main/show/Chipmunk"&gt;Chipmunk&lt;/a&gt; &amp;#8211; A high-performance 2D rigid body physics library.&lt;/li&gt;
		&lt;li&gt;&lt;a class="existingWikiWord" href="http://wiki.slembcke.net/main/show/Aerosol"&gt;Aerosol&lt;/a&gt; &amp;#8211; &lt;span class="caps"&gt;A 2D&lt;/span&gt; game prototyping and development environment.&lt;/li&gt;
		&lt;li&gt;&lt;a class="existingWikiWord" href="http://wiki.slembcke.net/main/show/Gimp-Ruby"&gt;Gimp-Ruby&lt;/a&gt; &amp;#8211; A Ruby language binding for the &lt;a href="http://www.gimp.org"&gt;GIMP&lt;/a&gt;. Started for the &lt;a href="http://code.google.com/soc/2006/"&gt;Google Summer of Code 2006&lt;/a&gt; program.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;h1&gt;Past Projects:&lt;/h1&gt;


	&lt;h2&gt;Academic Research Projects:&lt;/h2&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a class="existingWikiWord" href="http://wiki.slembcke.net/main/show/Optimization+of+Java+Generic+Types"&gt;Optimization of Java Generic Types&lt;/a&gt; &amp;#8211; Researching possible optimizations of Java programs.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;h2&gt;School Projects:&lt;/h2&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a class="existingWikiWord" href="http://wiki.slembcke.net/main/show/XPTracker"&gt;XPTracker&lt;/a&gt; &amp;#8211; Final group project for my software engineering course.&lt;/li&gt;
		&lt;li&gt;&lt;a class="existingWikiWord" href="http://wiki.slembcke.net/main/show/Lossy+Image+Bisection"&gt;Lossy Image Bisection&lt;/a&gt; &amp;#8211; Final project for my data compression class.&lt;/li&gt;
		&lt;li&gt;&lt;a class="existingWikiWord" href="http://wiki.slembcke.net/main/show/Realtime+Rigid+Body+Simulation+Using+Impulses"&gt;Realtime Rigid Body Simulation Using Impulses&lt;/a&gt; &amp;#8211; My senior seminar paper.&lt;/li&gt;
		&lt;li&gt;&lt;a class="existingWikiWord" href="http://wiki.slembcke.net/main/show/Atrium+Modeling+Project"&gt;Atrium Modeling Project&lt;/a&gt; &amp;#8211; Class project for a computer graphics course I took. Our task was to model the atrium in the science building of our university.&lt;/li&gt;
		&lt;li&gt;&lt;a class="existingWikiWord" href="http://wiki.slembcke.net/main/show/JCool+Text+Editor"&gt;JCool Text Editor&lt;/a&gt; &amp;#8211; Final group project for my software design course.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;h2&gt;Game Projects:&lt;/h2&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a class="existingWikiWord" href="http://wiki.slembcke.net/main/show/The+X-Fish"&gt;The X-Fish&lt;/a&gt; &amp;#8211; My entry for the &lt;a href="http://www.idevgames.com"&gt;iDevGames&lt;/a&gt; &lt;em&gt;21 Days Later: Predator&lt;/em&gt; contest.&lt;/li&gt;
		&lt;li&gt;&lt;a class="existingWikiWord" href="http://wiki.slembcke.net/main/show/Antimatter"&gt;Antimatter&lt;/a&gt; &amp;#8211; &lt;span class="caps"&gt;A 2D&lt;/span&gt; puzzle/action game similar to &lt;a href="http://www.braingames.getput.com/stransball2/default.asp"&gt;Super Transball&lt;/a&gt;. Created for the &lt;a href="http://www.idevgames.com"&gt;iDevGames&lt;/a&gt; &lt;a href="http://idevgames.com/index.php/contest/omg_info/omg_cup_2005"&gt;Original Mac Games contest&lt;/a&gt;.&lt;/li&gt;
		&lt;li&gt;&lt;a class="existingWikiWord" href="http://wiki.slembcke.net/main/show/Smile+Delivery"&gt;Smile Delivery&lt;/a&gt; &amp;#8211; A one button platformer. Written for an informal 24 hour game contest.&lt;/li&gt;
		&lt;li&gt;&lt;span class="newWikiWord"&gt;Squirrel Physics Kit&lt;a href="http://wiki.slembcke.net/main/new/Squirrel+Physics+Kit"&gt;?&lt;/a&gt;&lt;/span&gt; &amp;#8211; An old implementation of &lt;a href="http://www.gotoandplay.it/_articles/2005/08/advCharPhysics.php"&gt;Jakobsen Physics&lt;/a&gt;.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;h1&gt;Random Stuff:&lt;/h1&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a class="existingWikiWord" href="http://wiki.slembcke.net/main/show/Frankenstein"&gt;Frankenstein&lt;/a&gt; &amp;#8211; Have I created a monster?&lt;/li&gt;
		&lt;li&gt;&lt;a class="existingWikiWord" href="http://wiki.slembcke.net/main/show/Example+Code"&gt;Example Code&lt;/a&gt; &amp;#8211; Random bits of code.&lt;/li&gt;
		&lt;li&gt;&lt;a class="existingWikiWord" href="http://wiki.slembcke.net/main/show/Ruby+Snippets"&gt;Ruby Snippets&lt;/a&gt;&lt;/li&gt;
	&lt;/ul&gt;</description>
      <pubDate>Sun, 24 Aug 2008 16:46:45 Z</pubDate>
      <guid>http://wiki.slembcke.net/main/published/HomePage</guid>
      <link>http://wiki.slembcke.net/main/published/HomePage</link>
    </item>
    <item>
      <title>Chipmunk</title>
      <description>&lt;p style="text-align: center;"&gt;&lt;img src="http://files.slembcke.net/chipmunk/logo/logo1_med.png" alt="" /&gt;&lt;/p&gt;


&lt;div style="float: right;"&gt;&lt;img src="http://files.slembcke.net/chipmunk/balance_chipmunk.png" alt="" /&gt;&lt;/div&gt;

	&lt;h2&gt;Screenshots:&lt;/h2&gt;


	&lt;p style="padding-left: 1em;"&gt;&lt;a href="http://www.slembcke.net/photos/v/programming/chipmunk/"&gt;Go to the screenshot gallery&lt;/a&gt;.&lt;/p&gt;


	&lt;h2&gt;Videos:&lt;/h2&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://files.slembcke.net/chipmunk/movies/sketches.mov"&gt;Sketches&lt;/a&gt; &amp;#8211; An amazing work in progress made by a forum member. (&lt;a href="http://www.slembcke.net/forums/viewtopic.php?f=6&amp;#38;t=10"&gt;forum thread&lt;/a&gt;)&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://files.slembcke.net/chipmunk/movies/machine.mov"&gt;The Machine&lt;/a&gt; (&lt;a href="http://youtube.com/watch?v=sTHoWaTNJiA"&gt;youtube&lt;/a&gt;)&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://files.slembcke.net/chipmunk/movies/pyramid.mov"&gt;Domino pyramid&lt;/a&gt; (&lt;a href="http://www.youtube.com/watch?v=b6HvIDt1VSU"&gt;youtube&lt;/a&gt;)&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://files.slembcke.net/chipmunk/movies/smash.mov"&gt;Domino smash&lt;/a&gt; (&lt;a href="http://www.youtube.com/watch?v=Cx5GBMybxXw"&gt;youtube&lt;/a&gt;)&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://files.slembcke.net/chipmunk/movies"&gt;More&lt;/a&gt;&lt;/li&gt;
	&lt;/ul&gt;


	&lt;h2&gt;Features:&lt;/h2&gt;


	&lt;ul&gt;
	&lt;li&gt;Designed for 2D video games.&lt;/li&gt;
		&lt;li&gt;Circle, convex polygon, and line segment collision primitives.&lt;/li&gt;
		&lt;li&gt;Multiple collision primitives can be attached to the same rigid body.&lt;/li&gt;
		&lt;li&gt;Fast collision detection by using a spatial hash for the broad phase.&lt;/li&gt;
		&lt;li&gt;Extremely fast impulse solving by utilizing Erin Catto&amp;#8217;s contact persistence algorithm.&lt;/li&gt;
		&lt;li&gt;Support for collision callbacks based on object types.&lt;/li&gt;
		&lt;li&gt;Impulses applied to contact points can be retrieved after the impulse solver has finished.&lt;/li&gt;
		&lt;li&gt;Several kinds of joints available.&lt;/li&gt;
		&lt;li&gt;&lt;span class="caps"&gt;C99&lt;/span&gt; implementation, no external dependencies.&lt;/li&gt;
		&lt;li&gt;Ruby extension available.&lt;/li&gt;
		&lt;li&gt;Simple, read the &lt;a href="http://files.slembcke.net/chipmunk/chipmunk-docs.html"&gt;documentation&lt;/a&gt;.&lt;/li&gt;
		&lt;li&gt;Unrestrictive &lt;span class="caps"&gt;MIT&lt;/span&gt; license.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;h2&gt;Download:&lt;/h2&gt;


	&lt;p style="padding-left: 1em;"&gt;&lt;a href="http://files.slembcke.net/chipmunk/release/ChipmunkLatest.tgz"&gt;Source + Demos&lt;/a&gt;&lt;/p&gt;


	&lt;h2&gt;Tutorials:&lt;/h2&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://files.slembcke.net/chipmunk/tutorials/MoonBuggyTutorial.tar.gz"&gt;Moon buggy tutorial&lt;/a&gt; (XCode project)
	&lt;ul&gt;
	&lt;li&gt;Create a simple side scrolling vehicle game. (Complete with soft suspension!)&lt;/li&gt;
		&lt;li&gt;Shows basic Chipmunk usage including initialization and usage of joints.&lt;/li&gt;
	&lt;/ul&gt;
	&lt;/li&gt;
		&lt;li&gt;&lt;em&gt;More to come&lt;/em&gt;&lt;/li&gt;
	&lt;/ul&gt;


	&lt;h2&gt;Community:&lt;/h2&gt;


	&lt;p style="padding-left: 1em;"&gt;&lt;a href="http://www.slembcke.net/forums/viewforum.php?f=1"&gt;Chipmunk Forums at Slembcke.net&lt;/a&gt;&lt;/p&gt;


	&lt;h2&gt;Testimonials&lt;/h2&gt;


	&lt;p style="padding-left: 1em;"&gt;&lt;em&gt;&amp;#8221;I had been working on my own physics code for months, trying to make it as fast as possible &amp;#8211; then I took 3 days to change out my setup for chipmunk and things improved considerably. Chipmunk is fast and easy, I recommend it.&amp;#8221;&lt;/em&gt; &amp;#8211; Derek Arndt (&lt;a href="http://batteryacid.org/biofilm/"&gt;Biofilm&lt;/a&gt;)&lt;/p&gt;


	&lt;h2&gt;Logos&lt;/h2&gt;


	&lt;p style="text-align: center;"&gt;&lt;img src="http://files.slembcke.net/chipmunk/logo/logo1_tiny.png" alt="" /&gt; &lt;img src="http://files.slembcke.net/chipmunk/logo/logo2_tiny.png" alt="" /&gt;&lt;/p&gt;


	&lt;p style="padding-left: 1em;"&gt;Want to throw a logo on your splash screen to show how much you appreciate Chipmunk? Frank Condello was gracious enough to make a logo for me. A couple variations are available &lt;a href="http://files.slembcke.net/chipmunk/logo"&gt;here&lt;/a&gt;.&lt;/p&gt;


	&lt;h2&gt;SVN:&lt;/h2&gt;


	&lt;p style="padding-left: 1em;"&gt;Chipmunk is currently hosted as a Google Code Project. &lt;a href="http://code.google.com/p/chipmunk-physics/"&gt;Go there now&lt;/a&gt;.&lt;/p&gt;


	&lt;h2&gt;Acknowledgments:&lt;/h2&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://www.gphysics.com"&gt;Box2D&lt;/a&gt;:
	&lt;ul&gt;
	&lt;li&gt;Erin Catto&amp;#8217;s Box2D code was the most useful reference that I used when creating Chipmunk. His contact persistence algorithm is the main reason why Chipmunk is so fast.&lt;/li&gt;
	&lt;/ul&gt;
	&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://graphics.ethz.ch/~brunoh/download/CollisionDetectionHashing_VMV03.pdf"&gt;Optimized Spatial Hashing for Collision Detection of Deformable Objects&lt;/a&gt;
	&lt;ul&gt;
	&lt;li&gt;The best article I could find on spatial hashing. Their hash function seems to perform very well.&lt;/li&gt;
	&lt;/ul&gt;
	&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://graphics.stanford.edu/~fedkiw/papers/stanford2003-01.pdf"&gt;Nonconvex Rigid Bodies with Stacking&lt;/a&gt;
	&lt;ul&gt;
	&lt;li&gt;My previous implementation was based on this paper. I only implemented part of the algorithm before deciding that something simpler would be better suited for real time.&lt;/li&gt;
	&lt;/ul&gt;
	&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://www.amazon.com/Physics-Game-Developers-David-Bourg/dp/0596000065"&gt;Physics for Game Developers&lt;/a&gt;
	&lt;ul&gt;
	&lt;li&gt;This book is a good reference for a lot of the math you&amp;#8217;ll need, but is far from a good reference on implementing a physics engine.&lt;/li&gt;
	&lt;/ul&gt;&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p style="text-align: center;"&gt;&lt;em&gt;Logo by Frank Condello, Chipmunk sillouette by Kelvin Nishikawa&lt;/em&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 28 May 2008 02:21:08 Z</pubDate>
      <guid>http://wiki.slembcke.net/main/published/Chipmunk</guid>
      <link>http://wiki.slembcke.net/main/published/Chipmunk</link>
    </item>
    <item>
      <title>Realtime Rigid Body Simulation Using Impulses</title>
      <description>&lt;h1&gt;Short Introduction:&lt;/h1&gt;


&lt;div style="float: right; background-color: LightGrey; padding: 1em; margin: 1em;"&gt;

	&lt;p&gt;&lt;a href="http://files.slembcke.net/misc/RigidBodies.pdf"&gt;&lt;img src="http://files.slembcke.net/misc/RigidBodies_thumb.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;


	&lt;p style="text-align: center;"&gt;Read the paper&lt;/p&gt;


&lt;/div&gt;

	&lt;p style="padding-left: 1em;"&gt;Our senior seminar papers didn&amp;#8217;t have to include any original work or research (lam I know). They were in fact supposed to be entirely a literature review. I was hard at work writing &lt;a class="existingWikiWord" href="http://wiki.slembcke.net/main/show/Chipmunk"&gt;Chipmunk&lt;/a&gt; from scratch at the same time. I originally was going to work in a bit about my own implementation, but as I would get no credit for doing so, I decided to focus my efforts on developing Chipmunk to the point were I could generate some animations that would knock people&amp;#8217;s socks off at the presentation. I think I did that fairly well as I certainly had the coolest media of all of the presentations that semester, and most of it made by me. :)&lt;/p&gt;


	&lt;p style="padding-left: 1em;"&gt;Other than that, I&amp;#8217;ll let the paper speak for itself.&lt;/p&gt;</description>
      <pubDate>Sat, 24 Nov 2007 08:55:39 Z</pubDate>
      <guid>http://wiki.slembcke.net/main/published/Realtime+Rigid+Body+Simulation+Using+Impulses</guid>
      <link>http://wiki.slembcke.net/main/published/Realtime+Rigid+Body+Simulation+Using+Impulses</link>
    </item>
    <item>
      <title>Frankenstein</title>
      <description>&lt;h1&gt;My freakish/hideous laptop.&lt;/h1&gt;


	&lt;p&gt;&lt;img src="http://www.slembcke.net/files/misc/frank1.jpg" alt="" /&gt; &lt;img src="http://www.slembcke.net/files/misc/frank2.jpg" alt="" /&gt;&lt;/p&gt;


	&lt;h2&gt;The Story:&lt;/h2&gt;


	&lt;p style="padding-left: 1em;"&gt;It&amp;#8217;s made from parts of three different iBooks!&lt;/p&gt;


	&lt;p style="padding-left: 1em;"&gt;My sister used to have an orange iBook that she stopped using when my dad gave her his key-lime colored iBook. She&amp;#8217;s a big orange fan though, so she asked if I could switch the cases for her. I knew the display case would be pretty trivial to switch, so I did that, but told her that I couldn&amp;#8217;t do the bottom. She was happy enough with just the top, so that was that.&lt;/p&gt;


	&lt;p style="padding-left: 1em;"&gt;Some time later, my white iBook died of the dreaded logic board problem for the second time. My warranty was out and they hadn&amp;#8217;t yet announced the extended support plan, so I tore it apart.&lt;/p&gt;


	&lt;p style="padding-left: 1em;"&gt;I figured I might as well put the good parts like the brand now 40GB HD, combo drive, 512MB dimm, and wireless card to use. So I pulled my sister&amp;#8217;s old iBook out and threw the extra parts in there.&lt;/p&gt;


	&lt;p style="padding-left: 1em;"&gt;Bottom case, processor and screen from an orange iBook, display case from a key-lime iBook, and everything else from a white iBook. Runs great as a couch machine. Couldn&amp;#8217;t ask for more.&lt;/p&gt;


	&lt;h2&gt;Frankenstein lives on:&lt;/h2&gt;


	&lt;p style="padding-left: 1em;"&gt;After spending a weekend trying out ways to revive Frank&amp;#8217;s usefulness, I came to the conclusion that he&amp;#8217;s still kicking. I was going to try to install &lt;a href="http://www.ubuntu.org"&gt;Ubuntu&lt;/a&gt; Linux on it to see if that would make the system faster. That was a definite no. I also used &lt;a href="http://eshop.macsales.com/OSXCenter/XPostFacto/Framework.cfm?page=XPostFacto3.html"&gt;XPostFacto&lt;/a&gt; to install 10.4 which certainly gave Ubuntu a run for it&amp;#8217;s money. With speed seeming like a choice between 6 and a half dozen. I obviously picked &lt;span class="caps"&gt;OSX&lt;/span&gt;. The &lt;span class="caps"&gt;GNOME&lt;/span&gt; desktop environment is simply too pokey to be realistically usable on Frank, and certainly can&amp;#8217;t stand it&amp;#8217;s own against &lt;span class="caps"&gt;OSX&lt;/span&gt; anyway. I certainly was impressed with Ubuntu as far as distro&amp;#8217;s go though. It certainly gets my recommendation.&lt;/p&gt;


	&lt;p style="padding-left: 1em;"&gt;So with a fresh system on it, I began fiddling with settings and was convinced enough that it was still very usable for anything but graphics. It has plenty of disk space, it plays EyeTV recorded &lt;span class="caps"&gt;MPE&lt;/span&gt;Gs just fine and can play older games and emulators well enough. The only thing holding me back from using it on a regular basis is that the battery is shot. So I decided to bite the bullet and buy one for it.&lt;/p&gt;


	&lt;p style="padding-left: 1em;"&gt;Only time will tell if it is worth the money.&lt;/p&gt;


	&lt;h2&gt;Yes, it was worth the money&lt;/h2&gt;


	&lt;p style="padding-left: 1em;"&gt;Even though it&amp;#8217;s as slow as molasses, and doesn&amp;#8217;t have hardware accelerated OpenGL to run most of my programs, it&amp;#8217;s still very useful. There&amp;#8217;s still a lot of code that I can use it to write, and works just fine for wirelessly surfing the web. It also gets great battery life, 5-7 hours. I find it very likely that the next computer I get will be a new laptop. We&amp;#8217;ll see what Apple does with the Intel iBooks (or whatever they decide to call them). Maybe if I get a good internship this summer I could splurge for a MacBook.&lt;/p&gt;


	&lt;h2&gt;Update for the Curious:&lt;/h2&gt;


	&lt;p style="padding-left: 1em;"&gt;I did in fact get a good internship that summer. See: &lt;a class="existingWikiWord" href="http://wiki.slembcke.net/main/show/Gimp-Ruby"&gt;Gimp-Ruby&lt;/a&gt; I ended up buying a MacBook to do my development work on, and have been very happy with it. Frankenstein still gets a fair bit of use for playing network Starcraft and playing old &lt;span class="caps"&gt;OS 9&lt;/span&gt; games (such as the old &lt;a href="http://www.AmbrosiaSW.com/games/"&gt;Ambrosia Games&lt;/a&gt;).&lt;/p&gt;</description>
      <pubDate>Sat, 24 Nov 2007 08:39:40 Z</pubDate>
      <guid>http://wiki.slembcke.net/main/published/Frankenstein</guid>
      <link>http://wiki.slembcke.net/main/published/Frankenstein</link>
    </item>
    <item>
      <title>Lossy Image Bisection</title>
      <description>&lt;h2&gt;Overview:&lt;/h2&gt;


	&lt;p style="padding-left: 1em;"&gt;For my project, I applied using image bisection in a lossy manner for image and video compression. The basic idea is that each channel in the image is recursively split in half along its longest axis. If two child nodes in the tree differ by less than a certain tolerance, then they are pruned from the tree and their average is stored in the parent node. The result of this process is a binary tree with the image information stored in the leaves. This can be easily serialized to disk and further compressed using a general data compression algorithm such as huffman coding or deflate.&lt;/p&gt;


	&lt;p style="padding-left: 1em;"&gt;My data compression textbook only briefly mentioned image bisection before moving onto quadrisection for losslessly compressing b/w bitmaps. I&amp;#8217;m not exactly certain why that is, as bisection is less complicated to implement, allows you to process non-square images, and uses the same amount of space to store the tree data. Originally I was going to use quadrisection, but the restriction that the image would have to be square made me realize the superiority of bisection.&lt;/p&gt;


	&lt;p style="padding-left: 1em;"&gt;My implementation consisted of a series of commands that I could chain together. I had commands for reading/writing raw &lt;span class="caps"&gt;RGB&lt;/span&gt; data from &lt;span class="caps"&gt;PNG&lt;/span&gt; files, splitting/merging channels, compressing/decompressing a single channel, transforming to YCbCr from &lt;span class="caps"&gt;RGB&lt;/span&gt; and vise versa, and performing frame differencing. By rearranging the commands in the pipeline, I could easily try out new possibilities. This ultimately proved quite handy once I tried video compression, as I only had to add commands for handling frame differencing. Lastly, I would always compress the resulting data with gzip (deflate).&lt;/p&gt;


	&lt;p style="padding-left: 1em;"&gt;For the impatient, my algorithm performed mildly well on image little high frequency noise. When used losslessly, it seemed to perform better than &lt;span class="caps"&gt;PNG&lt;/span&gt; compression. I assume that it had to do with a better entropy coding, but I don&amp;#8217;t have enough data to back up either claim. It&amp;#8217;s also fair to think of it as &lt;span class="caps"&gt;RLE&lt;/span&gt; on steroids. While image bisection is better in most cases than &lt;span class="caps"&gt;RLE&lt;/span&gt; for animation images, it is no match for &lt;span class="caps"&gt;DCT&lt;/span&gt; or wavelet based methods for photo data.&lt;/p&gt;


	&lt;h2&gt;Results:&lt;/h2&gt;


	&lt;ul&gt;
	&lt;li&gt;Get the full paper &lt;a href="http://files.slembcke.net/misc/image-bisection/DataCompressionProject.pdf"&gt;here&lt;/a&gt;.&lt;/li&gt;
		&lt;li&gt;Browse the result images at different tolerances &lt;a href="http://files.slembcke.net/misc/image-bisection/images/"&gt;here&lt;/a&gt;. &lt;em&gt;All of the images were compressed, decompressed, and re-encoded as &lt;span class="caps"&gt;PNG&lt;/span&gt; files. If you want to see the particulars of the compression ratios, see the paper above.&lt;/em&gt;&lt;/li&gt;
		&lt;li&gt;Download the C source code &lt;a href="http://files.slembcke.net/misc/image-bisection/src.tgz"&gt;here&lt;/a&gt;.&lt;/li&gt;
	&lt;/ul&gt;</description>
      <pubDate>Sat, 24 Nov 2007 08:33:28 Z</pubDate>
      <guid>http://wiki.slembcke.net/main/published/Lossy+Image+Bisection</guid>
      <link>http://wiki.slembcke.net/main/published/Lossy+Image+Bisection</link>
    </item>
    <item>
      <title>Ruby Snippets</title>
      <description>&lt;h2&gt;Significant digits.&lt;/h2&gt;


&lt;pre&gt;&lt;code&gt;
def sig_digits(n)
    exp = (n == 0) ? 0 : Math.log10(n.abs).to_i
    mag = exp/3

    mant = n.to_f/10**(mag*3)
    post = ['', 'K', 'M', 'B'][mag]
    sig = 2 - (exp%3)

    sprintf("%.#{sig}f%s", mant, post)
end

[0, 3, 10, 999, 1000, 9990, -1, -1000].each{|n| puts "#{n} -&amp;gt; #{sig_digits(n)}"}

#0 -&amp;gt; 0.00
#3 -&amp;gt; 3.00
#10 -&amp;gt; 10.0
#999 -&amp;gt; 999
#1000 -&amp;gt; 1.00K
#9990 -&amp;gt; 9.99K
#-1 -&amp;gt; -1.00
#-1000 -&amp;gt; -1.00K
&lt;/code&gt;&lt;/pre&gt;

	&lt;h2&gt;Recursive composition using blocks.&lt;/h2&gt;


&lt;pre&gt;&lt;code&gt;
module RecursiveBuilder
    def self.append_features(mod)
        puts "adding to #{mod}" 
        def mod.new(*args)
            args &amp;lt;&amp;lt; yield if block_given?
            return super(*args)
        end

        super
    end
end

class ListNode
    include RecursiveBuilder

    def initialize(obj, child)
        @obj = obj
        @child = child
    end

    def to_s
        "#{@obj} #{@child}" 
    end
end

# pass object in place
# this makes you build it backwards
a = ListNode.new('lincoln', nil)
puts ListNode.new('abraham', a)

# you could do this...
puts ListNode.new('abraham',
    ListNode.new('lincoln', nil)
)

# but using a block lets you do calculations in the same scope
puts ListNode.new('abraham') {
    str = ['l', 'i', 'n', 'c', 'o', 'l', 'n'].join
    ListNode.new(str, nil)
}
&lt;/code&gt;&lt;/pre&gt;

	&lt;h2&gt;Template.&lt;/h2&gt;


&lt;pre&gt;&lt;code&gt;
# code...
&lt;/code&gt;&lt;/pre&gt;</description>
      <pubDate>Mon, 30 Jul 2007 05:39:33 Z</pubDate>
      <guid>http://wiki.slembcke.net/main/published/Ruby+Snippets</guid>
      <link>http://wiki.slembcke.net/main/published/Ruby+Snippets</link>
    </item>
    <item>
      <title>Resume</title>
      <description>&lt;h1&gt;Scott Daniel Lembcke&lt;/h1&gt;


	&lt;p style="padding-left: 1em;"&gt;1822 S. Mill St.&lt;/p&gt;


	&lt;p style="padding-left: 1em;"&gt;Fergus Falls, &lt;span class="caps"&gt;MN 56537&lt;/span&gt;&lt;/p&gt;


	&lt;p style="padding-left: 1em;"&gt;Email: lemb0029(at)morris(dot)umn(dot)edu&lt;/p&gt;


	&lt;h1&gt;Education:&lt;/h1&gt;


	&lt;h2&gt;University of Minnesota Morris&lt;/h2&gt;


	&lt;ul&gt;
	&lt;li&gt;Pursuing B.A. in Computer Science (Mathematics Minor)&lt;/li&gt;
		&lt;li&gt;&lt;span class="caps"&gt;GPA&lt;/span&gt; in Computer Science &lt;strong&gt;3.91&lt;/strong&gt; &lt;/li&gt;
		&lt;li&gt;Overall &lt;span class="caps"&gt;GPA &lt;/span&gt;&lt;strong&gt;3.71&lt;/strong&gt;&lt;/li&gt;
		&lt;li&gt;Graduation expected May 2007&lt;/li&gt;
	&lt;/ul&gt;


	&lt;h2&gt;High School&lt;/h2&gt;


	&lt;ul&gt;
	&lt;li&gt;Graduated Summa Cum Laude from Hillcrest Lutheran Academy&lt;/li&gt;
	&lt;/ul&gt;


	&lt;h1&gt;Awards:&lt;/h1&gt;


	&lt;ul&gt;
	&lt;li&gt;One of 34 students to receive the &lt;a href="http://www.mrs.umn.edu/committees/funcaward/schocoll.txt"&gt;Scholar of the College&lt;/a&gt; status from the &lt;span class="caps"&gt;UMM &lt;/span&gt;Campus Assembly in 2007.&lt;/li&gt;
		&lt;li&gt;Recipient of the &lt;span class="caps"&gt;UMM &lt;/span&gt;Chancellor&amp;#8217;s Scholarship.&lt;/li&gt;
		&lt;li&gt;1st at the &lt;span class="caps"&gt;ACM &lt;/span&gt;International Collegiate Programming Competition in our subregion in 2005, and 3rd in 2004 and 2006.&lt;/li&gt;
		&lt;li&gt;1st at the &lt;a href="http://dkc1.digikey.com/us/en/careers/IT/ComputingCompetitionWinners_2006.html"&gt;Digi-Key Computing Competition&lt;/a&gt; in 2006, 3rd in 2005.&lt;/li&gt;
		&lt;li&gt;1st at the &lt;span class="caps"&gt;MICS&lt;/span&gt; programming contest in 2006 and 2007.&lt;/li&gt;
		&lt;li&gt;Made the Dean&amp;#8217;s List several semesters.&lt;/li&gt;
		&lt;li&gt;Recipient of the Helen and Carl Iverson Memorial Scholarship.&lt;/li&gt;
		&lt;li&gt;3rd at the Odyssey of the Mind World Competition in 1999.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;h1&gt;Work Experience:&lt;/h1&gt;


	&lt;h2&gt;Google Summer of Code (May &amp;#8211; August &amp;#8216;06)&lt;/h2&gt;


	&lt;ul&gt;
	&lt;li&gt;One of the 630 students selected worldwide for &lt;a href="http://code.google.com/soc/2006/"&gt;Google&amp;#8217;s Summer of Code 2006&lt;/a&gt;.&lt;/li&gt;
		&lt;li&gt;Created a Ruby language binding for the &lt;span class="caps"&gt;GIMP&lt;/span&gt;, a popular open source image editor. &lt;em&gt;See &lt;a class="existingWikiWord" href="http://wiki.slembcke.net/main/show/Gimp-Ruby"&gt;Gimp-Ruby&lt;/a&gt; for more information.&lt;/em&gt;&lt;/li&gt;
	&lt;/ul&gt;


	&lt;h2&gt;Photo Retouching (May &amp;#8211; August &amp;#8216;05)&lt;/h2&gt;


	&lt;p style="padding-left: 1em;"&gt;Dawn&amp;#8217;s Photography, Dalton MN&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;Responsible for general maintenance of office computers.&lt;/li&gt;
		&lt;li&gt;Retouched portraits with Adobe Photoshop.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;h2&gt;Service Technician (October &amp;#8216;02 &amp;#8211; August &amp;#8216;03)&lt;/h2&gt;


	&lt;p style="padding-left: 1em;"&gt;Integrity Computer Systems, Fergus Falls, MN&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;Helped set up and create small Mac networks, wired and wireless.&lt;/li&gt;
		&lt;li&gt;Repaired Apple computer systems.&lt;/li&gt;
		&lt;li&gt;Worked with both hardware and software problems.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;h2&gt;Computer Maintenance (June &amp;#8211; August &amp;#8216;00)&lt;/h2&gt;


	&lt;p style="padding-left: 1em;"&gt;Fergus Falls High School, Fergus Falls, MN&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;Ran yearly software and hardware maintenance on school&amp;#8217;s computers.&lt;/li&gt;
		&lt;li&gt;Ran network cabling, tested current network, and set up networking software on the school&amp;#8217;s network.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;h1&gt;Programming Experience:&lt;/h1&gt;


	&lt;ul&gt;
	&lt;li&gt;Experience working on small to medium sized teams.&lt;/li&gt;
		&lt;li&gt;Extensive knowledge: C/C++, Ruby, Java.&lt;/li&gt;
		&lt;li&gt;Experience with: Python, C#, Objective-C, Scheme, &lt;span class="caps"&gt;PHP&lt;/span&gt;, JavaScript, and OCaml.&lt;/li&gt;
		&lt;li&gt;Experience with environments: Unix/Linux, Java, and to a lesser extent Mac &lt;span class="caps"&gt;OS X&lt;/span&gt;.&lt;/li&gt;
		&lt;li&gt;Experience with relational databases and &lt;span class="caps"&gt;SQL&lt;/span&gt;.&lt;/li&gt;
		&lt;li&gt;Experience with web technologies: &lt;span class="caps"&gt;XHTML&lt;/span&gt;, CSS, &lt;span class="caps"&gt;AJAX&lt;/span&gt;, Ruby on Rails.&lt;/li&gt;
		&lt;li&gt;Experience with OpenGL.&lt;/li&gt;
		&lt;li&gt;Experience with &lt;span class="caps"&gt;GUI&lt;/span&gt; libraries: &lt;span class="caps"&gt;GTK&lt;/span&gt;+, Cocoa, Swing.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;h1&gt;Research:&lt;/h1&gt;


	&lt;ul&gt;
	&lt;li&gt;Involved in a research project along with another student, which was advised by Dr. Elena Machkasova. We were researching the optimization of Java programs using generic types. This research produced the paper &lt;a href="http://files.slembcke.net/misc/JavaGenericSpecialization.pdf"&gt;Specialization of Java Generic Types&lt;/a&gt;, which was presented at &lt;a href="http://www.micsymposium.org/"&gt;MICS&lt;/a&gt; 2006, and also the Undergraduate Research Symposium at my university. &lt;em&gt;See &lt;a class="existingWikiWord" href="http://wiki.slembcke.net/main/show/Optimization+of+Java+Generic+Types"&gt;Optimization of Java Generic Types&lt;/a&gt; for more information.&lt;/em&gt;&lt;/li&gt;
	&lt;/ul&gt;


	&lt;h1&gt;Projects:&lt;/h1&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a class="existingWikiWord" href="http://wiki.slembcke.net/main/show/Chipmunk"&gt;Chipmunk&lt;/a&gt;, a rigid body physics library for 2D game development. Chipmunk has attracted attention from award winning independent Mac game developers such as Nathan Lamont and Ivan Milles, both of whom have expressed their interest in using Chipmunk for their upcoming projects.&lt;/li&gt;
		&lt;li&gt;&lt;a class="existingWikiWord" href="http://wiki.slembcke.net/main/show/Gimp-Ruby"&gt;Gimp-Ruby&lt;/a&gt;, a Ruby language binding for the &lt;span class="caps"&gt;GIMP&lt;/span&gt; image editor. Created for the Google Summer of Code program in 2006.&lt;/li&gt;
		&lt;li&gt;&lt;a class="existingWikiWord" href="http://wiki.slembcke.net/main/show/XPTracker"&gt;XPTracker&lt;/a&gt;, an Extreme Programming style project tracker, created as a team for the software design class to use a project tracker. Recently migrated to SourceForge and released under the &lt;span class="caps"&gt;BSD&lt;/span&gt; license.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p style="padding-left: 1em;"&gt;&lt;em&gt;See the wiki &lt;a class="existingWikiWord" href="http://wiki.slembcke.net/main/show/HomePage"&gt;HomePage&lt;/a&gt; for a list of all my projects&lt;/em&gt;&lt;/p&gt;


	&lt;h1&gt;References:&lt;/h1&gt;


	&lt;ul&gt;
	&lt;li&gt;Dr. Elena Machkasova (Professor, Research adviser)&lt;/li&gt;
		&lt;li&gt;Dr. Nicolas McPhee (Professor, academic adviser)&lt;/li&gt;
		&lt;li&gt;Kevin Cozens (Google Summer of Code mentor)&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p style="padding-left: 1em;"&gt;&lt;em&gt;Contact information is available upon request.&lt;/em&gt;&lt;/p&gt;


	&lt;h1&gt;Interests:&lt;/h1&gt;


	&lt;ul&gt;
	&lt;li&gt;Photography and digital photography&lt;/li&gt;
		&lt;li&gt;Simulation and graphics programming&lt;/li&gt;
		&lt;li&gt;Programming languages&lt;/li&gt;
		&lt;li&gt;Mathematics&lt;/li&gt;
	&lt;/ul&gt;</description>
      <pubDate>Mon, 23 Apr 2007 06:59:04 Z</pubDate>
      <guid>http://wiki.slembcke.net/main/published/Resume</guid>
      <link>http://wiki.slembcke.net/main/published/Resume</link>
    </item>
    <item>
      <title>Antimatter</title>
      <description>&lt;p style="float: right; padding-left: 1em;"&gt;&lt;img src="http://files.slembcke.net/antimatter/icon.jpg" alt="" /&gt;&lt;/p&gt;


	&lt;h2&gt;Introduction:&lt;/h2&gt;


	&lt;p style="padding-left: 1em;"&gt;Antimatter was written for the &lt;a href="http://www.idevgames.com"&gt;iDevGames&lt;/a&gt; &lt;a href="http://idevgames.com/index.php/contest/omg_info/omg_cup_2005"&gt;Original Mac Games 2005&lt;/a&gt; contest. Unfortunately, I never had the time to polish it as much as I wanted, and it didn&amp;#8217;t do very well. I still like the game however, and think it&amp;#8217;s worth a try.&lt;/p&gt;


	&lt;h2&gt;Story:&lt;/h2&gt;


	&lt;p style="padding-left: 1em;"&gt;For years the anti-verse, the opposite dimension of ours, has been stealing energy. Now it’s time to get it back. You are the pilot of an inter-dimensional fighter ship capable of punching a hole though dimensions for a short time. Get in, get the anti-matter containment vessels, and get out fast!&lt;/p&gt;


	&lt;h2&gt;Controls:&lt;/h2&gt;


	&lt;ul&gt;
	&lt;li&gt;Arrow keys fly the ship.&lt;/li&gt;
		&lt;li&gt;Space bar dumps all of your momentum into the ball, stopping you and flinging it away.&lt;/li&gt;
		&lt;li&gt;The balls are picked up automatically by proximity.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;h2&gt;Objectives:&lt;/h2&gt;


	&lt;p style="padding-left: 1em;"&gt;In each level, you must get all of the antimatter containers back to the warp rift as quickly as possible.&lt;/p&gt;


	&lt;p style="padding-left: 1em;"&gt;Several obstacles await you, doors, switches, containment fields, and glass.&lt;/p&gt;


	&lt;h2&gt;Requirements:&lt;/h2&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;span class="caps"&gt;OS X 10&lt;/span&gt;.2 or better&lt;/li&gt;
		&lt;li&gt;&lt;span class="caps"&gt;A 16MB &lt;/span&gt;Radeon, GeForce2 or better.&lt;/li&gt;
		&lt;li&gt;Has been tested as low as a 1.25GHz G4/Radeon 8500 running 10.3.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;h2&gt;Play:&lt;/h2&gt;


	&lt;p style="padding-left: 1em;"&gt;&lt;a href="http://files.slembcke.net/antimatter/antimatter.zip"&gt;OS X binary&lt;/a&gt; (PPC)&lt;/p&gt;


	&lt;h2&gt;Acknowledgments:&lt;/h2&gt;


	&lt;ul&gt;
	&lt;li&gt;The ‘Anklepants’ font is from &lt;a href="http://www.1001fonts.com/"&gt;1001 fonts&lt;/a&gt;.&lt;/li&gt;
		&lt;li&gt;The Ruby OpenGL Extension was originally written by &lt;a href="http://www2.giganet.net/~yoshi/"&gt;Yoshiyuki Kusano&lt;/a&gt;, and edited by Keith Bauer.&lt;/li&gt;
		&lt;li&gt;The Ruby OpenAL Extension was written by &lt;a href="http://onesadcookie.com/"&gt;Keith Bauer&lt;/a&gt;.&lt;/li&gt;
		&lt;li&gt;The sound effects and ship sprite are from the &lt;a href="http://www.iDevGames.com/"&gt;iDevGames&lt;/a&gt; asset library.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p style="text-align: center;"&gt;&lt;img src="http://files.slembcke.net/antimatter/omgcup_banner2.gif" alt="" /&gt;&lt;/p&gt;</description>
      <pubDate>Tue, 17 Apr 2007 08:00:19 Z</pubDate>
      <guid>http://wiki.slembcke.net/main/published/Antimatter</guid>
      <link>http://wiki.slembcke.net/main/published/Antimatter</link>
    </item>
    <item>
      <title>Example Code</title>
      <description>&lt;p style="padding-left: 1em;"&gt;Random bits of code that I&amp;#8217;ve mashed together for various purposes.&lt;/p&gt;


	&lt;h2&gt;&lt;a href="http://files.slembcke.net/misc/PNGTexture.tar.gz"&gt;PNGTexture&lt;/a&gt;&lt;/h2&gt;


	&lt;p style="padding-left: 1em;"&gt;Shows the simplest way to load a .png file and load it as an OpenGL texture.&lt;/p&gt;


	&lt;h2&gt;&lt;a href="http://files.slembcke.net/misc/waves.c"&gt;Waves&lt;/a&gt;&lt;/h2&gt;


	&lt;p style="padding-left: 1em;"&gt;A simple and fast 2D wave idea that I came up with. Could easily be extended to generate a 3D mesh. I&amp;#8217;m sure I&amp;#8217;m not the first one to try this.&lt;/p&gt;</description>
      <pubDate>Tue, 17 Apr 2007 07:59:31 Z</pubDate>
      <guid>http://wiki.slembcke.net/main/published/Example+Code</guid>
      <link>http://wiki.slembcke.net/main/published/Example+Code</link>
    </item>
    <item>
      <title>JCool Text Editor</title>
      <description>&lt;h1&gt;JCool Text Editor&lt;/h1&gt;


	&lt;h2&gt;Introduction:&lt;/h2&gt;


	&lt;p style="padding-left: 1em;"&gt;This was the final group project for my software design class that I took as a sophomore. It was written in Java using the Swing &lt;span class="caps"&gt;GUI&lt;/span&gt; toolkit.&lt;/p&gt;


	&lt;p style="padding-left: 1em;"&gt;To be perfectly blunt, the class was a bit of a disaster. It was taught by an interim professor who didn&amp;#8217;t really seem to care, the CSci lab was hit by some major problems part way through the semester which broke several of our testing tools, and we used a wiki-based project tracker that lost a bunch of our tracking data.&lt;/p&gt;


	&lt;p style="padding-left: 1em;"&gt;All was not lost however, we were able to finish the project on time, and even implement a lot of the extra features that we wanted. It had a directory tree in a side panel so that you could easily open and browse files, tabbed editing, and syntax highlighting for several languages. We had thought it would be cool to allow collaborative editing, but we only got as far as allowing documents to be shared over the network and implementing integrated IM functionality.&lt;/p&gt;


	&lt;p style="padding-left: 1em;"&gt;You can see what&amp;#8217;s left of our project&amp;#8217;s tracker &lt;a href="http://csci.morris.umn.edu/UMMCSciWiki/bin/view/CSci3601s05tracking/RedTeam"&gt;here&lt;/a&gt;.&lt;/p&gt;


	&lt;h2&gt;Download:&lt;/h2&gt;


	&lt;p style="padding-left: 1em;"&gt;&lt;em&gt;Not currently available.&lt;/em&gt;&lt;/p&gt;


	&lt;h2&gt;Lessons Learned:&lt;/h2&gt;


	&lt;ul&gt;
	&lt;li&gt;Not a fan of Swing. It&amp;#8217;s slow, buggy, and the &lt;span class="caps"&gt;API&lt;/span&gt; isn&amp;#8217;t terribly consistent. Having used other &lt;span class="caps"&gt;GUI&lt;/span&gt; libraries like Cocoa and &lt;span class="caps"&gt;GTK&lt;/span&gt;+, Swing seems pretty immature. I&amp;#8217;d want to look into &lt;span class="caps"&gt;SWT&lt;/span&gt; before writing another Java &lt;span class="caps"&gt;GUI&lt;/span&gt; app.&lt;/li&gt;
		&lt;li&gt;Testing is important! We really drug our feet at the whole testing idea at first, but when we got farther in the project and didn&amp;#8217;t have the ability to test anymore, it became difficult to integrate peoples changes.&lt;/li&gt;
	&lt;/ul&gt;</description>
      <pubDate>Wed, 11 Apr 2007 04:52:10 Z</pubDate>
      <guid>http://wiki.slembcke.net/main/published/JCool+Text+Editor</guid>
      <link>http://wiki.slembcke.net/main/published/JCool+Text+Editor</link>
    </item>
    <item>
      <title>Gimp-Ruby</title>
      <description>&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; &lt;em&gt;Gimp-Ruby is written against &lt;span class="caps"&gt;GIMP 2&lt;/span&gt;.3 which is the developmental version and not the current stable version. I&amp;#8217;m looking into what would be necessary to backport Gimp-Ruby to 2.2.&lt;/em&gt;&lt;/p&gt;


	&lt;h1&gt;Gimp-Ruby:&lt;/h1&gt;


	&lt;p style="padding-left: 1em;"&gt;Gimp-Ruby allows you write new &lt;span class="caps"&gt;GIMP&lt;/span&gt; plugins in the Ruby programming language. Gimp-Ruby also contains a module, Ruby-Fu, which allows you to define new procedures similarly to Script-Fu.&lt;/p&gt;


	&lt;h2&gt;Download:&lt;/h2&gt;


	&lt;p style="padding-left: 1em;"&gt;Get the source tarball here: &lt;a href="http://files.slembcke.net/gimp-ruby/gimp-ruby.tgz"&gt;gimp-ruby.tgz&lt;/a&gt;&lt;/p&gt;


	&lt;p style="padding-left: 1em;"&gt;Gimp-Ruby can also be checked out of the &lt;span class="caps"&gt;GNOME SVN&lt;/span&gt; repository using the following command: &lt;code&gt;svn co http://svn.gnome.org/svn/gimp-ruby/trunk gimp-ruby&lt;/code&gt;&lt;/p&gt;


	&lt;h2&gt;Documentation:&lt;/h2&gt;


	&lt;p style="padding-left: 1em;"&gt;For more information, read the &lt;a href="http://files.slembcke.net/gimp-ruby/gimp-ruby-guide.html"&gt;Gimp-Ruby guide&lt;/a&gt;, and the &lt;a href="http://files.slembcke.net/gimp-ruby/gimp-ruby-tutorial.html"&gt;Gimp-Ruby tutorial&lt;/a&gt;.&lt;/p&gt;


	&lt;h2&gt;Special Thanks:&lt;/h2&gt;


	&lt;p style="padding-left: 1em;"&gt;Gimp-Ruby was created as a project for the &lt;a href="http://code.google.com/soc/2006/"&gt;Google Summer of Code 2006&lt;/a&gt; program. My project mentor was Kevin Cozens, who was almost entirely responsible for setting up the build scripts for me.&lt;/p&gt;


	&lt;p style="padding-left: 1em;"&gt;The gimp irc channel was also a big help to completing the project.&lt;/p&gt;


	&lt;p style="text-align: right;"&gt;&lt;a href="http://code.google.com/soc/2006/"&gt;&lt;img src="http://code.google.com/images/bnr_soc_125x58.gif" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;


	&lt;p style="text-align: center;"&gt;&lt;em&gt;More information to come&lt;/em&gt;&lt;/p&gt;</description>
      <pubDate>Tue, 03 Apr 2007 20:06:27 Z</pubDate>
      <guid>http://wiki.slembcke.net/main/published/Gimp-Ruby</guid>
      <link>http://wiki.slembcke.net/main/published/Gimp-Ruby</link>
    </item>
    <item>
      <title>Smile Delivery</title>
      <description>&lt;h1&gt;Smile Delivery&lt;/h1&gt;


	&lt;p style="float: right; padding-left: 1em;"&gt;&lt;img src="http://files.slembcke.net/smile_delivery/screenshot.png" alt="" /&gt;&lt;/p&gt;


	&lt;h2&gt;Introduction:&lt;/h2&gt;


	&lt;p style="padding-left: 1em;"&gt;Smile Delivery was written for an informal 24-hour game contest with a &amp;#8220;one button&amp;#8221; theme. The game was written over a period of 6 hours. I coded the game up while a friend of mine, Luke Anderson, drew out levels.&lt;/p&gt;


	&lt;h2&gt;Story:&lt;/h2&gt;


	&lt;p style="padding-left: 1em;"&gt;A story? Um, well, you&amp;#8217;re a smiley face that&amp;#8217;s trying to spread cheer to all the grumpy faces. That&amp;#8217;s good enough to be a story right? :p&lt;/p&gt;


	&lt;h2&gt;Controls:&lt;/h2&gt;


	&lt;p style="padding-left: 1em;"&gt;As this was a one button contest, you only need to have your finger on the mouse button. You still have a considerable amount of control over your character though.&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;strong&gt;Click and hold:&lt;/strong&gt; Move your character in the direction the arrow is pointing.&lt;/li&gt;
		&lt;li&gt;&lt;strong&gt;Tap:&lt;/strong&gt; Switch the direction of your character&amp;#8217;s arrow.&lt;/li&gt;
		&lt;li&gt;&lt;strong&gt;Double click:&lt;/strong&gt; Jump.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p style="padding-left: 1em;"&gt;You can also string these together in order to perform fancier jumps.&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;strong&gt;Tap then hold:&lt;/strong&gt; Jump and move in the opposite direction.&lt;/li&gt;
		&lt;li&gt;&lt;strong&gt;Tap, tap, then hold:&lt;/strong&gt; Jump and continue in the same direction.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;h2&gt;Play!&lt;/h2&gt;


	&lt;p&gt;&lt;a href="http://files.slembcke.net/smile_delivery/smile_delivery.zip"&gt;OS X binary&lt;/a&gt; (PPC)&lt;/p&gt;</description>
      <pubDate>Tue, 03 Apr 2007 19:03:57 Z</pubDate>
      <guid>http://wiki.slembcke.net/main/published/Smile+Delivery</guid>
      <link>http://wiki.slembcke.net/main/published/Smile+Delivery</link>
    </item>
    <item>
      <title>The X-Fish</title>
      <description>&lt;p style="float: right; padding-left: 1em;"&gt;&lt;img src="http://files.slembcke.net/xfish/screenshot.jpg" alt="" /&gt;&lt;/p&gt;


	&lt;h2&gt;Info:&lt;/h2&gt;


	&lt;p style="padding-left: 1em;"&gt;Created for one of the shorter &lt;a href="http://www.idevgames.com"&gt;iDevGames&lt;/a&gt; game contests during the summer of 2005. &lt;em&gt;The X-Fish&lt;/em&gt; is really the first game that I&amp;#8217;ve ever made public. It placed 5&lt;sup&gt;th&lt;/sup&gt; out of 8 in the contest, but almost undoubtedly would have taken 1&lt;sup&gt;st&lt;/sup&gt; by the numbers if it had run on the 4&lt;sup&gt;th&lt;/sup&gt; judge&amp;#8217;s machine. The game required a Radeon or better, but the judge only had a Rage 128. C&amp;#8217;est la vive. Not that I&amp;#8217;m complaining or anything. :p&lt;/p&gt;


	&lt;h2&gt;Story:&lt;/h2&gt;


	&lt;p style="padding-left: 1em;"&gt;Swimmy the fish is lost in the bad part of the ocean. If only he&amp;#8217;d listened to his mother. Now he&amp;#8217;ll have to fight his way to the top of the food chain.&lt;/p&gt;


	&lt;h2&gt;Controls:&lt;/h2&gt;


	&lt;p&gt;Use the mouse or arrows keys to maneuver Swimmy.&lt;/p&gt;


	&lt;h2&gt;Objectives:&lt;/h2&gt;


	&lt;p&gt;Eat fish smaller than you in order to grow. Avoid bigger fish as they will be doing the same! You win once you make it to the top of the food chain.&lt;/p&gt;


	&lt;h2&gt;Play!&lt;/h2&gt;


	&lt;p style="padding-left: 1em;"&gt;&lt;a href="http://files.slembcke.net/xfish/xfish.zip"&gt;OS X binary&lt;/a&gt; (PPC)&lt;/p&gt;


	&lt;h2&gt;Source:&lt;/h2&gt;


	&lt;p style="padding-left: 1em;"&gt;&lt;em&gt;Not available at this time&lt;/em&gt;&lt;/p&gt;</description>
      <pubDate>Tue, 03 Apr 2007 19:03:00 Z</pubDate>
      <guid>http://wiki.slembcke.net/main/published/The+X-Fish</guid>
      <link>http://wiki.slembcke.net/main/published/The+X-Fish</link>
    </item>
    <item>
      <title>Aerosol</title>
      <description>&lt;p&gt;Aerosol is a 2D game programming environment based around the Ruby programming language. Unfortunately, Aerosol is far from completion at the moment.&lt;/p&gt;


It has support for:
	&lt;ul&gt;
	&lt;li&gt;&lt;span class="caps"&gt;PNG&lt;/span&gt; and &lt;span class="caps"&gt;JPEG &lt;/span&gt;Texture loading.&lt;/li&gt;
		&lt;li&gt;Rigid Body physics supplied by my &lt;a class="existingWikiWord" href="http://wiki.slembcke.net/main/show/Chipmunk"&gt;Chipmunk&lt;/a&gt; physics library.&lt;/li&gt;
		&lt;li&gt;Simple, fast, and Ruby-esque event handling with support for joysticks.&lt;/li&gt;
		&lt;li&gt;Access to OpenGL and OpenAL.&lt;/li&gt;
		&lt;li&gt;Support for .wav files and streaming Ogg Vorbis music.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;Write your gameplay code in nice, easy to read, easy to develop Ruby code, while the real grunt work (physics, graphics, sound) is offloaded to C extensions.&lt;/p&gt;


	&lt;p&gt;Check out the &lt;a href="http://code.google.com/p/aerosol/"&gt;Google Code page&lt;/a&gt;.&lt;/p&gt;</description>
      <pubDate>Tue, 03 Apr 2007 04:23:41 Z</pubDate>
      <guid>http://wiki.slembcke.net/main/published/Aerosol</guid>
      <link>http://wiki.slembcke.net/main/published/Aerosol</link>
    </item>
    <item>
      <title>XPTracker</title>
      <description>&lt;div style="float: right; background-color: LightGrey; padding: 1em; margin: 1em;"&gt;

	&lt;p&gt;&lt;a href="http://files.slembcke.net/misc/xptracker.png"&gt;&lt;img src="http://files.slembcke.net/misc/xptracker_small.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;


	&lt;p style="text-align: center;"&gt;Click for full image&lt;/p&gt;


&lt;/div&gt;

	&lt;h2&gt;Overview:&lt;/h2&gt;


	&lt;p style="padding-left: 1em;"&gt;XPTracker is a project tracker based on the &lt;a href="http://en.wikipedia.org/wiki/Extreme_programming"&gt;Extreme Programming&lt;/a&gt; software development methodologies. It was started as the final group project for my software engineering course, but has been revived for my current client-server programming course. It is also being used by the software design class to track their labs.&lt;/p&gt;


	&lt;h2&gt;Get the Source:&lt;/h2&gt;


	&lt;p style="padding-left: 1em;"&gt;&lt;a href="http://sourceforge.net/projects/xptracker"&gt;Sourceforge page&lt;/a&gt;&lt;/p&gt;


	&lt;p style="padding-left: 1em;"&gt;We recently migrated the project from a private &lt;span class="caps"&gt;SVN&lt;/span&gt; server to Sourceforge. The page is still a bit devoid of information, but you can go there and at least check out the code.&lt;/p&gt;


	&lt;p style="text-align: center;"&gt;&lt;em&gt;More to come.&lt;/em&gt;&lt;/p&gt;</description>
      <pubDate>Tue, 03 Apr 2007 04:07:26 Z</pubDate>
      <guid>http://wiki.slembcke.net/main/published/XPTracker</guid>
      <link>http://wiki.slembcke.net/main/published/XPTracker</link>
    </item>
  </channel>
</rss>
