<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Code to Customer</title>
	
	<link>http://codetocustomer.com</link>
	<description>Ruby on Rails developers from Wellington, New Zealand</description>
	<lastBuildDate>Mon, 21 Dec 2009 04:08:42 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/CodeToCustomer" /><feedburner:info uri="codetocustomer" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>End of year Wrap-up</title>
		<link>http://feedproxy.google.com/~r/CodeToCustomer/~3/kLdb5kSBvTU/end-of-year-wrap-up</link>
		<comments>http://codetocustomer.com/blog/2009/12/end-of-year-wrap-up#comments</comments>
		<pubDate>Mon, 21 Dec 2009 03:54:18 +0000</pubDate>
		<dc:creator>oliver</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://codetocustomer.com/?p=340</guid>
		<description><![CDATA[Long time since our last blog post! We&#8217;ve been flat out with our projects, so here is the latest update.
We are nearing the end of our second year at Code to Customer, and it marks the end to a year where we have been shifting our focus as a company away from consulting to web [...]]]></description>
			<content:encoded><![CDATA[<p>Long time since our last blog post! We&#8217;ve been flat out with our projects, so here is the latest update.</p>
<p>We are nearing the end of our second year at Code to Customer, and it marks the end to a year where we have been shifting our focus as a company away from consulting to web products.</p>
<p><em>What we&#8217;ve been working on:</em></p>
<p><a href="http://codetocustomer.com/wp-content/uploads/2009/12/header-logo.png"><img class="size-full wp-image-341 alignleft right" title="header-logo" src="http://codetocustomer.com/wp-content/uploads/2009/12/header-logo.png" alt="" width="335" height="76" /></a><strong>Minutedock</strong> &#8211; This is our first live SAAS product! Based around time tracking and integration with Xero, We&#8217;ve solved a problem us and our Wellington tech friends have identified, and solved it with style. We have a Harvest importer so getting started is easy, and its only $15NZD a month! Check it out at <a href="http://minutedock.com">minutedock.com</a> if you haven&#8217;t already.</p>
<p><strong>MyTours</strong> &#8211; Currently still in the pre-release stage, we are developing an iPhone application to publish tours. These can be walking tours, tours of museums, tours of anything! And we are building a website that pairs with the iPhone application to author content, and push it to the device via our updates system. We are currently only doing branded applications for larger customers, but we are looking at building a generic application for anyone to publish tour content, and sell it via our system. Check it out at <a href="http://www.mytoursapp.com">mytoursapp.com</a> for our prerelease website, which we are going to re-skin and push live mid Jan, along with our first iPhone apps in the app store.</p>
<p><em>Coming up:</em></p>
<p>We&#8217;ve got some more projects coming up so stay tuned. They are currently in the super secret stage, but all will be revealed around March. We will also be doing a redesign of codetocustomer.com! It is long overdue and will be ready in Jan as well.</p>
<p><strong>Special thanks to Alain and Victoria at Wildfire! </strong>They have been our main consulting customer for the last year and we are proud to be part of their project. Wildfire is based around running marketing campaigns on social networks, and is perfect for running competitions/sweepstakes and maximizing your exposure. Check it out at <a href="http://www.wildfireapp.com">wildfireapp.com</a></p>
<p>So finally, Merry christmas and a happy new year from Nik and Ollie at Code to Customer. Looking forward to a sweet holiday in the sun.</p>
<img src="http://feeds.feedburner.com/~r/CodeToCustomer/~4/kLdb5kSBvTU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://codetocustomer.com/blog/2009/12/end-of-year-wrap-up/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://codetocustomer.com/blog/2009/12/end-of-year-wrap-up</feedburner:origLink></item>
		<item>
		<title>Snow Leopard for open-source devs</title>
		<link>http://feedproxy.google.com/~r/CodeToCustomer/~3/R2coTR1HrBw/snow-leopard-for-open-source-devs</link>
		<comments>http://codetocustomer.com/blog/2009/08/snow-leopard-for-open-source-devs#comments</comments>
		<pubDate>Tue, 25 Aug 2009 00:45:56 +0000</pubDate>
		<dc:creator>oliver</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://codetocustomer.com/?p=324</guid>
		<description><![CDATA[I just noticed that Apple has announced that snow leopard will be released on the 28th of August. Here are some tips for upgrading to snow leopard that could save you a day of frustration.
I&#8217;ve already been running it for the last week, as I managed to get ahold of the GM release which was [...]]]></description>
			<content:encoded><![CDATA[<p>I just noticed that Apple has announced that snow leopard will be released on the 28th of August. Here are some tips for upgrading to snow leopard that could save you a day of frustration.</p>
<p>I&#8217;ve already been running it for the last week, as I managed to get ahold of the GM release which was released to the beta testing community.</p>
<p><img class="alignleft size-medium wp-image-330 right" title="snow-leopard-box" src="http://codetocustomer.com/wp-content/uploads/2009/08/snow-leopard-box-300x289.png" alt="snow-leopard-box" width="300" height="289" />Upgrading to this operating system should be easy right? It actually depends on what software you have installed. If you use pre-compiled .app programs you just drop into your application folder, then everything will be easy, and all you need to do is chuck in the DVD and click upgrade!</p>
<p>If you use software that is compiled from source, it will be a different story. The main difference in Snow Leopard is in the base system. Everything is set up by default to run as 64bit. In every other OSX release, everything remained as 32bit, and so upgrading was easy, even with software installed from source. You can still run 32bit software on Snow Leopard, but you cant run 32bit software that has been compiled against a 32bit Library that is now 64bit!</p>
<p>But at first I didn&#8217;t notice this. I decided that as I had not reformatted in a while, I would reinstall OSX from scratch and install everything again. Luckily this was the right decision.</p>
<p>This was easy to do, using the standard installer to reformat the hard drive, and install the operating system. Before I started, I had backed up my home folder onto another HDD. This is so that I had my old settings that I could view for reference, or copy back over configurations and data as It was needed. Once this was done I also installed the new XCode off the DVD.</p>
<p>As I am a rails developer, I need to get my dev system up and running. XCode includes a 64bit version of Ruby 1.8.7, and includes rubygems with rails already installed. Below are some tips from when I setup my gems:</p>
<ul>
<li><code>sudo gem update --system &amp;&amp; sudo gem update</code></li>
<li>Install mysql. The OSX 10.5 64bit version off the mysql website works fine.</li>
<li>install the mysql gem: <code>sudo gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config</code></li>
<li>Installing imagemagick and rmagick require a different approach. The instructions I found <a href="http://www.agileanimal.com/2009/08/11/imagemagick-and-rmagick-on-leopard-and-other-large-white-cats" target="_blank">here</a> worked for me, as the binaries on the imagemagick website are for 32bit versions of OSX.</li>
<li>Setup your paths and env, and you are good to go!</li>
</ul>
<p>This should mean you are all ready to roll with rails. Easy right? Open up activity monitor and checkout how every process is Intel (64bit). Nice.</p>
<p>Now when Nik installed OSX 10.6, he clicked the upgrade button. With older versions of OSX, this would mean you end up with a fully working version of the newer operating system with all your old software. but not anymore! Upon completion, none of Niks preinstalled 32bit compiled from source software worked. So not only does Nik need to reinstall his software anyway, he also has a heap of old 32bit binaries that are useless sitting around on his system taking up space.</p>
<p>Well he eventually got everything working fine, but he probably should have taken the same approach I did. The main annoyance here is expecting everything to work when you click upgrade.</p>
<p>Upgrading your OS is a perfect solution for someone with little opensource software installed, and not at all if you have heaps, So keep this in mind when you buy 10.6 later this week.</p>
<img src="http://feeds.feedburner.com/~r/CodeToCustomer/~4/R2coTR1HrBw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://codetocustomer.com/blog/2009/08/snow-leopard-for-open-source-devs/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://codetocustomer.com/blog/2009/08/snow-leopard-for-open-source-devs</feedburner:origLink></item>
		<item>
		<title>friday beers</title>
		<link>http://feedproxy.google.com/~r/CodeToCustomer/~3/aZzkrZ8AE1Q/friday-beers</link>
		<comments>http://codetocustomer.com/blog/2009/07/friday-beers#comments</comments>
		<pubDate>Fri, 17 Jul 2009 02:40:05 +0000</pubDate>
		<dc:creator>Nik</dc:creator>
				<category><![CDATA[congrats]]></category>

		<guid isPermaLink="false">http://codetocustomer.com/?p=294</guid>
		<description><![CDATA[
This blog can be pretty negative at times. No, don&#8217;t act so shocked &#8211; it&#8217;s true &#8211; I spend a lot of virtual ink calling people out and trying to get everyone to improve the quality of their web experiences. I think it&#8217;s high time for me to acknowledge some of the good stuff &#8211; [...]]]></description>
			<content:encoded><![CDATA[<p>
This blog can be pretty negative at times. No, don&#8217;t act so shocked &#8211; it&#8217;s true &#8211; I spend a lot of virtual ink calling people out and trying to get everyone to improve the quality of their web experiences. I think it&#8217;s high time for me to acknowledge some of the good stuff &#8211; some virtual pats-on-the-back, rather than e-tongue lashings. So, without further ado, I bring you the Friday Beers.
</p>
<h4>Kiwibank</h4>
<p></p>
<p>
<img src="http://codetocustomer.com/wp-content/uploads/2009/07/Picture-7-300x203.png" alt="Kiwibank&#039;s New Internet Banking" title="Kiwibank&#039;s New Internet Banking" width="300" height="203" class="alignleft size-medium wp-image-297 left"/> <a href="http://kiwibank.co.nz">Kiwibank</a>&#8217;s new Internet Banking site is nothing short of spectacular. I was seriously floored &#8211; a bank, with an innovative, attractive and usable experience. Ignore the <a href="http://twitter.com/barnaclebarnes/statuses/2558586362">grumpy old curmudgeons</a>, it&#8217;s an awesome change. In fact, it only falls short of the full six-pack because it sticks to the left hand side of my 24&#8243; monitor (margin: 0 auto; plz kthx) and doesn&#8217;t include <abbr title="Cross-Site Request Forgery">CSRF</abbr> protection (you would&#8217;ve got that for free if you&#8217;d used <a href="http://rubyonrails.org">Rails</a> instead of .NET).
</p>
<p>
<img src="http://codetocustomer.com/wp-content/uploads/2009/07/beer.png" alt="A Beer" title="A Beer" style="border: 0;" /><img src="http://codetocustomer.com/wp-content/uploads/2009/07/beer.png" alt="A Beer" title="A Beer" style="border: 0;" /><img src="http://codetocustomer.com/wp-content/uploads/2009/07/beer.png" alt="A Beer" title="A Beer" style="border: 0;" /><img src="http://codetocustomer.com/wp-content/uploads/2009/07/beer.png" alt="A Beer" title="A Beer" style="border: 0;" />
</p>
<div style="clear: both;"><!--- --></div>
<h4 style="margin-top: 1.5em;">Orcon</h4>
<p></p>
<p>
<img src="http://codetocustomer.com/wp-content/uploads/2009/07/Picture-8-257x300.png" alt="Orcon" title="Orcon" width="257" height="300" class="alignleft size-medium wp-image-306 right" />Well, they got off to a <a href="http://codetocustomer.com/blog/2009/07/a-tale-of-orcon-proportions">shaky start</a>, but boy, did they pick it up. Congratulations to Duncan Blair (their Head of Marketing and Communications) and the rest of the Orcon crew &#8211; great use of Twitter and new media, and an awesome turn around. Honorable mention to their development crew &#8211; who fixed the bugs I encountered and added an autocomplete with an impressive turn around. Have a well-deserved 5 beers guys.
</p>
<p>
<img src="http://codetocustomer.com/wp-content/uploads/2009/07/beer.png" alt="A Beer" title="A Beer" style="border: 0;" /><img src="http://codetocustomer.com/wp-content/uploads/2009/07/beer.png" alt="A Beer" title="A Beer" style="border: 0;" /><img src="http://codetocustomer.com/wp-content/uploads/2009/07/beer.png" alt="A Beer" title="A Beer" style="border: 0;" /><img src="http://codetocustomer.com/wp-content/uploads/2009/07/beer.png" alt="A Beer" title="A Beer" style="border: 0;" /><img src="http://codetocustomer.com/wp-content/uploads/2009/07/beer.png" alt="A Beer" title="A Beer" style="border: 0;" />
</p>
<div style="clear: both;"><!--- --></div>
<h4 style="margin-top: 1.5em;">Epic Beer</h4>
<p></p>
<p>
<img src="http://codetocustomer.com/wp-content/uploads/2009/07/Picture-10.png" alt="Epic Beer" title="Epic Beer" width="194" height="131" class="alignleft size-full wp-image-316 left" />Well, these guys are kind of a shoe-in, seeing as I&#8217;m counting down the hours till I head on down to the <a href="http://themalthouse.co.nz">Malthouse</a> to sample their new <a href="http://twitpic.com/ald9h">Armageddon</a> brew. I&#8217;m planning to try more than just 6 ;)
</p>
<div style="clear: both;"><!--- --></div>
<p style="margin-top: 1.5em;">
<img src="http://codetocustomer.com/wp-content/uploads/2009/07/beer.png" alt="A Beer" title="A Beer" style="border: 0;" /><img src="http://codetocustomer.com/wp-content/uploads/2009/07/beer.png" alt="A Beer" title="A Beer" style="border: 0;" /><img src="http://codetocustomer.com/wp-content/uploads/2009/07/beer.png" alt="A Beer" title="A Beer" style="border: 0;" /><img src="http://codetocustomer.com/wp-content/uploads/2009/07/beer.png" alt="A Beer" title="A Beer" style="border: 0;" /><img src="http://codetocustomer.com/wp-content/uploads/2009/07/beer.png" alt="A Beer" title="A Beer" style="border: 0;" /><img src="http://codetocustomer.com/wp-content/uploads/2009/07/beer.png" alt="A Beer" title="A Beer" style="border: 0;" />
</p>
<div style="clear: both;"><!--- --></div>
<img src="http://feeds.feedburner.com/~r/CodeToCustomer/~4/aZzkrZ8AE1Q" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://codetocustomer.com/blog/2009/07/friday-beers/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://codetocustomer.com/blog/2009/07/friday-beers</feedburner:origLink></item>
		<item>
		<title>a tale of orcon proportions</title>
		<link>http://feedproxy.google.com/~r/CodeToCustomer/~3/QRW5p5Rw7f0/a-tale-of-orcon-proportions</link>
		<comments>http://codetocustomer.com/blog/2009/07/a-tale-of-orcon-proportions#comments</comments>
		<pubDate>Wed, 15 Jul 2009 06:12:31 +0000</pubDate>
		<dc:creator>Nik</dc:creator>
				<category><![CDATA[life outside tech]]></category>
		<category><![CDATA[musings]]></category>
		<category><![CDATA[user-experience]]></category>

		<guid isPermaLink="false">http://codetocustomer.com/?p=268</guid>
		<description><![CDATA[We finally to decided to take the plunge at home, and swap from trusty old Snap ADSL to a shiny, ADSL2+ Orcon connection. Apparently, it&#8217;s a no-brainer, and we thought that the hardest part would be splitting the single free hotel night between two couples and Dave.


Aaah, such naivety.


The first hurdle was the signup form [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://codetocustomer.com/wp-content/uploads/2009/07/Picture-61.png" alt="Orcon Logo" title="Orcon Logo" width="320" height="107" class="alignleft size-full wp-image-279 left" />We finally to decided to take the plunge at home, and swap from trusty old <a href="http://snap.net.nz">Snap</a> ADSL to a shiny, ADSL2+ <a href="http://orcon.net.nz">Orcon</a> connection. Apparently, it&#8217;s a <a href="http://www.orcon.net.nz/no-brainer">no-brainer</a>, and we thought that the hardest part would be splitting the single free hotel night between two couples and <a href="http://twitter.com/nz_dave">Dave</a>.
</p>
<p>
Aaah, such naivety.
</p>
<p>
The first hurdle was the signup form on Orcon&#8217;s website. Where to begin&#8230;.</p>
<p>
<img src="http://codetocustomer.com/wp-content/uploads/2009/07/Picture-4.png" alt="Orcon Address Locater" title="Orcon Address Locater" width="211" height="364" class="size-full wp-image-269 right" />Perhaps with the &#8220;Address Locater&#8221;, and its select drop down populated with every street type known to man (please, talk to <a href="http://zoomin.co.nz">ZoomIn</a>, they&#8217;ve done addresses properly).
</p>
<p>
Or perhaps with the password field &#8211; &#8220;Your password must be 5 to 7 characters, contain one number and one capital letter&#8221;. As this ruled out my usual ridiculously long passphrase, I picked something which I promptly forgot.
</p>
<p>Maybe, even the &#8220;Phone Number&#8221; field, which was marked &#8220;REQUIRED&#8221;, even though I had previously indicated (twice) &#8220;YES, I understand that this plan doesn&#8217;t include a phone line&#8221;. I entered Orcon&#8217;s own 0800 number, and moved on.</p>
<p>
Admittedly, I was attempting all of this over a couple of beers with the flatties, but guys &#8211; you&#8217;re an ISP. Surely someone there knows their Internets well enough to fix this for you? The whole thing smacks of being designed and directed by the marketing department.
</p>
<p>
With that ordeal over with, and a suitably humorous username selected, it was time to wait for the confirmation email. Which never came. Oh well, it would appear I&#8217;m not <a href="https://twitter.com/toxaq/statuses/2491435371">the only one</a>. When an email eventually came, it looked like this:
</p>
<p>
<a href="http://codetocustomer.com/wp-content/uploads/2009/07/Picture-52.png"><img src="http://codetocustomer.com/wp-content/uploads/2009/07/Picture-52-300x160.png" alt="Orcon&#039;s Email" title="Orcon&#039;s Email" width="300" height="160" class="alignleft size-medium wp-image-285 left" /></a>
</p>
<div style="clear: both;"><!-- --></div>
<p>
(Surely whatever library you&#8217;re using has a working <monospace>strftime</monospace> implementation? Human readable dates, please!)
</p>
<p>
Thus ensued a short wait for the jolly Chorus worker (I imagine him looking ever-so-slightly like Bob the Builder) to toddle on off to the exchange and flip some switches.
</p>
<p>And then &#8211; Success! An email from the folks at Orcon Provisioning &#8211; &#8220;You&#8217;re now connected to Orcon@Home+&#8221;. Woo! I raced to my router&#8217;s web interface, feverish with new-gadget delight, and punched in my shiny Orcon Username and &#8230;. what was that password again?</p>
<p>
Bugger. 20 Minutes on hold later, I am armed with a password I can remember (for some reason the character requirements are now relaxed) and punch it in to my router. All lights are green, and we are go for launch! Punch &#8220;google.com&#8221; into Firefox, and bam! I get sent to <a href="http://portal.snap.net.nz">http://portal.snap.net.nz</a> which helpfully informs me that my Snap username and password are wrong. Well, duh, I&#8217;m using my Orcon ones.
</p>
<p>
Seems Bob the Chorus switch-flipper has not been doing his job.
</p>
<p>
Alright, another call to Orcon, and another twenty minutes of my life wasted on hold. To make matters worse, the recorded hold voice says &#8220;some-<em>fink</em>&#8221; rather that &#8220;some-<em>thing</em>&#8220;, and I shudder at each repetition of that lazy &#8220;th&#8221;. I am met with an awesomely polite but entirely useless support person. </p>
<p>I should take some time out to commend Orcon on their support setup here. It seems she&#8217;s got screen shots next to her checklist for exactly my router type, and can see exactly what I&#8217;m seeing on the screen. She assumes I&#8217;m on a Windows machine at first (&#8220;Now click Start&#8230;&#8221;) but is quickly back with me once I mention my Mac-ness. Ten points for Gryffindor.
</p>
<p>
This is all <strong>wonderful</strong>, and I&#8217;m sure my Grandma would appreciate the careful and polite help, but the first thing I said to this support person was &#8220;Okay, all outgoing HTTP connections are being redirected to a portal site for our previous provider. This means we&#8217;re not switched over at your end&#8221;. At this point, she had two options:
</p>
<ol>
<li>Swap me over to someone that could <a href="http://www.youtube.com/watch?v=DNT7uZf7lew">speak my language</a></li>
<li>Continue with the excruciating process of me attempting to explain my setup (No, we have two routers. Yes, they are on different subnets. No, not different networks, subnets&#8230;. *sigh*).</li>
</ol>
<p>
Eventually, I interrupted as politely as possible &#8211; &#8220;Look, would it be possible to speak to someone who knows what&#8217;s going on here, rather than just running through another checklist?&#8221;. I felt mean, but was transferred nonetheless. Into hold-queue oblivion. Ten minutes later I gave up. Lesson learned: Don&#8217;t call in the evening.
</p>
<p>
So, a call in the morning. And I meet Braiden, a young man who embraces the spirit, if not the letter, of &#8216;<a href="http://www.hanselman.com/blog/FizzBinTheTechnicalSupportSecretHandshake.aspx">FizzBin</a>.&#8217; (Orcon: That man needs a payrise, stat). We quickly ditch the checklists, and he says they&#8217;ll check everything out for me at their end. And now we wait in &#8220;a-technician-will-be-there-shortly&#8221; limbo.
</p>
<p>
(Stay tuned for Chapter 2: In Which I Finally Get Our Flat Connected To The Internets.)</p>
<img src="http://feeds.feedburner.com/~r/CodeToCustomer/~4/QRW5p5Rw7f0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://codetocustomer.com/blog/2009/07/a-tale-of-orcon-proportions/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://codetocustomer.com/blog/2009/07/a-tale-of-orcon-proportions</feedburner:origLink></item>
		<item>
		<title>viva la revolucion!</title>
		<link>http://feedproxy.google.com/~r/CodeToCustomer/~3/_QZmQuzolyo/viva-la-revolucion</link>
		<comments>http://codetocustomer.com/blog/2009/03/viva-la-revolucion#comments</comments>
		<pubDate>Mon, 02 Mar 2009 06:05:45 +0000</pubDate>
		<dc:creator>Nik</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://codetocustomer.com/?p=229</guid>
		<description><![CDATA[ .redacted {  font-family: monospace; color: #fff; background: #000; font-style: normal; font-weight: bold; padding: 3px; } 
&#8220;Hi there Nicholas, it&#8217;s REDACTED here from REDACTED. I&#8217;m calling about your recent switch of electricity provider to Powershop, and I was just wondering if you had a few minutes to run through your reasons for changing providers.&#8221;



Well [...]]]></description>
			<content:encoded><![CDATA[<style type="text/css"> .redacted {  font-family: monospace; color: #fff; background: #000; font-style: normal; font-weight: bold; padding: 3px; } </style>
<p>&#8220;Hi there Nicholas, it&#8217;s <em class="redacted">REDACTED</em> here from <em class="redacted">REDACTED</em>. I&#8217;m calling about your recent switch of electricity provider to <a href="http://powershop.co.nz">Powershop</a>, and I was just wondering if you had a few minutes to run through your reasons for changing providers.&#8221;
</p>
<p><img src="http://codetocustomer.com/wp-content/uploads/2009/03/picture-2.png" alt="Powershop" title="Powershop" width="309" height="174" class="alignnone size-full wp-image-256" class="right" /></p>
<p>
Well hello! We swapped to Powershop for a few reasons &#8211; it&#8217;s cheaper, it&#8217;s easier for us, and I also have a small stake in a couple of the brands running on the Powershop marketplace &#8211; <a href="https://secure.powershop.co.nz/promo/daisy">FlowerPower</a> and <a href="http://greenpowercompany.co.nz/">GreenPower</a>.
</p>
<p>
&#8220;Okay&#8230; well, are you aware that <em class="redacted">REDACTED</em> includes GST on their per unit prices on their bills? And let me check your current per unit price &lt;short pause&gt; your current per unit price is about 19c/unit. We also charge a small daily use charge of 94c&#8221;
</p>
<p>
I was looking at my bill last night, and I&#8217;m not sure whether that price included GST or not. But I don&#8217;t think it did, there was a GST addition right at the bottom. Also, the average house uses 8000 units of power per year, right? So that works out to &lt;short pause&gt; just over 22 units per day. Which means my per unit price, assuming GST isn&#8217;t included, is a little over 22c per unit.
</p>
<p>
&#8220;Okaaaaay&#8230;.&#8221;
</p>
<p>
I&#8217;m looking at Powershop now, and FlowerPower are offering me 18.18c/unit. That&#8217;s a lot cheaper.
</p>
<p>
&#8220;That is quite cheap. Are you sure that includes GST?&#8221;
</p>
<p>
Well, looking at my invoices on Powershop now, it looks like it is. Pretty cheap, huh?
</p>
<p>
&#8220;Yep, that is. I will have to check that one out for myself! Ha, I shouldn&#8217;t say that! Anyway, are you aware that the electricity Powershop sells Electricity from the National Grid, that&#8217;s been all mixed up, whereas <em class="redacted">REDACTED</em> sells only power from renewable sources&#8221;
</p>
<p>
That is interesting&#8230; Well, on Powershop there is a company called <a href="http://greenpowercompany.co.nz/">GreenPower</a> who will buy Carbon Credits (Actually &#8211; we&#8217;ll plant trees) to offset carbon generated by providing me power. Cool huh?
</p>
<p>
&#8220;Ummm yeah that does sound cool&#8230;&#8221;
</p>
<p>
Besides, I live in a flatting situation, so Powershop is a godsend. We can pre-pay for our power, so that we can work out what each person owes and we&#8217;re never left in the lurch if someone leaves unexpectedly.
</p>
<p>
&#8220;Wow! I&#8217;ve just had a flatmate leave myself, and now we&#8217;re stuck paying their power bill&#8230; I&#8217;ll have to check that out! Anyway, ummm, haha. If you have any more question, just uh, call us and we&#8217;ll let you know&#8221;
</p>
<p>
I sure will. And make sure you check out <a href="http://powershop.co.nz">Powershop</a>!
</p>
<p>
<em>Yes, this actually happened. </p>
<p>No, it&#8217;s not entirely accurate, my memory isn&#8217;t that great, but this is the general gist of the conversation.</p>
<p> Yes, names and identifying pieces of information been removed because I don&#8217;t want anyone to get in trouble, it was a really nice person just doing their job. </p>
<p>No, I didn&#8217;t do that math in my head right there, I already knew the numbers but I hammed it up a little. </p>
<p>No, I&#8217;m not above cheap showmanship. </p>
<p>Yes, I really do believe I convinced someone to try Powershop. </p>
<p>Yes, it will be better for them.</em></p>
<img src="http://feeds.feedburner.com/~r/CodeToCustomer/~4/_QZmQuzolyo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://codetocustomer.com/blog/2009/03/viva-la-revolucion/feed</wfw:commentRss>
		<slash:comments>11</slash:comments>
		<feedburner:origLink>http://codetocustomer.com/blog/2009/03/viva-la-revolucion</feedburner:origLink></item>
		<item>
		<title>“sexy“</title>
		<link>http://feedproxy.google.com/~r/CodeToCustomer/~3/pDZu1Tg6bNQ/sexy</link>
		<comments>http://codetocustomer.com/blog/2009/02/sexy#comments</comments>
		<pubDate>Tue, 24 Feb 2009 10:07:08 +0000</pubDate>
		<dc:creator>Nik</dc:creator>
				<category><![CDATA[business]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[geekery]]></category>
		<category><![CDATA[life outside tech]]></category>
		<category><![CDATA[user-experience]]></category>

		<guid isPermaLink="false">http://codetocustomer.com/?p=216</guid>
		<description><![CDATA[

People have different reactions to different words. &#8220;Smash Box&#8221; cosmetics must&#8217;ve seemed like a great idea to a marketing manager somewhere (&#8220;We&#8217;ve got to convey being out of the box and different and new. Why don&#8217;t we smash the box! It&#8217;s brilliant&#8221;). But to someone more, well, frankly, puerile, it takes on an entirely different [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://codetocustomer.com/wp-content/uploads/2009/02/smoky-eye-1jpg-242x300.jpg" alt="Smash Box Cosmetics" title="Smash Box Cosmetics" width="242" height="300" class="alignnone size-medium wp-image-221 right" /></p>
<p>
People have different reactions to different words. &#8220;<a href="http://smashboxcosmetics.co.nz/">Smash Box</a>&#8221; cosmetics must&#8217;ve seemed like a great idea to a marketing manager somewhere (&#8220;We&#8217;ve got to convey being <em>out of the box</em> and different and <em>new</em>. Why don&#8217;t we <strong>smash the box</strong>! It&#8217;s brilliant&#8221;). But to someone more, well, frankly, puerile, it takes on an <a href="http://www.urbandictionary.com/define.php?term=smash+box">entirely different meaning.</a> (Warning: Urban Dictionary,  may or may not be safe for work, depending on how draconian your workplace is about cursewords)
</p>
<p>
&#8220;Sexy&#8221; is another interesting case. Personally I use it to describe anything that is particularly nice or attractive, and along with &#8220;Epic&#8221;, it forms <a href="http://bandit.co.nz">James</a>&#8216; entire repertoire of adjectives. However, there are a few family members who look at me sideways when I describe a piece of computer equipment in this manner, maintaining that it should only be pulled into service when describing the attractiveness of a potential mate.
</p>
<p>
One of our customers recently sent me an instant message:
</p>
<blockquote><p>
btw&#8230; I reset the other day my password for my account and it emailed me the following pw &#8220;asshole2342&#8243;&#8230; quite funny
</p></blockquote>
<p>
(<a href="http://wildfireapp.com/buzz/team">Alain</a>, it should be noted, is particularly awesome)
</p>
<p><img src="http://codetocustomer.com/wp-content/uploads/2009/02/funny-pictures-hot-or-not-catjpg-300x225.jpg" alt="Sexy Lolcat" title="Sexy Lolcat" width="300" height="225" class="alignnone size-medium wp-image-222 left" /></p>
<p>
The source of the trouble was the <a href="http://agilewebdevelopment.com/plugins/sexy_temp_passwords">sexy_temp_passwords</a> Rails plugin I had installed. Its word list included, among other things, &#8220;penis&#8221; and &#8220;virgin&#8221;.
</p>
<p>
Now, you can giggle, but some people might not. We thought it safer to replace the <abbr title="vendor/sexy_temp_passwords/sexy-passwords.txt">word list</abbr> with a list from a <a href="http://www.wordlistgenerator.net/">less controversial</a> source.
</p>
<p>
Watch your wordlists carefully folks. And check <a href="http://urbandictionary.com">Urban Dictionary</a> before you name your company.</p>
<img src="http://feeds.feedburner.com/~r/CodeToCustomer/~4/pDZu1Tg6bNQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://codetocustomer.com/blog/2009/02/sexy/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://codetocustomer.com/blog/2009/02/sexy</feedburner:origLink></item>
		<item>
		<title>it’s just a sql query</title>
		<link>http://feedproxy.google.com/~r/CodeToCustomer/~3/EOmWRZKBBK8/its-just-a-sql-query</link>
		<comments>http://codetocustomer.com/blog/2009/01/its-just-a-sql-query#comments</comments>
		<pubDate>Fri, 16 Jan 2009 02:07:57 +0000</pubDate>
		<dc:creator>Nik</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://codetocustomer.com/?p=210</guid>
		<description><![CDATA[
Like designers, if you give a programmer a problem with parameters, they’ll apply every bit of genius they have to solve it in the best possible way. If you tell them how to do it, you’ll suffer the wrath of an angry God.


I can bear testament to the veracity of this. There was a previous [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>
Like designers, if you give a programmer a problem with parameters, they’ll apply every bit of genius they have to solve it in the best possible way. If you tell them how to do it, you’ll suffer the wrath of an angry God.
</p></blockquote>
<p>
I can bear testament to the <a href="http://powazek.com/posts/1655">veracity of this</a>. There was a previous workplace (will shall, of course, remain un-named) where I was often told by a non-programmer &#8220;that should be really easy. Surely it&#8217;s just a SQL query&#8221;.
</p>
<p>
Nothing makes me madder. Especially when the &#8220;offender&#8221; has no clue what they are talking about, and are simply using the only piece of jargon they happen to have picked up. My typical response was similarly useful &#8211; to turn my laptop around, fold my arms and say &#8220;Fine. If you know so much, you write it&#8221;.
</p>
<p>
Hmm. Perhaps the word &#8220;God&#8221; in that quote should be replaced with &#8220;petulant child&#8221;.</p>
<img src="http://feeds.feedburner.com/~r/CodeToCustomer/~4/EOmWRZKBBK8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://codetocustomer.com/blog/2009/01/its-just-a-sql-query/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://codetocustomer.com/blog/2009/01/its-just-a-sql-query</feedburner:origLink></item>
		<item>
		<title>POETS</title>
		<link>http://feedproxy.google.com/~r/CodeToCustomer/~3/jesXeQKKHf0/poets</link>
		<comments>http://codetocustomer.com/blog/2009/01/poets#comments</comments>
		<pubDate>Thu, 08 Jan 2009 23:23:37 +0000</pubDate>
		<dc:creator>Nik</dc:creator>
				<category><![CDATA[business]]></category>
		<category><![CDATA[life outside tech]]></category>
		<category><![CDATA[musings]]></category>

		<guid isPermaLink="false">http://codetocustomer.com/?p=201</guid>
		<description><![CDATA[

Zed Shaw reminds me of House.


He acts like an asshole most of the time, but he&#8217;s smart and right too often for anyone to do anything about it. And he gave an awesome talk at CUSEC &#8211; about becoming a corporate programmer and not losing your soul. It is so freaking cool that they have [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://codetocustomer.com/wp-content/uploads/2009/01/dsc_1638-300x200.jpg" alt="Kiwis at the Fog Creek Office?" title="dsc_1638" width="300" height="200" class="size-medium wp-image-202 right" /></p>
<p>
Zed Shaw reminds me of <a href="http://www.imdb.com/character/ch0015927/">House</a>.
</p>
<p>
He acts like an asshole most of the time, but he&#8217;s smart and right too often for anyone to do anything about it. And he gave an <a href="http://www.vimeo.com/2723800">awesome talk at CUSEC</a> &#8211; about becoming a corporate programmer and not <em>losing your soul</em>. It is so freaking cool that they have speakers of this calibre talking to students. Should&#8217;ve gone to school in Canada.
</p>
<p>
&#8220;Corporate&#8221; programmers have been getting a lot of stick in my orbit lately (much to the amusement of the <a href="http://moses.net.nz">closest thing to a corporate programmer</a> I know). I don&#8217;t think I&#8217;ll be in the position to go and work for a &#8220;big&#8221; company anytime soon &#8211; I&#8217;m enjoying being my own boss <em>way</em> too much. But, if I was looking, I know where I&#8217;d be going. Look at this <a href="http://picasaweb.google.com/spolsky/FogCreekSNewOffice">office</a>!
</p>
<p>
I&#8217;ve never written code for any company with more than about 7 employees. I&#8217;m definitely missing out on some valuable learning and experience working with smart people in big teams. But everybody <a href="http://thedailywtf.com/">complains</a> about it so much!
</p>
<p>
Someone (who shall remain nameless to protect the innocent) who works at the State Services Commission (government) just came on my IM and said: &#8220;It&#8217;s POETS day!&#8221;.
</p>
<p>
Piss Off Early, Tomorrow&#8217;s Saturday.
</p>
<p>
I couldn&#8217;t even go to work if I felt like that. Why bother doing something you hate?
</p>
<p>
But hey, I&#8217;m a freshly-minted University graduate with no family to feed or mortgage to pay. Make the most of it while it lasts, I guess.
</p>
<p>
<em><small>(<a href="http://picasaweb.google.com/spolsky/FogCreekSNewOffice#5285319673590034658">Photo</a> from the Fog Creek Software Office Tour)</small></em></p>
<img src="http://feeds.feedburner.com/~r/CodeToCustomer/~4/jesXeQKKHf0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://codetocustomer.com/blog/2009/01/poets/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://codetocustomer.com/blog/2009/01/poets</feedburner:origLink></item>
		<item>
		<title>show off!</title>
		<link>http://feedproxy.google.com/~r/CodeToCustomer/~3/181iQUhJm04/show-off</link>
		<comments>http://codetocustomer.com/blog/2009/01/show-off#comments</comments>
		<pubDate>Mon, 05 Jan 2009 03:01:24 +0000</pubDate>
		<dc:creator>Nik</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[geekery]]></category>

		<guid isPermaLink="false">http://codetocustomer.com/?p=196</guid>
		<description><![CDATA[Every so often, I&#8217;ll write a funky little control in Javascript. Usually it&#8217;s because a customer has asked for it, or because I think it would be cool for them to have. Every so often it&#8217;s just to see if I can.
I thought I should release a few of the latter category, as a collection [...]]]></description>
			<content:encoded><![CDATA[<p>Every so often, I&#8217;ll write a funky little control in Javascript. Usually it&#8217;s because a customer has asked for it, or because I think it would be cool for them to have. Every so often it&#8217;s just to see if I can.<br />
I thought I should release a few of the latter category, as a collection of useful snippets for anyone to use and build upon. And so, I present to you, Show Off!</p>
<p>  <a href="http://github.com/codetocustomer/show-off/">Show Off! on Github</a></p>
<p>
I&#8217;m not generally a fan of big Javascript UI control libraries. I prefer to pick and choose, and not add extra dependencies into my project (aside from <a href="http://prototypejs.org/">Prototype</a>, of course). So Show Off! will be an independent collection, from which you can pick and choose whatever takes your fancy.
</p>
<p>
Currently, there&#8217;s just a fairly basic iTunes-style search box. I&#8217;m looking for suggestions for more though. What would you find useful? What have you seen elsewhere but didn&#8217;t have the time to implement?</p>
<img src="http://feeds.feedburner.com/~r/CodeToCustomer/~4/181iQUhJm04" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://codetocustomer.com/blog/2009/01/show-off/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://codetocustomer.com/blog/2009/01/show-off</feedburner:origLink></item>
		<item>
		<title>our first christmas</title>
		<link>http://feedproxy.google.com/~r/CodeToCustomer/~3/mu4fi1HiuNs/our-first-christmas</link>
		<comments>http://codetocustomer.com/blog/2008/12/our-first-christmas#comments</comments>
		<pubDate>Tue, 23 Dec 2008 02:23:55 +0000</pubDate>
		<dc:creator>Nik</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://codetocustomer.com/?p=190</guid>
		<description><![CDATA[
Boy, has it been quiet around here!


As you&#8217;ve likely guessed, we&#8217;ve been hard at work. We&#8217;ve been helping Wildfire build their interactive promotions application (which was an fbFund winner &#8211; congrats to Alain, Victoria, and the rest of the team!), doing some (not so) top-secret work on soon-to-be-released TribeHQ, all while mentoring a student and [...]]]></description>
			<content:encoded><![CDATA[<p>
Boy, has it been quiet around here!
</p>
<p>
As you&#8217;ve likely guessed, we&#8217;ve been hard at work. We&#8217;ve been helping <a href="http://wildfireapp.com">Wildfire</a> build their interactive promotions application (which was an <a href="http://www.techcrunch.com/2008/12/09/facebooks-fbfund-names-winners-of-225000-grants/">fbFund winner</a> &#8211; congrats to Alain, Victoria, and the rest of the team!), doing some (not so) top-secret work on soon-to-be-released <a href="http://twitter.com/tribehq">TribeHQ</a>, all while mentoring a student and <a href="http://blip.tv/file/1585585">speaking</a> for the <a href="http://summerofcode.co.nz">Summer of Code</a>.
</p>
<p><img src="http://codetocustomer.com/wp-content/uploads/2008/12/dscf0510-300x225.jpg" alt="My Saviour" title="My Saviour" width="300" height="225" class="right alignnone size-medium wp-image-192" /><br />
So, a metric buttload of V (I don&#8217;t think I would have made it this far without the introduction of the big 500ml cans) and many sleepless nights later, we come to our first Christmas holiday. We&#8217;ll be taking an &#8220;official&#8221; break until the 5th of January (If you really need us though, you know where to find us).
</p>
<p>
I&#8217;m going to take this opportunity to say a big thanks to everyone we&#8217;ve worked with this year, everyone who has offered advice, asked questions, or provided humorous Tweets. We&#8217;re pretty stoked to have built a kickass business in our early twenties, while finishing off degrees (although Ollie still has a wee way to go!). And if we keep working hard hopefully more success will follow.
</p>
<p>
Instead of sending out a naff present this year, we decided to take <a href="http://simpleandloveable.com">Nat&#8217;s</a> suggestion and invest some cash on <a href="http://kiva.com">Kiva</a>. I&#8217;ll keep you updated as to how that pans out &#8211; hopefully well for <a href="http://www.kiva.org/app.php?page=businesses&#038;action=about&#038;id=80202&#038;_tpos=1&#038;_tpg=1">Mr. Aboubakar Joseph</a> who is starting a MotoTaxi business in <a href="http://maps.google.com/maps?f=q&#038;hl=en&#038;geocode=&#038;q=Togo&#038;sll=37.0625,-95.677068&#038;sspn=32.211718,65.083008&#038;ie=UTF8&#038;z=7&#038;g=Togo">Togo</a>.
</p>
<p>
Isn&#8217;t the internet awesome?</p>
<img src="http://feeds.feedburner.com/~r/CodeToCustomer/~4/mu4fi1HiuNs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://codetocustomer.com/blog/2008/12/our-first-christmas/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://codetocustomer.com/blog/2008/12/our-first-christmas</feedburner:origLink></item>
		<item>
		<title>movember</title>
		<link>http://feedproxy.google.com/~r/CodeToCustomer/~3/k0F5SGFGYUE/movember</link>
		<comments>http://codetocustomer.com/blog/2008/12/movember#comments</comments>
		<pubDate>Mon, 01 Dec 2008 04:01:19 +0000</pubDate>
		<dc:creator>Nik</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://codetocustomer.com/?p=183</guid>
		<description><![CDATA[
We&#8217;re glad it&#8217;s the first of December here at Code to Customer, because it means we can finally shave.






Well, I can finally shave. Oliver chickened out about halfway through, although he kept a small tuft as a reminder.






(No, I have no idea why my mo is morange).
]]></description>
			<content:encoded><![CDATA[<p>
We&#8217;re glad it&#8217;s the first of December here at Code to Customer, because it means we can finally shave.
</p>
<p>
<img src="http://codetocustomer.com/wp-content/uploads/2008/12/nik_movember.jpg" alt="Nik&#039;s Movember Mo." title="nik_movember" width="300" height="400" class="size-full wp-image-184 left" />
</p>
<p style="clear: both;">
<br />
Well, I can finally shave. Oliver chickened out about halfway through, although he kept a small tuft as a reminder.
</p>
<p>
<img src="http://codetocustomer.com/wp-content/uploads/2008/12/oliver_movember.jpg" alt="Oliver&#039;s Soul Patch" title="oliver_movember" width="300" height="400" class="size-full wp-image-185" />
</p>
<p style="clear:both;">
<br />
(No, I have no idea why my mo is morange).</p>
<img src="http://feeds.feedburner.com/~r/CodeToCustomer/~4/k0F5SGFGYUE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://codetocustomer.com/blog/2008/12/movember/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		<feedburner:origLink>http://codetocustomer.com/blog/2008/12/movember</feedburner:origLink></item>
		<item>
		<title>slammin’ extensions</title>
		<link>http://feedproxy.google.com/~r/CodeToCustomer/~3/vlWvQDC4Cj0/slammin-extensions</link>
		<comments>http://codetocustomer.com/blog/2008/11/slammin-extensions#comments</comments>
		<pubDate>Sun, 16 Nov 2008 23:02:14 +0000</pubDate>
		<dc:creator>Nik</dc:creator>
				<category><![CDATA[geekery]]></category>

		<guid isPermaLink="false">http://codetocustomer.com/?p=175</guid>
		<description><![CDATA[
One of the cooler things about Ruby is the way you can extend objects with methods for a specific case. It really makes you feel like you&#8217;re slinging code, rather than just organising objects. Rails makes really good use of this ability with Association extensions.


Association extensions allow you to do cool things like:

class Person &#60; [...]]]></description>
			<content:encoded><![CDATA[<p>
One of the cooler things about Ruby is the way you can extend objects with methods for a specific case. It really makes you feel like you&#8217;re slinging <em>code</em>, rather than just organising objects. Rails makes really good use of this ability with <a href="http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html">Association extensions</a>.
</p>
<p>
Association extensions allow you to do cool things like:
</p>
<pre class="textmate-source"><span class="source source_ruby"><span class="meta meta_class meta_class_ruby"><span class="keyword keyword_control keyword_control_class keyword_control_class_ruby">class</span> <span class="entity entity_name entity_name_type entity_name_type_class entity_name_type_class_ruby">Person<span class="entity entity_other entity_other_inherited-class entity_other_inherited-class_ruby"> <span class="punctuation punctuation_separator punctuation_separator_inheritance punctuation_separator_inheritance_ruby">&lt;</span> ActiveRecord::Base</span></span></span>
<span class="punctuation punctuation_trailing-whitespace"><span class="invalid invalid_trailing-whitespace">  </span>
</span>  has_many <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>messages</span> <span class="keyword keyword_control keyword_control_start-block keyword_control_start-block_ruby">do
</span><span class="punctuation punctuation_trailing-whitespace"><span class="invalid invalid_trailing-whitespace">    </span>
</span>    <span class="meta meta_function meta_function_method meta_function_method_without-arguments meta_function_method_without-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">mark_as_read!</span></span>
      find<span class="punctuation punctuation_section punctuation_section_function punctuation_section_function_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>all</span><span class="punctuation punctuation_section punctuation_section_function punctuation_section_function_ruby">)</span><span class="punctuation punctuation_separator punctuation_separator_method punctuation_separator_method_ruby">.</span>read!
    <span class="keyword keyword_control keyword_control_ruby">end</span>
<span class="punctuation punctuation_trailing-whitespace"><span class="invalid invalid_trailing-whitespace">    </span>
</span>  <span class="keyword keyword_control keyword_control_ruby">end</span>
<span class="punctuation punctuation_trailing-whitespace"><span class="invalid invalid_trailing-whitespace">  </span>
</span><span class="keyword keyword_control keyword_control_ruby">end</span></span></pre>
<p style="margin-top: 1em;">
So now you can set all the messages for a particular person as &#8220;read&#8221; by calling:
</p>
<pre class="textmate-source"><span class="source source_ruby">oliver<span class="punctuation punctuation_separator punctuation_separator_method punctuation_separator_method_ruby">.</span>messages<span class="punctuation punctuation_separator punctuation_separator_method punctuation_separator_method_ruby">.</span>mark_as_read!</span></pre>
<p style="margin-top: 1em;">
Cool, huh? (There&#8217;s more in the <a href="http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html">documentation</a> if you&#8217;re interested).
</p>
<p>
A common antipattern I see is something like the following:
</p>
<pre class="textmate-source"><span class="source source_ruby">oliver<span class="punctuation punctuation_separator punctuation_separator_method punctuation_separator_method_ruby">.</span>add_message!<span class="punctuation punctuation_section punctuation_section_function punctuation_section_function_ruby">(</span> new_message <span class="punctuation punctuation_section punctuation_section_function punctuation_section_function_ruby">)</span></span></pre>
<p style="margin-top: 1em;">
Being called to add a new message onto a Person&#8217;s &#8220;messages&#8221; association, when you&#8217;ve got some extra logic in add_message! which the default ActiveRecord &#8220;<<" method doesn't do for you. For example, you might need to send an email to notify the user they've got new messages.
</p>
<p>
Hey man, don&#8217;t forget the slam operator!
</p>
<pre class="textmate-source"><span class="source source_ruby">a <span class="keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_ruby">=</span> <span class="punctuation punctuation_section punctuation_section_array punctuation_section_array_ruby">[]</span>
a <span class="keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_augmented keyword_operator_assignment_augmented_ruby">&lt;&lt;</span> <span class="constant constant_numeric constant_numeric_ruby">1</span> <span class="keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_augmented keyword_operator_assignment_augmented_ruby">&lt;&lt;</span> <span class="constant constant_numeric constant_numeric_ruby">2</span> <span class="keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_augmented keyword_operator_assignment_augmented_ruby">&lt;&lt;</span> <span class="constant constant_numeric constant_numeric_ruby">3</span>
puts a
<span class="comment comment_line comment_line_number-sign comment_line_number-sign_ruby"><span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_ruby">#</span>=&gt; [1, 2, 3]</span></span></pre>
<p style="margin-top: 1em;">
Well, I call it the &#8220;slam&#8221; operator, but it&#8217;s more correctly called the &#8220;push&#8221; operator. Or the bitwise left shift, depending on what kind of object you&#8217;re calling it on. Slam sounds <em>way</em> cooler though.
</p>
<p>
You can use the slam operator for your association extensions like this:
</p>
<pre class="textmate-source"><span class="source source_ruby"><span class="meta meta_class meta_class_ruby"><span class="keyword keyword_control keyword_control_class keyword_control_class_ruby">class</span> <span class="entity entity_name entity_name_type entity_name_type_class entity_name_type_class_ruby">Person<span class="entity entity_other entity_other_inherited-class entity_other_inherited-class_ruby"> <span class="punctuation punctuation_separator punctuation_separator_inheritance punctuation_separator_inheritance_ruby">&lt;</span> ActiveRecord::Base</span></span></span>
<span class="punctuation punctuation_trailing-whitespace"><span class="invalid invalid_trailing-whitespace">  </span>
</span>  has_many <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>messages</span> <span class="keyword keyword_control keyword_control_start-block keyword_control_start-block_ruby">do
</span><span class="punctuation punctuation_trailing-whitespace"><span class="invalid invalid_trailing-whitespace">    </span>
</span>    <span class="meta meta_function meta_function_method meta_function_method_without-arguments meta_function_method_without-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">&lt;&lt;</span></span> new_message
      returning proxy_owner<span class="punctuation punctuation_separator punctuation_separator_method punctuation_separator_method_ruby">.</span>messages <span class="keyword keyword_control keyword_control_start-block keyword_control_start-block_ruby">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">m</span><span class="punctuation punctuation_separator punctuation_separator_variable punctuation_separator_variable_ruby">|</span>
        m<span class="punctuation punctuation_separator punctuation_separator_method punctuation_separator_method_ruby">.</span>add_message!<span class="punctuation punctuation_section punctuation_section_function punctuation_section_function_ruby">(</span>new_message<span class="punctuation punctuation_section punctuation_section_function punctuation_section_function_ruby">)</span>
      <span class="keyword keyword_control keyword_control_ruby">end</span>
    <span class="keyword keyword_control keyword_control_ruby">end</span>
<span class="punctuation punctuation_trailing-whitespace"><span class="invalid invalid_trailing-whitespace">    </span>
</span>  <span class="keyword keyword_control keyword_control_ruby">end</span>
<span class="punctuation punctuation_trailing-whitespace"><span class="invalid invalid_trailing-whitespace">  </span>
</span><span class="keyword keyword_control keyword_control_ruby">end</span>

oliver<span class="punctuation punctuation_separator punctuation_separator_method punctuation_separator_method_ruby">.</span>messages <span class="keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_augmented keyword_operator_assignment_augmented_ruby">&lt;&lt;</span> a_brand_new_message</span></pre>
<p style="margin-top: 1em;">
Super cool! You could also move the add_message! logic inside that extension, or make it private &#8211; force everyone to use the slam!
</p>
<p>
(PS. &#8220;proxy_owner&#8221; refers to the owner of the association &#8211; in this example, &#8220;oliver&#8221;. We use that &#8220;returning&#8221; block so that the << method returns the proxy_owner's messages collection and behaves like the same method on Array. It also means we can chain slams! CH-CH-CHAIN SLAM!)
</p>
<p>
(PPS. Don&#8217;t forget Assocation Callbacks &#8211; like :after_add or :before_add &#8211; for simple cases :) Don&#8217;t get complex unless you&#8217;ve got to!)</p>
<img src="http://feeds.feedburner.com/~r/CodeToCustomer/~4/vlWvQDC4Cj0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://codetocustomer.com/blog/2008/11/slammin-extensions/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://codetocustomer.com/blog/2008/11/slammin-extensions</feedburner:origLink></item>
		<item>
		<title>the pinky-blue house</title>
		<link>http://feedproxy.google.com/~r/CodeToCustomer/~3/HzIaa17Wgbo/the-pinky-blue-house</link>
		<comments>http://codetocustomer.com/blog/2008/10/the-pinky-blue-house#comments</comments>
		<pubDate>Thu, 23 Oct 2008 21:55:03 +0000</pubDate>
		<dc:creator>Nik</dc:creator>
				<category><![CDATA[musings]]></category>

		<guid isPermaLink="false">http://codetocustomer.com/?p=167</guid>
		<description><![CDATA[
It&#8217;s a sentence. Well, it&#8217;s more of a word in reality. It usually comes right at the end of a long list of desired functionality.


And it&#8217;s the bane of every developer (and I dare say a good number of BA&#8217;s too).


It goes like this:


We want &#8220;eTunes&#8221; to show the user a catalogue of music, allow [...]]]></description>
			<content:encoded><![CDATA[<p>
It&#8217;s a sentence. Well, it&#8217;s more of a word in reality. It usually comes right at the end of a long list of desired functionality.
</p>
<p>
And it&#8217;s the bane of every developer (and I dare say a good number of <abbr title="Business Analyst">BA</abbr>&#8217;s too).
</p>
<p>
It goes like this:
</p>
<blockquote><p>
We want &#8220;eTunes&#8221; to show the user a catalogue of music, allow them to download it and us to bill their credit cards for it, and if possible we&#8217;d also like to show the user some music we&#8217;ve picked based on what they&#8217;ve bought before. Oh, and <em>we want it to be flexible</em>.
</p></blockquote>
<p>
In my experience that last sentence basically means &#8220;If we change our mind at any point it should be really easy for you to make our changes&#8221;.
</p>
<p>
Let me translate that into architect-speak for you. We&#8217;ve built your house, three stories, five bedrooms, double-glazed windows, everything you&#8217;ve asked for. We&#8217;ve even painted it that lovely shade of baby blue you asked for a couple of months ago.
</p>
<p>
But looking at it now, it just blends in with the sky a little too much. It&#8217;s not making the <strong>statement</strong> you were looking for. So you want to repaint it. Pink.
</p>
<p>
Sweet! That&#8217;s fine. We&#8217;re architects, we know all about people changing their minds. After all, you have to live in it. So we repaint it, and give you the bill for the painting. And then you say <em>hang on just a gosh-darned minute</em>! I said I wanted the house colouring to be <em>flexible</em> on the original drawings!
</p>
<p>
You see the problem. We&#8217;ve still painted it. We still need to pay for the paint and the painters. It doesn&#8217;t matter at all whether it was blue, green, or purple with black polka dots before we painted it. And now we&#8217;ve done what you&#8217;ve asked.
</p>
<p>
Now, don&#8217;t take this the wrong way. We&#8217;re all about <em>flexibility</em>. In fact, it&#8217;s our middle name (Code to Flexible Customer makes it sound like we&#8217;ll only write code for you if you can do a <a href="http://yoga.about.com/od/yogaposes/ig/Yoga-Backbends-Photo-Gallery/Full-Pigeon.htm">Full One Legged King Pigeon</a>). That&#8217;s why we make sure we&#8217;re in constant communication with all our customers.
</p>
<p>
We know, stuff changes. You see your shiny new site there and another bright idea hits you, or you do some user testing and no-one can spot the &#8220;buy&#8221; button. That&#8217;s great &#8211; that&#8217;s why you chose us, and you chose Rails. Because we can make those changes &#8211; and we can make &#8216;em fast.
</p>
<p>
But please, don&#8217;t assume that just because you said &#8220;flexible&#8221; three months ago, suddenly any change is trivial.
</p>
<p>
Okay, rant over.</p>
<img src="http://feeds.feedburner.com/~r/CodeToCustomer/~4/HzIaa17Wgbo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://codetocustomer.com/blog/2008/10/the-pinky-blue-house/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://codetocustomer.com/blog/2008/10/the-pinky-blue-house</feedburner:origLink></item>
		<item>
		<title>design vs. usability</title>
		<link>http://feedproxy.google.com/~r/CodeToCustomer/~3/PH1GlnZcOTU/design-vs-usability</link>
		<comments>http://codetocustomer.com/blog/2008/10/design-vs-usability#comments</comments>
		<pubDate>Tue, 14 Oct 2008 04:09:09 +0000</pubDate>
		<dc:creator>Nik</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[user-experience]]></category>

		<guid isPermaLink="false">http://codetocustomer.com/?p=158</guid>
		<description><![CDATA[
Saw an interesting example of the power of affordances the other day.


We were visiting a (hopefully soon-to-be) customer at their offices. Awesome offices &#8211; top floor, goldfish tanks, plenty of sun. The elevators are decorated in this kick-ass cold war pseudo-james-bond style. Fittingly, the &#8220;down&#8221; elevator button is a giant red push button that looks [...]]]></description>
			<content:encoded><![CDATA[<p>
Saw an interesting example of the power of <a href="http://www.interaction-design.org/encyclopedia/affordances.html">affordances</a> the other day.
</p>
<p>
We were visiting a (hopefully soon-to-be) customer at their offices. Awesome offices &#8211; top floor, goldfish tanks, plenty of sun. The elevators are decorated in this kick-ass cold war pseudo-james-bond style. Fittingly, the &#8220;down&#8221; elevator button is a giant red push button that looks as if it is capable of launching a nuclear missile. <img src="http://codetocustomer.com/wp-content/uploads/2008/10/lift_escape_hatch-290x300.png" alt="Escape Hatch-styled lift." title="lift_escape_hatch" width="290" height="300" class="size-medium wp-image-161 right" />
</p>
<p>
The issue here is obvious. People are hard-wired to think about &#8220;alarms&#8221; or &#8220;fire&#8221; or &#8220;really embarrassing occurrences&#8221; connected with a button like that. So, the tenants in this building needed to tack a second sign to the lift button (somewhat spoiling the &#8220;escape hatch&#8221; effect) to reassure people that they won&#8217;t be followed out of the building by flashing lights and klaxons&#8230;</p>
<img src="http://feeds.feedburner.com/~r/CodeToCustomer/~4/PH1GlnZcOTU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://codetocustomer.com/blog/2008/10/design-vs-usability/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://codetocustomer.com/blog/2008/10/design-vs-usability</feedburner:origLink></item>
		<item>
		<title>on identity</title>
		<link>http://feedproxy.google.com/~r/CodeToCustomer/~3/nfg6pI7fs_E/on-identity</link>
		<comments>http://codetocustomer.com/blog/2008/10/on-identity#comments</comments>
		<pubDate>Thu, 02 Oct 2008 03:48:31 +0000</pubDate>
		<dc:creator>Nik</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://codetocustomer.com/?p=138</guid>
		<description><![CDATA[
&#8220;If you wake up at a different time, in a different place, could you wake up as a different person?&#8221; 
 &#8212; Chuck Palahniuk



A few things recently have been causing me to consider the somewhat nebulous concept of &#8220;identity&#8221;.


I&#8217;m not going to ruminate over our &#8220;Ikea lives&#8221; (I&#8217;ll leave that to the much better qualified [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>
&#8220;If you wake up at a different time, in a different place, could you wake up as a different person?&#8221; </p>
<div style="text-align: right;"> &#8212; Chuck Palahniuk</div>
</blockquote>
<p>
<img src="http://codetocustomer.com/wp-content/uploads/2008/10/oliver_kickboxing.png" alt="Oliver Kickboxing" title="oliver_kickboxing" width="300" height="260" class="right size-full wp-image-151" /><br />
A few things recently have been causing me to consider the somewhat nebulous concept of &#8220;identity&#8221;.
</p>
<p>
I&#8217;m not going to ruminate over our &#8220;Ikea lives&#8221; (I&#8217;ll leave that to the much better qualified author of <em>Fight Club</em>), but a subject rather closer to home &#8211; our business.
</p>
<p>
Who (or rather <em>what</em>) is Code to Customer?
</p>
<p>
Last night I had to deliver a speech for the <a href="http://summerofcode.co.nz">Summer of Code</a>. The brief was to &#8220;tell us a little about your business&#8221;. Well, there&#8217;s the obvious &#8211; we&#8217;re a two-person Ruby on Rails shop who kick ass and chew bubblegum. We write beautiful Rails code &#8211; that&#8217;s what we do and what we love to do.
</p>
<p>
I feel like there&#8217;s more though. So I present to you, loyal reader and patient digester of my ramblings, Who We Are (unabridged).
</p>
<ul>
<li>We have Customers. Not Clients. There are two types of people who have Clients. The first being Lawyers. I&#8217;ll let you guess at the second. </li>
<li>We help our Customers kick ass. It&#8217;s no fun being a silent partner &#8211; if there&#8217;s something we think you could do better, we&#8217;ll let you know. We&#8217;re also prepared to put in the hard yards when necessary. Case in point &#8211; I&#8217;ve been up all hours of the night for the past week helping the awesome guys at <a href="http://wildfireapp.com">Wildfire</a> get their app ready for a big launch.</li>
<li>It&#8217;s as important to be honest as it is to be nice. Sadly, they are occasionally mutually exclusive</li>
<li>We&#8217;re a business, not a &#8220;start-up&#8221;. And we make no apologies for that. We think it&#8217;s just as important to have businesses in this world which are in the black every single month as it is to have the start-ups who are taking the all or nothing &#8220;i&#8217;ve-maxed-out-my-credit-cards-what&#8217;s-next&#8221; leap. And we have no time for people who tell us that means we&#8217;re taking the &#8220;easy way out&#8221;.</li>
<li>There&#8217;s more to us than just code. Sure, <a href="http://codetocustomer.com/oliver-clarke">Oliver</a> and <a href="http://codetocustomer.com/nik-wakelin">I</a> live, eat, sleep and breathe Ruby when necessary. But we make sure there is balance &#8211; time out from behind a display. Ollie does kickboxing (see illustrative photo above), and I rock out with <a href="http://oneader.com">my band</a> every so often.</li>
<li>If you&#8217;re going to spend your time on something, you better be doing it right. And you better be having fun at the same time.</li>
<li>Money&#8217;s not the game, but it is a pretty good way to keep score.</li>
</ul>
<p>
Another catalyst for this introspection was my <em>serious business card drought</em>. How the heck am I meant to feel like a legitimate businessman without my little identity cards?
</p>
<p>
So we&#8217;ve charged the epically talented and always awesome <a href="http://bandit.co.nz">James Nisbet</a> with coming up with a new logo for us. He&#8217;s doing awesomely, especially since our typical feedback runs along the lines of &#8220;Umm, well, I kinda like that but, uhh&#8230; maybe&#8230;. more blue?&#8221;.
</p>
<p>
Here&#8217;s what we&#8217;ve got so far:
</p>
<p><img src="http://codetocustomer.com/wp-content/uploads/2008/10/logo_concept.png" alt="Code to Customer Logo Concept" title="logo_concept" width="500" height="116" class="size-full wp-image-142 left" /></p>
<p style="clear: both;">
<p>What do you guys think? Maybe someone can give James some coherent feedback. I sure can&#8217;t.</p>
<img src="http://feeds.feedburner.com/~r/CodeToCustomer/~4/nfg6pI7fs_E" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://codetocustomer.com/blog/2008/10/on-identity/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://codetocustomer.com/blog/2008/10/on-identity</feedburner:origLink></item>
		<item>
		<title>motivation</title>
		<link>http://feedproxy.google.com/~r/CodeToCustomer/~3/x1avvjW35nU/motivation</link>
		<comments>http://codetocustomer.com/blog/2008/09/motivation#comments</comments>
		<pubDate>Wed, 17 Sep 2008 04:46:10 +0000</pubDate>
		<dc:creator>oliver</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://codetocustomer.com/?p=121</guid>
		<description><![CDATA[When its a hard day at work, and nothing seems to be going right, sometimes the best thing is just a cold drink. Even a Milkybar would be nice!

At Code to Customer, we embrace this philosophy.



This is after a pretty hard walk back from MoreWilsons carrying ~16kg each in awkward shaped boxes. But totally worth [...]]]></description>
			<content:encoded><![CDATA[<p>When its a hard day at work, and nothing seems to be going right, sometimes the best thing is just a cold drink. Even a Milkybar would be nice!</p>
<p>
At Code to Customer, we embrace this philosophy.
</p>
<p>
<img title="fridge" src="http://codetocustomer.com/wp-content/uploads/2008/09/fridge-225x300.png" alt="" width="225" height="300" class="left"  /><br />
This is after a pretty hard walk back from MoreWilsons carrying ~16kg each in awkward shaped boxes. But totally worth it.
</p>
<p>
The above image is something potential <a href="http://summerofcode.co.nz">Summer of Code</a> students should keep in mind ;)
</p>
<p style="clear: both;">
<img src="http://feeds.feedburner.com/~r/CodeToCustomer/~4/x1avvjW35nU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://codetocustomer.com/blog/2008/09/motivation/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://codetocustomer.com/blog/2008/09/motivation</feedburner:origLink></item>
		<item>
		<title>“ i’m the lucky one ”</title>
		<link>http://feedproxy.google.com/~r/CodeToCustomer/~3/4oOY0y7pKZA/im-the-lucky-one</link>
		<comments>http://codetocustomer.com/blog/2008/09/im-the-lucky-one#comments</comments>
		<pubDate>Mon, 15 Sep 2008 04:14:27 +0000</pubDate>
		<dc:creator>Nik</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://codetocustomer.com/?p=116</guid>
		<description><![CDATA[
Go and watch this. It&#8217;s amazing.


It&#8217;s this kind of thing that makes me happy to be in technology. These guys aren&#8217;t building another social network &#8211; they are literally changing people&#8217;s lives.
]]></description>
			<content:encoded><![CDATA[<p>
Go and <a href="http://www.medgadget.com/archives/2008/09/the_luke_arm_at_all_things_d.html">watch this</a>. It&#8217;s amazing.
</p>
<p>
It&#8217;s this kind of thing that makes me happy to be in technology. These guys aren&#8217;t building another social network &#8211; they are literally changing people&#8217;s lives.</p>
<img src="http://feeds.feedburner.com/~r/CodeToCustomer/~4/4oOY0y7pKZA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://codetocustomer.com/blog/2008/09/im-the-lucky-one/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://codetocustomer.com/blog/2008/09/im-the-lucky-one</feedburner:origLink></item>
		<item>
		<title>relax at the rofl-office</title>
		<link>http://feedproxy.google.com/~r/CodeToCustomer/~3/BEJOTE16R4E/relax-at-the-rofl-office</link>
		<comments>http://codetocustomer.com/blog/2008/09/relax-at-the-rofl-office#comments</comments>
		<pubDate>Mon, 15 Sep 2008 01:31:11 +0000</pubDate>
		<dc:creator>Nik</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://codetocustomer.com/?p=110</guid>
		<description><![CDATA[
We&#8217;ve got WiFi, a Mojo just across the road, and we&#8217;re conveniently located at the top of Willis St. Oh, and an awesome blue couch (pic related).


We get a few people dropping past, and we really enjoy the tech conversation and catching up all our friends from in and around Wellington.


So here&#8217;s an open invitation: [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://codetocustomer.com/wp-content/uploads/2008/09/code_to_customer_couch.jpg" alt="Code to Customer&#039;s Couch" title="code_to_customer_couch" width="300" height="225" class="right size-full wp-image-111" /><br />
We&#8217;ve got WiFi, a Mojo just across the road, and we&#8217;re conveniently located at the <a href="http://zoomin.co.nz/info/nz/wellington/te+aro/willis+street/160/-code+to+customer/">top of Willis St</a>. Oh, and an awesome blue couch (pic related).
</p>
<p>
We get a few people dropping past, and we really enjoy the tech conversation and catching up all our friends from in and around Wellington.
</p>
<p>
So here&#8217;s an open invitation: If you need a place to perch for a while and check your email, look no further! We&#8217;ll be only too happy to accommodate.
</p>
<p>
Just give <a href="http://codetocustomer.com/oliver-clarke">Ollie</a> or <a href="http://codetocustomer.com/nik-wakelin">I</a> a call or fire us <a href="http://twitter.com/codetocustomer">a tweet</a> and we&#8217;ll let you know if we&#8217;re in.</p>
<img src="http://feeds.feedburner.com/~r/CodeToCustomer/~4/BEJOTE16R4E" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://codetocustomer.com/blog/2008/09/relax-at-the-rofl-office/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://codetocustomer.com/blog/2008/09/relax-at-the-rofl-office</feedburner:origLink></item>
		<item>
		<title>bullies</title>
		<link>http://feedproxy.google.com/~r/CodeToCustomer/~3/gQZqhMxc9BE/bullies</link>
		<comments>http://codetocustomer.com/blog/2008/09/bullies#comments</comments>
		<pubDate>Mon, 08 Sep 2008 01:14:21 +0000</pubDate>
		<dc:creator>Nik</dc:creator>
				<category><![CDATA[business]]></category>
		<category><![CDATA[company]]></category>
		<category><![CDATA[tech]]></category>

		<guid isPermaLink="false">http://codetocustomer.com/?p=108</guid>
		<description><![CDATA[
We&#8217;ve got a pretty cool small business community here in Wellington. There are initiatives like Silicon Welly, Unlimited Potential and Girl Geek Dinners, which allow us to not only socialise, but also support and mentor each other.


Being a small business is hard. There are so many bigger businesses out there who could squash you without [...]]]></description>
			<content:encoded><![CDATA[<p>
We&#8217;ve got a pretty cool small business community here in Wellington. There are initiatives like <a href="http://siliconwelly.co.nz">Silicon Welly</a>, <a href="http://up.org.nz">Unlimited Potential</a> and <a href="http://girlgeekdinners.co.nz">Girl Geek Dinners</a>, which allow us to not only socialise, but also support and mentor each other.
</p>
<p>
Being a small business is <em>hard</em>. There are so many bigger businesses out there who could squash you without even meaning to. A single wrong move could prove fatal. That&#8217;s why we stick together like this.
</p>
<p>
Which is why it really sucks when you get shafted by someone inside this community.
</p>
<p>
I know I should simply accept that &#8220;it&#8217;s just business&#8221;. And, to be fair, our naivety contributed more than a little.
</p>
<p>
Still, I&#8217;d like to continue to think that I can do business without being sneaky or underhanded. Deals go south, that&#8217;s a way of life, but honesty is something I cherish. And a reputation is something you can never repair.
</p>
<p>
Sadly for them, these people have damaged their reputation in a community they are desperately seeking to enter. Hopefully they&#8217;ll learn the hard way that what goes around, comes around.
</p>
<p>
Anyway, I&#8217;m going to take my first step towards positive business, and stop thinking about this. I feel like I&#8217;ve got this off my chest &#8211; time to do something productive.
</p>
<p>
P.S If you need a <strong>really big</strong> Rails website done in just a couple of months, go see our friends at <a href="http://youdo.co.nz">YouDo</a>. Dan will look after you :)</p>
<img src="http://feeds.feedburner.com/~r/CodeToCustomer/~4/gQZqhMxc9BE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://codetocustomer.com/blog/2008/09/bullies/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://codetocustomer.com/blog/2008/09/bullies</feedburner:origLink></item>
		<item>
		<title>don’t spend all day in photoshop</title>
		<link>http://feedproxy.google.com/~r/CodeToCustomer/~3/YUDdNzV0DGo/dont-spend-all-day-in-photoshop</link>
		<comments>http://codetocustomer.com/blog/2008/09/dont-spend-all-day-in-photoshop#comments</comments>
		<pubDate>Sat, 06 Sep 2008 03:27:19 +0000</pubDate>
		<dc:creator>Nik</dc:creator>
				<category><![CDATA[design]]></category>
		<category><![CDATA[tech]]></category>

		<guid isPermaLink="false">http://codetocustomer.com/?p=92</guid>
		<description><![CDATA[

I&#8217;ve had the good fortune to work with a gaggle (what&#8217;s a collection of designers? A flock? A pack?) of awesome designers in the course of my work. I&#8217;ll name drop: Nat and Miri from PlanHQ, James at Bandit, Alain at IncFuel and some cool stuff by Colin Cameron. (By no means an exhaustive list, [...]]]></description>
			<content:encoded><![CDATA[<p>
<img src="http://codetocustomer.com/wp-content/uploads/2008/09/jamesn.png" alt="James Nisbet: Web Designer" title="jamesn" width="288" height="300" class="right" /><br />
I&#8217;ve had the good fortune to work with a gaggle (what&#8217;s a collection of designers? A flock? A pack?) of awesome designers in the course of my work. I&#8217;ll name drop: <a href="http://decisiveflow.com">Nat</a> and <a href="http://www.planhq.com/amiria-paterson/">Miri</a> from PlanHQ, James at <a href="http://bandit.co.nz">Bandit</a>, Alain at <a href="http://incfuel.com">IncFuel</a> and some cool stuff by <a href="http://icreatethings.com/">Colin Cameron</a>. (By no means an exhaustive list, I&#8217;m sorry if I left you out!).
</p>
<p>
I&#8217;m going to pick on Miri today (sorry!). She&#8217;s now well-versed in the magic and esoteric &#8220;ways of the web&#8221;, but when Miri first came to us at PlanHQ, she&#8217;d only had marginal involvement in web design.
</p>
<p>
<a href="http://planhq.com/tim-norton">Tim</a> spent weeks &#8220;indoctrinating&#8221; (his word, not mine) her into the &#8220;Web 2.0 style&#8221;, but as one of the people charged with making her designs a reality, I was more interested in a different effect.
</p>
<p>
It speaks volumes to Miri&#8217;s dedication and talent that many of the choice quotes I remember from her during that time were along the lines of &#8220;That looks wonderful BUT&#8230;&#8221;. Followed by &#8220;could you just squidge this five pixels that way?&#8221; or &#8220;that colour isn&#8217;t quite right!&#8221;. I still remember days of frustration with Photoshop, LCD screens and colour profiles involved in trying to get the PlanHQ green <em>just right</em>.
</p>
<p>
These days, 37Signals say that you should <a href="http://www.37signals.com/svn/posts/1061-why-we-skip-photoshop">skip photoshop entirely</a>. Just mock things up in plain HTML. Sadly, this doesn&#8217;t work when your implementers aren&#8217;t your designers, and no matter how quickly Miri picked up HTML, there was only one of her and four of us.
</p>
<p>
Nothing is impossible to render in a browser &#8211; and you&#8217;ve always got <span style="font-family: monospace;">position: absolute;</span> to fall back on if you&#8217;re stuck. But before a designer comes to realize exactly what kind of chopping up we have to do (and that everything on the web is at it&#8217;s heart, a square, even if we disguise it with corners) you&#8217;ll often get mockups with elements like this:
</p>
<p>
<img src="http://codetocustomer.com/wp-content/uploads/2008/09/impossible_corners.png" alt="&quot;impossible corners&quot;" title="impossible_corners" width="100" height="90" class="left size-full wp-image-96" /></p>
<p>I call these &#8220;impossible corners&#8221;, because there is no way to render these using two non-overlapping boxes. They&#8217;re not impossible, of course. There&#8217;s a number of techniques you could potentially use to render an element like this, but the basic point is: it&#8217;s <em>harder</em> than it needs to be.
</p>
<p>
You come into similar issues with transparent shadows and PNGs (especially if you still have to support IE6) layers that overlap more than twice (as you have to introduce extra elements in order to render all of the backgrounds), diagonal gradients, or font rendering (yes, the text fits perfectly in Photoshop, but that&#8217;s <em>dynamic</em> text &#8211; people can change that).
</p>
<p>
More importantly however, you lose the <em>feel</em> of the website. The little bits of animation and Javascript trickery that really make a Web 2.0 application a joy to use. Everything starts to feel static like an old school marketing site.
</p>
<p>
Miri, of course, surmounted these challenges and then some. It&#8217;s always amusing to hear someone attempt to describe to you the sort of animation they want using noises and gestures &#8211; &#8220;so if this bit goes <em>swooosh</em> under that bit&#8221;). Here&#8217;s a fine example of an awesome interface element out of PlanHQ which I can take no credit for &#8211; this is all Miri, Jeremy and Tim.
</p>
<p>
<img src="http://codetocustomer.com/wp-content/uploads/2008/09/quick_date_changer-286x300.png" alt="PlanHQ&#039;s Quick Date Changer" title="quick_date_changer" width="286" height="300" class="left" />This &#8220;quick date changer&#8221; allows you to quickly reschedule an action you&#8217;ve planned, so you can replan at any time. At the end of the action itself all that&#8217;s displayed is the date and a &#8220;calendar&#8221; icon. When you click the icon, a calendar date selector pops up, and once you&#8217;ve chosen the new date, it instantly moves the action. Cool &#8211; no unnecessary clicking of &#8220;OK&#8221; or &#8220;Submit&#8221;, and the element serves a nice dual purpose &#8211; show me the date of this action, and let me move it.
</p>
<p>
I guess it boils down to: If you&#8217;re new to designing for the web, don&#8217;t spend all day in Photoshop. Grab some geeks, get them to teach you HTML. Play with some cool web applications &#8211; use <a href="http://gmail.com">Gmail</a>, if you aren&#8217;t already, or try planning your flat move in <a href="http://backpackhq.com">Backpack</a>.
</p>
<p>
You need to become a <strong>web</strong> designer.</p>
<img src="http://feeds.feedburner.com/~r/CodeToCustomer/~4/YUDdNzV0DGo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://codetocustomer.com/blog/2008/09/dont-spend-all-day-in-photoshop/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://codetocustomer.com/blog/2008/09/dont-spend-all-day-in-photoshop</feedburner:origLink></item>
	</channel>
</rss>
