<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	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/"
	>

<channel>
	<title>Karoshi Ethos &#187; Projects</title>
	<atom:link href="http://karoshiethos.com/category/projects/feed/" rel="self" type="application/rss+xml" />
	<link>http://karoshiethos.com</link>
	<description>Navigating the treacherous waters of interactive technology</description>
	<lastBuildDate>Fri, 11 May 2012 20:46:35 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>HTML5 Portfolio Project &#8211; Part 2</title>
		<link>http://karoshiethos.com/2012/04/24/html5-portfolio-project-part-2/</link>
		<comments>http://karoshiethos.com/2012/04/24/html5-portfolio-project-part-2/#comments</comments>
		<pubDate>Wed, 25 Apr 2012 01:30:23 +0000</pubDate>
		<dc:creator>jon</dc:creator>
				<category><![CDATA[How To]]></category>
		<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://karoshiethos.com/?p=593</guid>
		<description><![CDATA[Jump to Part 1 here. Today, we're going to define the data format for our portfolio. Back in 2005, XML was the last data format we were ever going to need, so that's what I used. It must have been second-to-last, because today, everyone seems to prefer JSON. I'm more than happy to commiserate about [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://karoshiethos.com/2012/04/23/html5_portfolio_p1/" title="HTML5 Portfolio Project - Part 1">Jump to Part 1 here.</a></p>
<p>Today, we're going to define the data format for our portfolio. Back in 2005, XML was the last data format we were ever going to need, so that's what I used. It must have been second-to-last, because today, everyone seems to prefer JSON. I'm more than happy to commiserate about the pros and cons over beers sometime, but I've moved on. We're doing this in JSON. Afterall, the portfolio is going to be driven by JavaScript; I doubt much justification is warranted.</p>
<h2>Don Your Information Architect Hat</h2>
<p>A portfolio is a list of projects. Each project has a bunch of properties like a title and a URL. Each project will also have some media (like pictures and/or video) and a brief, text-based description.</p>
<p>Here's what I came up with originally:</p>
<ul>
<li>client - eg. Microsoft</li>
<li>title - eg. Micro-site</li>
<li>description - eg. "Lorem ipsum..."</li>
<li>date - eg. January 2011</li>
<li>role - eg. developer</li>
<li>link - eg. http://microsoft.com/someMicroSite
<li>thumbnail - eg. thumbnails/3d-templates.jpg</li>
<li>media - eg. microsite/image1.jpg, microsite/image2.jpg, microsite/image3.jpg, microsite/video.mov</li>
</ul>
<p>All fairly straight-forward, I hope.</p>
<p>I did over-simplify the items in the media section. In order to make this work, we need to know a little more than just what URL has the media.</p>
<ul>
<li>title - eg. Image 1</li>
<li>icon type - eg. pic / video</li>
<li>content - eg. microsite/image1.jpg</li>
</ul>
<p>Turning all of this into JSON should be easy. First, double-check to make sure our names make sense and are consistent. ... Then, we need to decide whether it makes sense to encode items with more than one value as an Array or as an Object (hash). There are two spots in this project where this comes into play. One should be obvious. Can you spot the second?</p>
<ol>
<li>The list of projects</li>
<li>The list of media belonging to each project</li>
</ol>
<p>Above all else, it pays to be consistent. The two items above are similar enough that, whether we choose to store them in an Array or an Object, we'll probably want to use the same approach for both.</p>
<h3>Array is Best</h3>
<p>You'll want to use an Array when you have a list of things and their order matters. We want to display projects in a specific order, so let's use an Array. That was easy! Wait...</p>
<h3>No, Object is Best</h3>
<p>You want to use an Object when you have a list of things and the order doesn't necessarily matter, and each item can be identified by some sort of unique key. An Array (a type of Object afterall) often does this automatically. It uses numeric keys.</p>
<p>Come to think of it, each of our projects will be accessible via a unique URL. And, hey, the media items will have URLs as well. But wait, we didn't show "url" anywhere in our list of properties. Where should it go? If I use an Object to store my list items, I could use the URL fragment as the key, or I could go back to the Array (preserving the order of my list) and add a "url" property to each item...</p>
<h3>Just Pick One Already</h3>
<p>Hopefully you're starting to see that there's no one right way to do this. I want to be able to control the order of my items, but I also need to access each item by a unique key (its URL). Here's a sample of what I think my data will look like (so far).</p>
<pre class="syntax brush-js">
[
  {
    &quot;url&quot;         : &quot;contact&quot;,
    &quot;client&quot;      : &quot;Email:&lt;br /&gt;jon@shovemedia.com&quot;,
    &quot;title&quot;       : &quot;contact info&quot;,
    &quot;description&quot; : &quot;content/contact.html&quot;,
    &quot;date&quot;        : &quot;01/01/2011&quot;,
    &quot;role&quot;        : &quot;developer&quot;,
    &quot;link&quot;        : &quot;mailto:jon@shovemedia.com?subject=New Business&quot;,
    &quot;thumbnail&quot;   : &quot;thumbnails/email.jpg&quot;,
    &quot;pics&quot;        : []
  },
  {
    &quot;url&quot;         : &quot;3D&quot;,
    &quot;client&quot;      : &quot;Photobiz&quot;,
    &quot;title&quot;       : &quot;3D Templates&quot;,
    &quot;description&quot; : &quot;content/3d.html&quot;,
    &quot;date&quot;        : &quot;01/01/2011&quot;,
    &quot;role&quot;        : &quot;developer&quot;,
    &quot;link&quot;        : &quot;http://photobiz.com&quot;,
    &quot;thumbnail&quot;   : &quot;thumbnails/3d-templates.jpg&quot;,
    &quot;pics&quot;        : [
            {
              &quot;url&quot;     : &quot;video&quot;,
              &quot;title&quot;   : &quot;watch!&quot;,
              &quot;icon&quot;    : &quot;video&quot;,
              &quot;content&quot; : &quot;papervision/videoPlayer.html&quot;
            },
            {
              &quot;url&quot;     : &quot;image1&quot;,
              &quot;title&quot;   : &quot;Image 1&quot;,
              &quot;icon&quot;    : &quot;pic&quot;,
              &quot;content&quot; : &quot;papervision/image1.jpg&quot;
            }
          ]
  }
]
</pre>
<p>Most of this is identical to the XML format I've been using. I've introduced one small change for the "description" field. Rather than trying to embed HTML within a JSON document (and spending a tutorial or three to explain it), I'm going to place that in an external document and load it on request. That's "lazy initialization" for the initiated.</p>
<h2>Stay Tuned:</h2>
<p>In the next episode, we'll decide how best to organize everything into folders at the file system level. If you take a close look at the JSON above, you'll should be able to spot a hint or two in some of the example values that contain file paths.</p>
]]></content:encoded>
			<wfw:commentRss>http://karoshiethos.com/2012/04/24/html5-portfolio-project-part-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HTML5 Portfolio Project &#8211; Part 1</title>
		<link>http://karoshiethos.com/2012/04/23/html5_portfolio_p1/</link>
		<comments>http://karoshiethos.com/2012/04/23/html5_portfolio_p1/#comments</comments>
		<pubDate>Mon, 23 Apr 2012 17:12:50 +0000</pubDate>
		<dc:creator>jon</dc:creator>
				<category><![CDATA[How To]]></category>
		<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://karoshiethos.com/?p=587</guid>
		<description><![CDATA[Introduction I built a Flash-based portfolio back in 2005. It was itself a nice example of the kind of work that kept new projects coming: back-button &#038; bookmarking support, raw content visible to Google &#038; non-Flash browsers, Google Analytics tracking, easily updatable via an XML file, etc. All at a time when most people believed [...]]]></description>
			<content:encoded><![CDATA[<h2>Introduction</h2>
<p>I built <a href="http://shovemedia.com/2006portfolio" target="_blank">a Flash-based portfolio</a> back in 2005. It was itself a nice example of the kind of work that kept new projects coming: back-button & bookmarking support, raw content visible to Google & non-Flash browsers, Google Analytics tracking, easily updatable via an XML file, etc. All at a time when most people believed it couldn't be done. For better or worse, it's functional enough that it <a href="http://shovemedia.com/2012portfolio" target="_blank">still drives my portfolio today</a>. </p>
<p>In the seven years since, browsers have done a great deal to catch up. Canvas, web fonts, and CSS enhancements have expanded the possibilities so that I'm confident I can rebuild the whole thing in HTML5. I still get compliments on the minimalist design, and I think I'd get even more if it worked on iPads and iPhones. <img src='http://karoshiethos.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>This move is long overdue, and I've decided, not only does it make sense to open source the final template, but there's value in letting you follow my <em>process</em>. I <em>will</em> make mistakes, but I'll probably learn something from them, and in turn, so might you.</p>
<h2>The Plan</h2>
<p>We won't be doing any coding today. Instead, I'll start where all projects ought to start: with a plan. The numbers in parenthesis represent the estimated number of hours required.</p>
<ul>
<li>(1) Project Plan</li>
<li>(1) Define JSON format</li>
<li>(1) Assemble project file structure</li>
<li>(4) Scale transition</li>
<li>(4) Navigation</li>
<li>(4) Canvas-based Tooltip</li>
<li>(6) Text in circle</li>
<li>(3) Media Player (video)</li>
<li>(2) Background gradient effect</li>
<li>(4) Preloader animation</li>
<li>(1) CSS / media queries</li>
<li>(1) Google Analytics integration</li>
<li>(1) Fonts (Typekit?)</li>
<li>(8) Bug Fixes</li>
</ul>
<p><strong>Total: 41 hours</strong></p>
<p>These estimates don't include the time required to write up the accompanying blog-posts or answer your questions. That's probably another 15-20 hours. In addition, I usually multiply my initial estimate by two to account for the Murphy-factor. Also, I've got three other projects right now, and this isn't the most important, so it's going to take a lot longer than a week. Let's schedule launch for June 1st, that <a href="http://www.quotationspage.com/quote/723.html" title="Douglas Adams Quote" target="_blank">sounds nice, doesn't it</a>?</p>
<h2>Stay Tuned:</h2>
<p>In the next episode, we'll define a JSON format for each project in our portfolio and start thinking about how those will get transformed in to richer JavaScript structures and HTML elements.</p>
]]></content:encoded>
			<wfw:commentRss>http://karoshiethos.com/2012/04/23/html5_portfolio_p1/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>ClipStation Clipboard Writer 2.0 Released</title>
		<link>http://karoshiethos.com/2009/07/12/clipstation-clipboard-writer-20-released/</link>
		<comments>http://karoshiethos.com/2009/07/12/clipstation-clipboard-writer-20-released/#comments</comments>
		<pubDate>Mon, 13 Jul 2009 00:55:57 +0000</pubDate>
		<dc:creator>Rob Ruchte</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[ClipStation]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Kung-Foo]]></category>
		<category><![CDATA[SWFObject]]></category>

		<guid isPermaLink="false">http://karoshiethos.com/?p=408</guid>
		<description><![CDATA[ClipStation is a free lightweight solution for writing to your user’s clipboard from an HTML page. Using a small SWF that is embedded dynamically via JavaScript, you can pass an unlimited number of content clips onto the clipboard. ClipStation is designed to be lightweight, flexible, and easy to implement. What makes ClipStation different from other [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://thirdpartylabs.com/clipstation/">ClipStation</a> is a free lightweight solution for writing to your user’s clipboard from an HTML page. Using a small SWF that is embedded dynamically via JavaScript, you can pass an unlimited number of content clips onto the clipboard.</p>
<p>ClipStation is designed to be lightweight, flexible, and easy to implement. What makes ClipStation different from other clipboard SWF solutions is the ability to decode HTML character entities, allowing you to pass complex HTML markup to the clipboard from within form elements, divs, pre tags, etc. We developed ClipStation for use on a widget sharing page we've implemented for a client. After looking around for a good lightweight cross-browser solution and coming up empty handed, we decided to build our own. We're now happy to offer it to you at the low, low price of free. </p>
<p>Version 2.0 includes changes to allow access to the clipboard in Flash Player 10. Adobe changed the security requirements for clipboard access in version 10 of the player; now a user action is required before a SWF may access the clipboard. Instead of using a single hidden instance of the ClipStation SWF, we embed an instance for every clip that the user clicks to perform the clipboard copy. A source distribution is available, so you can change the design to fit your needs.</p>
<p>More information and the release package can be found at <a href="http://thirdpartylabs.com/clipstation/">thirdpartylabs.com/clipstation/</a></p>
<p><a href="http://thirdpartylabs.com/clipstation/">»Download ClipStation 2.0</a></p>
]]></content:encoded>
			<wfw:commentRss>http://karoshiethos.com/2009/07/12/clipstation-clipboard-writer-20-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ClipStation Clipboard Writer 1.0 Released</title>
		<link>http://karoshiethos.com/2008/07/19/clipstation-clipboard-writer-10-released/</link>
		<comments>http://karoshiethos.com/2008/07/19/clipstation-clipboard-writer-10-released/#comments</comments>
		<pubDate>Sat, 19 Jul 2008 19:37:46 +0000</pubDate>
		<dc:creator>Rob Ruchte</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[ClipStation]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://karoshiethos.com/?p=23</guid>
		<description><![CDATA[ClipStation is a free lightweight solution for writing to your user’s clipboard from an HTML page. Using a single tiny (as small as 1.9KB) invisible SWF that is embedded dynamically via JavaScript, you can pass an unlimited number of content clips onto the clipboard. ClipStation is designed to be lightweight, flexible, and easy to implement. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://thirdpartylabs.com/clipstation/">ClipStation</a> is a free lightweight solution for writing to your user’s clipboard from an HTML page. Using a single tiny (as small as 1.9KB) invisible SWF that is embedded dynamically via JavaScript, you can pass an unlimited number of content clips onto the clipboard.</p>
<p>ClipStation is designed to be lightweight, flexible, and easy to implement. What makes ClipStation different from other clipboard SWF solutions is the ability to decode HTML character entities, allowing you to pass complex HTML markup to the clipboard from within form elements, divs, pre tags, etc. We developed ClipStation for use on a widget sharing page we've implemented for a client. After looking around for a good lightweight cross-browser solution and coming up empty handed, we decided to build our own. We're now happy to offer it to you at the low, low price of free. More information and the release package can be found at <a href="http://thirdpartylabs.com/clipstation/">thirdpartylabs.com/clipstation/</a></p>
<p><a href="http://thirdpartylabs.com/clipstation/">»Download ClipStation 1.0</a></p>
]]></content:encoded>
			<wfw:commentRss>http://karoshiethos.com/2008/07/19/clipstation-clipboard-writer-10-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

