<?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>Alex Dunae</title>
	
	<link>http://dunae.ca</link>
	<description>Marketer. Coder. Enthusiast.</description>
	<lastBuildDate>Thu, 24 Dec 2009 18:12:05 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</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/AlexDunae" /><feedburner:info uri="alexdunae" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>My Year in Software</title>
		<link>http://feedproxy.google.com/~r/AlexDunae/~3/Qz-ZpvhW_hw/</link>
		<comments>http://dunae.ca/2009/my-year-in-software/#comments</comments>
		<pubDate>Thu, 24 Dec 2009 18:08:21 +0000</pubDate>
		<dc:creator>Alex Dunae</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Expression Engine]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[rsync]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://dunae.ca/?p=156</guid>
		<description><![CDATA[Now that I have a blog I can do what every blogger loves best: make lists.
Herewith a list of the software that made an impression on me in 2009.
Expression Engine
I built my first two sites using Expression Engine this year, one for the Cumberland Chamber and one for the Downtown Courtenay BIA.  EE&#8217;s niche, in [...]]]></description>
			<content:encoded><![CDATA[<p>Now that I have a blog I can do what every blogger loves best: make lists.</p>
<p>Herewith a list of the software that made an impression on me in 2009.</p>
<h2><span id="more-156"></span>Expression Engine</h2>
<p>I built my first two sites using Expression Engine this year, one for the <a href="http://cumberlandbc.org/">Cumberland Chamber</a> and one for the <a href="http://www.downtowncourtenay.com/">Downtown Courtenay BIA</a>.  EE&#8217;s niche, in my view, is to make working with custom data types easy.  However, in most other ways it just felt too opinionated and difficult to customize (e.g. the <a href="http://expressionengine.com/docs/modules/weblog/related_entries.html">related_entries</a> features).  After building so many WordPress sites, though, the EE 1.x admin experience felt seriously unpolished.  Media handling, for example, paled in comparison. I look forward to trying EE 2 when the opportunity arises but until then count me underwhelmed.</p>
<h2>Solr</h2>
<p>The most pleasant surprise of 2009 was <a href="http://lucene.apache.org/solr/#intro">Solr</a>, a fantastic search platform derived from the Apache Lucene project.  I used it to index and search a 40,000-product database and it was incredibly gratifying.  Despite my distinct lack of Java skills, the documentation was clear and the deployment was remarkably painless.  Even better, Solr replaced an unholy MySQL SELECT statement including four subqueries with one straightforward <a href="http://wiki.apache.org/solr/SolrConfigXml">config file</a>.</p>
<h2>HTML 4</h2>
<p>Not technically software, but it deserves to be mentioned.  Where possible I&#8217;ve abandoned XHTML and all its craziness and built sites using HTML 4 Strict.  I don&#8217;t need namespaces or mime-type headaches.  Straight-up HTML is just fine by me.</p>
<p>I bought a three-year-old MacBook Pro from a friend, my first Mac since an Apple II.  It was kind of fun so I ended buying a 27&#8243; iMac a month later.  It&#8217;s a lot of fun.  The Unix roots of OS X paved the way for the next two items.</p>
<h2>Git and GitHub</h2>
<p>After letting too many Ruby projects rot away in private SVN repositories I finally moved most of them over to <a href="http://github.com/alexdunae">my GitHub account</a>.  The main reason it took so long was the Git learning curve, especially for a Windows-user like me.  Once I moved the code over, however, I was truly impressed. The fork-and-pull mindset that GitHub enables so well is fantastic. My once-neglected plugins and gems have gotten a new lease on life since others started improving them.</p>
<div id="attachment_163" class="wp-caption aligncenter" style="width: 573px"><a href="http://dunae.ca/wp-content/uploads/2009/12/github-network-graph.png"><img class="size-full wp-image-163" title="Github Network Graph" src="http://dunae.ca/wp-content/uploads/2009/12/github-network-graph.png" alt="GitHub activity for the Ruby Holidays Gem." width="563" height="115" /></a><p class="wp-caption-text">GitHub activity for the Ruby Holidays Gem.</p></div>
<h2>rsync</h2>
<p>Finally, one of my best workflow improvements was also the simplest: <a href="http://samba.anu.edu.au/rsync/">rsync</a>.  Before I would deploy using SVN exports via bash scripts or straight up FTP.  But my new Mac finally made rsync an option.  For simple deployments it just can&#8217;t be beat.</p>
<p>Here&#8217;s me deploying an update to a WordPress theme.</p>
<pre>rsync -rvzt --executability --exclude=.DS_Store
   /Users/Alex/Sites/client/www/wp-content/themes/client/
   dialect@dialect.ca:/home/dialect/staging/wp-content/themes/client/</pre>
<p>All in all it&#8217;s been a good and productive year.</p>
<p>What tools did you enjoy in 2009?</p>
<img src="http://feeds.feedburner.com/~r/AlexDunae/~4/Qz-ZpvhW_hw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://dunae.ca/2009/my-year-in-software/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://dunae.ca/2009/my-year-in-software/</feedburner:origLink></item>
		<item>
		<title>Print Designers and the Web</title>
		<link>http://feedproxy.google.com/~r/AlexDunae/~3/F16IzRkWnxc/</link>
		<comments>http://dunae.ca/2009/print-designers-and-the-web/#comments</comments>
		<pubDate>Thu, 17 Dec 2009 18:59:15 +0000</pubDate>
		<dc:creator>Alex Dunae</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Design]]></category>

		<guid isPermaLink="false">http://dunae.ca/?p=148</guid>
		<description><![CDATA[Related to my previous post about web designers and code is this post from factor[e].  It reminds me of the uncomfortable situation of dealing with designs from non-web designers.
I certainly sympathize with print designers.  Their clients all want to get on the web and print designers must feel they either need to step up or [...]]]></description>
			<content:encoded><![CDATA[<p>Related to <a href="http://dunae.ca/2009/the-case-for-code/">my previous post</a> about web designers and code is <a href="http://factore.ca/on-the-floor/22-designer-programmer-harmony-not-just-a-myth">this post from factor[e]</a>.  It reminds me of the uncomfortable situation of dealing with designs from non-web designers.</p>
<p>I certainly sympathize with print designers.  Their clients all want to get on the web and print designers must feel they either need to step up or lose the work.  Unfortunately, the results are rarely pretty.</p>
<p><span id="more-148"></span>The number one difficulty is perfectly summed up by the factor[e] post:</p>
<blockquote><p>Unlike with print, you are designing for a page whose size you don&#8217;t know.</p></blockquote>
<p>So true, and I think this really trips out a lot of print designers.  They assume footers will be anchored to the bottom of the viewport, or don&#8217;t consider what happens at the edges of the main content.  (In fairness, even experienced web developers <a href="http://googlecode.blogspot.com/2009/12/introducing-google-browser-size.html">struggle with this</a>).  They also miss out on the interactive elements like hover states and transitions, and generally design sites that don&#8217;t feel natural on the web.</p>
<p>I think there are only two sensible options here.  Either print designers should stop and immerse themselves in the web before trying to put together any more sites, or they should stick to what they&#8217;ve already mastered.</p>
<img src="http://feeds.feedburner.com/~r/AlexDunae/~4/F16IzRkWnxc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://dunae.ca/2009/print-designers-and-the-web/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		<feedburner:origLink>http://dunae.ca/2009/print-designers-and-the-web/</feedburner:origLink></item>
		<item>
		<title>The Case For Code</title>
		<link>http://feedproxy.google.com/~r/AlexDunae/~3/2eKrFJv-qaU/</link>
		<comments>http://dunae.ca/2009/the-case-for-code/#comments</comments>
		<pubDate>Fri, 04 Dec 2009 22:53:56 +0000</pubDate>
		<dc:creator>Alex Dunae</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Designers]]></category>
		<category><![CDATA[Professional Practice]]></category>

		<guid isPermaLink="false">http://dunae.ca/?p=140</guid>
		<description><![CDATA[I came across The Case Against Code on Stuart Thursby's blog today. As I understand it, he writes that web designers shouldn't feel constrained by the code required to implement their designs.  I partially agree.]]></description>
			<content:encoded><![CDATA[<p>I came across <a href="http://sthursby.com/thoughts/2009/12/the-case-against-code/">The Case Against Code</a> on Stuart Thursby&#8217;s blog today.  As I understand it, he writes that web designers shouldn&#8217;t feel constrained by the code required to implement their designs.</p>
<p>As he aptly writes</p>
<blockquote><p>coding a website introduces inherent realities which a Photoshop document cannot account for. As a result, I’ve found myself (and I’m sure many of you can say the same) dialing down my designs somewhat to allow for a more realistic and attainable end result.</p></blockquote>
<p>I partially agree with his point.</p>
<p><span id="more-140"></span>I can&#8217;t count the number of times that I&#8217;ve opened one of <a href="http://pausedesign.com/">Nik</a>&#8217;s Illustrator files and gone &#8220;<em>gack!</em> How am I meant to implement that?&#8221;  However, that is immediately (or eventually) followed by me thinking a little creatively, drawing out some DIVs in pencil, looking up the state of some CSS property, and then implementing what he specified.  If he&#8217;d felt constrained by code (or by my abilities) the project would have suffered and I wouldn&#8217;t have learned anything.</p>
<p>However, Nik&#8217;s designs are also better because he <em>does</em> understand code.  Understanding that fonts can be <a href="http://cufon.shoqolate.com/">replaced easily</a> in headlines but not in body copy means that our sites will load quickly.  Understanding which mouse events fire means our sites feel responsive.  Understanding the different methods of implementing full-bleed background images mean that our sites <a href="http://folkfestivalscanada.com/">stay sane</a> at different resolutions.</p>
<h2>Compromise</h2>
<p>The middle ground seems like the only healthy way to go here.</p>
<p>Designers should understand the medium as best they can, which includes learning some code.  They should do this so they understand the possibilities afforded by the web, not just its limitations.</p>
<p>Coders should understand design as best they can, <a href="http://dunae.ca/2009/respecting-the-grid-in-html/">learning to love grids</a> and caring about colour profiles.  We should do this so we can see the big picture on a project, not just the database connection and form validation.</p>
<p>More importantly, designers and coders should collaborate.  We&#8217;re all trying to meet the same goals, we just have different tools.</p>
<img src="http://feeds.feedburner.com/~r/AlexDunae/~4/2eKrFJv-qaU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://dunae.ca/2009/the-case-for-code/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://dunae.ca/2009/the-case-for-code/</feedburner:origLink></item>
		<item>
		<title>Better Web Typography with Spaces and Hyphens</title>
		<link>http://feedproxy.google.com/~r/AlexDunae/~3/PDHNnIcnDk0/</link>
		<comments>http://dunae.ca/2009/better-web-typography-with-spaces-and-hyphens/#comments</comments>
		<pubDate>Thu, 03 Dec 2009 23:26:28 +0000</pubDate>
		<dc:creator>Alex Dunae</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Typography]]></category>
		<category><![CDATA[Web Browsers]]></category>

		<guid isPermaLink="false">http://dunae.ca/?p=92</guid>
		<description><![CDATA[One of the minor irritants of building websites is the lack of proper hyphenation and word-wrapping. Browsers don't have the same level of text-flow smarts that InDesign or LaTeX have.]]></description>
			<content:encoded><![CDATA[<p>One of the minor irritants of building websites is the lack of proper hyphenation and word-wrapping.  Browsers don&#8217;t have the same level of text-flow smarts that InDesign or <a href="http://en.wikibooks.org/wiki/LaTeX/Formatting#Hyphenation">LaTeX</a> have.</p>
<p>This has been discussed a few places, notably <a href="http://www.alistapart.com/articles/emen/">A List Apart&#8217;s article on dashes and typography</a>, but they all end by saying that hyphenation and word spacing isn&#8217;t very well supported by browsers.</p>
<p><span id="more-92"></span></p>
<h2>The Test</h2>
<p>There are quite a few <a href="http://en.wikipedia.org/wiki/Space_%28punctuation%29#Table_of_spaces">spacing and hyphenation options</a> available in HTML.  I just looked at the ones that I was hoping to use.</p>
<p>I put together <a href="http://code.dunae.ca/demos/html-spaces/">a test page</a> and, with the the help of <a href="http://twitter.com/tom_h">Tom Hammarberg</a>, <a href="http://www.lathamcommunications.com/">Jeremy Latham</a> and <a href="http://twitter.com/clintlalonde">Clint Lalonde</a>, collected some screenshots of the results.</p>
<p>Here&#8217;s how everything should look.</p>
<p><a class="full-image" href="http://dunae.ca/wp-content/uploads/2009/12/html-spaces-ie8-win.png"><img class="size-large wp-image-108" title="html-spaces-ie8-win" src="http://dunae.ca/wp-content/uploads/2009/12/html-spaces-ie8-win-595x381.png" alt="Internet Explorer 8" width="595" height="381" /></a></p>
<h2>The Results</h2>
<h3>Non-breaking space <span class="low">&amp;nbsp; &amp;#x00a0; &amp;#x160;</span></h3>
<p><em>Prohibits the browser breaking to a new line</em></p>
<p><strong>The verdict: Perfect</strong></p>
<p><strong><br />
</strong></p>
<h3>Soft hyphen <span class="low">&amp;shy; &amp;#173;</span></h3>
<p><em>Suggests a hyphenation point to the browser.</em></p>
<p><strong>The verdict: Perfect</strong></p>
<p><strong><br />
</strong></p>
<h3>Zero-width space <span class="low">&amp;#x200b; &amp;#8203;</span></h3>
<p><em>Provides a breakpoint to the browser without showing a visible space.</em></p>
<p><strong>The verdict: Good, with a caveat</strong></p>
<p><strong><br />
</strong></p>
<h2>The Caveat</h2>
<p>Can you guess which browser we&#8217;re going to discuss?</p>
<p>Right, Internet Explorer 6.</p>
<p>IE 6 suprised me and handled soft hyphens beautifully.  Things got a little messier with thin spaces, hair spaces and zero-width spaces.</p>
<p>Some fonts, like Palatino Linotype, include glyphs for each type of space and hyphen.  Others, like Arial, Verdana and Times New Roman, do not.</p>
<p>In all the browsers I tested, the browsers didn&#8217;t care whether or not the glyphs were defined, they were able to render the spaces and hyphens anyway.</p>
<p>If IE 6 couldn&#8217;t find the glyph, it displays everyone&#8217;s favourite square: □.</p>

<a href='http://dunae.ca/2009/better-web-typography-with-spaces-and-hyphens/html-spaces-ie8-win/' title='html-spaces-ie8-win'><img width="150" height="150" src="http://dunae.ca/wp-content/uploads/2009/12/html-spaces-ie8-win-150x150.png" class="attachment-thumbnail" alt="Internet Explorer 8, XP" title="html-spaces-ie8-win" /></a>
<a href='http://dunae.ca/2009/better-web-typography-with-spaces-and-hyphens/html-spaces-ie7-win/' title='html-spaces-ie7-win'><img width="150" height="150" src="http://dunae.ca/wp-content/uploads/2009/12/html-spaces-ie7-win-150x150.png" class="attachment-thumbnail" alt="Internet Explorer 7, WinXP" title="html-spaces-ie7-win" /></a>
<a href='http://dunae.ca/2009/better-web-typography-with-spaces-and-hyphens/html-spaces-ie6-win/' title='html-spaces-ie6-win'><img width="150" height="150" src="http://dunae.ca/wp-content/uploads/2009/12/html-spaces-ie6-win-150x150.png" class="attachment-thumbnail" alt="Internet Explorer 6" title="html-spaces-ie6-win" /></a>
<a href='http://dunae.ca/2009/better-web-typography-with-spaces-and-hyphens/html-spaces-ie8-win7/' title='html-spaces-ie8-win7'><img width="150" height="150" src="http://dunae.ca/wp-content/uploads/2009/12/html-spaces-ie8-win7-150x150.png" class="attachment-thumbnail" alt="Internet Explorer 8, Win7" title="html-spaces-ie8-win7" /></a>
<a href='http://dunae.ca/2009/better-web-typography-with-spaces-and-hyphens/html-spaces-ff3-5-winxp/' title='html-spaces-ff3.5-winxp'><img width="150" height="150" src="http://dunae.ca/wp-content/uploads/2009/12/html-spaces-ff3.5-winxp-150x150.png" class="attachment-thumbnail" alt="Firefox 3.5, WinXP" title="html-spaces-ff3.5-winxp" /></a>
<a href='http://dunae.ca/2009/better-web-typography-with-spaces-and-hyphens/html-spaces-ff3-5-win7/' title='html-spaces-ff3.5-win7'><img width="150" height="150" src="http://dunae.ca/wp-content/uploads/2009/12/html-spaces-ff3.5-win7-150x150.png" class="attachment-thumbnail" alt="Firefox 3.5, Win7" title="html-spaces-ff3.5-win7" /></a>
<a href='http://dunae.ca/2009/better-web-typography-with-spaces-and-hyphens/html-spaces-ff3-5-mac/' title='html-spaces-ff3.5-mac'><img width="150" height="150" src="http://dunae.ca/wp-content/uploads/2009/12/html-spaces-ff3.5-mac-150x150.png" class="attachment-thumbnail" alt="Firefox 3.5, Mac" title="html-spaces-ff3.5-mac" /></a>
<a href='http://dunae.ca/2009/better-web-typography-with-spaces-and-hyphens/html-spaces-chrome3-win7/' title='html-spaces-chrome3-win7'><img width="150" height="150" src="http://dunae.ca/wp-content/uploads/2009/12/html-spaces-chrome3-win7-150x150.png" class="attachment-thumbnail" alt="Chrome 3, Win7" title="html-spaces-chrome3-win7" /></a>
<a href='http://dunae.ca/2009/better-web-typography-with-spaces-and-hyphens/html-spaces-safari4-win7/' title='html-spaces-safari4-win7'><img width="150" height="150" src="http://dunae.ca/wp-content/uploads/2009/12/html-spaces-safari4-win7-150x150.png" class="attachment-thumbnail" alt="Safari 4, Win7" title="html-spaces-safari4-win7" /></a>
<a href='http://dunae.ca/2009/better-web-typography-with-spaces-and-hyphens/html-spaces-safari4-win/' title='html-spaces-safari4-win'><img width="150" height="150" src="http://dunae.ca/wp-content/uploads/2009/12/html-spaces-safari4-win-150x150.png" class="attachment-thumbnail" alt="Safari 4, WinXP" title="html-spaces-safari4-win" /></a>
<a href='http://dunae.ca/2009/better-web-typography-with-spaces-and-hyphens/html-spaces-safari4-mac/' title='html-spaces-safari4-mac'><img width="150" height="150" src="http://dunae.ca/wp-content/uploads/2009/12/html-spaces-safari4-mac-150x150.png" class="attachment-thumbnail" alt="Safari 4, Mac" title="html-spaces-safari4-mac" /></a>

<h2>Are They Usable?</h2>
<p>Soft hyphens work perfectly with the standard set of web-safe fonts in every browser.</p>
<p>If you&#8217;ve decided to drop support for IE 6, you&#8217;re good with any space or hyphenation glyphs.</p>
<p>But, if you&#8217;re supporting IE 6 and still want the refined text flow available with spacing and hyphenation, you&#8217;ll have to choose a font that includes those glyphs.</p>
<p>Your web-safe choices are:</p>
<ul>
<li> Arial Unicode, Arial Unicode MS</li>
<li> Lucida Sans, Lucida Grande</li>
<li> Palatino, Palatino Linotype</li>
</ul>
<p>To check if the font you&#8217;re targeting supports fancy spaces and hyphens, open up Character Map on Windows and search for either <tt>space</tt> or <tt>hyphen</tt>.  Mac users will have to wait til my new iMac arrives for instructions.</p>
<h2>In Conclusion</h2>
<p>I think you have to be a &#8220;special&#8221; kind of person to care about these things, but that&#8217;s me and I know the site we&#8217;re building now will look at least 2% better because of this experiment.</p>
<p>If you use a browser that I haven&#8217;t included, send a screenshot to alex [at] dunae.ca and I&#8217;ll add it to the gallery.</p>
<img src="http://feeds.feedburner.com/~r/AlexDunae/~4/PDHNnIcnDk0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://dunae.ca/2009/better-web-typography-with-spaces-and-hyphens/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://dunae.ca/2009/better-web-typography-with-spaces-and-hyphens/</feedburner:origLink></item>
		<item>
		<title>The Benefits of Giving Away Code</title>
		<link>http://feedproxy.google.com/~r/AlexDunae/~3/kOa6WArqU-s/</link>
		<comments>http://dunae.ca/2009/the-benefits-of-giving-away-code/#comments</comments>
		<pubDate>Thu, 26 Nov 2009 22:28:07 +0000</pubDate>
		<dc:creator>Alex Dunae</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Finances]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Professional Practice]]></category>
		<category><![CDATA[Promotion]]></category>

		<guid isPermaLink="false">http://dunae.ca/?p=76</guid>
		<description><![CDATA[The financial, promotional and educational benefits of releasing code to the community.]]></description>
			<content:encoded><![CDATA[<p>In 2007 I decided to start releasing a few pieces of code to the public.</p>
<p>At the time I was experimenting with Rails, so I released a few plugins, including <a href="http://code.dunae.ca/validates_email_format_of.html">one that became pretty popular</a>.  Since then, I&#8217;ve released a few more odds and ends, notably a few WordPress plugins and <a href="http://premailer.dialect.ca/">Premailer</a>, a tool that helps build email newsletters.</p>
<p>My motivation was pretty clear in the beginning&#8211;the web had been good to me, and I wanted to do my part for other developers. But I&#8217;ve often wondered if there were other benefits to releasing code, and what they could be.</p>
<p>Here&#8217;s a brief of summary of what I&#8217;ve found.</p>
<p><span id="more-76"></span></p>
<h2>Economic benefits of giving away code</h2>
<p>After two years of giving code away for free, my bank balance hasn&#8217;t changed much.  I&#8217;ve made money in three different ways: selling sponsorship, being hired to write plugins, and receiving donations.</p>
<p>First up: sponsorship.  <a href="http://www.campaignmonitor.com/">Campaign Monitor</a> has paid to sponsor <a href="http://premailer.dialect.ca/">Premailer </a>since its inception.  I approached them and offered them exclusive placement.  I felt it would be good value to them (since the site is used exclusively by people designing HTML email) and I liked them as a company.</p>
<p>Next: code for hire.  I&#8217;ve received quite a few enquiries about modifying my code for specific purposes, as well as requests to write plugins from scratch.  That&#8217;s how the <a href="http://www.mailchimp.com/blog/shopify-plugin-for-mailchimp/">MailChimp Shopify plugin</a> came about.  About 15% of those requests came to fruition.</p>
<p>Finally, donations.  I&#8217;ve never put up a &#8216;donate now&#8217; button, so the few I&#8217;ve received are from people who actually emailed me and asked for my PayPal account.  Those emails always feel very nice.</p>
<p><strong>All told, I&#8217;ve made $5,000 or $6,000 giving away code.</strong></p>
<h2>Promotional benefits of giving away code</h2>
<p>The promotional benefits have been a little thinner than I would have guessed.  With each release I&#8217;ve gotten some nice announcement posts (see <a href="http://www.campaignmonitor.com/blog/post/2649/track-your-subscribers-in-wordpress-and-mint/">here</a> and <a href="http://yoast.com/wordpress-smush-it/">here</a>) and a little upswell in traffic, but none of that has lead to an enduring client relationship.  I put this down to the fact that the people using my code are my peers (sometimes known as competitors, I prefer peers) who don&#8217;t necessarily need to hire a web developer.</p>
<h2>Educational benefits of giving away code</h2>
<p>Releasing code to other developers has made me a better programmer.  When I build a web site I&#8217;m in complete control of the environment, including what libraries are installed and what character encodings are used.  Public code gets scrutinized and tested in many different environments and has helped me learn what it takes to make something portable. I&#8217;ve also learned from the bug reports and contributions of <a href="http://github.com/alexdunae/validates_email_format_of/blob/master/CHANGELOG.rdoc">other programmers</a>.</p>
<p>Finally, writing and releasing code is my preferred way to learn.  Long after my initial flirtation with Ruby on Rails, I keep up my limited Ruby skills by maintaining code that I&#8217;ve released.</p>
<p>All in all, giving away code has been a good experience.  I don&#8217;t think it&#8217;s possible to reconcile the hours of labour to the intangible benefits of education, but I do feel that giving the code away has been very beneficial.</p>
<img src="http://feeds.feedburner.com/~r/AlexDunae/~4/kOa6WArqU-s" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://dunae.ca/2009/the-benefits-of-giving-away-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://dunae.ca/2009/the-benefits-of-giving-away-code/</feedburner:origLink></item>
		<item>
		<title>Respecting the Grid in HTML (and Making Your Designer Happy)</title>
		<link>http://feedproxy.google.com/~r/AlexDunae/~3/-tf57eYrVa0/</link>
		<comments>http://dunae.ca/2009/respecting-the-grid-in-html/#comments</comments>
		<pubDate>Wed, 18 Nov 2009 07:16:31 +0000</pubDate>
		<dc:creator>Alex Dunae</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Grid Systems]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://dunae.ca/?p=56</guid>
		<description><![CDATA[Visually representing the grid in HTML makes development easier and the final product better.]]></description>
			<content:encoded><![CDATA[<p>I made Nik, the design half of <a href="http://dialect.ca/">Dialect</a>, really happy a few weeks back.  You see, he&#8217;s meticulous, as any good designer should be, and sticks strongly to a grid system when designing sites.  I sometimes (inadvertently) miss a few things when coding up his files, and I think my interpretations of the grid have driven him to drink on occasion.</p>
<p><span id="more-56"></span></p>
<p>My usual workflow is this:</p>
<ol>
<li>Turn on the guides in the source Illustrator file and do a little reconnaissance</li>
<li>Write a page&#8217;s markup in a static HTML file</li>
<li>Position and size all the content elements</li>
<li>Position and size the type</li>
<li>Add any dynamic behaviours</li>
<li>Add all the colours, backgrounds, icons, etc&#8230;</li>
</ol>
<p>In an effort to do a little professional development, I finally decided to recreate the Illustrator guides in my HTML file using a PNG file mixed with a sliver of JavaScript.</p>
<p>Here&#8217;s my working file before:</p>
<p><a href="http://dunae.ca/wp-content/uploads/2009/11/nogrid.png"><img class="aligncenter size-medium wp-image-58" title="No grid" src="http://dunae.ca/wp-content/uploads/2009/11/nogrid-300x219.png" alt="No grid" width="300" height="219" /></a></p>
<p>And here it is after pressing &#8216;g&#8217; to toggle the grid view:</p>
<p><a href="http://dunae.ca/wp-content/uploads/2009/11/yesgrid.png"><img class="aligncenter size-medium wp-image-60" title="With grid" src="http://dunae.ca/wp-content/uploads/2009/11/yesgrid-300x219.png" alt="With grid" width="300" height="219" /></a></p>
<p>You can <a href="http://code.dunae.ca/demos/gridlines/">see a live demo right here</a>.</p>
<p>This simple addition cutout countless rounds of revisions and has actually made my job a lot easier. The code to accomplish this is nice and straightforward, and easy to strip out when you go live.</p>
<hr />First you create <a href="http://code.dunae.ca/demos/gridlines/grid.png">a small PNG file</a> with a single column in grey (or red, or whatever) plus the white gutter.  In this case, the grey column is 40px and the white gutter is 20px.</p>
<p>In my CSS file, I declare the grid styles that will appear when the <tt>body</tt> has the <tt>debug</tt> class.</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">/* the main grid */</span>
<span style="color: #6666ff;">.debug</span> <span style="color: #cc00cc;">#container</span> <span style="color: #00AA00;">&#123;</span> <span style="color: #000000; font-weight: bold;">background-image</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">url</span><span style="color: #00AA00;">&#40;</span><span style="color: #ff0000;">&quot;grid.png&quot;</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span> <span style="color: #000000; font-weight: bold;">background-repeat</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">repeat</span><span style="color: #00AA00;">;</span> <span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">/* light box for base elements */</span>
<span style="color: #6666ff;">.debug</span> <span style="color: #cc00cc;">#header</span><span style="color: #00AA00;">,</span> <span style="color: #6666ff;">.debug</span> <span style="color: #cc00cc;">#viewer</span><span style="color: #00AA00;">,</span> <span style="color: #6666ff;">.debug</span> <span style="color: #cc00cc;">#footer</span> <span style="color: #00AA00;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">background-color</span><span style="color: #00AA00;">:</span> <span style="color: #cc00cc;">#d9d9d9</span><span style="color: #00AA00;">;</span>
	opacity<span style="color: #00AA00;">:</span> .8<span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">/* dark box for overlayed elements */</span>
<span style="color: #6666ff;">.debug</span> <span style="color: #cc00cc;">#header</span> <span style="color: #6666ff;">.nav</span><span style="color: #00AA00;">,</span> <span style="color: #6666ff;">.debug</span> h1<span style="color: #00AA00;">,</span> <span style="color: #6666ff;">.debug</span> <span style="color: #cc00cc;">#footer</span> <span style="color: #6666ff;">.section</span> <span style="color: #00AA00;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">background-color</span><span style="color: #00AA00;">:</span> <span style="color: #cc00cc;">#b9b9b9</span><span style="color: #00AA00;">;</span>
	opacity<span style="color: #00AA00;">:</span> .8<span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>The JavaScript simply listens for someone to press <tt>g</tt> and then toggles the <tt>debug</tt> class on the <tt>body</tt> element. (N.B. I&#8217;m using jQuery in this example.)</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">$<span style="color: #009900;">&#40;</span>document<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">ready</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	$<span style="color: #009900;">&#40;</span>document<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">bind</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'keypress'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span>e<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>e.<span style="color: #660066;">which</span> <span style="color: #339933;">===</span> <span style="color: #CC0000;">103</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'body'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">toggleClass</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'debug'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Of course, you can see all this on <a href="http://code.dunae.ca/demos/gridlines/">the demo page</a>.</p>
<hr />So there you have it, a simple way to keep your HTML as well-structured as your source file, and make your design partner happy in the process.</p>
<p>Incidentally, as I was drafting this post New York Times designer <a href="http://www.subtraction.com/2009/11/14/introducing-basic-maths">Khoi Vinh announced his nifty Basic Maths WordPress theme</a>, which has this exact same feature.  Needless to say, I think he&#8217;s brilliant.</p>
<img src="http://feeds.feedburner.com/~r/AlexDunae/~4/-tf57eYrVa0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://dunae.ca/2009/respecting-the-grid-in-html/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://dunae.ca/2009/respecting-the-grid-in-html/</feedburner:origLink></item>
		<item>
		<title>Collecting Image Dimensions and Aspect Ratios</title>
		<link>http://feedproxy.google.com/~r/AlexDunae/~3/n0-ivjIMYMc/</link>
		<comments>http://dunae.ca/2009/image-dimensions-and-aspect-ratios-script/#comments</comments>
		<pubDate>Mon, 16 Nov 2009 23:21:18 +0000</pubDate>
		<dc:creator>Alex Dunae</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[ImageMagick]]></category>
		<category><![CDATA[Scripts]]></category>
		<category><![CDATA[Windows Batch]]></category>

		<guid isPermaLink="false">http://dunae.ca/?p=53</guid>
		<description><![CDATA[A Windows batch file that outputs the dimensions and aspect ratio of all the images in a directory as a CSV file.]]></description>
			<content:encoded><![CDATA[<p>The supporting files submitted by a client for an ongoing project included 8,000 images.</p>
<p>To figure out what sort of dimensions we were dealing with, and whether the images were primarily horizontal, vertical or square, I put together this little script.</p>
<p>This is a Windows batch file that outputs the dimensions and aspect ratio of all the images in a directory as a CSV file.  It uses <a href="http://www.imagemagick.org/script/identify.php">ImageMagick&#8217;s identify tool</a>.</p>

<div class="wp_syntax"><div class="code"><pre class="winbatch" style="font-family:monospace;"><span style="color: #66cc66;">@</span>ECHO <span style="color: #0080FF; font-weight: bold;">OFF</span>
ECHO file, w, h, aspect <span style="color: #66cc66;">&gt;</span> aspects.txt
<span style="color: #800080;">FOR</span> <span style="color: #66cc66;">/</span>f <span style="color: #66cc66;">%%</span>a <span style="color: #800080;">IN</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'dir /b *.jpg'</span><span style="color: #66cc66;">&#41;</span> DO <span style="color: #66cc66;">&#40;</span> 
  identify <span style="color: #66cc66;">-</span>format <span style="color: #ff0000;">&quot;%%f, %%w, %%h, %%[fx:w/h]&quot;</span> <span style="color: #66cc66;">%%</span>a <span style="color: #66cc66;">&gt;&gt;</span> aspects.txt <span style="color: #66cc66;">&amp;</span> ECHO <span style="color: #66cc66;">%%</span>a 
<span style="color: #66cc66;">&#41;</span></pre></div></div>

<img src="http://feeds.feedburner.com/~r/AlexDunae/~4/n0-ivjIMYMc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://dunae.ca/2009/image-dimensions-and-aspect-ratios-script/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://dunae.ca/2009/image-dimensions-and-aspect-ratios-script/</feedburner:origLink></item>
		<item>
		<title>Thoughts on Smush.it</title>
		<link>http://feedproxy.google.com/~r/AlexDunae/~3/Qs7ZBfs52-A/</link>
		<comments>http://dunae.ca/2009/thoughts-on-smush-it/#comments</comments>
		<pubDate>Sun, 15 Nov 2009 17:35:17 +0000</pubDate>
		<dc:creator>Alex Dunae</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[APIs]]></category>
		<category><![CDATA[Plugin Development]]></category>
		<category><![CDATA[Smush.it]]></category>
		<category><![CDATA[Yahoo!]]></category>

		<guid isPermaLink="false">http://dunae.ca/?p=45</guid>
		<description><![CDATA[The perils of developing a WordPress plugin against a constantly-moving API.]]></description>
			<content:encoded><![CDATA[<p>I developed a <a href="http://dialect.ca/code/wp-smushit/">plugin</a> last year that integrated <a href="http://www.phpied.com/smushit-is-a-smash-hit/">Stoyan Stefanov</a> and <a href="http://www.stubbornella.org/content/2009/04/29/smushit-finds-a-home-at-yahoo/">Nicole Sullivan</a>&#8217;s Smush.it service with WordPress.   In a nutshell, it reduced the file size of all images uploaded to WordPress without losing any quality.</p>
<p>Stoyan and Nicole are Yahoo! employees, and Smush.it was moved under the Yahoo! banner fairly soon after its launch.  I was pleased to see that move.  Long before Google-hosted jQuery and Closure, Yahoo! was making high-quality tools available to web developers (YUI library, YUI Compressor) for free.  They integrated Smush.it with YSlow and put up a basic web interface.</p>
<p>Since then, Yahoo! has moved Smush.it fairly often, and I&#8217;ve been <a href="http://plugins.trac.wordpress.org/changeset?new=167831%40wp-smushit&amp;old=160081%40wp-smushit">playing cat-and-mouse</a> with them, changing the API endpoint URL in my plugin to try to match their changes. This has been in response to a bunch of support requests from my users <a href="http://wordpress.org/tags/wp-smushit?forum_id=10">in the forums</a>, and many more by email.</p>
<p><span id="more-45"></span></p>
<p>For a while I felt indignant. The service worked&#8211;in fact it was being used by YSlow every day&#8211;and if they would just stop moving things around then my unauthorized access to their API would work just fine. Stoyan had complimented me on the plugin, which I took as tacit approval.  The load from WP Smush.it users must have been minimal.</p>
<p>I&#8217;ve come around a bit since then.  I freely acknowledge that I don&#8217;t know what it takes to keep a service like Smush.it up and running. If they don&#8217;t want my plugin using Smush.it, that&#8217;s there prerogative.  My gripe now is about communication.</p>
<p>When I developed the plugin there was a public API, and over the course of a few months the endpoint URL kept changing without any word from Yahoo!  I kept trying to catch up, thinking that they were just in flux and that a stable service was just around the corner.</p>
<p>So, here&#8217;s the &#8220;ask&#8221; (as they say in business): I&#8217;d like to know if Yahoo! intends to make Smush.it available for API access sometime in the near future (I finally found out that it is <a href="http://wordpress.org/support/topic/290751?replies=20#post-1263028">temporarily unavailable</a>).  One way or the other I need to figure out what to do with this plugin.  I&#8217;m happy either way.</p>
<img src="http://feeds.feedburner.com/~r/AlexDunae/~4/Qs7ZBfs52-A" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://dunae.ca/2009/thoughts-on-smush-it/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://dunae.ca/2009/thoughts-on-smush-it/</feedburner:origLink></item>
		<item>
		<title>Introduction</title>
		<link>http://feedproxy.google.com/~r/AlexDunae/~3/UwxhDPes5Ek/</link>
		<comments>http://dunae.ca/2009/introduction/#comments</comments>
		<pubDate>Sun, 15 Nov 2009 07:40:30 +0000</pubDate>
		<dc:creator>Alex Dunae</dc:creator>
				<category><![CDATA[Intellectual Development]]></category>
		<category><![CDATA[Blogging]]></category>
		<category><![CDATA[Dan Cederholm]]></category>
		<category><![CDATA[Lloyd Budd]]></category>
		<category><![CDATA[WordCamp]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[WordPress.com]]></category>

		<guid isPermaLink="false">http://dunae.ca/?p=26</guid>
		<description><![CDATA[A blog post by Dan Cederholm last month struck a chord with me, though I didn't realize it at the time.]]></description>
			<content:encoded><![CDATA[<p>A <a href="http://simplebits.com/notebook/2009/10/22/woodpress/">blog post by Dan Cederholm</a> last month struck a chord with me, though I didn&#8217;t realize it at the time.  In fact, it wasn&#8217;t until I met Lloyd Budd at WordCamp Victoria this morning that I understood the underlying though.</p>
<p>Dan wrote:</p>
<blockquote><p>Remember when blogs were more casual and conversational? Before a post’s purpose was to grab search engine clicks or to promise “99 Answers to Your Problem That We’re Telling You You’re Having”. Yeah. I’d like to get back to that here.</p></blockquote>
<p>I never had a blog back in those days, but I was sure reading them, and I do remember what it was like.  It was weird and it was good.</p>
<p><span id="more-26"></span></p>
<p>Lloyd&#8217;s contribution was a comment about the WordPress.com stats he monitors.  He said that he cares most about how much people communicate each day using the software he helps develop, not about how many users sign up, or how many pay for upgrades.  (Turns out he&#8217;s <a href="http://foolswisdom.com/wordpresscom-stats-that-matter/">said this</a> more than once).</p>
<p>These two seemingly-unrelated comments were the catalyst to start this blog.</p>
<p>Part of the blog will be about web development, specifically sharing back some of the techniques I&#8217;ve picked up over fifteen(!) years of building web sites.  And part of the blog will be about intellectual development, namely the various articles and such that I find thought-provoking and enlightening.</p>
<p>My hunch is that amateur intellectualism and code don&#8217;t mix too well, but there&#8217;s only one way to find out.</p>
<img src="http://feeds.feedburner.com/~r/AlexDunae/~4/UwxhDPes5Ek" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://dunae.ca/2009/introduction/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://dunae.ca/2009/introduction/</feedburner:origLink></item>
		<item>
		<title>Street Farmer</title>
		<link>http://feedproxy.google.com/~r/AlexDunae/~3/UHC9g4v_5HI/</link>
		<comments>http://dunae.ca/2009/street-farmer/#comments</comments>
		<pubDate>Mon, 06 Jul 2009 06:51:04 +0000</pubDate>
		<dc:creator>Alex Dunae</dc:creator>
				<category><![CDATA[Intellectual Development]]></category>
		<category><![CDATA[Environment]]></category>
		<category><![CDATA[Food]]></category>

		<guid isPermaLink="false">http://dunae.ca/?p=3</guid>
		<description><![CDATA[Like others in the so-called good-food movement, Allen, who is 60, asserts that our industrial food system is depleting soil, poisoning water, gobbling fossil fuels and stuffing us with bad calories. Like others, he advocates eating locally grown food. But to Allen, local doesn’t mean a rolling pasture or even a suburban garden: it means [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>Like others in the so-called good-food movement, Allen, who is 60, asserts that our industrial food system is depleting soil, poisoning water, gobbling fossil fuels and stuffing us with bad calories. Like others, he advocates eating locally grown food. But to Allen, local doesn’t mean a rolling pasture or even a suburban garden: it means 14 greenhouses crammed onto two acres in a working-class neighborhood on Milwaukee’s northwest side, less than half a mile from the city’s largest public-housing project.</p></blockquote>
<p><a href="http://www.nytimes.com/2009/07/05/magazine/05allen-t.html">Street Farmer</a><br />
– Elizabeth Royte, <em>New York Times Magazine</em>, July 5, 2009</p>
<img src="http://feeds.feedburner.com/~r/AlexDunae/~4/UHC9g4v_5HI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://dunae.ca/2009/street-farmer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://dunae.ca/2009/street-farmer/</feedburner:origLink></item>
	</channel>
</rss><!-- Dynamic page generated in 0.487 seconds. --><!-- Cached page generated by WP-Super-Cache on 2010-02-10 09:35:22 -->
