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

<channel>
	<title>Cuppadev &#187; Projects</title>
	<atom:link href="http://www.cuppadev.co.uk/category/projects/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.cuppadev.co.uk</link>
	<description>Cuppalicious coding!</description>
	<lastBuildDate>Sat, 14 Aug 2010 10:12:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Palettes in ScummC</title>
		<link>http://www.cuppadev.co.uk/projects/palettes-in-scummc/</link>
		<comments>http://www.cuppadev.co.uk/projects/palettes-in-scummc/#comments</comments>
		<pubDate>Sat, 14 Aug 2010 10:10:59 +0000</pubDate>
		<dc:creator>James Urquhart</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[SCUMM]]></category>
		<category><![CDATA[scummc]]></category>
		<category><![CDATA[software development]]></category>

		<guid isPermaLink="false">http://www.cuppadev.co.uk/?p=752</guid>
		<description><![CDATA[One thing which i have been meaning to incorporate into ScummC for quite a while now is better palette manipulation tools. It seems that sometime after the turn of the century, the art of making an image editor with good palette manipulation seems to have been lost. This is very unfortunate, as it makes it [...]]]></description>
			<content:encoded><![CDATA[<p>One thing which i have been meaning to incorporate into <a href="http://github.com/jamesu/scummc">ScummC</a> for quite a while now is better palette manipulation tools.</p>
<p><img src="http://www.cuppadev.co.uk/wp-content/uploads/2010/08/oquest-300x225.png" alt="" title="OpenQuest" width="300" height="225" class="aligncenter size-medium wp-image-753" /></p>
<p>It seems that sometime after the turn of the century, the art of making an image editor with good palette manipulation seems to have been lost. This is very unfortunate, as it makes it VERY hard to make graphics for scummc.</p>
<p>So i improved scummc in two ways&#8230;</p>
<h2>The palcat tool is now more useful</h2>
<p>Have tons of non-indexed graphics? Well now you can tell palcat to combine and quantise all the colours in your images, so you have a single common palette.</p>
<p><code>palcat -o out -col 32 costume1_*.bmp costume2_*.bmp</code></p>
<p>Quite commonly in scumm games, you&#8217;ll notice the room palettes will follow the same general schema:</p>
<table>
<tr>
<th>OFFS</th>
<th>SIZE</th>
<th>DESC</th>
</tr>
<tr>
<td>0</td>
<td>16</td>
<td>System Colors</td>
</tr>
<tr>
<td>16</td>
<td>X</td>
<td>Room Colors</td>
</tr>
<tr>
<td>16+X</td>
<td>Y</td>
<td>Costume Colors</td>
</tr>
</table>
<p>To reproduce with palcat, simply do:</p>
<pre>palcat -o out sys.bmp room.bmp costumes.bmp</pre>
<p>(where costumes.bmp contains your combined costume palette(s))</p>
<h2>The costume compiler helps you</h2>
<p>In scumm, costumes have a palette which indexes into the current room palette. Before you had to specify this manually, like so:</p>
<pre>palette([0-32]);</pre>
<p>Now you can pass in your combined room palette instead, like so:</p>
<pre>palette("out_blank_room.bmp");</pre>
<p>Which will match up colors in out_blank_room.bmp with your costume bitmap.</p>
<p>If you have costumes which will be re-used across rooms, i suggest you make a blank room bitmap so it won&#8217;t accidentally match colors in your room when you don&#8217;t want it to.</p>
<pre>palcat -o out sys.bmp blank_room.bmp actors.bmp</pre>
<p>I&#8217;ve incorporated the costume palette trick in the examples on my scummc fork. Feel free to <a href="http://github.com/jamesu/scummc">check it out on github</a>!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cuppadev.co.uk/projects/palettes-in-scummc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Example Teambox API App: A Stat generator!</title>
		<link>http://www.cuppadev.co.uk/projects/example-teambox-api-app-a-stat-generator/</link>
		<comments>http://www.cuppadev.co.uk/projects/example-teambox-api-app-a-stat-generator/#comments</comments>
		<pubDate>Mon, 02 Aug 2010 16:17:01 +0000</pubDate>
		<dc:creator>James Urquhart</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[ruby on rails]]></category>
		<category><![CDATA[teambox]]></category>
		<category><![CDATA[web development]]></category>

		<guid isPermaLink="false">http://www.cuppadev.co.uk/?p=741</guid>
		<description><![CDATA[Now that Teambox has a real API, i thought i&#8217;d make something simple to demonstrate its use. What i came up with was this.. A statistics generator! For those who have used IRC in the past, you may recall the multitude of scripts available that analyse your logs and generate interesting, albeit pointless statistics about [...]]]></description>
			<content:encoded><![CDATA[<p>Now that Teambox has a real API, i thought i&#8217;d make something simple to demonstrate its use. What i came up with was this..</p>
<p><a href="http://www.cuppadev.co.uk/wp-content/uploads/2010/08/Screen-shot-2010-08-02-at-16.51.57.png"><img src="http://www.cuppadev.co.uk/wp-content/uploads/2010/08/Screen-shot-2010-08-02-at-16.51.57-300x227.png" alt="" title="Teambox Statistics Generator" width="300" height="227" class="alignnone size-medium wp-image-745" /></a></p>
<p>A statistics generator!</p>
<p>For those who have used IRC in the past, you may recall the multitude of scripts available that analyse your logs and generate interesting,<br />
albeit pointless statistics about them. </p>
<p>Borrowing from the general format of these generators, i wrote a simple ruby script which analyses recent activities in a teambox project. It will tell you such things as:</p>
<ul>
<li>Hours with the most activities in the project</li>
<li>The most active user</li>
<li>Who wrote the Longest and shortest lines, as well as the most words</li>
<li>The most popular words in the project</li>
<li>Most referenced users</li>
<li>Most referenced URL&#8217;s</li>
<li>Most popular conversation</li>
<li>Person who created the most tasks / conversations</li>
</ul>
<p>Really, everything you never wanted to know about your project!</p>
<p>It will also resolve conversation and task names, if you were ever wondering how to properly do that.</p>
<p>To use it run the script, supplying your username, password, and the project you want to examine. e.g.:</p>
<pre>
<code>
ruby teamboxstats.rb -u fred -p password teambox
</code>
</pre>
<p>Will login and dump the teambox project if you have access to it.</p>
<p>As always, feel free to <a href="http://github.com/jamesu/teamboxstats/">check out the code on github</a>!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cuppadev.co.uk/projects/example-teambox-api-app-a-stat-generator/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Twackr: Twitter-style time tracking</title>
		<link>http://www.cuppadev.co.uk/projects/twackr-twitter-style-time-tracking/</link>
		<comments>http://www.cuppadev.co.uk/projects/twackr-twitter-style-time-tracking/#comments</comments>
		<pubDate>Sun, 21 Feb 2010 15:02:09 +0000</pubDate>
		<dc:creator>James Urquhart</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[ruby on rails]]></category>
		<category><![CDATA[web development]]></category>

		<guid isPermaLink="false">http://www.cuppadev.co.uk/?p=718</guid>
		<description><![CDATA[It&#8217;s been a while since my last rails post, so i decided to try out something different. Specifically, i&#8217;ve always wanted to track my time, but i never seem to find a solution that works. The solution is either too simple and doesn&#8217;t give me any feedback, or it&#8217;s extremely complicated and hard to use. [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been a while since my last rails post, so i decided to try out something different. </p>
<p>Specifically, i&#8217;ve always wanted to track my time, but i never seem to find a solution that works. The solution is either too simple and doesn&#8217;t give me any feedback, or it&#8217;s extremely complicated and hard to use.</p>
<p>So i set about to make a time tracking solution that was both ridiculously simple to use, and could give me some useful reports back. Thus, <a href="http://github.com/jamesu/twackr">Twackr</a> was born!</p>
<p><img src="http://www.cuppadev.co.uk/wp-content/uploads/2010/02/twackr-2-300x158.png" alt="" title="Twackr" width="300" height="158" class="alignnone size-thumbnail wp-image-720" /></p>
<p>I modelled the entry system after Twitter: at its simplest, all you need to do is type in what you are doing, and Twackr will start tracking your time instantly. When you are done, simply click on &#8220;Finish&#8221; and it will be done!</p>
<p>Already spent some time doing something but couldn&#8217;t get to Twackr? Then you can backdate entries by adding &#8220;<strong>-1H</strong>&#8220;. Still working on something? Then try &#8220;<strong>-1H+</strong>&#8220;. Blocking out some time? Then use &#8220;<strong>+1H</strong>&#8220;. Want to see if you&#8217;ll make the deadline? try typing &#8220;<strong>1H</strong>&#8220;.</p>
<p>Time can also be categorised into &#8220;Services&#8221; (<strong>#service</strong>) and &#8220;Projects&#8221; (<strong>@project</strong>). </p>
<p>You can check out a <a href="http://twackr.heroku.com/">live demo of twackr on heroku</a>. Just sign up, and check it out &#8211; it couldn&#8217;t be any simpler!</p>
<p>Like most of my other rails projects, Twackr is Open Source. So feel free to <a href="http://github.com/jamesu/twackr">fork it on github</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cuppadev.co.uk/projects/twackr-twitter-style-time-tracking/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS Transform Exporter for Blender</title>
		<link>http://www.cuppadev.co.uk/projects/css-transform-exporter-for-blender/</link>
		<comments>http://www.cuppadev.co.uk/projects/css-transform-exporter-for-blender/#comments</comments>
		<pubDate>Wed, 16 Dec 2009 18:39:38 +0000</pubDate>
		<dc:creator>James Urquhart</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[web development]]></category>
		<category><![CDATA[webkit]]></category>

		<guid isPermaLink="false">http://www.cuppadev.co.uk/?p=684</guid>
		<description><![CDATA[Following on from Creating CSS Animations, i have decided to release the exporter script used to create the animated orange test guy. As the title implies, the exporter script runs in Blender. Simply construct a 2D scene using planes, add in an animation track, run the script and click Export. It&#8217;s as simple as that! [...]]]></description>
			<content:encoded><![CDATA[<p>Following on from <a href="http://www.cuppadev.co.uk/projects/creating-css-animations/">Creating CSS Animations</a>, i have decided to release the exporter script used to create the animated orange test guy.</p>
<p>As the title implies, the exporter script runs in Blender. Simply construct a 2D scene using planes, add in an animation track, run the script and click Export. It&#8217;s as simple as that!</p>
<p>Each plane is exported as a HTML DIV. If present, any Ipos will be exported as CSS keyframes.  </p>
<p>The exporter even supports parenting, so you can build up complex hierarchies of elements which can easily be transformed in an animation, or even javascript.</p>
<p>Note that currently the exporter only supports Webkit-based browsers (i.e. Chrome, Safari, MobileSafari). It also has limited support for Firefox (sans animations).</p>
<p>For the curious, there are 3 examples:</p>
<ul>
<li><a href="http://www.cuppadev.co.uk/wp-content/uploads/2009/12/walk.html">Walking Orange Guy</a></li>
<li><a href="http://www.cuppadev.co.uk/wp-content/uploads/2009/12/transformTest.html">Transform Test (not animated)</a></li>
<li><a href="http://www.cuppadev.co.uk/wp-content/uploads/2009/12/testImage.html">Animated Image</a></li>
</ul>
<p>As for the actual exporter script, it&#8217;s <a href="http://github.com/jamesu/csstransformexport">available on github</a>.</p>
<p>Happy animating!</p>
<p><strong>EDIT</strong>: For those of you who for whatever reason want a video demonstration, there&#8217;s a video of it in action <a href="http://www.youtube.com/watch?v=rie9glkrFKo">on youtube</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cuppadev.co.uk/projects/css-transform-exporter-for-blender/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Creating CoreAnimation Animations</title>
		<link>http://www.cuppadev.co.uk/projects/creating-coreanimation-animations/</link>
		<comments>http://www.cuppadev.co.uk/projects/creating-coreanimation-animations/#comments</comments>
		<pubDate>Wed, 25 Nov 2009 16:58:22 +0000</pubDate>
		<dc:creator>James Urquhart</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[problem solving]]></category>
		<category><![CDATA[software development]]></category>

		<guid isPermaLink="false">http://www.cuppadev.co.uk/?p=659</guid>
		<description><![CDATA[Moving on from Creating CSS Animations, i thought &#8220;How can i make this exporter more useful?&#8221;. The answer is of course to completely remove Webkit from the equation, which leaves us with CoreAnimation. The end result being that the animation can be directly compiled into an iPhone or Mac OS X application. Not going into [...]]]></description>
			<content:encoded><![CDATA[<p>Moving on from <a href="http://www.cuppadev.co.uk/projects/creating-css-animations/">Creating CSS Animations</a>, i thought <em>&#8220;How can i make this exporter more useful?&#8221;</em>.</p>
<p>The answer is of course to completely remove Webkit from the equation, which leaves us with CoreAnimation. The end result being that the animation can be directly compiled into an iPhone or Mac OS X application.</p>
<p>Not going <a href="http://www.opensource.apple.com/source/WebCore/WebCore-514/platform/graphics/mac/GraphicsLayerCA.mm">into much detail</a>, <a href="http://developer.apple.com/mac/library/documentation/cocoa/Conceptual/CoreAnimation_guide/Articles/WhatisCoreAnimation.html">CoreAnimation</a> is essentially the library used by Webkit to display and animate any elements which have been transformed by a CSS Transform.</p>
<p>The actual scene is simply constructed using transformed <strong>CALayers</strong>. As for the animation, a <strong>CAKeyframeAnimation</strong> is created and attached to each <strong>CALayer</strong>. In the case of multiple properties being animated at the same time, a <strong>CAAnimationGroup</strong> is used to group these animations together.</p>
<p>The end result is a handy animation class which creates both the scene and the related animation tracks. i.e.:</p>
<pre><code>
    CALayer *root = [self.view layer];

    // Make anim
    MyAnim *anim = [[MyAnim alloc] init];
    CALayer *animRoot = anim.root;
    [root addSublayer:animRoot];

    [anim play]; // easy!
</code></pre>
<p>As an example, the MyAnim class for the previously featured walking orange figure is as follows.</p>
<p><script src="http://gist.github.com/242862.js?file=Walking+CoreAnimation+Guy.m"></script></p>
<p>Which leads onto a repeat of the question, is there a real-world demand for such a tool yet?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cuppadev.co.uk/projects/creating-coreanimation-animations/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Creating CSS Animations</title>
		<link>http://www.cuppadev.co.uk/projects/creating-css-animations/</link>
		<comments>http://www.cuppadev.co.uk/projects/creating-css-animations/#comments</comments>
		<pubDate>Sun, 22 Nov 2009 22:50:18 +0000</pubDate>
		<dc:creator>James Urquhart</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[web development]]></category>
		<category><![CDATA[webkit]]></category>

		<guid isPermaLink="false">http://www.cuppadev.co.uk/?p=645</guid>
		<description><![CDATA[CSS Transforms combined with animations are undoubtedly useful. Unfortunately though, the only way to create them is to manually input values and pretty much guess the result. This methodology pretty much kills any creative aspirations anyone might have in making these animations. So while there are quite a few cool looking examples out there they [...]]]></description>
			<content:encoded><![CDATA[<p>CSS <a href="http://webkit.org/blog/130/css-transforms/">Transforms</a> combined with <a href="http://webkit.org/blog/138/css-animation/">animations</a> are undoubtedly useful. Unfortunately though, the only way to create them is to manually input values and pretty much guess the result.</p>
<p>This methodology pretty much kills any creative aspirations anyone might have in making these animations. So while there are quite a few <a href="http://girliemac.com/blog/2009/09/03/webkit-css-3d-local-db-demo/">cool</a> <a href="http://www.satine.org/research/webkit/snowleopard/snowstack.html">looking</a> examples out there they lack the glamour of say, <a href="http://www.weebls-stuff.com/">flash animations</a>.</p>
<p>It seems to me there is a need for a tool which allows anyone to create these css animations in a visual way. As far as i know, no such tool currently exists. So naturally, i set about making something myself.</p>
<p>Rather than make an entire tool from scratch though, i decided to simply write an exporter script for another tool &#8211; in this case, <a href="http://www.blender.org">Blender</a>.</p>
<p>Why Blender? Well, it exposes pretty much all of the information i require to construct both a scene and animation tracks. Also, since Blender handles 3D scenes, there is a potential to work with <a href="http://webkit.org/blog/386/3d-transforms/">3D CSS Transforms</a> in the future.</p>
<p>As an example, here&#8217;s a simple animation of an orange stick man walking across the screen. The stick man was both constructed and animated entirely within Blender, and exported using my export script.</p>
<p><a href="http://stuff.cuppadev.co.uk/walk.html"><img src="http://www.cuppadev.co.uk/wp-content/uploads/2009/11/example-walk-268x200.png" alt="example-walk" title="example-walk" width="268" height="200" class="alignnone size-thumbnail wp-image-649" /></a></p>
<p>And the scene as seen in blender:</p>
<p><a href="http://www.cuppadev.co.uk/wp-content/uploads/2009/11/Screen-shot-2009-11-22-at-22.19.24.png""><img src="http://www.cuppadev.co.uk/wp-content/uploads/2009/11/Screen-shot-2009-11-22-at-22.19.24-300x192.png" alt="Example animation in Blender" title="Example animation in Blender" width="300" height="192" class="alignnone size-thumbnail wp-image-648" /></a></p>
<p>Which is simply a set of planes linked together and animated. Really, it couldn&#8217;t be any simpler.</p>
<p>Currently the only browsers which seem to support both CSS transforms and animations are based off <a href="http://www.webkit.org">Webkit</a>. i.e. Safari and Chrome (including the iPhone and Android browsers).</p>
<p>Which leads onto the question, is there a real-world demand for such a tool yet?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cuppadev.co.uk/projects/creating-css-animations/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>A Browser within a Browser: HtmlCanvas</title>
		<link>http://www.cuppadev.co.uk/projects/a-browser-within-a-browser-htmlcanvas/</link>
		<comments>http://www.cuppadev.co.uk/projects/a-browser-within-a-browser-htmlcanvas/#comments</comments>
		<pubDate>Thu, 08 Oct 2009 19:14:45 +0000</pubDate>
		<dc:creator>James Urquhart</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[htmlcanvas]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[web development]]></category>

		<guid isPermaLink="false">http://www.cuppadev.co.uk/?p=565</guid>
		<description><![CDATA[It&#8217;s been a while since my last truly silly project, so i thought i&#8217;d come up with something else. There has been a lot of talk recently about how the web is essentially replacing desktop applications, which to me sounds great. But there is something missing from this new age of web applications. In order [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been a while since my last <a href="http://www.cuppadev.co.uk/2007/11/22/flash-plays-scumm-take-two/">truly silly</a> project, so i thought i&#8217;d come up with something else.</p>
<p>There has been <a href="http://carsonified.com/blog/web-apps/introducing-atlas-a-visual-development-tool-for-creating-web-apps/">a lot of talk</a> recently about how the web is essentially replacing desktop applications, which to me sounds great.</p>
<p>But there is something missing from this new age of web applications. In order to run web apps you need a web browser, which is still a desktop app. It seems to me odd that a platform which replaces another still requires that platform to operate.</p>
<p>Which is where <a href="http://github.com/jamesu/htmlcanvas">htmlcanvas</a> comes in. It&#8217;s a HTML renderer implemented in JavaScript, which runs nicely in any capable web browser which supports the <a href="http://en.wikipedia.org/wiki/Canvas_(HTML_element)">Canvas</a> element.</p>
<p><a href="http://jamesu.github.com/htmlcanvas"><img src="http://www.cuppadev.co.uk/wp-content/uploads/2009/10/Screen-shot-2009-10-08-at-19.46.56.png" alt="htmlcanvas in action" title="htmlcanvas in action" width="302" height="170" class="alignnone size-full wp-image-566" /></a></p>
<p>In essence, it&#8217;s a web browser implemented within a web browser. The above example was rendered from this HTML:</p>
<pre>
<code>
&lt;html&gt;
&lt;head&gt;
  &lt;title&gt;&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;!-- Begin test --&gt;
  &lt;p class=&quot;woo&quot; id=&quot;render&quot;&gt;
Rendering &lt;b&gt;HTML&lt;/b&gt;...&lt;/p&gt;
  &lt;p&gt;&lt;span&gt;In &lt;b&gt;Canvas&lt;/b&gt;&lt;/span&gt;!&lt;/p&gt;
  &lt;p&gt;0_0&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;
</code>
</pre>
<p>This sort of recursive abstraction is not uncommon in the computing world. For example, C compilers are <a href="http://gcc.gnu.org/">written in C</a>, Pascal compilers are <a href="http://www.freepascal.org/">written in Pascal</a>. There&#8217;s even a version of <a href="http://codespeak.net/pypy/dist/pypy/doc/">Python implemented within Python</a>. So a web platform implemented within a web platform is quite natural.</p>
<p>Still, it will be a long while before htmlcanvas is remotely capable of running within itself, so a truly recursive web browsing experience is still a long way off.</p>
<p>As with most of my silly projects, the code to htmlcanvas is hosted on github. Fork it <a href="http://github.com/jamesu/htmlcanvas">here</a>!</p>
<p><strong>Note</strong>: Currently only known to work in Safari 4, FireFox 3.5, or Google Chrome.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cuppadev.co.uk/projects/a-browser-within-a-browser-htmlcanvas/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>RailsCollab isn&#8217;t Dead</title>
		<link>http://www.cuppadev.co.uk/projects/railscollab-isnt-dead/</link>
		<comments>http://www.cuppadev.co.uk/projects/railscollab-isnt-dead/#comments</comments>
		<pubDate>Sat, 18 Jul 2009 16:35:11 +0000</pubDate>
		<dc:creator>James Urquhart</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[railscollab]]></category>
		<category><![CDATA[ruby on rails]]></category>
		<category><![CDATA[web development]]></category>

		<guid isPermaLink="false">http://www.cuppadev.co.uk/?p=422</guid>
		<description><![CDATA[For those of you interested in web-based project management tools, you might have noticed i&#8217;ve not really been maintaining RailsCollab for quite a few months now. Why? well because i really wanted to concentrate on other things, such as making cool iPhone apps and the usual contracts. (Plus to be honest i wasn&#8217;t really using [...]]]></description>
			<content:encoded><![CDATA[<p>For those of you interested in web-based project management tools, you might have noticed i&#8217;ve not really been maintaining <a href="http://github.com/jamesu/railscollab/tree/master">RailsCollab</a> for quite a few months now. Why? well because i really wanted to concentrate on other things, such as making <a href="http://www.jamesu.net/apps">cool iPhone apps</a> and the usual contracts. </p>
<p>(Plus to be honest i wasn&#8217;t really using it myself)</p>
<p>Still, since its open source other people were free to use and modify it for their own needs. I was pleased to see that there has been a healthy level of forking according to <a href="http://github.com/jamesu/railscollab/network">github&#8217;s network graph</a>.</p>
<p><a href="http://www.cuppadev.co.uk/wp-content/uploads/2009/07/fork_graph_rc.png"><img src="http://www.cuppadev.co.uk/wp-content/uploads/2009/07/fork_graph_rc-300x105.png" alt="fork_graph_rc" title="fork_graph_rc" width="300" height="105" class="alignnone size-thumbnail wp-image-423" /></a></p>
<p>Feature-wise, one fork made by <a href="http://github.com/scambra/railscollab/">scambra</a> has even implemented a fully fledged wiki.</p>
<p><img src="http://www.cuppadev.co.uk/wp-content/uploads/2009/07/wiki_tab.png" alt="wiki_tab" title="wiki_tab" width="222" height="32" class="alignnone size-full wp-image-424" /></p>
<p>I&#8217;ve also seen partial localisation&#8217;s implemented for German and Simplified Chinese. So safe to say, i&#8217;m very impressed that despite my lack of updates, RailsCollab is still going strong &#8211; all thanks to its growing community!</p>
<h3>Now for my input&#8230;</h3>
<p>Projects like RailsCollab are hardly one-way streets. One has to give back as well as receive contributions.</p>
<p>So i&#8217;m pleased to announce that as well as merging the wiki and language updates into the main RailsCollab tree, i&#8217;ve also merged in my own updates which convert the Message, Comment, and File controllers into RESTful resource controllers. </p>
<p>Simply put, this means that you can now manipulate messages, comments, and files as XML. e.g.:</p>
<p><strong>/project/1/messages/1.xml</strong></p>
<pre><code>
&lt;message&gt;
  &lt;additional-text/&gt;
  &lt;attached-files-count type="integer"&gt;0&lt;/attached-files-count&gt;
  &lt;category-id type="integer"&gt;1&lt;/category-id&gt;
  &lt;comments-count type="integer"&gt;2&lt;/comments-count&gt;
  &lt;comments-enabled type="boolean"&gt;true&lt;/comments-enabled&gt;
  &lt;created-by-id type="integer"&gt;1&lt;/created-by-id&gt;
  &lt;created-on type="datetime"&gt;2009-07-16T19:35:00Z&lt;/created-on&gt;
  &lt;id type="integer"&gt;1&lt;/id&gt;
  &lt;is-important type="boolean"&gt;false&lt;/is-important&gt;
  &lt;is-private type="boolean"&gt;false&lt;/is-private&gt;
  &lt;milestone-id type="integer"&gt;0&lt;/milestone-id&gt;
  &lt;project-id type="integer"&gt;1&lt;/project-id&gt;
  &lt;text&gt;It's a *test*!&lt;/text&gt;
  &lt;title&gt;Test message!&lt;/title&gt;
  &lt;updated-by-id type="integer"&gt;1&lt;/updated-by-id&gt;
  &lt;updated-on type="datetime"&gt;2009-07-16T19:35:16Z&lt;/updated-on&gt;
&lt;/message&gt;
</code></pre>
<p><strong>/project/1/messages/1/comments.xml</strong></p>
<pre><code>
&lt;comments type="array"&gt;
  &lt;comment&gt;
    &lt;attached-files-count type="integer"&gt;0&lt;/attached-files-count&gt;
    &lt;author-name nil="true"/&gt;
    &lt;created-by-id type="integer"&gt;1&lt;/created-by-id&gt;
    &lt;created-on type="datetime"&gt;2009-07-17T20:34:12Z&lt;/created-on&gt;
    &lt;id type="integer"&gt;5&lt;/id&gt;
    &lt;is-anonymous type="boolean"&gt;false&lt;/is-anonymous&gt;
    &lt;is-private type="boolean"&gt;true&lt;/is-private&gt;
    &lt;text&gt;Test REST comment - edited&lt;/text&gt;
  &lt;/comment&gt;
&lt;/comments&gt;
</code></pre>
<p><strong>/project/1/files.xml</strong></p>
<pre><code>
&lt;files type="array"&gt;
  &lt;file&gt;
    &lt;comments-count type="integer"&gt;0&lt;/comments-count&gt;
    &lt;comments-enabled type="boolean"&gt;true&lt;/comments-enabled&gt;
    &lt;created-by-id type="integer"&gt;1&lt;/created-by-id&gt;
    &lt;created-on type="datetime"&gt;2009-07-18T13:22:20Z&lt;/created-on&gt;
    &lt;filename&gt;kitten-logo.png&lt;/filename&gt;
    &lt;id type="integer"&gt;9&lt;/id&gt;
    &lt;is-important type="boolean"&gt;false&lt;/is-important&gt;
    &lt;is-locked type="boolean"&gt;false&lt;/is-locked&gt;
    &lt;is-private type="boolean"&gt;false&lt;/is-private&gt;
    &lt;updated-on type="datetime"&gt;2009-07-18T13:34:50Z&lt;/updated-on&gt;
  &lt;/file&gt;
&lt;/files&gt;
</code></pre>
<p>So what are you waiting for? fork it, use it, <strong>enjoy</strong>!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cuppadev.co.uk/projects/railscollab-isnt-dead/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Playing Animated GIFs on the iPhone</title>
		<link>http://www.cuppadev.co.uk/iphone/playing-animated-gifs-on-the-iphone/</link>
		<comments>http://www.cuppadev.co.uk/iphone/playing-animated-gifs-on-the-iphone/#comments</comments>
		<pubDate>Tue, 31 Mar 2009 23:28:21 +0000</pubDate>
		<dc:creator>James Urquhart</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[software development]]></category>

		<guid isPermaLink="false">http://www.cuppadev.co.uk/?p=412</guid>
		<description><![CDATA[Following on from my Animated images on the iPhone post, i thought i&#8217;d take things a step further. To re-cap, i pretty much summarised the available options for playing back simple animations on the iphone in this nice table: Method Problem Use UIImageView It doesn&#8217;t scale Re-draw a UIView every frame Far too slow Use [...]]]></description>
			<content:encoded><![CDATA[<p>Following on from my <a href="http://www.cuppadev.co.uk/iphone/animated-images-on-the-iphone-sans-memory-leaks/">Animated images on the iPhone</a> post, i thought i&#8217;d take things a step further.</p>
<p>To re-cap, i pretty much summarised the available options for playing back simple animations on the iphone in this nice table:</p>
<table style="border: 1px solid #afafaf; color: #000000; background: #ffffff">
<thead>
<tr>
<th><strong>Method</strong></th>
<th><strong>Problem</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td>Use UIImageView</td>
<td>It doesn&#8217;t scale</td>
</tr>
<tr>
<td>Re-draw a UIView every frame</td>
<td>Far too slow</td>
</tr>
<tr>
<td>Use GLES</td>
<td>Beyond the scope of the last article, <strong>but not this one</strong>!</td>
</tr>
<tr>
<td>Transform a clipped UIView each frame</td>
<td>We did that last time</td>
</tr>
</tbody>
</table>
<p>To take things further, OpenGLES needs to be used. Specifically, you need to upload and draw a texture for every frame of your animation.</p>
<p>Now while this sounds like a great idea, there is a slight problem: uploading textures on the iPhone is hideously slow. Excluding the requirements of a video decoder, you only have enough time per frame to be able to playback a small stop motion video in RGB format.</p>
<p>All is not lost though. The iPhone supports two rather interesting texture formats: <strong>GL_COMPRESSED_RGB_PVRTC_*</strong> which is the native format, and <strong>GL_PALETTE*</strong> which is, as the name implies is a texture with a palette. </p>
<p>The fastest format to upload is PVR, but unfortunately there aren&#8217;t many native video codecs or animation formats about that decode to PVR format. Which leaves us with the palette format, which is just about fast enough to playback something more substantial&#8230;</p>
<p>Now which animation format uses a palette and is widely supported? <strong>Animated gif</strong>!</p>
<p>So to cut a long story short, i ended up writing a fairly elaborate library to decode and playback animated gifs on the iPhone, all in realtime. </p>
<p>Provided the gif is not gigantic (since the bigger the gif, the slower the decode + upload), it&#8217;s actually quite useable.</p>
<p><a href="http://www.cuppadev.co.uk/wp-content/uploads/2009/03/picture-1.png"><img src="http://www.cuppadev.co.uk/wp-content/uploads/2009/03/picture-1-139x200.png" alt="anim8gif" title="anim8gif" width="139" height="200" class="alignnone size-thumbnail wp-image-413" /></a></p>
<p>In fact, as a proof of concept i ended up writing an app using this library to playback animated gifs from any website in fullscreen (similar to the youtube app). Feel free to check it out &#8211; <a href="http://www.itunes.com/app/anim8gif">anim8gif</a>.</p>
<h3>The code</h3>
<p>The code for this gif animation library, <strong>glgif</strong>, is <a href="http://github.com/jamesu/glgif/tree/master">located on github</a>. As always, feel free to fork!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cuppadev.co.uk/iphone/playing-animated-gifs-on-the-iphone/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>What&#8217;s New in Rucksack</title>
		<link>http://www.cuppadev.co.uk/projects/whats-new-in-rucksack/</link>
		<comments>http://www.cuppadev.co.uk/projects/whats-new-in-rucksack/#comments</comments>
		<pubDate>Mon, 27 Oct 2008 09:52:19 +0000</pubDate>
		<dc:creator>James Urquhart</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[backpack]]></category>
		<category><![CDATA[backpack clone]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[ruby on rails]]></category>
		<category><![CDATA[web development]]></category>

		<guid isPermaLink="false">http://www.cuppadev.co.uk/?p=315</guid>
		<description><![CDATA[A while ago, i posted a little piece about my Backpack-inspired organisation tool, Rucksack. At the time, i only just got the basics working, and it was nowhere near &#8220;production ready&#8221;. Now, it still isn&#8217;t really &#8220;production ready&#8221;, but it has drastically improved these past few months. In August, it started out looking like: And [...]]]></description>
			<content:encoded><![CDATA[<p>A while ago, i posted a little piece about my <a href="http://www.cuppadev.co.uk/uncategorized/cloning-backpack/">Backpack-inspired organisation tool</a>, Rucksack. At the time, i only just got the basics working, and it was nowhere near &#8220;production ready&#8221;.</p>
<p>Now, it still isn&#8217;t really &#8220;production ready&#8221;, but it has drastically improved these past few months. In August, it started out looking like:</p>
<p style="text-align:left"><a href="http://www.cuppadev.co.uk/wp-content/uploads/2008/08/picture-11.png"><img src="http://www.cuppadev.co.uk/wp-content/uploads/2008/08/picture-11-300x132.png" alt="" title="rck_overview" width="300" height="138" class="alignnone size-thumbnail wp-image-276" /></a></p>
<p>And now it looks like this:</p>
<p style="text-align:left"><a href="http://www.cuppadev.co.uk/wp-content/uploads/2008/10/rck-new.png"><img src="http://www.cuppadev.co.uk/wp-content/uploads/2008/10/rck-new-300x156.png" alt="" title="rck-new" width="300" height="156" class="alignnone size-thumbnail wp-image-316" /></a></p>
<p>Which to say the least, is a big improvement.</p>
<p>But &#8220;<em>What&#8217;s new?</em>&#8220;, you may ask. Well apart from the new grey spaced out look&#8230;</p>
<ul>
<li>You can now see a general overview of recent activity</li>
<li>You can now <strong>upload files</strong></li>
<li>You can <strong>send emails to to pages</strong></li>
<li>Basic <strong>reminders</strong> have been implemented with email functionality</li>
<li><strong>Journals and Status</strong> (think Twitter) have been implemented</li>
<li>Fed-up of the default page width? You can now <strong>resize Pages</strong>!</li>
<li>Pages can now be <strong>shared to the public</strong></li>
<li>Client-side interface re-written in <strong>jQuery</strong></li>
<li><strong>Bug fixes</strong> and <strong>stability improvements</strong></li>
</ul>
<p>So safe to say, a lot of improvements. But still, a long way to go before it is truly useful for every day organisation.</p>
<p>As always, Rucksack is open source and can be <a href="http://github.com/jamesu/rucksack/tree/master">checked out on github</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cuppadev.co.uk/projects/whats-new-in-rucksack/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
