<?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>Jeremy Felt</title>
	<atom:link href="http://jeremyfelt.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://jeremyfelt.com</link>
	<description></description>
	<lastBuildDate>Thu, 13 Jun 2013 19:14:53 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.6-beta3-24349</generator>
		<item>
		<title>WordCamp Seattle Presentation</title>
		<link>http://jeremyfelt.com/code/2013/06/08/wordcamp-seattle-presentation-draft/</link>
		<comments>http://jeremyfelt.com/code/2013/06/08/wordcamp-seattle-presentation-draft/#comments</comments>
		<pubDate>Sat, 08 Jun 2013 16:00:36 +0000</pubDate>
		<dc:creator>Jeremy Felt</dc:creator>
				<category><![CDATA[Code]]></category>

		<guid isPermaLink="false">http://jeremyfelt.com/?p=7689</guid>
		<description><![CDATA[<p>Relationships are built on trust. Take our relationship for example. There&#8217;s a good chance you have no idea who I am. An even better chance that we&#8217;ve never met face to face. And an even better chance that we&#8217;ve never had a full conversation. Still, there was a part of you that decided to stay [&#8230;]</p><p>The post <a href="http://jeremyfelt.com/code/2013/06/08/wordcamp-seattle-presentation-draft/">WordCamp Seattle Presentation</a> appeared first on <a href="http://jeremyfelt.com">Jeremy Felt</a>.</p>]]></description>
				<content:encoded><![CDATA[<p><a href="http://content.jeremyfelt.com/uploads/2013/06/2013-wordcamp-seattle-trust.001.png"><img class="aligncenter size-large wp-image-7694" alt="2013-wordcamp-seattle-trust.001" src="http://content.jeremyfelt.com/uploads/2013/06/2013-wordcamp-seattle-trust.001-1024x576.png" width="604" height="339" /></a></p>
<p><a href="http://content.jeremyfelt.com/uploads/2013/06/2013-wordcamp-seattle-trust.002.png"><img class="aligncenter size-full wp-image-7695" alt="2013-wordcamp-seattle-trust.002" src="http://content.jeremyfelt.com/uploads/2013/06/2013-wordcamp-seattle-trust.002.png" width="1280" height="720" /></a></p>
<p>Relationships are built on trust.</p>
<p>Take our relationship for example. There&#8217;s a good chance you have no idea who I am. An even better chance that we&#8217;ve never met face to face. And an even better chance that we&#8217;ve never had a full conversation.</p>
<p><a href="http://content.jeremyfelt.com/uploads/2013/06/2013-wordcamp-seattle-trust.003.png"><img class="aligncenter size-full wp-image-7696" alt="2013-wordcamp-seattle-trust.003" src="http://content.jeremyfelt.com/uploads/2013/06/2013-wordcamp-seattle-trust.003.png" width="1280" height="720" /></a></p>
<p>Still, there was a part of you that decided to stay for this portion of the talk. Maybe you&#8217;ve seen my name pop up on Twitter. Maybe you know that I work as Director of Web Engineering for the amazing team at 10up. Maybe you&#8217;ve just decided to camp out in the developer track all day.</p>
<p>Maybe nobody told you that classes ended yesterday and you&#8217;re surprised to see all of us.</p>
<p>Whatever the reason, something about our separate relationships with WordCamp Seattle provided enough trust for you to give me a chance to talk about data.</p>
<p><a style="line-height: 1.5;" href="http://content.jeremyfelt.com/uploads/2013/06/2013-wordcamp-seattle-trust.004.png"><img class="aligncenter size-full wp-image-7697" alt="2013-wordcamp-seattle-trust.004" src="http://content.jeremyfelt.com/uploads/2013/06/2013-wordcamp-seattle-trust.004.png" width="1280" height="720" /></a></p>
<p>The responsibility to maintain that trust is now mine.</p>
<p>I have you in the room and I&#8217;m going to talk about a topic I think is interesting. If you don&#8217;t find it accurate or convincing, or if I go off on an obviously out of place rant and show you big, hardly legible red slides, I might lose that trust.</p>
<p><a href="http://content.jeremyfelt.com/uploads/2013/06/2013-wordcamp-seattle-trust.005.png"><img class="aligncenter size-full wp-image-7698" alt="2013-wordcamp-seattle-trust.005" src="http://content.jeremyfelt.com/uploads/2013/06/2013-wordcamp-seattle-trust.005.png" width="1280" height="720" /></a></p>
<p>And once I lose your trust, the chance that you&#8217;ll sit through a future talk of mine is extremely low. This doesn&#8217;t just affect me. Your trust in WordCamps may be diminished as a whole and the community loses.</p>
<p>The same thing applies to websites.</p>
<p><a href="http://content.jeremyfelt.com/uploads/2013/06/2013-wordcamp-seattle-trust.006.png"><img class="aligncenter size-full wp-image-7699" alt="2013-wordcamp-seattle-trust.006" src="http://content.jeremyfelt.com/uploads/2013/06/2013-wordcamp-seattle-trust.006.png" width="1280" height="720" /></a></p>
<p>The visitors to your site or the sites of your clients go in with a level of trust. They trust that if they fill out a form or load a page nothing bad will happen. If something bad does happen, you lose that trust forever.</p>
<p>The users of your plugin or theme—both site owners and developers that depend on its functionality in their projects—are the same way. Maintain this by taking care with their data and taking care of their site. If you don&#8217;t, that trust will disappear immediately.</p>
<p><a href="http://content.jeremyfelt.com/uploads/2013/06/2013-wordcamp-seattle-trust.007.png"><img class="aligncenter size-full wp-image-7700" alt="2013-wordcamp-seattle-trust.007" src="http://content.jeremyfelt.com/uploads/2013/06/2013-wordcamp-seattle-trust.007.png" width="1280" height="720" /></a></p>
<p>The level of freedom you are given as a WordPress developer is mind boggling.</p>
<p><a href="http://content.jeremyfelt.com/uploads/2013/06/2013-wordcamp-seattle-trust.008.png"><img class="aligncenter size-full wp-image-7701" alt="2013-wordcamp-seattle-trust.008" src="http://content.jeremyfelt.com/uploads/2013/06/2013-wordcamp-seattle-trust.008.png" width="1280" height="720" /></a></p>
<p>Through the use of actions, filters, remote calls, database queries, and—at some level—file system access, you have almost complete freedom when your plugin or theme is installed. This trust has been established for you by WordPress.</p>
<p>One accidental misuse of a function can bring down a site entirely, leaving the owner scrambling to find an answer.</p>
<p>The mishandling of data can cause severe security issues, from stolen cookies leading to unauthorized access of an account to embedded spam links that become a nightmare to get rid of.</p>
<p>It&#8217;s not just a case of &#8220;it&#8217;s free, deal with it&#8221; or &#8220;pull requests accepted&#8221;.</p>
<p><a href="http://content.jeremyfelt.com/uploads/2013/06/2013-wordcamp-seattle-trust.009.png"><img class="aligncenter size-full wp-image-7702" alt="2013-wordcamp-seattle-trust.009" src="http://content.jeremyfelt.com/uploads/2013/06/2013-wordcamp-seattle-trust.009.png" width="1280" height="720" /></a></p>
<p>The responsibility is yours, the developer.</p>
<p>Maintain it. Exceed it.</p>
<p>Let people know that when they use a solution developed by you that it is a quality product created with care.</p>
<p><a href="http://content.jeremyfelt.com/uploads/2013/06/2013-wordcamp-seattle-trust.010.png"><img class="aligncenter size-full wp-image-7703" alt="2013-wordcamp-seattle-trust.010" src="http://content.jeremyfelt.com/uploads/2013/06/2013-wordcamp-seattle-trust.010.png" width="1280" height="720" /></a></p>
<p>There are several aspects to maintaining that trust. Almost everything centers around data. Making sure that the data flowing in and out of a system matches intent is crucial.</p>
<p>Because this is a lightning talk and I&#8217;ve already spent a few minutes talking development philosophy, we&#8217;re going to cover one topic &#8211; escaping data &#8211; with a few specific examples. At the end and in my posted write up I&#8217;ll leave you with a bunch of resources to help make maintaining trust part of your daily routine.</p>
<p><a href="http://content.jeremyfelt.com/uploads/2013/06/2013-wordcamp-seattle-trust.011.png"><img class="aligncenter size-full wp-image-7704" alt="2013-wordcamp-seattle-trust.011" src="http://content.jeremyfelt.com/uploads/2013/06/2013-wordcamp-seattle-trust.011.png" width="1280" height="720" /></a></p>
<p>There are a lot of ways to escape data. At its basic form, escaping data is using the right characters or transforming the current characters into something that will not conflict with the expectations that exist where the data will be output.</p>
<p><a href="http://content.jeremyfelt.com/uploads/2013/06/2013-wordcamp-seattle-trust.012.png"><img class="aligncenter size-full wp-image-7705" alt="2013-wordcamp-seattle-trust.012" src="http://content.jeremyfelt.com/uploads/2013/06/2013-wordcamp-seattle-trust.012.png" width="1280" height="720" /></a></p>
<p>If you are tasked with outputting a string between to sets of double quotes &#8211; &#8220;this is my string&#8221;, you want to be careful when the string you receive is &#8220;this is &#8220;my&#8221; string&#8221;. All of a sudden you have two sets of strings &#8211; &#8220;this is &#8221; and &#8221; string&#8221;. &#8220;my&#8221; has caused a syntax error &#8211; or worse, a serious security issue.</p>
<p>If this data were escaped &#8211; &#8220;this is \&#8221;my\&#8221; string&#8221; &#8211; it becomes something that can be dealt with as it follow an expected syntax.</p>
<p>The requirements for escaping change across the board. The quotes displayed here work in this example, but they aren’t always the culprit</p>
<p>Certain characters will trip you up when outputting HTML, others will get in the way when used as an element attribute, some will only show their face when dynamically outputting JavaScript or XML. In any of these cases you should be thinking of where the data came from, where it is going and then prepare it as so.</p>
<p><a href="http://content.jeremyfelt.com/uploads/2013/06/2013-wordcamp-seattle-trust.013.png"><img class="aligncenter size-full wp-image-7706" alt="2013-wordcamp-seattle-trust.013" src="http://content.jeremyfelt.com/uploads/2013/06/2013-wordcamp-seattle-trust.013.png" width="1280" height="720" /></a></p>
<p>Cross Site Scripting enables attackers to inject client side scripts into pages. Once a script from an outside source is injected, it is considered trusted by the browser and can perform any actions that would normally be handled by the original site. This can include accessing and manipulating authentication cookies or causing general disruptions in the display of the site.</p>
<p>Avoiding Cross Site Scripting attacks is the primary reason for doing all of this. This is something you should be focused on throughout development when working with anything that involves interaction with an untrusted source of data.</p>
<p><a href="http://content.jeremyfelt.com/uploads/2013/06/2013-wordcamp-seattle-trust.014.png"><img class="aligncenter size-full wp-image-7707" alt="2013-wordcamp-seattle-trust.014" src="http://content.jeremyfelt.com/uploads/2013/06/2013-wordcamp-seattle-trust.014.png" width="1280" height="720" /></a></p>
<p>* User Input<br />
* Database Data<br />
* Outside Data &#8211; API calls</p>
<p><a href="http://content.jeremyfelt.com/uploads/2013/06/2013-wordcamp-seattle-trust.015.png"><img class="aligncenter size-full wp-image-7708" alt="2013-wordcamp-seattle-trust.015" src="http://content.jeremyfelt.com/uploads/2013/06/2013-wordcamp-seattle-trust.015.png" width="1280" height="720" /></a></p>
<p>This is when some source of inputted data is the cause of the XSS attack. It comes in from user input, but is displayed directly on the screen instead of being stored in the database. The data is not persistent.</p>
<p>Non persistent XSS attacks are somewhat less dangerous because they often require a couple steps before the user is in trouble. This could be a shortened link in an email box that goes to a site&#8217;s wp-admin path and—because a plugin does not properly escape user input—a $_GET[] parameter is interpreted on the front end to load an external, malicious script.</p>
<p><a href="http://content.jeremyfelt.com/uploads/2013/06/2013-wordcamp-seattle-trust.016.png"><img class="aligncenter size-full wp-image-7709" alt="2013-wordcamp-seattle-trust.016" src="http://content.jeremyfelt.com/uploads/2013/06/2013-wordcamp-seattle-trust.016.png" width="1280" height="720" /></a></p>
<p>Persistent XSS is scarier. This has worked its way into the database and will now be output on every related page view for every user. Rather than a targeted attack, this can provide data to an attacker on many users at once and cause an extremely serious security issue.</p>
<p><a href="http://content.jeremyfelt.com/uploads/2013/06/2013-wordcamp-seattle-trust.017.png"><img class="aligncenter size-full wp-image-7710" alt="2013-wordcamp-seattle-trust.017" src="http://content.jeremyfelt.com/uploads/2013/06/2013-wordcamp-seattle-trust.017.png" width="1280" height="720" /></a></p>
<p>Now that we&#8217;ve described Cross Site Scripting, how do you escape data to prevent it?</p>
<p><a href="http://content.jeremyfelt.com/uploads/2013/06/2013-wordcamp-seattle-trust.0181.png"><img class="aligncenter size-large wp-image-7724" alt="2013-wordcamp-seattle-trust.018" src="http://content.jeremyfelt.com/uploads/2013/06/2013-wordcamp-seattle-trust.0181-1024x576.png" width="604" height="339" /></a></p>
<p>Output with care so that others trust you. Data security is not an afterthought, make it happen as you go.</p>
<p>Take this first line of code. This didn’t start off like the second or third line before I caught it and decided to escape the data. It started off as the first and last lines, escaped from the beginning as it was written.</p>
<p>We knew that the variable contained information that had just been pulled from the database and could not be trusted for output to a user&#8217;s screen until it had either been escaped or validated.</p>
<p>This stays in your brain throughout. It happens as you go.</p>
<p><a href="http://content.jeremyfelt.com/uploads/2013/06/2013-wordcamp-seattle-trust.019.png"><img class="aligncenter size-full wp-image-7712" alt="2013-wordcamp-seattle-trust.019" src="http://content.jeremyfelt.com/uploads/2013/06/2013-wordcamp-seattle-trust.019.png" width="1280" height="720" /></a></p>
<p>Be Late</p>
<p>Escape the data as late as possible. On output is the ideal place to take care of this. Keeping track of what has been escaped in previous sections of code can be confusing and once you lose track of the data, mistakes will happen.</p>
<p>Assume the worst</p>
<p>Just because it&#8217;s likely that a user will never enter something bad into an input field doesn&#8217;t mean you shouldn&#8217;t protect against it. Escaping is not expensive.</p>
<p>But. Be aware.</p>
<p>Don&#8217;t walk around only assuming the worst. Instead, be aware of the situation. Know that:</p>
<p><a href="http://content.jeremyfelt.com/uploads/2013/06/2013-wordcamp-seattle-trust.020.png"><img class="aligncenter size-full wp-image-7713" alt="2013-wordcamp-seattle-trust.020" src="http://content.jeremyfelt.com/uploads/2013/06/2013-wordcamp-seattle-trust.020.png" width="1280" height="720" /></a></p>
<p>I wrote this, I can trust that it won&#8217;t change as it displays on the user&#8217;s screen.</p>
<p><a href="http://content.jeremyfelt.com/uploads/2013/06/2013-wordcamp-seattle-trust.021.png"><img class="aligncenter size-full wp-image-7714" alt="2013-wordcamp-seattle-trust.021" src="http://content.jeremyfelt.com/uploads/2013/06/2013-wordcamp-seattle-trust.021.png" width="1280" height="720" /></a></p>
<p>This example looks ridiculous and I can trust it. x and y have been assigned values that I can see do not cause issues between an H1 element. I&#8217;m outputting those variables immediately in that H1 element without additional processing.</p>
<p><a href="http://content.jeremyfelt.com/uploads/2013/06/2013-wordcamp-seattle-trust.022.png"><img class="aligncenter size-full wp-image-7715" alt="2013-wordcamp-seattle-trust.022" src="http://content.jeremyfelt.com/uploads/2013/06/2013-wordcamp-seattle-trust.022.png" width="1280" height="720" /></a></p>
<p>In this case, we have no idea what is going to be assigned to the site_title variable from the API. We&#8217;d like to think that the API has our best interests in mind, but what if they get hacked and start producing dirty data.</p>
<p><a href="http://content.jeremyfelt.com/uploads/2013/06/2013-wordcamp-seattle-trust.023.png"><img class="aligncenter size-full wp-image-7716" alt="2013-wordcamp-seattle-trust.023" src="http://content.jeremyfelt.com/uploads/2013/06/2013-wordcamp-seattle-trust.023.png" width="1280" height="720" /></a></p>
<p>Data coming in via $_SERVER, $_GET, $_POST, $_REQUEST, $_FILES and $_COOKIE</p>
<p><a href="http://content.jeremyfelt.com/uploads/2013/06/2013-wordcamp-seattle-trust.024.png"><img class="aligncenter size-full wp-image-7717" alt="2013-wordcamp-seattle-trust.024" src="http://content.jeremyfelt.com/uploads/2013/06/2013-wordcamp-seattle-trust.024.png" width="1280" height="720" /></a></p>
<p>Just because it is a core function, doesn&#8217;t mean you can trust the data. And this isn&#8217;t a bad thing. Core can not decide how data should be handled. The onus is on developers to keep track of data as it works through the system and to make sure it is in a format ready for display as late as possible before displaying.</p>
<p>When you do manage data with purpose, you&#8217;re telling anybody reading your code&amp;mdash;including your future self&amp;mdash;that the data being output has been managed well and can be trusted. A reviewer or contributor does not have to worry if the data has been properly handled and they can trust that things are being done right.</p>
<p><a href="http://content.jeremyfelt.com/uploads/2013/06/2013-wordcamp-seattle-trust.025.png"><img class="aligncenter size-full wp-image-7718" alt="2013-wordcamp-seattle-trust.025" src="http://content.jeremyfelt.com/uploads/2013/06/2013-wordcamp-seattle-trust.025.png" width="1280" height="720" /></a></p>
<p>Data that is handled with care can be trusted.</p>
<p><a href="http://content.jeremyfelt.com/uploads/2013/06/2013-wordcamp-seattle-trust.026.png"><img class="aligncenter size-full wp-image-7719" alt="2013-wordcamp-seattle-trust.026" src="http://content.jeremyfelt.com/uploads/2013/06/2013-wordcamp-seattle-trust.026.png" width="1280" height="720" /></a></p>
<ul>
<li>esc_html()</li>
<li><span style="line-height: 1.5;">esc_attr()</span></li>
<li><span style="line-height: 1.5;">esc_url()</span></li>
<li><span style="line-height: 1.5;">esc_textarea()</span></li>
<li><span style="line-height: 1.5;">esc_js()</span></li>
<li><span style="line-height: 1.5;">wp_kses_post()</span></li>
</ul>
<p><a href="http://content.jeremyfelt.com/uploads/2013/06/2013-wordcamp-seattle-trust.027.png"><img class="aligncenter size-full wp-image-7720" alt="2013-wordcamp-seattle-trust.027" src="http://content.jeremyfelt.com/uploads/2013/06/2013-wordcamp-seattle-trust.027.png" width="1280" height="720" /></a></p>
<p>Resources for Learning about XSS</p>
<ul>
<li>http://ha.ckers.org/xsscalc.html</li>
<li><span style="line-height: 1.5;">http://homakov.blogspot.com/</span></li>
<li><span style="line-height: 1.5;">https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet</span></li>
</ul>
<p>The post <a href="http://jeremyfelt.com/code/2013/06/08/wordcamp-seattle-presentation-draft/">WordCamp Seattle Presentation</a> appeared first on <a href="http://jeremyfelt.com">Jeremy Felt</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://jeremyfelt.com/code/2013/06/08/wordcamp-seattle-presentation-draft/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Lyfonda Farm Garlic Dill Pretzels</title>
		<link>http://jeremyfelt.com/food-drink/food/2013/06/02/lyfonda-farm-garlic-dill-pretzels/</link>
		<comments>http://jeremyfelt.com/food-drink/food/2013/06/02/lyfonda-farm-garlic-dill-pretzels/#comments</comments>
		<pubDate>Mon, 03 Jun 2013 06:25:37 +0000</pubDate>
		<dc:creator>Jeremy Felt</dc:creator>
				<category><![CDATA[Food]]></category>

		<guid isPermaLink="false">http://jeremyfelt.com/?p=7686</guid>
		<description><![CDATA[<p>Today I had pretty much the best pretzels I&#8217;ve ever had. I found them in the Bonneville Gift Store and now I found them online. This could be dangerous. Lyfonda Farm Garlic Dill Pretzels</p><p>The post <a href="http://jeremyfelt.com/food-drink/food/2013/06/02/lyfonda-farm-garlic-dill-pretzels/">Lyfonda Farm Garlic Dill Pretzels</a> appeared first on <a href="http://jeremyfelt.com">Jeremy Felt</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>Today I had pretty much the best pretzels I&#8217;ve ever had. I found them in the <a href="http://www.owhf.org/bonnevillegiftstore">Bonneville Gift Store</a> and now I found them <a href="http://www.nwfoodandgifts.com/index.php?page=shop.product_details&amp;flypage=flypage-ask.tpl&amp;product_id=1&amp;category_id=15&amp;keyword=pretzel&amp;option=com_virtuemart&amp;Itemid=1">online</a>. This could be dangerous.</p>
<div class="post-format-content">
<p><a href="http://www.pacificnwgourmetfoods.com/lyfondafarm/snacks/stix/index.html">Lyfonda Farm Garlic Dill Pretzels</a></div>
<p>The post <a href="http://jeremyfelt.com/food-drink/food/2013/06/02/lyfonda-farm-garlic-dill-pretzels/">Lyfonda Farm Garlic Dill Pretzels</a> appeared first on <a href="http://jeremyfelt.com">Jeremy Felt</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://jeremyfelt.com/food-drink/food/2013/06/02/lyfonda-farm-garlic-dill-pretzels/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cascade Locks</title>
		<link>http://jeremyfelt.com/places/2013/06/02/cascade-locks/</link>
		<comments>http://jeremyfelt.com/places/2013/06/02/cascade-locks/#comments</comments>
		<pubDate>Mon, 03 Jun 2013 05:31:06 +0000</pubDate>
		<dc:creator>Jeremy Felt</dc:creator>
				<category><![CDATA[Places]]></category>
		<category><![CDATA[Cascade Locks]]></category>
		<category><![CDATA[oregon]]></category>

		<guid isPermaLink="false">http://jeremyfelt.com/?p=7671</guid>
		<description><![CDATA[<p>Another day with a rental car and another day driving east. We had intended to head for the coast this morning, but we were feeling good about the prospects of either Hood River or Cascade Locks, so we wanted to take another look at some specific places. The Cascade Locks Marine Park is gorgeous and [&#8230;]</p><p>The post <a href="http://jeremyfelt.com/places/2013/06/02/cascade-locks/">Cascade Locks</a> appeared first on <a href="http://jeremyfelt.com">Jeremy Felt</a>.</p>]]></description>
				<content:encoded><![CDATA[
<a href='http://jeremyfelt.com/places/2013/06/02/cascade-locks/attachment/2013-06-02-14-03-45/' title='2013-06-02 14.03.45'><img data-attachment-id="7672" data-orig-file="http://content.jeremyfelt.com/uploads/2013/06/2013-06-02-14.03.45.jpg" data-orig-size="3264,2448" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;2.4&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;iPhone 5&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1370181825&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;4.13&quot;,&quot;iso&quot;:&quot;50&quot;,&quot;shutter_speed&quot;:&quot;0.00042408821034775&quot;,&quot;title&quot;:&quot;&quot;}" data-image-title="2013-06-02 14.03.45" data-image-description="" data-medium-file="http://content.jeremyfelt.com/uploads/2013/06/2013-06-02-14.03.45-300x225.jpg" data-large-file="http://content.jeremyfelt.com/uploads/2013/06/2013-06-02-14.03.45-1024x768.jpg" width="300" height="225" src="http://content.jeremyfelt.com/uploads/2013/06/2013-06-02-14.03.45-300x225.jpg" class="attachment-medium" alt="A possible view from a possible new place to possibly move into. ;)" /></a>
<a href='http://jeremyfelt.com/places/2013/06/02/cascade-locks/attachment/2013-06-02-14-30-38/' title='2013-06-02 14.30.38'><img data-attachment-id="7673" data-orig-file="http://content.jeremyfelt.com/uploads/2013/06/2013-06-02-14.30.38.jpg" data-orig-size="2448,3264" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;2.4&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;iPhone 5&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1370183438&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;4.13&quot;,&quot;iso&quot;:&quot;50&quot;,&quot;shutter_speed&quot;:&quot;0.0004420866489832&quot;,&quot;title&quot;:&quot;&quot;}" data-image-title="2013-06-02 14.30.38" data-image-description="" data-medium-file="http://content.jeremyfelt.com/uploads/2013/06/2013-06-02-14.30.38-225x300.jpg" data-large-file="http://content.jeremyfelt.com/uploads/2013/06/2013-06-02-14.30.38-768x1024.jpg" width="225" height="300" src="http://content.jeremyfelt.com/uploads/2013/06/2013-06-02-14.30.38-225x300.jpg" class="attachment-medium" alt="Lunch spot on the beach at Home Valley Park in Washington" /></a>
<a href='http://jeremyfelt.com/places/2013/06/02/cascade-locks/attachment/2013-06-02-14-30-47/' title='2013-06-02 14.30.47'><img data-attachment-id="7674" data-orig-file="http://content.jeremyfelt.com/uploads/2013/06/2013-06-02-14.30.47.jpg" data-orig-size="3264,2448" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;2.4&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;iPhone 5&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1370183447&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;4.13&quot;,&quot;iso&quot;:&quot;50&quot;,&quot;shutter_speed&quot;:&quot;0.00060901339829476&quot;,&quot;title&quot;:&quot;&quot;}" data-image-title="2013-06-02 14.30.47" data-image-description="" data-medium-file="http://content.jeremyfelt.com/uploads/2013/06/2013-06-02-14.30.47-300x225.jpg" data-large-file="http://content.jeremyfelt.com/uploads/2013/06/2013-06-02-14.30.47-1024x768.jpg" width="300" height="225" src="http://content.jeremyfelt.com/uploads/2013/06/2013-06-02-14.30.47-300x225.jpg" class="attachment-medium" alt="Lunch spot on the beach at Home Valley Park in Washington" /></a>
<a href='http://jeremyfelt.com/places/2013/06/02/cascade-locks/attachment/2013-06-02-14-30-53/' title='2013-06-02 14.30.53'><img data-attachment-id="7675" data-orig-file="http://content.jeremyfelt.com/uploads/2013/06/2013-06-02-14.30.53.jpg" data-orig-size="2448,3264" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;2.4&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;iPhone 5&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1370183453&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;4.13&quot;,&quot;iso&quot;:&quot;50&quot;,&quot;shutter_speed&quot;:&quot;0.00077519379844961&quot;,&quot;title&quot;:&quot;&quot;}" data-image-title="2013-06-02 14.30.53" data-image-description="" data-medium-file="http://content.jeremyfelt.com/uploads/2013/06/2013-06-02-14.30.53-225x300.jpg" data-large-file="http://content.jeremyfelt.com/uploads/2013/06/2013-06-02-14.30.53-768x1024.jpg" width="225" height="300" src="http://content.jeremyfelt.com/uploads/2013/06/2013-06-02-14.30.53-225x300.jpg" class="attachment-medium" alt="Lunch spot on the beach at Home Valley Park in Washington" /></a>
<a href='http://jeremyfelt.com/places/2013/06/02/cascade-locks/attachment/2013-06-02-14-49-02/' title='2013-06-02 14.49.02'><img data-attachment-id="7676" data-orig-file="http://content.jeremyfelt.com/uploads/2013/06/2013-06-02-14.49.02.jpg" data-orig-size="2448,3264" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;2.4&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;iPhone 5&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1370184542&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;4.13&quot;,&quot;iso&quot;:&quot;50&quot;,&quot;shutter_speed&quot;:&quot;0.0035971223021583&quot;,&quot;title&quot;:&quot;&quot;}" data-image-title="2013-06-02 14.49.02" data-image-description="" data-medium-file="http://content.jeremyfelt.com/uploads/2013/06/2013-06-02-14.49.02-225x300.jpg" data-large-file="http://content.jeremyfelt.com/uploads/2013/06/2013-06-02-14.49.02-768x1024.jpg" width="225" height="300" src="http://content.jeremyfelt.com/uploads/2013/06/2013-06-02-14.49.02-225x300.jpg" class="attachment-medium" alt="Fireworks &quot;Might?&quot; be allowed in county parks" /></a>
<a href='http://jeremyfelt.com/places/2013/06/02/cascade-locks/attachment/2013-06-02-15-04-48/' title='2013-06-02 15.04.48'><img data-attachment-id="7677" data-orig-file="http://content.jeremyfelt.com/uploads/2013/06/2013-06-02-15.04.48.jpg" data-orig-size="3264,2448" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;2.4&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;iPhone 5&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1370185488&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;4.13&quot;,&quot;iso&quot;:&quot;50&quot;,&quot;shutter_speed&quot;:&quot;0.00031298904538341&quot;,&quot;title&quot;:&quot;&quot;}" data-image-title="2013-06-02 15.04.48" data-image-description="" data-medium-file="http://content.jeremyfelt.com/uploads/2013/06/2013-06-02-15.04.48-300x225.jpg" data-large-file="http://content.jeremyfelt.com/uploads/2013/06/2013-06-02-15.04.48-1024x768.jpg" width="300" height="225" src="http://content.jeremyfelt.com/uploads/2013/06/2013-06-02-15.04.48-300x225.jpg" class="attachment-medium" alt="Swell City - kite surfing, windsurfing, and a pirate ship!" /></a>
<a href='http://jeremyfelt.com/places/2013/06/02/cascade-locks/attachment/2013-06-02-16-56-37/' title='2013-06-02 16.56.37'><img data-attachment-id="7678" data-orig-file="http://content.jeremyfelt.com/uploads/2013/06/2013-06-02-16.56.37.jpg" data-orig-size="3264,2448" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;2.4&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;iPhone 5&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1370192197&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;4.13&quot;,&quot;iso&quot;:&quot;50&quot;,&quot;shutter_speed&quot;:&quot;0.00079302141157811&quot;,&quot;title&quot;:&quot;&quot;}" data-image-title="2013-06-02 16.56.37" data-image-description="" data-medium-file="http://content.jeremyfelt.com/uploads/2013/06/2013-06-02-16.56.37-300x225.jpg" data-large-file="http://content.jeremyfelt.com/uploads/2013/06/2013-06-02-16.56.37-1024x768.jpg" width="300" height="225" src="http://content.jeremyfelt.com/uploads/2013/06/2013-06-02-16.56.37-300x225.jpg" class="attachment-medium" alt="Looking East from the Cascade Locks on the bridge over to Thunder Island" /></a>
<a href='http://jeremyfelt.com/places/2013/06/02/cascade-locks/attachment/2013-06-02-17-14-34/' title='2013-06-02 17.14.34'><img data-attachment-id="7679" data-orig-file="http://content.jeremyfelt.com/uploads/2013/06/2013-06-02-17.14.34.jpg" data-orig-size="3264,2448" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;2.4&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;iPhone 5&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1370193274&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;4.13&quot;,&quot;iso&quot;:&quot;50&quot;,&quot;shutter_speed&quot;:&quot;0.00051599587203302&quot;,&quot;title&quot;:&quot;&quot;}" data-image-title="2013-06-02 17.14.34" data-image-description="" data-medium-file="http://content.jeremyfelt.com/uploads/2013/06/2013-06-02-17.14.34-300x225.jpg" data-large-file="http://content.jeremyfelt.com/uploads/2013/06/2013-06-02-17.14.34-1024x768.jpg" width="300" height="225" src="http://content.jeremyfelt.com/uploads/2013/06/2013-06-02-17.14.34-300x225.jpg" class="attachment-medium" alt="The bridge with an epic name - Bridge of the Gods" /></a>
<a href='http://jeremyfelt.com/places/2013/06/02/cascade-locks/attachment/2013-06-02-17-14-41/' title='2013-06-02 17.14.41'><img data-attachment-id="7680" data-orig-file="http://content.jeremyfelt.com/uploads/2013/06/2013-06-02-17.14.41.jpg" data-orig-size="2448,3264" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;2.4&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;iPhone 5&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1370193281&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;4.13&quot;,&quot;iso&quot;:&quot;50&quot;,&quot;shutter_speed&quot;:&quot;0.00033200531208499&quot;,&quot;title&quot;:&quot;&quot;}" data-image-title="2013-06-02 17.14.41" data-image-description="" data-medium-file="http://content.jeremyfelt.com/uploads/2013/06/2013-06-02-17.14.41-225x300.jpg" data-large-file="http://content.jeremyfelt.com/uploads/2013/06/2013-06-02-17.14.41-768x1024.jpg" width="225" height="300" src="http://content.jeremyfelt.com/uploads/2013/06/2013-06-02-17.14.41-225x300.jpg" class="attachment-medium" alt="Another view of the Bridge of the Gods on the Columbia River" /></a>
<a href='http://jeremyfelt.com/places/2013/06/02/cascade-locks/attachment/2013-06-02-17-32-49/' title='2013-06-02 17.32.49'><img data-attachment-id="7681" data-orig-file="http://content.jeremyfelt.com/uploads/2013/06/2013-06-02-17.32.49.jpg" data-orig-size="3264,2448" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;2.4&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;iPhone 5&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1370194369&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;4.13&quot;,&quot;iso&quot;:&quot;50&quot;,&quot;shutter_speed&quot;:&quot;0.0083333333333333&quot;,&quot;title&quot;:&quot;&quot;}" data-image-title="2013-06-02 17.32.49" data-image-description="" data-medium-file="http://content.jeremyfelt.com/uploads/2013/06/2013-06-02-17.32.49-300x225.jpg" data-large-file="http://content.jeremyfelt.com/uploads/2013/06/2013-06-02-17.32.49-1024x768.jpg" width="300" height="225" src="http://content.jeremyfelt.com/uploads/2013/06/2013-06-02-17.32.49-300x225.jpg" class="attachment-medium" alt="Rainbow Trout at the Bonneville hatchery" /></a>
<a href='http://jeremyfelt.com/places/2013/06/02/cascade-locks/attachment/2013-06-02-17-36-18/' title='2013-06-02 17.36.18'><img data-attachment-id="7682" data-orig-file="http://content.jeremyfelt.com/uploads/2013/06/2013-06-02-17.36.18.jpg" data-orig-size="2448,3264" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;2.4&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;iPhone 5&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1370194578&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;4.13&quot;,&quot;iso&quot;:&quot;50&quot;,&quot;shutter_speed&quot;:&quot;0.00079302141157811&quot;,&quot;title&quot;:&quot;&quot;}" data-image-title="2013-06-02 17.36.18" data-image-description="" data-medium-file="http://content.jeremyfelt.com/uploads/2013/06/2013-06-02-17.36.18-225x300.jpg" data-large-file="http://content.jeremyfelt.com/uploads/2013/06/2013-06-02-17.36.18-768x1024.jpg" width="225" height="300" src="http://content.jeremyfelt.com/uploads/2013/06/2013-06-02-17.36.18-225x300.jpg" class="attachment-medium" alt="And the cages!" /></a>

