<?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>pifantastic</title>
	<atom:link href="http://pifantastic.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://pifantastic.com</link>
	<description>and we'll be dressed in all black</description>
	<lastBuildDate>Mon, 21 Jun 2010 06:18:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Drupal and Memoization</title>
		<link>http://pifantastic.com/2010/06/21/drupal-and-memoization/</link>
		<comments>http://pifantastic.com/2010/06/21/drupal-and-memoization/#comments</comments>
		<pubDate>Mon, 21 Jun 2010 06:11:21 +0000</pubDate>
		<dc:creator>Aaron</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[caching]]></category>
		<category><![CDATA[drupal]]></category>
		<category><![CDATA[memoization]]></category>
		<category><![CDATA[performance]]></category>

		<guid isPermaLink="false">http://pifantastic.com/?p=214</guid>
		<description><![CDATA[Memoization is a way to cache the results of calling a function with a specific set of parameters. This can be very useful in Drupal if you need to call a function that does some kind of complex computation or database queries, but is in a part of the code you don&#8217;t want to modify. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://en.wikipedia.org/wiki/Memoization">Memoization</a> is a way to cache the results of calling a function with a specific set of parameters.  This can be very useful in Drupal if you need to call a function that does some kind of complex computation or database queries, but is in a part of the code you don&#8217;t want to modify.  Here is a function I wrote for a recent project that allows you to utilize this technique:<br />
<script src="http://gist.github.com/446476.js?file=memoize.php"></script></p>
<p>And here are some examples of how you might use it:<br />
<script src="http://gist.github.com/446480.js?file=memoize_example.php"></script></p>
<p>Be warned, however.  You only want to do this if you know for sure that you are going to call a function more than once.  Otherwise it&#8217;s just added overhead with no benefit.</p>
]]></content:encoded>
			<wfw:commentRss>http://pifantastic.com/2010/06/21/drupal-and-memoization/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adobe AIR 2 and jQueryUI Datepicker</title>
		<link>http://pifantastic.com/2010/05/31/adobe-air-2-and-jqueryui-datepicker/</link>
		<comments>http://pifantastic.com/2010/05/31/adobe-air-2-and-jqueryui-datepicker/#comments</comments>
		<pubDate>Tue, 01 Jun 2010 04:42:56 +0000</pubDate>
		<dc:creator>Aaron</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[adobe air]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[jqueryui]]></category>

		<guid isPermaLink="false">http://pifantastic.com/?p=211</guid>
		<description><![CDATA[As of version 1.8.1, the jQueryUI Datepicker does not work in Adobe AIR. The issue and more details can be found here: http://dev.jqueryui.com/ticket/3945. The problem is that Adobe AIR does not support dynamically loading strings as code after the load event. Version 1.8.1 of the jQueryUI Datepicker uses this method to add onclick handlers to [...]]]></description>
			<content:encoded><![CDATA[<p>As of version 1.8.1, the jQueryUI Datepicker does not work in Adobe AIR.  The issue and more details can be found here: <a href="http://dev.jqueryui.com/ticket/3945">http://dev.jqueryui.com/ticket/3945</a>.</p>
<p>The problem is that Adobe AIR does not support dynamically loading strings as code after the load event.  Version 1.8.1 of the jQueryUI Datepicker uses this method to add onclick handlers to the various Datepicker controls.  The patch to fix the problem can be found here: <a href="http://github.com/csnover/jquery-ui/blob/b8d8e1e4a6e405c62ded6dd5ab4065ad10cd1225/ui/jquery.ui.datepicker.js">http://github.com/csnover/jquery-ui/blob/b8d8e1e4a6e405c62ded6dd5ab4065ad10cd1225/ui/jquery.ui.datepicker.js</a></p>
]]></content:encoded>
			<wfw:commentRss>http://pifantastic.com/2010/05/31/adobe-air-2-and-jqueryui-datepicker/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Jsonify</title>
		<link>http://pifantastic.com/2010/05/11/jsonify/</link>
		<comments>http://pifantastic.com/2010/05/11/jsonify/#comments</comments>
		<pubDate>Tue, 11 May 2010 17:40:56 +0000</pubDate>
		<dc:creator>Aaron</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[drupal]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[json]]></category>

		<guid isPermaLink="false">http://pifantastic.com/?p=208</guid>
		<description><![CDATA[On one of my current Drupal projects I found I needed to load nodes via javascript. To make the whole thing easy peasy I created Jsonify, a dead simple Drupal module that provides you with javascript methods for loading nodes and comments.]]></description>
			<content:encoded><![CDATA[<p>On one of my current Drupal projects I found I needed to load nodes via javascript.  To make the whole thing easy peasy I created <a href="http://github.com/pifantastic/drupal-jsonify">Jsonify</a>, a dead simple Drupal module that provides you with javascript methods for loading nodes and comments.  </p>
<p><script src="http://gist.github.com/397585.js?file=jsonify.js"></script></p>
]]></content:encoded>
			<wfw:commentRss>http://pifantastic.com/2010/05/11/jsonify/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Creating .dmg Files with Adobe AIR 2 and OSX</title>
		<link>http://pifantastic.com/2010/05/02/creating-dmgs-with-adobe-air-2-and-osx/</link>
		<comments>http://pifantastic.com/2010/05/02/creating-dmgs-with-adobe-air-2-and-osx/#comments</comments>
		<pubDate>Mon, 03 May 2010 04:50:39 +0000</pubDate>
		<dc:creator>Aaron</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[air]]></category>
		<category><![CDATA[dmg]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[osx]]></category>

		<guid isPermaLink="false">http://pifantastic.com/?p=199</guid>
		<description><![CDATA[Recently I needed to develop a method for creating password protected backups of my application&#8217;s data. The original idea was to create a password protected zip file which I could just do using /usr/bin/zip. Unfortunately, the OSX archiver utility cannot open password protected zip files, making it very difficult for users to actually open the [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I needed to develop a method for creating password protected backups of my application&#8217;s data.  The original idea was to create a password protected zip file which I could just do using <code>/usr/bin/zip</code>.  Unfortunately, the OSX archiver utility cannot open password protected zip files, making it very difficult for users to actually open the zip files.  </p>
<p>So after a bit of research I came across <a href="http://github.com/andreyvit/yoursway-create-dmg">http://github.com/andreyvit/yoursway-create-dmg</a>.  This guy has created an awesome little shell script that allows you to create .dmg files with pretty backgrounds and all sorts of other things.  I forked it <a href="http://github.com/pifantastic/yoursway-create-dmg/blob/master/create-dmg">here</a> so that I could add the ability to set a password.  And then I just execute the shell file using the NativeProcess API built in to Adobe AIR 2.  Here is the javascript:</p>
<p><script src="http://gist.github.com/387762.js?file=create_dmg.js"></script></p>
]]></content:encoded>
			<wfw:commentRss>http://pifantastic.com/2010/05/02/creating-dmgs-with-adobe-air-2-and-osx/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Kodak W820 Media RSS Feed</title>
		<link>http://pifantastic.com/2010/02/02/kodak-w820-media-rss-feed/</link>
		<comments>http://pifantastic.com/2010/02/02/kodak-w820-media-rss-feed/#comments</comments>
		<pubDate>Tue, 02 Feb 2010 06:08:24 +0000</pubDate>
		<dc:creator>Aaron</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[kodak]]></category>
		<category><![CDATA[rss]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://pifantastic.com/?p=194</guid>
		<description><![CDATA[I recently bought my dear mother a Kodak W820 digital photo frame. It&#8217;s wireless and supports several ways of reading media from the web, one being RSS. I don&#8217;t have much experience with RSS so when I wanted to create my own RSS feed for the frame, I had a little trouble. Here is the [...]]]></description>
			<content:encoded><![CDATA[<p>I recently bought my dear mother a <a href="http://www.amazon.com/Kodak-EasyShare-W820-Wireless-Digital/dp/B0016NJ7EK">Kodak W820 digital photo frame</a>.  It&#8217;s wireless and supports several ways of reading media from the web, one being RSS.  I don&#8217;t have much experience with RSS so when I wanted to create my own RSS feed for the frame, I had a little trouble.  Here is the markup for the feed that ended up working for me:<script src="http://gist.github.com/292428.js?file=rss.xml"></script></p>
]]></content:encoded>
			<wfw:commentRss>http://pifantastic.com/2010/02/02/kodak-w820-media-rss-feed/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Anatomy of an AIR Build Script (Windows)</title>
		<link>http://pifantastic.com/2010/02/01/anatomy-of-an-air-build-script-windows/</link>
		<comments>http://pifantastic.com/2010/02/01/anatomy-of-an-air-build-script-windows/#comments</comments>
		<pubDate>Mon, 01 Feb 2010 23:58:35 +0000</pubDate>
		<dc:creator>Aaron</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[air]]></category>
		<category><![CDATA[build]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://pifantastic.com/?p=181</guid>
		<description><![CDATA[Building AIR applications isn&#8217;t particularly difficult, but I thought someone may benefit from seeing the super simple python script I use to build the AIR app I am currently working on. It allows you to do three things: run your app in the debugger, create a new self signed certificate, and build the final .air [...]]]></description>
			<content:encoded><![CDATA[<p>Building AIR applications isn&#8217;t particularly difficult, but I thought someone may benefit from seeing the super simple python script I use to build the AIR app I am currently working on.</p>
<p>It allows you to do three things: run your app in the debugger, create a new self signed certificate, and build the final .air application file.  It assumes the following directory structure (but you can easily edit the script to customize this):</p>
<pre>
root/
	index.html
	application-descriptor.xml
	/js
	/css
	/locale
	/icons
</pre>
<p>When finished building it places your .air file into a subdirectory called &#8220;build&#8221;.<script src="http://gist.github.com/292189.js?file=build.py"></script></p>
]]></content:encoded>
			<wfw:commentRss>http://pifantastic.com/2010/02/01/anatomy-of-an-air-build-script-windows/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>seltzer, A Simple Javascript Interface for SQLite in Adobe AIR</title>
		<link>http://pifantastic.com/2010/01/28/seltzer-a-simple-javascript-interface-for-sqlite-in-adobe-air/</link>
		<comments>http://pifantastic.com/2010/01/28/seltzer-a-simple-javascript-interface-for-sqlite-in-adobe-air/#comments</comments>
		<pubDate>Thu, 28 Jan 2010 08:12:30 +0000</pubDate>
		<dc:creator>Aaron</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[air]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[sqlite]]></category>

		<guid isPermaLink="false">http://pifantastic.com/?p=147</guid>
		<description><![CDATA[I&#8217;ve recently started my first project using Adobe AIR.  When it came out a few years ago I did what most people did and said, &#8220;Oh, cool&#8221;, and then immediately forgot about it.  But after reviewing several ways of solving this latest project, we realized that AIR was perfect. AIR lets you choose what you [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve recently started my first project using <a title="Adobe AIR" href="http://www.adobe.com/products/air/">Adobe AIR</a>.  When it came out a few years ago I did what most people did and said, &#8220;Oh, cool&#8221;, and then immediately forgot about it.  But after reviewing several ways of solving this latest project, we realized that AIR was perfect.</p>
<p>AIR lets you choose what you develop with: Flex, Flash or Javascript+HTML+CSS.  I chose Javascript because lately I&#8217;ve seen how <a title="Node.js" href="http://nodejs.org/">powerful</a> of a <a title="CommonJS" href="http://commonjs.org/">language</a> it can <a title="Narwhal.js" href="http://narwhaljs.org/">be</a>.  Also I don&#8217;t know Flash or Flex :)</p>
<p>The AIR javascript API has support for SQLite databases which is totally awesome.  My project has a fairly simple database and I wanted an easy way to interact with it.  Thus, I created seltzer.  I don&#8217;t really know why I called it that, I guess AIR reminds me of airy things.  Like alka-seltzer?</p>
<p>You can download/fork/ignore completely the project on <a title="seltzer on Github" href="http://github.com/pifantastic/seltzer">github</a>.  I&#8217;ve written some unit tests with QUnit but it still needs a lot of work.  Hopefully by the end of my current project it will be breathing fire and lazer-blasting planets.  In a good way.</p>
<p>Here is an example of how the API works.  Like I said, it&#8217;s dead simple.<script src="http://gist.github.com/288536.js"></script></p>
<p>And here is a screenshot of the QUnit badassery:</p>
<p><img class="aligncenter" title="seltzer unit tests" src="http://content.screencast.com/users/pifantatsic/folders/Jing/media/3c989e2a-a4d7-4a82-8b2a-267a5f3a7673/2010-01-28_0214.png" alt="" width="400" height="1051" /></p>
]]></content:encoded>
			<wfw:commentRss>http://pifantastic.com/2010/01/28/seltzer-a-simple-javascript-interface-for-sqlite-in-adobe-air/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Unzipping .svgz files in PHP</title>
		<link>http://pifantastic.com/2009/06/21/unzipping-svgz-files-in-php/</link>
		<comments>http://pifantastic.com/2009/06/21/unzipping-svgz-files-in-php/#comments</comments>
		<pubDate>Mon, 22 Jun 2009 01:05:31 +0000</pubDate>
		<dc:creator>Aaron</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[svg]]></category>

		<guid isPermaLink="false">http://pifantastic.com/?p=89</guid>
		<description><![CDATA[I recently needed to take user uploaded .svgz files, decompress them (a .svgz file is simply a gzipped .svg file) and read some of the meta data.  The operation is fairly straight forward in PHP but I couldn&#8217;t really find a comprehensive example online.  So here is the solution I came up with and it [...]]]></description>
			<content:encoded><![CDATA[<p>I recently needed to take user uploaded .svgz files, decompress them (a .svgz file is simply a gzipped .svg file) and read some of the meta data.  The operation is fairly straight forward in PHP but I couldn&#8217;t really find a comprehensive example online.  So here is the solution I came up with and it seems to be working quite well:<script src="http://gist.github.com/288895.js"></script></p>
]]></content:encoded>
			<wfw:commentRss>http://pifantastic.com/2009/06/21/unzipping-svgz-files-in-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
