<?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>Tue, 15 May 2012 09:05:01 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</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>Rams – Design by Vitsœ</title>
		<link>http://keyes.ie/rams-design-by-vits/</link>
		<comments>http://keyes.ie/rams-design-by-vits/#comments</comments>
		<pubDate>Tue, 15 May 2012 08:48:50 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[dieter-rams]]></category>
		<category><![CDATA[vitsœ]]></category>

		<guid isPermaLink="false">http://keyes.ie/?p=722</guid>
		<description><![CDATA[Design is not dress-up: A designer who wants to achieve good design must not regard himself as an artist who, according to taste and aesthetics, is merely dressing-up products with a lastminute garment. and don&#8217;t mistake gloss for design: To use design to impress, to polish things up, to make them chic, is no design [...]]]></description>
			<content:encoded><![CDATA[<p>Design is not dress-up:</p>
<blockquote><p>
A designer who wants to achieve good design must not regard himself as an artist who, according to taste and aesthetics, is merely dressing-up products with a lastminute garment.
</p></blockquote>
<p>and don&#8217;t mistake gloss for design:</p>
<blockquote><p>
To use design to impress, to polish things up, to make them chic, is no design at all. This is packaging.
</p></blockquote>
<p>Technical specifications in isolation are not good design:</p>
<blockquote><p>
The majority of products that we encounter in our day-to-day lives scream for attention or try to impress us with their magnificence or miniscule size. These objects try to dictate our relationships with them. Good design creates powerful long-lasting relationships with products as good design creates objects with balanced proportions
</p></blockquote>
<p>Sustainable design:</p>
<blockquote><p>
There is an increasing and irreversible shortage of natural resources: raw materials, energy, food, and land. This must compel us to rationalise, especially in design. The times of thoughtless design, which can only flourish in times of thoughtless production for thoughtless consumption, are over. We cannot afford any more thoughtlessness.
</p></blockquote>
<p>Source: <a href="http://www.vitsoe.com/store/assets/files/823/original/VITSOE_Dieter_Rams_speech.pdf">Dieter Rams: Design by Vitsœ</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://keyes.ie/rams-design-by-vits/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apologies</title>
		<link>http://keyes.ie/apologies/</link>
		<comments>http://keyes.ie/apologies/#comments</comments>
		<pubDate>Thu, 29 Mar 2012 07:45:16 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Link]]></category>
		<category><![CDATA[apology]]></category>
		<category><![CDATA[smugmug]]></category>

		<guid isPermaLink="false">http://keyes.ie/?p=718</guid>
		<description><![CDATA[In a world of terrible apologies, I like the honesty of SmugMug&#8217;s to Valerie Schooling: Sometimes you see the dumb things companies say and you wonder, “What were they thinking?” I never imagined that happening to us, but we did something so dumb in a blog post, we’re now looking at each other blankly and [...]]]></description>
			<content:encoded><![CDATA[<p>In a world of terrible apologies, I like the honesty of <a href="http://news.smugmug.com/2012/03/28/what-were-we-thinking/">SmugMug&#8217;s</a> to <a href="http://www.valerieschoolinggallery.com/">Valerie Schooling</a>:</p>
<blockquote><p>Sometimes you see the dumb things companies say and you wonder, “What were they thinking?”</p>
<p>I never imagined that happening to us, but we did something so dumb in a blog post, we’re now looking at each other blankly and asking, what were we thinking?</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://keyes.ie/apologies/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Responsive Panacea</title>
		<link>http://keyes.ie/a-responsive-panacea/</link>
		<comments>http://keyes.ie/a-responsive-panacea/#comments</comments>
		<pubDate>Sun, 25 Mar 2012 21:56:46 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Link]]></category>
		<category><![CDATA[alex-morris]]></category>
		<category><![CDATA[responsive]]></category>
		<category><![CDATA[web-design]]></category>

		<guid isPermaLink="false">http://keyes.ie/?p=713</guid>
		<description><![CDATA[Worst of all, beyond any complaints you may have about alternate versions of sites &#8211; with responsive its’s a one way street. You can’t opt out of the media query that’s driving this thing. And that really sucks, so you better be pretty sure you can pull this thing off sonny Jim. A Responsive Panacea [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>Worst of all, beyond any complaints you may have about alternate versions of sites &#8211; with responsive its’s a one way street. You can’t opt out of the media query that’s driving this thing. And that really sucks, so you better be pretty sure you can pull this thing off sonny Jim.</p></blockquote>
<p><a href="http://mistermorris.tumblr.com/post/19679735499" title="A Responsive Panacea &mdash; Alex Morris">A Responsive Panacea &ndash; Alex Morris</a></p>
]]></content:encoded>
			<wfw:commentRss>http://keyes.ie/a-responsive-panacea/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introducing python-intercom</title>
		<link>http://keyes.ie/introducing-python-intercom/</link>
		<comments>http://keyes.ie/introducing-python-intercom/#comments</comments>
		<pubDate>Thu, 22 Mar 2012 10:35:54 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Releases]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[intercom]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://keyes.ie/?p=700</guid>
		<description><![CDATA[python-intercom is a python interface to Intercom’s API. It is designed to (almost) mirror the behaviour of python-ruby. Here is an example of it in action: from intercom import Impression impression = Impression.create(email='somebody@example.com') from intercom import User user = User.find(email='somebody@example.com') For more details you can check out the project repository, and the pypi page.]]></description>
			<content:encoded><![CDATA[<p><img src="http://keyes.ie/wp-content/uploads/2012/03/intercom_python.png" alt="" title="intercom_python" width="239" height="115" class="alignnone size-full wp-image-708" /></p>
<p><a href="http://keyes.ie/things/python-intercom">python-intercom</a> is a python interface to <a href="http://intercom.io">Intercom’s</a> <a href="http://docs.intercom.io/api">API</a>. It is designed to (almost) mirror the behaviour of <a href="https://github.com/intercom/intercom-ruby/">python-ruby</a>.</p>
<p>Here is an example of it in action:</p>
<pre>from intercom import Impression
impression = Impression.create(email='somebody@example.com')

from intercom import User
user = User.find(email='somebody@example.com')
</pre>
<p>For more details you can check out the <a href="https://github.com/jkeyes/python-intercom">project repository</a>, and the <a href="http://pypi.python.org/pypi/python-intercom">pypi page</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://keyes.ie/introducing-python-intercom/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<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>
	</channel>
</rss><!-- Dynamic page generated in 1.227 seconds. --><!-- Cached page generated by WP-Super-Cache on 2012-05-15 10:10:46 -->