<p>Another day with a rental car and another day driving east. We had intended to head for the coast this morning, but we were feeling good about the prospects of either Hood River or Cascade Locks, so we wanted to take another look at some specific places. The Cascade Locks Marine Park is gorgeous and very much worth the pause. We also had wonderful views driving from <a href="http://en.wikipedia.org/wiki/Bridge_of_the_Gods_(modern_structure)">Bridge of the Gods</a> up to the crossing at Hood River on the Louis and Clark Highway.</p>
<p>The post <a href="http://jeremyfelt.com/places/2013/06/02/cascade-locks/">Cascade Locks</a> appeared first on <a href="http://jeremyfelt.com">Jeremy Felt</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://jeremyfelt.com/places/2013/06/02/cascade-locks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hack and Hike</title>
		<link>http://jeremyfelt.com/ideas/2013/06/02/hack-and-hike/</link>
		<comments>http://jeremyfelt.com/ideas/2013/06/02/hack-and-hike/#comments</comments>
		<pubDate>Sun, 02 Jun 2013 21:46:59 +0000</pubDate>
		<dc:creator>Jeremy Felt</dc:creator>
				<category><![CDATA[Ideas]]></category>

		<guid isPermaLink="false">http://jeremyfelt.com/?p=7669</guid>
		<description><![CDATA[<p>Hack and Hike: A day spent hacking on ideas without computers while hiking.</p><p>The post <a href="http://jeremyfelt.com/ideas/2013/06/02/hack-and-hike/">Hack and Hike</a> appeared first on <a href="http://jeremyfelt.com">Jeremy Felt</a>.</p>]]></description>
				<content:encoded><![CDATA[<p><strong>Hack and Hike:</strong> A day spent hacking on ideas without computers while hiking.</p>
<p>The post <a href="http://jeremyfelt.com/ideas/2013/06/02/hack-and-hike/">Hack and Hike</a> appeared first on <a href="http://jeremyfelt.com">Jeremy Felt</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://jeremyfelt.com/ideas/2013/06/02/hack-and-hike/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Trillium Lake</title>
		<link>http://jeremyfelt.com/places/2013/06/01/trillium-lake/</link>
		<comments>http://jeremyfelt.com/places/2013/06/01/trillium-lake/#comments</comments>
		<pubDate>Sun, 02 Jun 2013 05:30:21 +0000</pubDate>
		<dc:creator>Jeremy Felt</dc:creator>
				<category><![CDATA[Places]]></category>
		<category><![CDATA[Mount Hood]]></category>
		<category><![CDATA[oregon]]></category>

		<guid isPermaLink="false">http://jeremyfelt.com/?p=7655</guid>
		<description><![CDATA[<p>It was pretty much the perfect day to rent a car and get out of Portland to head East. After hanging out in Hood River for a bit, then meandering on miles of gravel between The Dalles and Route 35, we took advantage of the sunshine and enjoyed a beautiful short hike around Trillium Lake. It&#8217;s [&#8230;]</p><p>The post <a href="http://jeremyfelt.com/places/2013/06/01/trillium-lake/">Trillium Lake</a> appeared first on <a href="http://jeremyfelt.com">Jeremy Felt</a>.</p>]]></description>
				<content:encoded><![CDATA[
<a href='http://jeremyfelt.com/places/2013/06/01/trillium-lake/attachment/2013-06-01-14-43-05/' title='2013-06-01 14.43.05'><img data-attachment-id="7656" data-orig-file="http://content.jeremyfelt.com/uploads/2013/06/2013-06-01-14.43.05.jpg" data-orig-size="3264,2448" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;2.4&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;iPhone 5&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1370097785&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;4.13&quot;,&quot;iso&quot;:&quot;80&quot;,&quot;shutter_speed&quot;:&quot;0.0083333333333333&quot;,&quot;title&quot;:&quot;&quot;}" data-image-title="2013-06-01 14.43.05" data-image-description="" data-medium-file="http://content.jeremyfelt.com/uploads/2013/06/2013-06-01-14.43.05-300x225.jpg" data-large-file="http://content.jeremyfelt.com/uploads/2013/06/2013-06-01-14.43.05-1024x768.jpg" width="300" height="225" src="http://content.jeremyfelt.com/uploads/2013/06/2013-06-01-14.43.05-300x225.jpg" class="attachment-medium" alt="2013-06-01 14.43.05" /></a>
<a href='http://jeremyfelt.com/places/2013/06/01/trillium-lake/attachment/2013-06-01-15-25-20/' title='2013-06-01 15.25.20'><img data-attachment-id="7657" data-orig-file="http://content.jeremyfelt.com/uploads/2013/06/2013-06-01-15.25.20.jpg" data-orig-size="2448,3264" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;2.4&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;iPhone 5&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1370100320&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;4.13&quot;,&quot;iso&quot;:&quot;50&quot;,&quot;shutter_speed&quot;:&quot;0.000109998900011&quot;,&quot;title&quot;:&quot;&quot;}" data-image-title="2013-06-01 15.25.20" data-image-description="" data-medium-file="http://content.jeremyfelt.com/uploads/2013/06/2013-06-01-15.25.20-225x300.jpg" data-large-file="http://content.jeremyfelt.com/uploads/2013/06/2013-06-01-15.25.20-768x1024.jpg" width="225" height="300" src="http://content.jeremyfelt.com/uploads/2013/06/2013-06-01-15.25.20-225x300.jpg" class="attachment-medium" alt="2013-06-01 15.25.20" /></a>
<a href='http://jeremyfelt.com/places/2013/06/01/trillium-lake/attachment/2013-06-01-16-00-51/' title='2013-06-01 16.00.51'><img data-attachment-id="7658" data-orig-file="http://content.jeremyfelt.com/uploads/2013/06/2013-06-01-16.00.51.jpg" data-orig-size="3264,2448" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;2.4&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;iPhone 5&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1370102451&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;4.13&quot;,&quot;iso&quot;:&quot;50&quot;,&quot;shutter_speed&quot;:&quot;0.00025799793601651&quot;,&quot;title&quot;:&quot;&quot;}" data-image-title="2013-06-01 16.00.51" data-image-description="" data-medium-file="http://content.jeremyfelt.com/uploads/2013/06/2013-06-01-16.00.51-300x225.jpg" data-large-file="http://content.jeremyfelt.com/uploads/2013/06/2013-06-01-16.00.51-1024x768.jpg" width="300" height="225" src="http://content.jeremyfelt.com/uploads/2013/06/2013-06-01-16.00.51-300x225.jpg" class="attachment-medium" alt="2013-06-01 16.00.51" /></a>
<a href='http://jeremyfelt.com/places/2013/06/01/trillium-lake/attachment/2013-06-01-16-38-22/' title='2013-06-01 16.38.22'><img data-attachment-id="7659" data-orig-file="http://content.jeremyfelt.com/uploads/2013/06/2013-06-01-16.38.22.jpg" data-orig-size="4448,2532" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;2.4&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;iPhone 5&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1370104702&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;4.13&quot;,&quot;iso&quot;:&quot;50&quot;,&quot;shutter_speed&quot;:&quot;0.00038699690402477&quot;,&quot;title&quot;:&quot;&quot;}" data-image-title="2013-06-01 16.38.22" data-image-description="" data-medium-file="http://content.jeremyfelt.com/uploads/2013/06/2013-06-01-16.38.22-300x170.jpg" data-large-file="http://content.jeremyfelt.com/uploads/2013/06/2013-06-01-16.38.22-1024x582.jpg" width="300" height="170" src="http://content.jeremyfelt.com/uploads/2013/06/2013-06-01-16.38.22-300x170.jpg" class="attachment-medium" alt="2013-06-01 16.38.22" /></a>
<a href='http://jeremyfelt.com/places/2013/06/01/trillium-lake/attachment/2013-06-01-16-38-37/' title='2013-06-01 16.38.37'><img data-attachment-id="7660" data-orig-file="http://content.jeremyfelt.com/uploads/2013/06/2013-06-01-16.38.37.jpg" data-orig-size="2448,3264" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;2.4&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;iPhone 5&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1370104717&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;4.13&quot;,&quot;iso&quot;:&quot;50&quot;,&quot;shutter_speed&quot;:&quot;0.00025799793601651&quot;,&quot;title&quot;:&quot;&quot;}" data-image-title="2013-06-01 16.38.37" data-image-description="" data-medium-file="http://content.jeremyfelt.com/uploads/2013/06/2013-06-01-16.38.37-225x300.jpg" data-large-file="http://content.jeremyfelt.com/uploads/2013/06/2013-06-01-16.38.37-768x1024.jpg" width="225" height="300" src="http://content.jeremyfelt.com/uploads/2013/06/2013-06-01-16.38.37-225x300.jpg" class="attachment-medium" alt="2013-06-01 16.38.37" /></a>
<a href='http://jeremyfelt.com/places/2013/06/01/trillium-lake/attachment/2013-06-01-17-15-09/' title='2013-06-01 17.15.09'><img data-attachment-id="7661" data-orig-file="http://content.jeremyfelt.com/uploads/2013/06/2013-06-01-17.15.09.jpg" data-orig-size="2448,3264" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;2.4&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;iPhone 5&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1370106909&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;4.13&quot;,&quot;iso&quot;:&quot;50&quot;,&quot;shutter_speed&quot;:&quot;0.0024330900243309&quot;,&quot;title&quot;:&quot;&quot;}" data-image-title="2013-06-01 17.15.09" data-image-description="" data-medium-file="http://content.jeremyfelt.com/uploads/2013/06/2013-06-01-17.15.09-225x300.jpg" data-large-file="http://content.jeremyfelt.com/uploads/2013/06/2013-06-01-17.15.09-768x1024.jpg" width="225" height="300" src="http://content.jeremyfelt.com/uploads/2013/06/2013-06-01-17.15.09-225x300.jpg" class="attachment-medium" alt="2013-06-01 17.15.09" /></a>
<a href='http://jeremyfelt.com/places/2013/06/01/trillium-lake/attachment/2013-06-01-17-15-50/' title='2013-06-01 17.15.50'><img data-attachment-id="7662" data-orig-file="http://content.jeremyfelt.com/uploads/2013/06/2013-06-01-17.15.50.jpg" data-orig-size="3264,2448" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;2.4&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;iPhone 5&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1370106950&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;4.13&quot;,&quot;iso&quot;:&quot;50&quot;,&quot;shutter_speed&quot;:&quot;0.0010695187165775&quot;,&quot;title&quot;:&quot;&quot;}" data-image-title="2013-06-01 17.15.50" data-image-description="" data-medium-file="http://content.jeremyfelt.com/uploads/2013/06/2013-06-01-17.15.50-300x225.jpg" data-large-file="http://content.jeremyfelt.com/uploads/2013/06/2013-06-01-17.15.50-1024x768.jpg" width="300" height="225" src="http://content.jeremyfelt.com/uploads/2013/06/2013-06-01-17.15.50-300x225.jpg" class="attachment-medium" alt="2013-06-01 17.15.50" /></a>
<a href='http://jeremyfelt.com/places/2013/06/01/trillium-lake/attachment/2013-06-01-17-15-56/' title='2013-06-01 17.15.56'><img data-attachment-id="7663" data-orig-file="http://content.jeremyfelt.com/uploads/2013/06/2013-06-01-17.15.56.jpg" data-orig-size="2448,3264" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;2.4&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;iPhone 5&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1370106956&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;4.13&quot;,&quot;iso&quot;:&quot;50&quot;,&quot;shutter_speed&quot;:&quot;0.002710027100271&quot;,&quot;title&quot;:&quot;&quot;}" data-image-title="2013-06-01 17.15.56" data-image-description="" data-medium-file="http://content.jeremyfelt.com/uploads/2013/06/2013-06-01-17.15.56-225x300.jpg" data-large-file="http://content.jeremyfelt.com/uploads/2013/06/2013-06-01-17.15.56-768x1024.jpg" width="225" height="300" src="http://content.jeremyfelt.com/uploads/2013/06/2013-06-01-17.15.56-225x300.jpg" class="attachment-medium" alt="2013-06-01 17.15.56" /></a>
<a href='http://jeremyfelt.com/places/2013/06/01/trillium-lake/attachment/2013-06-01-17-20-09/' title='2013-06-01 17.20.09'><img data-attachment-id="7664" data-orig-file="http://content.jeremyfelt.com/uploads/2013/06/2013-06-01-17.20.09.jpg" data-orig-size="3264,2448" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;2.4&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;iPhone 5&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1370107209&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;4.13&quot;,&quot;iso&quot;:&quot;80&quot;,&quot;shutter_speed&quot;:&quot;0.05&quot;,&quot;title&quot;:&quot;&quot;}" data-image-title="2013-06-01 17.20.09" data-image-description="" data-medium-file="http://content.jeremyfelt.com/uploads/2013/06/2013-06-01-17.20.09-300x225.jpg" data-large-file="http://content.jeremyfelt.com/uploads/2013/06/2013-06-01-17.20.09-1024x768.jpg" width="300" height="225" src="http://content.jeremyfelt.com/uploads/2013/06/2013-06-01-17.20.09-300x225.jpg" class="attachment-medium" alt="2013-06-01 17.20.09" /></a>
<a href='http://jeremyfelt.com/places/2013/06/01/trillium-lake/attachment/2013-06-01-17-31-25/' title='2013-06-01 17.31.25'><img data-attachment-id="7665" data-orig-file="http://content.jeremyfelt.com/uploads/2013/06/2013-06-01-17.31.25.jpg" data-orig-size="2448,3264" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;2.4&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;iPhone 5&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1370107885&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;4.13&quot;,&quot;iso&quot;:&quot;50&quot;,&quot;shutter_speed&quot;:&quot;0.0023980815347722&quot;,&quot;title&quot;:&quot;&quot;}" data-image-title="2013-06-01 17.31.25" data-image-description="" data-medium-file="http://content.jeremyfelt.com/uploads/2013/06/2013-06-01-17.31.25-225x300.jpg" data-large-file="http://content.jeremyfelt.com/uploads/2013/06/2013-06-01-17.31.25-768x1024.jpg" width="225" height="300" src="http://content.jeremyfelt.com/uploads/2013/06/2013-06-01-17.31.25-225x300.jpg" class="attachment-medium" alt="2013-06-01 17.31.25" /></a>
<a href='http://jeremyfelt.com/places/2013/06/01/trillium-lake/attachment/2013-06-01-17-32-17/' title='2013-06-01 17.32.17'><img data-attachment-id="7666" data-orig-file="http://content.jeremyfelt.com/uploads/2013/06/2013-06-01-17.32.17.jpg" data-orig-size="3264,2448" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;2.4&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;iPhone 5&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1370107937&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;4.13&quot;,&quot;iso&quot;:&quot;50&quot;,&quot;shutter_speed&quot;:&quot;0.033333333333333&quot;,&quot;title&quot;:&quot;&quot;}" data-image-title="2013-06-01 17.32.17" data-image-description="" data-medium-file="http://content.jeremyfelt.com/uploads/2013/06/2013-06-01-17.32.17-300x225.jpg" data-large-file="http://content.jeremyfelt.com/uploads/2013/06/2013-06-01-17.32.17-1024x768.jpg" width="300" height="225" src="http://content.jeremyfelt.com/uploads/2013/06/2013-06-01-17.32.17-300x225.jpg" class="attachment-medium" alt="2013-06-01 17.32.17" /></a>

