<?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"
	>

<channel>
	<title>Cuppadev</title>
	<atom:link href="http://www.cuppadev.co.uk/feed" rel="self" type="application/rss+xml" />
	<link>http://www.cuppadev.co.uk</link>
	<description>Cuppalicious coding!</description>
	<pubDate>Sat, 12 Jul 2008 21:11:13 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<item>
		<title>First Impressions of iPhone v2.0 Firmware</title>
		<link>http://www.cuppadev.co.uk/platforms/first-impressions-of-iphone-v20-firmware/</link>
		<comments>http://www.cuppadev.co.uk/platforms/first-impressions-of-iphone-v20-firmware/#comments</comments>
		<pubDate>Sat, 12 Jul 2008 21:11:13 +0000</pubDate>
		<dc:creator>James Urquhart</dc:creator>
		
		<category><![CDATA[Platforms]]></category>

		<category><![CDATA[iphone]]></category>

		<category><![CDATA[safari]]></category>

		<category><![CDATA[web development]]></category>

		<category><![CDATA[webkit]]></category>

		<guid isPermaLink="false">http://www.cuppadev.co.uk/?p=154</guid>
		<description><![CDATA[Finally, Apple have released version 2.0 of their iPhone and iPod Touch firmware. Priced at $9.95 for Touch owners (though free to iPhone owners), i think it delivers excellent value for money, especially considering the previous update for the iPod Touch cost $20 and didn&#8217;t include the App Store.
The new features i am interested in [...]]]></description>
			<content:encoded><![CDATA[<p>Finally, Apple have released <a href="http://www.apple.com/uk/iphone/softwareupdate/">version 2.0</a> of their iPhone and iPod Touch firmware. Priced at $9.95 for Touch owners (though free to iPhone owners), i think it delivers excellent value for money, especially considering the previous update for the iPod Touch cost $20 and didn&#8217;t include the App Store.</p>
<p>The new features i am interested in however are all tied into the web browser. Specifically, the <a href="http://webkit.org/blog/126/webkit-does-html5-client-side-database-storage/">database support</a>, <a href="http://www.sitepen.com/blog/2008/07/10/touching-and-gesturing-on-the-iphone/">touch event handling</a>, <a href="http://webkit.org/blog/130/css-transforms/">CSS transforms</a>, and to tie everything together to make more native-looking apps, <a href="http://groups.google.com/group/iphonewebdev/browse_thread/thread/49470052638741f6?fwc=1">full-screen support.</a></p>
<h3>So is it worth it?</h3>
<p>Well i am pleased to report that most of these features have made their way to the update. My database demo which i <a href="http://www.cuppadev.co.uk/oldbrew/iphone-magic/">posted about previously</a> works fine, though initially i was a bit concerned that i didn&#8217;t see a &#8220;databases&#8221; section in the configuration options in Safari.</p>
<p style="text-align:center"><a href="http://www.cuppadev.co.uk/wp-content/uploads/2008/07/photo2.jpg"><img class="alignnone size-thumbnail wp-image-157" title="The result" src="http://www.cuppadev.co.uk/wp-content/uploads/2008/07/photo2-133x200.jpg" alt="" width="133" height="200" /></a><a href="http://www.cuppadev.co.uk/wp-content/uploads/2008/07/photo1.jpg"><img class="alignnone size-medium wp-image-156" title="The database section present and accounted for" src="http://www.cuppadev.co.uk/wp-content/uploads/2008/07/photo1-133x200.jpg" alt="" width="133" height="200" /></a><a href="http://www.cuppadev.co.uk/wp-content/uploads/2008/07/photo.jpg"><img class="alignnone size-thumbnail wp-image-155" title="Database storage" src="http://www.cuppadev.co.uk/wp-content/uploads/2008/07/photo-133x200.jpg" alt="" width="133" height="200" /></a></p>
<p>Turned out that this only appears when at least 1 database is created. A word of warning though: when i deleted my test database, the section vanished and i could only get it back by restarting the system. So watch out if you are playing about with it.</p>
<p>Sadly it appears that one of the binding features, the full-screen support, hasn&#8217;t made it into the update. Supposedly, you are meant to insert the a &#8220;apple-touch-fullscreen&#8221; meta tag into your HTML document, but i didn&#8217;t notice any difference whatsoever when i tried it. A huge disappointment, IMO.</p>
<p>Regardless, i think this is a positive step towards making the iPhone/iPod&#8217;s web application development platform actually useful - in a stark contrast to just over a year ago when Apple were promoting a rather limited web development platform with none of these cool features as <em>the only</em> way of getting third party applications on the iPhone.</p>
<p>Let&#8217;s not forget that for those not content with working within the limitations of the iPhone&#8217;s web development platform, there is now also the native <a href="http://developer.apple.com/iphone/">iPhone SDK</a>. So all in all, there&#8217;s a bit for everyone in this update.</p>
<p>So is it worth installing? Hell, yes!</p>
<p class="akst_link"><a href="http://www.cuppadev.co.uk/?p=154&amp;akst_action=share-this"  title="Email, post to del.icio.us, etc." id="akst_link_154" class="akst_share_link" rel="noindex nofollow">ShareThis</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://www.cuppadev.co.uk/platforms/first-impressions-of-iphone-v20-firmware/feed/</wfw:commentRss>
		</item>
		<item>
		<title>RailsCollab Alpha 3</title>
		<link>http://www.cuppadev.co.uk/projects/railscollab-alpha-3/</link>
		<comments>http://www.cuppadev.co.uk/projects/railscollab-alpha-3/#comments</comments>
		<pubDate>Wed, 09 Jul 2008 19:44:59 +0000</pubDate>
		<dc:creator>James Urquhart</dc:creator>
		
		<category><![CDATA[Projects]]></category>

		<category><![CDATA[activecollab]]></category>

		<category><![CDATA[projectpier]]></category>

		<category><![CDATA[railscollab]]></category>

		<category><![CDATA[web development]]></category>

		<guid isPermaLink="false">http://www.cuppadev.co.uk/?p=150</guid>
		<description><![CDATA[Hot off the presses, i&#8217;ve just pushed alpha 3 of RailsCollab to both Rubyforge and Github.
Railscollab? What&#8217;s that?
Railscollab is a re-write of the Project Management solution ActiveCollab (otherwise known as ProjectPier), which instead is written in Ruby and runs on the Ruby on Rails web development framework.
Why on earth would you want to do that?
Good [...]]]></description>
			<content:encoded><![CDATA[<p>Hot off the presses, i&#8217;ve just pushed alpha 3 of RailsCollab to both <a href="http://rubyforge.org/projects/railscollab/">Rubyforge</a> and <a href="http://github.com/jamesu/railscollab/commits/release-alpha3">Github</a>.</p>
<h3>Railscollab? What&#8217;s that?</h3>
<p>Railscollab is a re-write of the Project Management solution <a href="http://www.activecollab.com">ActiveCollab</a> (otherwise known as <a href="http://www.projectpier.org">ProjectPier</a>), which instead is written in <a href="http://www.ruby-lang.org">Ruby</a> and runs on the <a href="http://www.rubyonrails.org/">Ruby on Rails</a> web development framework.</p>
<h3>Why on earth would you want to do that?</h3>
<p>Good question. Well, it all started when the developer of ActiveCollab announced they were ditching the open source version and going commercial and closed source. Of course, there were people like me that didn&#8217;t like that. </p>
<p>So i decided to make my own fork - however i added a twist. I decided to re-write it using Ruby on Rails, since the original <a href="http://www.php.net">PHP</a> code was giving me a headache. Plus it seemed like a great way to get to know the Ruby on Rails framework.</p>
<p><em>Note that around the same time, another fork called ProjectPier arose, which opted to develop from the original PHP code.</em></p>
<h3>So what&#8217;s new?</h3>
<p>Quite a lot, actually. Pretty much everything that was present in ActiveCollab 0.7.x is now implemented, sans the the fancy web-based installer. I&#8217;ve also focussed a lot on fixing bugs and improving stability, as well as enhancing the time tracking components.</p>
<p style="text-align:left;"><a href="http://www.cuppadev.co.uk/wp-content/uploads/2008/07/time-tracking-csv1.png"><img class="size-thumbnail wp-image-152" title="time-tracking-csv1" src="http://www.cuppadev.co.uk/wp-content/uploads/2008/07/time-tracking-csv1-300x115.png" alt="Time tracking with CSV export" width="300" height="115" /></a></p>
<p>&#8230; and of course there is the configuration editor which takes advantage of Phusion Passenger.</p>
<p style="text-align:left;"><a href="http://www.cuppadev.co.uk/assets/rc_cnf.jpg"><img title="Configuration Editor" src="http://www.cuppadev.co.uk/assets/rc_cnf_th.jpg" alt="Configuration Editor" /></a></p>
<p>In addition, i have updated the RailsCollab demo, so if you don&#8217;t have the time to set everything up, you can still try out Alpha 3.</p>
<p>I&#8217;d also like to thank <strong>everyone</strong> (you know who you are) who has reported issues with RailsCollab over the past few months. Without your help, i doubt i would have had the willpower to make another release.</p>
<p>So what are you waiting for, <a href="http://freshbrew.cuppadev.co.uk">try it out already</a>. :)</p>
<p><strong>Edit:</strong> If you are stuck wondering &#8220;How do i login?&#8221;, have no fear, the solution is here. You will need to use <a href="http://openid.net/">OpenID</a> to login. </p>
<p style="text-align:left;"><img src="http://www.cuppadev.co.uk/assets/2007/8/11/openid.png" title="OpenID Logo" alt="OpenID Logo" /></p>
<p>Simply select the “Use OpenID” checkbox and type in your OpenID to login. An account should automatically be created for you if one does not already exist, provided that your OpenID provider provides a username, email, and name. </p>
<p>You can get an OpenID from many places - one of my favourites being <a href="https://www.myopenid.com/">myOpenID</a>.</p>
<p class="akst_link"><a href="http://www.cuppadev.co.uk/?p=150&amp;akst_action=share-this"  title="Email, post to del.icio.us, etc." id="akst_link_150" class="akst_share_link" rel="noindex nofollow">ShareThis</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://www.cuppadev.co.uk/projects/railscollab-alpha-3/feed/</wfw:commentRss>
		</item>
		<item>
		<title>A new focus</title>
		<link>http://www.cuppadev.co.uk/freshbrew/a-new-focus/</link>
		<comments>http://www.cuppadev.co.uk/freshbrew/a-new-focus/#comments</comments>
		<pubDate>Mon, 07 Jul 2008 21:31:42 +0000</pubDate>
		<dc:creator>James Urquhart</dc:creator>
		
		<category><![CDATA[freshbrew]]></category>

		<category><![CDATA[updates]]></category>

		<guid isPermaLink="false">http://www.cuppadev.co.uk/?p=149</guid>
		<description><![CDATA[Over the past few months, i have come to the conclusion that this blog needs a new focus.
When i first started this blog, i decided the focus was going to be &#8220;my work and anything related&#8221;. This turned out to be a bad focus point, as my real work at the time was quite honestly [...]]]></description>
			<content:encoded><![CDATA[<p>Over the past few months, i have come to the conclusion that this blog needs a new focus.</p>
<p>When i first started this blog, i decided the focus was going to be &#8220;my work and anything related&#8221;. This turned out to be a bad focus point, as my real work at the time was quite honestly boring, and writing about &#8220;anything&#8221; just simply wasn&#8217;t focussed enough.</p>
<p>More than anything, i&#8217;ve written about web development. It is a frontier which i find quite promising, and which i feel has leaped bounds these past few years. With the appearance of feature-rich development frameworks such as <a href="http://code.google.com/webtoolkit/">Google&#8217;s GWT</a> and <a href="http://www.sproutcore.com/">SproutCore</a> has come the realisation that the web - or more specifically the web browser - truly is a viable application development platform.</p>
<p><em>(Not to mention that modern web development in general does away with archaic and slow tools, instead emphasising simple and fast toolsets and the adoption of agile methodologies for quick turnaround)</em></p>
<p>So my new focus for this blog will be to write informative posts about the latest and greatest in the wonderful world of web development.</p>
<p>In addition, i&#8217;m going to be putting &#8220;anything else&#8221; on my new blog, <a href="http://jamesu.net">jamesu.net</a>.</p>
<p>So, let the experiment commence!</p>
<p> </p>
<p class="akst_link"><a href="http://www.cuppadev.co.uk/?p=149&amp;akst_action=share-this"  title="Email, post to del.icio.us, etc." id="akst_link_149" class="akst_share_link" rel="noindex nofollow">ShareThis</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://www.cuppadev.co.uk/freshbrew/a-new-focus/feed/</wfw:commentRss>
		</item>
		<item>
		<title>iPhone Magic</title>
		<link>http://www.cuppadev.co.uk/oldbrew/iphone-magic/</link>
		<comments>http://www.cuppadev.co.uk/oldbrew/iphone-magic/#comments</comments>
		<pubDate>Sat, 07 Jun 2008 02:55:55 +0000</pubDate>
		<dc:creator>James Urquhart</dc:creator>
		
		<category><![CDATA[oldbrew]]></category>

		<category><![CDATA[iphone]]></category>

		<category><![CDATA[safari]]></category>

		<category><![CDATA[web development]]></category>

		<category><![CDATA[webkit]]></category>

		<guid isPermaLink="false">http://crm.cuppadev.co.uk/?p=146</guid>
		<description><![CDATA[
 Recently i&#8217;ve been playing about with the iPhone SDK. I&#8217;m actually quite impressed at the great tools included to make development easier, whether you choose to develop native applications or web applications.
Since i wasn&#8217;t quite up to scratch with my Objective C, i thought i&#8217;d see how much better the in-built browser was. Using [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.cuppadev.co.uk/assets/dashcode.png" title="Dashcode" alt="Dashcode" style="float:left"/>
<p> Recently i&#8217;ve been playing about with the <a href="http://developer.apple.com/iphone/">iPhone <span class="caps">SDK</span></a>. I&#8217;m actually quite impressed at the great tools included to make development easier, whether you choose to develop native applications or web applications.</p>
<p>Since i wasn&#8217;t quite up to scratch with my Objective C, i thought i&#8217;d see how much better the in-built browser was. Using Dashcode, i was easily able to prototype some pretty neat touch-based interfaces.</p>
<p>Still, one of the major criticism&#8217;s i seem to find about developing web apps for the iPhone is a lack of an <strong>off-line</strong> option. If you aren&#8217;t connected to a network, you can&#8217;t make use of any web applications.</p>
<p>Well, that&#8217;s not strictly true. You can use the &#8220;data:/&#8221; <span class="caps">URI</span> hack, where you bookmark a <span class="caps">URL</span> containing the <span class="caps">HTML</span> of the application you want to use off-life. But this is not a very useful solution if you want to store persistent data your application can use after re-loading.</p>
<p>Which is why i was pleased to find out that the iPhone simulator in the <span class="caps">SDK</span> includes support for WebKit&#8217;s new <a href="http://webkit.org/blog/126/webkit-does-html5-client-side-database-storage/">Database storage <span class="caps">API</span></a>. In essence this means that you can persistently store pretty much anything you want on the client.</p>
<p>How is this useful on the iPhone? Well, it means we can now make very useful offline web applications with persistent data storage.</p>
<p>Here is the &#8220;proof of concept&#8221; i have cooked up.</p>
<p><a href="http://www.cuppadev.co.uk/iphone/database-images/">http://www.cuppadev.co.uk/iphone/database-images/</a></p>
<p>If you visit the above <span class="caps">URL</span> in the iPhone simulator, you should see three items which you can click on. (Note that these are all data:/ <span class="caps">URI</span>&#8217;s)</p>
<ul>
<li>The first creates a database (if it does not already exist) and stores the data for an image, which is then loaded back and shown on the page.</li>
<li>The second inserts a second image into the database. If you click on the first item again, there will now be two images shown on the page.</li>
<li>The third replaces the data of the first and the second image. If you click on the first item again, you might get a little shock.</li>
</ul>
<p>There are of course limitations to this Database <span class="caps">API</span>. Access to databases is restricted on a per-domain basis (although in Webkit &#8220;data:/&#8221; <span class="caps">URL</span>&#8217;s are treated as a single domain), and on the iPhone simulator you only get up to 5mb of storage.</p>
<p>Still, it works and i can see it being a very useful feature for future web applications on the iPhone.</p>
<p>This actually works in Safari 3.1 too, so you don&#8217;t need to download the huge iPhone <span class="caps">SDK</span> to try this out. It technically should work in Firefox 3 too, though as of yet i haven&#8217;t managed to get it to allow access to the database.</p>
<p class="akst_link"><a href="http://www.cuppadev.co.uk/?p=146&amp;akst_action=share-this"  title="Email, post to del.icio.us, etc." id="akst_link_146" class="akst_share_link" rel="noindex nofollow">ShareThis</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://www.cuppadev.co.uk/oldbrew/iphone-magic/feed/</wfw:commentRss>
		</item>
		<item>
		<title>SCUMM in JavaScript</title>
		<link>http://www.cuppadev.co.uk/oldbrew/scumm-in-javascript/</link>
		<comments>http://www.cuppadev.co.uk/oldbrew/scumm-in-javascript/#comments</comments>
		<pubDate>Wed, 28 May 2008 21:19:44 +0000</pubDate>
		<dc:creator>James Urquhart</dc:creator>
		
		<category><![CDATA[oldbrew]]></category>

		<category><![CDATA[canvas]]></category>

		<category><![CDATA[javascript]]></category>

		<category><![CDATA[openquest]]></category>

		<category><![CDATA[SCUMM]]></category>

		<category><![CDATA[scummc]]></category>

		<category><![CDATA[web development]]></category>

		<guid isPermaLink="false">http://crm.cuppadev.co.uk/?p=145</guid>
		<description><![CDATA[Soon after bumping into haXe and Doomed Online, they got me thinking. &#8220;Would it be possible to run SCUMM games in flash?&#8221;. The answer to that of course is yes, as was demonstrated by my SCUMM Interpreter written in haXe. Though as with anything, you really need to spend the time to implement everything, and [...]]]></description>
			<content:encoded><![CDATA[<p>Soon after bumping into <a href="http://www.haxe.org">haXe</a> and <a href="http://code.google.com/p/doomedonline/">Doomed Online</a>, they got me thinking. &#8220;Would it be possible to run <span class="caps">SCUMM</span> games in flash?&#8221;. The answer to that of course is yes, as was demonstrated by my <a href="http://www.cuppadev.co.uk/2007/11/22/flash-plays-scumm-take-two/"><span class="caps">SCUMM</span> Interpreter written in haXe</a>. Though as with anything, you really need to spend the <strong>time</strong> to implement everything, and justify it somewhat.</p>
<p>(Not to mention that Flash 10 is supposedly going to be able to compile C code, thus making my complete port more or less redundant)</p>
<p>Now i would have stopped there, if i hadn&#8217;t noticed that haXe targets multiple platforms, including every web developer&#8217;s best friend, JavaScript. Thus i thought, &#8220;<strong>Would it be possible to run <span class="caps">SCUMM</span> games in Javascript?</strong>&#8221;. For the answer&#8230; well, take a look!</p>
<p style="text-align:left;"><a href="http://www.cuppadev.co.uk/assets/hiscumm_js.png"><img src="http://www.cuppadev.co.uk/assets/hiscumm_js_th.png" title="OpenQuest in a browser" alt="OpenQuest in a browser" /></a></p>
<p>Yes, that is an image of <a href="http://alban.dotsec.net/13.html">OpenQuest</a> running in a web browser, specifically Firefox. It can run in other browsers too, though to date i have only tested Firefox and Safari, the latter of which mysteriously crashes.</p>
<p>And if you want, you can <a href="http://www.cuppadev.co.uk/hiscumm/js_test.html">try it yourself by clicking here</a>. A <strong>word of warning though</strong>, it is highly recommended that you use <a href="http://www.mozilla.com/firefox/">Firefox</a> to run it. Otherwise you might get a nasty crash, or a big disappointment.</p>
<p>As previously, just about enough is implemented to get the first room of OpenQuest loaded. Actors, verbs, objects, and sounds are not implemented, though it would certainly be possible. However the engine runs <strong>much slower than in Flash</strong>, so i doubt anything that could be considered to be &#8220;playable&#8221; could be implemented with it.</p>
<p>Still, i feel I&#8217;ve now accomplished what i set out to do when writing this interpreter &#8211; that is to push haXe, Flash, and JavaScript to the limit and see what i can get out of them. And of course, learn a bit more about <span class="caps">SCUMM</span> too.</p>
<p>Again, i would like to congratulate the ScummVM team for their <span class="caps">SCUMM</span> interpreter and Alban Bedel for his scummc compiler. Without their efforts, i wouldn&#8217;t have had any code or references from which to base my haXe-based <span class="caps">SCUMM</span> interpreter.</p>
<p><strong>Edit</strong>: Source code available from <a href="http://github.com/jamesu/hiscumm/tree/master">github</a>.</p>
<p><strong>Edit</strong>: No longer crashes in Safari provided you are using Safari 3.1.2 or later.</p>
<p class="akst_link"><a href="http://www.cuppadev.co.uk/?p=145&amp;akst_action=share-this"  title="Email, post to del.icio.us, etc." id="akst_link_145" class="akst_share_link" rel="noindex nofollow">ShareThis</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://www.cuppadev.co.uk/oldbrew/scumm-in-javascript/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Yet another RailsCollab demo</title>
		<link>http://www.cuppadev.co.uk/oldbrew/yet-another-railscollab-demo/</link>
		<comments>http://www.cuppadev.co.uk/oldbrew/yet-another-railscollab-demo/#comments</comments>
		<pubDate>Sat, 24 May 2008 02:09:31 +0000</pubDate>
		<dc:creator>James Urquhart</dc:creator>
		
		<category><![CDATA[oldbrew]]></category>

		<category><![CDATA[activecollab]]></category>

		<category><![CDATA[basecamp]]></category>

		<category><![CDATA[projectpier]]></category>

		<category><![CDATA[railscollab]]></category>

		<category><![CDATA[software]]></category>

		<category><![CDATA[web development]]></category>

		<guid isPermaLink="false">http://crm.cuppadev.co.uk/?p=144</guid>
		<description><![CDATA[Recently i have had another go at tweaking RailsCollab, the pet project of mine (which i have mentioned previously).
After moving the source repository from Subversion to Git, i decided to add in a long standing missing feature &#8211; the web-based configuration editor.

Originally i pretty much stayed away from implementing this as Ruby on Rails was [...]]]></description>
			<content:encoded><![CDATA[<p>Recently i have had another go at tweaking RailsCollab, the pet project of mine (which i have <a href="http://www.cuppadev.co.uk/mtos/mt-search.cgi?search=railscollab&#38;IncludeBlogs=3">mentioned previously</a>).</p>
<p>After moving the source repository from <a href="http://subversion.tigris.org">Subversion</a> to <a href="http://git.or.cz/">Git</a>, i decided to add in a long standing missing feature &#8211; the web-based configuration editor.</p>
<p style="text-align:left;"><a href="http://www.cuppadev.co.uk/assets/rc_cnf.jpg"><img src="http://www.cuppadev.co.uk/assets/rc_cnf_th.jpg" title="Configuration Editor" alt="Configuration Editor" /></a></p>
<p>Originally i pretty much stayed away from implementing this as <a href="http://www.rubyonrails.org/">Ruby on Rails</a> was a real pain in the ass when it came to deployment, so i couldn&#8217;t implement a configuration loader that i knew would work in 90% of deployment cases.</p>
<p>That was, until recently when <a href="http://www.modrails.com/">Phusion Passenger</a> was released.</p>
<p style="text-align:left;"><img src="http://www.cuppadev.co.uk/assets/phusion-thumb-240x240.png" title="Phusion Logo" alt="Phusion Logo" /></p>
<p>For those of you that don&#8217;t know, Passenger is an Apache module which allows you to simply drop in your Rails application and run it with practically zero configuration. It pretty much falls under the &#8220;it just works&#8221; category. I have no doubt that anyone using RailsCollab will prefer using Passenger to deploy. Consequently, i have been able to implement a rather nice configuration loader based on this assumption.</p>
<p>Which brings me to the demo. A short while back, my web host, <a href="http://dreamhost.com/">DreamHost</a> added Phusion Passenger support to their web servers. Factor everything together, and you have&#8230; the RailsCollab demo!</p>
<p><a href="http://freshbrew.cuppadev.co.uk">Link to the demo</a></p>
<p>&#8220;But wait!&#8221; you ask, &#8220;how do i login?&#8221;. Well, using <a href="http://openid.net/">OpenID</a> of course. As with my <a href="http://www.cuppadev.co.uk/2007/08/12/railscollab-demo/">previous demo</a>,  you should be able to select the &#8220;Use OpenID&#8221; checkbox and type in your OpenID to login.</p>
<p style="text-align:left;"><img src="http://www.cuppadev.co.uk/assets/2007/8/11/openid.png" title="OpenID Logo" alt="OpenID Logo" /></p>
<p>This will automagically register you with the system, adding you to the &#8220;OpenID&#8221; company and the &#8220;RailsCollab&#8221; project. Afterwards if you want, you can reset your password so you can login using a regular username &#38; password, though personally i think typing in your OpenID is a better idea.</p>
<p>Note that your OpenID provider needs to support handing over identity fields in order for RailsCollab to correctly register you. <a href="http://www.myopenid.com">MyOpenID</a> is an example of a provider that supports this. Also note that if there is a user with a duplicate username or email in the system, registration will fail.</p>
<h3>One more thing</h3>
<p>The RailsCollab demo also supports the <a href="http://www.basecamphq.com/">Basecamp</a> API. This means that you can take any existing widget, program, or service that <a href="http://basecamphq.com/extras">integrates with Basecamp</a> and <strong>use it with RailsCollab</strong>. e.g. <a href="http://www.avalanche-widget.org/">Avalanche</a>, <a href="http://www.freshbooks.com/">Freshbooks</a>, or <a href="http://www.getcashboard.com/">Cashboard</a></p>
<p>So what are you waiting for? <a href="http://freshbrew.cuppadev.co.uk">Try the demo already!:</a> :)</p>
<p class="akst_link"><a href="http://www.cuppadev.co.uk/?p=144&amp;akst_action=share-this"  title="Email, post to del.icio.us, etc." id="akst_link_144" class="akst_share_link" rel="noindex nofollow">ShareThis</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://www.cuppadev.co.uk/oldbrew/yet-another-railscollab-demo/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Buzzing Off</title>
		<link>http://www.cuppadev.co.uk/oldbrew/buzzing-off/</link>
		<comments>http://www.cuppadev.co.uk/oldbrew/buzzing-off/#comments</comments>
		<pubDate>Thu, 15 May 2008 01:13:55 +0000</pubDate>
		<dc:creator>James Urquhart</dc:creator>
		
		<category><![CDATA[oldbrew]]></category>

		<category><![CDATA[cre8buzz]]></category>

		<category><![CDATA[digital clutter]]></category>

		<category><![CDATA[social networking]]></category>

		<guid isPermaLink="false">http://crm.cuppadev.co.uk/?p=143</guid>
		<description><![CDATA[Many months ago, i was invited to join the social networking site cre8Buzz. I accepted mainly out of interest, as i have always tended to stray away from these sort of services.

Now i&#8217;m buzzing off.
Why you ask? Well, after looking objectively at what i was getting out of the site, i concluded that there was [...]]]></description>
			<content:encoded><![CDATA[<p>Many <a href="http://www.cuppadev.co.uk/2007/12/11/cre8buzz-criticisms/">months ago</a>, i was invited to join the social networking site <a href="http://cre8buzz.com">cre8Buzz</a>. I accepted mainly out of interest, as i have always tended to stray away from these sort of services.</p>
<p style="text-align:left;"><img src="http://www.cuppadev.co.uk/assets/cbl.jpg" title="cre8Buzz Logo" alt="cre8Buzz Logo" /></p>
<p>Now i&#8217;m <strong>buzzing off</strong>.</p>
<p>Why you ask? Well, after looking objectively at what i was getting out of the site, i concluded that there was simply nothing. Actually, that&#8217;s not quite fair so i shall elaborate.</p>
<p>In fact, i&#8217;m not quite sure what i&#8217;m meant to be getting out of it. Perhaps i&#8217;m looking at it the wrong way; instead should i be thinking &#8220;what are other people meant to be getting out of it?&#8221;.</p>
<p>So if we look at the &#8220;Top 8 Communities&#8221; list for example, we find:</p>
<ol>
<li>Moms</li>
<li>Women</li>
<li>Photography</li>
<li>Real Estate</li>
<li>Entrepreneurs</li>
<li>Dads</li>
<li>Fiction</li>
<li>Social</li>
</ol>
<p>The first two, Moms and Women. Yikes! Not exactly my forte. Looking further, here&#8217;s the &#8220;Top Ranked Blogs&#8221; list:</p>
<ol>
<li>Bliss in Bloom Women</li>
<li>Oh, The Joys Moms</li>
<li>Looking Beyond the Cracked Window Fiction</li>
<li>Twas Brillig Women</li>
<li>Momo Fall&#8217;s Moms</li>
<li>Joeprah &#8211; My Life as a Stay at Home Dad Dads</li>
<li>The Busy Dad Blog Dads</li>
<li>Mimz-photography Photography</li>
</ol>
<p>Which pretty much sums up what cre8Buzz is about. Moms &#38; Dads! I&#8217;ve inadvertently been fooled into joining a parenting community!</p>
<p>Now this in itself wouldn&#8217;t have been a bad thing&#8230; if i was a parent. But considering i&#8217;m not, i just don&#8217;t see what i can possibly get out of networking on cre8Buzz.</p>
<p>I should also factor into this the rather obvious lack of activity on my profile. When i joined, i chose to participate in the &#8220;Entrepreneurs&#8221; community, which sounded like a great idea at the time. In total i managed to get 5 people to join my friends list. I even posted on the forum.</p>
<p>But then&#8230; nothing.</p>
<p>It seemed that there was negligible activity within the &#8220;community&#8221;. Updates were sporadic, if there were any at all. It wasn&#8217;t really worth my time bothering to try and participate.</p>
<p>Which pretty much sums up my view on cre8Buzz. I&#8217;m sure it probably is a great social networking site, but it just doesn&#8217;t work for <strong>me</strong>. but My mouse is now hovering over the &#8220;Destroy Account&#8221; button&#8230;</p>
<p>Going&#8230; Going&#8230; <strong>Gone</strong>!</p>
<p class="akst_link"><a href="http://www.cuppadev.co.uk/?p=143&amp;akst_action=share-this"  title="Email, post to del.icio.us, etc." id="akst_link_143" class="akst_share_link" rel="noindex nofollow">ShareThis</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://www.cuppadev.co.uk/oldbrew/buzzing-off/feed/</wfw:commentRss>
		</item>
		<item>
		<title>An Overview of Bungee Connect</title>
		<link>http://www.cuppadev.co.uk/oldbrew/an-overview-of-bungee-connect/</link>
		<comments>http://www.cuppadev.co.uk/oldbrew/an-overview-of-bungee-connect/#comments</comments>
		<pubDate>Mon, 05 May 2008 05:00:18 +0000</pubDate>
		<dc:creator>James Urquhart</dc:creator>
		
		<category><![CDATA[oldbrew]]></category>

		<category><![CDATA[deployment]]></category>

		<category><![CDATA[development]]></category>

		<category><![CDATA[software]]></category>

		<category><![CDATA[web development]]></category>

		<guid isPermaLink="false">http://crm.cuppadev.co.uk/?p=142</guid>
		<description><![CDATA[A while ago, i was contacted by Ted Haeger of Bungee Labs in response to my blog entry on Heroku. He invited me to check out Bungee Connect, their fully featured web-based IDE. So i did.
Keep in mind that the following overview is of the Beta version, which is still under development and so is [...]]]></description>
			<content:encoded><![CDATA[<p>A while ago, i was contacted by Ted Haeger of Bungee Labs in response to my blog entry on Heroku. He invited me to check out Bungee Connect, their fully featured web-based <span class="caps">IDE</span>. So i did.</p>
<p><em>Keep in mind that the following overview is of the Beta version, which is still under development and so is still subject to change. Also remember that this is in no way an in-depth review.</em></p>
<p>For those who don&#8217;t know, Bungee Connect is an all-inclusive web development environment. It covers development, testing, and publishing of web applications. In addition, a collaborative element is introduced with support for multiple users.</p>
<h3>Development</h3>
<p style="text-align:center;"><a href="http://www.cuppadev.co.uk/assets/bngc_ide.jpg"><img src="http://www.cuppadev.co.uk/assets/bngc_ide_th.jpg" title="Bungee Connect IDE" alt="Bungee Connect IDE" /></a></p>
<p>So here&#8217;s the development environment, which has a striking resemblance to a certain <a href="http://msdn.microsoft.com/en-us/vcsharp/default.aspx">Intergrated Development Environment</a> from another company.</p>
<p>Naturally, the first thing anyone would want to do is make a simple &#8220;Hello World&#8221; application, which sounds very simple at first &#8211; right? Wrong!</p>
<p>Sadly there is quite a big learning curve getting to grips with Bungee&#8217;s terminology and workflow.</p>
<p>As you&#8217;ll note by looking at the screen shot, the hierarchy for my &#8220;Hello World&#8221; application looks like this:</p>
<ul>
<li>Yo_World
<ul>
<li>MyAppProject
<ul>
<li>NewPage</li>
</ul>
</li>
<li>MyTypeLib
<ul>
<li>Yo_World
<ul>
<li>Object</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<p>Which to me, seems a bit overcomplicated.</p>
<p>Bungee Connect is not the sort of development environment where you can just pick it up and churn out a working application without first reading the documentation.</p>
<p>Still, with a lot of head bashing you could probably think of the above as an example of <span class="caps">MVC</span> (Model, View, Controller). i.e. &#8220;MyAppProject&#8221; is where the views go, and &#8220;MyTypeLib&#8221; is where all of the controllers go.</p>
<p>For the actual code, it seems primarily based on Java or CSharp. Though i couldn&#8217;t find this explicitly stated anywhere, so i am not sure.</p>
<p>One of the key features which sets this solution apart from other web-based development environments is the <span class="caps">GUI</span> designer. It can be very much likened to Visual Studio &#8211; there&#8217;s a control palette on the left, object inspector on the bottom, and you can move about controls in a <span class="caps">WYSIWG</span>-style canvas.</p>
<p>Another thing of note is that you can bind values of controls to counterparts in control objects. This means that you can easily build up complex interfaces without writing tonnes of glue code, which can save a lot of time. If you have ever used <a href="http://developer.apple.com/documentation/DeveloperTools/Conceptual/IB_UserGuide/ConnectionsandBindings/chapter_6_section_5.html">Interface Builder</a> on a mac, you&#8217;ll probably know what i mean.</p>
<p style="text-align:center;"><img src="http://www.cuppadev.co.uk/assets/bng_cpl.jpg" title="Hello World! Example" alt="Hello World! Example" /></p>
<h3>Staging &#38; Deployment</h3>
<p>Assuming you made it through the development process, it&#8217;s likely you&#8217;ll want to subject your application to rigourous testing and eventually publish it to Bungee Connect&#8217;s servers for public consumption.</p>
<p style="text-align:center;"><a href="http://www.cuppadev.co.uk/assets/bng_lic.jpg"><img src="http://www.cuppadev.co.uk/assets/bng_lic_th.jpg" title="Bungee Connect Licenses" alt="Bungee Connect Licenses" /></a></p>
<p>That is, after you accept no more than 3 long and wordy license agreements, which to say the least was a big legal commitment for such a service. I might not have been bothered if there were only 2, but 3? Also factor in the additional Terms of Use and Privacy Policy. That makes 5. Crazy!</p>
<p>It should also be noted that you are locked into deploying your application on Bungee Connect&#8217;s servers.</p>
<h3>Conclusion</h3>
<p>Enough rambling. So is Bungee Connect any good? Well at the moment, not really. I say this because it just seems like an overly complicated solution for a rather simple problem. While I want to &#8220;Build the app, not the crap&#8221;, it would be nice if i could &#8220;Not deal with the crap&#8221;.</p>
<p>The &#8220;Crap&#8221; i refer to includes:</p>
<ul>
<li>Complicated licensing</li>
<li>Steep learning curve (terminology, process, quirks)</li>
<li>Buggy interface (e.g. drag &#38; drop didn&#8217;t work at all in Safari!)</li>
</ul>
<p>Bungee&#8217;s statement, &#8220;Build the app, not the crap&#8221; got me thinking. When was the last time i really thought i was building the app, not the crap?</p>
<p style="text-align:center;"><img src="http://www.cuppadev.co.uk/assets/delphibox.jpg" title="Delphi Box" alt="Delphi Box" /></p>
<p>Yes, Delphi. Hello World? Just stick a label on the default project&#8217;s form, type &#8220;Hello World&#8221;, and press run. It couldn&#8217;t be any simpler.</p>
<p>Compare and contrast with Bungee Connect: I have to make a &#8220;TypeLib&#8221;, a controller, then a form. Then if i am lucky i might figure out which item in which list is the form, drag over a label, type &#8220;Hello World&#8221;, and then stick it all on the page in my other project.</p>
<p>I really do wonder, why can&#8217;t modern web-based web application development be simple and fun?</p>
<p class="akst_link"><a href="http://www.cuppadev.co.uk/?p=142&amp;akst_action=share-this"  title="Email, post to del.icio.us, etc." id="akst_link_142" class="akst_share_link" rel="noindex nofollow">ShareThis</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://www.cuppadev.co.uk/oldbrew/an-overview-of-bungee-connect/feed/</wfw:commentRss>
		</item>
		<item>
		<title>An Analogue Clock using Safari Transforms</title>
		<link>http://www.cuppadev.co.uk/oldbrew/an-analogue-clock-using-safari-transforms/</link>
		<comments>http://www.cuppadev.co.uk/oldbrew/an-analogue-clock-using-safari-transforms/#comments</comments>
		<pubDate>Thu, 20 Mar 2008 07:25:52 +0000</pubDate>
		<dc:creator>James Urquhart</dc:creator>
		
		<category><![CDATA[oldbrew]]></category>

		<category><![CDATA[javascript]]></category>

		<category><![CDATA[safari]]></category>

		<category><![CDATA[web development]]></category>

		<category><![CDATA[webkit]]></category>

		<guid isPermaLink="false">http://crm.cuppadev.co.uk/?p=141</guid>
		<description><![CDATA[Recently Safari 3.1 has been released for Mac and Windows, boasting a whole load of useful new features. One of these is support for CSS transforms &#8211; i.e. you can translate, scale, and rotate HTML elements in a web page.
CSS transforms can come in quite handy for making complex dynamic objects, without the need for [...]]]></description>
			<content:encoded><![CDATA[<p>Recently <a href="http://www.apple.com/safari">Safari 3.1</a> has been released for Mac and Windows, boasting a whole load of useful new features. One of these is support for <a href="http://webkit.org/blog/130/css-transforms/"><span class="caps">CSS</span> transforms</a> &#8211; i.e. you can translate, scale, and rotate <span class="caps">HTML</span> elements in a web page.</p>
<p><span class="caps">CSS</span> transforms can come in quite handy for making complex dynamic objects, without the need for 3rd party plugins or applets. For example i was able to make the following <span class="caps">BBC</span>-esque analogue clock, using only <span class="caps">DIV</span>&#8217;s and JavaScript :</p>
<p><strong>(Note that currently this only works in Safari 3.1)</strong><br />
<iframe width="132" height="132" frameborder="0" src ="http://www.cuppadev.co.uk/assets/test.html"></iframe></p>
<p>Yes, <span class="caps">DIV</span>&#8217;s and JavaScript. No Canvas, no Flash, no SilverLight, no Java Applets, no Plugins.</p>
<p>It makes me wonder, considering that browsers seem to be getting so powerful nowadays, should one really bother using Flash &#38; co anymore?</p>
<p class="akst_link"><a href="http://www.cuppadev.co.uk/?p=141&amp;akst_action=share-this"  title="Email, post to del.icio.us, etc." id="akst_link_141" class="akst_share_link" rel="noindex nofollow">ShareThis</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://www.cuppadev.co.uk/oldbrew/an-analogue-clock-using-safari-transforms/feed/</wfw:commentRss>
		</item>
		<item>
		<title>What not to write in haXe, Part II</title>
		<link>http://www.cuppadev.co.uk/oldbrew/what-not-to-write-in-haxe-part-ii/</link>
		<comments>http://www.cuppadev.co.uk/oldbrew/what-not-to-write-in-haxe-part-ii/#comments</comments>
		<pubDate>Fri, 07 Mar 2008 22:40:51 +0000</pubDate>
		<dc:creator>James Urquhart</dc:creator>
		
		<category><![CDATA[oldbrew]]></category>

		<category><![CDATA[flash]]></category>

		<category><![CDATA[haxe]]></category>

		<category><![CDATA[javascript]]></category>

		<category><![CDATA[web development]]></category>

		<guid isPermaLink="false">http://crm.cuppadev.co.uk/?p=140</guid>
		<description><![CDATA[I decided to have another go at writing some awe-inspiring haXe code again. This time, i picked up from where i left off &#8211; that was trying to get my infamous SCUMM interpreter working on additional platforms which haXe supports.
For reference, i concentrated on getting it to work on the neko platform.
To start off with, [...]]]></description>
			<content:encoded><![CDATA[<p>I decided to have another go at writing some awe-inspiring haXe code again. This time, i picked up from where <a href="http://www.cuppadev.co.uk/2008/01/27/what-not-to-write-in-haxe/">i left off</a> &#8211; that was trying to get my infamous <a href="http://www.cuppadev.co.uk/2007/11/22/flash-plays-scumm-take-two/"><span class="caps">SCUMM</span> interpreter</a> working on additional platforms which haXe supports.</p>
<p>For reference, i concentrated on getting it to work on the <a href="http://www.nekovm.org">neko</a> platform.</p>
<p>To start off with, i took notice of a suggestion to simplify the import statements which littered the top of the source code. So instead of this:</p>
<pre>
<code>
#if flash9
import flash.display.Bitmap;
...
#else neko
import noflash.Bitmap;
...
#end
</code>
</pre>
<p>I consolidated everything into a single file which looked like this:</p>
<pre>
<code>
#if flash9
typedef Bitmap = flash.display.Bitmap;
...
#else neko
typedef ByteArray = noflash.ByteArray;
...
#end
</code>
</pre>
<p>So when i used &#8220;import hiscumm.Common&#8221;, i could now access all of the classes listed with little fuss!</p>
<p>Another change i made was to re-factor the way resources were loaded. Before, i just used flash 9&#8217;s ByteArray. However as there is no direct equivalent of this on the neko platform, i had to implement my own.</p>
<p>Thinking more, i determined that only a relatively small portion of my code actually needed to use all of the features of ByteArray, so instead i changed all of the IO code to use the neko api&#8217;s Input &#38; Output classes.</p>
<p>Finally i made all 32bit integers Int32&#8217;s. Consequently, i had to re-implement the Int32 class for the flash platform, but all things considered it was the best solution.</p>
<h3>Problems</h3>
<p>As before, i ran into a fair share of problems. Most were minor, and others were solved when i upgraded from haXe 1.17 to 1.18. Here are some of the more notable ones i came across.</p>
<p><strong>&#8220;No arrays larger than 115 elements&#8221;</strong></p>
<p>I ended up finding a rather obvious solution to this problem which worked transparently with the other platforms. All one has to do is split up the troublesome array into several smaller arrays and then concatenate them together. e.g.</p>
<pre>
<code>
var longarray = [1,2,3].concat([4,5,6]).concat(7,8,9); // works
</code>
</pre>
<p>Problem solved.</p>
<p><strong>&#8220;Beware of classes extending Int&#8221;</strong></p>
<p>In an earlier implementation of my Int32 class, i had it extending Int. This turned out to be a fatal mistake, as when i tested out the code absolutely nothing worked.</p>
<p>The solution of course was just to not extend from Int.</p>
<p><strong>&#8220;haxe.Timer does not have a constructor&#8221;</strong></p>
<p>I kept getting a rather odd compile error. It seemed that no constructor was defined for the Timer class, which i used to run the game loop. This was very odd, as the <span class="caps">API</span> documentation didn&#8217;t state anything unusual about the Timer class on the neko platform.</p>
<p>However after checking out the code to the Timer, i soon came to realise the horrifying truth: the Timer class wasn&#8217;t implemented for the neko platform. Arrrgh! I got this far and now i&#8217;m stopped by something as simple as this?</p>
<p>Thankfully i figured out a rather obvious workaround. Instead of using the timer, i merely made a typical run-of-the-mill game loop. Problem solved.</p>
<pre>
<code>
while (true)
{
onTime();
neko.Sys.sleep(0.01);
}
</code>
</pre>
<h3>The result</h3>
<p>As the output below shows, the interpreter now actually runs on neko. Unfortunately there appears to be a rather nasty bug when decoding the room image. But then again i&#8217;ve not implemented any video code for the neko platform yet, so the usefulness of this is questionable to say the least.</p>
<pre>
<code>
$ neko test.n
NekoTest.hx:42: Engine init
SCUMM.hx:486: boot state
SPUTMResource.hx:308: Loading resource 1 from file 1, room 2 (SCRIPT)
SCUMM.hx:488: Started
SCUMM6.hx:1249: ARRAY = ""
SCUMM6.hx:1249: ARRAY = "ScummC Paused !"
SCUMM6.hx:1249: ARRAY = "Are you sure you want to quit ? (Y/N)Y"
SCUMM6.hx:1249: ARRAY = "Are you sure you want to restart ? (Y/N)Y"
SCUMM6.hx:1249: ARRAY = "Save it"
SCUMM6.hx:1249: ARRAY = "Load it"
SCUMM6.hx:1249: ARRAY = "Continue"
SCUMM6.hx:1249: ARRAY = "Cancel"
SCUMM6.hx:1249: ARRAY = "Quit"
SCUMM6.hx:1249: ARRAY = "Ok"
SCUMM6.hx:1249: ARRAY = "Saveing '%s'"
SCUMM6.hx:1249: ARRAY = "Loading '%s'"
SCUMM6.hx:1249: ARRAY = "ScummC test Menu"
SCUMM6.hx:1249: ARRAY = "Save game"
SCUMM6.hx:1249: ARRAY = "Load game"
SCUMM6.hx:1249: ARRAY = "Game NOT saved"
SCUMM6.hx:1249: ARRAY = "Game NOT loaded"
SCUMM6.hx:1249: ARRAY = "Insert disk %c"
SCUMM6.hx:1249: ARRAY = "You must enter a name"
SCUMM6.hx:1249: ARRAY = "Insert your save disk"
SCUMM6.hx:1249: ARRAY = "Failed to open %s (%c%d)"
SCUMM6.hx:1249: ARRAY = "Read error on disk %c (%c%d)"
SCUMM6.hx:788: 103, 645
SPUTMResource.hx:308: Loading resource 2 from file 1, room 2 (ROOM)
SPUTMRoom.hx:173: RMIM == RMIM
SPUTMImage.hx:109: smap size == 8
SPUTM.hx:1096: Internal exception, aborting! (state=SPUTM_RUNNING)
SPUTM.hx:1097: &gt;&gt;
</code>
</pre>
<p>As before, the hiscumm code is available for reference. Unlike last time however, the code is now hosted in a git repository so you can now see all the nitty gritty changes i have made to it. Great!</p>
<p><a href="http://projects.cuppadev.co.uk/gitweb/?p=experiments/hiscumm.git;a=summary">Click here</a> to check it out!</p>
<p class="akst_link"><a href="http://www.cuppadev.co.uk/?p=140&amp;akst_action=share-this"  title="Email, post to del.icio.us, etc." id="akst_link_140" class="akst_share_link" rel="noindex nofollow">ShareThis</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://www.cuppadev.co.uk/oldbrew/what-not-to-write-in-haxe-part-ii/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 1.172 seconds -->
