<?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>David Dahl &#187; David Dahl</title>
	<atom:link href="http://localhost/davedahl.com/author/dave/feed/" rel="self" type="application/rss+xml" />
	<link>http://localhost:8888/davedahl.com</link>
	<description>A Strategic Technology Consultant</description>
	<lastBuildDate>Sat, 17 May 2014 15:22:23 +0000</lastBuildDate>
	<language>en-US</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.9.1</generator>
	<item>
		<title>Site Hosting on S3 &#8211; a How To</title>
		<link>http://localhost:8888/davedahl.com/2013/05/07/site-hosting-on-s3/</link>
		<comments>http://localhost:8888/davedahl.com/2013/05/07/site-hosting-on-s3/#comments</comments>
		<pubDate>Tue, 07 May 2013 18:05:47 +0000</pubDate>
		<dc:creator><![CDATA[David Dahl]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://localhost:8888/davedahl.com/?p=43</guid>
		<description><![CDATA[This site is entirely hosted on Amazon&#8217;s S3. Nothing more. And it costs me 3¢ a month. If you look closely you might think it&#8217;s a WordPress site, and you&#8217;d be <a class="more-link" href="http://localhost:8888/davedahl.com/2013/05/07/site-hosting-on-s3/">Continue Reading &#8594;</a>]]></description>
				<content:encoded><![CDATA[<p><span style="font-family: 'trebuchet ms', geneva;">This site is entirely hosted on Amazon&#8217;s S3. Nothing more. And it costs me 3¢ a month. If you look closely you might think it&#8217;s a WordPress site, and you&#8217;d be partly right. The difference is I stripped out the database and webserver and flattened the files to static HTML.</span></p>
<p><span style="font-family: 'trebuchet ms', geneva;">I recently completed a large project moving a Chicago dot-com off of a physical hosting provider to 100% Amazon AWS hosted. To do so required Elastic Load Balancers, many EC2 nodes, S3, CloudFront CDN, Glacier, Relational Database Service, AMI&#8217;s, CloudWatch monitoring/alerting, and more. It was way cool.Suffice it to say I know my way around the AWS&#8217; and hosting a WordPress site as flat-files off S3 sounded like a fun challenge. And I&#8217;m cheap.</span></p>
<h1><span style="font-family: 'trebuchet ms', geneva;">How It&#8217;s Done</span></h1>
<p><span style="font-family: 'trebuchet ms', geneva;">What&#8217;s nice about WordPress is it&#8217;s easy to set up and easy to use. So the first thing I did was set up a &#8220;development environment&#8221; on my laptop. I have no problems hacking Apache and MySQL &#8211; but MAMP made this trivial and I didn&#8217;t have to change my existing apache/mysql configurations. Once it was up and running I used the existing &#8220;hello world&#8221; posts/pages to get the rest of it working.</span></p>
<p><span style="font-family: 'trebuchet ms', geneva;">Next was the tricky part. With the skeleton WordPress site hosted at localhost the challenge was dealing with the PHP. Think of it this way, when a request is sent to a php page the webserver does a bunch of magic and spits back html. Since I didn&#8217;t want to run a webserver I need to &#8220;flatten&#8221; the php into html to be served directly off S3. Well after a ton of tedious work, this is what did the trick:</span></p>
<blockquote>
<pre><span style="font-family: terminal, monaco;">wget --content-disposition --mirror --cut-dirs=1 -P davedahl.com-static -nH -np -p -k -E http://localhost:8888/davedahl.com/</span></pre>
</blockquote>
<p><span style="font-family: 'trebuchet ms', geneva;">Next I had to set up S3 so it was ready to accept the flattened WordPress. First part was easy &#8211; sign up. (Incidentally I chose to use the existing Amazon account that I use to buy books and junk, to keep from over-complicating things). Once signed up I created an S3 &#8220;bucket&#8221; with the same name as my domain (davedahl.com). Separately from this website I used S3 for cloud backup of my personal things, but this new bucket is a special type since I want to expose it to stream pages to web browsers, so this needs to be configured. I did that with the following configuration changes:</span></p>
<ul>
<li><span style="font-family: 'trebuchet ms', geneva;">Under &#8220;Permissions&#8221; grant &#8220;Everyone&#8221; permissions to &#8220;List&#8221; what&#8217;s in the bucket.</span></li>
<li><span style="font-family: 'trebuchet ms', geneva;">Click &#8220;Static Website Hosting&#8221; and &#8220;Enable website hosting&#8221;.</span></li>
<li><span style="font-family: 'trebuchet ms', geneva;">In the associated box under &#8220;Enable website hosting&#8221; I typed the start page for the website &#8211; which for me is index.html.</span></li>
<li><span style="font-family: 'trebuchet ms', geneva;">Note the &#8220;Endpoint&#8221; that&#8217;s assigned to the public bucket in this same section &#8211; this is where you files will be hosted from. It looks like an ugly URL &#8211; I&#8217;ll tell you how to assign a domain to it with <a href="http://aws.amazon.com/route53/">AWS Route 53</a> a bit later.</span></li>
</ul>
<p><span style="font-family: 'trebuchet ms', geneva;">So, to recap, I set up a base WordPress, squashed the php into html, and configured an S3 bucket to receive the html files. The next step is pushing the files to S3. This can be done using their website (or what Amazon calls the web console) but it&#8217;s much easier with S3cmd command line tools. I&#8217;ll skip the gory and tedious detail and get right to the money. Below is what I used to push the files using s3cmdhere&#8217;s what you need to know about pushing to S3 with s3cmd:</span></p>
<blockquote>
<pre><span style="font-family: terminal, monaco;"># Remove the old stuff on AWS</span></pre>
<pre><span style="font-family: terminal, monaco;">s3cmd --config=$S3CMD_CONF del --recursive --force s3://davedahl.com/</span></pre>
<pre><span style="font-family: terminal, monaco;"># Upload new stuff to AWS</span></pre>
<pre><span style="font-family: terminal, monaco;">s3cmd --config=$S3CMD_CONF put --reduced-redundancy --recursive -M --no-check-md5 davedahl.com-static/ s3://davedahl.com/</span></pre>
<pre><span style="font-family: terminal, monaco;"># s3cmd dosn't do proper mime-type-assingment (despite -M flag above)</span></pre>
<pre><span style="font-family: terminal, monaco;">for absfile in `find $WP_BASE/davedahl.com-static -name '*.css'`</span></pre>
<pre><span style="font-family: terminal, monaco;">do</span></pre>
<pre><span style="font-family: terminal, monaco;"> s3cmd --config=$S3CMD_CONF put --reduced-redundancy -m text/css $absfile s3://davedahl.com${absfile#*static}</span></pre>
<pre><span style="font-family: terminal, monaco;">done</span></pre>
</blockquote>
<p><span style="font-family: 'trebuchet ms', geneva;">Once that&#8217;s done I was able to hit the &#8220;endpoint&#8221; mentioned above and see the website in all it&#8217;s glory. For me, as of this writing, that endpoint is <a href="davedahl.com.s3-website-us-east-1.amazonaws.com"><span style="font-family: terminal, monaco;">davedahl.com.s3-website-us-east-1.amazonaws.com</span></a>. If that endpoint is still active you can hit it with a browser and see the same content as what&#8217;s at <a href="davedahl.com"><span style="font-family: terminal, monaco;">davedahl.com</span></a>. But these change over time so the next step was to deal with the DNS mojo required to handle that changing endpoint.</span></p>
<p><span style="font-family: 'trebuchet ms', geneva;">The last thing was assigning my davedahl.com domain to the S3 endpoint using AWS&#8217; <a href="http://aws.amazon.com/route53/">Route 53</a>, which is simply a DNS manager. There are other DNS services available, in particular I like <a href="https://freedns.afraid.org">FreeDNS.com</a>, but because the AWS S3 endpoint can change the most elegant to managing the change was using Route 53 &#8211; Amazon keeps the domain constantly pointed at the endpoint regardless of any changes on their end.</span></p>
<p><span style="font-family: 'trebuchet ms', geneva;">To configure Route 53 I first set up the Start of Authority (SOA) which was trivial. Next was changing the name servers at GoDaddy to point to the name servers Route 53 provided. I then set up an A-record pointing to the S3 endpoint, and a CNAME for the www portion, and I was in business.</span></p>
<p><span style="font-family: 'trebuchet ms', geneva;">Setting everything up took me a handful of hours. Lots of trial and error. But for me, writing the content believe it or not took quite a bit longer. If you have any questions about how I did it, or are interested in hearing about how I saved my last client 70% in month-over-month hosting costs with <a href="http://aws.amazon.com/">Amazon AWS</a>, drop me a line <a title="Contact Him" href="http://localhost:8888/davedahl.com/contact/">here</a>!</span></p>
]]></content:encoded>
			<wfw:commentRss>http://localhost:8888/davedahl.com/2013/05/07/site-hosting-on-s3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cloud Readiness &#8211; a Service Offering</title>
		<link>http://localhost:8888/davedahl.com/2013/05/07/cloud-readiness-a-service-offering/</link>
		<comments>http://localhost:8888/davedahl.com/2013/05/07/cloud-readiness-a-service-offering/#comments</comments>
		<pubDate>Tue, 07 May 2013 18:04:20 +0000</pubDate>
		<dc:creator><![CDATA[David Dahl]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://localhost:8888/davedahl.com/?p=40</guid>
		<description><![CDATA[Often times prospective clients feel the need for my help but can&#8217;t find the best way to engage. So I&#8217;ve created a couple Service Offerings: a Cloud Readiness service offering <a class="more-link" href="http://localhost:8888/davedahl.com/2013/05/07/cloud-readiness-a-service-offering/">Continue Reading &#8594;</a>]]></description>
				<content:encoded><![CDATA[<p><span style="font-family: 'trebuchet ms', geneva;">Often times prospective clients feel the need for my help but can&#8217;t find the best way to engage. So I&#8217;ve created a couple Service Offerings: a <a title="Cloud Readiness – a Service Offering" href="http://localhost:8888/davedahl.com/2013/05/cloud-readiness-a-service-offering/">Cloud Readiness</a> service offering and a <a title="CTO Audit – a Service Offering" href="http://localhost:8888/davedahl.com/2013/05/cto-audit-service-offering/">CTO Audit</a> service offering.</span></p>
<p><span style="font-family: 'trebuchet ms', geneva;">First off, the &#8220;cloud&#8221; is an overused word in my world. So, to clarify, this context are the cloud-based-services provided by projects like the Rackspace Cloud, <a href="http://aws.amazon.com/">Amazon&#8217;s AWS</a>, and <a href="http://www.peakcolo.com/cloud-solutions">Peak Colo&#8217;s Cloud</a>. Their offerings are typically referred to as Infrastrcture as a Services (Iaas) and Platform as a Service (Paas). More about these definitions from Wikipedia <a href="http://en.wikipedia.org/wiki/Cloud_computing">here</a>.</span></p>
<p><span style="font-family: 'trebuchet ms', geneva;">To further complication the definitions and problem-space is that these IaaS and PaaS can be public or private, local or cloud based. I have experience all over that map, but my expertise by far is implementing Amazon AWS as cloud-based and private capabilities to host production sites and services.</span></p>
<p><span style="font-family: 'trebuchet ms', geneva;">This Cloud Readiness Service Offering is scoped to be short but intensive. At the end of the engagement the customer receives full recommendations and best practices to address the following areas:</span></p>
<ul>
<li><span style="font-family: 'trebuchet ms', geneva;">Moving from Physical to Virtual: Enjoy increased flexibility and cost savings by moving environments to the cloud.<a href="http://localhost:8888/davedahl.com/wp-content/uploads/2013/05/sunset_c.png"><img class=" wp-image-193 alignright" alt="sunset_c" src="http://localhost:8888/davedahl.com/wp-content/uploads/2013/05/sunset_c.png" width="360" height="242" /></a></span></li>
<li><span style="font-family: 'trebuchet ms', geneva;">Monitoring and Altering: Leveraging cloud-based monitoring / alerting with current client infrastructure.</span></li>
<li><span style="font-family: 'trebuchet ms', geneva;">Turn-Key QA Environment: Increase quality with an always-fresh, easy to deploy, dedicated environment.</span></li>
<li><span style="font-family: 'trebuchet ms', geneva;">Reporting Data Warehousing: Ideal for companies in need of a one-off environment or an initial &#8220;data warehouse&#8221;</span></li>
<li><span style="font-family: 'trebuchet ms', geneva;">Low Cost Archiving: Right-size backup and archiving policies, procedures, and<br />
costs.</span></li>
<li><span style="font-family: 'trebuchet ms', geneva;">Deploying a Content Delivery Network: Speed up customer experience with a CDN.</span></li>
</ul>
<p><span style="font-family: 'trebuchet ms', geneva;">The final scope is always customized to meet the needs of a particular engagement.</span></p>
<p><span style="font-family: 'trebuchet ms', geneva;">If you&#8217;re interested in understanding how the cloud-based capabilities can benefit your company, drop me a line <a title="Contact Him" href="http://localhost:8888/davedahl.com/contact/">here</a>!</span></p>
]]></content:encoded>
			<wfw:commentRss>http://localhost:8888/davedahl.com/2013/05/07/cloud-readiness-a-service-offering/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CTO Audit &#8211; a Service Offering</title>
		<link>http://localhost:8888/davedahl.com/2013/05/07/cto-audit-service-offering/</link>
		<comments>http://localhost:8888/davedahl.com/2013/05/07/cto-audit-service-offering/#comments</comments>
		<pubDate>Tue, 07 May 2013 18:00:36 +0000</pubDate>
		<dc:creator><![CDATA[David Dahl]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://localhost:8888/davedahl.com/?p=37</guid>
		<description><![CDATA[Ever wonder if your technology is on the right track? Or, ever wonder if technology is a strategic advantage or just a necessary evil? Often times prospective clients feel the <a class="more-link" href="http://localhost:8888/davedahl.com/2013/05/07/cto-audit-service-offering/">Continue Reading &#8594;</a>]]></description>
				<content:encoded><![CDATA[<p><span style="font-family: 'trebuchet ms', geneva;">Ever wonder if your technology is on the right track?</span></p>
<p><span style="font-family: 'trebuchet ms', geneva;">Or, ever wonder if technology is a strategic advantage or just a necessary evil?</span></p>
<p><span style="font-family: 'trebuchet ms', geneva;">Often times prospective clients feel the need for my help but can&#8217;t find the best way to engage. So I&#8217;ve created a couple Service Offerings: a <a title="Cloud Readiness – a Service Offering" href="http://localhost:8888/davedahl.com/2013/05/cloud-readiness-a-service-offering/">Cloud Readiness</a> service offering and a <a title="CTO Audit – a Service Offering" href="http://localhost:8888/davedahl.com/2013/05/cto-audit-service-offering/">CTO Audit</a> service offering.</span></p>
<p><span style="font-family: 'trebuchet ms', geneva;">A CTO Audit will help you answer the question: what should a CTO be doing? This short, focused, engagement will give the client a clear report on what is currently being done well, and clearly articulate an actionable list of projects to strengthen the overall technical teams.</span></p>
<p><span style="font-family: 'trebuchet ms', geneva;">The scope of the engagement is agreed upon with the client before starting, but can include items such as:</span></p>
<ul>
<li><span style="font-family: 'trebuchet ms', geneva;">Technical Strategic Alignment: ensuring proper alignment of all Technology groups with corporate vision and other business group goals</span></li>
<li><span style="font-family: 'trebuchet ms', geneva;">Software and Hardware Architectures: reviewing both with overall architectural vision and principals</span></li>
<li><span style="font-family: 'trebuchet ms', geneva;">Operational Best Practices: considering uptime and performance metrics, data management and retention, and database operations</span></li>
<li><span style="font-family: 'trebuchet ms', geneva;">Resiliency Review: High Availability Analysis and Disaster Recovery readiness</span></li>
<li><span style="font-family: 'trebuchet ms', geneva;">Security: across all layers plus PII and PCI considerations</span></li>
<li><span style="font-family: 'trebuchet ms', geneva;">Organization and Skills Review: understaffed? Overstaffed? Are you prepared for the next 6 months?</span></li>
</ul>
<p><span style="font-family: 'trebuchet ms', geneva;">Are you interested in hearing how your Tech group can be faster, stronger, and more strategically aligned with the business? <a title="Contact Him" href="http://localhost:8888/davedahl.com/contact/">Drop me a line</a> and let&#8217;s talk it through!</span></p>
]]></content:encoded>
			<wfw:commentRss>http://localhost:8888/davedahl.com/2013/05/07/cto-audit-service-offering/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