<p>It was pretty much the perfect day to rent a car and get out of Portland to head East. After hanging out in Hood River for a bit, then meandering on miles of gravel between The Dalles and Route 35, we took advantage of the sunshine and enjoyed a beautiful short hike around <a href="http://en.wikipedia.org/wiki/Trillium_Lake">Trillium Lake</a>. It&#8217;s days like these that make not owning a car seem much less appealing. Off to the coast tomorrow!</p>
<p>The post <a href="http://jeremyfelt.com/places/2013/06/01/trillium-lake/">Trillium Lake</a> appeared first on <a href="http://jeremyfelt.com">Jeremy Felt</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://jeremyfelt.com/places/2013/06/01/trillium-lake/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Subway Ballot</title>
		<link>http://jeremyfelt.com/ideas/2013/05/29/subway-ballot/</link>
		<comments>http://jeremyfelt.com/ideas/2013/05/29/subway-ballot/#comments</comments>
		<pubDate>Thu, 30 May 2013 01:48:37 +0000</pubDate>
		<dc:creator>Jeremy Felt</dc:creator>
				<category><![CDATA[Ideas]]></category>
		<category><![CDATA[Election]]></category>
		<category><![CDATA[public transportation]]></category>

		<guid isPermaLink="false">http://jeremyfelt.com/?p=7647</guid>
		<description><![CDATA[<p>I saw this Subway Ballet headline and misread it as Subway Ballot. My mind went straight to &#8220;no way! How cool would it be to cast a ballot while riding public transportation.&#8221; Alas, disappointment. One day.</p><p>The post <a href="http://jeremyfelt.com/ideas/2013/05/29/subway-ballot/">Subway Ballot</a> appeared first on <a href="http://jeremyfelt.com">Jeremy Felt</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>I saw this <a href="http://www.nytimes.com/2013/05/29/opinion/subway-ballet.html?smid=tw-nytimes&amp;_r=0">Subway Ballet</a> headline and misread it as Subway Ballot. My mind went straight to &#8220;no way! How cool would it be to cast a ballot while riding public transportation.&#8221;</p>
<p>Alas, disappointment. One day.</p>
<p>The post <a href="http://jeremyfelt.com/ideas/2013/05/29/subway-ballot/">Subway Ballot</a> appeared first on <a href="http://jeremyfelt.com">Jeremy Felt</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://jeremyfelt.com/ideas/2013/05/29/subway-ballot/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>v0.7 of Varying Vagrant Vagrants has been pushed</title>
		<link>http://jeremyfelt.com/code/2013/05/26/v0-7-of-varying-vagrant-vagrants-has-been-pushed/</link>
		<comments>http://jeremyfelt.com/code/2013/05/26/v0-7-of-varying-vagrant-vagrants-has-been-pushed/#comments</comments>
		<pubDate>Sun, 26 May 2013 23:08:30 +0000</pubDate>
		<dc:creator>Jeremy Felt</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[vagrant]]></category>

		<guid isPermaLink="false">http://jeremyfelt.com/?p=7643</guid>
		<description><![CDATA[<p>Lots and lots of changes this time around. It&#8217;s also worth reading the discussion on the Puppet provisioning pull request that did not go through. BREAKING CHANGES: Breaking changes are made in this release due to the reorganization of config files for PHP that will require a full vagrant destroy and vagrant up to resolve. Refactor of [&#8230;]</p><p>The post <a href="http://jeremyfelt.com/code/2013/05/26/v0-7-of-varying-vagrant-vagrants-has-been-pushed/">v0.7 of Varying Vagrant Vagrants has been pushed</a> appeared first on <a href="http://jeremyfelt.com">Jeremy Felt</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>Lots and lots of changes this time around. It&#8217;s also worth reading the discussion on the <a href="https://github.com/10up/varying-vagrant-vagrants/pull/65">Puppet provisioning pull request</a> that did not go through.</p>
<p><strong>BREAKING CHANGES</strong>: Breaking changes are made in this release due to the reorganization of config files for PHP that will require a full <em><strong>vagrant destroy</strong></em> and <em><strong>vagrant up</strong></em> to resolve.</p>
<ul>
<li>Refactor of package provisioning allows for better (and incremental) <em><strong>vagrant provision</strong></em> uses by checking individual package installs before attempting to install them again.</li>
<li>Remove several flags used to disable portions of provisioning. This favors the scaffold approach provided by VVV.</li>
<li>Improved nginx configuration and documentation</li>
<li>Use &#8211;asume-yes vs &#8211;force-yes with apt</li>
<li>Update Composer based on a specific revision rather than always checking for an update.</li>
<li>Update Mockery based on a specific version rather than using the dev channel.</li>
<li>Update [ack-grep](http://beyondgrep.com) to 2.04</li>
<li>Add php5-imap package</li>
<li>Update to Nginx 1.4 sources</li>
<li>Update to PHP 5.4 sources</li>
<li>Update to Git 1.8 sources</li>
<li>Updated xdebug configuration parameters, fixes 60s timeout issue</li>
<li>Better method to enable/disable xdebug configuration</li>
<li>Refactor handling of custom PHP, APC, and xdebug configurations</li>
<li>Bump default memcached memory allocation to 128M</li>
<li>Introduce custom apc.ini file, bump apc.shm_size to 128M</li>
<li>Provide a phpinfo URL at http://192.168.50.4/phpinfo/</li>
<li>Set WP_DEBUG to true by default for included installations of WordPress</li>
</ul>
<div class="post-format-content">
<p><a href="https://github.com/10up/varying-vagrant-vagrants/tree/v0.7">v0.7 of Varying Vagrant Vagrants has been pushed</a></div>
<p>The post <a href="http://jeremyfelt.com/code/2013/05/26/v0-7-of-varying-vagrant-vagrants-has-been-pushed/">v0.7 of Varying Vagrant Vagrants has been pushed</a> appeared first on <a href="http://jeremyfelt.com">Jeremy Felt</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://jeremyfelt.com/code/2013/05/26/v0-7-of-varying-vagrant-vagrants-has-been-pushed/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tofu Fritatta</title>
		<link>http://jeremyfelt.com/food-drink/food/2013/05/23/tofu-fritatta/</link>
		<comments>http://jeremyfelt.com/food-drink/food/2013/05/23/tofu-fritatta/#comments</comments>
		<pubDate>Fri, 24 May 2013 03:21:30 +0000</pubDate>
		<dc:creator>Jeremy Felt</dc:creator>
				<category><![CDATA[Food]]></category>
		<category><![CDATA[Fritatta]]></category>
		<category><![CDATA[tofu]]></category>

		<guid isPermaLink="false">http://jeremyfelt.com/?p=7638</guid>
		<description><![CDATA[<p></p><p>The post <a href="http://jeremyfelt.com/food-drink/food/2013/05/23/tofu-fritatta/">Tofu Fritatta</a> appeared first on <a href="http://jeremyfelt.com">Jeremy Felt</a>.</p>]]></description>
				<content:encoded><![CDATA[<div class="post-format-content">
<p><img src="http://content.jeremyfelt.com/uploads/2013/05/20130523-202116.jpg" width="1024" height="768" alt="20130523-202116.jpg" class="wp-image-7637 size-full" /></div>
<p>The post <a href="http://jeremyfelt.com/food-drink/food/2013/05/23/tofu-fritatta/">Tofu Fritatta</a> appeared first on <a href="http://jeremyfelt.com">Jeremy Felt</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://jeremyfelt.com/food-drink/food/2013/05/23/tofu-fritatta/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Proceed with Caution toward the Self-Driving Car</title>
		<link>http://jeremyfelt.com/thoughts/2013/05/12/proceed-with-caution-toward-the-self-driving-car/</link>
		<comments>http://jeremyfelt.com/thoughts/2013/05/12/proceed-with-caution-toward-the-self-driving-car/#comments</comments>
		<pubDate>Mon, 13 May 2013 04:17:59 +0000</pubDate>
		<dc:creator>Jeremy Felt</dc:creator>
				<category><![CDATA[Thoughts]]></category>

		<guid isPermaLink="false">http://jeremyfelt.com/?p=7632</guid>
		<description><![CDATA[<p>A good perspective on the caution required as we enter an era of self driving cars. While I normally find myself in full support of the switch, there were a few sections that made me think and we definitely have a long way to go. There was one statement that gave me pause: No system [&#8230;]</p><p>The post <a href="http://jeremyfelt.com/thoughts/2013/05/12/proceed-with-caution-toward-the-self-driving-car/">Proceed with Caution toward the Self-Driving Car</a> appeared first on <a href="http://jeremyfelt.com">Jeremy Felt</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>A good perspective on the caution required as we enter an era of self driving cars. While I normally find myself in full support of the switch, there were a few sections that made me think and we definitely have a long way to go.</p>
<p>There was one statement that gave me pause:</p>
<blockquote><p>No system can yet match a human driver’s ability to respond to the unexpected, and sudden failure could be catastrophic at high speed.</p></blockquote>
<p>I would argue that a primary reason for looking forward to autonomous vehicles is that no system can match a human driver&#8217;s ability to <strong>cause</strong> the unexpected.</p>
<div class="post-format-content">
<p><a href="http://www.technologyreview.com/review/513531/proceed-with-caution-toward-the-self-driving-car/">Proceed with Caution toward the Self-Driving Car</a></div>
<p>The post <a href="http://jeremyfelt.com/thoughts/2013/05/12/proceed-with-caution-toward-the-self-driving-car/">Proceed with Caution toward the Self-Driving Car</a> appeared first on <a href="http://jeremyfelt.com">Jeremy Felt</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://jeremyfelt.com/thoughts/2013/05/12/proceed-with-caution-toward-the-self-driving-car/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Tracking Your Heart Rate Via Webcam</title>
		<link>http://jeremyfelt.com/technology/2013/05/12/tracking-your-heart-rate-via-webcam/</link>
		<comments>http://jeremyfelt.com/technology/2013/05/12/tracking-your-heart-rate-via-webcam/#comments</comments>
		<pubDate>Sun, 12 May 2013 22:47:46 +0000</pubDate>
		<dc:creator>Jeremy Felt</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[health]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[tracking]]></category>

		<guid isPermaLink="false">http://jeremyfelt.com/?p=7628</guid>
		<description><![CDATA[<p>I remember being fascinated by the Eulerian Video Magnification work when some of the videos were being spread around, so I was excited to see the Webcam Pulse Detector project pop up on Quantified Self as I was scrolling through some missed feeds this morning. It didn&#8217;t seem too difficult to setup for somebody with some linux [&#8230;]</p><p>The post <a href="http://jeremyfelt.com/technology/2013/05/12/tracking-your-heart-rate-via-webcam/">Tracking Your Heart Rate Via Webcam</a> appeared first on <a href="http://jeremyfelt.com">Jeremy Felt</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>I remember being fascinated by the <a title="Eulerian Video Magnification for Revealing Subtle Changes in the World" href="http://people.csail.mit.edu/mrub/vidmag/">Eulerian Video Magnification</a> work when some of the videos were being spread around, so I was excited to see the <a href="https://github.com/thearn/webcam-pulse-detector">Webcam Pulse Detector</a> project <a href="http://quantifiedself.com/2013/04/hands-free-heart-rate/">pop up on Quantified Self</a> as I was scrolling through some missed feeds this morning.</p>
<p>It didn&#8217;t seem too difficult to setup for somebody with some linux familiarity and I set off to make it happen on my laptop.</p>
<p>The entire process took a couple hours. Some of that was due to missteps in installing OpenCV or not using sudo in the right place. The rest was due to the unavoidable—some packages just take a long time to install.</p>
<p>Seeing it finally work is really, really cool. Using my forehead, the app seemed to consistently track my heart rate at around 54-57bpm. At the same time I measured my pulse at my wrist as 60bm. I&#8217;ll need to track the consistency over time and with non-resting heart rates as well, but that seems like an acceptable variance so far. Pretty cool stuff.</p>
<p>If you want to give it a go and you&#8217;re running OS X 10.8.3 on your machine, I&#8217;m embedding a gist with the commands I had to use to make this work along with some comments inline.</p>
<script src="https://gist.github.com/5565120.js"></script><noscript><pre><code class="language-shell shell"># Starting with...
# OS X 10.8.3
# python 2.7.2 // python --version
# c++ 4.0      // c++ --version
# g++ 4.2      // g++ --version
#
# Update/Install XCode command line utils
# c++ 4.2      // c++ --version
#
# Doing all my work in ~/Development
cd ~/Development

# Update brew packages
brew update

# Install Python Package Index
sudo easy_install pip

# Install NumPy - was already installed for me
sudo pip install numpy

# Verify that NumPy is available to Python
python
import numpy
quit()
# Would see a file import error if not successful

# SciPy requires a Fortran compiler, available via brew
brew install gfortran

# Install SciPy
sudo pip install scipy

# Verify that SciPy is available to Python
python
import scipy
quit()
# Would see a file import error if not successful

# Install matplotlib
sudo pip install matplotlib

# OpenCV 2.4.5
# 
# Download tar file for Mac/Linux from http://opencv.org/downloads.html
# to ~/Development
tar -xvf opencv-2.4.5.tar.gz
cd opencv-2.4.5
mkdir release
cd release
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D BUILD_PYTHON_SUPPORT=ON -D BUILD_EXAMPLES=ON ..
make
make install

# OpenCV was still not available to Python until I added
# it to the PYTHONPATH variable
PYTHONPATH=&quot;/usr/local/python-2.7.2&quot;
export PYTHONPATH

# Verify that cv2 is available to Python
python
import cv2
quit()
# Would see a file import error if not successful

# OpenMDAO 0.6.0
# 
# Download go-openmdao.py from http://openmdao.org/downloads-2/recent/
# to ~/Development
python go-openmdao.py

# Clone Webcam Pulse Detector repo
git clone git://github.com/thearn/webcam-pulse-detector.git

# Launch OpenMDAO terminal
. openmdao-0.6.0/bin/activate

# Launch Webcam Pulse Detector
cd webcam-pulse-detector
python get_pulse.py
</code></pre></noscript>
<p>There were also plenty of resources that proved invaluable in actually finding the right answers for installing some of these software packages:</p>
<ul>
<li><a style="line-height: 1.5;" title="Webcam Pulse Detector" href="https://github.com/thearn/webcam-pulse-detector">Webcam Pulse Detector</a></li>
<li><a style="line-height: 1.5;" href="http://forums.udacity.com/questions/100021223/installing-opencv-on-os-x-mountain-lion">Installing OpenCV on OS X Mountain Lion</a></li>
<li><a href="http://www.thisisthegreenroom.com/2011/installing-python-numpy-scipy-matplotlib-and-ipython-on-lion/#numpy">Installing Python, virtualenv, NumPy, SciPy, matplotlib and IPython on Lion or Mountain Lion</a></li>
<li><a href="http://stackoverflow.com/questions/15790501/why-cv2-so-missing-after-opencv-installed">Why cv2.so Missing After OpenCV Installed</a></li>
<li>A specific answer on <a href="http://stackoverflow.com/a/8708623">How to Install Python 2.7 Bindings for OpenCV Using Macports</a></li>
</ul>
<p>The post <a href="http://jeremyfelt.com/technology/2013/05/12/tracking-your-heart-rate-via-webcam/">Tracking Your Heart Rate Via Webcam</a> appeared first on <a href="http://jeremyfelt.com">Jeremy Felt</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://jeremyfelt.com/technology/2013/05/12/tracking-your-heart-rate-via-webcam/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>