<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>26AM Design Studio (Creative)</title>
	
	<link>http://www.26am.com</link>
	<description>Web Development, Graphic Design Blog</description>
	<lastBuildDate>Fri, 29 Jan 2010 10:11:19 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/26am" /><feedburner:info uri="26am" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>What’s coming up on the 26AM blog?</title>
		<link>http://feedproxy.google.com/~r/26am/~3/2KeFVn7BRKk/</link>
		<comments>http://www.26am.com/blog/2010/01/29/whats-coming-up-on-the-26am-blog/#comments</comments>
		<pubDate>Fri, 29 Jan 2010 10:07:00 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[Design Thoughts]]></category>
		<category><![CDATA[Just for Fun]]></category>
		<category><![CDATA[The Hum of Life]]></category>
		<category><![CDATA[CES]]></category>
		<category><![CDATA[Haiti]]></category>
		<category><![CDATA[Non Profit]]></category>
		<category><![CDATA[Tradeshow]]></category>

		<guid isPermaLink="false">http://www.26am.com/blog/2010/01/29/whats-coming-up-on-the-26am-blog/</guid>
		<description><![CDATA[Josh and I (David) make up the 26AM team. However we are constantly bringing in other friends in the industry to pick up the slack when work is overwhelmingly busy as it is now. Two big things have happened for us recently. The first is we went to CES in Vegas! The second is we&#8217;ve [...]]]></description>
			<content:encoded><![CDATA[<p>Josh and I (David) make up the 26AM team. However we are constantly bringing in other friends in the industry to pick up the slack when work is overwhelmingly busy as it is now. Two big things have happened for us recently. The first is we went to CES in Vegas! The second is we&#8217;ve noticed a sharp increase in our Non-Profit work. This ranges from projects related to Haiti, Christian Organizations, Government Funded Agencies and so on. We are going to begin sharing those experiences and perspectives on it all with you. (Well isn&#8217;t that just dandy?)<span id="more-218"></span></p>
<p>Two weeks ago when I was in Las Vegas attending CES (The Consumer Electronics Show) with a good friend of mine from Evident Productions, we came up with idea for a blog series. So over the next month or two I will be blogging about my experiences at the show from a little point of view than many blogs you may find that have talked about CES. </p>
<p>I will be doing this series as a multi-part series that focuses on design, quality and production side of the entire trade show experience rather than focusing on the products that were presented at the show. </p>
<p>That&#8217;s about it for now! Hope you&#8217;re having a great day where you are!</p>
<img src="http://feeds.feedburner.com/~r/26am/~4/2KeFVn7BRKk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.26am.com/blog/2010/01/29/whats-coming-up-on-the-26am-blog/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.26am.com/blog/2010/01/29/whats-coming-up-on-the-26am-blog/</feedburner:origLink></item>
		<item>
		<title>Printer friendly web pages with “Print.css”</title>
		<link>http://feedproxy.google.com/~r/26am/~3/sezWFIA_KrE/</link>
		<comments>http://www.26am.com/blog/2010/01/27/printer-friendly-web-pages-with-print-css/#comments</comments>
		<pubDate>Wed, 27 Jan 2010 18:01:32 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Design Thoughts]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Fonts]]></category>
		<category><![CDATA[Print]]></category>

		<guid isPermaLink="false">http://www.26am.com/?p=202</guid>
		<description><![CDATA[When most people think web pages they think &#8220;on screen.&#8221; I&#8217;ll admit, I&#8217;m the exact same way. I rarely think of taking a web page off screen and onto paper. On a recent project 26AM completed for a California State Government agency, we learned that portability not only to mobile devices but to paper is [...]]]></description>
			<content:encoded><![CDATA[<p>When most people think web pages they think &#8220;on screen.&#8221; I&#8217;ll admit, I&#8217;m the exact same way. I rarely think of taking a web page off screen and onto paper. On a recent project 26AM completed for a California State Government agency, we learned that portability not only to mobile devices but to paper is an important criteria.<span id="more-202"></span></p>
<p>It&#8217;s been a long time since I printed a web page (partially because I&#8217;m cheap and don&#8217;t like changing ink jet cartridges). However, printing a page doesn&#8217;t have to be a pain if the designer took a little extra time and made a &#8220;print.css&#8221; stylesheet. Print.css when applied correctly can make a web page easy to read and ink efficient.</p>
<p>Let&#8217;s take for instance the 26AM blog which you&#8217;re reading right now. We&#8217;ve created a print.css file that does the following:</p>
<ul>
<li>Changes the background to white</li>
<li>Uses Arial, Helvetica, Sans-Serif fonts</li>
<li>Removes all menus, the search bar, sidebar, header images</li>
<li>Adds print friendly titles and headers</li>
<li>Adds copyright information and the date/time stamp.</li>
</ul>
<p>The first step is instructing the browser to use <a href="http://www.26am.com/wp-content/themes/26AM/print.css">Print.css</a> when a person chooses to print the document. We added the following line to our HEAD tag.</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;link rel=&quot;stylesheet&quot; href=&quot;http://www.26am.com/wp-content/themes/26AM/print.css&quot; type=&quot;text/css&quot; media=&quot;print&quot; /&gt;</pre></div></div>

<p>Of course for your purposes, you&#8217;ll want to set the HREF to your newly created print.css file. The second step is filling in the <a href="http://www.26am.com/wp-content/themes/26AM/print.css">Print.css</a> file. Ours looks like this:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">/* 26AM Print Styles */</span>
<span style="color: #a1a100;">@media print {</span>
	body <span style="color: #00AA00;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">font-family</span><span style="color: #00AA00;">:</span> arial<span style="color: #00AA00;">;</span>
		<span style="color: #000000; font-weight: bold;">font-size</span><span style="color: #00AA00;">:</span> <span style="color: #933;">11pt</span><span style="color: #00AA00;">;</span>
	<span style="color: #00AA00;">&#125;</span>
&nbsp;
	<span style="color: #cc00cc;">#header</span> <span style="color: #00AA00;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">display</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">none</span><span style="color: #00AA00;">;</span>
	<span style="color: #00AA00;">&#125;</span>
&nbsp;
	a<span style="color: #00AA00;">,</span> a<span style="color: #3333ff;">:visited</span><span style="color: #00AA00;">,</span> a<span style="color: #3333ff;">:active </span><span style="color: #00AA00;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span> <span style="color: #cc00cc;">#09C</span><span style="color: #00AA00;">;</span>
	<span style="color: #00AA00;">&#125;</span>
&nbsp;
	<span style="color: #cc00cc;">#printheader</span> <span style="color: #00AA00;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">display</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">block</span><span style="color: #00AA00;">;</span>
		<span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span> <span style="color: #cc00cc;">#29ABE2</span><span style="color: #00AA00;">;</span>
		<span style="color: #000000; font-weight: bold;">padding</span><span style="color: #00AA00;">:</span> <span style="color: #933;">10px</span><span style="color: #00AA00;">;</span>
		<span style="color: #000000; font-weight: bold;">margin</span><span style="color: #00AA00;">:</span> <span style="color: #933;">1em</span> <span style="color: #cc66cc;">0</span> <span style="color: #933;">1em</span><span style="color: #00AA00;">;</span>
	<span style="color: #00AA00;">&#125;</span>
&nbsp;
	<span style="color: #cc00cc;">#printfooter</span> <span style="color: #00AA00;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">font-size</span><span style="color: #00AA00;">:</span> <span style="color: #933;">10pt</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span> <span style="color: #cc00cc;">#666</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">border-top</span><span style="color: #00AA00;">:</span> <span style="color: #933;">1px</span> <span style="color: #993333;">solid</span> <span style="color: #993333;">gray</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">margin</span><span style="color: #00AA00;">:</span> <span style="color: #933;">2em</span> <span style="color: #cc66cc;">0</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">padding</span><span style="color: #00AA00;">:</span> <span style="color: #933;">1em</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span>
	<span style="color: #00AA00;">&#125;</span>
&nbsp;
 	<span style="color: #6666ff;">.breadcrumb</span> <span style="color: #00AA00;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">font-size</span><span style="color: #00AA00;">:</span> <span style="color: #933;">9pt</span><span style="color: #00AA00;">;</span>
		<span style="color: #000000; font-weight: bold;">margin</span><span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">0</span> <span style="color: #cc66cc;">0</span> <span style="color: #933;">1em</span><span style="color: #00AA00;">;</span>
	<span style="color: #00AA00;">&#125;</span>
&nbsp;
	img<span style="color: #6666ff;">.authoravatar</span> <span style="color: #00AA00;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">display</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">none</span><span style="color: #00AA00;">;</span>
	<span style="color: #00AA00;">&#125;</span>
&nbsp;
	a.stbutton<span style="color: #00AA00;">,</span>
	h2.pagetitle<span style="color: #00AA00;">,</span>
	p.postmetadata<span style="color: #00AA00;">,</span>
	.respond<span style="color: #00AA00;">,</span>
	<span style="color: #cc00cc;">#respond</span><span style="color: #00AA00;">,</span>
	<span style="color: #cc00cc;">#sidebar</span><span style="color: #00AA00;">,</span>
	<span style="color: #cc00cc;">#footer</span> <span style="color: #00AA00;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">display</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">none</span><span style="color: #00AA00;">;</span>
	<span style="color: #00AA00;">&#125;</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>You&#8217;ll see that the majority of what we&#8217;ve done is hide things. You&#8217;ll also see that we are revealing things as well. We&#8217;ve hidden all the unnecessary information that we mentioned above, but then we revealed the printer friendly formatted information such as date and time stamp. Hope this has helped. If you&#8217;re working on a project for a client or for yourself, having a printer friendly version of the website can really show your attention to detail and care for the end user. Leave us a note and let us know if this has helped you.</p>
<img src="http://feeds.feedburner.com/~r/26am/~4/sezWFIA_KrE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.26am.com/blog/2010/01/27/printer-friendly-web-pages-with-print-css/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.26am.com/blog/2010/01/27/printer-friendly-web-pages-with-print-css/</feedburner:origLink></item>
		<item>
		<title>Amazon Fulfillment Web Service (FWS) using Ruby and Soap</title>
		<link>http://feedproxy.google.com/~r/26am/~3/Oj4f8Pexk5I/</link>
		<comments>http://www.26am.com/blog/2009/11/04/amazon-fulfillment-web-service-fws-using-ruby-and-soap/#comments</comments>
		<pubDate>Wed, 04 Nov 2009 16:15:46 +0000</pubDate>
		<dc:creator>Josh</dc:creator>
				<category><![CDATA[Coding]]></category>

		<guid isPermaLink="false">http://www.26am.com/blog/?p=143</guid>
		<description><![CDATA[Amazon is the king of making their products accessible via web services, but unfortunately Ruby hasn&#8217;t made the list of languages they provide sample client code for.  At least not for FWS. So if you&#8217;re looking to build an e-commerce site in ruby that uses Fulfillment By Amazon to ship physical products you&#8217;ve get to [...]]]></description>
			<content:encoded><![CDATA[<p>Amazon is the king of making their products accessible via web services, but unfortunately Ruby hasn&#8217;t made the list of languages they provide sample client code for.  At least not for FWS. So if you&#8217;re looking to build an e-commerce site in ruby that uses Fulfillment By Amazon to ship physical products you&#8217;ve get to roll your own. Amazon provides two APIs for accessing FWS: REST and SOAP.<span id="more-143"></span></p>
<p>If you&#8217;re a Ruby developer (and especially Rails) we&#8217;ve all been told REST &gt; SOAP. REST is lightweight, simple, etc. So of course we&#8217;ll use REST! So I dug in and implemented the Outbound Use Cases for creating a fulfillment order, checking the service status, and canceling an order. And for months it worked fine. Then one day something changed. I&#8217;m still not quite sure what changed, but I started getting back 400 Bad Request responses from Amazon. That was it. No details, no explanations, no clue as to what went wrong, just 400 Bad Request. So after wasting way too much time trying to figure out what wasn&#8217;t working (with very little help from Aamzon), I decided it was time to throw in the towel and switch to SOAP. SOAP is by nature more verbose. So I figured that even if the problem was on my end, with SOAP I&#8217;d get back more useful error messages in the responses. I was right.</p>
<p>So you&#8217;re going to do SOAP in ruby, the natural, default option is soap4r. I&#8217;ve used soap4r before, and in the past it had done exactly what I needed. Unfortunately, the simplicity of soap4r caused me nothing but pain when trying to work with the FWS SOAP API. Amazon wants (needs) an &lt;evn:Header&gt; in your soap envelope containing 3 pieces of information: Access Key, Timestamp, and Signature. I know that soap4r supports adding extra headers, but it&#8217;s really clumsy. So after an hour or so of getting it wrong with soap4r, I decided it was time to look for an alternative.</p>
<p>Enter <a title="HandSoap" href="http://github.com/unwire/handsoap" target="_blank">handsoap</a>! Handsoap does less for you, *a lot less*, but that also means it&#8217;s way more flexible. Flexibility is what I needed. In less than 2 hours from finding handsoap, I had a working SOAP client for the call I cared the most about (creating an order), with nice tests to go with it! Enough babbling, time for some code samples:</p>
<p>I&#8217;ll be repeating some of what is in the handsoap getting started guide, but you&#8217;ll appreciate having it all in one place. (Do yourself a favor and still read through the <a href="http://wiki.github.com/unwire/handsoap/recommendations">handsoap getting started guide</a>).</p>
<p>First create config/initializers/amazon_fulfillment_service.rb with the service endpoint:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#008000; font-style:italic;"># wsdl: https://fba-outbound.amazonaws.com/doc/2007-08-02/AmazonFBAOutbound.wsdl</span>
AMAZON_FBA_OUTBOUND_SERVICE_ENDPOINT = <span style="color:#006600; font-weight:bold;">&#123;</span>
  <span style="color:#ff3333; font-weight:bold;">:uri</span> =<span style="color:#006600; font-weight:bold;">&amp;</span>gt; <span style="color:#996600;">'https://fba-outbound.amazonaws.com'</span>,
  <span style="color:#ff3333; font-weight:bold;">:version</span> =<span style="color:#006600; font-weight:bold;">&amp;</span>gt; <span style="color:#006666;">1</span>
<span style="color:#006600; font-weight:bold;">&#125;</span></pre></div></div>

<p>Next, run the generator to create the stubs:<br />
<code><br />
./script/generate handsoap https://fba-outbound.amazonaws.com/doc/2007-08-02/AmazonFBAOutbound.wsdl<br />
</code></p>
<p>Open the file created (probably app/models/amazon_fba_outbound_service.rb)</p>
<p>You&#8217;ll want to add your AWSAccessKeyId to the header for all calls:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#9966CC; font-weight:bold;">def</span> on_create_document<span style="color:#006600; font-weight:bold;">&#40;</span>doc<span style="color:#006600; font-weight:bold;">&#41;</span>
  <span style="color:#008000; font-style:italic;"># register namespaces for the request</span>
  doc.<span style="color:#9966CC; font-weight:bold;">alias</span> <span style="color:#996600;">'aws'</span>, <span style="color:#996600;">'http://fba-outbound.amazonaws.com/doc/2007-08-02/'</span>
  header = doc.<span style="color:#9900CC;">find</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;Header&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
  header.<span style="color:#9900CC;">add</span> <span style="color:#996600;">&quot;aws:AWSAccessKeyId&quot;</span>, FWS_CONFIG<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:access_key_id</span><span style="color:#006600; font-weight:bold;">&#93;</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>s<span style="color:#006600; font-weight:bold;">|</span>
    s.<span style="color:#9900CC;">set_attr</span> <span style="color:#996600;">&quot;env:mustUnderstand&quot;</span>, <span style="color:#996600;">&quot;0&quot;</span>
    s.<span style="color:#9900CC;">set_attr</span> <span style="color:#996600;">&quot;env:actor&quot;</span>, <span style="color:#996600;">&quot;http://schemas.xmlsoap.org/soap/actor/next&quot;</span>
    s.<span style="color:#9900CC;">set_attr</span> <span style="color:#996600;">&quot;xmlns:aws&quot;</span>, <span style="color:#996600;">&quot;http://security.amazonaws.com/doc/2007-01-01/&quot;</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></div></div>

<p>Next let&#8217;s look at the simplest of calls: <span class="code">get_service_status</span></p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#9966CC; font-weight:bold;">def</span> get_service_status
  response = invoke<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'aws:GetServiceStatus'</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>message<span style="color:#006600; font-weight:bold;">|</span>
    build_headers<span style="color:#006600; font-weight:bold;">&#40;</span>message.<span style="color:#9900CC;">document</span>, <span style="color:#996600;">'GetServiceStatus'</span><span style="color:#006600; font-weight:bold;">&#41;</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
  response.<span style="color:#9900CC;">http_response</span>.<span style="color:#9900CC;">status</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></div></div>

<p>Returning <span class="code">response.http_response.status</span> makes the method easy to test (just look for 200). The interesting part of that call is the <span class="code">build_headers</span> method. We need to add the Timestamp and Signature to the Header on a per-call basis. Here&#8217;s that method:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#9966CC; font-weight:bold;">def</span> build_headers<span style="color:#006600; font-weight:bold;">&#40;</span>doc, action, timestamp = <span style="color:#0000FF; font-weight:bold;">nil</span><span style="color:#006600; font-weight:bold;">&#41;</span>
  <span style="color:#0066ff; font-weight:bold;">@timestamp</span> <span style="color:#006600; font-weight:bold;">||</span>= <span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">now</span>.<span style="color:#9900CC;">utc</span>.<span style="color:#9900CC;">strftime</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;%Y-%m-%dT%H:%M:%S&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">+</span> <span style="color:#996600;">'.000Z'</span>
  <span style="color:#0066ff; font-weight:bold;">@signature</span> = FwsHelper.<span style="color:#9900CC;">aws_encoded</span><span style="color:#006600; font-weight:bold;">&#40;</span>action <span style="color:#006600; font-weight:bold;">+</span> <span style="color:#0066ff; font-weight:bold;">@timestamp</span><span style="color:#006600; font-weight:bold;">&#41;</span>
  header = doc.<span style="color:#9900CC;">find</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;Header&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
  <span style="color:#008000; font-style:italic;"># Add signature</span>
  header.<span style="color:#9900CC;">add</span> <span style="color:#996600;">&quot;aws:Signature&quot;</span>, <span style="color:#0066ff; font-weight:bold;">@signature</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>s<span style="color:#006600; font-weight:bold;">|</span>
    s.<span style="color:#9900CC;">set_attr</span> <span style="color:#996600;">&quot;env:mustUnderstand&quot;</span>, <span style="color:#996600;">&quot;0&quot;</span>
    s.<span style="color:#9900CC;">set_attr</span> <span style="color:#996600;">&quot;env:actor&quot;</span>, <span style="color:#996600;">&quot;http://schemas.xmlsoap.org/soap/actor/next&quot;</span>
    s.<span style="color:#9900CC;">set_attr</span> <span style="color:#996600;">&quot;xmlns:aws&quot;</span>, <span style="color:#996600;">&quot;http://security.amazonaws.com/doc/2007-01-01/&quot;</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
  <span style="color:#008000; font-style:italic;"># Add timestamp</span>
  header.<span style="color:#9900CC;">add</span> <span style="color:#996600;">&quot;aws:Timestamp&quot;</span>, <span style="color:#0066ff; font-weight:bold;">@timestamp</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>s<span style="color:#006600; font-weight:bold;">|</span>
    s.<span style="color:#9900CC;">set_attr</span> <span style="color:#996600;">&quot;env:mustUnderstand&quot;</span>, <span style="color:#996600;">&quot;0&quot;</span>
    s.<span style="color:#9900CC;">set_attr</span> <span style="color:#996600;">&quot;env:actor&quot;</span>, <span style="color:#996600;">&quot;http://schemas.xmlsoap.org/soap/actor/next&quot;</span>
    s.<span style="color:#9900CC;">set_attr</span> <span style="color:#996600;">&quot;xmlns:aws&quot;</span>, <span style="color:#996600;">&quot;http://security.amazonaws.com/doc/2007-01-01/&quot;</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></div></div>

<p>The signature is built by concatenating the action + timestamp, then creating an HMAC-SHA1 digest of it. Here&#8217;s my</p>
<pre>FwsHelper.aws_encoded</pre>
<p>method:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'base64'</span>
<span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'digest/sha1'</span>
&nbsp;
<span style="color:#9966CC; font-weight:bold;">class</span> FwsHelper
&nbsp;
  <span style="color:#9966CC; font-weight:bold;">def</span> <span style="color:#0000FF; font-weight:bold;">self</span>.<span style="color:#9900CC;">aws_encoded</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC0066; font-weight:bold;">string</span><span style="color:#006600; font-weight:bold;">&#41;</span>
    digest   = <span style="color:#6666ff; font-weight:bold;">OpenSSL::Digest::Digest</span>.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'sha1'</span><span style="color:#006600; font-weight:bold;">&#41;</span>
    b64_hmac = <span style="color:#CC00FF; font-weight:bold;">Base64</span>.<span style="color:#9900CC;">encode64</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#6666ff; font-weight:bold;">OpenSSL::HMAC</span>.<span style="color:#9900CC;">digest</span><span style="color:#006600; font-weight:bold;">&#40;</span>digest, FWS_CONFIG<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:secret_access_key</span><span style="color:#006600; font-weight:bold;">&#93;</span>, <span style="color:#CC0066; font-weight:bold;">string</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">strip</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#9966CC; font-weight:bold;">end</span></pre></div></div>

<p>That should be enough code to get you moving. If I missed something, or you&#8217;d like more elaboration on something, tell us about it in the comments and I&#8217;ll update the post.</p>
<img src="http://feeds.feedburner.com/~r/26am/~4/Oj4f8Pexk5I" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.26am.com/blog/2009/11/04/amazon-fulfillment-web-service-fws-using-ruby-and-soap/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.26am.com/blog/2009/11/04/amazon-fulfillment-web-service-fws-using-ruby-and-soap/</feedburner:origLink></item>
		<item>
		<title>26AM Version 2.0</title>
		<link>http://feedproxy.google.com/~r/26am/~3/8IqDvG70rYI/</link>
		<comments>http://www.26am.com/blog/2009/10/26/26am-version-2-0/#comments</comments>
		<pubDate>Tue, 27 Oct 2009 06:54:51 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[Company News]]></category>
		<category><![CDATA[Design Thoughts]]></category>
		<category><![CDATA[Just for Fun]]></category>

		<guid isPermaLink="false">http://www.26am.com/blog/?p=80</guid>
		<description><![CDATA[We&#8217;ve been thinking through our 26AM website for some time now. The current iteration of our site was never intended to be permanent. It was merely meant to serve as a place holder. So far, it&#8217;s done its job. However, we have been feeling more and more dissatisfied with the design and functionality. We need [...]]]></description>
			<content:encoded><![CDATA[<p>We&#8217;ve been thinking through our 26AM website for some time now. The current iteration of our site was never intended to be permanent. It was merely meant to serve as a place holder. So far, it&#8217;s done its job. However, we have been feeling more and more dissatisfied with the design and functionality. We need something a little more maintainable and content driven. <span id="more-80"></span>So we&#8217;ve tried to hit some key points including:</p>
<ul>
<li>Showcasing our clients and the work we&#8217;ve performed for them</li>
<li>Providing information about our services</li>
<li>A simple quotation form</li>
<li>Updated blog design to display our thoughts and musings</li>
<li>Twitter feed in a more organized fashion</li>
<li>Prettier more functional design.</li>
</ul>
<p>Here&#8217;s what we came up with so far. Look for it soon live on our site!</p>
<p><a href="http://www.26am.com/blog/wp-content/uploads/2009/10/concept_1_a.jpg"><img class="alignnone size-medium wp-image-77" title="concept_1_a" src="http://www.26am.com/blog/wp-content/uploads/2009/10/concept_1_a-300x231.jpg" alt="concept_1_a" width="300" height="231" /></a></p>
<p><a href="http://www.26am.com/blog/wp-content/uploads/2009/10/concept_1_b.jpg"><img class="alignnone size-medium wp-image-78" title="concept_1_b" src="http://www.26am.com/blog/wp-content/uploads/2009/10/concept_1_b-287x300.jpg" alt="concept_1_b" width="287" height="300" /></a></p>
<p><a href="http://www.26am.com/blog/wp-content/uploads/2009/10/concept_1_c.jpg"><img class="alignnone size-medium wp-image-79" title="concept_1_c" src="http://www.26am.com/blog/wp-content/uploads/2009/10/concept_1_c-287x300.jpg" alt="concept_1_c" width="287" height="300" /></a></p>
<img src="http://feeds.feedburner.com/~r/26am/~4/8IqDvG70rYI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.26am.com/blog/2009/10/26/26am-version-2-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.26am.com/blog/2009/10/26/26am-version-2-0/</feedburner:origLink></item>
		<item>
		<title>“Google Base – Expected response code 200, got 400″ – Resolved!</title>
		<link>http://feedproxy.google.com/~r/26am/~3/SLZ3ZUIa_6g/</link>
		<comments>http://www.26am.com/blog/2009/10/21/google-base-and-error-google-base-expected-response-code-200-got-400-resolved/#comments</comments>
		<pubDate>Thu, 22 Oct 2009 00:12:50 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[Coding]]></category>

		<guid isPermaLink="false">http://www.26am.com/blog/?p=74</guid>
		<description><![CDATA[So we&#8217;re working on a Google Base setup for Magento for one of our clients and ran into some errors. Mind you Google Base integration is native to Magento. However there are some things you must know. There are required fields that need to be mapped. If you&#8217;ve never setup Google Base with Magento, I [...]]]></description>
			<content:encoded><![CDATA[<p>So we&#8217;re working on a Google Base setup for Magento for one of our clients and ran into some errors. Mind you Google Base integration is native to Magento. However there are some things you must know. There are required fields that need to be mapped. <span id="more-74"></span>If you&#8217;ve never setup Google Base with Magento, I recommend you start here: <a href="http://vimeo.com/2368176">http://vimeo.com/2368176</a></p>
<p>With that you&#8217;ll need to also create a new attribute for your products. Do this by going to:</p>
<ol>
<li>Catalog -&gt; Attributes -&gt; Manage Attributes</li>
<li>Add New Attribute</li>
<li>Set your attribute code to: &#8220;condition&#8221;</li>
<li>Set the &#8220;Catalog Input Type for Store Owner&#8221; to &#8220;Dropdown&#8221;</li>
<li>Next, set &#8220;Values Required&#8221; to &#8220;Yes&#8221;</li>
<li>Leave the rest, as is on this page</li>
<li>Go to the Manage Label/Options page</li>
<li>Label your titles as &#8220;Condition&#8221;</li>
<li>Choose &#8220;Add Options&#8221;</li>
<li>Place the value of &#8220;New&#8221; in all fields and select &#8220;Is Default&#8221;</li>
<li>Save Attribute and return to editing your products. Be sure to set all products to the condition of &#8220;New&#8221;</li>
</ol>
<p>This is a key step in getting Magento to work with Google Base. If you don&#8217;t map the condition, you will come across the error &#8220;Google Base &#8211; Expected response code 200, got 400&#8243;</p>
<p>Drop me a line if this helps! This was tested on Magento ver. 1.3.2.3.</p>
<img src="http://feeds.feedburner.com/~r/26am/~4/SLZ3ZUIa_6g" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.26am.com/blog/2009/10/21/google-base-and-error-google-base-expected-response-code-200-got-400-resolved/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://www.26am.com/blog/2009/10/21/google-base-and-error-google-base-expected-response-code-200-got-400-resolved/</feedburner:origLink></item>
		<item>
		<title>Anti Aliasing in Safari 4 – Windows</title>
		<link>http://feedproxy.google.com/~r/26am/~3/lqmCW6fO7Vs/</link>
		<comments>http://www.26am.com/blog/2009/10/12/anti-aliasing-in-safari-4-windows/#comments</comments>
		<pubDate>Tue, 13 Oct 2009 05:37:11 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[Just for Fun]]></category>

		<guid isPermaLink="false">http://www.26am.com/blog/?p=71</guid>
		<description><![CDATA[So recently we&#8217;ve been working on a new e-commerce project. The project required us to do some testing in Safari 4 for Windows. Most of you probably know OSX renders fonts with much more smoothing than Windows machines do. I don&#8217;t know why they do this, they just do. On Windows, fonts look a bit [...]]]></description>
			<content:encoded><![CDATA[<p>So recently we&#8217;ve been working on a new e-commerce project. The project required us to do some testing in Safari 4 for Windows. Most of you probably know OSX renders fonts with much more smoothing than Windows machines do. I don&#8217;t know why they do this, they just do. On Windows, fonts look a bit more jagged if you will.<span id="more-71"></span></p>
<p>In Safari for Windows you have a choice. You can use native Windows ClearType rendering for fontsor you can use OSX anti-aliasing. Turning it on and off is simple:</p>
<p><a href="/wp-content/uploads/2009/10/blog_screenshot.jpg"><img class="alignnone size-full wp-image-72" title="blog_screenshot" src="/wp-content/uploads/2009/10/blog_screenshot.jpg" alt="blog_screenshot" width="462" height="277" /></a></p>
<p>Take your pick, it&#8217;s easy! Just go to Safari Preferences, choose the &#8220;Appearance&#8221; menu and set Font smoothing to whatever you fancy! It&#8217;s that easy!</p>
<img src="http://feeds.feedburner.com/~r/26am/~4/lqmCW6fO7Vs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.26am.com/blog/2009/10/12/anti-aliasing-in-safari-4-windows/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.26am.com/blog/2009/10/12/anti-aliasing-in-safari-4-windows/</feedburner:origLink></item>
		<item>
		<title>26AM Gear List</title>
		<link>http://feedproxy.google.com/~r/26am/~3/DfabFLlQ1rw/</link>
		<comments>http://www.26am.com/blog/2009/06/03/26am-gear-list/#comments</comments>
		<pubDate>Wed, 03 Jun 2009 18:55:23 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[Just for Fun]]></category>

		<guid isPermaLink="false">http://www.26am.com/blog/?p=65</guid>
		<description><![CDATA[We surprise people often with our gear list. I&#8217;m guessing it&#8217;s because of our shameless use of PCs and Windows Vista. What can I say, we like em.
Software list:

 Apple OS X
Windows Vista
Adobe CS4 Master Collection
Textmate
Ultra Edit
Adium/Pidgin
Skype
Smart FTP
Fetch
Putty
GIT

Hardware list:

Mac Pro (Quad Core with 8GB of RAM)
Macbook Pro (Dual Core with 4GB of RAM)
HP Workstation (Quad [...]]]></description>
			<content:encoded><![CDATA[<p>We surprise people often with our gear list. I&#8217;m guessing it&#8217;s because of our shameless use of PCs and Windows Vista. What can I say, we like em.<span id="more-65"></span></p>
<h3>Software list:</h3>
<ul>
<li> Apple OS X</li>
<li>Windows Vista</li>
<li>Adobe CS4 Master Collection</li>
<li>Textmate</li>
<li>Ultra Edit</li>
<li>Adium/Pidgin</li>
<li>Skype</li>
<li>Smart FTP</li>
<li>Fetch</li>
<li>Putty</li>
<li>GIT</li>
</ul>
<h3>Hardware list:</h3>
<ul>
<li>Mac Pro (Quad Core with 8GB of RAM)</li>
<li>Macbook Pro (Dual Core with 4GB of RAM)</li>
<li>HP Workstation (Quad Core with 4GB of RAM)</li>
<li>HP Elitebook (Dual Core with 4GB of RAM)</li>
<li>Mac Mini (Coming soon to the family)</li>
<li>3 VPS Servers (Slice)</li>
<li>1 Grid Server (MediaTemple)</li>
<li>Amazon WS, S3, EC2</li>
<li>HP, Viewsonic, Dell and Asus Monitors</li>
<li>Wacom Tablets</li>
</ul>
<p>There you have it. That&#8217;s our weapon list.</p>
<img src="http://feeds.feedburner.com/~r/26am/~4/DfabFLlQ1rw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.26am.com/blog/2009/06/03/26am-gear-list/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.26am.com/blog/2009/06/03/26am-gear-list/</feedburner:origLink></item>
		<item>
		<title>Now accepting contracts for…</title>
		<link>http://feedproxy.google.com/~r/26am/~3/IPqM1130klk/</link>
		<comments>http://www.26am.com/blog/2009/05/28/now-accepting-contracts-for/#comments</comments>
		<pubDate>Fri, 29 May 2009 03:32:18 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[Company News]]></category>

		<guid isPermaLink="false">http://www.26am.com/blog/?p=63</guid>
		<description><![CDATA[We are accepting contracts for Fall 2009 &#8211; Spring 2010. It&#8217;s been a busy busy Spring and Summer so far. We aren&#8217;t complaining, in fact we&#8217;re rejoicing. Thanks to you, our great clients we&#8217;ve been packed and backed up! Thank you for your loyal support of 26AM. We&#8217;re growing! We&#8217;ve added an extra server, some [...]]]></description>
			<content:encoded><![CDATA[<p>We are accepting contracts for Fall 2009 &#8211; Spring 2010. It&#8217;s been a busy busy Spring and Summer so far. We aren&#8217;t complaining, in fact we&#8217;re rejoicing. <span id="more-63"></span>Thanks to you, our great clients we&#8217;ve been packed and backed up! Thank you for your loyal support of 26AM. We&#8217;re growing! We&#8217;ve added an extra server, some Amazon Web Services, purchased some new equipment and worked crazy hours! Thank you again!</p>
<p>Your friends at 26AM,<br />
David and Josh</p>
<img src="http://feeds.feedburner.com/~r/26am/~4/IPqM1130klk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.26am.com/blog/2009/05/28/now-accepting-contracts-for/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.26am.com/blog/2009/05/28/now-accepting-contracts-for/</feedburner:origLink></item>
		<item>
		<title>Design Coding Guidelines</title>
		<link>http://feedproxy.google.com/~r/26am/~3/H8pIGUJ5noA/</link>
		<comments>http://www.26am.com/blog/2009/04/05/design-coding-guidelines/#comments</comments>
		<pubDate>Mon, 06 Apr 2009 03:46:33 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[Design Thoughts]]></category>
		<category><![CDATA[Just for Fun]]></category>

		<guid isPermaLink="false">http://www.26am.com/blog/?p=60</guid>
		<description><![CDATA[It&#8217;s hard not to blog this. YouTube rap video is after the jump.

]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s hard not to blog this. YouTube rap video is after the jump.<span id="more-60"></span></p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/a0qMe7Z3EYg&amp;hl=en&amp;fs=1" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/a0qMe7Z3EYg&amp;hl=en&amp;fs=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<img src="http://feeds.feedburner.com/~r/26am/~4/H8pIGUJ5noA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.26am.com/blog/2009/04/05/design-coding-guidelines/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.26am.com/blog/2009/04/05/design-coding-guidelines/</feedburner:origLink></item>
		<item>
		<title>Switchblade Studios: Resistance: Retribution Poster is award winning!</title>
		<link>http://feedproxy.google.com/~r/26am/~3/aZvMZxJOaBY/</link>
		<comments>http://www.26am.com/blog/2009/03/16/switchblade-studios-resistance-retribution-poster-is-award-winning/#comments</comments>
		<pubDate>Tue, 17 Mar 2009 02:05:00 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[The Hum of Life]]></category>

		<guid isPermaLink="false">http://www.26am.com/blog/?p=53</guid>
		<description><![CDATA[Here at 26AM we&#8217;ve had the opportunity of working with Switchblade Studios on several Flash designs for world renowned game titles. Recently this has been with the famous Capcom Games. Our friends at Switchblade Studios recently produced this poster that&#8217;s received recognition on Kotaku, MTV and more. Many Congrats to the SB team!

]]></description>
			<content:encoded><![CDATA[<p>Here at 26AM we&#8217;ve had the opportunity of working with Switchblade Studios on several Flash designs for world renowned game titles. Recently this has been with the famous Capcom Games. Our friends at Switchblade Studios recently produced this poster that&#8217;s received recognition on Kotaku, MTV and more. Many Congrats to the SB team!<span id="more-53"></span></p>
<p><a href="http://www.26am.com/blog/wp-content/uploads/2009/03/n26065959253_2237623_3536915.jpg"><img class="alignnone size-full wp-image-55" title="Resistance: Retribution" src="http://www.26am.com/blog/wp-content/uploads/2009/03/n26065959253_2237623_3536915.jpg" alt="Resistance: Retribution" width="537" height="238" /></a></p>
<div id="attachment_57" class="wp-caption alignnone" style="width: 135px"><a href="http://www.26am.com/blog/wp-content/uploads/2009/03/resistance-tall.jpg"><img class="size-medium wp-image-57" title="Resistance Up Close" src="http://www.26am.com/blog/wp-content/uploads/2009/03/resistance-tall-125x300.jpg" alt="Taken from Kotaku" width="125" height="300" /></a><p class="wp-caption-text">Taken from Kotaku</p></div>
<img src="http://feeds.feedburner.com/~r/26am/~4/aZvMZxJOaBY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.26am.com/blog/2009/03/16/switchblade-studios-resistance-retribution-poster-is-award-winning/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.26am.com/blog/2009/03/16/switchblade-studios-resistance-retribution-poster-is-award-winning/</feedburner:origLink></item>
	</channel>
</rss><!-- Dynamic page generated in 1.359 seconds. --><!-- Cached page generated by WP-Super-Cache on 2010-08-16 06:23:50 -->
