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

<channel>
	<title>metal &#38; gin</title>
	<atom:link href="http://blog.craig-mackenzie.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.craig-mackenzie.com</link>
	<description>(a weblog by craig t mackenzie)</description>
	<pubDate>Thu, 19 Mar 2009 20:56:55 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Twitter for Connecting to Customers: A first Hand Experience</title>
		<link>http://blog.craig-mackenzie.com/2009/03/19/twitter-for-connecting-to-customers-a-first-hand-experience/</link>
		<comments>http://blog.craig-mackenzie.com/2009/03/19/twitter-for-connecting-to-customers-a-first-hand-experience/#comments</comments>
		<pubDate>Thu, 19 Mar 2009 20:56:55 +0000</pubDate>
		<dc:creator>craig mackenzie</dc:creator>
		
		<category><![CDATA[internet]]></category>

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

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

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

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

		<guid isPermaLink="false">http://blog.craig-mackenzie.com/?p=96</guid>
		<description><![CDATA[I promised myself i wouldn&#8217;t write a post about twitter, mainly because it&#8217;s what every wannabe digital tosser is talking about, but i failed. whatever. sue me.
So last week my internet connection went down. FAIL. Annoyed i called VirginMedia (our cable provider) and was played a message that there was a fault in our area. [...]]]></description>
			<content:encoded><![CDATA[<p>I promised myself i wouldn&#8217;t write a post about twitter, mainly because it&#8217;s what every wannabe digital tosser is talking about, but i failed. whatever. sue me.</p>
<p>So last week my internet connection went down. FAIL. Annoyed i called VirginMedia (our cable provider) and was played a message that there was a fault in our area. Fair enough, these things happen.</p>
<p>Over the next few days it went up and down, and the message was updated. Annoying, but at least they&#8217;re being honest about it. Eventually our connection dropped all together, nothing. absolutely zero bit&#8217;s of internet flowing through our tubes, so i called them again, no message related to our area.</p>
<p>Weird.</p>
<p>I stayed on the line and got through to an arrogant, annoying, condescending wanker. Being that you have to have an IQ lower than that of a half eaten banana to work as a &#8220;technical support&#8221; call center rep it was no wonder he told me i had no internets due the fact i&#8217;m using an apple router (WRONG).</p>
<p>So i was pissed. I did a twitter search for virginmedia (on my iPhone) to see if anyone had any tips. What did i find? <a href="http://twitter.com/virginmedia">@virginmedia</a> I decided to <a href="http://twitter.com/craigtmackenzie/status/1341117273">ask the question</a> re: my internets, and what pursued was a few tweets back and forth, an email or two, and in less than 24 hours our internet was back to normal.</p>
<p>I&#8217;m ecstatic.</p>
<p>I&#8217;m not sure if <a href="http://twitter.com/virginmedia">@virginmedia</a> is a group of people and i got lucky, or if it is just one guy (a great guy called Alex Brown) but it&#8217;s turned me from an <em>about-to-ditch-this-bitch</em> hater to an <strong>oh.my.gods.i.love.you.thank.you.so.much</strong> lover.</p>
<p>If you have issues with your virginmedia stuffs, tweet <a href="http://twitter.com/virginmedia">@virginmedia</a> and it&#8217;ll get sorted much, much faster.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.craig-mackenzie.com/2009/03/19/twitter-for-connecting-to-customers-a-first-hand-experience/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Hello Again, I missed you!</title>
		<link>http://blog.craig-mackenzie.com/2009/01/24/hello-again-i-missed-you/</link>
		<comments>http://blog.craig-mackenzie.com/2009/01/24/hello-again-i-missed-you/#comments</comments>
		<pubDate>Sat, 24 Jan 2009 14:43:33 +0000</pubDate>
		<dc:creator>craig mackenzie</dc:creator>
		
		<category><![CDATA[musings]]></category>

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

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

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

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

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

		<guid isPermaLink="false">http://blog.craig-mackenzie.com/?p=75</guid>
		<description><![CDATA[Why hello there, after what has been a hiatus of exactly 252 days, i have decided it&#8217;s high time i started blogging again. Last time we spoke was in May of 2008, a lot has happened since then, and i&#8217;ve got lots to talk about. 
So here&#8217;s what I&#8217;m going to do, there&#8217;s a few [...]]]></description>
			<content:encoded><![CDATA[<p>Why hello there, after what has been a hiatus of exactly <strong>252</strong> days, i have decided it&#8217;s high time i started blogging again. Last time we spoke was in May of 2008, a lot has happened since then, and i&#8217;ve got lots to talk about. </p>
<p>So here&#8217;s what I&#8217;m going to do, there&#8217;s a few subjects i want to talk about, but i&#8217;d like to do each subject justice, so instead of trying to cram it all into one mega-post i&#8217;m going to summize here, and then i might elaborate in future posts, which will be linked from here if i do. Sound good? </p>
<p>Great. Let&#8217;s start shall we?</p>
<p><span id="more-75"></span></p>
<h2>2008: A Recap</h2>
<p>Two Thousand &amp; Eight was, on the whole a good year for me, i was finally working in London, even if the commute was a bitch, i was enjoying my job and everything was peachy. In April i took Steve to Barcelona for his birthday, that was lovely. And in the summer we enjoyed a long weekend on the Norfolk Broads with our very good friends Andy &amp; Debz. </p>
<p>I turned 22, which was pretty uneventful, and after the summer my personal life took a back seat to the large projects i was working on at work.</p>
<p>In September we finally moved to London, north London. We&#8217;re now living in a flat in a 100+ year old converted hospital, and we couldn&#8217;t be happier. My commute to work has gone from 2hrs 15mins to around 45/50mins. Bliss.</p>
<p>November was fun, i was taken to Moscow, Russia with work to meet the clients we were working with, needless to say we got drunk a lot, had fun and came home with a massive hangover!</p>
<p>Xmas 08 was, meh. in 2007 we decided to avoid it all and go visit our friends in Dubai, i really wish we had done that in 2008, instead we were shooting from London to Kent around Kent and back to London to try and fit everyone in. Not fun.</p>
<h2>All Work <span class="amp">&amp;</span> No Play</h2>
<p>Work has been seriously intense, not long after joining <a href="http://www.aa-rf.com/">AA|RF</a>, the team i was a part of started to jump ship, then my boss left, then the rest of the team followed. I stayed, because after Impact this place was like heaven, so my new boss was my previous bosses boss (you following?)</p>
<p>This was great because me and Paul get on really well, and find it really easy to work together, it&#8217;s a great working relationship where we constantly challenge one another, i&#8217;ve learnt a lot from him, and can honestly say he&#8217;s become a good friend of mine.</p>
<p>Those are the good aspects of work, the not-so-good aspects are pretty typical for the Technology sector, but have had an effect on me none the less. Working 87.5 hour weeks, long projects, long hours. They all take their toll, after a year of it i&#8217;ve started to feel a bit exhausted, the time off i had at Xmas was the first &#8216;real&#8217; break i&#8217;d had in a long time.</p>
<p>As for my future there, who can say? I&#8217;m still young, i&#8217;d like to travel and see the world. All i can say is watch this space.</p>
<h2>Battlestar Galactica: Awesomeness</h2>
<p>A few of our friends had recommended Battlestar Galactica to us, and it&#8217;s been something we&#8217;d been meaning to investigate, well luckily for us our friend Fang came to stay with us, and bestowed upon us THE ENTIRE FREAKING SERIES 0-3 on DVD. Thank you Fang!</p>
<p>We watched it, and got instantly hooked, on one day we consumed a staggering 16 hours of BSG, and are actively downloading new episodes from the US as they air.</p>
<p>BSG simply put, is one of the most amazing pieces of SciFi/Drama i have seen in a very, very long time. It&#8217;s exceptionally well realised and the main story arc is deep and complex, to the point were throw-away incidents in the early years have major significance much later in the timeline.</p>
<p>If you haven&#8217;t seen it, i <strong>strongly</strong> recommend it.</p>
<h2>Burnout Paradise</h2>
<p>Goog God Mother of Mary. This is easily the best game i have ever played. I actually didn&#8217;t realise how much i enjoy driving games until i played this. But it&#8217;s more than just a driving game it&#8217;s a free-roaming explorative landscape (which is huge) and you drive around finding races, challenges and so on.</p>
<p>The real catch though, is not just gameplay but the way in which the game incorporates online-gameplay. Normally in games you have to stop what you&#8217;re doing, go to some sort of &#8220;online&#8221; menu and find a game to join. </p>
<p>Not in burnout. Tap right on your D-pad a couple of times and you are seamlessly dropped into an online game. I mean super seamlessly. It&#8217;s technically amazing and makes it really rewarding to get in, get on and burnout.</p>
<p>I <strong>fucking</strong> love this game.</p>
<h2>Boxee <span class="amp">&amp;</span> Me (and you too)</h2>
<p>Easily one of my most favourite bits of technology in 2008 <a href="http://www.boxee.tv/">Boxee</a> is a customized implementation of XBMC which runs on Mac OSX, Apple TV, Linux &amp; Windows.</p>
<p>What sets Boxee apart from other media center solutions is two-fold. First there is the built-in plugins, which cover hundred of online media outlets including <a href="http://www.bbc.co.uk/iplayer/">BBC iPlayer</a>, <a href="http://www.hulu.com/">Hulu</a> and <a href="http://www.mtvmusic.com/">MTV Music</a> among many many others.</p>
<p>Then their is the social aspect of the service, you can add friends, recommend media, view their activity. It&#8217;s all very promising. Boxee is currently in an open alpha state, but stable enough for use. Oh and did i mention, it&#8217;s 100% free and mostly open source.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.craig-mackenzie.com/2009/01/24/hello-again-i-missed-you/feed/</wfw:commentRss>
		</item>
		<item>
		<title>I don&#8217;t care if you read this</title>
		<link>http://blog.craig-mackenzie.com/2008/05/17/i-dont-care-if-you-read-this/</link>
		<comments>http://blog.craig-mackenzie.com/2008/05/17/i-dont-care-if-you-read-this/#comments</comments>
		<pubDate>Sat, 17 May 2008 19:42:38 +0000</pubDate>
		<dc:creator>craig mackenzie</dc:creator>
		
		<category><![CDATA[blogosphere]]></category>

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

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

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

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

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

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

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

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

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

		<guid isPermaLink="false">http://blog.craig-mackenzie.com/?p=68</guid>
		<description><![CDATA[
Web 2.0, Social Media, The Blogsphere, whatever you attribute it to, getting your voice published online is easier than it has ever been. Getting your voice heard and getting a response from your audience is the tricky part.

Noise

The problem with getting an engaging, responsive audience when you&#8217;re blogging for fun is the shear volume of [...]]]></description>
			<content:encoded><![CDATA[<p>
Web 2.0, Social Media, The Blogsphere, whatever you attribute it to, getting your voice published online is easier than it has ever been. Getting your voice <em>heard</em> and getting a response from your audience is the tricky part.
</p>
<h2>Noise</h2>
<p>
The problem with getting an engaging, responsive audience when you&#8217;re blogging for fun is the shear volume of blogs and other user generated content fighting for attention online. If we look at <a href="http://technorati.com/">Technorati&#8217;s</a> data the are currently about <strong>112.8 million</strong> blogs online, and over <strong>250 million</strong> items of tagged media.
</p>
<p>
Dig a bit further into this data and it&#8217;s revealed that there are over <strong>175,000 new blogs</strong> <em>every day</em> with over <strong>1.6 million</strong> posts per day (over 18 posts every second).
</p>
<p>
There is a lot of noise out there. Chances are that there are a lot people out there saying similar things to you.
</p>
<p><span id="more-68"></span></p>
<h2>Signal</h2>
<p>
The fun part of blogging is when you get feedback, it makes you feel like the effort you have put into your post has bee recognized, and generally leaves you with a nice warm feeling. It&#8217;s also nice to know that something you have done may have helped someone in some way.
</p>
<p>
To increase the likelihood of generating feedback for you work, it is important to have something concrete to speak about. Without a clear and defined topic of conversation it&#8217;s more difficult to get a response from people, especially complete strangers you have never conversed with before.
</p>
<p>
It&#8217;s for this reason that I&#8217;m very aware of what I&#8217;m talking about, and how focused I am when I write a post. I generally try to pick a topic and stick with for however long it takes me to get my feeling or opinion across (which is why some of posts are so damn long!).
</p>
<h2>Propagation</h2>
<p>
The next important thing in trying to get a conversation going is propagation, the further you spread your message the better chances are it will be heard.
</p>
<p>
I import my blog posts into <a href="http://facebook.com">facebook</a> for example, I also often <a href="http://digg.com">digg</a> my posts, I <a href="http://twitter.com/">tweet</a> about them, if I use <a href="http://flickr.com">flickr</a> I post back to my blog (and vice versa). The golden rule I adhere to is &#8220;the more places, the better&#8221;. What I mean by this is the more visibility my blog / posts get, the happier I am.
</p>
<p>
A nice side affect of this is that I will generally be propagating my link to an audience of like-minded fellows who are more likely to engage with it.
</p>
<h2>Nonchalance</h2>
<p>
Although I try to get as much interaction out of my blog as possible, the thing keeps me from getting down when I get no comments (because lets face it, we all like to get comments, especially nice ones!) is one simple thing: <strong>i don&#8217;t care</strong>.
</p>
<p>
That&#8217;s right. <strong>I don&#8217;t care</strong>. If I get no reaction to my posts, so what? The bottom line is that this blog is for me first. If along the way I help someone out with <a href="http://blog.craig-mackenzie.com/2007/08/09/simple-bread-crumbs-in-ruby-on-rails/">some code</a> or inspire someone to <a href="http://blog.craig-mackenzie.com/2008/02/25/pixel-path-my-preliminary-steps-into-generative-art/">explore creative programming</a> then I&#8217;m  happy, but it&#8217;s not the reason I do it. I write this blog for me.
</p>
<p>
So to my fellow small time bloggers I say this: Have fun, Worry Not &amp; Keep Blogging, Keep Linking.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.craig-mackenzie.com/2008/05/17/i-dont-care-if-you-read-this/feed/</wfw:commentRss>
		</item>
		<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>
		</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>
		</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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - Forest</h2>
<div class="scroll-gallery">
  <span>p5 - 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>
		</item>
		<item>
		<title>I donâ€™t know what Iâ€™m doing</title>
		<link>http://blog.craig-mackenzie.com/2008/01/21/i-don%e2%80%99t-know-what-i%e2%80%99m-doing/</link>
		<comments>http://blog.craig-mackenzie.com/2008/01/21/i-don%e2%80%99t-know-what-i%e2%80%99m-doing/#comments</comments>
		<pubDate>Mon, 21 Jan 2008 14:59:17 +0000</pubDate>
		<dc:creator>craig mackenzie</dc:creator>
		
		<category><![CDATA[musings]]></category>

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

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

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

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

		<guid isPermaLink="false">http://blog.craig-mackenzie.com/2008/01/21/i-don%e2%80%99t-know-what-i%e2%80%99m-doing/</guid>
		<description><![CDATA[
	One of the directors here at work has just sent me an article of his about how we do it at work, what we&#8217;re about. He&#8217;s given me permission to reproduce it here:


I donâ€™t know what Iâ€™m doing.
	And why the future of business is to be where others fear to tread
As soon as you think [...]]]></description>
			<content:encoded><![CDATA[<p>
	One of the directors here at work has just sent me an article of his about how we do it at work, what we&#8217;re about. He&#8217;s given me permission to reproduce it here:
</p>
<blockquote>
<h2>I donâ€™t know what Iâ€™m doing.</h2>
<p>	<strong>And why the future of business is to be where others fear to tread</strong></p>
<p>As soon as you think youâ€™ve got it sussed, it changes. This happens every week, no, make that every day, hour, minute and second. The old certainties are gone and in their place we have rolling never-ending disruption. Oh, whatâ€™s that you say? Thereâ€™s a new format for this ad or that ad? Surprise me. Nothing stays the same. We live and work in a super fast, super fluid environment where there are no rules, really. </p>
<p>Now, depending on your bent, this is either a pain in the arse and an obstacle, or the best full throttle, jump out of bed, greet the day with a shout opportunity that you ever got. Itâ€™s like Christmas every day. We donâ€™t create, we invent. And whatâ€™s better than that? Inventing doesnâ€™t require rules â€“ theyâ€™re for people who want to know what theyâ€™re doing, who like order and the fact that everything has its place.</p>
<p>Creative? Thatâ€™s sooo, 20th Century. Where I spend my time we make stuff, we imagine, wonder, copy, borrow, steal and cobble together. We invent. â€˜How do you do that?â€™ â€˜I donâ€™t know, but weâ€™ll figure it out.â€™ Look at that, if you mix it with this and take some of that, it makes this! If where you work isnâ€™t like this and youâ€™ve got a bunch of people called creatives having â€˜ideasâ€™ then you work at an ad agency, a place with rules and people know what theyâ€™re doing because theyâ€™ve done it before. </p>
<p>As was, creativity is the preserve of the few, its top down and hierarchical, structured and rules based. Traditional. Its old and it doesnâ€™t work anymore. Constant disruption requires people who embrace it and feel comfortable with it. Where we work, we donâ€™t know what weâ€™re doing because its never been done before and in order to remain fresh, smart and ahead of the pack, you have to be inventive.  Itâ€™s the ability to invent thatâ€™s at a premium. Inventors have no fear of the unknown. They like change and a lack of boundaries, Its where they thrive.  </p>
<p>And this is where we are; weâ€™re all inventors, media planner, art director, Flash programmer, strategist, every last one. At the edge of knowledge, technology, understanding. Here I am. I donâ€™t know what Iâ€™m doing, because if I did I would be yesterday.</p>
<p>	<cite>&copy; 2007 Rob Lawrence @ <a href="http://www.aa-rf.co.uk">Avenue A | Razorfish UK</a></cite></p>
</blockquote>
<p>This place, the people that fill it, they &#8220;get it&#8221;.</p>
<p>Do i need much more reason to like coming to work on a monday morning?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.craig-mackenzie.com/2008/01/21/i-don%e2%80%99t-know-what-i%e2%80%99m-doing/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Looking Back at 2007</title>
		<link>http://blog.craig-mackenzie.com/2007/12/23/looking-back-at-2007/</link>
		<comments>http://blog.craig-mackenzie.com/2007/12/23/looking-back-at-2007/#comments</comments>
		<pubDate>Sun, 23 Dec 2007 22:40:47 +0000</pubDate>
		<dc:creator>craig mackenzie</dc:creator>
		
		<category><![CDATA[musings]]></category>

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

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

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

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

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

		<guid isPermaLink="false">http://blog.craig-mackenzie.com/2007/12/23/looking-back-at-2007/</guid>
		<description><![CDATA[
	So the end of the year is approaching, and as I&#8217;m going to be sunning it Dubai for Xmas / New Year&#8217;s I figured I would write a little bit about the year that&#8217;s almost behind me.

New York

	In the spring me and my partner went off to New York, this was the first time I [...]]]></description>
			<content:encoded><![CDATA[<p>
	So the end of the year is approaching, and as I&#8217;m going to be sunning it Dubai for Xmas / New Year&#8217;s I figured I would write a little bit about the year that&#8217;s almost behind me.
</p>
<h2>New York</h2>
<p>
	In the spring me and my partner went off to New York, this was the first time I had ever to the states, and I loved it. New York is an amazing place, and I really hope we get to go again soon. Whilst we were there we enjoyed lots of touristy sight-seeing trips and ate at lots of gorgeous eateries such as <a href="http://www.goborestaurant.com/" title="|| GOBO || food for the five senses">Gobo</a> and <a href="http://www.candlecafe.com/" title="Candle Cafe Vegetarian Cuisine">Candle 79</a>.
</p>
<p>
	Whilst in NY we also took an internal flight up to the Niagara Falls (canadian side), which was amazing, the immediate difference between the USA + Canada was astonishing, and I really hope we get to explore Canada in a bit more depth in 2008.
</p>
<h2>RailsConf 2007</h2>
<p>
	After New York I attended RailsConf in Portland OR, this was on the best experiences of my life. I was my first major conference and I met some brilliant people, it was really good to meet up with lots of like minded people, and a trip the I&#8217;ve not forgot throughout the year.
</p>
<p>
	I&#8217;m hoping to go again in 2008 and have yet to speak to my work about it, I just hope they will see the value in sending me there, as I have given up a lot of Rails development since working at <a href="http://www.aa-rf.co.uk">Avenue A | Razorfish</a> to focus more on Flex / Actionscript development, which I&#8217;ve loved, but my heart is with Ruby / Rails.
</p>
<p><span id="more-61"></span></p>
<h2>Turning 21</h2>
<p>
	The summer saw me turn 21, and my gorgeous boyfriend planned the most amazing surprise fancy dress birthday party for me. It was an amazingly good laugh and really fun to see my family and friends dress up in silly costumes for my benefit.
</p>
<h2>Quitting Impact</h2>
<p>
	Probably the biggest thing to change in my life this year was finally leaving the shit-hole I used to work at, <a href="http://www.impact-im.co.uk/">Impact IM Ltd.</a> It was the best decision I made and am glad to finally be out of there, and I wasn&#8217;t the only one to think so, nearly everyone I worked with at that hell-hole have now left also.
</p>
<p>
	Impact did nothing but set me back in 2007 and made my working life incredibly unfulfilling, hollow and ultimately depressing. Just read back though some of my posts.
</p>
<h2>Starting at Avenue A | Razorfish</h2>
<p>
	One of the best things to happen this year was starting at <a href="http://www.aa-rf.co.uk/">Avenue A | Razorfish</a>, I&#8217;ve already written about <a href="http://blog.craig-mackenzie.com/2007/09/25/the-grass-really-is-greener/">how amazing they are to work for</a> so I&#8217;m not going to reiterate that here, but I have now finished my 3 month probation and am there for the long haul.
</p>
<p>
	That&#8217;s all for now, I&#8217;m off to Dubai for Xmas in less than 24 hours, so i&#8217;ll leave you with our work&#8217;s christmas card to keep you entertained. <a href="http://www.aa-rf.co.uk/thaw">Enjoy!</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.craig-mackenzie.com/2007/12/23/looking-back-at-2007/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Rails 2.0, out now!</title>
		<link>http://blog.craig-mackenzie.com/2007/12/10/rails-20-out-now/</link>
		<comments>http://blog.craig-mackenzie.com/2007/12/10/rails-20-out-now/#comments</comments>
		<pubDate>Mon, 10 Dec 2007 10:33:11 +0000</pubDate>
		<dc:creator>craig mackenzie</dc:creator>
		
		<category><![CDATA[observations]]></category>

		<category><![CDATA[ruby/rails]]></category>

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

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

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

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

		<guid isPermaLink="false">http://blog.craig-mackenzie.com/2007/12/10/rails-20-out-now/</guid>
		<description><![CDATA[
I&#8217;m a little bit late to the party on this one, but it would appear that Rails 2.0(.1) is finally out. Friday saw the birth of the second major release of the framework we love to love, and it jam packed with lots of loveliness and joy.


Rails 2.0 (i wonder how long until the trolls [...]]]></description>
			<content:encoded><![CDATA[<p>
I&#8217;m a little bit late to the party on this one, but it would appear that Rails 2.0(.1) is finally out. Friday saw the birth of the second major release of the framework we love to love, and it jam packed with lots of loveliness and joy.
</p>
<p>
Rails 2.0 (i wonder how long until the trolls think Rails 2.0 is a Rails mash-up or something) brings with it lots of new features, polish, fixes and sexy, here are some of my favourites:
</p>
<ul>
<li>Namespaces in ActionPack</li>
<li>Seperation of view-type and renderer (ie. <code>show.html.erb</code> or <code>show.html.haml</code>)</li>
<li>Automagic record routing: <code>form_for(person)</code></li>
<li>HTTP Authentication baked in!</li>
<li>Request Profiler</li>
<li>Sexy Migrations, say a big thanks to <a href="http://errtheblog.com/" title="err.the_blog">err.the blog</a> for this one</li>
<li>ActiveRecord XML deserialization and JSON serialization</li>
<li>ActiveResource (like AR for REST api&#8217;s) </li>
</ul>
<p>
There are (obviously) tons more features to the release, i suggest you check out the <a href="http://weblog.rubyonrails.com/2007/12/7/rails-2-0-it-s-done" title="Riding Rails: Rails 2.0: It's done!">official announcement</a> as well as <a href="http://ryandaigle.com/articles/2007/12/7/rails-2-0-final-released-summary-of-features" title="Ryan's Scraps: Rails 2.0 Final Released! - Summary of Features">Ryan&#8217;s awesome post</a>. Happy coding bitches!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.craig-mackenzie.com/2007/12/10/rails-20-out-now/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Google OpenSocial &amp; the Future of the Social Web</title>
		<link>http://blog.craig-mackenzie.com/2007/11/03/google-opensocial-and-the-future-of-the-social-web/</link>
		<comments>http://blog.craig-mackenzie.com/2007/11/03/google-opensocial-and-the-future-of-the-social-web/#comments</comments>
		<pubDate>Sat, 03 Nov 2007 11:09:46 +0000</pubDate>
		<dc:creator>craig mackenzie</dc:creator>
		
		<category><![CDATA[internet]]></category>

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

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

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

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

		<category><![CDATA[social-web]]></category>

		<guid isPermaLink="false">http://blog.craig-mackenzie.com/2007/11/03/google-opensocial-and-the-future-of-the-social-web/</guid>
		<description><![CDATA[
Today I attended a Google Developers breakfast to learn about one of Google&#8217;s latest tool for developers. The event went swimmingly and the focus was on their brand spanking new API, &#8220;OpenSocial&#8221;. The seminar was (obviously) focused mainly at developers and therefore this post is very much from a developers point of view.

What is Google [...]]]></description>
			<content:encoded><![CDATA[<p>
Today I attended a Google Developers breakfast to learn about one of Google&#8217;s latest tool for developers. The event went swimmingly and the focus was on their brand spanking new API, &#8220;OpenSocial&#8221;. The seminar was (obviously) focused mainly at developers and therefore this post is very much from a developers point of view.
</p>
<h2>What is Google OpenSocial?</h2>
<p>
	Google OpenSocial are two sets of API&#8217;s; one for developers and one for owners of social-oriented websites. They facilitate with the development of building &#8220;Social Applications&#8221; for a variety of social networking websites. The basic premise is that me as a developer I can learn one API (OpenSocial) and use my knowledge of that API to build social-oriented applications for any website which is an OpenSocial &#8220;container&#8221;  (has implemented the website owner version of the OpenSocial API).
</p>
<p>
	The developer API consists of standard&#8217;s based xHTML + JavaScript. This is brilliant news as anyone who&#8217;s anyone knows these languages like the back of their hand. The API&#8217;s allow easy access to common social-network oriented data such as users, users friends lists, the &#8220;social news feed&#8221; and other social-graph data. The API also allows you to store small amounts of data on Goolge&#8217;s servers (such as key/value pairs) meaning that you could (in theory) build an application without having to serve the application yourself (great news if your app become popular)
</p>
<p><span id="more-53"></span></p>
<h2>Why is this Important?</h2>
<p>
	The OpenSocial API&#8217;s are Google&#8217;s first steps into what they see becoming a far more landscape altering change. In recent years the web has started to evolve into a very user-centric ecosphere. People are choosing how they want to consume the information they are interested in, when they want to consume it and how they wan to share it. Take for example technologies such as RSS, widgets/gadgets and customized home-pages. These are all perfect examples of what is happening, users no longer have to visit a particular site or service to get the information they want. It is now delivered to them, ready for them to consume.
</p>
<p>
	Now if you look at social-networking sites, you have masses of users communicating with their peers, socializing, vocalizing and participating in like-minded groups. What is (largely) missing from these site&#8217;s is personalization. I&#8217;m not talking about skinning or theme-ing, I&#8217;m talking about being able to consume (and more importantly) share the information users care about.
</p>
<p>
	This is where social-applications come in. Leveraging social networks, content providers can enable a massive group of like-minded people to consume their content and potentially share it with yet more like-minded people. This is the massively important aspect of social-applications, in itself this gets your content to more people, fast and with instant viral appeal.
</p>
<p>
	Let&#8217;s look for a moment at a typical web-savy user, let&#8217;s call him Steve. Steve has a personalized homepage full of gadgets and widgets which keep him up-to-date on things he cares about. He has a profile on MySpace, Orkut, Bebo and a  profile on LinkedIn. Steve is really into photography, so when he hears that his favourite photography sharing site Flickr has developed an application for Orkut he is thrilled! He instantly adds it to his profile and starts sharing awesome photography with his friends on Okrut.
</p>
<p>
	This is great for a while and as the Flickr application matures it becomes something he checks every day, constantly sharing things he finds with his friends and becoming an active user of the app. The only problem is that his only access to this app is through Orkut. He&#8217;s back to the days of visiting one place, to get one type of information. The reason it&#8217;s only available to him at Orkut is because the developers at Flickr had to decide which of the propriety social application development API&#8217;s to learn, and because they chose Orkut they become dependent on Orkut&#8217;s API to mature as their app did. They were unable to launch the app on other social networking sites because it would require re-writing the app.
</p>
<p>
	So back to why all of this is important and the future of OpenSocial; Steve is getting tired of having to visit Orkut just to see he latest awesome photos on his Flickr app, he want to be able to quickly view the information on his homepage when he checks his feeds with his morning tea. Not only that but he wants to be able to share this content with his other friends that use MySpace or Bebo and also his business acquaintances on LinkedIn&#8230; Enter OpenSocial.
</p>
<p>
	The first problem that OpenSocial solves is the issue of portability, using OpenSocial Flickr are able to write a social application which will run natively on Orkut, MySpace, Bebo and LinkedIn. With absolutely no extra work their application will work on all of the social-oriented websites that Steve uses. This is brilliant! The more places Steve can use this application the wider the reach.
</p>
<p>
	What will be important for OpenSocial in the future (and something which Google today said was the long-term plan) is convergence. Imagine if Steve is able to share content he cares about with ALL of his friends, regardless if they are on MySpace or Bebo, Orkut or LinkedIn. This is a massively significant aspect of what Google hopes to achieve with OpenSocial. Take this a step further and imagine if Steve could now embed a micro version of this application on his personalized homepage. Now steve has access to this content, and the distribution aspects of it from the place he visits the most. The whole concept could be taken another step further, with application like Google Desktop, Dashboard Widgets and Adobe AIR applications, integrating with these different frameworks (all of which run native xHTML + JavaScript) he now has access to this content online and offline. You can even take it <em>another</em> step further still, Steve could access these services on his mobile phone whilst on the go.
</p>
<p>
	So, by utilizing an open, standards based approach to developing applications for social-network sites Flickr has multiplied the reach, access and viral aspects of the content they deliver through this application exponentially. It&#8217;s easy to see why this is so important, if current trends are anything to go by, the web as we know it is getting more and more user-centric, do we really want this garden-walled approach? Applications exclusive to certain separate mega-sites with little interoperability, or do we want the content we love wherever we want it, whenever we want it with the ability to share it with whoever we want? More importantly as developers do we want to launch an application to 5 million potential users on one website, or 75 million potential users across 15 websites, giving them easy access to the application from wherever they want?
</p>
<h2>Errr&#8230; What about Facebook?</h2>
<p>
	You may have noticed that I neglected to mention the largest, fastest growing social-networking site out there in this article. The problem with Facebook is that they have already developed a <strong>propriety</strong> API for developing applications. Granted they were first to the table late 2006 with their FBML (Facebook Markup Language) and FQL (Facebook Query Language) API&#8217;s for developing Facebook applications.
</p>
<p>
	The problem with these is the fact that they are propriety, and writing you application within FBML&#8217;s limitations (FBML is a subset of HTML) means your application will only work on Facebook, unless you re-write it. This is not good for the future of the open and social web (now I see where the big G got their name!) and means masses of extra time and effort for application developers.
</p>
<p>
	You could argue the point that this isn&#8217;t an important thing at all, and that OpenSocical will never really take off because of Facebook&#8217;s dominance. That might be true, who know&#8217;s what the future holds? However, I&#8217;m willing to bet that both consumers and developers alike will want their content in more places, with easier access. If I were at Facebook I would seriously consider either bridging the gap between Facebook and OpenSocial, or consider implementing an OpenSocial container for Facebook.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.craig-mackenzie.com/2007/11/03/google-opensocial-and-the-future-of-the-social-web/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Happy Leopard Day!</title>
		<link>http://blog.craig-mackenzie.com/2007/10/26/happy-leopard-day/</link>
		<comments>http://blog.craig-mackenzie.com/2007/10/26/happy-leopard-day/#comments</comments>
		<pubDate>Fri, 26 Oct 2007 14:32:57 +0000</pubDate>
		<dc:creator>craig mackenzie</dc:creator>
		
		<category><![CDATA[apple]]></category>

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

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

		<guid isPermaLink="false">http://blog.craig-mackenzie.com/2007/10/26/happy-leopard-day/</guid>
		<description><![CDATA[Today is of course the day that Apple&#8217;s newest cat comes out of the bag: OS X 10.5 / Leopard. I will be leaving work in just over 2 hours to go que at the Regent Street store for my copy. I will post my findings as soon as i have it up and running [...]]]></description>
			<content:encoded><![CDATA[<p>Today is of course the day that Apple&#8217;s newest cat comes out of the bag: <a href="http://www.apple.com/macosx/">OS X 10.5 / Leopard</a>. I will be leaving work in just over 2 hours to go que at the <a href="http://www.apple.com/uk/retail/regentstreet/">Regent Street</a> store for my copy. I will post my findings as soon as i have it up and running (although i have been using a developer version on and off before).</p>
<p><a href="http://www.rubyinside.com/ruby-and-rails-in-mac-os-x-leopard-633.html">Leopard also now includes a full ROR Development stack!</a> Get coding bitches. </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.craig-mackenzie.com/2007/10/26/happy-leopard-day/feed/</wfw:commentRss>
		</item>
		<item>
		<title>The Grass Really Is Greener</title>
		<link>http://blog.craig-mackenzie.com/2007/09/25/the-grass-really-is-greener/</link>
		<comments>http://blog.craig-mackenzie.com/2007/09/25/the-grass-really-is-greener/#comments</comments>
		<pubDate>Tue, 25 Sep 2007 20:43:00 +0000</pubDate>
		<dc:creator>craig mackenzie</dc:creator>
		
		<category><![CDATA[observations]]></category>

		<guid isPermaLink="false">http://blog.craig-mackenzie.com/2007/09/25/the-grass-really-is-greener/</guid>
		<description><![CDATA[I&#8217;ve been working at my new job with Avenue A &#124; Razorfish for about 2 weeks now, and thought it was about time I spoke a little bit about it.
The difference is amazing, coming from a small new media department to an international digital agency highlights many of the things that are wrong with your [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been working at my new job with <a href="http://www.aarf-uk.com/">Avenue A | Razorfish</a> for about 2 weeks now, and thought it was about time I spoke a little bit about it.</p>
<p>The difference is amazing, coming from a small new media <em>department</em> to an international digital agency highlights many of the things that are wrong with your average small agency. The structure here is amazing, the work is spread so granularly, it really helps ensure that peoples talents are utilized to the full. The culture is brilliant, it&#8217;s a million miles from what I had before, and the caliber of work is stellar.</p>
<p>I&#8217;m going to touch on some of the larger more important differences in a bit more depth, but there are so many other smaller difference which I probably won&#8217;t be able to cover, like having dishwashers, team meetings in the pub and so on, but first a little history lesson.</p>
<h2>History</h2>
<p>The company I work for was originally called DNA, a very well respected and highly talented multi-discipline design/build agency. DNA were approached by many large companies looking to merge with them, but the board felt that these offers were always because of either their design strengths or their technical strengths, but never both.</p>
<p>About a year ago now, Avenue A | Razorfish (a merging of Avenue A, a massive design and marcoms player and Razorfish, a massive tech player) approached DNA to merge, the directors (Neil and Chris, who are great guys) felt that AA|RF cared about the same things they did, and let the merge happen.</p>
<p>So now DNA is a part of Avenue A | Razorfish, which is owned by aQuantive. aQuantive own two other companies; Atlas and Drive PM. Atlas is an advertising network, and Drive PM is a mechanism by which to target advertising to an amazingly specific level. So aQuantive is 2/3&#8217;s advertising driven.</p>
<p>A while ago the market was heating up with talk of online advertising, the big players were all trying to buy up companies that would let them flex this muscle, Microsoft approached the darling at the time (DoubleClick) but they said &#8220;no&#8221; and sold to Google (becoming Adsence) so Microsoft thought &#8220;fuck it&#8221; and decided to try and buy Atlas (the largest ad network). The result is they decided to buy the entire company, not just Atlas, for around $6billion. So Microsoft own aQuantive, but it really doesn&#8217;t filter down into everyday life at Avenue A | Razorfish.</p>
<h2>Structure</h2>
<p>The structure of a company is always going to be better / more defined when you have the number of employees we have. But the point is not how many people you have, rather do you have the right level of separation?</p>
<p>At my old place we had 4 members of staff sharing about 10 different jobs; We had department managers selling and not managing the department, project managers managing the department while the head was out selling, and then having to manage projects as well, designers doing IA, programmers doing design, flash designers doing interaction programming, everyone doing QA, the boss doing SEO and ad campaigns and the board chipping in on design direction.</p>
<p>The lack of separation caused a lot of confusion and misplaced resources.</p>
<p>At AA|RF we have a lot more people (about 160 and growing) so we can afford to spread the staff into very distinct teams such as: Creative, Design, Interface Architecture, Information Architecture, Flash Animation, Flash Interaction, Rich Internet Application, Java Developers, .NET Developers, Database Designers, Motion Graphics, SEO, QA, Search Research and probably a whole load more I have yet to meet. </p>
<p>Apart from the skill based teams we also have teams created to cater for specific clients, when a large job comes in PM&#8217;s, Producers, Account Managers and Resources will get together and allocate members of staff in certain &#8216;Skill Teams&#8217; to join a Project team.</p>
<p>Overall the structure of both the &#8216;workers&#8217; and the auxiliary is brilliant, the overall company structure is brilliant also, having a proper HR team is great!</p>
<h2>Getting &#8220;it&#8221;</h2>
<p>The thing that got me so excited about this job and working for AA|RF was the fact that after my interview with Paul and James I got a real sense that they &#8220;get it&#8221;. I expected that once I start it will be different, and there will be a lot of people that don&#8217;t get &#8220;it&#8221;, but man was I wrong!</p>
<p>Every member of staff in this company gets &#8220;it&#8221;, they all understand the best way to run a Digital Agency and the benefits of doing this versus that, every member of staff, every PM, every Producer, Every Account Manager even the Directors (especially the Directors) get &#8220;it&#8221;.</p>
<p>It&#8217;s a part of the company interview system, people are judged against wether they get &#8220;it&#8221; or not.</p>
<p>It&#8217;s amazingly refreshing to finally be working for a company that truly understands the industry, best practices, emerging technology, client needs and staff needs.</p>
<p>AA|RF knows this industry so well, it reflects in everything they do, the way projects are approached, the way clients are handled and (more importantly) the way staff are treated (which is very well as it happens).</p>
<h2>Culture</h2>
<p>Culture is a difficult thing to get right in a workplace, and I know only of two places that are internationally regarded as having an amazing working culture, and they are pixar animation studios and google. Apart from being the &#8220;Search King&#8221; google is (especially in tech circles) known for being an amazing place to work.</p>
<p>After my experiences in average small companies I was definitely looking for a more google-esque working culture, but had resided myself to the fact that unless I get some sort of obscure degree, or could borrow arfon&#8217;s brain I would probably never get a look in google (which is a shame, they feed their staff free gourmet food)</p>
<p>Luckily for me AA|RF has an amazing working culture, I&#8217;m literally blown-away by it.</p>
<p>First there are the official &#8216;benefits&#8217; such as flexi-time, health insurance, pension schemes, gym-membership and the opportunity to work abroad. All very lovely, and a million miles away from what a smaller company can offer, but pretty standard for most &#8216;proper&#8217; agencies, especially in London.</p>
<p>But it&#8217;s the culture driven benefits which are amazing, take for instance the policy on overtime; in our industry you are never ever ever ever going to get paid full overtime, so don&#8217;t even ask. What AA|RF do is different, they realise that we all work our butts off to get stuff done, because we are all passionate about this industry, so we can claim overtime as LILO or Leave In Leu of Overtime. Another great culture driven aspect is the way meetings are handled, AA|RF know&#8217;s we hate meetings so any meetings involving &#8216;workers&#8217; are kept brief, taken on the roof-garden and last no more than 15 minutes.</p>
<p>Another great thing is the company policy on things like stress and breaks, we are all encouraged to take frequent breaks, and chill out for a bit if we feel stressed. In previous jobs management have tried to ignore stress, but in this job people are taken over the road for a coffee or a smoothie if they are stressed, this company really cares about their staff.</p>
<p>Attire, there is barley a suit in sight, everyone from the workers to the MD&#8217;s dress how they feel, no matter what that is, people are more comfortable, there&#8217;s no authority issues and it&#8217;s just nicer.</p>
<p>And the parties! Oh my the Parties! There are two &#8216;big&#8217; parties every year, the christmas party and the summer party, I unfortunately just missed the summer party but apparently london zoo was hired for the afternoon, then everyone went back to work to have a barbecue in the roof-garden, then AA|RF took everyone to a club they had hired. </p>
<p>But that&#8217;s not all, AA|RF like to party, so there is a party every month after the monthly company meeting, the way this works is every team takes it in turns to spend Â£500 on the months party, which is used to cover things such as games and prizes, the company foots the bill for food and (lots of) drink.</p>
<p>This month it&#8217;s HR&#8217;s turn and they are throwing a mad hatters tea party on the roof, we&#8217;ve all been given materials with which to make a mad hat, the winner recieves an iPod Touch, 5 2nd place winners get a new iPod Nano, and there are 20 3rd place prizes of a crate of beer or something.</p>
<p>The culture at AA|RF is amazing, and it works, the MD&#8217;s can see that we all work really hard, and have tried to create a fun, relaxed and positive working environment, and they instantly win people&#8217;s loyalty. You end up looking forward to going to work no matter what.</p>
<h2>Working in &#8220;The Big Smoke&#8221;</h2>
<p>Working in London is both brilliant and annoying, having a plethora of lunch options, entertainment, fashion, shopping and night-life on your very doorstep is wonderful. And trust me, you never get bored. Never. London is the heart of everything, it&#8217;s the center of the world.</p>
<p>The only annoying thing is working in London and living in Kent, it&#8217;s difficult but not too bad, you get used to it really quickly and you look forward to your 1.5hours of down time at the start/end of the day.</p>
<p>The benefits far out-weigh the drawbacks, and I can honestly say that now I&#8217;m here I wouldn&#8217;t change it for anything in the world. At my old place 4 out of 6 members of staff left to work in london, and all are very happy. As easy and comfortable as it may be to work in this industry from the comfort of Kent, only a few miles from home it doesn&#8217;t compare to being on the pulse, in the heart of it, where it happens.</p>
<p>The companies are better, the staff are treated better, the pay is better, the clients are (way) more interesting, the buzz is amazing, the people rock and you will likely find that your boss is just like you.</p>
<p>The grass truly is greener on the other side, take my word for it.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.craig-mackenzie.com/2007/09/25/the-grass-really-is-greener/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Facebook Bitching Update</title>
		<link>http://blog.craig-mackenzie.com/2007/09/11/facebook-bitching-update/</link>
		<comments>http://blog.craig-mackenzie.com/2007/09/11/facebook-bitching-update/#comments</comments>
		<pubDate>Tue, 11 Sep 2007 00:25:40 +0000</pubDate>
		<dc:creator>craig mackenzie</dc:creator>
		
		<category><![CDATA[internet]]></category>

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

		<guid isPermaLink="false">http://blog.craig-mackenzie.com/2007/09/11/facebook-bitching-update/</guid>
		<description><![CDATA[It would appear as though facebook is aware of the problem with retarded application developers spamming users through other users and is going to be addressing it soon: http://blog.craig-mackenzie.com/2007/09/10/work-facebook-context/
That&#8217;s a really positive thing, i think enough complaints should get you banned from facebook and your apps destroyed.
]]></description>
			<content:encoded><![CDATA[<p>It would appear as though facebook is aware of the problem with retarded application developers spamming users through other users and is going to be addressing it soon: http://blog.craig-mackenzie.com/2007/09/10/work-facebook-context/</p>
<p>That&#8217;s a really positive thing, i think enough complaints should get you banned from facebook and your apps destroyed.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.craig-mackenzie.com/2007/09/11/facebook-bitching-update/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Work, Facebook &amp; Context</title>
		<link>http://blog.craig-mackenzie.com/2007/09/10/work-facebook-context/</link>
		<comments>http://blog.craig-mackenzie.com/2007/09/10/work-facebook-context/#comments</comments>
		<pubDate>Mon, 10 Sep 2007 23:45:02 +0000</pubDate>
		<dc:creator>craig mackenzie</dc:creator>
		
		<category><![CDATA[musings]]></category>

		<guid isPermaLink="false">http://blog.craig-mackenzie.com/2007/09/10/work-facebook-context/</guid>
		<description><![CDATA[It&#8217;s been a while since I updated, and I got a couple of bits I want to write about, so I figured I should, you know use this blog thing. ok first up:
Work
We&#8217;ve been watching Prison Break lately and I have to tell you, it&#8217;s amazing. Watching this group of people struggle to escape from [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been a while since I updated, and I got a couple of bits I want to write about, so I figured I should, you know use this blog thing. ok first up:</p>
<h2>Work</h2>
<p>We&#8217;ve been watching <a href="http://www.fox.com/prisonbreak/" title="FOX Broadcasting Company: PRISON BREAK">Prison Break</a> lately and I have to tell you, it&#8217;s amazing. Watching this group of people struggle to escape from a prison resonated with me because I handed my notice in the last day of July and was trying to convince my work to let me leave after a month instead of three.</p>
<p>Well things got tough, then they got nasty, then they got ugly, there was threats made, angry &#8220;i hate the world&#8221; days and lots of general struggle. Eventually though things got better and I realised I was approaching this the wrong way, I got my act together, spoke nicely and what do you know, it worked.</p>
<p>Last friday (7th August) was my last day at Impact, this wednesday (12th September) is my first day at <a href="http://www.avenuea-razorfish.com/" title="Avenue A | Razorfish - home">Avenue A | Razorfish</a>. I&#8217;m really excited, if not ever so slightly nervous (like shitting &#8216;em nervous). </p>
<p>I did a &#8216;dry run&#8217; today, which basically consisted of going to London, walking my route to work, coming home. Sounds kinda dumb but I get lost incredibly easily, so I figured it was important to get this straight in my head&#8230;. OK and I went to the apple store.</p>
<h2>Facebook</h2>
<p>Everyone you know is on facebook right? Well it seems that way sometimes, it&#8217;s great though, I love facebook, I&#8217;ll be honest I really do love it. I even have FMenu running! The more the merrier.</p>
<p>The problem I&#8217;m starting to notice is the direct consequence of something I thought was so amazing when I found out. When I first joined facebook, f8 hadn&#8217;t happened, Mark Zuckerberg hadn&#8217;t got up on stage and announced the facebook platform, there was no public FHTML or FSQL.</p>
<p>The platform seemed excellent, wow I can develop for facebook? really? me? that&#8217;s awesome, I can use either my existing app or some purpose built thing and instantly tap into a rich user base of millions.</p>
<p>It all sounds so lovely.</p>
<p>Problem is there is nothing but crap out there, the applications being developed for facebook are shit, ugly, horrible pieces of work that are unusable, lack quality and serve no real purpose. </p>
<p>That&#8217;s a bit of a sweeping statement, and there are some great little gems out there, such as <a href="http://www.facebook.com/apps/application.php?api_key=58273904887378a289a45478c191fec1">My Profiles</a>, a great little app for adding links to your other online profiles, <a href="http://apps.facebook.com/graffitiwall/">Graffiti Wall</a> is another awesome app, really fun.</p>
<p>But there are so many more apps which are really poor quality, and they are generating masses of information spam, before the app development stuff I used to check my fb for updates in my news feed and would be able to see at a glance what everyone is up to, now it&#8217;s a sea of icons and links begging me to add this app or see this gift or view that tattoo or whatever. And I get really fucking pissed when it lands in my email inbox.</p>
<p>Another problem is the more people join fb from places like MySpace the more popular these apps will become, look at the Top Friends app, a direct lift of MySpace&#8217;s top friends list.</p>
<p>I guess there is no real &#8217;solution&#8217; and that is one of the problems with opening it up to anyone, look at MySpace are these people really <em>web-designers</em>? No. (yes, I know they are expressing themselves, blah blah blah). On the flip side are the people creating apps such as &#8216;water-fight&#8217; really developers? No. Should facebook be opening it&#8217;s doors? Yes. Should facebook vet applications for quality and usability? Yes. </p>
<h2>Context</h2>
<p>This is just going to be a quick one, but it&#8217;s an old net classic, context. You see it in the forums, you get it on IRC, even your text messages aren&#8217;t safe from it.</p>
<p>Context, or lack-thereof should I say. It amazes me how easy it is for context to be misunderstood when reading written word, and that has just happened to me. I&#8217;ve pissed people off because <em>they</em> misinterpreted the context in which my comments were made.</p>
<p>I&#8217;m really upset and disappointed because the uproar of it all was really hurtful and I honestly didn&#8217;t think this particular person was like that at all. Oh well, time is a healer I guess.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.craig-mackenzie.com/2007/09/10/work-facebook-context/feed/</wfw:commentRss>
		</item>
		<item>
		<title>simple bread crumbs in ruby on rails</title>
		<link>http://blog.craig-mackenzie.com/2007/08/09/simple-bread-crumbs-in-ruby-on-rails/</link>
		<comments>http://blog.craig-mackenzie.com/2007/08/09/simple-bread-crumbs-in-ruby-on-rails/#comments</comments>
		<pubDate>Thu, 09 Aug 2007 15:55:10 +0000</pubDate>
		<dc:creator>craig mackenzie</dc:creator>
		
		<category><![CDATA[code]]></category>

		<category><![CDATA[ruby/rails]]></category>

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

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

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

		<guid isPermaLink="false">http://blog.craig-mackenzie.com/2007/08/09/simple-bread-crumbs-in-ruby-on-rails/</guid>
		<description><![CDATA[below is a simple implementation of bread-crumbs for use in ruby on rails, you can pass in the level separator as the first argument and a boolean to indicate inclusion of home link.
it relies on the requested path to work out how to split the breadcrumbs, it alsoo requires that every component of your path [...]]]></description>
			<content:encoded><![CDATA[<p>below is a simple implementation of bread-crumbs for use in ruby on rails, you can pass in the level separator as the first argument and a boolean to indicate inclusion of home link.</p>
<p>it relies on the requested path to work out how to split the breadcrumbs, it alsoo requires that every component of your path is accessable, should be a good starting block though.</p>
<pre class="textmate-source"><span class="source source_ruby source_ruby_rails"><span class="meta meta_rails meta_rails_helper">  <span class="meta meta_function meta_function_method meta_function_method_with-arguments meta_function_method_with-arguments_ruby"><span class="keyword keyword_control keyword_control_def keyword_control_def_ruby">def</span> <span class="entity entity_name entity_name_function entity_name_function_ruby">breadcrumbs</span><span class="punctuation punctuation_definition punctuation_definition_parameters punctuation_definition_parameters_ruby">(</span><span class="variable variable_parameter variable_parameter_function variable_parameter_function_ruby">sep <span class="keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_ruby">=</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>Â»<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> include_home <span class="keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_ruby">=</span> <span class="constant constant_language constant_language_ruby">true</span></span><span class="punctuation punctuation_definition punctuation_definition_parameters punctuation_definition_parameters_ruby">)</span></span>
    levels <span class="keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_ruby">=</span> request<span class="punctuation punctuation_separator punctuation_separator_method punctuation_separator_method_ruby">.</span>path<span class="punctuation punctuation_separator punctuation_separator_method punctuation_separator_method_ruby">.</span>split<span class="punctuation punctuation_section punctuation_section_function punctuation_section_function_ruby">(</span><span class="string string_quoted string_quoted_single string_quoted_single_ruby"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_ruby">'</span>?<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_ruby">'</span></span><span class="punctuation punctuation_section punctuation_section_function punctuation_section_function_ruby">)</span><span class="punctuation punctuation_section punctuation_section_array punctuation_section_array_ruby">[</span><span class="constant constant_numeric constant_numeric_ruby">0</span><span class="punctuation punctuation_section punctuation_section_array punctuation_section_array_ruby">]</span><span class="punctuation punctuation_separator punctuation_separator_method punctuation_separator_method_ruby">.</span>split<span class="punctuation punctuation_section punctuation_section_function punctuation_section_function_ruby">(</span><span class="string string_quoted string_quoted_single string_quoted_single_ruby"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_ruby">'</span>/<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_ruby">'</span></span><span class="punctuation punctuation_section punctuation_section_function punctuation_section_function_ruby">)</span>
    levels<span class="punctuation punctuation_separator punctuation_separator_method punctuation_separator_method_ruby">.</span>delete_at<span class="punctuation punctuation_section punctuation_section_function punctuation_section_function_ruby">(</span><span class="constant constant_numeric constant_numeric_ruby">0</span><span class="punctuation punctuation_section punctuation_section_function punctuation_section_function_ruby">)</span>

    links <span class="keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_ruby">=</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>You are here: <span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_ruby">"</span></span>
    links <span class="keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_augmented keyword_operator_assignment_augmented_ruby">+=</span> content_tag<span class="punctuation punctuation_section punctuation_section_function punctuation_section_function_ruby">(</span><span class="string string_quoted string_quoted_single string_quoted_single_ruby"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_ruby">'</span>a<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="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>home<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>href</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>/<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_ruby">"</span></span><span class="punctuation punctuation_section punctuation_section_function punctuation_section_function_ruby">)</span> <span class="keyword keyword_control keyword_control_ruby">if</span> include_home

    levels<span class="punctuation punctuation_separator punctuation_separator_method punctuation_separator_method_ruby">.</span>each_with_index <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">level</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">index</span><span class="punctuation punctuation_separator punctuation_separator_variable punctuation_separator_variable_ruby">|</span>
      links <span class="keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_augmented keyword_operator_assignment_augmented_ruby">+=</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> <span class="source source_ruby source_ruby_embedded source_ruby_embedded_source"><span class="punctuation punctuation_section punctuation_section_embedded punctuation_section_embedded_ruby">#{</span>sep<span class="punctuation punctuation_section punctuation_section_embedded punctuation_section_embedded_ruby">}</span></span> <span class="source source_ruby source_ruby_embedded source_ruby_embedded_source"><span class="punctuation punctuation_section punctuation_section_embedded punctuation_section_embedded_ruby">#{</span>content_tag<span class="punctuation punctuation_section punctuation_section_function punctuation_section_function_ruby">(</span><span class="string string_quoted string_quoted_single string_quoted_single_ruby"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_ruby">'</span>a<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> level<span class="punctuation punctuation_separator punctuation_separator_method punctuation_separator_method_ruby">.</span>downcase<span class="punctuation punctuation_separator punctuation_separator_method punctuation_separator_method_ruby">.</span>gsub<span class="punctuation punctuation_section punctuation_section_function punctuation_section_function_ruby">(</span><span class="string string_regexp string_regexp_classic string_regexp_classic_ruby"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_ruby">/</span>_<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_ruby">/</span></span><span class="punctuation punctuation_separator punctuation_separator_object punctuation_separator_object_ruby">,</span> <span class="string string_quoted string_quoted_single string_quoted_single_ruby"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_ruby">'</span> <span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_ruby">'</span></span><span class="punctuation punctuation_section punctuation_section_function punctuation_section_function_ruby">)</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>href</span> <span class="punctuation punctuation_separator punctuation_separator_key-value">=></span> <span class="string string_quoted string_quoted_single string_quoted_single_ruby"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_ruby">'</span>/<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_ruby">'</span></span><span class="keyword keyword_operator keyword_operator_arithmetic keyword_operator_arithmetic_ruby">+</span>levels<span class="punctuation punctuation_section punctuation_section_array punctuation_section_array_ruby">[</span><span class="constant constant_numeric constant_numeric_ruby">0</span><span class="punctuation punctuation_separator punctuation_separator_method punctuation_separator_method_ruby">..</span>index<span class="punctuation punctuation_section punctuation_section_array punctuation_section_array_ruby">]</span><span class="punctuation punctuation_separator punctuation_separator_method punctuation_separator_method_ruby">.</span>join<span class="punctuation punctuation_section punctuation_section_function punctuation_section_function_ruby">(</span><span class="string string_quoted string_quoted_single string_quoted_single_ruby"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_ruby">'</span>/<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_ruby">'</span></span><span class="punctuation punctuation_section punctuation_section_function punctuation_section_function_ruby">))</span><span class="punctuation punctuation_section punctuation_section_embedded punctuation_section_embedded_ruby">}</span></span><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>

    content_tag<span class="punctuation punctuation_section punctuation_section_function punctuation_section_function_ruby">(</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>div<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> content_tag<span class="punctuation punctuation_section punctuation_section_function punctuation_section_function_ruby">(</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>p<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> links <span class="punctuation punctuation_section punctuation_section_function punctuation_section_function_ruby">)</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>id</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>breadcrumb<span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_ruby">"</span></span><span class="punctuation punctuation_section punctuation_section_function punctuation_section_function_ruby">)</span>
  <span class="keyword keyword_control keyword_control_ruby">end</span></span></span></pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.craig-mackenzie.com/2007/08/09/simple-bread-crumbs-in-ruby-on-rails/feed/</wfw:commentRss>
		</item>
		<item>
		<title>these boots were made for walking&#8230;</title>
		<link>http://blog.craig-mackenzie.com/2007/07/28/these-boots-were-made-for-walking/</link>
		<comments>http://blog.craig-mackenzie.com/2007/07/28/these-boots-were-made-for-walking/#comments</comments>
		<pubDate>Sat, 28 Jul 2007 11:29:19 +0000</pubDate>
		<dc:creator>craig mackenzie</dc:creator>
		
		<category><![CDATA[musings]]></category>

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

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

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

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

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

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

		<guid isPermaLink="false">http://blog.craig-mackenzie.com/2007/07/28/these-boots-were-made-for-walking/</guid>
		<description><![CDATA[this post is my PERSONAL opinion and view, you should form your own opinion and views
the past few weeks have bee a bit insane, work has become progressively more crap than even i thought impact could possibly become. it seems as though the people who &#8216;get it&#8217; and are trying to make things go as [...]]]></description>
			<content:encoded><![CDATA[<p><strong>this post is my PERSONAL opinion and view, you should form your own opinion and views</strong></p>
<p>the past few weeks have bee a bit insane, work has become progressively more crap than even i thought impact could possibly become. it seems as though the people who &#8216;get it&#8217; and are trying to make things go as smoothly as possible are shat on, and it&#8217;s just not fair.</p>
<p>i had my annual (not that i&#8217;ve even had one yet&#8230; in 2 years) review not to long ago, and it was&#8230; well it was confrontational, absurd and ultimately made me realize that impact isn&#8217;t somewhere i want to be spending my time and effort anymore.</p>
<p>you see the problem is i was promised a review of my contract and salary upon return from railsconf, it was the only reason i was going to railsconf. for me it was recognition from my employer that the immense amount of effort and dedication i have put into impact over the past 2 years was going to be fairly rewarded (at this point i am still not earning what my original position was advertised at!). in my two years at impact i have helped change the way the new media department works completely. when i started sites were built using font tags and tables! all software was stolen, illegal. designers were developers, developers were shit at their jobs. it was a mess.</p>
<p>two years later and we have a clear separation of design and development, all of our software is legit, our hosting solutions are top notch (and saving us thousands) we have a brilliant project manager (love you babes) and things are really starting to work properly. and of course all of our work is clean and lean semantic XHTML and CSS, everything is usability and accessibility tested and the maintainability is greatly improved.</p>
<p>back to the railsconf promise, a few weeks before going i was made to sign to contracts, one stating that if i leave the company within 18 months of the conference  i am to pay-back the full cost of sending me there. and another to increase my notification period to 3 months.</p>
<p>i signed them hesitantly because there was no mention of my pay-rise in either, and i definitely felt there should have been. i raised the issue with my immediate boss and was promised that it&#8217;s nothing to worry about and upon my return my contract and pay packet would be reviewed as previously discussed. i decided to trust this as i had pretty good relationship with my my boss and didn&#8217;t think he would be able to lie to me about something like that.</p>
<p>biggest. fucking. mistake. of. my. life.</p>
<p>turns out he has no problem lying directly to my face. a week before leaving for portland i&#8217;m told that i won&#8217;t be getting a pay-rise. now i&#8217;m pissed. really fucking pissed.</p>
<p>so back to my review (are you still following?)</p>
<p>i raised all of these points and more in my review, and was basically told (paraphrased):</p>
<blockquote><p> the past is in the past, deal with it. if you want more money you have to prove yourself.</p></blockquote>
<p>oh and not forgetting:</p>
<blockquote><p> if we lose job X and job X i blame you entirely.</p></blockquote>
<p>half way through the review i checked-out, mentally gave up. fine, i thought, fuck it. i don&#8217;t care anymore.</p>
<p>i obviously hadn&#8217;t proved myself enough in two years of dedicated work, and was clearly the sole reason for a jobs partially flawed execution (couldn&#8217;t have possibly been that the head of client services was less than cooperative in briefing the job in correctly and maintaining a level of communication on the job)</p>
<p>in fact the only thing that has been proved (to me) in two years is that i should have left a long time ago. impact doesn&#8217;t &#8216;get it&#8217; the thinking is all wrong. they&#8217;ve come from a print and design background and are trying to make noise in the new media world with the wrong attitude and the wrong management. the best thing they could do would be to remove the input of a certain md from far away (i&#8217;ll let you work that one out) and replace the so called department manager (haha) with someone who has actually even done the job and isn&#8217;t just a salesman with a scary delusion that a team of 3 people in the nowhere of marden can actually take on a job from playstation.</p>
<p>so back to my news (we&#8217;re nearly there i promise)</p>
<p>i&#8217;ve been job hunting (obviously) and have some great feedback. i&#8217;ve decided to accept a job at <a href="http://www.aa-rf.co.uk">Avenue A | Razorfish</a>, the largest interactive agency in the world. i had one interview in the pub which went amazingly well, then another a couple of days later and was offered the job on the spot.</p>
<p>the thing is aa|rf &#8216;get it&#8217;, the management have all been there and done it before, the process is streamlined, the client services team understand how to brief a job in (because they only do digital) and more importantly the culture is amazing, people are given time to develop their skills.</p>
<p>when i told my new employer about the way impact nm runs, they laughed, then were really shocked. they could  see i would go nowhere at impact and have decided to let me grow at their place.</p>
<p>i&#8217;m gonna miss the people at impact, but not the management.</p>
<p>better things await me. and i hope the remaining nm staff realize that impact will probably never &#8216;get it&#8217;.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.craig-mackenzie.com/2007/07/28/these-boots-were-made-for-walking/feed/</wfw:commentRss>
		</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>
		</item>
		<item>
		<title>the downward spiral</title>
		<link>http://blog.craig-mackenzie.com/2007/06/15/the-downward-spiral/</link>
		<comments>http://blog.craig-mackenzie.com/2007/06/15/the-downward-spiral/#comments</comments>
		<pubDate>Fri, 15 Jun 2007 12:40:02 +0000</pubDate>
		<dc:creator>craig mackenzie</dc:creator>
		
		<category><![CDATA[musings]]></category>

		<guid isPermaLink="false">http://blog.craig-mackenzie.com/2007/06/15/the-downward-spiral/</guid>
		<description><![CDATA[things are not so great.
since railsconf a lot has come to my attention in professional life, my working life. things which have had an effect on me, my faith in people and my ability to commit.
i&#8217;ve been thinking an awful lot lately, and i think the time has come for me to take a serious [...]]]></description>
			<content:encoded><![CDATA[<p>things are not so great.</p>
<p>since railsconf a lot has come to my attention in professional life, my working life. things which have had an effect on me, my faith in people and my ability to commit.</p>
<p>i&#8217;ve been thinking an awful lot lately, and i think the time has come for me to take a serious look at my career, and make some important decisions.</p>
<p>at the moment i don&#8217;t feel like i&#8217;m happy. if ruby has taught me only one thing, it&#8217;s that happiness is more important than money, deadlines, clients, bosses and commitment. if a person doesn&#8217;t feel happy doing what they do, they shouldn&#8217;t do it.</p>
<p>the problem in my situation is that it wasn&#8217;t always this way. the company i work for has some brilliant people, and i have been happy here for so long now. but recently the happiness has dropped dramatically and in the name of staying true to myself i have to make some difficult choices.</p>
<p>the downward spiral to all of this is complicated, and i&#8217;ll spare you the specifics, suffice to say that appreciation, and a fair workload, with realistic expectations and fair rewards are factors which have been below par for a long time, with no immediate sign of improvement.</p>
<p>so here i am, the eve of turning 21, about to change my life?<br />
time will tell.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.craig-mackenzie.com/2007/06/15/the-downward-spiral/feed/</wfw:commentRss>
		</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>
		</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>
		</item>
	</channel>
</rss>
