<?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:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
    <channel>
        <title>Chris Shiflett</title>
        <link>http://shiflett.org/</link>
        <language>en-us</language>
        <description>Blog</description>
        <geo:lat>40.67953</geo:lat><geo:long>-73.96837</geo:long><image><link>http://shiflett.org/</link><url>http://shiflett.org/images/shiflett.png</url><title>Chris Shiflett</title></image><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://shiflett.org/rss" type="application/rss+xml" /><feedburner:emailServiceId>shiflett</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><feedburner:browserFriendly>This is an XML content feed. It is intended to be viewed in a newsreader or syndicated to another site, subject to copyright and fair use.</feedburner:browserFriendly><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
            <title>Facebook, MySpace, and crossdomain.xml</title>
            <link>http://shiflett.org/blog/2009/nov/facebook-myspace-and-crossdomain.xml</link>
            <guid>http://shiflett.org/blog/2009/nov/facebook-myspace-and-crossdomain.xml</guid>
            <description><![CDATA[Thanks to the recent recurrence of a vulnerability I wrote about a few years ago and a gentle prod from Simon, I decided it would be good to write about the dangers of cross-domain Ajax with Flash again.

If you read about this story on TechCrunch, n...]]></description>
            <content:encoded><![CDATA[<p>Thanks to the recent <a href="http://yvoschaap.com/index.php/weblog/facebook_myspace_accounts_hijacked/">recurrence</a> of a vulnerability I wrote about a few years ago and a <a href="http://twitter.com/simonw/statuses/5457297841">gentle prod from Simon</a>, I decided it would be good to write about <a href="http://shiflett.org/blog/2006/sep/the-dangers-of-cross-domain-ajax-with-flash">the dangers of cross-domain Ajax with Flash</a> again.</p>

<div class="note"><p>If you read about <a href="http://techcrunch.com/2009/11/05/massive-facebook-and-myspace-flash-vulnerability-exposes-user-data/">this story on TechCrunch</a>, note that the "write up explaining all the details" is about an unrelated vulnerability.</p></div>

<p>I'll try to briefly explain the problem and then show how it relates to Facebook and MySpace. For more background information, please refer to these prior posts:</p>

<ul>
    <li><a href="http://shiflett.org/blog/2006/aug/cross-domain-ajax-insecurity">Cross-Domain Ajax Insecurity</a>, which discusses why true cross-domain Ajax is a bad idea, despite many misinformed Ajax developers claiming it's safe.</li>
    <li><a href="http://shiflett.org/blog/2006/sep/the-dangers-of-cross-domain-ajax-with-flash">Cross-Domain Ajax with Flash</a>, the post that discloses the vulnerability.</li>
    <li><a href="http://shiflett.org/blog/2006/oct/the-crossdomain.xml-witch-hunt">The crossdomain.xml Witch Hunt</a>, which mentions other big sites, such as <a href="http://youtube.com/">YouTube</a> and <a href="http://adobe.com/">Adobe</a>, that suffer from the same vulnerability.</li>
</ul>

<p>Web technologies that abide by the <a href="http://en.wikipedia.org/wiki/Same_origin_policy">same-origin policy</a> cannot reside on one site and interact with another. To be a little more specific, if you visit <a href="http://shiflett.org/">my site</a>, I can't make you update your status on <a href="http://twitter.com/">Twitter</a> . If I want to try, I need to get you to send an HTTP request similar to the following:</p>

<pre class="code">
<code>POST /status/update HTTP/1.1</code>
<code>Host: twitter.com</code>
<code>Content-Type: application/x-www-form-urlencoded; charset=UTF-8</code>
<code>X-Requested-With: XMLHttpRequest</code>
<code>Referer: http://twitter.com/</code>
<code>Content-Length: 66</code>
<code>&#160;</code>
<code>authenticity_token=snuffleupagus&#38;status=@shiflett+made+me+do+this.</code>
</pre>

<p>If I <a href="http://shiflett.org/blog/2007/mar/my-amazon-anniversary">use JavaScript</a> to do this, the request is sent from you to Twitter, so it also includes any cookies Twitter uses to identify you. (I did not include the <code>Cookie</code> header in this example, because it's really long.) Would this work? Luckily, no, but only because I have to know the value of your <code>authenticity_token</code>, Twitter's anti-CSRF token. (Read my <a href="http://shiflett.org/articles/cross-site-request-forgeries">article on CSRF</a> for more information about cross-site request forgeries and anti-CSRF tokens.)</p>

<p>To work around this safeguard, I need to get your anti-CSRF token. If you visit Twitter yourself and view source, you can see it:</p>

<pre class="code">
<code>&lt;input name="authenticity_token" value="snuffleupagus" type="hidden" /&gt;</code>
</pre>

<p>This token is yours and won't work for anyone else. If I want to forge a request from you, I need to know what <em>your</em> token is. Because you can view source and see your token, you know it's included in the response. I can use JavaScript to send a request from you, but is there a way I can also read the response?</p>

<p>Yes, there is. Meet <a href="http://en.wikipedia.org/wiki/XMLHttpRequest"><code>XMLHttpRequest()</code></a>, often abbreviated as XHR, the method most closely associated with Ajax. If I use XHR to send a request from you (to Twitter) and read the response, I can find your token and use that to update your status. Would this work? Luckily, no, because XHR abides by the same-origin policy. I can only use XHR to send requests that are considered to be within the same origin, so I cannot use XHR on my site to send a request (from you) to Twitter, a different site.</p>

<p>Enter <code>crossdomain.xml</code>. Flash supports cross-domain Ajax using an opt-in model, where the receiving site has to give permission. For example, I could make you update your Twitter status if <a href="http://twitter.com/crossdomain.xml">Twitter’s cross-domain policy file</a> let me:

<pre class="code">
<code><span class="default">&lt;?xml version</span><span class="keyword">=</span><span class="string">"1.0"</span><span class="default">?&gt;</span></code>
<code>&lt;!DOCTYPE cross-domain-policy SYSTEM</code>
<code>"http://www.adobe.com/xml/dtds/cross-domain-policy.dtd"&gt;</code>
<code>&#160;</code>
<code>&lt;cross-domain-policy&gt;</code>
<code>  &lt;allow-access-from domain="shiflett.org" /&gt;</code>
<code>&lt;/cross-domain-policy&gt;</code>
</pre>

<p>Luckily for you, Twitter doesn't trust me. More accurately, they don't force <em>you</em> to trust me. This is where open cross-domain policy files like the following are dangerous:</p>

<pre class="code">
<code><span class="default">&lt;?xml version</span><span class="keyword">=</span><span class="string">"1.0"</span><span class="default">?&gt;</span></code>
<code>&lt;!DOCTYPE cross-domain-policy SYSTEM</code>
<code>"http://www.adobe.com/xml/dtds/cross-domain-policy.dtd"&gt;</code>
<code>&#160;</code>
<code>&lt;cross-domain-policy&gt;</code>
<code>  &lt;allow-access-from domain="*" /&gt;</code>
<code>&lt;/cross-domain-policy&gt;</code>
</pre>

<p>A few days ago, <a href="http://yvoschaap.com/index.php/weblog/facebook_myspace_accounts_hijacked/">Yvo Schaap</a> realized that Facebook Connect not only had an open cross-domain policy file, but also had a complete running copy of the Facebook site. (As evidence, here's the <a href="http://www.connect.facebook.com/home.php">home page within the <code>www.connect.facebook.com</code> domain</a>. If you're logged in, you'll be recognized.)</p>

<p>In other words, Yvo found another site with the same vulnerability that has plagued so many others, including <a href="http://flickr.com/">Flickr</a>, <a href="http://youtube.com/">YouTube</a>, <a href="http://yahoo.com/">Yahoo</a>, and <a href="http://adobe.com/">Adobe</a>. (Cue <a href="http://last.fm/music/Queen/_/Another+One+Bites+the+Dust">Queen</a>.)</p>

<div class="note"><p>If someone can update your status, simpler exploits are also possible. For example, someone can effectively browse Twitter as you, possibly reading private updates from your friends with protected accounts. Because Facebook was vulnerable to this type of exploit, your personal information could have been exposed if one of your friends was exploited, even if you weren't.</p></div>

<p><a href="http://myspace.com/">MySpace</a> made a similar mistake. Although their <a href="http://myspace.com/crossdomain.xml">cross-domain policy file</a> was not open, it trusted <code>farm.sproutbuilder.com</code> (<a href="http://sproutinc.com/solution/sprout-builder/">Sprout Builder</a>), a site that allows users to upload their own <code>.swf</code> (Flash) files, thereby gaining <a href="http://shiflett.org/blog/2006/oct/using-csrf-for-browser-hijacking">complete access</a> to MySpace.</p>

<p>I'm glad Yvo waited until these vulnerabilities were fixed before blogging about them. Unfortunately, I already let the cat out of the bag a few years ago. Hopefully more people will pay attention this time and tread carefully when using <code>crossdomain.xml</code>. Adobe's own site has finally been fixed, so you no longer have to ignore the hypocrisy of their <a href="http://adobe.com/devnet/flashplayer/articles/cross_domain_policy.html">usage recommendations</a>:</p>

<blockquote><p>Using a cross-domain policy file could expose your site to various attacks. Please read this document before hosting a cross-domain policy.</p></blockquote>

<div class="note"><p>Thanks to <a href="http://dotjay.co.uk/">Jon</a>, <a href="http://seancoates.com/">Sean</a>, and <a href="http://simonwillison.net/">Simon</a> for reviewing a draft of this post.</p></div><p style="background-color:#D60;background-image:url(http://shiflett.org/img/bg_syndicate.gif);background-repeat:repeat-x;background-position:50% 0;font:12px arial,monaco,sans-serif;max-width:35em;margin:1em 0;padding:0;"><span style="display:block;background-color:transparent;background-image:url(http://shiflett.org/img/bg_syndicate_ul.gif);background-repeat:no-repeat;background-position:100% 0;color:#fff;font-size:1em;margin:0;padding:0.66em 1em;">Posted Fri, 06 Nov 2009 16:29:25 GMT in <a style="color:#fff;font-size:1em;font-weight:900;" href="http://shiflett.org/">Chris Shiflett&#8217;s Blog</a> <a href="http://shiflett.org/feeds/blog"><img style="margin:0;padding:0;border:0;vertical-align:bottom;" src="http://shiflett.org/img/icon_feed_standard.gif" alt="Chris Shiflett&#8217;s Feed"></a></span></p>]]></content:encoded>
            <pubDate>Fri, 06 Nov 2009 16:29:25 GMT</pubDate>
        </item>
        <item>
            <title>Git on Snow Leopard</title>
            <link>http://shiflett.org/blog/2009/nov/git-on-snow-leopard</link>
            <guid>http://shiflett.org/blog/2009/nov/git-on-snow-leopard</guid>
            <description><![CDATA[I've had a GitHub account for months, but I've yet to use it. After I mentionined on Twitter that I might start using it, the response was very positive. People really love Git and GitHub both.

Unsurprisingly, my Mac didn't already have git. (It's n...]]></description>
            <content:encoded><![CDATA[<p>I've had a <a href="http://github.com/shiflett">GitHub account</a> for months, but I've yet to use it. After I <a href="http://twitter.com/shiflett/status/5353668754">mentionined on Twitter</a> that I might start using it, the response was very positive. People really love <a href="http://git-scm.com/">Git</a> and <a href="https://github.com/">GitHub</a> both.</p>

<p>Unsurprisingly, <a href="http://apple.com/macbookpro/">my Mac</a> didn't already have <code>git</code>. (It's not part of the <a href="http://developer.apple.com/Tools/">developer tools</a> either.) GitHub has a nice <a href="http://help.github.com/mac-git-installation/">help page on installing it</a>, including <a href="http://github.com/guides/compiling-and-installing-git-on-mac-os-x">one specifically on compiling from source</a>. I chose the latter.</p>

<p>GitHub's help page on compiling from source is thorough enough to make it seem complicated. To show just how simple it is, here's exactly what I did:</p>

<pre class="code">
<code>curl -O http://kernel.org/pub/software/scm/git/git-1.6.5.2.tar.gz</code>
<code>tar -xvzf git-1.6.5.2.tar.gz </code>
<code>cd git-1.6.5.2</code>
<code>make prefix=/usr/local</code>
<code>sudo make install prefix=/usr/local</code>
</pre>

<p>GitHub provides very helpful instructions when you create a new project. For my new <a href="http://github.com/shiflett/getFavicon">getFavicon</a> project, the instructions were as follows:</p>

<pre class="code">
<code>mkdir getFavicon</code>
<code>cd getFavicon</code>
<code>git init</code>
<code>touch README</code>
<code>git add README</code>
<code>git commit -m 'first commit'</code>
<code>git remote add origin git@github.com:shiflett/getFavicon.git</code>
<code>git push origin master</code>
</pre>

<p>If only discovering <a href="http://en.wikipedia.org/wiki/Favicon">favicons</a> were this easy! :-)</p><p style="background-color:#D60;background-image:url(http://shiflett.org/img/bg_syndicate.gif);background-repeat:repeat-x;background-position:50% 0;font:12px arial,monaco,sans-serif;max-width:35em;margin:1em 0;padding:0;"><span style="display:block;background-color:transparent;background-image:url(http://shiflett.org/img/bg_syndicate_ul.gif);background-repeat:no-repeat;background-position:100% 0;color:#fff;font-size:1em;margin:0;padding:0.66em 1em;">Posted Mon, 02 Nov 2009 13:31:33 GMT in <a style="color:#fff;font-size:1em;font-weight:900;" href="http://shiflett.org/">Chris Shiflett&#8217;s Blog</a> <a href="http://shiflett.org/feeds/blog"><img style="margin:0;padding:0;border:0;vertical-align:bottom;" src="http://shiflett.org/img/icon_feed_standard.gif" alt="Chris Shiflett&#8217;s Feed"></a></span></p>]]></content:encoded>
            <pubDate>Mon, 02 Nov 2009 13:31:33 GMT</pubDate>
        </item>
        <item>
            <title>Learning HTML and CSS</title>
            <link>http://shiflett.org/blog/2009/oct/learning-html-and-css</link>
            <guid>http://shiflett.org/blog/2009/oct/learning-html-and-css</guid>
            <description><![CDATA[I've been a web developer for a decade and a half. I've learned a lot along the way, and I'm comfortable with a lot of web-related technologies. But, I'm not very good at HTML and CSS, and I've decided it's time to do something about that.

I'm learn...]]></description>
            <content:encoded><![CDATA[<p>I've been a web developer for a decade and a half. I've learned a lot along the way, and I'm comfortable with a lot of web-related technologies. But, I'm not very good at HTML and CSS, and I've decided it's time to do something about that.</p>

<p>I'm learning HTML and CSS.</p>

<p>When I ran my first marathon, I read a book called the <a href="http://www.amazon.com/exec/obidos/ASIN/1570281823/ref=nosim/chrisshiflett-20">Non-Runner's Marathon Trainer</a>. One of the first few chapters explains that you should choose a marathon and tell everyone you know you're running it. This helps motivate you, because you feel as if you've made a promise. You're on the hook.</p>

<p>I'm putting myself on the hook.</p>

<p>Now that I'm on the hook, it's time to get started. I'm reading a book <a href="http://jontangerine.com/log/2009/08/review-html-and-css-web-standards-solutions">Jon Tan reviewed</a> a few months ago called <a href="http://www.amazon.com/exec/obidos/ASIN/1430216069/ref=nosim/chrisshiflett-20">HTML and CSS Web Standards Solutions</a>. I think it's going to be a perfect fit.</p>

<p>I know HTTP <a href="http://www.amazon.com/exec/obidos/ASIN/0672324547/ref=nosim/chrisshiflett-20">pretty well</a>. Perhaps because HTTP is so familiar, I took a few notes while reading the first two chapters that I'd like to share with you in the hopes it will help you understand the Web a bit better.</p>

<p>From Chapter 2:</p>

<blockquote><p>The <code>.html</code> part is important: it is a suffix, referred to as an <em>extension</em>, that tells the browser the document is a web page.</p></blockquote>

<p>This isn't strictly true. URLs don't have file extensions, although it can appear so because of how easily you can map a URL to the filesystem, and how common it is to do so. The <code>Content-Type</code> header indicates the content type. This is why a URL like <em>http://shiflett.org/about</em> doesn't appear to have a file extension, yet browsers still know to treat it as HTML.</p>

<div class="note"><p>As a matter of design, I think URLs should always be carefully considered. As I've written before in <a href="http://shiflett.org/blog/2007/jan/url-vanity">URL Vanity</a> and <a href="http://shiflett.org/blog/2008/mar/urls-can-be-beautiful">URLs Can Be Beautiful</a>, they play an important role in how your site is perceived. Unless a file extension is meaningful, such as when the resource is an image, get rid of it.</p></div>

<p>A file extension can seem important if the resource is something users might download. Luckily, it's not even necessary in this scenario; you can indicate your preferred filename with the <code>Content-Disposition</code> header. For example, regardless of URL, you can suggest the filename <code>foo.bar</code> as follows:</p>

<pre class="code">
<code>Content-Disposition: inline; filename=foo.bar</code>
</pre>

<p>Also from Chapter 2:</p>

<blockquote><p>The last thing we need to ensure our pages validate is a character encoding.</p></blockquote>

<p>The suggested way to do this is with a <code>meta</code> tag:</p>

<pre class="code">
<code>&lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /&gt;</code>
</pre>

<p>A <code>meta</code> tag of the <code>http-equiv</code> variety is a substitute for an HTTP header. Adding this tag is useful, and the <a href="http://validator.w3.org/">W3C Validator</a> even suggests it. Pages still validate without it, but you'll receive the following warning if you leave it out:</p>

<blockquote><p>No character encoding information was found within the document, either in an HTML meta element or an XML declaration. It is often recommended to declare the character encoding in the document itself, especially if there is a chance that the document will be read from or saved to disk, CD, etc.</p></blockquote>

<p>In order to prevent problems, including <a href="http://shiflett.org/blog/2005/dec/google-xss-example">some security vulnerabilities</a>, be sure to always indicate the character encoding, and make sure you're consistent.</p>

<p>Now it's time to read Chapter 3. I hope you enjoyed this quick HTTP lesson.</p><p style="background-color:#D60;background-image:url(http://shiflett.org/img/bg_syndicate.gif);background-repeat:repeat-x;background-position:50% 0;font:12px arial,monaco,sans-serif;max-width:35em;margin:1em 0;padding:0;"><span style="display:block;background-color:transparent;background-image:url(http://shiflett.org/img/bg_syndicate_ul.gif);background-repeat:no-repeat;background-position:100% 0;color:#fff;font-size:1em;margin:0;padding:0.66em 1em;">Posted Mon, 26 Oct 2009 20:58:54 GMT in <a style="color:#fff;font-size:1em;font-weight:900;" href="http://shiflett.org/">Chris Shiflett&#8217;s Blog</a> <a href="http://shiflett.org/feeds/blog"><img style="margin:0;padding:0;border:0;vertical-align:bottom;" src="http://shiflett.org/img/icon_feed_standard.gif" alt="Chris Shiflett&#8217;s Feed"></a></span></p>]]></content:encoded>
            <pubDate>Mon, 26 Oct 2009 20:58:54 GMT</pubDate>
        </item>
        <item>
            <title>CodeWorks and Beer (Table)</title>
            <link>http://shiflett.org/blog/2009/oct/codeworks-and-beer-table</link>
            <guid>http://shiflett.org/blog/2009/oct/codeworks-and-beer-table</guid>
            <description><![CDATA[By all accounts, CodeWorks&#8201;&#8212;&#8201;a touring conference produced by the same people who publish php|architect Magazine&#8201;&#8212;&#8201;was a big success. Although I was exhausted from all the travel by the time we made it to NY, I'm rea...]]></description>
            <content:encoded><![CDATA[<p>By all accounts, <a href="http://cw.mtacon.com/">CodeWorks</a>&#8201;&#8212;&#8201;a touring conference produced by the same people who publish <a href="http://phparch.com/">php|architect Magazine</a>&#8201;&#8212;&#8201;was a big success. Although I was exhausted from all the travel by the time we made it to <a href="http://cw.mtacon.com/schedule/city/new-york">NY</a>, I'm really glad I took the time to participate.</p>

<p>Judging by the nice comments left on <a href="http://twitter.com/">Twitter</a> and <a href="http://joind.in/">Joind.in</a>, everyone really liked my talks. Comments like "this was my favorite talk of the day" and "by far the most entertaining presentation" are especially uplifting. I put a lot of effort into my talks, and I really appreciate when people take the time to let me know when I've done a good job. Thank you so much!</p>

<p>It was great having the conference visit NY, especially since it was so near my apartment. On the first day, I took everyone to <a href="http://siggysgoodfood.com/">Siggy's</a> for a late lunch. NY is known for great food, and Siggy's <a href="http://twitter.com/ElizabethN/status/4611530153">didn't disappoint</a>:</p>

<blockquote><p>Just had quite possibly the best veggie burger I've ever had. Ever. Thank you, Siggy's in NYC, you have made my day!</p></blockquote>

<p>For lunch the next day, I took everyone to <a href="http://en.wikipedia.org/wiki/Grimaldi%27s_Pizzeria">Grimaldi's</a> for the <a href="http://flickr.com/photos/zwhiterussian/3983872419">best pizza in the universe</a>, but the real highlight of the day was the beer dinner at Beer Table I had been planning.</p>

<p><a href="http://beertable.com/">Beer Table</a> is a local bar in <a href="http://en.wikipedia.org/wiki/Park_Slope,_Brooklyn">Park Slope</a> operated by Justin and Tricia Philips. The beer selection is admittedly overpriced, but it's worth it for a great selection, an intimate atmosphere, and very good food. When I first spoke to Justin about hosting a beer dinner there, he noted that Beer Table has never been closed to the public, but there's a first time for everything.</p>

<p>Beer Table's first private event hosted some of the Web's friendliest designers, developers, copywriters, and illustrators:</p>

<p class="blockimg"><a href="http://flickr.com/photos/jontangerine/3985604703"><img class="right" alt="" src="http://shiflett.org/img/beer-table.jpg"></a></p>

<ul>
    <li><a href="http://twitter.com/alancolville">Alan Colville</a></li>
    <li><a href="http://twitter.com/elviejo79">Alejandro Garcia</a></li>
    <li><a href="http://twitter.com/a">Andrei Zmievski</a></li>
    <li><a href="http://twitter.com/agentile">Anthony Gentile</a></li>
    <li><a href="http://twitter.com/arzoum">Arbi Arzoumani</a></li>
    <li><a href="http://twitter.com/ramsey">Ben Ramsey</a></li>
    <li><a href="http://twitter.com/shiflett">Chris Shiflett</a></li>
    <li><a href="http://twitter.com/derickr">Derick Rethans</a></li>
    <li><a href="http://twitter.com/funkatron">Ed Finkler</a></li>
    <li><a href="http://twitter.com/elizabethn">Elizabeth Naramore</a></li>
    <li><a href="http://twitter.com/h">Helgi Þormar Þorbjörnsson</a></li>
    <li><a href="http://twitter.com/jasonsantamaria">Jason Santa Maria</a></li>
    <li><a href="http://twitter.com/jessicahische">Jessica Hische</a></li>
    <li><a href="http://twitter.com/jontangerine">Jon Tan</a></li>
    <li><a href="http://twitter.com/likapika">Lisa Denlinger</a></li>
    <li><a href="http://twitter.com/nateabele">Nate Abele</a></li>
    <li><a href="http://twitter.com/slango">Nicholas Sloan</a></li>
    <li><a href="http://twitter.com/pmjones">Paul Jones</a></li>
    <li><a href="http://twitter.com/coates">Sean Coates</a></li>
    <li><a href="http://twitter.com/scottmac">Scott MacVicar</a></li>
    <li><a href="http://twitter.com/wspencer">William Burks Spencer</a></li>
</ul>

<p>For those who went, here is the <a href="http://flickr.com/photos/zwhiterussian/3985565240">menu</a>, with links to each of the beers, using <a href="http://ratebeer.com/">RateBeer</a> where possible, <a href="http://beeradvocate.com/">BeerAdvocate</a> otherwise:</p>

<dl>
    <dt>1<sup>st</sup> Course</dt>
        <dd>Roasted beet salad paired with <a href="http://ratebeer.com/beer/glazen-toren-saison-derpe-mere/44593/">De Glazen Toren Saison D'Erpe Mere</a> and <a href="http://ratebeer.com/ratings/beer/saint-somewhere-saison-athene/76552/">Saint Somewhere Saison Athene</a></dd>
    <dt>2<sup>nd</sup> Course</dt>
        <dd>Cannellini beans with pork, roasted tomatoes, and rosemary paired with <a href="http://ratebeer.com/beer/green-flash-west-coast-ipa/44905/87165/">Green Flash West Coast IPA</a> and <a href="http://beeradvocate.com/beer/profile/159/235">Burton Bridge Empire IPA</a></dd>
    <dt>3<sup>rd</sup> Course</dt>
        <dd>Triple chocolate cookies paired with <a href="http://ratebeer.com/beer/hitachino-nest-espresso-stout/71055/">Hitachino Espresso Stout</a> and <a href="http://ratebeer.com/beer/harveys-a-le-coq-imperial-stout/11032/">Harvey's A. le Coq 2003</a></dd>
</dl>

<div class="note"><p>Sadly, there's not a very good review of the Harvey's stout online. It tastes different from year to year, so reviews vary. We had the 2003 as part of the beer dinner, and some of us later tried the 2001. I thought both were great, and I now have a few bottles of each at home. :-)</p></div>

<p>Half of the dinner was sponsored by the fine people at <a href="http://echolibre.com/">echolibre</a>, a web development company based in Dublin that is the home of respected developers like <a href="http://twitter.com/davidcoallier">David Coallier</a> and <a href="http://twitter.com/h">Helgi Þormar Þorbjörnsson</a>. The other half was sponsored by a small group of people including <a href="http://twitter.com/jontangerine">Jon Tan</a>, <a href="http://twitter.com/a">Andrei Zmievski</a>, <a href="http://twitter.com/alancolville">Alan Colville</a>, and <a href="http://twitter.com/shiflett">myself</a>. We're not quite ready to talk about what we're up to, but we hope to be soon.</p>

<div class="note"><p>I'll add my slides to <a href="http://slideshare.net/shiflett">SlideShare</a> in the next few days. When I do, I'll mention it <a href="http://twitter.com/shiflett">on Twitter</a>. <a href="http://twitter.com/derickr">Derick</a> is currently editing a video he took of one of my talks. Unfortunately, it was one I gave very early in the morning, so I wasn't at my best, but it should be better than the slides alone.</p></div>

<p>This is the last of my conference appearances for the year. Now it's time to focus on my new company. More about that soon!</p><p style="background-color:#D60;background-image:url(http://shiflett.org/img/bg_syndicate.gif);background-repeat:repeat-x;background-position:50% 0;font:12px arial,monaco,sans-serif;max-width:35em;margin:1em 0;padding:0;"><span style="display:block;background-color:transparent;background-image:url(http://shiflett.org/img/bg_syndicate_ul.gif);background-repeat:no-repeat;background-position:100% 0;color:#fff;font-size:1em;margin:0;padding:0.66em 1em;">Posted Mon, 19 Oct 2009 02:11:05 GMT in <a style="color:#fff;font-size:1em;font-weight:900;" href="http://shiflett.org/">Chris Shiflett&#8217;s Blog</a> <a href="http://shiflett.org/feeds/blog"><img style="margin:0;padding:0;border:0;vertical-align:bottom;" src="http://shiflett.org/img/icon_feed_standard.gif" alt="Chris Shiflett&#8217;s Feed"></a></span></p>]]></content:encoded>
            <pubDate>Mon, 19 Oct 2009 02:11:05 GMT</pubDate>
        </item>
        <item>
            <title>CodeWorks Tour</title>
            <link>http://shiflett.org/blog/2009/sep/codeworks-tour</link>
            <guid>http://shiflett.org/blog/2009/sep/codeworks-tour</guid>
            <description><![CDATA[I'm on my way to CodeWorks, a touring conference currently underway that visits a total of seven cities across the US. I'm joining up with the conference in Atlanta to speak at the following stops:


    Atlanta
    Miami
    Washington
    New Y...]]></description>
            <content:encoded><![CDATA[<p>I'm on my way to <a href="http://cw.mtacon.com/">CodeWorks</a>, a touring conference currently underway that visits a total of seven cities across the US. I'm joining up with the conference in Atlanta to speak at the following stops:</p>

<ul>
    <li><a href="http://cw.mtacon.com/schedule/city/atlanta">Atlanta</a></li>
    <li><a href="http://cw.mtacon.com/schedule/city/miami">Miami</a></li>
    <li><a href="http://cw.mtacon.com/schedule/city/washington">Washington</a></li>
    <li><a href="http://cw.mtacon.com/schedule/city/new-york">New York</a></li>
</ul>

<p>I'll be giving two talks. The first is my current favorite, <a href="http://cw.mtacon.com/schedule/talk/security_design">Security-Centered Design</a>:

<blockquote><p>Security is more than filtering input and escaping output (FIEO). It's more than cross-site scripting (XSS) and cross-site request forgeries (CSRF). Security isn't even always black and white. In order to create a more secure user experience, we need to understand how people think. Perception can be as important as reality, and meeting user expectations is a fundamental of good security. In this multifarious talk, I'll introduce some of what I have learned about cognitive psychology, exploring topics such as change blindness and ambient signifiers, and I'll show some real-world examples that demonstrate the profound impact human behavior can have on security.</p></blockquote>

<p>The other is a new talk about <a href="http://cw.mtacon.com/schedule/talk/maps_php">Fun with Maps and PHP</a>:</p>

<blockquote><p> On a recent road trip around Iceland, my friends (PHP developers Andrei and Helgi) and I decided to make a travel site. We brought our cameras, GPS, and Flips, and we used PHP to:</p>
<ul>
    <li>Aggregate our experience in the form of photos (Flickr), tweets (Twitter), and videos (Vimeo).</li>
    <li>Geotag all of these assets, so we'd remember precisely where we were.</li>
    <li>Create a map that marks our path each day and plots our photos, tweets, and videos.</li>
</ul>
<p>We made most of this while taking in scenic views and experiencing all Iceland has to offer, and we learned a lot about geotagging, GPSes, time zones, and maps along the way. This talks shows you how to do the same, but you'll have to buy your own flight.</p></blockquote>

<p>I hope to see you there!</p><p style="background-color:#D60;background-image:url(http://shiflett.org/img/bg_syndicate.gif);background-repeat:repeat-x;background-position:50% 0;font:12px arial,monaco,sans-serif;max-width:35em;margin:1em 0;padding:0;"><span style="display:block;background-color:transparent;background-image:url(http://shiflett.org/img/bg_syndicate_ul.gif);background-repeat:no-repeat;background-position:100% 0;color:#fff;font-size:1em;margin:0;padding:0.66em 1em;">Posted Mon, 28 Sep 2009 15:21:43 GMT in <a style="color:#fff;font-size:1em;font-weight:900;" href="http://shiflett.org/">Chris Shiflett&#8217;s Blog</a> <a href="http://shiflett.org/feeds/blog"><img style="margin:0;padding:0;border:0;vertical-align:bottom;" src="http://shiflett.org/img/icon_feed_standard.gif" alt="Chris Shiflett&#8217;s Feed"></a></span></p>]]></content:encoded>
            <pubDate>Mon, 28 Sep 2009 15:21:43 GMT</pubDate>
        </item>
        <item>
            <title>South by Southwest</title>
            <link>http://shiflett.org/blog/2009/aug/south-by-southwest</link>
            <guid>http://shiflett.org/blog/2009/aug/south-by-southwest</guid>
            <description><![CDATA[I was in Austin for SXSW earlier this year to discuss Fontdeck with some of the Clearlefties and to socialize with friends. Because I was staying in a hotel room with Jon and Elliot (SXSW typography panelists), I was also hoping to gain some design tal...]]></description>
            <content:encoded><![CDATA[<p>I was in Austin for <a href="http://sxsw.com/">SXSW</a> earlier this year to discuss <a href="http://fontdeck.com/">Fontdeck</a> with some of the <a href="http://clearleft.com/">Clearlefties</a> and to socialize with friends. Because I was staying in a hotel room with <a href="http://jontangerine.com/">Jon</a> and <a href="http://elliotjaystocks.com/">Elliot</a> (<a href="http://sxswtypography.com/">SXSW typography</a> panelists), I was also hoping to gain some design talent through osmosis. I don't think my cunning plan worked, but I did walk away inspired, and I really enjoyed the positive, creative vibe of the conference.</p>

<p>Next year, I'm hoping to return as a panelist. As SXSW veterans know, part of the selection process involves voting via the <a href="http://panelpicker.sxsw.com/">PanelPicker</a>, where you can vote for the panels you'd like to see. (Voting is open now and closes Fri, 04 Sep 2009.) I know getting a panel accepted is a long shot, but I want to try. I'd really appreciate you taking a moment to <a href="http://panelpicker.sxsw.com/users/register">register</a> (if you haven't already), and kindly voting for my panels if they sound interesting. Anyone can vote; you don't have to have been to SXSW before or even be planning to attend this year.</p>

<p>The first panel is entitled <a href="http://panelpicker.sxsw.com/ideas/view/3949">Travelog With Maps: When 1000 Photos Aren't Enough</a>:</p>

<blockquote><p>They say photos are worth a thousand words. Is that enough to describe a trip? We don't think so. Learn how a GPS device, a dash of code, and a bit of creativity combine to tell the story of your travels. We did it in the land of fire and ice, and so can you.</p></blockquote>

<p>This panel includes my good friend <a href="http://zmievski.org/">Andrei</a> and is inspired by <a href="http://flickr.com/photos/tags/landice">our trip to Iceland</a> with <a href="http://helgi.ws/">Helgi</a>, where we spent a few hours every evening importing and interpreting GPS logs, geotagging and uploading photos, writing code, and aggregating various other assets, like videos and tweets. We wanted to create a travelog that our friends and family could use to follow along with our trip, and to tell our story to those who may be considering a similar trip of their own. In this panel, we want to share what we learned along the way and inspire others to share their own travel stories without having to overcome as many obstacles.</p>

<p>The other panel is entitled <a href="http://panelpicker.sxsw.com/ideas/view/4361">Social Web Security: From Psychology to Programming</a>:</p>

<blockquote><p>The user-generated, interconnected Social Web is ripe for the plucking by criminals and other malicious users. We'll demonstrate how psychology and user experience have as much to do with security as coding and sysadmin skills, and how to apply all of them to protect your users.</p></blockquote>

<p>This panel includes <a href="http://funkatron.com/">Ed</a>, <a href="http://simonwillison.net/">Simon</a>, and <a href="http://al3x.net/">Alex</a>, and explores the security implications of emerging trends in social apps as well as some innovative, nontraditional techniques you can use to help keep people and their data safe. This panel is one part web application security, one part design, and one part psychology. If you like my talk on security-centered design, I think you'll like this panel. I've been talking to Ed about this for quite some time, and we're really excited about it.</p>

<p>I appreciate you taking the time to vote. If you also want to be kind enough to share this on Twitter or elsewhere, I've created some short links you can use:</p>

<ul>
    <li><a href="http://tr.im/travelog">http://tr.im/travelog</a></li>
    <li><a href="http://tr.im/socialwebsecurity">http://tr.im/socialwebsecurity</a></li>
</ul>

<p>Here's hoping I see you in Austin. :-)</p><p style="background-color:#D60;background-image:url(http://shiflett.org/img/bg_syndicate.gif);background-repeat:repeat-x;background-position:50% 0;font:12px arial,monaco,sans-serif;max-width:35em;margin:1em 0;padding:0;"><span style="display:block;background-color:transparent;background-image:url(http://shiflett.org/img/bg_syndicate_ul.gif);background-repeat:no-repeat;background-position:100% 0;color:#fff;font-size:1em;margin:0;padding:0.66em 1em;">Posted Tue, 25 Aug 2009 16:44:46 GMT in <a style="color:#fff;font-size:1em;font-weight:900;" href="http://shiflett.org/">Chris Shiflett&#8217;s Blog</a> <a href="http://shiflett.org/feeds/blog"><img style="margin:0;padding:0;border:0;vertical-align:bottom;" src="http://shiflett.org/img/icon_feed_standard.gif" alt="Chris Shiflett&#8217;s Feed"></a></span></p>]]></content:encoded>
            <pubDate>Tue, 25 Aug 2009 16:44:46 GMT</pubDate>
        </item>
    </channel>
</rss>
