<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
  <channel>
    <title>fss</title>
    <link>http://www.fivesevensix.com/</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>Ryan Carver's blog at fivesevensix.com</description>
    <item>
      <title>Wikirank</title>
      <description>&lt;p&gt;When I left Google last July, it was not so much to move forward, but to go back. I wanted to continue the amazing work that had only just begun with a small group of people over two years prior. That group of people has become &lt;a href="http://smallbatchinc.com"&gt;Small Batch Inc&lt;/a&gt;, and today we launched our first project, &lt;a href="http://wikirank.com"&gt;Wikirank&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;From our &lt;a href="http://wikirank.com/about"&gt;about&lt;/a&gt; page:&lt;/p&gt;

&lt;blockquote&gt;
Wikirank shows you what people are reading on Wikipedia. It’s based on the actual usage data from the Wikipedia servers, which the Wikimedia foundation makes available as a public service. We take that data, process it, and give it back to you in a format that’s easy to use and share. Wikirank reveals emerging trends, and lets you embed relevant charts in blog posts and on social media sites.
&lt;/blockquote&gt;

&lt;p&gt;For example, something from my second life as a &lt;a href="http://ryancarver.com"&gt;photographer&lt;/a&gt;. Medium format is superior!&lt;/p&gt;

&lt;p&gt;&lt;div class="wikirank-embed"&gt;&lt;p&gt;&lt;a href="http://wikirank.com/en/35mm_film,Medium_format_%28film%29?date=20090324"&gt;35 mm film and Medium format (film)&lt;/a&gt; on &lt;a href="http://wikirank.com/"&gt;Wikirank&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;script type="text/javascript" src="http://e.wikirank.com/wr.js"&gt;&lt;/script&gt;&lt;/p&gt;

&lt;p&gt;Built with a foundation of &lt;a href="http://merbivore.com"&gt;Merb&lt;/a&gt; and &lt;a href="http://tokyocabinet.sourceforge.net/spex-en.html"&gt;Tokyo Cabinet&lt;/a&gt; and hosted completely on &lt;a href="http://aws .amazon.com"&gt;Amazon Services&lt;/a&gt;, it's been an challenging and extremely educational project. Here's hoping it's just the first of many interesting things to come.&lt;/p&gt;</description>
      <pubDate>Wed, 25 Mar 2009 19:02:06 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:109</guid>
      <author>Ryan Carver</author>
      <link>http://feedproxy.google.com/~r/fss/~3/6G7s3q5y3Fg/wikirank</link>
      <category>wikirank</category>
      <category>smallbatchinc</category>
    <feedburner:origLink>http://www.fivesevensix.com/posts/2009/03/25/wikirank</feedburner:origLink></item>
    <item>
      <title>Automatic Analytics Tracking Code Insertion with PHP</title>
      <description>&lt;p&gt;Say you're creating a purely static website on a regular old php-enabled webhost. Let's say you're doing this with iWeb on Dreamhost for some reason. Don't ask.&lt;/p&gt;

&lt;p&gt;Now say you want to track the site with Google Analytics. iWeb has no way to insert raw code, and definitely no way to do it across all pages.&lt;/p&gt;

&lt;p&gt;Try this...&lt;/p&gt;

&lt;p&gt;&lt;code&gt;.htaccess&lt;/code&gt;&lt;/p&gt;

&lt;div class="syntax htaccess"&gt;&lt;pre&gt;
# Interpret html as php
AddHandler application/x-httpd-php .html

# Required so the xml prolog isn't intepreted as php
php_flag short_open_tag false

# Wrap all requests and add google analytics tracking code
php_value auto_prepend_file '_prepend.php'
php_value auto_append_file '_append.php'
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;&lt;code&gt;_prepend.php&lt;/code&gt;&lt;/p&gt;

&lt;div class="syntax php"&gt;&lt;pre&gt;
&amp;lt;?php
  ob_start();
?&amp;gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;&lt;code&gt;_append.php&lt;/code&gt;&lt;/p&gt;

&lt;div class="syntax php"&gt;&lt;pre&gt;
&amp;lt;?php
  $body = ob_get_contents();
  ob_end_clean();

  # If the page has a  &amp;lt;/body&amp;gt; tag
  if (preg_match('/&amp;lt;\/body&amp;gt;/', $body)) {

    # get the GA script tags
    ob_start();
    include(&amp;quot;_google_analytics.txt&amp;quot;);
    $google_analytics = ob_get_contents();
    ob_end_clean();

    # Add GA to the document
    $body_with_analytics = preg_replace('/&amp;lt;\/body&amp;gt;/', &amp;quot;$google_analytics&amp;lt;/body&amp;gt;&amp;quot;, $body);

    # Write the page with GA
    print($body_with_analytics);

  # Else just write the page
  } else {
    print($body);
  }
