<?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/" version="2.0">

<channel>
	<title>keyes.ie</title>
	
	<link>http://keyes.ie</link>
	<description />
	<lastBuildDate>Fri, 16 Dec 2011 22:51:56 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/johnkeyes" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="johnkeyes" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Idea Magazine</title>
		<link>http://keyes.ie/idea-magazine/</link>
		<comments>http://keyes.ie/idea-magazine/#comments</comments>
		<pubDate>Fri, 02 Dec 2011 16:54:58 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[idea]]></category>
		<category><![CDATA[ireland]]></category>
		<category><![CDATA[magazine]]></category>

		<guid isPermaLink="false">http://keyes.ie/?p=680</guid>
		<description><![CDATA[Idea Magazine, a journal of ideas &#38; technology in Ireland, is launching on Thursday, December 8th. Best of luck to Martha and Stu.]]></description>
			<content:encoded><![CDATA[<p><a href="http://readidea.com/"><img src="http://keyes.ie/wp-content/uploads/2011/12/readidea.png" alt="" title="readidea" width="460" height="264" class="alignnone size-full wp-image-683" /></a></p>
<p><a href="http://readidea.com/">Idea Magazine</a>, a journal of ideas &amp; technology in Ireland, is launching on Thursday, December 8th. Best of luck to <a href="http://martharotter.com/">Martha</a> and <a href="http://irishstu.com">Stu</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://keyes.ie/idea-magazine/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introducing python-docraptor</title>
		<link>http://keyes.ie/introducing-python-docraptor/</link>
		<comments>http://keyes.ie/introducing-python-docraptor/#comments</comments>
		<pubDate>Tue, 29 Nov 2011 14:17:40 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Releases]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[docraptor]]></category>
		<category><![CDATA[pdf]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[xls]]></category>

		<guid isPermaLink="false">http://keyes.ie/?p=673</guid>
		<description><![CDATA[python-docraptor is a python interface to the Doc Raptor document generation API. It is designed to mirror (well almost) the behaviour of the doc-raptor-gem, including asynchronous support. Here&#8217;s an example of it in action: from docraptor import DocRaptor docraptor = DocRaptor() resp = docraptor.create({ 'document_content': '&#60;p>python-docraptor Test&#60;/p>', 'test': True }) # PDF data is now [...]]]></description>
			<content:encoded><![CDATA[<p><a href="/things/python-docraptor">python-docraptor</a> is a python interface to the Doc Raptor document generation API. It is designed to mirror (well almost) the behaviour of the <a href="https://github.com/expectedbehavior/doc_raptor_gem">doc-raptor-gem</a>, including asynchronous support.</p>
<p>Here&#8217;s an example of it in action:</p>
<pre>from docraptor import DocRaptor

docraptor = DocRaptor()
resp = docraptor.create({
        'document_content': '&lt;p>python-docraptor Test&lt;/p>',
        'test': True
    })
# PDF data is now available in resp.content
</pre>
<p>Visit the <a href="https://github.com/jkeyes/python-docraptor">repository</a> for <a href="https://github.com/jkeyes/python-docraptor/tree/master/example">more examples</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://keyes.ie/introducing-python-docraptor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Codex Magazine #2</title>
		<link>http://keyes.ie/codex-magazine-2/</link>
		<comments>http://keyes.ie/codex-magazine-2/#comments</comments>
		<pubDate>Sun, 20 Nov 2011 23:32:11 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Type]]></category>
		<category><![CDATA[codex]]></category>
		<category><![CDATA[magazine]]></category>
		<category><![CDATA[type]]></category>
		<category><![CDATA[typography]]></category>

		<guid isPermaLink="false">http://keyes.ie/?p=654</guid>
		<description><![CDATA[I was delighted with the announcement today that Codex, a wonderful typography magazine, will publish issue #2 in Spring 2012. If you like type, there are still a few copies of issue #1 available. Do yourself a favour, and grab a copy.]]></description>
			<content:encoded><![CDATA[<p>I was delighted with the announcement today that <a href="http://codexmag.com/">Codex</a>, a wonderful typography magazine, will publish issue #2 in Spring 2012. If you like type, there are still a few copies of <a href="http://shop.codexmag.com/products/issue-1">issue #1</a> available. Do yourself a favour, and grab a copy.</p>
<p><a href="http://shop.codexmag.com/products/issue-1"><img src="http://keyes.ie/wp-content/uploads/2011/11/codex-website-mag-cover_1_medium.png" alt="" title="codex-website-mag-cover_1_medium" width="172" height="240" class="alignnone size-full wp-image-655" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://keyes.ie/codex-magazine-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Continuous Learning</title>
		<link>http://keyes.ie/continuous-learning/</link>
		<comments>http://keyes.ie/continuous-learning/#comments</comments>
		<pubDate>Thu, 10 Nov 2011 17:10:41 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[learning tools]]></category>

		<guid isPermaLink="false">http://keyes.ie/?p=639</guid>
		<description><![CDATA[As you may be aware, I&#8217;ve been doing a fair bit of work with baseline grids this past couple of weeks. As part of that work, I&#8217;ve created two tools to help with displaying the grid. One, Baseliner is a JavaScript tool, that creates a baseline grid overlay. There is an accompanying bookmarklet, which means [...]]]></description>
			<content:encoded><![CDATA[<p>As you may be aware, I&#8217;ve been doing a fair bit of work with baseline grids this past couple of weeks. As part of that work, I&#8217;ve created two tools to help with displaying the grid.</p>
<p>One, <a href="/things/baseliner/">Baseliner</a> is a JavaScript tool, that creates a baseline grid overlay. There is an accompanying <a href="javascript:(function()%7Bvar%20_grid_height=10;if(window.baseliner)%7Bbaseliner.toggle();%7Delse%7Bvar%20_already_loaded=document.getElementById('baseliner-script');if(_already_loaded)%7Breturn;%7D;var%20_baseliner=document.createElement('script');_baseliner.id='baseliner-script';_baseliner.type='text/javascript';_baseliner.src='http://files.keyes.ie/baseliner-latest.min.js';document.getElementsByTagName('body')%5B0%5D.appendChild(_baseliner);var%20loadFunction=function(evt)%7Bif(window.baseliner)%7Breturn;%7D;baseliner=new%20Baseliner(_grid_height);baseliner.toggle();%7D;_baseliner.onreadystatechange=loadFunction;_baseliner.onload=loadFunction;%7D;%7D)();">bookmarklet</a>, which means it&#8217;s easy to drop a grid over any page. </p>
<p>The other, <a href="/things/baseline-background/">Baseline Background</a>, is a web app that generates PNGs that can be used to create your baseline grid (Baseliner uses this).</p>
<p>There are a few reasons why I&#8217;ve published these, the most important being that I enjoy creating things. That aside, I believe it&#8217;s important to continue learning new skills and to hone current ones. So when creating these works I tried to do achieve it with some technologies that I hadn&#8217;t used before.</p>
<p>My first cut of Baseliner was <a href="http://jquery.com/">jQuery</a> powered. It&#8217;s too easy to turn to jQuery when writing any JavaScript for the web. So one of my first tasks after the initial release, was to remove this dependency, and to write <em>pure</em> JavaScript. There is nothing groundbreaking involved, but it felt good to do some work at that level.</p>
<p>Early versions also used <a href="http://www.xarg.org/2010/03/generate-client-side-png-files-using-javascript/">PNGlib</a>, a JavaScript library, for generating the background images. I then referenced these images using data:uris and base64 encoded images, again a first for me. That led an investigation into browser support and the inevitability that it wouldn&#8217;t work in IE6 and IE7.</p>
<p>Another aspect I dived into was how to deliver the latest version of Baseliner for the bookmarklet. I had to host it somewhere, so I decided to use <a href="http://aws.amazon.com/cloudfront/">CloudFront</a>, not because it was necessary, but because it was something else that I hadn&#8217;t used before.</p>
<p>Then I decided to drop the PNGlib dependency and setup a web app to serve the PNGs. My first stab at this was a simple PHP script. That was to prove the concept, then I thought this would be a great opportunity to try a <a href="http://djangoproject.com/">Django</a> deployment on <a href="http://heroku.com">Heroku</a>. This was something that I&#8217;d wanted to try for a while, so the timing couldn&#8217;t have been better. The app is now running at <a href="http://baselinebg.keyes.ie">baselinebg.keyes.ie</a>.</p>
<p>The two apps are <a href="http://jkeyes.mit-license.org/">MIT licensed</a> so feel free to have a look around.</p>
<p>Even with a simple problem, you can learn something while implementing it&#8217;s resolution. Maybe the next time you have a smallish problem, you&#8217;ll use a new tool to resolve it. It&#8217;s just another reason why I love the web, it provides great opportunities for continuous learning.</p>
]]></content:encoded>
			<wfw:commentRss>http://keyes.ie/continuous-learning/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Baseliner</title>
		<link>http://keyes.ie/baseliner/</link>
		<comments>http://keyes.ie/baseliner/#comments</comments>
		<pubDate>Fri, 04 Nov 2011 03:43:05 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[baseline]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[grid]]></category>
		<category><![CDATA[typography]]></category>

		<guid isPermaLink="false">http://keyes.ie/?p=559</guid>
		<description><![CDATA[I&#8217;ve been experimenting with baseline grids and after created three tiling background images for various grid sizes I set about writing a tool to relieve me of this burden. A couple of hours later and I have an initial version of Baseliner ready to roll. It is currently based on jQuery (for personal efficiency, but [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been experimenting with <a href="http://www.alistapart.com/articles/settingtypeontheweb" title="Setting type on the web">baseline grids</a> and after created three tiling background images for various grid sizes I set about writing a tool to relieve me of this burden.</p>
<p>A couple of hours later and I have an initial version of Baseliner ready to roll. It is currently based on <a href="http://jquery.com">jQuery</a> (for personal efficiency, but there is no reason why it can&#8217;t be rewritten in unadorned JavaScript) and <a href="http://www.xarg.org/2010/03/generate-client-side-png-files-using-javascript/">PNGlib</a> to dynamically create the background images.</p>
<p>I&#8217;ll stick the source on <a href="https://github.com/jkeyes/baseline">GitHub</a> soon, but in the meantime, here&#8217;s a <a href="http://www.youtube.com/watch?v=8ARN9g060mU">fifty five second preview</a> of it in action:</p>
<p><iframe width="460" height="264" src="http://www.youtube.com/embed/8ARN9g060mU?rel=0&amp;hd=1" frameborder="0" allowfullscreen></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://keyes.ie/baseliner/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Hacker News Traffic</title>
		<link>http://keyes.ie/hacker-news-traffic/</link>
		<comments>http://keyes.ie/hacker-news-traffic/#comments</comments>
		<pubDate>Fri, 14 Oct 2011 22:22:24 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Site]]></category>
		<category><![CDATA[gauges]]></category>
		<category><![CDATA[hacker-news]]></category>
		<category><![CDATA[sciencecodemanifesto]]></category>
		<category><![CDATA[traffice]]></category>

		<guid isPermaLink="false">http://keyes.ie/?p=556</guid>
		<description><![CDATA[I&#8217;ve recently started using Gaug.es web analytics service, and love how hypnotic their live traffic map is. Science Code Manifesto made it onto the front page of Hacker News today, so I spent some time looking at the hits coming through.]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve recently started using <a href="http://gaug.es">Gaug.es</a> web analytics service, and love how hypnotic their live traffic map is. <a href="http://sciencecodemanifesto.org">Science Code Manifesto</a> made it onto the front page of <a href="http://news.ycombinator.com">Hacker News</a> today, so I spent some time looking at the hits coming through.</p>
<p><iframe width="460" height="264" src="http://www.youtube.com/embed/aMqfJgwMqos?rel=0&amp;hd=1" frameborder="0" allowfullscreen></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://keyes.ie/hacker-news-traffic/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Launch: Science Code Manifesto</title>
		<link>http://keyes.ie/launch-science-code-manifesto/</link>
		<comments>http://keyes.ie/launch-science-code-manifesto/#comments</comments>
		<pubDate>Thu, 13 Oct 2011 23:08:55 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Site]]></category>
		<category><![CDATA[climatecode]]></category>
		<category><![CDATA[manifesto]]></category>
		<category><![CDATA[principles]]></category>
		<category><![CDATA[science]]></category>

		<guid isPermaLink="false">http://keyes.ie/?p=539</guid>
		<description><![CDATA[The Climate Code Foundation has just launched a Science Code Manifesto which lays out principles for the publication of science software. Here&#8217;s a badge which you can stick on your site to publicise your endorsement of the manifesto:]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://climatecode.org/">Climate Code Foundation</a> has just launched a <a href="http://sciencecodemanifesto.org">Science Code Manifesto</a> which lays out principles for the publication of science software.</p>
<p><a href="http://sciencecodemanifesto.org"><img src="http://keyes.ie/wp-content/uploads/2011/10/site_preview.png" alt="" title="site_preview" width="420" height="297" class="alignnone size-full wp-image-548" /></a></p>
<p>Here&#8217;s a badge which you can stick on your site to publicise your endorsement of the manifesto:</p>
<p><a href="http://sciencecodemanifesto.org"><img src="http://keyes.ie/wp-content/uploads/2011/10/cim_badge_180.png" alt="" title="cim_badge_180" width="180" height="93" class="alignnone size-full wp-image-552" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://keyes.ie/launch-science-code-manifesto/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>lesswatch</title>
		<link>http://keyes.ie/lesswatch/</link>
		<comments>http://keyes.ie/lesswatch/#comments</comments>
		<pubDate>Thu, 29 Sep 2011 13:28:30 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Web Design]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[less]]></category>
		<category><![CDATA[lesswatch]]></category>

		<guid isPermaLink="false">http://keyes.ie/?p=533</guid>
		<description><![CDATA[Following on from my previous itch-scratching, I&#8217;ve improved lesswatch. The new version includes support for dependency checking. For example, say we have header.less and style.less imports it: /* styles.less */ @import "header"; body { ... } When header.less is changed, lesswatch compiles both header.less and styles.less.]]></description>
			<content:encoded><![CDATA[<p>Following on from my previous <a href="http://keyes.ie/automatically-compile-less-files/" title="Automatically compile LESS files">itch-scratching</a>, I&#8217;ve improved <a href="https://github.com/jkeyes/lesswatch" title="lesswatch on GitHub">lesswatch</a>. </p>
<p>The new version includes support for dependency checking. For example, say we have <em>header.less</em> and <em>style.less</em> imports it:</p>
<pre>/* styles.less */
@import "header";

body {
...
}
</pre>
<p>When <em>header.less</em> is changed, <code>lesswatch</code> compiles<br />
both <em>header.less</em> and <em>styles.less</em>.</p>
]]></content:encoded>
			<wfw:commentRss>http://keyes.ie/lesswatch/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Automatically compile LESS files</title>
		<link>http://keyes.ie/automatically-compile-less-files/</link>
		<comments>http://keyes.ie/automatically-compile-less-files/#comments</comments>
		<pubDate>Mon, 26 Sep 2011 11:58:32 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Web Design]]></category>
		<category><![CDATA[compass]]></category>
		<category><![CDATA[gist]]></category>
		<category><![CDATA[less]]></category>
		<category><![CDATA[lesswatch]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[watchdog]]></category>

		<guid isPermaLink="false">http://keyes.ie/?p=522</guid>
		<description><![CDATA[A nice feature of Compass is that it provides a watch command line option. When you pass this option, compass automatically compiles SASS files when they are saved. It seems that LESS doesn&#8217;t provide a similar option, so I created lesswatch. It uses watchdog&#8217;s watchmedo script, which can run a command when a file change [...]]]></description>
			<content:encoded><![CDATA[<p>A nice feature of <a href="http://compass-style.org/" title="Compass is an open-source CSS Authoring Framework">Compass</a> is that it provides a <code>watch</code> command line option. When you pass this option, compass automatically compiles SASS files when they are saved. It seems that <a href="http://lesscss.org/" title="The dynamic stylesheet language">LESS</a> doesn&#8217;t provide a similar option, so I created <a href="https://gist.github.com/1242040" title="GitHub Gist for lesswatch">lesswatch</a>.</p>
<p>It uses <a href="https://github.com/gorakhargosh/watchdog" title="watchdog repository on GitHub">watchdog&#8217;s</a> <code>watchmedo</code> script, which can run a command when a file change is detected. watchdog is implemented in Python and can be installed from <a href="http://pypi.python.org/pypi/watchdog" title="watchdog project on PyPi">PyPi</a>. Compilation from LESS to CSS is performed by <a href="http://lesscss.org/#guide" title="Usage guide for LESS">lessc</a>.</p>
<p>lesswatch is a command line script (no idea what a command line is? have a read of <a href="http://wiseheartdesign.com/articles/2010/11/12/the-designers-guide-to-the-osx-command-prompt/ ">The Designers Guide to the OS X Command Prompt</a>) that watches directories you specify for LESS file changes:</p>
<pre>$ lesswatch media/css
compile: /Users/john/media/css/sample.less
wrote: /Users/john/media/css/sample.css
compile: /Users/john/media/css/sample.less
Syntax Error on line 2 in /Users/john/media/css/sample.less
1 body {
2   background:
3 }</pre>
<p>You can <a href="https://gist.github.com/1242040" title="lesswatch gist">download lesswatch from GitHub</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://keyes.ie/automatically-compile-less-files/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>8 Faces #3</title>
		<link>http://keyes.ie/8-faces-3/</link>
		<comments>http://keyes.ie/8-faces-3/#comments</comments>
		<pubDate>Mon, 19 Sep 2011 10:11:30 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Type]]></category>
		<category><![CDATA[8faces]]></category>
		<category><![CDATA[flickr]]></category>
		<category><![CDATA[typography]]></category>

		<guid isPermaLink="false">http://keyes.ie/?p=514</guid>
		<description><![CDATA[Another beautiful copy of 8 Faces arrived today, along with a fantastic type catalogue for Photo-Lettering. I didn&#8217;t win the underware champagne. More photos.]]></description>
			<content:encoded><![CDATA[<p>Another beautiful copy of <a href="http://8faces.com/">8 Faces</a> arrived today, along with a fantastic type catalogue for <a href="http://www.photolettering.com/">Photo-Lettering</a>.</p>
<p>I didn&#8217;t win the <a href="http://underware.nl/jetaime/">underware champagne</a>.</p>
<p><a href="http://www.flickr.com/photos/johnkeyes/sets/72157627579600401/"><img src="http://keyes.ie/wp-content/uploads/2011/09/8faces3.jpg" alt="" title="8faces3" width="500" height="335" class="alignnone size-full wp-image-519" /></a></p>
<p><a href="http://www.flickr.com/photos/johnkeyes/sets/72157627579600401/">More photos.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://keyes.ie/8-faces-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss><!-- Dynamic page generated in 1.868 seconds. --><!-- Cached page generated by WP-Super-Cache on 2012-02-04 09:01:55 -->

