<?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>metal &#38; gin &#187; i am geek</title>
	<atom:link href="http://blog.craig-mackenzie.com/category/i-am-geek/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.craig-mackenzie.com</link>
	<description>(a weblog by craig t mackenzie)</description>
	<lastBuildDate>Thu, 19 Mar 2009 20:56:55 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>The Importance of Personality in Creativity (a drunk rambling)</title>
		<link>http://blog.craig-mackenzie.com/2008/04/27/the-importance-of-personality-in-creativity-a-drunk-rambling/</link>
		<comments>http://blog.craig-mackenzie.com/2008/04/27/the-importance-of-personality-in-creativity-a-drunk-rambling/#comments</comments>
		<pubDate>Sun, 27 Apr 2008 19:13:33 +0000</pubDate>
		<dc:creator>craig mackenzie</dc:creator>
				<category><![CDATA[i am geek]]></category>
		<category><![CDATA[musings]]></category>
		<category><![CDATA[observations]]></category>
		<category><![CDATA[creativity]]></category>
		<category><![CDATA[drunk]]></category>
		<category><![CDATA[personality]]></category>
		<category><![CDATA[ramble]]></category>

		<guid isPermaLink="false">http://blog.craig-mackenzie.com/?p=65</guid>
		<description><![CDATA[I&#8217;ve become increasingly aware just lately of the importance of personality in creativity, especially in creativity of a visual manner. As i&#8217;ve been exploring generative art, and indeed as I have been tied down in the purely functional and rational world of investment banking (i&#8217;ve been working on a large application for JP Morgan, forcing [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve become increasingly aware just lately of the importance of personality in creativity, especially in creativity of a visual manner. As i&#8217;ve been exploring generative art, and indeed as I have been tied down in the purely functional and rational world of investment banking (i&#8217;ve been working on a large application for JP Morgan, forcing my mind to wonder over the possibilities of aesthetic creations, whilst drenched with the harsh and bleak reality of investment banking) I have come to appreciate (more concisely) the relevance, importance and potency of personal interpretation in most things creative (especially visually aesthetic creativity).</p>
<h2>What is &#8220;Personality in Creativity&#8221;???</h2>
<p>When I talk about personality in creativity what I am talking about is the way in which individual human beings are capable of understanding, relating to and ultimately experiencing things in a completely different and abstract way from one another.</p>
<p>I think my understanding of this has become most prevalent in recent times, you see I bought my boyfriend a digital SLR camera for his birthday (a rather nice Canon EOS 400D) and I couldn&#8217;t help but notice that often I would find a shot or scene that I thought was worth capturing, the interesting part is that sometimes my boyfriend wouldn&#8217;t feel the same way (more often than not he would, or he was just humoring me, who knows!) It was through these continued and often random occurrences of indifference over what was considered aesthetically pleasing that I arrived at my ephinpy of revelation.</p>
<p><span id="more-65"></span></p>
<h2>The Ephinpy of Revelation</h2>
<p>My revelation was one of appreciation for the individual, in the same way that I would attack a pragmatic problem or a technologically challenging task from a certain perspective, my boyfriend, your girlfriend indeed your [whoever] or (especially) another person will see the same problem / aesthetic from another perspective.</p>
<p>It is indeed the way in which we as creative individuals are able to see, analyze, appreciate, and then (finally) form preferable, concise resolutions to aesthetically or mentally challenging problems.</p>
<p>I&#8217;m using the perspective of pragmatic and aesthetic creativity interchangeably, you see this is the way in which I (creatively) perceive a challenge, it is an aspect of my <em>personality</em> and something which is as unique in its execution to me as the very fabric of which I am formed.</p>
<h2>The Very Fabric of Which we are Formed</h2>
<p>This is the point, as obvious at it seems, I&#8217;m trying to make, The way I will solve a problem, the way I will view an aesthetic, even the way in which I will appreciate sound, touch, taste&#8230; It&#8217;s all unique to me. As is the way you will react to these stimuli. </p>
<p>As obvious as it seems to say this out-loud, I sometimes think there are a great deal of people in the world that need reminding that you should view this &#8220;with your own eyes&#8221;, be that with your actual eyes, or a perceived sandbox of conformed rationality, it should be your spectrum of creativity (or rationale) that paints the answer, not an emulated or derived palate of someone else&#8217;s expression.</p>
<h2>&#8220;A Derived Palate of Someone Else&#8217;s Expression&#8221;</h2>
<p>When I talk about this I&#8217;m not saying that people shouldn&#8217;t learn, be inspired by and ultimately study others work to gain a better understanding of a particular field of creative expression (far from it, indeed I believe that it is often only possible to understand and therefore form a creative expression about a given problem / aesthetic, if you have first studied and understood how peers would approach the same problem)</p>
<p>What I am saying is that it&#8217;s important to move beyond this. Take what you have learnt, apply it and reiterate. Your creativity will then be peppered with the nuances of your personality, and ultimately you <em>individuality</em>.</p>
<p>This drunk rambling was bought to you buy 6 pints and 2 shots of tequila. Thank you.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.craig-mackenzie.com/2008/04/27/the-importance-of-personality-in-creativity-a-drunk-rambling/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Pixel Path: Take 2</title>
		<link>http://blog.craig-mackenzie.com/2008/03/29/pixel-path-take-2/</link>
		<comments>http://blog.craig-mackenzie.com/2008/03/29/pixel-path-take-2/#comments</comments>
		<pubDate>Sat, 29 Mar 2008 21:54:41 +0000</pubDate>
		<dc:creator>craig mackenzie</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[i am geek]]></category>
		<category><![CDATA[art]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[generated]]></category>
		<category><![CDATA[generative art]]></category>
		<category><![CDATA[processing]]></category>

		<guid isPermaLink="false">http://blog.craig-mackenzie.com/2008/03/29/pixel-path-take-2/</guid>
		<description><![CDATA[
Following on from my previous experiments with generative art and processing I decided to elaborate on my code and introduce more complex shape generation. I knew I wanted to introduce 3D and alpha blending, as well as refining the curves used to generate the lines. 
A Beautiful Mistake
After getting my head around the 3D space [...]]]></description>
			<content:encoded><![CDATA[<p><img src="/stuff/processing/processing-29-march-08/title.jpg" width="625" height="150" alt="Title" /></p>
<p>Following on from my <a href="http://blog.craig-mackenzie.com/2008/02/25/pixel-path-my-preliminary-steps-into-generative-art/" title="metal &amp; gin &raquo; Pixel Path: my preliminary steps into generative art">previous experiments</a> with generative art and processing I decided to elaborate on my code and introduce more complex shape generation. I knew I wanted to introduce 3D and alpha blending, as well as refining the curves used to generate the lines. </p>
<h2>A Beautiful Mistake</h2>
<p>After getting my head around the 3D space and doing some rudimentary experiments I was ready to port my existing code into this new 3D world. I started playing some more with the brilliant <a href="http://www.cise.ufl.edu/~kdamkjer/processing/libraries/ocd/" title="Obsessive Camera Direction">OCD Library</a> and had something I was kind of happy with.</p>
<p>At some point in tweaking and playing with the code I must have removed the line <code>background(0);</code> and (naturally) the screen was never cleared. What this produced when left to run for about 2000 frames was stunning.
</p>
<h2>The Result</h2>
<p>So here they are, my beautiful mistakes generated by taking an image, getting a random pixel, positioning it randomly in 3d space then connecting an arbitrary amount of other random points to this point with bezier curves. The frame buffer is never cleared and the image are let to build up over thousands of frames.</p>
<p><span id="more-64"></span></p>
<p>Simply click on a thumbnail to view the enlarged version or you can view larger images on <a href="http://flickr.com/photos/craigtmackenzie/sets/72157604304432493/" title="Pixel Path: Take 2 - a photoset on Flickr">my flickr account</a> or my <a href="http://blog.craig-mackenzie.com/stuff/processing/gallery/bezier-curve-form.html" onclick="window.open(this.href,null, 'width=1300,height=740,status=yes,toolbar=no,menubar=no,location=no'); return false;">HD gallery</a>.</p>
<div>
<ul class="zoom-gallery">
<li><a href="/stuff/processing/processing-29-march-08/gallery/images/beziercurve/SD/creatures-001.jpg"><img src="/stuff/processing/processing-29-march-08/gallery/images/beziercurve/thumb/creatures-001.jpg" width="150" height="130" /></a></li>
<li><a href="/stuff/processing/processing-29-march-08/gallery/images/beziercurve/SD/creatures-002.jpg"><img src="/stuff/processing/processing-29-march-08/gallery/images/beziercurve/thumb/creatures-002.jpg" width="150" height="130" /></a></li>
<li><a href="/stuff/processing/processing-29-march-08/gallery/images/beziercurve/SD/creatures-003.jpg"><img src="/stuff/processing/processing-29-march-08/gallery/images/beziercurve/thumb/creatures-003.jpg" width="150" height="130" /></a></li>
<li><a href="/stuff/processing/processing-29-march-08/gallery/images/beziercurve/SD/creatures-004.jpg"><img src="/stuff/processing/processing-29-march-08/gallery/images/beziercurve/thumb/creatures-004.jpg" width="150" height="130" /></a></li>
<li><a href="/stuff/processing/processing-29-march-08/gallery/images/beziercurve/SD/creatures-005.jpg"><img src="/stuff/processing/processing-29-march-08/gallery/images/beziercurve/thumb/creatures-005.jpg" width="150" height="130" /></a></li>
<li><a href="/stuff/processing/processing-29-march-08/gallery/images/beziercurve/SD/creatures-006.jpg"><img src="/stuff/processing/processing-29-march-08/gallery/images/beziercurve/thumb/creatures-006.jpg" width="150" height="130" /></a></li>
<li><a href="/stuff/processing/processing-29-march-08/gallery/images/beziercurve/SD/creatures-007.jpg"><img src="/stuff/processing/processing-29-march-08/gallery/images/beziercurve/thumb/creatures-007.jpg" width="150" height="130" /></a></li>
<li><a href="/stuff/processing/processing-29-march-08/gallery/images/beziercurve/SD/creatures-008.jpg"><img src="/stuff/processing/processing-29-march-08/gallery/images/beziercurve/thumb/creatures-008.jpg" width="150" height="130" /></a></li>
<li><a href="/stuff/processing/processing-29-march-08/gallery/images/beziercurve/SD/creatures-009.jpg"><img src="/stuff/processing/processing-29-march-08/gallery/images/beziercurve/thumb/creatures-009.jpg" width="150" height="130" /></a></li>
<li><a href="/stuff/processing/processing-29-march-08/gallery/images/beziercurve/SD/creatures-010.jpg"><img src="/stuff/processing/processing-29-march-08/gallery/images/beziercurve/thumb/creatures-010.jpg" width="150" height="130" /></a></li>
<li><a href="/stuff/processing/processing-29-march-08/gallery/images/beziercurve/SD/creatures-011.jpg"><img src="/stuff/processing/processing-29-march-08/gallery/images/beziercurve/thumb/creatures-011.jpg" width="150" height="130" /></a></li>
<li><a href="/stuff/processing/processing-29-march-08/gallery/images/beziercurve/SD/creatures-012.jpg"><img src="/stuff/processing/processing-29-march-08/gallery/images/beziercurve/thumb/creatures-012.jpg" width="150" height="130" /></a></li>
<li><a href="/stuff/processing/processing-29-march-08/gallery/images/beziercurve/SD/creatures-013.jpg"><img src="/stuff/processing/processing-29-march-08/gallery/images/beziercurve/thumb/creatures-013.jpg" width="150" height="130" /></a></li>
<li><a href="/stuff/processing/processing-29-march-08/gallery/images/beziercurve/SD/creatures-014.jpg"><img src="/stuff/processing/processing-29-march-08/gallery/images/beziercurve/thumb/creatures-014.jpg" width="150" height="130" /></a></li>
</ul>
<div class="clear"></div>
</div>
<h2>Now in Moving Picture&trade; format!</h2>
<p>I&#8217;ve also got a couple of videos of the images being generated. The low-res previews which vimeo outputs don&#8217;t really do it justice, but at least you can view it in HD on vimeo (which you can&#8217;t with you tube.)</p>
<div class="video-wrap vimeo">
  <object type="application/x-shockwave-flash" width="624" height="351" data="http://www.vimeo.com/moogaloop.swf?clip_id=783154&amp;server=www.vimeo.com&amp;fullscreen=1&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=00adef"><param name="quality" value="best" /><param name="allowfullscreen" value="true" /><param name="scale" value="showAll" /><param name="movie" value="http://www.vimeo.com/moogaloop.swf?clip_id=783154 &amp;server=www.vimeo.com&amp;fullscreen=1&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=00adef" /></object><br />
    <br />
    <a href="http://www.vimeo.com/783154/l:embed_783154">view this in HD (which is highly recommended)</a>
</div>
<p></p>
<div class="video-wrap vimeo">
  <object type="application/x-shockwave-flash" width="624" height="351" data="http://www.vimeo.com/moogaloop.swf?clip_id=783249&amp;server=www.vimeo.com&amp;fullscreen=1&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=00adef"><param name="quality" value="best" /><param name="allowfullscreen" value="true" /><param name="scale" value="showAll" /><param name="movie" value="http://www.vimeo.com/moogaloop.swf?clip_id=783249 &amp;server=www.vimeo.com&amp;fullscreen=1&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=00adef" /></object><br />
    <br />
    <a href="http://www.vimeo.com/783249/l:embed_783249">view this in HD (which is highly recommended)</a>
</div>
<p></p>
<h2>Now with a Z axis!</h2>
<p>My next step is to try and generate these images in true 3D form, with camera control and give the whole thing a sense of depth. This is my first attempt.</p>
<div class="video-wrap vimeo">
  <object type="application/x-shockwave-flash" width="624" height="351" data="http://www.vimeo.com/moogaloop.swf?clip_id=837947&amp;server=www.vimeo.com&amp;fullscreen=1&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=00adef"><param name="quality" value="best" /><param name="allowfullscreen" value="true" /><param name="scale" value="showAll" /><param name="movie" value="http://www.vimeo.com/moogaloop.swf?clip_id=837947 &amp;server=www.vimeo.com&amp;fullscreen=1&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=00adef" /></object><br />
    <br />
    <a href="http://www.vimeo.com/837947/l:embed_837947">view this in HD (which is highly recommended)</a>
</div>
<p></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.craig-mackenzie.com/2008/03/29/pixel-path-take-2/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Pixel Path: my preliminary steps into generative art</title>
		<link>http://blog.craig-mackenzie.com/2008/02/25/pixel-path-my-preliminary-steps-into-generative-art/</link>
		<comments>http://blog.craig-mackenzie.com/2008/02/25/pixel-path-my-preliminary-steps-into-generative-art/#comments</comments>
		<pubDate>Mon, 25 Feb 2008 06:03:20 +0000</pubDate>
		<dc:creator>craig mackenzie</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[i am geek]]></category>
		<category><![CDATA[art]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[generated]]></category>
		<category><![CDATA[generative art]]></category>
		<category><![CDATA[processing]]></category>

		<guid isPermaLink="false">http://blog.craig-mackenzie.com/2008/02/25/pixel-path-my-preliminary-steps-into-generative-art/</guid>
		<description><![CDATA[

	I first discovered Processing in the summer of 2005. I downloaded the source code, had a play around with it and decided it wasn&#8217;t going to be worth me learning it. At the time I was very much design oriented in my endeavors and although I knew vaguely what the capabilities of Processing were, it&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p><img src="/stuff/processing/generative-art-25-feb-08/title.jpg" /></p>
<p>
	I first discovered <a href="http://processing.org/">Processing</a> in the summer of 2005. I downloaded the source code, had a play around with it and decided it wasn&#8217;t going to be worth me learning it. At the time I was very much design oriented in my endeavors and although I knew vaguely what the capabilities of Processing were, it&#8217;s lack of a substantial IDE or drawing tools made it no competitor to my main focus at the time: Flash.
</p>
<h2>Rediscovery <span class="amp">&amp;</span> Inspiration</h2>
<p>
	Fast forward 3 years and I&#8217;m now a developer, a code junkie, a command-line ninja. Although I sometimes miss the creativity that you get with design, I still love the <em>art</em> of writing code. I want the excitement of motion, interaction and form but also want the <em>challenge</em> of writing elegant software&#8230; I&#8217;d been thinking about re-visiting processing for a long time, hopefully it would satisfy these needs. I often kept an eye on the likes of <a href="http://www.number27.org/">Jonathan Harris</a> &amp; <a href="http://www.flight404.com/">Flight 404</a> to see what they were up to, and was always inspired by the cool things these guys were doing with processing + generative art in general.
</p>
<p>
	It was when a guy at work, <a href="http://www.davidstanden.com">David Standen</a> started going on about processing, and his love for it that I thought &#8220;maybe i should look at this again&#8221;. I am after all now a programmer, and Processing is a DSL around Java, so why not learn it? I downloaded the latest version and started playing around&#8230;
</p>
<p><span id="more-63"></span></p>
<h2>Enter Pixel Path</h2>
<p>
	I wanted something different, I ignored &#8220;good code&#8221; and went straight for the fun and creative, something non-interactive maybe. So what to do? I&#8217;ve always been really annoyed by the fact that I can&#8217;t really draw very well and I&#8217;ve never painted a picture in my life, so I decided to try and create some software that would create gorgeous looking &#8220;things&#8221;. Generative Art.
</p>
<p>
	Inspired by <a href="http://www.davidstanden.com/blog/?p=19">this post</a> I set about creating what would later become known as &#8220;Pixel Path&#8221;. The idea was simple, to analyze a given image, pixel by pixel and map every pixel to all other pixels of the same colour. Pixels would be identified by a dot and connected by lines, hopefully creating a sense of depth, texture and form.
</p>
<h2>Version 1 &#8211; Moss</h2>
<p>
	The first version is based on a macro shot of a leaf, it maps every 100th pixel to up to another 100 pixels of identical colour. (Galleries each have 5 parts, use the thumbnails to scroll through them all.)
</p>
<p>
	Total Pixels: <strong>1,296,000</strong> | Analyzed: <strong>12,960</strong> | Paths: <strong>1,296,000</strong>
</p>
<div class="scroll-gallery">
  <span>p1 &#8211; Moss</span></p>
<div class="gal-main" style="height:375px;">
<div id="moss-container">
      <img src="/stuff/processing/generative-art-25-feb-08/web/p1-moss-01_web.jpg" /><br />
      <img src="/stuff/processing/generative-art-25-feb-08/web/p1-moss-02_web.jpg" /><br />
      <img src="/stuff/processing/generative-art-25-feb-08/web/p1-moss-03_web.jpg" /><br />
      <img src="/stuff/processing/generative-art-25-feb-08/web/p1-moss-04_web.jpg" /><br />
      <img src="/stuff/processing/generative-art-25-feb-08/web/p1-moss-05_web.jpg" />
    </div>
</p></div>
<ul>
<li><a href="#" onclick="scrollGallery('moss-container',0); return false;"    title="part 1"><img src="/stuff/processing/generative-art-25-feb-08/thumb/p1-moss-01_tn.jpg" /></a></li>
<li><a href="#" onclick="scrollGallery('moss-container',375); return false;"  title="part 2"><img src="/stuff/processing/generative-art-25-feb-08/thumb/p1-moss-02_tn.jpg" /></a></li>
<li><a href="#" onclick="scrollGallery('moss-container',750); return false;"  title="part 3"><img src="/stuff/processing/generative-art-25-feb-08/thumb/p1-moss-03_tn.jpg" /></a></li>
<li><a href="#" onclick="scrollGallery('moss-container',1125); return false;" title="part 4"><img src="/stuff/processing/generative-art-25-feb-08/thumb/p1-moss-04_tn.jpg" /></a></li>
<li><a href="#" onclick="scrollGallery('moss-container',1500); return false;" title="part 5"><img src="/stuff/processing/generative-art-25-feb-08/thumb/p1-moss-05_tn.jpg" /></a></li>
</ul>
<p>      <span class="flickr-link"><a href="http://www.flickr.com/photos/craigtmackenzie/sets/72157603983153085/" title="Pixel Path - a photoset on Flickr">view larger on flickr</a></span><br />
      
</div>
<h2>Version 2 &#8211; Skin</h2>
<p>
	In the second version I tweaked the algorithms to introduce more depth, points are rendered at 80% opacity and paths at 20%. The amount of pixels to be analyzed was also reduced to every 3500th, but the mapping limit increased to 1000 paths. The reference image was a macro shot of a group of feathers.
</p>
<p>
	Total Pixels: <strong>1,296,000</strong> | Analyzed: <strong>370</strong> | Paths: <strong>370,000</strong>
</p>
<div class="scroll-gallery">
  <span>p2 &#8211; Skin</span></p>
<div class="gal-main" style="height:375px;">
<div id="skin-container">
      <img src="/stuff/processing/generative-art-25-feb-08/web/p2-skin-01_web.jpg" /><br />
      <img src="/stuff/processing/generative-art-25-feb-08/web/p2-skin-02_web.jpg" /><br />
      <img src="/stuff/processing/generative-art-25-feb-08/web/p2-skin-03_web.jpg" /><br />
      <img src="/stuff/processing/generative-art-25-feb-08/web/p2-skin-04_web.jpg" /><br />
      <img src="/stuff/processing/generative-art-25-feb-08/web/p2-skin-05_web.jpg" />
    </div>
</p></div>
<ul>
<li><a href="#" onclick="scrollGallery('skin-container',0); return false;"    title="part 1"><img src="/stuff/processing/generative-art-25-feb-08/thumb/p2-skin-01_tn.jpg" /></a></li>
<li><a href="#" onclick="scrollGallery('skin-container',375); return false;"  title="part 2"><img src="/stuff/processing/generative-art-25-feb-08/thumb/p2-skin-02_tn.jpg" /></a></li>
<li><a href="#" onclick="scrollGallery('skin-container',750); return false;"  title="part 3"><img src="/stuff/processing/generative-art-25-feb-08/thumb/p2-skin-03_tn.jpg" /></a></li>
<li><a href="#" onclick="scrollGallery('skin-container',1125); return false;" title="part 4"><img src="/stuff/processing/generative-art-25-feb-08/thumb/p2-skin-04_tn.jpg" /></a></li>
<li><a href="#" onclick="scrollGallery('skin-container',1500); return false;" title="part 5"><img src="/stuff/processing/generative-art-25-feb-08/thumb/p2-skin-05_tn.jpg" /></a></li>
</ul>
<p>  <span class="flickr-link"><a href="http://www.flickr.com/photos/craigtmackenzie/sets/72157603983153085/" title="Pixel Path - a photoset on Flickr">view larger on flickr</a></span><br />
  
</div>
<h2>Version 3 &#8211; Paprika</h2>
<p>
	The third version used bezier curves to draw the paths with control points offset against the difference between the reference and target pixel. Every 850th pixel was analyzed up to 100 paths. The reference pixels in this version were distinguished with near 100% opacity. The image used was that of a red rose petal.
</p>
<p>
	Total Pixels: <strong>1,296,000</strong> | Analyzed: <strong>1,524</strong> | Paths: <strong>152,400</strong>
</p>
<div class="scroll-gallery">
  <span>p3 &#8211; Paprika</span></p>
<div class="gal-main" style="height:375px;">
<div id="paprika-container">
      <img src="/stuff/processing/generative-art-25-feb-08/web/p3-paprika-01_web.jpg" /><br />
      <img src="/stuff/processing/generative-art-25-feb-08/web/p3-paprika-02_web.jpg" /><br />
      <img src="/stuff/processing/generative-art-25-feb-08/web/p3-paprika-03_web.jpg" /><br />
      <img src="/stuff/processing/generative-art-25-feb-08/web/p3-paprika-04_web.jpg" /><br />
      <img src="/stuff/processing/generative-art-25-feb-08/web/p3-paprika-05_web.jpg" />
    </div>
</p></div>
<ul>
<li><a href="#" onclick="scrollGallery('paprika-container',0); return false;"    title="part 1"><img src="/stuff/processing/generative-art-25-feb-08/thumb/p3-paprika-01_tn.jpg" /></a></li>
<li><a href="#" onclick="scrollGallery('paprika-container',375); return false;"  title="part 2"><img src="/stuff/processing/generative-art-25-feb-08/thumb/p3-paprika-02_tn.jpg" /></a></li>
<li><a href="#" onclick="scrollGallery('paprika-container',750); return false;"  title="part 3"><img src="/stuff/processing/generative-art-25-feb-08/thumb/p3-paprika-03_tn.jpg" /></a></li>
<li><a href="#" onclick="scrollGallery('paprika-container',1125); return false;" title="part 4"><img src="/stuff/processing/generative-art-25-feb-08/thumb/p3-paprika-04_tn.jpg" /></a></li>
<li><a href="#" onclick="scrollGallery('paprika-container',1500); return false;" title="part 5"><img src="/stuff/processing/generative-art-25-feb-08/thumb/p3-paprika-05_tn.jpg" /></a></li>
</ul>
<p>  <span class="flickr-link"><a href="http://www.flickr.com/photos/craigtmackenzie/sets/72157603983153085/" title="Pixel Path - a photoset on Flickr">view larger on flickr</a></span><br />
  
</div>
<h2>Version 4 &#8211; Rose</h2>
<p>
	For version 4 I abandoned the dots for marking pixels, and instead relied on just the paths. The bezier curves were tweaked slightly to create smoother lines and only every 250th pixel was analyzed, up to 100 paths. The reference image was another rose petal, in pink.
</p>
<p>
	Total Pixels: <strong>1,296,000</strong> | Analyzed: <strong>5,184</strong> | Paths: <strong>518,400</strong>
</p>
<div class="scroll-gallery">
  <span>p4 &#8211; Rose</span></p>
<div class="gal-main" style="height:375px;">
<div id="rose-container">
      <img src="/stuff/processing/generative-art-25-feb-08/web/p4-rose-01_web.jpg" /><br />
      <img src="/stuff/processing/generative-art-25-feb-08/web/p4-rose-02_web.jpg" /><br />
      <img src="/stuff/processing/generative-art-25-feb-08/web/p4-rose-03_web.jpg" /><br />
      <img src="/stuff/processing/generative-art-25-feb-08/web/p4-rose-04_web.jpg" /><br />
      <img src="/stuff/processing/generative-art-25-feb-08/web/p4-rose-05_web.jpg" />
    </div>
</p></div>
<ul>
<li><a href="#" onclick="scrollGallery('rose-container',0); return false;"    title="part 1"><img src="/stuff/processing/generative-art-25-feb-08/thumb/p4-rose-01_tn.jpg" /></a></li>
<li><a href="#" onclick="scrollGallery('rose-container',375); return false;"  title="part 2"><img src="/stuff/processing/generative-art-25-feb-08/thumb/p4-rose-02_tn.jpg" /></a></li>
<li><a href="#" onclick="scrollGallery('rose-container',750); return false;"  title="part 3"><img src="/stuff/processing/generative-art-25-feb-08/thumb/p4-rose-03_tn.jpg" /></a></li>
<li><a href="#" onclick="scrollGallery('rose-container',1125); return false;" title="part 4"><img src="/stuff/processing/generative-art-25-feb-08/thumb/p4-rose-04_tn.jpg" /></a></li>
<li><a href="#" onclick="scrollGallery('rose-container',1500); return false;" title="part 5"><img src="/stuff/processing/generative-art-25-feb-08/thumb/p4-rose-05_tn.jpg" /></a></li>
</ul>
<p>  <span class="flickr-link"><a href="http://www.flickr.com/photos/craigtmackenzie/sets/72157603983153085/" title="Pixel Path - a photoset on Flickr">view larger on flickr</a></span><br />
  
</div>
<h2>Version 5 &#8211; White</h2>
<p>
	Version 5 was a slight departure from the norm, I inverted the canvas colour and this time decided to map the reference pixel to it&#8217;s first match, then all other matches to the next match (creating a flowing path) This version also draws two sets of paths for every match, one straight and one curved. Opacities were also massively reduced to only 5% and analyzed pixels increased to every 900th for up to 1000 paths. The first reference image was a different set of feathers and the second a forest scene.
</p>
<p>
	Total Pixels: <strong>1,296,000</strong> | Analyzed: <strong>1,440</strong> | Paths: <strong>1,440,000</strong>
</p>
<div class="scroll-gallery">
  <span>p5 &#8211; White</span></p>
<div class="gal-main" style="height:375px;">
<div id="white-container">
      <img src="/stuff/processing/generative-art-25-feb-08/web/p5-white-01_web.jpg" /><br />
      <img src="/stuff/processing/generative-art-25-feb-08/web/p5-white-02_web.jpg" /><br />
      <img src="/stuff/processing/generative-art-25-feb-08/web/p5-white-03_web.jpg" /><br />
      <img src="/stuff/processing/generative-art-25-feb-08/web/p5-white-04_web.jpg" /><br />
      <img src="/stuff/processing/generative-art-25-feb-08/web/p5-white-05_web.jpg" />
    </div>
</p></div>
<ul>
<li><a href="#" onclick="scrollGallery('white-container',0); return false;"    title="part 1"><img src="/stuff/processing/generative-art-25-feb-08/thumb/p5-white-01_tn.jpg" /></a></li>
<li><a href="#" onclick="scrollGallery('white-container',375); return false;"  title="part 2"><img src="/stuff/processing/generative-art-25-feb-08/thumb/p5-white-02_tn.jpg" /></a></li>
<li><a href="#" onclick="scrollGallery('white-container',750); return false;"  title="part 3"><img src="/stuff/processing/generative-art-25-feb-08/thumb/p5-white-03_tn.jpg" /></a></li>
<li><a href="#" onclick="scrollGallery('white-container',1125); return false;" title="part 4"><img src="/stuff/processing/generative-art-25-feb-08/thumb/p5-white-04_tn.jpg" /></a></li>
<li><a href="#" onclick="scrollGallery('white-container',1500); return false;" title="part 5"><img src="/stuff/processing/generative-art-25-feb-08/thumb/p5-white-05_tn.jpg" /></a></li>
</ul>
<p>  <span class="flickr-link"><a href="http://www.flickr.com/photos/craigtmackenzie/sets/72157603983153085/" title="Pixel Path - a photoset on Flickr">view larger on flickr</a></span><br />
  
</div>
<h2>Version 5 &#8211; Forest</h2>
<div class="scroll-gallery">
  <span>p5 &#8211; Forest</span></p>
<div class="gal-main" style="height:375px;">
<div id="forest-container">
      <img src="/stuff/processing/generative-art-25-feb-08/web/p5-forest-01_web.jpg" /><br />
      <img src="/stuff/processing/generative-art-25-feb-08/web/p5-forest-02_web.jpg" /><br />
      <img src="/stuff/processing/generative-art-25-feb-08/web/p5-forest-03_web.jpg" /><br />
      <img src="/stuff/processing/generative-art-25-feb-08/web/p5-forest-04_web.jpg" /><br />
      <img src="/stuff/processing/generative-art-25-feb-08/web/p5-forest-05_web.jpg" />
    </div>
</p></div>
<ul>
<li><a href="#" onclick="scrollGallery('forest-container',0); return false;"    title="part 1"><img src="/stuff/processing/generative-art-25-feb-08/thumb/p5-forest-01_tn.jpg" /></a></li>
<li><a href="#" onclick="scrollGallery('forest-container',375); return false;"  title="part 2"><img src="/stuff/processing/generative-art-25-feb-08/thumb/p5-forest-02_tn.jpg" /></a></li>
<li><a href="#" onclick="scrollGallery('forest-container',750); return false;"  title="part 3"><img src="/stuff/processing/generative-art-25-feb-08/thumb/p5-forest-03_tn.jpg" /></a></li>
<li><a href="#" onclick="scrollGallery('forest-container',1125); return false;" title="part 4"><img src="/stuff/processing/generative-art-25-feb-08/thumb/p5-forest-04_tn.jpg" /></a></li>
<li><a href="#" onclick="scrollGallery('forest-container',1500); return false;" title="part 5"><img src="/stuff/processing/generative-art-25-feb-08/thumb/p5-forest-05_tn.jpg" /></a></li>
</ul>
<p>  <span class="flickr-link"><a href="http://www.flickr.com/photos/craigtmackenzie/sets/72157603983153085/" title="Pixel Path - a photoset on Flickr">view larger on flickr</a></span><br />
  
</div>
<h2>Next Steps</h2>
<ul>
<li>Introduce an element of randomness.</li>
<li>Experiment with noise.</li>
<li>Experiment with blending.</li>
<li>Introduce the z-axis.</li>
<li>Try using particles to generate &#8220;ink splats&#8221;.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.craig-mackenzie.com/2008/02/25/pixel-path-my-preliminary-steps-into-generative-art/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>blah.</title>
		<link>http://blog.craig-mackenzie.com/2007/07/02/blah/</link>
		<comments>http://blog.craig-mackenzie.com/2007/07/02/blah/#comments</comments>
		<pubDate>Mon, 02 Jul 2007 14:59:27 +0000</pubDate>
		<dc:creator>craig mackenzie</dc:creator>
				<category><![CDATA[i am geek]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[life]]></category>

		<guid isPermaLink="false">http://blog.craig-mackenzie.com/2007/07/02/blah/</guid>
		<description><![CDATA[i&#8217;m done with it.
i&#8217;m going to quit the internet. yep. thats right.
well no, actually that&#8217;s a lie. but i am in love with serif fonts all over again.
monospace turns me on.
lolcatz are teh godzizez.
mondays suck.
]]></description>
			<content:encoded><![CDATA[<p>i&#8217;m done with it.</p>
<p>i&#8217;m going to quit the internet. yep. thats right.</p>
<p>well no, actually that&#8217;s a lie. but i am in love with serif fonts all over again.</p>
<p>monospace turns me on.</p>
<p>lolcatz are teh godzizez.</p>
<p>mondays suck.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.craig-mackenzie.com/2007/07/02/blah/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RailsConf 2007: All Over</title>
		<link>http://blog.craig-mackenzie.com/2007/05/23/railsconf-2007-all-over/</link>
		<comments>http://blog.craig-mackenzie.com/2007/05/23/railsconf-2007-all-over/#comments</comments>
		<pubDate>Wed, 23 May 2007 13:49:25 +0000</pubDate>
		<dc:creator>craig mackenzie</dc:creator>
				<category><![CDATA[i am geek]]></category>
		<category><![CDATA[ruby/rails]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[railsconf]]></category>
		<category><![CDATA[railsconf2007]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://blog.craig-mackenzie.com/2007/05/23/railsconf-2007-all-over/</guid>
		<description><![CDATA[RailsConf 2007 is over, I&#8217;m back in the UK, thousands of miles away from the lovely Portland, back into the normal swing of things, back on the train, just back where I was. weird feeling.
Community
RailsConf rocked, so much more than I could have hoped for an so many levels, the content was brilliant the people [...]]]></description>
			<content:encoded><![CDATA[<p>RailsConf 2007 is over, I&#8217;m back in the UK, thousands of miles away from the lovely Portland, back into the normal swing of things, back on the train, just back where I was. weird feeling.</p>
<h2>Community</h2>
<p>RailsConf rocked, so much more than I could have hoped for an so many levels, the content was brilliant the people were amazing, organizationally the thing was a stunning success and what was achieved by the community and what was achieved by many people on an individual basis was amazing.</p>
<p>The feeling was very community focused, the Rails community has grown exponentially over the past year, and this was definitely reflected in the mix of and volume of people. I spoke to at least hundred Java developers, as well as some .NET folk and a whole mix of people from other languages. All here to have a little look at this web app frame work written in this crazy Ruby language.</p>
<p>The numbers as well, this year there were over 1600 people in attendance, last year 500, the year before there was no conference. In one year Rails as a community has grown so quickly, many many people are getting wealthy off the back of it, and I think this was Chad&#8217;s point on the first day, if we were all to use that for good, we can show the rest of the IT tech, hell the world, we can show them that we can make a difference. Well I think we were all listening, last time I checked we had raised over $33,000 in donations.</p>
<p>The community, as well as the framework have grown and matured, and it&#8217;s good to see companies like Adobe, Sun, O&#8217;rielly and Amazon making their presence at this conference for a framework only 2 years old.</p>
<h2>Enterprise</h2>
<p>As larger companies start to pay more attention to us it&#8217;s important to make sure we are ready to deal with what the enterprise world wants, through projects like JRuby and others.</p>
<p>Although this is good, in a way, I hope Rails will maintain it&#8217;s Opinion as it is spun off in all sorts of directions. It&#8217;s a little bit over my head if truth be known. But interest from larger companies can only mean good right? Probably wrong? I don&#8217;t know.</p>
<p>Enterprise anxiety was definitely a strong theme running the conference.</p>
<h2>REST</h2>
<p>REST was covered heavily at RailsConf also, there were over 4 separate talks on the subject. This is important I guess, as we hurtle towards Rails 2, REST is going to become more and more central to what it is the core team are thinking.</p>
<p>Plugin&#8217;s like Hamilton&#8217;s make_resourceful have already started popping up all over the place and getting knowledge on it all know while it&#8217;s still all EDGE-centric, is going to prove really useful down the line. DHH&#8217;s keynote actually helped to clarify one of my biggest concerns, nested resources, or something. Either way I have a better understanding of it all now.</p>
<p>RailsConf was an amazing experience, something I wouldn&#8217;t have changed. The best thing to come out of the whole thing was meeting 3 wonderful human beings, <a href="http://cumu.li">Anthony Ramm</a>, <a href="http://rev.dantripp.com">Dan Tripp</a> and <a href="http://jeremy.sydik.com/">Jeremy Sydik</a>. You three are amazing, Thank You for making the experience so welcoming and warm.</p>
<p>To summarize, I&#8217;ve met some amazingly talented, clever and inspirational people over the past 4 days. I&#8217;ve felt the power of the community to truly do something amazing and make a real difference, and above everything I&#8217;ve left with 3 brilliant friends.</p>
<p>Roll on RailsConf 2008.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.craig-mackenzie.com/2007/05/23/railsconf-2007-all-over/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RailsConf 2007: Day 4</title>
		<link>http://blog.craig-mackenzie.com/2007/05/21/railsconf-2007-day-4/</link>
		<comments>http://blog.craig-mackenzie.com/2007/05/21/railsconf-2007-day-4/#comments</comments>
		<pubDate>Mon, 21 May 2007 13:31:32 +0000</pubDate>
		<dc:creator>craig mackenzie</dc:creator>
				<category><![CDATA[i am geek]]></category>
		<category><![CDATA[ruby/rails]]></category>

		<guid isPermaLink="false">http://blog.craig-mackenzie.com/2007/05/21/railsconf-2007-day-4/</guid>
		<description><![CDATA[The last day of RailsConf was a sad one as well as an amazing one.
The Rails Way
Jamis Buck and Michael Koziarski of the rails core team presented a rundown of some of the more common questions they get asked on the Rails Way website.
They sorta tackled the thing from a tag-team perspective, each taking it [...]]]></description>
			<content:encoded><![CDATA[<p>The last day of RailsConf was a sad one as well as an amazing one.</p>
<h2>The Rails Way</h2>
<p>Jamis Buck and Michael Koziarski of the rails core team presented a rundown of some of the more common questions they get asked on the Rails Way website.</p>
<p>They sorta tackled the thing from a tag-team perspective, each taking it in turns to walk through a page of code and give lots of great advice.</p>
<p>There was an irc channel you could post questions to whilst the talk was going on, these were answered at the end.</p>
<p>The thing I found really valuable was with_options stuff for routing, I&#8217;m totally gonna be re-writing some killer route files.</p>
<p>Take this for example:</p>
<pre class="textmate-source"> <span class="source source_ruby source_ruby_rails">map<span class="punctuation punctuation_separator punctuation_separator_method punctuation_separator_method_ruby">.</span>create_message <span class="string string_quoted string_quoted_double string_quoted_double_ruby"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_ruby">"</span>/msg/create/:id<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_ruby">"</span></span><span class="punctuation punctuation_separator punctuation_separator_object punctuation_separator_object_ruby">,</span> <span class="constant constant_other constant_other_symbol constant_other_symbol_ruby"><span class="punctuation punctuation_definition punctuation_definition_constant punctuation_definition_constant_ruby">:</span>controller</span> <span class="punctuation punctuation_separator punctuation_separator_key-value">=></span> <span class="string string_quoted string_quoted_double string_quoted_double_ruby"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_ruby">"</span>message<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_ruby">"</span></span><span class="punctuation punctuation_separator punctuation_separator_object punctuation_separator_object_ruby">,</span> <span class="constant constant_other constant_other_symbol constant_other_symbol_ruby"><span class="punctuation punctuation_definition punctuation_definition_constant punctuation_definition_constant_ruby">:</span>action</span> <span class="punctuation punctuation_separator punctuation_separator_key-value">=></span> <span class="string string_quoted string_quoted_double string_quoted_double_ruby"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_ruby">"</span>create<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_ruby">"</span></span>
 map<span class="punctuation punctuation_separator punctuation_separator_method punctuation_separator_method_ruby">.</span>create_message <span class="string string_quoted string_quoted_double string_quoted_double_ruby"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_ruby">"</span>/msg/edit/:id<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_ruby">"</span></span><span class="punctuation punctuation_separator punctuation_separator_object punctuation_separator_object_ruby">,</span> <span class="constant constant_other constant_other_symbol constant_other_symbol_ruby"><span class="punctuation punctuation_definition punctuation_definition_constant punctuation_definition_constant_ruby">:</span>controller</span> <span class="punctuation punctuation_separator punctuation_separator_key-value">=></span> <span class="string string_quoted string_quoted_double string_quoted_double_ruby"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_ruby">"</span>message<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_ruby">"</span></span><span class="punctuation punctuation_separator punctuation_separator_object punctuation_separator_object_ruby">,</span> <span class="constant constant_other constant_other_symbol constant_other_symbol_ruby"><span class="punctuation punctuation_definition punctuation_definition_constant punctuation_definition_constant_ruby">:</span>action</span> <span class="punctuation punctuation_separator punctuation_separator_key-value">=></span> <span class="string string_quoted string_quoted_double string_quoted_double_ruby"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_ruby">"</span>edit<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_ruby">"</span></span>
 map<span class="punctuation punctuation_separator punctuation_separator_method punctuation_separator_method_ruby">.</span>create_message <span class="string string_quoted string_quoted_double string_quoted_double_ruby"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_ruby">"</span>/msg/delete/:id<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_ruby">"</span></span><span class="punctuation punctuation_separator punctuation_separator_object punctuation_separator_object_ruby">,</span> <span class="constant constant_other constant_other_symbol constant_other_symbol_ruby"><span class="punctuation punctuation_definition punctuation_definition_constant punctuation_definition_constant_ruby">:</span>controller</span> <span class="punctuation punctuation_separator punctuation_separator_key-value">=></span> <span class="string string_quoted string_quoted_double string_quoted_double_ruby"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_ruby">"</span>message<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_ruby">"</span></span><span class="punctuation punctuation_separator punctuation_separator_object punctuation_separator_object_ruby">,</span> <span class="constant constant_other constant_other_symbol constant_other_symbol_ruby"><span class="punctuation punctuation_definition punctuation_definition_constant punctuation_definition_constant_ruby">:</span>action</span> <span class="punctuation punctuation_separator punctuation_separator_key-value">=></span> <span class="string string_quoted string_quoted_double string_quoted_double_ruby"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_ruby">"</span>delete<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_ruby">"</span></span></span></pre>
<p>And turn it into this:</p>
<pre class="textmate-source"> <span class="source source_ruby source_ruby_rails">map<span class="punctuation punctuation_separator punctuation_separator_method punctuation_separator_method_ruby">.</span>with_options <span class="constant constant_other constant_other_symbol constant_other_symbol_ruby"><span class="punctuation punctuation_definition punctuation_definition_constant punctuation_definition_constant_ruby">:</span>controller</span> <span class="punctuation punctuation_separator punctuation_separator_key-value">=></span> <span class="string string_quoted string_quoted_double string_quoted_double_ruby"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_ruby">"</span>message<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_ruby">"</span></span> <span class="keyword keyword_control keyword_control_ruby keyword_control_ruby_start-block">do </span><span class="punctuation punctuation_separator punctuation_separator_variable punctuation_separator_variable_ruby">|</span><span class="variable variable_other variable_other_block variable_other_block_ruby">msg</span><span class="punctuation punctuation_separator punctuation_separator_variable punctuation_separator_variable_ruby">|</span>
   msg<span class="punctuation punctuation_separator punctuation_separator_method punctuation_separator_method_ruby">.</span>create_message <span class="string string_quoted string_quoted_double string_quoted_double_ruby"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_ruby">"</span>/msg/create/:id<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_ruby">"</span></span><span class="punctuation punctuation_separator punctuation_separator_object punctuation_separator_object_ruby">,</span> <span class="constant constant_other constant_other_symbol constant_other_symbol_ruby"><span class="punctuation punctuation_definition punctuation_definition_constant punctuation_definition_constant_ruby">:</span>action</span> <span class="punctuation punctuation_separator punctuation_separator_key-value">=></span> <span class="string string_quoted string_quoted_double string_quoted_double_ruby"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_ruby">"</span>create<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_ruby">"</span></span>
   msg<span class="punctuation punctuation_separator punctuation_separator_method punctuation_separator_method_ruby">.</span>delete_message <span class="string string_quoted string_quoted_double string_quoted_double_ruby"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_ruby">"</span>/msg/edit/:id<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_ruby">"</span></span><span class="punctuation punctuation_separator punctuation_separator_object punctuation_separator_object_ruby">,</span> <span class="constant constant_other constant_other_symbol constant_other_symbol_ruby"><span class="punctuation punctuation_definition punctuation_definition_constant punctuation_definition_constant_ruby">:</span>action</span> <span class="punctuation punctuation_separator punctuation_separator_key-value">=></span> <span class="string string_quoted string_quoted_double string_quoted_double_ruby"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_ruby">"</span>edit<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_ruby">"</span></span>
   msg<span class="punctuation punctuation_separator punctuation_separator_method punctuation_separator_method_ruby">.</span>delete_message <span class="string string_quoted string_quoted_double string_quoted_double_ruby"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_ruby">"</span>/msg/delete/:id<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_ruby">"</span></span><span class="punctuation punctuation_separator punctuation_separator_object punctuation_separator_object_ruby">,</span> <span class="constant constant_other constant_other_symbol constant_other_symbol_ruby"><span class="punctuation punctuation_definition punctuation_definition_constant punctuation_definition_constant_ruby">:</span>action</span> <span class="punctuation punctuation_separator punctuation_separator_key-value">=></span> <span class="string string_quoted string_quoted_double string_quoted_double_ruby"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_ruby">"</span>delete<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_ruby">"</span></span>
 <span class="keyword keyword_control keyword_control_ruby">end</span></span></pre>
<p>I think it&#8217;s much clearer, and way more descriptive.</p>
<h2>Choose Your Battles and LetIt::REST</h2>
<p>This was Hampton&#8217;s talk about REST (there was lots of REST talk at RailsConf) this one was more about implementation than theory, or practice. Which was good. It also took from the perspective of the current REST code in EDGE (unlike Vonage). Again refreshing.</p>
<p>The focus was on a new plugin they had developed (ham an the guys at unspace) originally called letItRest, now renamed make_resourceful. The plugin addresses the amount of duplication necessary to implement a RESTful interface, it seems to be a bit like a scaffold/code-generator type thing, which is cool, and although we&#8217;re promised it&#8217;s very easy to still get your edge-cases/exceptions in there, I can&#8217;t help but wonder how it &#8220;feels&#8221;. I&#8217;m definitely going to give it a go though.</p>
<p>The talk it&#8217;s self seemed over quite quickly, there were some funny slides, which helped break up the code slides, the pace was good and Hampton is a great talker.</p>
<h2>Rubber, Meet Road</h2>
<p>Amy Hoy&#8217;s talk focused on finding the comfortable place between designer and developer to let communication flourish, as well as touching on the two mindsets, how they work together, how they fight and why.</p>
<p>Amy (like myself) is a programmer with a designer background. This was really useful for me to help identify the thought patterns in my mind that are clearly designer and those that fit squarely in the dev head box. It also helped to reveal how far work (as in my 9-5, not just work in general) has yet to go to be truly productive.</p>
<p>The talk itself was very fun, lots of funny slides, some jokes and healthy dose of sarcasm. Great fun.</p>
<h2>Dave Thomas&#8217;s Keynote</h2>
<p>Dave Thomas&#8217;s ending keynote was good, i&#8217;d like to say I was paying him 100% attention but me and ant were buying domains for an upcoming project I&#8217;m going to be collaborating with him on.</p>
<p>From what I can gather the keynote was about community, charity and cargo-cult mentality. It ended with Dave asking us all to have fun. Which is cool.</p>
<p>After the final keynote was a meet and greet in the reception area, me, ant dan and jeremy ditched in favor of mexican and beer. Awesome.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.craig-mackenzie.com/2007/05/21/railsconf-2007-day-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RailsConf 2007: Day 3</title>
		<link>http://blog.craig-mackenzie.com/2007/05/20/railsconf-2007-day-3/</link>
		<comments>http://blog.craig-mackenzie.com/2007/05/20/railsconf-2007-day-3/#comments</comments>
		<pubDate>Sun, 20 May 2007 19:16:15 +0000</pubDate>
		<dc:creator>craig mackenzie</dc:creator>
				<category><![CDATA[i am geek]]></category>
		<category><![CDATA[ruby/rails]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[railsconf]]></category>
		<category><![CDATA[railsconf2007]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://blog.craig-mackenzie.com/2007/05/20/railsconf-2007-day-3/</guid>
		<description><![CDATA[Saturday was a slightly shorter day here at RailsConf and went like this
Bring Ruby to the Enterprise. Not the Other Way &#8216;Round
Cyndi Mitchell&#8217;s opening keynote was very good, although the community may not like It (in certain circles) there Is a need to educate and support enterprising companies about the virtues of rails/ruby. 
Cyndi&#8217;s talk [...]]]></description>
			<content:encoded><![CDATA[<p>Saturday was a slightly shorter day here at RailsConf and went like this</p>
<h2>Bring Ruby to the Enterprise. Not the Other Way &#8216;Round</h2>
<p>Cyndi Mitchell&#8217;s opening keynote was very good, although the community may not like It (in certain circles) there Is a need to educate and support enterprising companies about the virtues of rails/ruby. </p>
<p>Cyndi&#8217;s talk was very well paced and touched on some humorous comparisons between pop culture and tech-industry, some of her slides were awesome too. A good start to the day.</p>
<h2>Tim Bray</h2>
<p>Tim bray&#8217;s keynote was again on rails / enterprise, sun&#8217;s position on It, his passion for It. To be honest a lot of went over my head, I was really tired. That guy seems awesome though.</p>
<h2>Custom Rails Helpers: Keeping Your Views DRY</h2>
<p>The first session of the day focused on DRYing up your views with custom helpers, this was cool, not from a  &#8220;i&#8217;m learning something new&#8221; perspective, more from a &#8220;I do this already, I&#8217;m so glad I&#8217;m doing right&#8221;</p>
<p>Although the session taught me nothing new, It did validate a lot of the work of been doing on helpers, so It felt kinda cool. was very busy.</p>
<h2>Memcaching Rails</h2>
<p>Chris Wanstrath, of <a href="http://errtheblog.com/" title="err.the_blog">err the blog</a> fame (that&#8217;s where I heard of him anyway) presented this talk.</p>
<p>It focused on the probleming of caching, and his solution cache_fu. It was a really Insightful session with some wicked slides, and chris himself Is super animated, which Is always good.</p>
<p>It left me with enough knowledge to know where to start with caching, that Is when I need It.</p>
<h2>The Dark Art of Developing Plugins</h2>
<p>This session was really cool, It walked through making a simple plugin and was themed like a horror flick. wicked.</p>
<p>The really Insightful stuff was about ruby, extending and overwriting and all that jazz, was way cool. that class_eval method Is some crazy ass ninja kung fu.</p>
<p>Makes me wanna wrap up some common stuff Into plugins now.</p>
<h2>Data Warehouses with ActiveWarehouse</h2>
<p>This was way more high brow than I was expecting, and although I was following along alright top begin with, as soon as the concept of cubes and dimensional data aggregation started I had to walk.</p>
<p>But If the need every came along to churn through piles of data and make It relevant, this would be my starting post.</p>
<p>The day ended In a chinese restaurant, with my sipping beer from a tea cup.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.craig-mackenzie.com/2007/05/20/railsconf-2007-day-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RailsConf 2007: Day 2</title>
		<link>http://blog.craig-mackenzie.com/2007/05/19/railsconf-2007-day-2/</link>
		<comments>http://blog.craig-mackenzie.com/2007/05/19/railsconf-2007-day-2/#comments</comments>
		<pubDate>Sat, 19 May 2007 17:42:18 +0000</pubDate>
		<dc:creator>craig mackenzie</dc:creator>
				<category><![CDATA[i am geek]]></category>
		<category><![CDATA[ruby/rails]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[railsconf]]></category>
		<category><![CDATA[railsconf2007]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://blog.craig-mackenzie.com/2007/05/19/railsconf-2007-day-2/</guid>
		<description><![CDATA[The second day of RailsConf was long&#8230; very long.
Chad Fowler&#8217;s Intro
The day kicked off with chad fowler opening the keynote with an important message: &#8220;Everyone thinks we are a bunch of arrogant bastards.&#8221; People laughed at this at first, but as he kept talking what he was saying become apparent, as our community grows more [...]]]></description>
			<content:encoded><![CDATA[<p>The second day of RailsConf was long&#8230; very long.</p>
<h2>Chad Fowler&#8217;s Intro</h2>
<p>The day kicked off with chad fowler opening the keynote with an important message: &#8220;Everyone thinks we are a bunch of arrogant bastards.&#8221; People laughed at this at first, but as he kept talking what he was saying become apparent, as our community grows more and more of us are becoming wealthy off the back of rails it becomes important to prove to the rest of the world that we can make a difference.</p>
<p>It was an important message, there are nearly 2000 people at RailsConf and if we each donated $100 to the Pragmatic Studio&#8217;s Charity of Choice we can prove to people that we can change the world.</p>
<p>Or something.</p>
<h2>DHH&#8217;s Keynote</h2>
<p>David&#8217;s keynote was good, the focus was on Rails 2, recapping the features introducing some minor new features, and indicating which features are going to be removed.</p>
<p>One of the things he highlighted which definitely got me excited was some further clarification on and enhancements to the way that RESTful routing works, my biggest gripe with that was admin/backend routing and implementing REST in all situation.</p>
<p>This has been cleaned up a lot and you can now namespace your RESTful routes / resources. </p>
<p>Another neat thing was the respond_to stuff, it now seems (i might be wrong) that this has become transparent in detecting and routing mime types. which is nice.</p>
<p>ActiveResource looks sweet. It&#8217;s going to be replacing ActiveWebService and is completely focused on consuming REST interfaces. REST is one of the main focuses of Rails 2, it&#8217;s the new opinion, if you&#8217;re going to be devleoping an app, it should be REST routed, APIs should be based on REST. Good opinions.</p>
<h2>respond_to :voice</h2>
<p>This was the first session of the day, at it fucking rocked.</p>
<p>It was an introduction to using the Asterisk PBX with rails, using a new plugin called Telegraph.</p>
<p>I looked into Asterisk a while ago, and the AGI config files are just horrible, hundreds of lines of extraneous repetitive code. nasty.</p>
<p>Telegraph takes these AGI/AMI config files and wraps them in clean MVC ruby code. The thing that really got me going was the possibilities, the guy gave some demo&#8217;s and it&#8217;s really exciting. The general idea is that you can take your rails app and another interface for your users to interact with it in. Voice, using Asterisk and Telegraph will allow you to have your app call out to people, have people call in, consume data over the phone, maintain session data between the web and the phone network (super sweet).</p>
<p>I really cant wait to get going with it.</p>
<h2>Doing Rest Right</h2>
<p>I really really wanted this to be good. It wasn&#8217;t. Although it was insightful, and gave some brain food to chew over, it was a bit high-level and philosophical. I left early.</p>
<h2>Apollo</h2>
<p>This talk was kinda good, although not really Rails-centric, it was a nice introduction to the new Adobe cross-platform runtime for Flash/Flex/HTML/JS/PDF apps.</p>
<p>The really interesting thing is that all of the separate technologies supported inside of the runtime are treated as first class citizens with a common cross technology DOM to use.</p>
<p>You could basically have an Apollo app with an HTML viewer, and Flex/Flash component side by side, and cross-script between the two of them with a common DOM. Very neat.</p>
<p>Flex in general is something that I really need to get into (again)</p>
<h2>Avi Bryant&#8217;s Keynote</h2>
<p>Avi Bryant has been in and out of the Ruby community for a while, he&#8217;s a smalltalk advocate that works on the seaside project.</p>
<p>His talk was focused on the future of ruby, performance etc.</p>
<p>It was kinda good, a prompt to think of the future of our language. meh.</p>
<h2>Ze Frank&#8217;s Keynote</h2>
<p>Ze Frank, simply put is the fucking funniest thing ever. His keynote was more of a stand up comedy routine, with slides. The topic was accelerating anxiety.</p>
<p>I really can&#8217;t explain how good it was, you just have to google some of the stuff this guy has done. It was the perfect end to the day.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.craig-mackenzie.com/2007/05/19/railsconf-2007-day-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>RailsConf 2007: Day 1</title>
		<link>http://blog.craig-mackenzie.com/2007/05/18/railsconf-2007-day-1-2/</link>
		<comments>http://blog.craig-mackenzie.com/2007/05/18/railsconf-2007-day-1-2/#comments</comments>
		<pubDate>Fri, 18 May 2007 16:00:52 +0000</pubDate>
		<dc:creator>craig mackenzie</dc:creator>
				<category><![CDATA[i am geek]]></category>
		<category><![CDATA[ruby/rails]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[railsconf]]></category>
		<category><![CDATA[railsconf2007]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://blog.craig-mackenzie.com/2007/05/18/railsconf-2007-day-1-2/</guid>
		<description><![CDATA[So yesterday was my first day at RailsConf, it was great. The day was broken into two tutorial sessions with a break for lunch.
Intro to Test Driven Development with Rails
This tutorial was awesome, presented by David Chelimsky this really helped to solidify my understanding of TDD, as well as touching on and clarifying some aspects [...]]]></description>
			<content:encoded><![CDATA[<p>So yesterday was my first day at RailsConf, it was great. The day was broken into two tutorial sessions with a break for lunch.</p>
<h2>Intro to Test Driven Development with Rails</h2>
<p>This tutorial was awesome, presented by David Chelimsky this really helped to solidify my understanding of TDD, as well as touching on and clarifying some aspects of <a href="http://rspec.rubyforge.org/" title="RSpec Home">Rspec</a>.</p>
<p>The pace was good and the tutorial didn&#8217;t seem long enough, there was lots of good discussion and the code examples were great. </p>
<p>Part of the tutorial featured us &#8220;Pair Programming&#8221; (a practice from eXtreme Programming (XP)) The basic concept is one person writes a failing test, then the next writes just enough code to pass that test, then writes a another failing test for the previous person to fix, gradually the code is written and tested and passing mechanisms are refactored into useful clean code.</p>
<p>It was a really great exercise and provided a lot of value.</p>
<h2>Harnessing Capistrano</h2>
<p>The second tutorial of the day was presented by <a href="http://weblog.jamisbuck.org/" title="the { buckblogs :here }">Jamis Buck</a>, the creator of <a href="http://capistrano.org/">Capistrano</a> and core member that works at <a href="http://www.37signals.com/" title="Simple software to help you get organized: 37signals">37 Signals</a>.</p>
<p>I was really looking forward to this tutorial and although offered a lot of insight into the new feature of Capistrano 2.0, it was a little slow and dry. </p>
<p>I guess it&#8217;s kind of difficult to get excited about something without having a hands on experiance (there was no code writing in this tutorial) but it definitely left me with some ideas.</p>
<p>The day ended with Dan Tripp, Ant (another brit from Birmingham) and myself having dinner, drinking beer and talking g33k in a mexican joint downtown.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.craig-mackenzie.com/2007/05/18/railsconf-2007-day-1-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>RailsConf 2007</title>
		<link>http://blog.craig-mackenzie.com/2007/05/17/railsconf-2007-day-1/</link>
		<comments>http://blog.craig-mackenzie.com/2007/05/17/railsconf-2007-day-1/#comments</comments>
		<pubDate>Thu, 17 May 2007 14:55:42 +0000</pubDate>
		<dc:creator>craig mackenzie</dc:creator>
				<category><![CDATA[i am geek]]></category>
		<category><![CDATA[ruby/rails]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[railsconf]]></category>
		<category><![CDATA[railsconf2007]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://blog.craig-mackenzie.com/2007/05/17/railsconf-2007-day-1/</guid>
		<description><![CDATA[I&#8217;m currently sitting in exhibit hall c of the Oregon Convention Center enjoying a starbucks coffee, I&#8217;m at railsconf 07, my first tutorial (Intro to Test-Driven Development for Rails) starts in 45mins, the convention center is huge!
Getting here was easy, Portland has a tram system called the Max Light Rail, it&#8217;s free for most of [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m currently sitting in exhibit hall c of the Oregon Convention Center enjoying a starbucks coffee, I&#8217;m at railsconf 07, my first tutorial (Intro to Test-Driven Development for Rails) starts in 45mins, the convention center is huge!</p>
<p>Getting here was easy, Portland has a tram system called the Max Light Rail, it&#8217;s free for most of the city, and only took like 20mins.</p>
<p>There are a lot of people here already and I expect there will be even more tomorrow.</p>
<p>Portland is a beautiful city, I could honestly see living here, image paris without the dirt and smog, make the roads and paths wider, take away the awkward angles and turn them into blocks and you have portland. Why paris? The trees, image the Champs-Ã‰lysÃ©es only every block is like that. It&#8217;s really beautiful, I had a good wonder around yesterday, the sine was shining, the trees were green, it was lovely. A woman at the airport told me that portland has the feel of a big-town rather than a city. She was right.</p>
<p>My hotel (the <a href="http://hotellucia.com">hotel lucia</a>) is stunning. drop-dead-gorgeous. I also found a fabulous all-male designer underwear shop called Under U 4 Men, I dropped like $200 dollars in the already and I know I will go back.</p>
<p>All in all I&#8217;m having a great time so far.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.craig-mackenzie.com/2007/05/17/railsconf-2007-day-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>i got my project back!</title>
		<link>http://blog.craig-mackenzie.com/2006/10/23/i-got-my-project-back/</link>
		<comments>http://blog.craig-mackenzie.com/2006/10/23/i-got-my-project-back/#comments</comments>
		<pubDate>Sun, 22 Oct 2006 23:18:09 +0000</pubDate>
		<dc:creator>craig mackenzie</dc:creator>
				<category><![CDATA[i am geek]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://blog.craig-mackenzie.com/2006/10/23/i-got-my-project-back/</guid>
		<description><![CDATA[Well after writing my previous post on the whole not getting to do my rails project fiasco, I decided to send my boss an email expressing my concerns and basically let him know that I think he&#8217;s making a mistake. Here&#8217;s a little sample:

	&#8220;From a personal perspective I feel a little disappointed in the decision [...]]]></description>
			<content:encoded><![CDATA[<p>Well after writing my <a href="http://blog.craig-mackenzie.com/2006/10/19/bigfuckingsigh/">previous post</a> on the whole not getting to do my rails project fiasco, I decided to send my boss an email expressing my concerns and basically let him know that I think he&#8217;s making a mistake. Here&#8217;s a little sample:</p>
<blockquote><p>
	&#8220;From a personal perspective I feel a little disappointed in the decision as not only is it a bad idea for the job, it basically mean that my hard work in planning this project is going to be handed over to a team which I know from first hand experience isn&#8217;t capable of delivering 100%</p>
<p>	I have made my feelings towards my role in the company very clear, I would like to take some of the programming work away from [other company] to help impact produce better solutions for our clients. I feel that this was an ideal opportunity to prove this, prove my work and install confidence in the technology with my bosses.&#8221;
</p></blockquote>
<p>That&#8217;s me with my big-boy hat on, no swearing, no rudeness. I take on another persona&#8230; </p>
<p>This must have paid off because on the friday my boss takes me to one of the meeting rooms to talk through the project, he opens with &#8220;I&#8217;ve made an executive decision, we&#8217;re doing it in house&#8230;&#8221;</p>
<p>I was so relieved, I think I must have been really into the job to care that much about it, I was really upset over it, it sounds silly but I take a great amount of pride in planning a job from start to finish, especially if at the end of it I know i&#8217;ve done my very best, and the job has been a success. If these other guys had done it, well lets not go there.</p>
<p>So there it is, I get to do it in rails after all, I&#8217;m really happy, i&#8217;ll be sure to post my progress as I go.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.craig-mackenzie.com/2006/10/23/i-got-my-project-back/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Testing TextMate</title>
		<link>http://blog.craig-mackenzie.com/2006/10/22/testing-textmate/</link>
		<comments>http://blog.craig-mackenzie.com/2006/10/22/testing-textmate/#comments</comments>
		<pubDate>Sun, 22 Oct 2006 21:49:06 +0000</pubDate>
		<dc:creator>craig mackenzie</dc:creator>
				<category><![CDATA[i am geek]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[osx]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[textmate]]></category>

		<guid isPermaLink="false">http://blog.craig-mackenzie.com/2006/10/22/testing-textmate/</guid>
		<description><![CDATA[I&#8217;m writing this post using TextMate, I think TextMate is possibly the best text editor in the world, and i use it for nearly everything from shopping lists, todos, notes, telephone messages, just about everything (as well as the usual code editing).
It&#8217;s the best program i have ever purchased, but I&#8217;m going to save most [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m writing this post using <strong><a href="http://macromates.com/">TextMate</a></strong>, I think TextMate is possibly the best text editor in the world, and i use it for nearly everything from shopping lists, todos, notes, telephone messages, just about everything (as well as the usual code editing).</p>
<p>It&#8217;s the best program i have ever purchased, but I&#8217;m going to save most of my TextMate loving for another post, for the mean time it&#8217;s just cool to play with TextMate&#8217;s blogging bundle.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.craig-mackenzie.com/2006/10/22/testing-textmate/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