?&amp;gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;&lt;code&gt;_google_analytics.txt&lt;/code&gt;&lt;/p&gt;

&lt;div class="syntax txt"&gt;&lt;pre&gt;

&amp;lt;your GA tracking code&amp;gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Hey, it works.&lt;/p&gt;</description>
      <pubDate>Wed, 11 Jul 2007 18:30:11 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:108</guid>
      <author>Ryan Carver</author>
      <link>http://feedproxy.google.com/~r/fss/~3/1_VfWhCsQH0/automatic-analytics-tracking-code-insertion-with-php</link>
      <category>php</category>
      <category>googleanalytics</category>
      <category>hacks</category>
    <feedburner:origLink>http://www.fivesevensix.com/posts/2007/07/11/automatic-analytics-tracking-code-insertion-with-php</feedburner:origLink></item>
    <item>
      <title>Google Analytics, shiny &amp; new</title>
      <description>&lt;p&gt;Today we launched a new version of &lt;a href="http://analytics.google.com"&gt;Google Analytics&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;It's been a long and difficult road, but I'm really happy with the result. Hey, I even wrote some Flash again! &lt;/p&gt;

&lt;p&gt;Hope you enjoy it.&lt;/p&gt;</description>
      <pubDate>Tue, 08 May 2007 21:12:54 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:107</guid>
      <author>Ryan Carver</author>
      <link>http://feedproxy.google.com/~r/fss/~3/Mlcbc2CiCaI/omg-it-launched</link>
      <category>google</category>
      <category>analytics</category>
    <feedburner:origLink>http://www.fivesevensix.com/posts/2007/05/08/omg-it-launched</feedburner:origLink></item>
    <item>
      <title>A bad way to start the day</title>
      <description>&lt;blockquote&gt;
    &lt;p&gt;Committed revision 666.&lt;/p&gt;
&lt;/blockquote&gt;</description>
      <pubDate>Wed, 05 Jul 2006 17:09:15 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:106</guid>
      <author>Ryan Carver</author>
      <link>http://feedproxy.google.com/~r/fss/~3/WkvZkblBTME/a-bad-way-to-start-the-day</link>
      <category>coding</category>
    <feedburner:origLink>http://www.fivesevensix.com/posts/2006/07/05/a-bad-way-to-start-the-day</feedburner:origLink></item>
    <item>
      <title>Strong is a weakness</title>
      <description>&lt;p&gt;Just ran across &lt;a href="http://www.joshstaiger.org/archives/2006/02/a_tribute_to_st.html"&gt;Is Weak Typing Strong Enough?&lt;/a&gt;, one of &lt;a href="http://steve-yegge.blogspot.com/"&gt;Steve Yegge's&lt;/a&gt; &lt;a href="http://opal.cabochon.com/~stevey/blog-rants/"&gt;rants&lt;/a&gt;. It might be old news, but what a great comparison. First, he provides an argument for either side, one I totally agree with.&lt;/p&gt;

&lt;blockquote&gt;
    &lt;p&gt;&lt;em&gt;Above all, we need stability&lt;/em&gt;. We have enormous scale and massive business complexity. To create order out of inevitable chaos, we need rigorous modeling for both our code and our data. If we don't get the model and architecture mostly correct in the beginning, it will hurt us later, so we'd better invest a lot of effort in up-front design. We need hardened interfaces — which means static typing by definition, or users won't be able to see how to use the interfaces. We need to maximize performance, and this requires static types and meticulous data models. Our most important business advantages are the stability, reliability, predictability and performance of our systems and interfaces. Viva SOAP (or CORBA), UML and rigorous ERDs, DTDs or schemas for all XML, and {C++|Java|C#|OCaml|Haskell|Ada}.&lt;/p&gt;
    
    &lt;p&gt;&lt;em&gt;Above all, we need flexibility&lt;/em&gt;. Our business requirements are constantly changing in unpredictable ways, and rigid data models rarely anticipate these changes adequately. Small teams need to be able to deliver quickly on their own goals, yet simultaneously keep up with rapid changes in the rest of the business. Hence we should use flexible, expressive languages and data models, even if it increases the cost of achieving the performance we need. We can achieve sufficient reliability through a combination of rigorous unit testing and agile development practices. Our most important business advantage is our ability to deliver on new initiatives quickly. Viva XML/RPC and HTTP, mandatory agile programming, loose name/value pair modeling for both XML and relational data, and {Python|Ruby|Lisp|Smalltalk|Erlang}&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;But then he follows that up with&lt;/p&gt;

