<?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>Rabidgremlin&#039;s Soapbox &#187; My Work</title>
	<atom:link href="http://blog.rabidgremlin.com/tag/my-work/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.rabidgremlin.com</link>
	<description>A little soapbox for me to stand on and rant from.</description>
	<lastBuildDate>Fri, 03 Feb 2012 10:59:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Building a modern web app, some learnings</title>
		<link>http://blog.rabidgremlin.com/2012/01/09/building-a-modern-web-app-some-learnings/</link>
		<comments>http://blog.rabidgremlin.com/2012/01/09/building-a-modern-web-app-some-learnings/#comments</comments>
		<pubDate>Mon, 09 Jan 2012 02:54:14 +0000</pubDate>
		<dc:creator>jack</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[My Work]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://blog.rabidgremlin.com/?p=938</guid>
		<description><![CDATA[I recently built a fairly rich web application from the ground up. Whilst I&#8217;ve being building web apps since the mid-nineties this little project had a different flavour to it and I thought I&#8217;d go over my learnings here. Firstly why was this project different: its a Facebook app and uses their JavaScript SDK. This [...]]]></description>
			<content:encoded><![CDATA[<p>I recently built a fairly rich web application from the ground up. Whilst I&#8217;ve being building web apps since the mid-nineties this little project had a different flavour to it and I thought I&#8217;d go over my learnings here.</p>
<p>Firstly why was this project different:</p>
<ul>
<li>its a Facebook app and uses their <a title="Link to Facbook's Javascript API" href="http://developers.facebook.com/docs/reference/javascript/" target="_blank">JavaScript SDK</a>. This means that 99% of the app runs client side with only a small bit of server side code.</li>
<li>I&#8217;m was the sole developer. Normally I work with 2 or more other developers, focus on the back-end work and leave the bulk of front-end stuff to others</li>
<li>rapid development approach. The app was built quickly with me working closely with a UX guy and a designer. Whilst the functionality was locked down early on, the user interface and interactions evolved rapidly and iteratively.</li>
</ul>
<p><strong>First observation: its so easy</strong><br />
OK that is slightly facetious, but modern CSS and JavaScript frameworks mean that you don&#8217;t have to be guru to build nice looking, smooth functioning, cross browser applications.</p>
<p>For this application I used the <a title="Link to Twitter bootstrap site" href="http://twitter.github.com/bootstrap/" target="_blank">Twitter Bootstrap CSS framework</a> and the <a title="Link to jQuery site" href="http://jquery.com/" target="_blank">jQuery Javascript framework</a>.</p>
<p><strong>Get a designer</strong><br />
Yes I know I just said that it&#8217;s easy and you don&#8217;t need to be a guru to create nice looking apps BUT whilst Twitter Bootstrap encapsulates a great design, you are still going to want to customise it.</p>
<p>Designers have the knack of adding the odd image, drop shadow or bit of whitespace that can make a perfectly ok looking web page just suddenly pop. Not to mention the selection of color a palettes and general pixel pushing.</p>
<p>On a similar front having a UX guy on hand is invaluable. If you don&#8217;t have one, then read Steve Krug&#8217;s Don&#8217;t Make Me Think book and then go and find yourself a UX guy  :) 
<div class="amtap-item" lang="en" xml:lang="en"><a href="http://www.amazon.com/Dont-Make-Me-Think-Usability/dp/0321344758%3FSubscriptionId%3D1B5D3ZDEP7KSZ00JPHR2%26tag%3Drabidssoapb-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D0321344758"><img src="http://ecx.images-amazon.com/images/I/51Qnk8fkFPL._SL110_.jpg" width="85" height="110" alt=""/></a><br />
<h3><a href="http://www.amazon.com/Dont-Make-Me-Think-Usability/dp/0321344758%3FSubscriptionId%3D1B5D3ZDEP7KSZ00JPHR2%26tag%3Drabidssoapb-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D0321344758">Don&#8217;t Make Me Think</a></h3>
<p class="author">Steve Krug.					New Riders Press 2005, 					Paperback,				216 pages,				&#36;21.98</p>
</div>
<p><strong>Facebook</strong></p>
<p>The Facebook API is now pretty mature and is very stable (compared to the last time I used it a few years ago).</p>
<p>One annoying things is that the calls that you make to explore the user&#8217;s social graph (via the <em>FB.api</em> function) are very low-level and the data is returned in a callback. This can make your code very messy, since you often have to chain your app&#8217;s logic in the callback function, if your app needs data before it can proceed. For example:</p>
<pre>FB.api('/me', function(response) {
  // do something with response here
  // make next api call (with nested callback) here
});</pre>
<p>Additionally if you need to, for instance, retrieve friend profile data you can land up making hundreds of calls:</p>
<pre>// grab all my friends
FB.api('/me/friends', function(response) {

    $.each(response.data, function(index, value) {
       // get profile for each friend (this triggers another HTTPS call)
       FB.api('/' + value.id , function(profile) {
         // do something with profile data
       });
    });

});</pre>
<p>Luckily there is a better way, the <em>FB.query</em> and <em>FB.waitFor</em> functions. These let you run queries against a user&#8217;s data using a SQL like language (<a title="Link to FQL reference" href="http://developers.facebook.com/docs/reference/fql/" target="_blank">FQL</a>) and then block waiting for the response. This greatly reduces the time it takes to retrieve data and keeps your apps logic a bit simpler:</p>
<pre>var query = FB.Data.query('SELECT uid,name,current_location FROM user WHERE uid IN (SELECT uid1 FROM friend WHERE uid2=me())');
query.wait(function(rows) {
    $.each(rows, function(index, value) {
       // do something with friend data here
    });
});
// rest of app logic continues here</pre>
<p><strong>Firebug</strong><br />
<a title="Link to Firebug site" href="http://getfirebug.com/" target="_blank"> Get it</a> (hopefully this isn&#8217;t news to you). This tool is invaluable for web development. It allows you to debug JavaScript, view the DOM, check network traffic and tweak CSS in browser.</p>
<p>It&#8217;s also a good idea to test you app in different browsers as you go. During this app&#8217;s build I had FireFox, Chrome and IE 8 all running so I could see that everything was working. Luckily by using Twitter Bootstrap and jQuery I had no cross-browser issues at all other then the fact that IE didn&#8217;t get nice round corners.</p>
<p><strong>Make sure it validates</strong><br />
The W3C provides a tool for validating web pages. It&#8217;s always good to be sure that your pages validate, not just because it is good practice but because it stops browsers from entering their &#8220;quirks mode&#8221; which often causes odd and quirky behavior.</p>
<p>The <a title="Link to Web Developer plugin" href="https://addons.mozilla.org/en-US/firefox/addon/web-developer/" target="_blank">Web Developer plugin for Firefox</a> provides a handle shortcut for submitting your local HTML to the W3C validator.</p>
<p>In my case everything validated except for the Facebook namespace declaration and the custom Facebook tags such as <em>&lt;fb:like&gt;</em>. Whilst there are ways around this I decided on not been too purist.</p>
<p><strong>HTML5</strong><br />
Try use HTML5 for your app. It works very nicely. For IE browsers (before 9.0) use the <a title="Link to HTML5 Shim site" href="http://code.google.com/p/html5shim/" target="_blank">HTML5 shim</a> to get some HTML5 support.</p>
<p>However Twitter Bootstrap does not support IE6, so I used this trick to make any IE6 browsers redirect the user to a &#8220;browser unsupported&#8221; page with tips on how to upgrade their browser. In the <em>&lt;head&gt;</em>section add the following comment:</p>
<pre> &lt;!--[if lt IE 7]&gt;&lt;script type="text/javascript"&gt;window.location = 'notsupported.html';&lt;/script&gt;&lt;![endif]--&gt;</pre>
<p>This uses the <a title="Llink to conditional comments documentation" href="http://msdn.microsoft.com/en-us/library/ms537512(v=vs.85).aspx" target="_blank">conditional comments feature</a> of Internet Explorer to redirect IE6 browsers to the <em>notsupported.html</em> page, other browsers will simply treat it as a HTML comment.</p>
<p><strong>Improving load times</strong><br />
It is best practice to load all the CSS files in the <em>&lt;head&gt;</em> section of the page and all the JavaScript files at the end of the page (just before the <em>&lt;/body</em>&gt; tag). This makes the page feel much more responsive as the browser can start to render and layout the page before everything is loaded.</p>
<p>Having said that, a complex web app tends to pull in a lot of CSS and JavaScript files and minimizing the number of <em>objects</em> that are fetched from the server is a key factor in having a speedy app.</p>
<p>Ideally you only want your app to load a single CSS file and a single Javascript file. To achieve this in my app I concatenate the CSS files and JavaScript files (in the correct order) and then compress them using <a title="Link to YUI compressor site" href="http://developer.yahoo.com/yui/compressor/" target="_blank">Yahoo&#8217;s YUI compressor</a>.</p>
<p>Since I wanted this to be a repeatable process I used <a title="Link to Apache Ant website" href="http://ant.apache.org/" target="_blank">Ant</a> to create a build script to do this. Firstly the concatenation:</p>
<pre>&lt;concat destfile="${tmp.dir}/all.js"&gt;
  &lt;fileset file="${www.dir}/jquery.min.js" /&gt;
  &lt;fileset file="${www.dir}/jquery-ui-1.8.16.custom.min.js" /&gt;
  &lt;fileset file="${www.dir}/jquery.masonry.min.js" /&gt;
  &lt;fileset file="${www.dir}/bootstrap-modal.js" /&gt;
  &lt;fileset file="${www.dir}/bootstrap-twipsy.js" /&gt;
  &lt;fileset file="${www.dir}/bootstrap-alerts.js" /&gt;
  &lt;fileset file="${www.dir}/app.js" /&gt;
&lt;/concat&gt;</pre>
<p>And then the compression:</p>
<pre>&lt;exec executable="java"&gt;
  &lt;arg value="-jar"/&gt;
  &lt;arg value="yuicompressor-2.4.7.jar"/&gt;
  &lt;arg value="${tmp.dir}/all.js"/&gt;
  &lt;arg value="-o"/&gt;
  &lt;arg value="${tmp.dir}/all.js"/&gt;
&lt;/exec&gt;</pre>
<p>Now during development you don&#8217;t want to be dealing with concatenated and compressed files so my PHP pages contain a snippet like this:</p>
<pre>&lt;?php
if ($config['mode'] != 'prod')
{
?&gt;
    &lt;script src="jquery.min.js"&gt;&lt;/script&gt;
    &lt;script src="jquery-ui-1.8.16.custom.min.js"&gt;&lt;/script&gt;
    &lt;script src="jquery.masonry.min.js"&gt;&lt;/script&gt;
    &lt;script src="bootstrap-modal.js"&gt;&lt;/script&gt;
    &lt;script src="bootstrap-twipsy.js"&gt;&lt;/script&gt;
    &lt;script src="bootstrap-alerts.js"&gt;&lt;/script&gt;
    &lt;script src="app.js"&gt;&lt;/script&gt;
&lt;?php
}
else
{
?&gt;
    &lt;script src="all.js?@buildtimestamp@"&lt;/script&gt;
&lt;?php
}
?&gt;
&lt;/body&gt;</pre>
<p>With <em>mode</em> getting set in my app&#8217;s config file.</p>
<p>Of course there are a ton of other things you can do to tune your app. Get the <a title="Link to YSlow Firefox addon" href="https://addons.mozilla.org/en-US/firefox/addon/yslow/" target="_blank">YSlow addon for Firebug</a> and run the report on your pages to see what can be done.</p>
<p><strong>Cache busting</strong><br />
Ant can also very helpfully update parts of your files whilst copying them around. This can be used to <em>burn in</em> all sorts of things, like version numbers and build timestamps. It can also be used create a effective cache buster when a new version of your app is released&#8230;.</p>
<p>Firstly you need to set up an Ant property with an appropriate value:</p>
<pre>&lt;tstamp&gt;
  &lt;format property="buildtimestamp" pattern="yyyyMMddHHmmssSSS" locale="en,UK"/&gt;
&lt;/tstamp&gt;</pre>
<p>Then in your HTML you can append <em>@buildtimestamp@</em> following to file references:</p>
<pre>&lt;link rel="stylesheet" href="all.css?@buildtimestamp@"/&gt;
...
&lt;script src="all.js?@buildtimestamp@"&gt;&lt;/script&gt;</pre>
<p>Then lastly apply a filter in Ant when you are copying the files around:</p>
<pre>&lt;copy todir="${tmp.dir}"&gt;
  &lt;fileset dir="${www.dir}"&gt;
    &lt;include name="**/*.php" /&gt;
  &lt;/fileset&gt;
  &lt;filterset&gt;
    &lt;filter token="mode" value="prod" /&gt;
    &lt;filter token="release" value="${rel}" /&gt;
    &lt;filter token="buildtimestamp" value="${buildtimestamp}" /&gt;
    &lt;filter token="builddate" value="${builddate}" /&gt;
  &lt;/filterset&gt;
&lt;/copy&gt;</pre>
<p><strong>PHP config file</strong></p>
<p>To keep things nice and clean, I created a <em>config.php</em> file looking like this:</p>
<pre>&lt;?php if ( ! defined('CONFPATH')) exit('No direct script access allowed');

// set this to '@' + 'mode' + '@' during development so that style sheets and javascript files are individually included (see index.php)
// ant build scripts will replace this at build time
$config['mode'] = '@mode@'

?&gt;</pre>
<p>Then in my other PHP files I pulled in the config file using:</p>
<pre>&lt;?php
   define('CONFPATH','config.php');
   require_once CONFPATH;
?&gt;</pre>
<p>As you can see from the comments and the Ant snippets above, I overwrite the <em>mode</em> value with <em>&#8216;prod&#8217;</em> during my Ant build process to ensure that my compressed .js and .css files are used.</p>
<p><strong>Miscellaneous files</strong><br />
Finally make sure you add a <a title="Link to Wikipedia article on favicon" href="http://en.wikipedia.org/wiki/Favicon" target="_blank">favicon</a> and a <a title="Link to robotstxt.org" href="http://www.robotstxt.org/" target="_blank">robots.txt</a> to avoid annoying 404 webserver logs. For fun why not add a <a title="Link to humanstxt.org" href="http://humanstxt.org/" target="_blank">humans.txt</a> too.</p>
<p><strong>Summary</strong></p>
<p>Well that pretty much covers it. Hopefully there are one or two new  ideas here that you can use in your apps. Feel free to post any questions in the comments section below.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.rabidgremlin.com/2012/01/09/building-a-modern-web-app-some-learnings/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Ask Gremlin&#8230;</title>
		<link>http://blog.rabidgremlin.com/2011/08/15/ask-gremlin/</link>
		<comments>http://blog.rabidgremlin.com/2011/08/15/ask-gremlin/#comments</comments>
		<pubDate>Sun, 14 Aug 2011 21:23:23 +0000</pubDate>
		<dc:creator>jack</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[My Work]]></category>
		<category><![CDATA[QR]]></category>

		<guid isPermaLink="false">http://blog.rabidgremlin.com/?p=877</guid>
		<description><![CDATA[I&#8217;ve received a couple of interesting emails recently from people asking for advice. I figured my answers might be of use to others so here are the (redacted) emails: Android App The email: I am wanting a Android Application designed for me. I am wanting to know a little more about Android Applications and how [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve received a couple of interesting emails recently from people asking for advice. I figured my answers might be of use to others so here are the (redacted) emails:</p>
<p><strong>Android App</strong></p>
<p>The email:</p>
<blockquote><p>I am wanting a Android Application designed for me. I am wanting to know a little more about Android Applications and how to go about getting one designed for me. How do the laws work around making a app and around how much would someone have to pay to get one designed? If a Android developer was to make a app for me would the rights of that app be mine or the creator? Sorry for the inconvenience I&#8217;m really new to this. Any information would be appreciated.</p></blockquote>
<p>My response:</p>
<blockquote><p>Hi ****,</p>
<p>A few years ago there was a move in NZ to better clarify ownership of intellectual property and copyright for &#8220;commissioned works&#8221; which includes software developement. However this amendment did not pass see: <a href="http://www.med.govt.nz/templates/ContentTopicSummary____18836.aspx" target="_blank">http://www.med.govt.nz/templates/ContentTopicSummary____18836.aspx</a></p>
<p>Although there are some existing laws that cover this area, what you want to ensure is that there is a clause in any contracts you sign (and you should ensure you have a contract with anyone who is written apps for you) that you own ALL the IP and copyrights on the work that is produced.</p>
<p>In terms of how much will it cost, the answer is it depends on how complicated the app is :)</p>
<p>Basically there are two general models followed for software development: &#8220;Time and Materials&#8221; (T&amp;M)  or Fixed Price.</p>
<p>With T&amp;M you generally pay the developer an hourly rate. For software development you can pay anything from $25/hr through to $150/hr. Typically the more senior or skilled the person, the higher their rates. Of course paying more doesn&#8217;t guarantee quality or success.</p>
<p>With Fixed price the price is determined ahead of time and that is the amount you will pay for the completed software. Whilst this seems a &#8220;safe&#8221; option, software development is often complicated and unexpected things turn up all the time, as such Fixed Priced contracts are often padded with a &#8220;contingency&#8221; to ensure that the developer makes money. If the project looks risky the contingency can be as high as 50% which means you would be paying far more for the work then it is worth. The other issue with fixed price contracts is that they often have a &#8220;change request&#8221; (CR) process which allows the developer to make additional charges for work (eg features of the app) that were not covered by the original specification (or &#8220;scope&#8221;) of the project. CR processes are often confusing &amp; abused and you land up paying way more then you intended to in the end.</p>
<p>The best way to &#8220;protect&#8221; yourself against unforeseen costs is to be very, very, very clear on what you want to have built. In software development this is often called &#8220;scope&#8221; or the specifications of the project.</p>
<p>For an Android app I would suggest that you create what is called a wireframe or mockup of the app. You can use a tool such as <a href="http://balsamiq.com/" target="_blank">http://balsamiq.com/</a> or <a href="http://yeblon.com/androidmockup/" target="_blank">http://yeblon.com/androidmockup/</a> or even paper &amp; pen and sketch out each of the screens of the app, add notes about what each screen should do and how you navigate from one screen to another.</p>
<p>Once you have your wireframe sorted you can then shop around and get different quotes from different developers to find a price and developer you like. If you think your idea is particularly unique, you might want people to sign a non-disclosure  aggreement (NDA) before you show them your wireframes or talk to them about the app.</p>
<p>Lastly you might want to try and write the software yourself ! Have a look at <a href="http://appinventor.googlelabs.com/about/" target="_blank">http://appinventor.googlelabs.com/about/</a> as a &#8220;gently&#8221; intro to Android development. It will let you create a working prototype that you can actually run on your phone :)</p>
<p>Hopefully the above has been helpful.</p>
<p>Cheers</p></blockquote>
<p><strong>QR code generation</strong></p>
<p>The email:</p>
<blockquote><p>I saw your comment on the hack-a-day QRcode post.  You seem to have quite a bit of experience in QRcodes and other scanning apps.  One thing that I have been looking for (and maybe you might be able to help) is a program that creates unique QRcodes from list of URLs.  I&#8217;m helping out a non-profit ****** with their website and I was trying to find an easy solution to automatically create printable QRcodes for all of the ****** at once.  This way each **** has their own QR code to an info page on a WordPress blog.  It could be done manually, but the **** change every two weeks! :)</p>
<p>A bonus would be automatically taking Bitly URLs and turning them into a bunch of printable QRcodes.</p>
<p>Just thinking</p></blockquote>
<p>My response</p>
<blockquote><p>Hi *****,</p>
<p>The Google Charts API can be used to quickly create QR codes. Check out: <a href="http://code.google.com/apis/chart/infographics/docs/overview.html" target="_blank">http://code.google.com/apis/<wbr>chart/infographics/docs/<wbr>overview.html</wbr></wbr></a> and <a href="http://code.google.com/apis/chart/infographics/docs/qr_codes.html" target="_blank">http://code.google.com/apis/<wbr>chart/infographics/docs/qr_<wbr>codes.html</wbr></wbr></a></p>
<p>So the following URL: <a href="https://chart.googleapis.com/chart?chs=150x150&amp;cht=qr&amp;chl=http://blog.rabidgremlin.com" target="_blank">https://chart.googleapis.com/<wbr>chart?chs=150&#215;150&amp;cht=qr&amp;chl=<wbr>http://blog.rabidgremlin.com</wbr></wbr></a>  would create a 150px by 150px .png QR code containing a URL to my blog (<a href="../" target="_blank">http://blog.rabidgremlin.com</a>)</p>
<p>You could probably use a tool such as Curl or WGET to script the fetching of the bar codes.</p>
<p>Cheers</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://blog.rabidgremlin.com/2011/08/15/ask-gremlin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What I did last week &#8211; 15 Feb 2011</title>
		<link>http://blog.rabidgremlin.com/2011/02/09/what-i-did-last-week-15-feb-2011/</link>
		<comments>http://blog.rabidgremlin.com/2011/02/09/what-i-did-last-week-15-feb-2011/#comments</comments>
		<pubDate>Wed, 09 Feb 2011 00:16:39 +0000</pubDate>
		<dc:creator>jack</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[3D]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Kinect]]></category>
		<category><![CDATA[My Work]]></category>
		<category><![CDATA[Unity]]></category>

		<guid isPermaLink="false">http://blog.rabidgremlin.com/?p=841</guid>
		<description><![CDATA[Actually it&#8217;s more what I did last month. RC simulator A mate of mine bought himself a swish RC quad-copter. As part of the package he bought Phoenix RC. It is a simulator that allows you to plug your RC controller into a PC and you can then practice flying (and crashing) virtual RC models [...]]]></description>
			<content:encoded><![CDATA[<p>Actually it&#8217;s more what I did last month.</p>
<p><strong>RC simulator</strong><br />
A mate of mine bought himself a swish RC quad-copter. As part of the package he bought <a title="Link to RC simulator" href="http://www.phoenix-simv3.com/default.asp" target="_self">Phoenix RC</a>. It is a simulator that allows you to plug your RC controller into a PC and you can then practice flying (and crashing) virtual RC models before tackling the real ones. Very useful and it clearly proved that I should never attempt to fly a real RC helicopter.</p>
<p><strong>Kinect</strong><br />
Believe it or not, I&#8217;m actually getting paid to hack a Kinect. Im using the <a title="Link to OpenNI site" href="http://www.openni.org/" target="_blank">OpenNI</a> framework so hacking really consists of installing the software and then using a nice high-level framework that does all the hard work for you. I&#8217;ve been very impressed with the skeleton tracking.  I&#8217;ve been able to simultaneously track 3 people with full skeletons without any issues.  This is the <a title="Link to install guide for OpenNI and Kinect drivers" href="http://pushypanda.blogspot.com/2011/01/kinecting.html" target="_blank">guide I used to install the base software</a>. You should also check out the <a title="Link to Kinect/Ogre demo" href="https://github.com/OpenNI/SampleAppSinbad" target="_blank">Ogre</a> and <a title="Link to Unity/Kinect demo" href="https://github.com/OpenNI/UnityWrapper" target="_blank">Unity</a> demos.</p>
<p><strong>Unity</strong><br />
Whilst tinkering with the Kinect I ran through the Unity 3D <a title="Link to Unity platformer tutorial" href="http://unity3d.com/support/resources/tutorials/3d-platform-game" target="_blank">platformer tutorial</a>. <a title="Link to Unity site" href="http://unity3d.com/" target="_blank">Unity</a> is very impressive. If you want to create a 3d game I&#8217;d start here.  The basic version is free. The <a title="Link to unity platform support info" href="http://unity3d.com/unity/publishing/" target="_blank">cross platform</a> nature of the engine is impressive to.</p>
<p><strong>Auckland Buses app</strong><br />
I finally got around to releasing my <a title="Link to Auckland Busses app on Android market" href="https://market.android.com/details?id=com.rabidgremlin.aucklandbuses" target="_blank">Auckland Buses app for Android</a>. It only took a few hours to put together.  I&#8217;m experimenting with an ad supported model. The app has about 225 users, averages around 25 impressions a day. So far I&#8217;ve made 49c so not really a money maker :) What is interesting is the fairly poor fill rates I get some days.  If you had marketing dollars to spend,  mobile ads might be the way to go as not many people seem to be tapping them.</p>
<p>That&#8217;s about it&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.rabidgremlin.com/2011/02/09/what-i-did-last-week-15-feb-2011/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>MeterRec released</title>
		<link>http://blog.rabidgremlin.com/2010/10/17/meterrec-released/</link>
		<comments>http://blog.rabidgremlin.com/2010/10/17/meterrec-released/#comments</comments>
		<pubDate>Sun, 17 Oct 2010 02:32:23 +0000</pubDate>
		<dc:creator>jack</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[MeterRec]]></category>
		<category><![CDATA[My Work]]></category>

		<guid isPermaLink="false">http://blog.rabidgremlin.com/?p=768</guid>
		<description><![CDATA[I&#8217;ve just released my first purchasable app on the Android market. The app is called MeterRec and it allows you to easily record readings for gas, water and power or other similar meters. These readings can then be exported as a .csv file for manipulation and graphing in applications such as Excel. This app is [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-770" title="MeterRec Icon" src="http://blog.rabidgremlin.com/wp-content/uploads/2010/10/MeterRec.png" alt="Icon for MeterRec" width="128" height="128" /><img class="alignright size-full wp-image-771" title="QR code for MeterRec market link" src="http://blog.rabidgremlin.com/wp-content/uploads/2010/10/meterrec_qr.png" alt="" width="120" height="120" />I&#8217;ve just released my first purchasable app on the Android market.</p>
<p>The app is called MeterRec and it allows you to easily record readings for gas, water and power or other similar meters.</p>
<p>These readings can then be exported as a .csv file for manipulation and graphing in applications such as Excel.</p>
<p>This app is ideal for property managers, flat mates or those (like me) who just want to keep tabs on what they are using.</p>
<p>If you have an Android phone then point your barcode scanner at the QR code above, to get a link to the app in the market. For those of you without an Android device, here are a couple of screenshots:</p>

<a href='http://blog.rabidgremlin.com/2010/10/17/meterrec-released/meters/' title='The meters screen'><img width="100" height="150" src="http://blog.rabidgremlin.com/wp-content/uploads/2010/10/meters.png" class="attachment-thumbnail" alt="The meters screen" title="The meters screen" /></a>
<a href='http://blog.rabidgremlin.com/2010/10/17/meterrec-released/readings/' title='The readings screen'><img width="100" height="150" src="http://blog.rabidgremlin.com/wp-content/uploads/2010/10/readings.png" class="attachment-thumbnail" alt="The readings screen" title="The readings screen" /></a>

]]></content:encoded>
			<wfw:commentRss>http://blog.rabidgremlin.com/2010/10/17/meterrec-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Playlist dumper for iTunes</title>
		<link>http://blog.rabidgremlin.com/2010/07/13/playlist-dumper-for-itunes/</link>
		<comments>http://blog.rabidgremlin.com/2010/07/13/playlist-dumper-for-itunes/#comments</comments>
		<pubDate>Tue, 13 Jul 2010 09:44:14 +0000</pubDate>
		<dc:creator>jack</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[iTunes]]></category>
		<category><![CDATA[My Work]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://blog.rabidgremlin.com/?p=755</guid>
		<description><![CDATA[I&#8217;ve been meaning to write this bit of software for a while now, its a simple app that dumps out all your playlists in iTunes into .m3u playlist files. I use it to generate playlists that my HTPC (running Boxee) can play. It&#8217;s a .NET app. You can download it here: PlaylistDumper_v101.zip If the &#8220;dump [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been meaning to write this bit of software for a while now, its a simple app that dumps out all your playlists in iTunes into .m3u playlist files.</p>
<p>I use it to generate playlists that my HTPC (running Boxee) can play.</p>
<p>It&#8217;s a .NET app. You can download it here: <a title="Download link for Playlist Dumper" href="http://www.rabidgremlin.com/software/PlaylistDumper_v101.zip" target="_blank">PlaylistDumper_v101.zip</a></p>
<p>If the &#8220;dump folder&#8221; is the root of your music library then the .m3u  file will contain relative paths which is useful for playing across  network shares.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.rabidgremlin.com/2010/07/13/playlist-dumper-for-itunes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Jumbler, my first flash game</title>
		<link>http://blog.rabidgremlin.com/2010/06/08/jumbler-my-first-flash-game/</link>
		<comments>http://blog.rabidgremlin.com/2010/06/08/jumbler-my-first-flash-game/#comments</comments>
		<pubDate>Tue, 08 Jun 2010 02:32:52 +0000</pubDate>
		<dc:creator>jack</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Games]]></category>
		<category><![CDATA[My Work]]></category>

		<guid isPermaLink="false">http://blog.rabidgremlin.com/?p=735</guid>
		<description><![CDATA[Over the weekend I published my first flash game, it&#8217;s called Jumbler. There is not too much to the game, to be honest. It was really more the result of me tinkering with the Flixel game framework to see what it could do; rather then my idea of a &#8220;blow your mind, addictive game&#8221;. I&#8217;m [...]]]></description>
			<content:encoded><![CDATA[<p>Over the weekend I published my first flash game, it&#8217;s called <a title="Link to Jumbler" href="http://www.rabidgremlin.com/jumbler/" target="_blank">Jumbler</a>. There is not too much to the game, to be honest. It was really more the result of me tinkering with the <a title="Link to Flixel" href="http://flixel.org/" target="_blank">Flixel</a> game framework to see what it could do; rather then my idea of a &#8220;blow your mind, addictive game&#8221;.</p>
<p>I&#8217;m must say that I&#8217;m pretty impressed with Flixel. Jumbler took less then 10 hours to put together and the bulk of the time was spent on the theme and graphics (such as they are). The initial game code (with box only graphics) took only about 3 hours.</p>
<p>The other cool thing was that this was built with entirely free tools and assets:</p>
<ul>
<li><a title="Link to Flixel" href="http://flixel.org/" target="_blank">Flixel</a> &#8211; is a really great AS3 game framework. It does a fantastic job of turning flash into a game engine and letting you focus on writing a game, not on fighting with Flash.</li>
<li><a title="Link to Flex SDK" href="http://opensource.adobe.com/wiki/display/flexsdk/Flex+SDK" target="_blank">Flex SDK</a> &#8211; The flash compiler and tools given away by Adobe.</li>
<li><a title="Link to Flashdevelop site" href="http://www.flashdevelop.org/" target="_blank">Flashdevelop</a> &#8211; An open source Flash IDE. Syntax completion is a dream.</li>
<li><a title="Link to Inkscape" href="http://www.inkscape.org/" target="_blank">Inkscape</a> &#8211; An open source vector editor kinda of like Illustrator. It uses <a title="Link to SVG article on wikipedia" href="http://en.wikipedia.org/wiki/Scalable_Vector_Graphics" target="_blank">SVG</a> as its native format and has excellent .png export support. All the graphics in Jumbler are drawn with Inkscape which made it really easy to resize, edit and evolve them on the fly.</li>
<li><a title="Link to Flash Kit Sound FX" href="http://www.flashkit.com/soundfx/" target="_blank">Flash Kit</a> &#8211; Excellent resource for free sound effects.</li>
<li><a title="Link to dafont.com" href="http://www.dafont.com/" target="_blank">dafont.com</a> &#8211; Excellent resource for free fonts. This is where I found the <a title="Link to Boingo font" href="http://www.dafont.com/boingo.font" target="_blank">Boingo font</a> that I used to drive the look of jumbler.</li>
</ul>
<p>If you are interested in getting started with Flixel, then check out these links. The first is a basic <a title="Link to Flixel hello world tutorial" href="http://wiki.github.com/AdamAtomic/flixel/hello-world-flashdevelop" target="_blank">&#8220;Hello World&#8221; tutorial</a>, which shows you how to get your environment set-up and write a simple Flixel app. The second shows you all the key concepts you need to understand to build a game in Flixel, by <a title="Link to Defender in Flixel tutorial." href="http://www.creativeapplications.net/flash/flixel-2-tutorial-flash-tutorials-games/" target="_blank">creating a simple Defender style game</a>.</p>
<p>I&#8217;m thinking of porting my half-finished &#8220;nac&#8221; game over to Flixel and integrating <a title="Link to Box2D for Flash site" href="http://box2dflash.sourceforge.net/" target="_blank">Box2D</a> for the physics. It should be interesting.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.rabidgremlin.com/2010/06/08/jumbler-my-first-flash-game/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>The viral spread of my privacy check app for Facebook</title>
		<link>http://blog.rabidgremlin.com/2010/06/01/the-viral-spread-of-my-privacy-check-app-for-facebook/</link>
		<comments>http://blog.rabidgremlin.com/2010/06/01/the-viral-spread-of-my-privacy-check-app-for-facebook/#comments</comments>
		<pubDate>Tue, 01 Jun 2010 08:18:17 +0000</pubDate>
		<dc:creator>jack</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[My Work]]></category>
		<category><![CDATA[Privacy]]></category>

		<guid isPermaLink="false">http://blog.rabidgremlin.com/?p=699</guid>
		<description><![CDATA[Last week, interested by the noise on the interwebs about Facebook and privacy, I put together a small app using Facebook&#8217;s API that shows exactly what information you are giving away to Facebook enabled sites. Thinking that others might be interested, I tweeted a link  and shared the app with my friends in Facebook. Now [...]]]></description>
			<content:encoded><![CDATA[<p>Last week, interested by the noise on the interwebs about Facebook and privacy, I put together a <a title="Link to Privacy Check app" href="http://www.rabidgremlin.com/fbprivacy" target="_blank">small app</a> using Facebook&#8217;s API that shows exactly what information you are giving away to Facebook enabled sites.</p>
<p>Thinking that others might be interested, I tweeted a link  and shared the app with my friends in Facebook. Now I don&#8217;t have a large social network about 220 followers on Twitter and 125 friends on Facebook, but the &#8220;like&#8221; counter for the app quickly started to grow first 10, then 20 and after a day close to 100!</p>
<p>A couple of days later, somewhat ashamed by how ugly the app looked, I did some work to pretty it up and I added a &#8220;privacy score&#8221;. I then retweeted the link, did a Facebook status update and went to bed.</p>
<p>The next morning (17 May), I was very surprised to see that I now had 200 &#8220;likes&#8221; and over 1500 page views. Over the next few days things started to  grow rapidly. I watched anxiously, concerned that my tiny little web server was going to explode&#8230;</p>
<p>I also started to wonder how people were actually out finding the the app. Here is what I can surmise from looking at my site logs and analytics.</p>
<p><strong>Page hits and visitors</strong><br />
First off here are the graphs showing the page hits (dark blue) and unique visits (light blue)  per day:</p>
<p><img class="aligncenter size-full wp-image-700" title="Privacy Check pages views" src="http://blog.rabidgremlin.com/wp-content/uploads/2010/05/chart.png" alt="" width="600" height="200" /></p>
<p>As you can see the app was at peak usage on the 18th May. To date the app has had 1936 &#8220;likes&#8221; and 28845 page views.</p>
<p><strong>Where did all the traffic come from?</strong></p>
<p>The bulk of the traffic (64.55%) came from referring sites, 34.05% came from direct traffic and a measly 1.4% of the traffic was from search engines.</p>
<p><img class="aligncenter size-full wp-image-720" title="Sources of Traffic" src="http://blog.rabidgremlin.com/wp-content/uploads/2010/05/source_chart.png" alt="" width="400" height="218" /></p>
<p>Of course a large percentage of the referring traffic was from Facebook, as my app allowed people to post their &#8220;privacy score&#8221; for all their friends to see. The post included a handy link back to my app so that others could then easily check their score.</p>
<p><img class="aligncenter size-full wp-image-722" title="Privacy Score Post" src="http://blog.rabidgremlin.com/wp-content/uploads/2010/05/privacy_score_post.png" alt="" width="502" height="92" /></p>
<p>A total of 11.8% of the total visitors to the app came from Facebook. The other referring traffic was from the large number of blogs and websites that posted articles about the Facbook Privacy issue with links back to my app. In fact there were over 100 sites that did link back to the app which is pretty staggering. See the end of this post for a list of some of them.</p>
<p>The direct traffic figure of 34.05% is interesting as it is highly unlikely that anyone was typing the URL to the app (<a title="Link to Privacy Check app" href="http://www.rabidgremlin.com/fbprivacy" target="_blank">http://www.rabidgremlin.com/fbprivacy</a>) directly into their browser. I can only guess that that these visits must have come from people clicking links in various (non-browser based) twitter, RSS feed and (perhaps) mail clients.</p>
<p>Looking at the data I would suggest that over 45% of the total traffic could be attributed to social networking ! (the 11.8% from Facebook and the 34.05% direct traffic).</p>
<p><strong>Riding the hype curve</strong><br />
I suspect that the primary reason that the app became so popular so quickly was it appeared right when there was the most Internet buzz about Facebook privacy.You can clearly see the strong build up and the equally sharp drop off in traffic as the Internet became enamoured with some other topic.</p>
<p><strong>Did I WIN?</strong></p>
<p>Now if my app was a commercial product then I would say NO. Around about the same time as my app went live so did several others such as: <a title="Link to youropenbook.org" href="http://youropenbook.org/" target="_blank">youropenbook.org</a>,  <a title="Link to reclaimprivacy.org" href="http://www.reclaimprivacy.org/" target="_blank">reclaimprivacy.org</a> and  <a title="Link to Saveface" href="http://www3.untangle.com/saveface" target="_blank">Saveface</a>.</p>
<p>I would say that reclaimprivacy.org would be a direct &#8220;competitor&#8221;. If you take a look at their site they have over  238000 shares and over $3000 in donations. So around 12100% more shares/likes and roughly 60000% more in donations!  BTW I must give a shout-out to Brian for his donation (and yes it is enough to buy a beer in New Zealand, thanks).</p>
<p>Clearly reclaimprivacy.org would be destroying me if we were competing businesses :)</p>
<p>So why did they do so much better?</p>
<p>I don&#8217;t believe that it is the &#8220;product&#8221;, several sites have mentioned that my app provides the most in-depth information.</p>
<p>I could see that perhaps it is because their app looks better but no one mentioned that my app was ugly or unusable.</p>
<p>I suspect that the answer is that of trust, reclaimprivacy.org has a nice domain name, the author released the source code and perhaps more importantly the author (<a title="Link to Matt's twitter feed" href="http://twitter.com/mjpizz" target="_blank">Matt Pizzimenti</a>) is readily identifiable. On the other hand, rabidgremlin.com sounds a bit suspect and I go out of my way to keep my identity secret (not that it would be hard to figure out who I am).</p>
<p>My suspicion is borne out by some of the descriptions of my app, such as this one:</p>
<blockquote><p>The application is built by rabidgremlin, who doesn’t tell us anything  about himself (I’m making an assumption here) and claims New Zealand as  his home on his Twitter page.  Can you trust the site?</p></blockquote>
<p>I guess I&#8217;ll need to take this into account for future projects :)</p>
<p><strong>Sources of traffic</strong></p>
<p>The following list shows some the sources of traffic to my app:<br />
<a href="http://sikkerhed.tdc.dk/publish.php?id=24892" target="_blank">http://sikkerhed.tdc.dk/publish.php?id=24892</a><br />
<a href="http://youropenbook.org/about.html" target="_blank">http://youropenbook.org/about.html</a><br />
<a href="http://www.f-secure.com/weblog/archives/00001952.html" target="_blank">http://www.f-secure.com/weblog/archives/00001952.h</a><br />
<a href="http://willmoffat.github.com/FacebookSearch/about.html" target="_blank"></a><a href="http://www.net-security.org/article.php?id=1439" target="_blank">http://www.net-security.org/article.php?id=1439</a><br />
<a href="http://www.f-secure.com/weblog/" target="_blank"></a><a href="http://www.hwsw.hu/hirek/44627/facebook-adatvedelem-szemelyisegi-jog-kozossegi-web-privat-szfera.html" target="_blank">http://www.hwsw.hu/hirek/44627/facebook-adatvedele</a><br />
<a href="http://www.google.com/reader/view/" target="_blank"></a><a href="http://www.infospyware.com/blog/facebook-privacy-check/" target="_blank">http://www.infospyware.com/blog/facebook-privacy-c</a><br />
<a href="http://news.ycombinator.com/item?id=1346003" target="_blank">http://news.ycombinator.com/item?id=1346003</a><br />
<a href="http://webisztan.blog.hu/2010/05/17/teszteld_hogy_mennyire_biztonsagosak_a_facebook_beallitasaid" target="_blank">http://webisztan.blog.hu/2010/05/17/teszteld_hogy_</a><br />
<a href="http://www.simplyzesty.com/facebook/tool-lets-check-private-facebook-profile/" target="_blank">http://www.simplyzesty.com/facebook/tool-lets-chec</a><br />
<a href="http://themoderatevoice.com/73103/concerned-about-facebook-privacy-check-out-these-tools/" target="_blank">http://themoderatevoice.com/73103/concerned-about-</a><br />
<a href="http://www.simplyzesty.com/facebook/tool-lets-check-private-facebook-profile/" target="_blank"></a><a href="http://www.hwsw.hu/hirek/44627/facebook-adatvedelem-szemelyisegi-jog-kozossegi-web-privat-szfera.html" target="_blank"></a><a href="http://www.guardian.co.uk/technology/blog/2010/may/18/technology-links-newsbucket" target="_blank">http://www.guardian.co.uk/technology/blog/2010/may</a><br />
<a href="http://bagtheweb.com/oembed/proxy/IBB2DI" target="_blank">http://bagtheweb.com/oembed/proxy/IBB2DI</a><br />
<a href="http://www.taringa.net/posts/info/5534654/Facebook-Privacy-Check-(Comprueba-tu-privacidad).html" target="_blank">http://www.taringa.net/posts/info/5534654/Facebook</a><br />
<a href="http://37signals.com/svn/posts/2330-diasporas-curse" target="_blank">http://37signals.com/svn/posts/2330-diasporas-curs</a><br />
<a href="http://www.simplyzesty.com/facebook/tool-lets-check-private-facebook-profile/" target="_blank"></a><a href="http://index.hu/tech/2010/05/21/kivonulas_a_facebookrol/" target="_blank">http://index.hu/tech/2010/05/21/kivonulas_a_facebo</a><br />
<a href="http://www.simplyzesty.com/facebook/tool-lets-check-private-facebook-profile/" target="_blank"></a><a href="http://www.informacija.rs/Vesti/Privacy-Check-aplikacija-za-ocenu-privatnosti-na-Facebook-u.html" target="_blank">http://www.informacija.rs/Vesti/Privacy-Check-apli</a><br />
<a href="http://news.ycombinator.com/item?id=1354731" target="_blank">http://news.ycombinator.com/item?id=1354731</a><br />
<a href="http://www.net-security.org/article.php?id=1439" target="_blank"></a><a href="http://slo-tech.com/novice/t416348" target="_blank">http://slo-tech.com/novice/t416348</a><br />
<a href="http://flipthemedia.com/index.php/2010/05/facebook-privacy/" target="_blank">http://flipthemedia.com/index.php/2010/05/facebook</a><br />
<a href="http://webisztan.blog.hu/2010/05/17/teszteld_hogy_mennyire_biztonsagosak_a_facebook_beallitasaid" target="_blank"></a><a href="http://wiredpen.com/2010/05/18/facebook-and-privacy-tools/" target="_blank">http://wiredpen.com/2010/05/18/facebook-and-privac</a><br />
<a href="http://www.cnis-mag.com/quand-les-navigateurs-parlent-trop.html" target="_blank">http://www.cnis-mag.com/quand-les-navigateurs-parl</a><br />
<a href="http://www.reddit.com/r/technology/comments/c3jyi/kill_your_facebook_page_backlash_gains_speed/" target="_blank">http://www.reddit.com/r/technology/comments/c3jyi/</a><br />
<a href="http://caballe.cat/wp/eina-que-calcula-el-nivell-de-privadesa-que-tens-a-facebook/" target="_blank">http://caballe.cat/wp/eina-que-calcula-el-nivell-d</a><br />
<a href="http://www.net-security.org/article.php?id=1439" target="_blank"></a><a href="http://www.reddit.com/r/reddit.com/comments/c557m/facebook_privacy_check_i_managed_1821_what_about/" target="_blank">http://www.reddit.com/r/reddit.com/comments/c557m/</a><br />
<a href="http://www.facebook.com/notes/f-secure-labs/facebook-privacy-check/10150191329795543" target="_blank">http://www.facebook.com/notes/f-secure-labs/facebo</a><br />
<a href="http://bit.ly/bRhj2Z" target="_blank"></a><a href="http://www.netvibes.com/privatepage/1" target="_blank"></a><a href="http://www.net-security.org/article.php?id=1439" target="_blank"></a><a href="http://www.infospyware.com/blog/facebook-privacy-check/" target="_blank"></a><a href="http://www.cnis-mag.com/4456.html" target="_blank">http://www.cnis-mag.com/4456.html</a><br />
<a href="http://caballe.cat/wp/" target="_blank"></a><a href="http://www.taringa.net/posts/info/5515348/Facebook-Privacy-Check-(Compruebe-su-privacidad).html" target="_blank">http://www.taringa.net/posts/info/5515348/Facebook</a><br />
<a href="http://taringa.net/posts/info/5534654/Facebook-Privacy-Check-(Comprueba-tu-privacidad).html" target="_blank">http://taringa.net/posts/info/5534654/Facebook-Pri</a><br />
<a href="http://twitter.com/mikebutcher" target="_blank">http://twitter.com/mikebutcher</a><br />
<a href="http://www.wir-muessen-twittern.de/blog/2010/05/18/was-veroffentlicht-facebook-uber-mich/" target="_blank">http://www.wir-muessen-twittern.de/blog/2010/05/18</a><br />
<a href="http://www.techsupportalert.com/content/probably-best-free-security-list-world.htm" target="_blank">http://www.techsupportalert.com/content/probably-b</a><br />
<a href="http://www.matuk.com/forosmatuk/vida-digital/privacidad-en-facebook/" target="_blank">http://www.matuk.com/forosmatuk/vida-digital/priva</a><br />
<a href="http://livingwithoutfacebook.com/" target="_blank">http://livingwithoutfacebook.com/</a><br />
<a href="http://www.infospyware.com/blog/facebook-privacy-check/" target="_blank"></a><a href="http://giovannidepaola.nova100.ilsole24ore.com/2010/05/facebook-privacy-tester-.html" target="_blank">http://giovannidepaola.nova100.ilsole24ore.com/201</a><br />
<a href="http://blog.f-secure.jp/archives/50403236.html" target="_blank">http://blog.f-secure.jp/archives/50403236.html</a><br />
<a href="http://youropenbook.org/about" target="_blank">http://youropenbook.org/about</a><br />
<a href="http://www.stumbleupon.com/su/2JEkXM/www.rabidgremlin.com/fbprivacy" target="_blank"></a><a href="http://socialbits.net/blog/facebook-and-privacy-tools-to-be-sure-to-be-sure/" target="_blank">http://socialbits.net/blog/facebook-and-privacy-to</a><br />
<a href="http://www.lemagit.fr/article/google-france-facebook-legislation-blog-navigateurs-alten-loi-blogs-streetview/6411/1/special-securite-desanonymisation-blogs-beaucoup-bruit-pour-rien/" target="_blank">http://www.lemagit.fr/article/google-france-facebo</a><br />
<a href="http://www.f-secure.com/weblog/index.html" target="_blank"></a><a href="http://news.ycombinator.com/item?id=1347982" target="_blank">http://news.ycombinator.com/item?id=1347982</a><br />
<a href="http://www.websegura.net/2010/05/teste-a-sua-privacidade-online-no-facebook/" target="_blank">http://www.websegura.net/2010/05/teste-a-sua-priva</a><br />
<a href="http://www.plurk.com/bikerock" target="_blank">http://www.plurk.com/bikerock</a><br />
<a href="http://www.lemagit.fr/article/google-france-facebook-legislation-blog-navigateurs-alten-loi-blogs-streetview/6411/1/special-securite-desanonymisation-blogs-beaucoup-bruit-pour-rien/" target="_blank">http://www.lemagit.fr/article/google-france-facebo</a><br />
<a href="http://www.softcatala.org/planeta/" target="_blank">http://www.softcatala.org/planeta/</a><br />
<a href="http://www.islamicaweb.com/forums/science-technology/4521-facebook-thread-115.html" target="_blank">http://www.islamicaweb.com/forums/science-technolo</a><br />
<a href="http://www.facebook.com/FSecure.Labs" target="_blank"></a><a href="http://vulps.forumotion.com/discussion-f4/oo-er-some-advice-from-facebook-veterans-please-t1207-15.htm" target="_blank">http://vulps.forumotion.com/discussion-f4/oo-er-so</a><br />
<a href="http://twitter.com/theharmonyguy" target="_blank">http://twitter.com/theharmonyguy</a><br />
<a href="http://twitter.com/harryadams" target="_blank">http://twitter.com/harryadams</a><br />
<a href="http://tnlabs.org/" target="_blank"></a><a href="http://maketecheasier.com/4-tools-to-unscramble-your-facebook-privacy-settings/2010/05/25" target="_blank">http://maketecheasier.com/4-tools-to-unscramble-yo</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.rabidgremlin.com/2010/06/01/the-viral-spread-of-my-privacy-check-app-for-facebook/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>New theme is a go</title>
		<link>http://blog.rabidgremlin.com/2010/05/23/new-theme-is-a-go/</link>
		<comments>http://blog.rabidgremlin.com/2010/05/23/new-theme-is-a-go/#comments</comments>
		<pubDate>Sun, 23 May 2010 06:05:07 +0000</pubDate>
		<dc:creator>jack</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[blueprint css]]></category>
		<category><![CDATA[Fancybox]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[My Work]]></category>

		<guid isPermaLink="false">http://blog.rabidgremlin.com/?p=682</guid>
		<description><![CDATA[Well, it has been a while since I posted something meaty, I&#8217;ve been kinda doing a lot of micro-blogging and tinkering with other things like my Privacy Check for Facebook, so haven&#8217;t really had time to sit down and write a decent post. Of course as soon as I did sit down to write something, [...]]]></description>
			<content:encoded><![CDATA[<p>Well, it has been a while since I posted something meaty, I&#8217;ve been kinda doing a lot of <a title="Link to rabidgremlin's tweets" href="http://twitter.com/rabidgremlin" target="_blank">micro-blogging</a> and tinkering with other things like my <a title="Link to Privacy Check app" href="http://www.rabidgremlin.com/fbprivacy/" target="_blank">Privacy Check for Facebook</a>, so haven&#8217;t really had time to sit down and write a decent post.</p>
<p>Of course as soon as I did sit down to write something, I got hideously distracted with the idea of creating a new theme for my blog&#8230;</p>
<p>Luckily due to some very handy tools, it did not take nearly as long to finish off my new theme as it could have.</p>
<p>First up <a title="Link to blueprintcss.org" href="http://www.blueprintcss.org/" target="_blank">Blueprint CSS</a>, this is a fantastic CSS framework. I used it for <a title="link to contactprotocol.org" href="http://contactprotocol.org/" target="_blank">contactprotocol.org</a> and for my Privacy Check for Facebook app so it was a no brainer to use for the theme. If you are not a hard-core webcoder then this is the easiest way to put together a good looking website that just works.</p>
<p>Next up: <a title="Link to jQuery site" href="http://jquery.com/" target="_blank">jQuery</a>, which, is a fantastic Javascript framework. I&#8217;m really getting to grips with it and there is no way I would ever build another site without using a Javascript framework of some kind.</p>
<p>For instance I have a lot of code examples on the blog. These I  format into <em>&lt;pre&gt;</em> blocks so that they are easier to read. Problem is that they are often very wide and would get cut off with this new theme. A bit of digging around on the web and little bit of Javascript and we have the following; a code block that expands when you hover the mouse over the it. Here is an example (and the actually code):</p>
<pre>//this code finds all pre tags and makes them expand on hover
//code has been formatted to be extra wide to demonstrate the effect
$('div.entry').find('pre').wrapInner('').hover(function()
                                               {
                                                 var contentwidth = $(this).contents().width();
                                                 var blockwidth = $(this).width();
                                                 if(contentwidth &gt; blockwidth)
                                                 {
                                                   $(this).animate({ width: '950px'}, 250);
                                                 }
                                               }, function()
                                                  {
                                                  $(this).animate({ width: '640px' }, 250);
                                                  });
</pre>
<p>I also used <a title="Link to Fancybox site" href="http://fancybox.net/" target="_blank">Fancybox</a> to create a lightbox effect for images and image galleries. For example try clicking on one of  the images below:</p>

<a href='http://blog.rabidgremlin.com/2010/05/23/new-theme-is-a-go/tv_test_1/' title='TV test pattern 1'><img width="150" height="112" src="http://blog.rabidgremlin.com/wp-content/uploads/2010/05/tv_test_1.png" class="attachment-thumbnail" alt="TV test pattern 1" title="TV test pattern 1" /></a>
<a href='http://blog.rabidgremlin.com/2010/05/23/new-theme-is-a-go/tv_test_2/' title='TV test pattern 2'><img width="150" height="100" src="http://blog.rabidgremlin.com/wp-content/uploads/2010/05/tv_test_2.png" class="attachment-thumbnail" alt="TV test pattern 2" title="TV test pattern 2" /></a>

<p>Lastly I used the new <a title="Link to Google web fonts site" href="http://code.google.com/apis/webfonts/" target="_blank">Google Font API</a> (that was released this week) to embed the cool font I used for the blog &amp; post titles in a cross browser compatible way. The font is <a title="Link to font info" href="http://code.google.com/webfonts/family?family=Reenie+Beanie" target="_blank">Reenie Beanie</a> by James Grieshaber.</p>
<p>So what do you think? Leave a comment :)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.rabidgremlin.com/2010/05/23/new-theme-is-a-go/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Inside Google Wave</title>
		<link>http://blog.rabidgremlin.com/2009/11/04/inside-google-wave/</link>
		<comments>http://blog.rabidgremlin.com/2009/11/04/inside-google-wave/#comments</comments>
		<pubDate>Tue, 03 Nov 2009 21:03:36 +0000</pubDate>
		<dc:creator>jack</dc:creator>
				<category><![CDATA[My Work]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[ClearPoint]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Google Wave]]></category>

		<guid isPermaLink="false">http://blog.rabidgremlin.com/?p=533</guid>
		<description><![CDATA[ClearPoint held one of its regular tech-drop get-togethers last night covering Google Wave. The Cloudbreak team gave a good walk-through of the product  and I gave a quick overview of some of the technology inside Google Wave and it&#8217;s APIs. Here is my slide deck: Click to see next slide The PDF (with notes) can [...]]]></description>
			<content:encoded><![CDATA[<p><a title="Link to ClearPoint" href="http://clearpoint.co.nz/" target="_blank">ClearPoint</a> held one of its regular tech-drop get-togethers last night covering <a title="Link to Google Wave home page" href="http://wave.google.com" target="_blank">Google Wave</a>. </p>
<p>The <a title="Link to Cloudbreak" href="http://www.cloudbreak.co.nz/" target="_blank">Cloudbreak</a> team gave a good walk-through of the product  and I gave a quick overview of some of the technology inside Google Wave and it&#8217;s APIs.</p>
<p>Here is my slide deck:</p>
<div align="center">
<object id="VideoPlayback" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="500" height="375" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://blog.rabidgremlin.com/wp-content/uploads/2009/11/GoogleWaveTech.swf" /><embed id="VideoPlayback" type="application/x-shockwave-flash" width="500" height="375" src="http://blog.rabidgremlin.com/wp-content/uploads/2009/11/GoogleWaveTech.swf"></embed></object><br />
<em>Click to see next slide</em>
</div>
<p>The PDF (with notes) can be <a title="Download the Google Wave Tech presentation" href="http://blog.rabidgremlin.com/wp-content/uploads/2009/11/GoogleWaveTech.pdf" target="_blank">downloaded here</a>.</p>
<p>For those of you who know nothing about the wave, here is short intro video:</p>
<p><a href="http://blog.rabidgremlin.com/2009/11/04/inside-google-wave/"><em>Click here to view the embedded video.</em></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.rabidgremlin.com/2009/11/04/inside-google-wave/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Ok I&#8217;ve done it now&#8230;</title>
		<link>http://blog.rabidgremlin.com/2009/11/02/ok-ive-done-it-now/</link>
		<comments>http://blog.rabidgremlin.com/2009/11/02/ok-ive-done-it-now/#comments</comments>
		<pubDate>Mon, 02 Nov 2009 08:19:44 +0000</pubDate>
		<dc:creator>jack</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[My Work]]></category>
		<category><![CDATA[split-the-bill]]></category>

		<guid isPermaLink="false">http://blog.rabidgremlin.com/?p=531</guid>
		<description><![CDATA[Wow, I have just announced the launch of my pet project: split-the-bill.com I&#8217;m feeling  excited yet panicked at the same time. It will be very interesting to see how this pans out (hopefully well). For more details check out http://blog.split-the-bill.com/the-cat-is-out-of-the-bag-2]]></description>
			<content:encoded><![CDATA[<p>Wow, I have just announced the launch of my pet project: <a title="Link to split-the-bill.com" href="http://split-the-bill.com" target="_blank">split-the-bill.com</a> I&#8217;m feeling  excited yet panicked at the same time.</p>
<p>It will be very interesting to see how this pans out (hopefully well). For more details check out <a title="Link to the annoucement on the split-the-bill blog" href="http://blog.split-the-bill.com/the-cat-is-out-of-the-bag-2" target="_blank">http://blog.split-the-bill.com/the-cat-is-out-of-the-bag-2</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.rabidgremlin.com/2009/11/02/ok-ive-done-it-now/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

