<?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:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>iamnotagoodartist</title>
	
	<link>http://iamnotagoodartist.com</link>
	<description>a blog of creativity</description>
	<lastBuildDate>Sun, 05 Feb 2012 19:06:33 +0000</lastBuildDate>
	<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/iamnotagoodartistentries" /><feedburner:info uri="iamnotagoodartistentries" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/</creativeCommons:license><feedburner:emailServiceId>iamnotagoodartistentries</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>rocktronica.github.com</title>
		<link>http://feedproxy.google.com/~r/iamnotagoodartistentries/~3/9Tzk5gGoqiY/</link>
		<comments>http://iamnotagoodartist.com/web/rocktronica-github-com/#comments</comments>
		<pubDate>Sun, 05 Feb 2012 18:16:06 +0000</pubDate>
		<dc:creator>tommy</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[json]]></category>

		<guid isPermaLink="false">http://iamnotagoodartist.com/?p=1720</guid>
		<description><![CDATA[This is my little attempt at a needlessly prettified GitHub profile&#8230; It&#8217;s mostly so I can rest easy knowing my pages apps&#8217; root is something that will tie them all together hierarchically. http://rocktronica.github.com/ Technical Tidbits Apple-ish black linen texture from &#8230; <a href="http://iamnotagoodartist.com/web/rocktronica-github-com/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://rocktronica.github.com/"><img src="http://iamnotagoodartist.com/wp-content/uploads/2012/02/rocktronica.github.com_.jpg" alt="" title="rocktronica.github.com" width="680" height="450" class="alignnone size-full wp-image-1733" /></a></p>
<p><span id="more-1720"></span></p>
<p>This is my little attempt at a needlessly prettified GitHub profile&#8230; It&#8217;s mostly so I can rest easy knowing my <a href="http://pages.github.com/">pages</a> apps&#8217; root is something that will tie them all together hierarchically.</p>
<p><a href="http://rocktronica.github.com/">http://rocktronica.github.com/</a></p>
<h2>Technical Tidbits</h2>
<ul>
<li>Apple-ish black linen texture from <a href="http://subtlepatterns.com/?p=585">Subtle Patterns</a> lazily base64&#8242;d right into style.css</li>
<li>Lots of pseudo selecting table elements to get them to look nice</li>
<li><a href="http://www.google.com/webfonts/specimen/Bitter">Bitter</a> serif font via Google Webfonts</li>
<li>Uses <a href="http://jquery.com/">jQuery</a>, <a href="http://html5boilerplate.com/">h5bp</a>, <a href="https://github.com/douglascrockford/JSON-js">json2</a>, <a href="http://mustache.github.com/">mustache</a>, and <a href="http://leaverou.github.com/prefixfree/">-prefix-free</a></li>
<li>Most of the HTML and CSS written with <a href="http://rocktronica.github.com/tmpltr/">tmpltr</a></li>
<li>Message and Follow buttons are placebos that just link to the normal profile page because:
<ul>
<li>On the GH main site, URIs for following exist but are handled with Ajax and so don&#8217;t degrade. That&#8217;s probably rightfully a very low priority.</li>
<li>Messaging is handled with plaintext email addresses, normally only visible if you&#8217;re logged in. BUT their API shows them w/o authentication. I&#8217;m still hesitant about <code>mailto:</code> links being anywhere near me&#8230;</li>
</ul>
</li>
<li>Data stored w/ localStorage to hopefully minimize requests</li>
<li>Open your JS console to watch the async functions make their requests</li>
<li>URL params for testing other <code>user</code>s and <code>cache</code>.<br />
Ex: <a href="http://rocktronica.github.com/?user=github&#038;cache=false">http://rocktronica.github.com/?user=github&#038;cache=false</a></li>
</ul>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/iamnotagoodartistentries?a=9Tzk5gGoqiY:1KsXjuGcl0Q:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/iamnotagoodartistentries?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/iamnotagoodartistentries?a=9Tzk5gGoqiY:1KsXjuGcl0Q:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/iamnotagoodartistentries?i=9Tzk5gGoqiY:1KsXjuGcl0Q:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/iamnotagoodartistentries/~4/9Tzk5gGoqiY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://iamnotagoodartist.com/web/rocktronica-github-com/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://iamnotagoodartist.com/web/rocktronica-github-com/</feedburner:origLink></item>
		<item>
		<title>An Auto-Updating Data URI Text Editor</title>
		<link>http://feedproxy.google.com/~r/iamnotagoodartistentries/~3/8k0qlBNaeiA/</link>
		<comments>http://iamnotagoodartist.com/web/an-auto-updating-data-uri-text-editor/#comments</comments>
		<pubDate>Sun, 29 Jan 2012 21:26:34 +0000</pubDate>
		<dc:creator>tommy</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[data uri]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[text editor]]></category>

		<guid isPermaLink="false">http://iamnotagoodartist.com/?p=1689</guid>
		<description><![CDATA[tl;dr: Click this, type some stuff, watch the URL, and then come back if you&#8217;re curious as to what&#8217;s going on. Ok, quick recap: Data URIs allow for inline resource inclusion without additional HTTP requests. Among other things, this allows &#8230; <a href="http://iamnotagoodartist.com/web/an-auto-updating-data-uri-text-editor/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>tl;dr: Click <a href="data:text/html,&lt;body id='b'&gt;&lt;textarea spellcheck=%22false%22 id=%22t%22&gt;&lt;/textarea&gt;&lt;script&gt;var f, t=document.getElementById(%22t%22), b=document.body, v=t.value, c=parseInt(b.getAttribute(%22c%22)) || t.value.length;t.focus();document.title=t.value.split(%22\n%22)[0] || %22...%22;t.className=%22s%22;function updateUrl(){clearInterval(f);f=setTimeout(function(){if (v===t.value){return false;}t.className=%22%22;t.innerHTML=encodeURIComponent(t.value);var s=%22data:text/html,&lt;body id='b'%22;if (!!t.selectionStart){s +=%22 c='%22 + t.selectionStart + %22'%22;}s +=%22&gt;%22 + b.innerHTML;window.location.href=s;}, 500);}t.addEventListener(%22keyup%22, updateUrl);if (!!t.setSelectionRange){t.setSelectionRange(c,c);setTimeout(function(){t.setSelectionRange(c,c);}, 10);}&lt;/script&gt;&lt;style&gt;textarea{position: fixed;top: 0;left: 0;width: 100%;height: 100%;overflow: auto;margin: 0;padding: 10px;background: black;font: 14px/20px monospace;outline: none;border: none;box-sizing: border-box;cursor: wait;color: gray;}textarea.s{cursor: text;color: white;}&lt;/style&gt;&lt;!--http://iamnotagoodartist.com/web/an-auto-updating-data-uri-text-editor --&gt;">this</a>, type some stuff, watch the URL, and then come back if you&#8217;re curious as to what&#8217;s going on.</p>
<p><img src="http://iamnotagoodartist.com/wp-content/uploads/2012/01/datauritexteditor.jpg" alt="" title="datauritexteditor" width="680" height="450" class="alignnone size-full wp-image-1699" /></p>
<p><span id="more-1689"></span>Ok, quick recap:</p>
<ul>
<li><a href="http://en.wikipedia.org/wiki/Data_URI_scheme">Data URIs</a> allow for inline resource inclusion without additional HTTP requests. Among other things, this allows for <a href="data:text/html,Hello%20world.">writing content directly to the address bar</a>, and it&#8217;s the way my <a href="http://tmpltr.com/">tmpltr</a> app exports stuff.</li>
<li>HTML5 has a <code>contentEditable</code> attribute that can turn anything into an input.</li>
<li>And somebody clever (<a href="http://www.xanthir.com/">@tabatkins</a>, <a href="https://twitter.com/#!/paul_irish/status/163692631128424449">according to @paul_irish</a>) took to combining the two to make &#8220;<a href="https://news.ycombinator.com/item?id=3333155">the world&#8217;s smallest text editor</a>&#8220;:
<pre><a href="data:text/html,&lt;pre contenteditable&gt;%20&lt;/pre&gt;">data:text/html,&lt;pre contenteditable&gt;&lt;/pre&gt;</a></li>
</ul>
<p>I was pretty enamored by that and used a variant of it at work for awhile to jot down my notes during the day. Like all tinkerers, I couldn't leave well enough alone, and so here's my fancier but definitely-not-the-smallest-and-so-not-as-novel version:</p>
<p><script src="https://gist.github.com/1700623.js"> </script></p>
<p>Clickable:<br />
<a style="display:block;font:11px/15px monospace" href="data:text/html,&lt;body id='b'&gt;&lt;textarea spellcheck=%22false%22 id=%22t%22&gt;&lt;/textarea&gt;&lt;script&gt;var f, t=document.getElementById(%22t%22), b=document.body, v=t.value, c=parseInt(b.getAttribute(%22c%22)) || t.value.length;t.focus();document.title=t.value.split(%22\n%22)[0] || %22...%22;t.className=%22s%22;function updateUrl(){clearInterval(f);f=setTimeout(function(){if (v===t.value){return false;}t.className=%22%22;t.innerHTML=encodeURIComponent(t.value);var s=%22data:text/html,&lt;body id='b'%22;if (!!t.selectionStart){s +=%22 c='%22 + t.selectionStart + %22'%22;}s +=%22&gt;%22 + b.innerHTML;window.location.href=s;}, 500);}t.addEventListener(%22keyup%22, updateUrl);if (!!t.setSelectionRange){t.setSelectionRange(c,c);setTimeout(function(){t.setSelectionRange(c,c);}, 10);}&lt;/script&gt;&lt;style&gt;textarea{position: fixed;top: 0;left: 0;width: 100%;height: 100%;overflow: auto;margin: 0;padding: 10px;background: black;font: 14px/20px monospace;outline: none;border: none;box-sizing: border-box;cursor: wait;color: gray;}textarea.s{cursor: text;color: white;}&lt;/style&gt;&lt;!--http://iamnotagoodartist.com/web/an-auto-updating-data-uri-text-editor --&gt;">data:text/html,&lt;body id='b'&gt;&lt;textarea spellcheck=%22false%22 id=%22t%22&gt;&lt;/textarea&gt;&lt;script&gt;var f, t=document.getElementById(%22t%22), b=document.body, v=t.value, c=parseInt(b.getAttribute(%22c%22)) || t.value.length;t.focus();document.title=t.value.split(%22\n%22)[0] || %22...%22;t.className=%22s%22;function updateUrl(){clearInterval(f);f=setTimeout(function(){if (v===t.value){return false;}t.className=%22%22;t.innerHTML=encodeURIComponent(t.value);var s=%22data:text/html,&lt;body id='b'%22;if (!!t.selectionStart){s +=%22 c='%22 + t.selectionStart + %22'%22;}s +=%22&gt;%22 + b.innerHTML;window.location.href=s;}, 500);}t.addEventListener(%22keyup%22, updateUrl);if (!!t.setSelectionRange){t.setSelectionRange(c,c);setTimeout(function(){t.setSelectionRange(c,c);}, 10);}&lt;/script&gt;&lt;style&gt;textarea{position: fixed;top: 0;left: 0;width: 100%;height: 100%;overflow: auto;margin: 0;padding: 10px;background: black;font: 14px/20px monospace;outline: none;border: none;box-sizing: border-box;cursor: wait;color: gray;}textarea.s{cursor: text;color: white;}&lt;/style&gt;&lt;!--http://iamnotagoodartist.com/web/an-auto-updating-data-uri-text-editor --&gt;</a></p>
<h2>Breakdown</h2>
<p>Mine uses a <code>textarea</code> instead of a <code>contenteditable &lt;pre&gt;</code>, since it's made to be fullscreen and thus doesn't need <code>contenteditable</code>'s auto-adjustment to variably dimensioned content. (Actually, the one regret is that my text editor now won't use any of the HTML5 spec and so is not as trendy... Sniffle, sniffle.)</p>
<p>So we've got a fixed and fullscreen input. We'll use its first line (if it has one) as the document title and bind a debounced* function to its <code>keyup</code> event. When the function executes successfully, we write a new URL using the existing body's HTML, the input's encoded value, and its caret/selection position, and then we'll redirect the user to it, setting the caret position and repeating the process indefinitely.</p>
<p><small>* Debouncing is a method of rate limiting. It takes a time duration and waits that long after each firing to run, resetting and delaying execution if fired before the duration is up. Its more common sibling is throttling, which will run at most once per time duration while firing and will not reset.</small></p>
<h3>Unordered, Non-Narrative Findings</h3>
<ul>
<li>If the software and its data share the same limited storage mechanism, brevity must trump legacy support: no CSS3 vendor prefixes, not a lot of feature sniffing or graceful degradation, etc. All JS is vanilla and doesn't use external libraries.</li>
<li>Like local files, Data URIs are prohibited from a number of things for security reasons; cookies, localStorage/sessionStorage, and any history manipulation are out the window. Thus, there's no saving beyond the URL and updates happen with old-fashioned redirects instead of the cooler <a href=">https://developer.mozilla.org/en/DOM/Manipulating_the_browser_history"><code>pushState</code></a>.</li>
<li>I'm storing caret position as just a <code>c</code> attribute to save some bytes. There may be a better way to do it, and I'm not sure what the technical implications are for arbitrary attributes like that instead of, say, a <a href="http://dev.w3.org/html5/spec/global-attributes.html#embedding-custom-non-visible-data-with-the-data-attributes">data attribute</a>.</li>
<li>Dirty/clean save status is handled with a CSS class to gray out the text and use the <strong style="cursor:wait;">wait cursor</strong>. May be overkill.</span>
<li><code>textarea</code>s have both <code>value</code> and <code>innerHTML</code>. At init they are the same, but only <code>value</code> changes as the user interacts with it; no HTML is changed. Because we're using the body's <code>innerHTML</code> to rewrite the URL, we must set the input's <code>innerHTML</code> to its <code>value</code>, <code>encodeURIComponent</code>ed for safety.</li>
<li>Nobody will call the cops if you don't close your <code>body</code> tag.</li>
</ul>
<h4>Still Could Use...</h4>
<ul>
<li>Different browsers have different URL limits. Ideally, this would have some sort of reservoir meter.</li>
<li>Code and markup is properly escaped, but trying to save anything with <code>&lt;/textarea&gt;</code> will effectively close the input and bork all the text thereafter. It escapes me how to get around that at the moment...</li>
<li>Safari takes a couple microseconds to focus an element and won't allow caret setting while it's unfocused, so there's some awkward and redundant <code>setTimeout</code> stuff in there to give it some time. I'd like for that to be less crummy.</li>
</ul>
<h4>Unavoidable Gotchas</h4>
<ul>
<li><a href="http://caniuse.com/datauri">Data URIs aren't supported in IE</a>. Tested successfully in Chrome, Firefox, Safari, and Opera.</li>
<li>Undo and redo can't persist over redirect. (But, interestingly, you can use native back and forward to kind of view the text's history.)</li>
<li>Browsers can interpret Data URIs, yes, but most software won't automatically turn them into links like traditional HTTP URLs. So copy-and-pasting into chats will always have to be prefaced with "Hey, copypaste this into a new tab, k?"</li>
</ul>
<h2>How is this useful?</h2>
<p>Honestly? Probably only as an academic pursuit.</p>
<p>But try this: <a href="data:text/html,<body id='b'><textarea spellcheck=%22false%22 id=%22t%22></textarea><script>var f, t=document.getElementById(%22t%22), b=document.body, v=t.value, c=parseInt(b.getAttribute(%22c%22)) || t.value.length;t.focus();document.title=t.value.split(%22\n%22)[0] || %22...%22;t.className=%22s%22;function updateUrl(){clearInterval(f);f=setTimeout(function(){if (v===t.value){return false;}t.className=%22%22;t.innerHTML=encodeURIComponent(t.value);var s=%22data:text/html,<body id='b'%22;if (!!t.selectionStart){s +=%22 c='%22 + t.selectionStart + %22'%22;}s +=%22>%22 + b.innerHTML;window.location.href=s;}, 500);}t.addEventListener(%22keyup%22, updateUrl);if (!!t.setSelectionRange){t.setSelectionRange(c,c);setTimeout(function(){t.setSelectionRange(c,c);}, 10);}</script><br />
<style>textarea{position: fixed;top: 0;left: 0;width: 100%;height: 100%;overflow: auto;margin: 0;padding: 10px;background: black;font: 14px/20px monospace;outline: none;border: none;box-sizing: border-box;cursor: wait;color: gray;}textarea.s{cursor: text;color: white;}</style>
<p><!--http://iamnotagoodartist.com/web/an-auto-updating-data-uri-text-editor -->">open it up</a> and write something, copy the URL and paste it into another tab or browser. Your text persisted without a database, any external script, or proprietary Cloud gizmo. No legal order can cease it to exist, and you didn't even need an internet connection. I think that's pretty neat!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/iamnotagoodartistentries?a=8k0qlBNaeiA:RVWyNuJqvIs:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/iamnotagoodartistentries?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/iamnotagoodartistentries?a=8k0qlBNaeiA:RVWyNuJqvIs:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/iamnotagoodartistentries?i=8k0qlBNaeiA:RVWyNuJqvIs:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/iamnotagoodartistentries/~4/8k0qlBNaeiA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://iamnotagoodartist.com/web/an-auto-updating-data-uri-text-editor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://iamnotagoodartist.com/web/an-auto-updating-data-uri-text-editor/</feedburner:origLink></item>
		<item>
		<title>Shipped to the Internet</title>
		<link>http://feedproxy.google.com/~r/iamnotagoodartistentries/~3/njwatxK7uBI/</link>
		<comments>http://iamnotagoodartist.com/other/shipped-to-the-internet/#comments</comments>
		<pubDate>Sat, 28 Jan 2012 17:40:03 +0000</pubDate>
		<dc:creator>tommy</dc:creator>
				<category><![CDATA[Other]]></category>

		<guid isPermaLink="false">http://iamnotagoodartist.com/?p=1681</guid>
		<description><![CDATA[Font: Carton]]></description>
			<content:encoded><![CDATA[<p><a href="http://iamnotagoodartist.com/wp-content/uploads/2012/01/shippedtotheinternet.jpg"><img src="http://iamnotagoodartist.com/wp-content/uploads/2012/01/shippedtotheinternet-536x402.jpg" alt="" title="shippedtotheinternet" width="536" height="402" class="alignnone size-large wp-image-1682" /></a></p>
<p>Font: <a href="http://www.losttype.com/font/?name=carton">Carton</a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/iamnotagoodartistentries?a=njwatxK7uBI:eq4WnmWj2Yc:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/iamnotagoodartistentries?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/iamnotagoodartistentries?a=njwatxK7uBI:eq4WnmWj2Yc:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/iamnotagoodartistentries?i=njwatxK7uBI:eq4WnmWj2Yc:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/iamnotagoodartistentries/~4/njwatxK7uBI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://iamnotagoodartist.com/other/shipped-to-the-internet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://iamnotagoodartist.com/other/shipped-to-the-internet/</feedburner:origLink></item>
		<item>
		<title>Suits</title>
		<link>http://feedproxy.google.com/~r/iamnotagoodartistentries/~3/_ki8cyoct18/</link>
		<comments>http://iamnotagoodartist.com/other/suits/#comments</comments>
		<pubDate>Sun, 15 Jan 2012 03:46:35 +0000</pubDate>
		<dc:creator>tommy</dc:creator>
				<category><![CDATA[Other]]></category>

		<guid isPermaLink="false">http://iamnotagoodartist.com/?p=1677</guid>
		<description><![CDATA[My girlfriend and I are at the airport. There are men in nice suits there, waiting for their flights. &#8220;I want you to be so rich you can wear suits like those,&#8221; she says. &#8220;I want to be so rich &#8230; <a href="http://iamnotagoodartist.com/other/suits/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>My girlfriend and I are at the airport. There are men in nice suits there, waiting for their flights.</p>
<p>&#8220;I want you to be so rich you can wear suits like those,&#8221; she says.</p>
<p>&#8220;I want to be so rich I never have to,&#8221; I respond.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/iamnotagoodartistentries?a=_ki8cyoct18:z_T0-9ZDemk:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/iamnotagoodartistentries?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/iamnotagoodartistentries?a=_ki8cyoct18:z_T0-9ZDemk:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/iamnotagoodartistentries?i=_ki8cyoct18:z_T0-9ZDemk:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/iamnotagoodartistentries/~4/_ki8cyoct18" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://iamnotagoodartist.com/other/suits/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://iamnotagoodartist.com/other/suits/</feedburner:origLink></item>
		<item>
		<title>Add CSS Bookmarklet</title>
		<link>http://feedproxy.google.com/~r/iamnotagoodartistentries/~3/ewThxdDfmTY/</link>
		<comments>http://iamnotagoodartist.com/web/add-css-bookmarklet/#comments</comments>
		<pubDate>Sat, 07 Jan 2012 21:13:09 +0000</pubDate>
		<dc:creator>tommy</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[bookmarklets]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[smashing magazine]]></category>

		<guid isPermaLink="false">http://iamnotagoodartist.com/?p=1669</guid>
		<description><![CDATA[Here&#8217;s a quick little hack I put together to debug CSS on browsers w/o DOM inspectors, Firebug, etc. It&#8217;s pretty useful if you ever need to figure out why a co-worker&#8217;s Safari 5.1 on Lion refuses to acknowledge #fff on &#8230; <a href="http://iamnotagoodartist.com/web/add-css-bookmarklet/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://rocktronica.github.com/Add-CSS-Bookmarklet/"><img src="http://iamnotagoodartist.com/wp-content/uploads/2012/01/addcss.jpg" alt="" title="Add CSS Bookmarklet" width="700" height="395" class="alignnone size-full wp-image-1670" /></a></p>
<p><span id="more-1669"></span></p>
<p>Here&#8217;s a quick little hack I put together to debug CSS on browsers w/o DOM inspectors, Firebug, etc. It&#8217;s pretty useful if you ever need to figure out why a co-worker&#8217;s Safari 5.1 on Lion refuses to acknowledge <code>#fff</code> on CSS3&#8242;d nav links. I mean, seriously, wtf, man.</p>
<p>Uses jQuery and the skeleton bookmarklet code from the recently updated article I wrote for Smashing awhile back, <a href="http://coding.smashingmagazine.com/2010/05/23/make-your-own-bookmarklets-with-jquery/">Make Your Own Bookmarklets With jQuery</a>.</p>
<p>Like most things, it is not unlike other similar things, but it is my thing, so I like it.<br />
<small>And I don&#8217;t even care if that&#8217;s a run-on sentence.</small></p>
<p><strong>Link:</strong> <a href="http://rocktronica.github.com/Add-CSS-Bookmarklet/">http://rocktronica.github.com/Add-CSS-Bookmarklet/</a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/iamnotagoodartistentries?a=ewThxdDfmTY:ylzClUTefmQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/iamnotagoodartistentries?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/iamnotagoodartistentries?a=ewThxdDfmTY:ylzClUTefmQ:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/iamnotagoodartistentries?i=ewThxdDfmTY:ylzClUTefmQ:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/iamnotagoodartistentries/~4/ewThxdDfmTY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://iamnotagoodartist.com/web/add-css-bookmarklet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://iamnotagoodartist.com/web/add-css-bookmarklet/</feedburner:origLink></item>
		<item>
		<title>Seems Pretty Fair</title>
		<link>http://feedproxy.google.com/~r/iamnotagoodartistentries/~3/lhihnuIUvXM/</link>
		<comments>http://iamnotagoodartist.com/other/seems-pretty-fair/#comments</comments>
		<pubDate>Sat, 07 Jan 2012 02:28:58 +0000</pubDate>
		<dc:creator>tommy</dc:creator>
				<category><![CDATA[Other]]></category>
		<category><![CDATA[what page of google am i on]]></category>

		<guid isPermaLink="false">http://iamnotagoodartist.com/?p=1662</guid>
		<description><![CDATA[You know you&#8217;ve made it when some shady bro has a budget of potentially three figures to clone something you&#8217;ve made. Oh, did I say &#8220;made it&#8221;? I meant &#8220;still exist.&#8221; I totally still exist.]]></description>
			<content:encoded><![CDATA[<p>You know you&#8217;ve made it when some shady bro has a budget of potentially three figures to clone something you&#8217;ve made. <span id="more-1662"></span></p>
<p><a href="http://www.freelancer.com/projects/PHP-Javascript/whatpageofsearchamion-com-script.html"><img src="http://iamnotagoodartist.com/wp-content/uploads/2012/01/wposio_clone-528x536.png" alt="" title="wposio_clone" width="528" height="536" class="alignnone size-large wp-image-1663" /></a></p>
<p>Oh, did I say &#8220;made it&#8221;? I meant &#8220;still exist.&#8221;</p>
<p>I <em>totally</em> still exist.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/iamnotagoodartistentries?a=lhihnuIUvXM:7S3uMs7Lpug:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/iamnotagoodartistentries?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/iamnotagoodartistentries?a=lhihnuIUvXM:7S3uMs7Lpug:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/iamnotagoodartistentries?i=lhihnuIUvXM:7S3uMs7Lpug:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/iamnotagoodartistentries/~4/lhihnuIUvXM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://iamnotagoodartist.com/other/seems-pretty-fair/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://iamnotagoodartist.com/other/seems-pretty-fair/</feedburner:origLink></item>
		<item>
		<title>New Blog Theme</title>
		<link>http://feedproxy.google.com/~r/iamnotagoodartistentries/~3/zAv87ZPwpd4/</link>
		<comments>http://iamnotagoodartist.com/web/new-blog-theme/#comments</comments>
		<pubDate>Sat, 31 Dec 2011 23:27:37 +0000</pubDate>
		<dc:creator>tommy</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://iamnotagoodartist.com/?p=1601</guid>
		<description><![CDATA[I&#8217;ve been meaning to update my blog&#8217;s theme for a long time. I&#8217;ve had this current (well, the one before the current) one going for 2+ years. That&#8217;s way too long! Anyway, now it&#8217;s a super stripped down thing with &#8230; <a href="http://iamnotagoodartist.com/web/new-blog-theme/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been meaning to update my blog&#8217;s theme for a long time. I&#8217;ve had this current (well, the one before the current) one going for 2+ years. That&#8217;s <em>way</em> too long!</p>
<p><span id="more-1601"></span></p>
<p>Anyway, now it&#8217;s a super stripped down thing with almost everything that&#8217;s not important hidden. So, like, the opposite of what it was before:</p>
<p><a href="http://iamnotagoodartist.com/wp-content/uploads/2011/12/iamnotagoodartist3.jpg"><img src="http://iamnotagoodartist.com/wp-content/uploads/2011/12/iamnotagoodartist3-536x346.jpg" alt="" title="iamnotagoodartist3" width="536" height="346" class="alignnone size-large wp-image-1603" /></a></p>
<p>It may or may not stay this way.</p>
<p>Please let me know if anything looks completely wrong.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/iamnotagoodartistentries?a=zAv87ZPwpd4:_O9fGSzy1vU:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/iamnotagoodartistentries?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/iamnotagoodartistentries?a=zAv87ZPwpd4:_O9fGSzy1vU:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/iamnotagoodartistentries?i=zAv87ZPwpd4:_O9fGSzy1vU:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/iamnotagoodartistentries/~4/zAv87ZPwpd4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://iamnotagoodartist.com/web/new-blog-theme/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://iamnotagoodartist.com/web/new-blog-theme/</feedburner:origLink></item>
		<item>
		<title>tmpltr – a Realtime Tinkertool for JSON Templating</title>
		<link>http://feedproxy.google.com/~r/iamnotagoodartistentries/~3/mDvmUnucrYY/</link>
		<comments>http://iamnotagoodartist.com/web/tmpltr-a-realtime-tinkertool-for-json-templating/#comments</comments>
		<pubDate>Fri, 30 Dec 2011 03:40:53 +0000</pubDate>
		<dc:creator>tommy</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[ace]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[json]]></category>
		<category><![CDATA[mustache]]></category>
		<category><![CDATA[portfolio]]></category>
		<category><![CDATA[templating]]></category>
		<category><![CDATA[tmpltr]]></category>

		<guid isPermaLink="false">http://iamnotagoodartist.com/?p=1557</guid>
		<description><![CDATA[tl;dr: tmpltr is a jsFiddle clone for realtime JSON templating. (I read somewhere that if you can&#8217;t explain something to your grandma in words she understands, you don&#8217;t really understand it yourself. I tried to write this first part with &#8230; <a href="http://iamnotagoodartist.com/web/tmpltr-a-realtime-tinkertool-for-json-templating/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>tl;dr: <a href="http://tmpltr.com/">tmpltr</a> is a jsFiddle clone for realtime JSON templating.</p>
<p><a href="http://tmpltr.com/"><img src="http://iamnotagoodartist.com/wp-content/uploads/2011/12/tmpltr.jpg" alt="" title="tmpltr" width="536" height="401" class="alignnone size-full wp-image-1558" /></a></p>
<p><span id="more-1557"></span></p>
<p><em>(I read somewhere that if you can&#8217;t explain something to your grandma in words she understands, you don&#8217;t really understand it yourself. I tried to write this first part with that in mind&#8230;)</em></p>
<h2>On Building Homes</h2>
<p>Making content for the internet is not too different from, say, building a home.</p>
<p><strong>A home has <em>content</em>:</strong> people, their stuff, their pets<br />
<strong>It has <em>structure</em>:</strong> a floorplan with walls, doors, rooms<br />
<strong>And a home has <em>style</em>:</strong> paint, siding, fixtures, decor</p>
<p>You can similarly compartmentalize a website. Take the page of my site that shows this blog post as an example.</p>
<p><strong>The page has <em>content</em>:</strong> blog title, text, images<br />
<strong>It has <em>structure</em>:</strong> header, footer, sidebar, main article area<br />
<strong>And the page has <em>style</em>:</strong> fonts, colors, backgrounds</p>
<p>In both examples, the three components serve different purposes but combine to make the final product. This is called <a href="http://en.wikipedia.org/wiki/Separation_of_concerns">separation of concerns</a>, and it&#8217;s a handy consideration for efficiency and keeping your brain working well.</p>
<h2>Ok, Now to Get More Technical&#8230;</h2>
<p>Within the web development context, <a href="http://tmpltr.com/">tmpltr</a> is my attempt to streamline the process of combining and iterating on those three things, where data is JSON, structure is HTML with <a href="http://mustache.github.com/">mustache</a> templating, and style is plain old CSS.</p>
<p>It is a realtime and auto-refreshing internet sandbox, akin to a <a href="http://jsfiddle.net/">handful</a> <a href="http://jsbin.com/">of</a> <a href="http://tinkerbin.com/">other</a> <a href="http://dabblet.com/">tools</a>.</p>
<p>It stands with reverence on the shoulders of its predecessors, mustache, and the <a href="http://ace.ajax.org/">ACE</a> project. It&#8217;s also mostly just for fun.</p>
<h3>Notes and Miscellanea</h3>
<p>Since I built this for myself, I went a little overboard with the HTML5 and CSS3. Not very practical, but I did learn some neat stuff&#8230;</p>
<h4>Exporting, Editing, and Saving</h4>
<p><img src="http://iamnotagoodartist.com/wp-content/uploads/2011/12/tmpltr_datauri.jpg" alt="" title="tmpltr_datauri" width="292" height="452" class="alignleft size-full wp-image-1590" /></p>
<p>So it could be hosted live by <a href="https://github.com/">Github</a>, I wanted everything to run client-side with JavaScript, so, instead of saving to a database, the export function constructs a <a href="https://developer.mozilla.org/en/data_URIs">data URI</a> with the rendered content visible and the inputs in a hidden form*. On &#8220;page&#8221; load, a link is injected into the page via JavaScript from tmpltr that, on click, submits the form. </p>
<p><small>* This approach is more verbose than sending just the necessary, minimal data and re-rendering with mustache, but it will work <em>independently</em> of any external JavaScript.</small></p>
<p>Now, because there&#8217;s nothing server-side, the form has to submit with GET instead of POST, with all the data as parameters in the URL. tmpltr will restore state from those params and, <a href="http://caniuse.com/history">if the browser allows</a>, clean the URL back to its default state, as if the form had submited with POST.</p>
<p>It&#8217;s a pretty fun exercise but has its shortcomings. <a href="http://caniuse.com/#search=data%20url">IE doesn&#8217;t fully support data URIs</a> and all browsers have different length limits on what they&#8217;ll allow.</p>
<p>All updates are also saved locally to the browser with localStorage as you type. You can work on something, close the browser, restart your computer, and it&#8217;ll still be there when you get back to it. This is an awesome technique for any kind of form and ought to be the poster child for <a href="http://en.wikipedia.org/wiki/Progressive_enhancement">progressive enhancement</a>.</p>
<p><a href="http://iamnotagoodartist.com/wp-content/uploads/2011/12/tmpltr_dropit.jpg"><img src="http://iamnotagoodartist.com/wp-content/uploads/2011/12/tmpltr_dropit.jpg" alt="" title="tmpltr_dropit" width="280" height="220" class="alignright size-full wp-image-1576" /></a> </p>
<h4>Reading Files</h4>
<p>In Chrome or Firefox, you can drag <code>.JSON</code>, <code>.HTML</code>, and/or <code>.CSS</code> files into tmpltr to load them into their respective inputs. </p>
<p>The browser API isn&#8217;t very intuitive, but it&#8217;s shocking how few lines of code are needed to read files natively in the browser.</p>
<h3>Other Lessons Learned</h3>
<ul>
<li>All good browsers will understand that <code>div[role="input"]</code> is a CSS selector but few of them will allow more arbitrary properties like <code>div[view="split"]</code>.</li>
<li><del datetime="2012-01-28T22:48:25+00:00">Github pages don&#8217;t like folders that start with <code>_</code>, even if you think it looks cooler that way.</del><br /><ins datetime="2012-01-28T22:48:25+00:00">Turns out <a href="http://pages.github.com/#using_jekyll_for_complex_layouts"><code>_subfolders</code> can be enabled by disabling Jekyll</a>. Lesson learned!</ins></li>
<li>You can exclude Google Analytics via cookie, and you can <a href="https://github.com/rocktronica/tmpltr/blob/gh-pages/js/analytics.js">set that conditionally with a URL param</a>.</li>
<li>HTML5 apps are inherently bad at SEO. Verify your meta and add some hidable static HTML to be 100% sure.</li>
<li>Non-essential CSS3 stuff is well served by Lea Verou&#8217;s <a href="http://leaverou.github.com/prefixfree/">Prefix Free</a> project. If it&#8217;s non-non-essential and can&#8217;t stand a FUOC, you <em>may</em> be relying too heavily on CSS3.</li>
<li>CSS media queries for resizing the inputs for bigger windows. Pretty quick and dirty.</li>
<li>Browsers will automatically inject the presumable elements into dynamically created iFrames w/o a <code>src</code> attribute, and, since there&#8217;re no cross-domain restrictions here, you can shimmy down the DOM and get whatever you need.</li>
<li>Valid JSON requires names be wrapped with quotes, unlike how we&#8217;re used to writing objects in JavaScript. Trying to parse that invalid JSON will error out, BUT you can wrap the whole shebang with ( ) and <code>eval()</code> it as a fallback.</li>
</ul>
<h2>Holler</h2>
<p>I think this is a fun little project and I&#8217;m proud of how it turned out. If you have any questions or requests, let me know. Better yet, fork it on Github and add it yourself. I would very much like some community involvement on it.</p>
<p>Admittedly, also, I may have spent almost as much time with this blog post trying to explain what tmpltr does as I did programming it.</p>
<p>Not really. Pretty dang close though.</p>
<p><strong>Link 1:</strong> <a href="http://tmpltr.com/">http://tmpltr.com/</a>, which redirects to&#8230;<br />
<strong>Link 2:</strong> <a href="http://rocktronica.github.com/tmpltr/">http://rocktronica.github.com/tmpltr/</a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/iamnotagoodartistentries?a=mDvmUnucrYY:TR0NSq8QKxo:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/iamnotagoodartistentries?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/iamnotagoodartistentries?a=mDvmUnucrYY:TR0NSq8QKxo:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/iamnotagoodartistentries?i=mDvmUnucrYY:TR0NSq8QKxo:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/iamnotagoodartistentries/~4/mDvmUnucrYY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://iamnotagoodartist.com/web/tmpltr-a-realtime-tinkertool-for-json-templating/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://iamnotagoodartist.com/web/tmpltr-a-realtime-tinkertool-for-json-templating/</feedburner:origLink></item>
		<item>
		<title>Tacos for Dinner</title>
		<link>http://feedproxy.google.com/~r/iamnotagoodartistentries/~3/fInfTOvoBx8/</link>
		<comments>http://iamnotagoodartist.com/web/tacos-for-dinner/#comments</comments>
		<pubDate>Sun, 20 Nov 2011 08:30:07 +0000</pubDate>
		<dc:creator>tommy</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[json]]></category>
		<category><![CDATA[modernizr]]></category>
		<category><![CDATA[mustache]]></category>
		<category><![CDATA[tacos for dinner]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://iamnotagoodartist.com/?p=1540</guid>
		<description><![CDATA[Here&#8217;s a stupid thing I made. It&#8217;s like a screensaver, I guess, but in a browser&#8230; and with tweets about tacos flying out of a swinging taco, oh, and also the tweets are on tortilla chips and the background is &#8230; <a href="http://iamnotagoodartist.com/web/tacos-for-dinner/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://tacosfordinner.com/"><img src="http://iamnotagoodartist.com/wp-content/uploads/2011/11/tacosfordinner.jpg" alt="Tacos For Dinner" title="Tacos For Dinner" width="536" height="401" class="alignnone size-full wp-image-1541" /></a></p>
<p>Here&#8217;s a stupid thing I made. It&#8217;s like a screensaver, I guess, but in a browser&#8230; and with tweets about tacos flying out of a swinging taco, oh, and also the tweets are on tortilla chips and the background is parallaxed taco ingredients.</p>
<p>Just click: <a href="http://tacosfordinner.com/">http://tacosfordinner.com/</a></p>
<p><span id="more-1540"></span></p>
<h2>Stack, Tech, etc</h2>
<ul>
<li>Some markup from <a href="http://html5boilerplate.com/">HTML5 Boilerplate</a></li>
<li>Data from Twitter&#8217;s <a href="https://dev.twitter.com/docs/api/1/get/search">GET Search API</a></li>
<li><a href="http://mustache.github.com/">{{ mustache }}</a> templating JSON data</li>
<li>Nominal <a href="http://www.modernizr.com/">Modernizr</a> degradation attempt</li>
<li><a href="http://www.google.com/webfonts/specimen/Gloria+Hallelujah">Gloria Hallelujah</a> font served with Google Web Fonts</li>
<li>Imagery drawn in Flash</li>
<li><a href="http://tacosfordinner.com/images/sprite.png">CSS sprite</a> made with <a href="http://www.spritecow.com/">Sprite Cow</a></li>
<li>Standalone, homescreen mode for iDevices. Not perfect, but okay.</li>
<li>ASCII art in source</li>
</ul>
<p>Originally needlessly written in <a href="http://nodejs.org/">Node</a> but rewritten to just be <a href="http://tacosfordinner.com/javascript.js">normal JavaScript</a>.</p>
<p>Works best in Webkit browsers. Does okay in Firefox* if you&#8217;ve got a lot of memory. Obviously doesn&#8217;t work in browsers without good CSS3 support, but should degrade anticlimactically.</p>
<p>* Oddly enough, I wrote the CSS with Firefox and had animations running on pseudo-elements, but it turns out that isn&#8217;t supported in Webkit. By the time I figured that out and started worrying about semantics, I decided it was time to throw in the towel. Anyway, the taco image has some super minor parallaxing in Firefox.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/iamnotagoodartistentries?a=fInfTOvoBx8:dUK7gNxXHoI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/iamnotagoodartistentries?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/iamnotagoodartistentries?a=fInfTOvoBx8:dUK7gNxXHoI:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/iamnotagoodartistentries?i=fInfTOvoBx8:dUK7gNxXHoI:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/iamnotagoodartistentries/~4/fInfTOvoBx8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://iamnotagoodartist.com/web/tacos-for-dinner/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://iamnotagoodartist.com/web/tacos-for-dinner/</feedburner:origLink></item>
		<item>
		<title>“My Name Is Tommy” Portfolio Refresh</title>
		<link>http://feedproxy.google.com/~r/iamnotagoodartistentries/~3/c4UUxxuEJu4/</link>
		<comments>http://iamnotagoodartist.com/web/my-name-is-tommy-portfolio-refresh/#comments</comments>
		<pubDate>Sat, 13 Aug 2011 02:04:03 +0000</pubDate>
		<dc:creator>tommy</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[json]]></category>
		<category><![CDATA[mustache]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[portfolio]]></category>

		<guid isPermaLink="false">http://iamnotagoodartist.com/?p=1532</guid>
		<description><![CDATA[Updated my portfolio after a year of stagnation. It&#8217;s a little more complicated than it needed to be; I was mostly just playing around with some new stuff. Tech Notes Borderline gratuitous, progressively enhanced CSS3 transitions with Modernizr Markup and &#8230; <a href="http://iamnotagoodartist.com/web/my-name-is-tommy-portfolio-refresh/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://mynameistommy.com/" target="_blank"><img src="http://iamnotagoodartist.com/wp-content/uploads/2011/08/mynameistommy2.jpg" alt="My Name is Tommy" title="My Name is Tommy" width="536" height="400" class="alignnone size-full wp-image-1533" /></a></p>
<p>Updated my portfolio after a year of stagnation. It&#8217;s a little more complicated than it needed to be; I was mostly just playing around with some new stuff.</p>
<p><span id="more-1532"></span></p>
<h2>Tech Notes</h2>
<ul>
<li>Borderline gratuitous, progressively enhanced CSS3 transitions with <a href="http://www.modernizr.com/">Modernizr</a></li>
<li>Markup and CSS based on <a href="http://html5boilerplate.com/">HTML5 Boilerplate</a></li>
<li>Data stored as JSON and templated with <a href="http://mustache.github.com/">{{ mustache }}</a> using PHP and JS</li>
<li><a href="http://yoworks.com/eau_naturelle/">Eau Naturelle Sans</a> font by <a href="http://yoworks.com/">YOWorks</a>, found via <a href="http://awesome-fontstacks.com/bundles/499-naturelle">Awesome Fontstacks</a></li>
<li><a href="http://haacked.com/archive/2007/09/11/honeypot-captcha.aspx">Honeypotted</a> contact form (&#8230;we&#8217;ll see how well it works)</li>
<li>Custom modal windows</li>
<li>Illegible Tommy handwriting</li>
</ul>
<p><strong>URL:</strong> <a href="http://mynameistommy.com/" target="_blank">http://mynameistommy.com/</a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/iamnotagoodartistentries?a=c4UUxxuEJu4:d0QVcHmArlk:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/iamnotagoodartistentries?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/iamnotagoodartistentries?a=c4UUxxuEJu4:d0QVcHmArlk:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/iamnotagoodartistentries?i=c4UUxxuEJu4:d0QVcHmArlk:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/iamnotagoodartistentries/~4/c4UUxxuEJu4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://iamnotagoodartist.com/web/my-name-is-tommy-portfolio-refresh/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://iamnotagoodartist.com/web/my-name-is-tommy-portfolio-refresh/</feedburner:origLink></item>
	</channel>
</rss><!-- Dynamic page generated in 0.436 seconds. --><!-- Cached page generated by WP-Super-Cache on 2012-02-05 13:06:51 -->