&lt;blockquote&gt;
    &lt;p&gt;The first camp only resorts to dynamic typing when they're backed into a corner.&lt;/p&gt;
    
    &lt;p&gt;The second camp only resorts to performance optimizations and interface/schema lockdowns when backed into a corner.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Now, it seems so obvious which is the more logical approach. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;With strong, you're forced to create a weaker system when (&lt;em&gt;not if&lt;/em&gt;) unexpected requirements come up. The problem is, those weak spots are guaranteed spread through the system, causing a clash of philosphies all over your code.&lt;/li&gt;
&lt;li&gt;With weak, you simply beef up error handling a bit or choose another technology when necessary. Because the entire system was built with a weak mentality, you haven't lost any additional stability.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So next time this argument comes up, just figure out what you're &lt;em&gt;really&lt;/em&gt; building and choose the right one. I bet 99 out of 100 times you'll go weak.&lt;/p&gt;</description>
      <pubDate>Sat, 01 Jul 2006 19:23:10 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:104</guid>
      <author>Ryan Carver</author>
      <link>http://feedproxy.google.com/~r/fss/~3/xgsSOUmEkwQ/strong-is-a-weakness</link>
      <category>coding</category>
    <feedburner:origLink>http://www.fivesevensix.com/posts/2006/07/01/strong-is-a-weakness</feedburner:origLink></item>
    <item>
      <title>SF Ruby Meeting</title>
      <description>&lt;p&gt;Ok, this is super late notice but I'll be at the &lt;a href="http://ruby.meetup.com/6/"&gt;San Francisco Ruby Meetup&lt;/a&gt; tonight, May 9 to give a quick demo of &lt;a href="http://www.measuremap.com/"&gt;Measure Map&lt;/a&gt;. Josh Susser, who's been writing good things at &lt;a href="http://blog.hasmanythrough.com/"&gt;has_many :through&lt;/a&gt; will be presenting on how to contribute to &lt;a href="http://www.rubyonrails.com/"&gt;Rails&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;&lt;small&gt;yes, it's been almost three months since my last post. yes google is keeping me busy. yes I'll try to do something here more often. if you really care what I'm up to, please check my &lt;a href="http://www.flickr.com/photos/fss/"&gt;flickr stream&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;</description>
      <pubDate>Tue, 09 May 2006 22:43:48 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:102</guid>
      <author>Ryan Carver</author>
      <link>http://feedproxy.google.com/~r/fss/~3/ucI8LpoM9t4/sf-ruby-meeting</link>
      <category>ruby</category>
      <category>sf</category>
    <feedburner:origLink>http://www.fivesevensix.com/posts/2006/05/09/sf-ruby-meeting</feedburner:origLink></item>
    <item>
      <title>One more thing...</title>
      <description>&lt;p&gt;As if enough things hadn't been &lt;a href="/posts/2006/02/08/changes-ch-ch-ch-ch"&gt;going on&lt;/a&gt;, &lt;a href="http://www.measuremap.com"&gt;Measure Map&lt;/a&gt; is now part of &lt;a href="http://www.google.com/"&gt;Google&lt;/a&gt;! There's no telling what the future will bring, but for now you can read &lt;a href="http://googleblog.blogspot.com/2006/02/here-comes-measure-map.html"&gt;our introduction&lt;/a&gt; on the &lt;a href="http://googleblog.blogspot.com/"&gt;Google Blog&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;I'm super excited for the endless possibilities this means for our little team and the future of tracking web sites. &lt;/p&gt;</description>
      <pubDate>Tue, 14 Feb 2006 23:03:44 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:101</guid>
      <author>Ryan Carver</author>
      <link>http://feedproxy.google.com/~r/fss/~3/49X8uVJPqkM/the-new-corporate-takeover</link>
      <category>measuremap</category>
      <category>google</category>
    <feedburner:origLink>http://www.fivesevensix.com/posts/2006/02/14/the-new-corporate-takeover</feedburner:origLink></item>
    <item>
      <title>Endurance test</title>
      <description>&lt;p&gt;I challenge you to watch the entire demo of &lt;a href="http://www.jboss.com/products/seam/SeamHBTools.html"&gt;Reverse engineering a Seam application from a database&lt;/a&gt;. Bonus points for not laughing and/or crying.&lt;/p&gt;

&lt;p&gt;I seriously can't tell if it's a screen capture or if it was animated by hand. The pacing reminds me far too much of &lt;em&gt;actually&lt;/em&gt; working in &lt;a href="http://www.eclipse.org/"&gt;Eclipse&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Via &lt;a href="http://blog.hibernate.org/cgi-bin/blosxom.cgi/2006/02/11#seamapp"&gt;In Relation To...&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Mon, 13 Feb 2006 21:51:27 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:100</guid>
      <author>Ryan Carver</author>
      <link>http://feedproxy.google.com/~r/fss/~3/t8KPigfadh8/endurance-test</link>
      <category>coding</category>
      <category>java</category>
    <feedburner:origLink>http://www.fivesevensix.com/posts/2006/02/13/endurance-test</feedburner:origLink></item>
    <item>
      <title>Changes (ch-ch-ch-ch)</title>
      <description>&lt;p&gt;A lot is going on right now. Let me bring you up to speed. &lt;/p&gt;

&lt;p&gt;Andrea and I have decided to divorce. It was a long and difficult decision for both of us. For this and many other reasons, I will be leaving Portland on Saturday. Destination: San Francisco. &lt;/p&gt;

&lt;p&gt;I hit the streets over the weekend to find an apartment. I can hardly believe I found a place at all, much less this &lt;a href="http://flickr.com/photos/fss/96520207/"&gt;beautifully restored victorian&lt;/a&gt; whose location couldn't be more perfect. It's in the heart of the &lt;a href="http://www.sfgate.com/traveler/guide/sf/neighborhoods/mission.shtml"&gt;Mission district&lt;/a&gt;, just around the corner from the awesome &lt;a href="http://www.aquariusrecords.org/"&gt;Aquarius Records&lt;/a&gt; and &lt;a href="http://ritualroasters.com/"&gt;Ritual Roasters&lt;/a&gt;. Ritual serves Portland's own &lt;a href="http://www.stumptowncoffee.com/"&gt;Stumptown Coffee&lt;/a&gt;, and does it right, so I should feel right at home. &lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.measuremap.com/"&gt;Measure Map&lt;/a&gt; is still moving along nicely. I can't say any more right now but there's much to come, and being in the same room every day with &lt;a href="http://veen.com/jeff/"&gt;Jeff&lt;/a&gt; and &lt;a href="http://veen.com/greg/"&gt;Greg&lt;/a&gt; will only help things. &lt;/p&gt;

&lt;p&gt;So, it's bittersweet so say the least. I'm looking forward to a fresh start but I will miss Portland, and my friends here, a lot. Thanks to all of you. &lt;/p&gt;</description>
      <pubDate>Wed, 08 Feb 2006 07:35:38 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:99</guid>
      <author>Ryan Carver</author>
      <link>http://feedproxy.google.com/~r/fss/~3/cnvFv4S6ljY/changes-ch-ch-ch-ch</link>
    <feedburner:origLink>http://www.fivesevensix.com/posts/2006/02/08/changes-ch-ch-ch-ch</feedburner:origLink></item>
    <item>
      <title>This isn’t Typo</title>
      <description>&lt;p&gt;Thought I should mention that this site isn't using &lt;a href="http://typo.leetsoft.com/trac/"&gt;Typo&lt;/a&gt; anymore. It had been running on a very old, and heavily customized version which made it extremely hard to upgrade. I started looking at converting to new version with themes and felt like it was overkill. What was once little Typo has really grown into a non-trivial app.&lt;/p&gt;

&lt;p&gt;Instead, I whipped up something really simple called &lt;strong&gt;Post&lt;/strong&gt;. A short list of features..&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Real-time preview in the composition interface&lt;/li&gt;
&lt;li&gt;Write using &lt;a href="http://daringfireball.net/projects/markdown/"&gt;Markdown&lt;/a&gt; and embed &lt;a href="http://rubyforge.org/projects/syntax/"&gt;Syntax highlighting&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Tagging (with &lt;a href="http://rubyforge.org/projects/taggable/"&gt;acts_as_taggable&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Nice AJAX touches for comment posting. Real-time preview probably coming soon.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All in 431 lines of code and 423 lines of test. Remember when this stuff was hard?&lt;/p&gt;</description>
      <pubDate>Mon, 30 Jan 2006 00:02:24 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:98</guid>
      <author>Ryan Carver</author>
      <link>http://feedproxy.google.com/~r/fss/~3/QA-d_kUjp-k/this-isnt-typo</link>
      <category>ruby</category>
      <category>rails</category>
    <feedburner:origLink>http://www.fivesevensix.com/posts/2006/01/30/this-isnt-typo</feedburner:origLink></item>
  </channel>
</rss>
