<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">
  <id>http://thinkrelevance.com</id>
  <rights>Copyright 2012, Relevance Inc.; all rights reserved.</rights>
  <title>Relevance Blog</title>
  <updated>2012-02-07T14:02:00Z</updated>
  <link rel="alternate" type="text/html" href="http://thinkrelevance.com/blog/" />
  <author>
    <name>Relevance</name>
    <email>webmaster@thinkrelevance.com</email>
  </author>
  <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/relevance-blog" /><feedburner:info uri="relevance-blog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><geo:lat>35.997193</geo:lat><geo:long>-78.897312</geo:long><entry>
    <title>Agile Reboot: Putting the Man back in Manifesto</title>
    <id>http://thinkrelevance.com/blog/2012/02/07/agile-reboot-putting-the-man-back-in-manifesto</id>
    <published>2012-02-07T14:02:00Z</published>
    <link href="http://feedproxy.google.com/~r/relevance-blog/~3/725ZyKaOI-Y/agile-reboot-putting-the-man-back-in-manifesto" />
    <author>
      <name>Marc Phillips</name>
      <email>marc@thinkrelevance.com</email>
    </author>
    <content type="html">&lt;p&gt;“Individuals and interactions over process and tools. Working software over comprehensive documentation. Customer collaboration over contract negotiation. Responding to change over following a plan.” That&amp;#39;s the entirety of the &lt;a href="http://agilemanifesto.org/"&gt;Agile Manifesto&lt;/a&gt;, by the way. Seems simple, doesn&amp;#39;t it? Yet there are flotillas of books and courses with detailed instructions and steps for &amp;quot;doing&amp;quot; Agile, as if it were a thing with specific rules and regulations. Hogwashery! Hear me now, the road to hell is paved with book covers and exam notes, it&amp;#39;s time to rise up and put the &amp;#39;man&amp;#39; (and woman) back in &amp;#39;manifesto&amp;#39;. Spoiler alert: getting the &amp;#39;fest&amp;#39; back in as well will be the topic of a future post...&lt;/p&gt;

&lt;p&gt;Great teams do not &amp;quot;do&amp;quot; Agile, great teams &amp;quot;are&amp;quot; Agile. Being agile is not about burn-down charts, or attendant posture during some meetings, or not having other meetings, or some other &amp;quot;official rule&amp;quot; you must follow to pass a certification test. Being agile is a state of mind, a frame of reference from which to make decisions. If you are in the business of delivering software solutions and your strategy for success is adopting formulaic &amp;quot;Agile Processes&amp;quot;, you are costing everyone a lot of extra money. Stop it. Stop it now, and let the healing begin.&lt;/p&gt;

&lt;p&gt;Here&amp;#39;s a quick test to see if you are a member of an agile team. Does the team trust each other and communicate frequently and honestly? Give yourself a point. You&amp;#39;re moving faster towards clear, shared goals with less hesitation and fewer missteps. Individuals and interactions - sound familiar? &lt;a href="http://www.amazon.com/SPEED-Trust-Thing-Changes-Everything/dp/1416549005/"&gt;The Speed of Trust&lt;/a&gt; can be measured, don&amp;#39;t waste your client&amp;#39;s money on avoidable drag. &lt;/p&gt;

&lt;p&gt;Are team members (regardless of employer) passionately focused on overcoming hurdles blocking the path to shipping as a cohesive unit? Collaboration! That&amp;#39;s the spirit! Is the team focused on building effective solutions that make people smile, or on how closely the product matches the original specification? Hint - you should be making people smile. &lt;/p&gt;

&lt;p&gt;Teams are not formed to create documentation (not agile development teams anyway), they are formed to do magic, to enable people to do things not previously possible. Never forget that. Real agile teams do not start projects without first mapping a path, but they do not hesitate to adapt when market forces and other realities shift during flight. Respond to change, don&amp;#39;t just follow a plan. Seeing a pattern here?&lt;/p&gt;

&lt;p&gt;If your team is struggling to ship products on time, or continually ships products that fail to move the ball forward, or is constantly duplicating work due to miscommunication and misunderstandings, simply changing toolsets or making new rules is not going to save you. If every one of your team members cannot clearly state what success means for a project, why the project has been undertaken, and what risks and challenges stand between them and a solution, you&amp;#39;re not going to cross the finish line (at least not when and where you want to). Forget the charts. Forget the rules. Talk, trust, learn, adapt. The tools are just that, tools. Use the ones that work for you. On this project. With this team. Success does not hinge on whether you use &lt;a href="http://www.atlassian.com/software/jira/overview"&gt;Jira&lt;/a&gt;, or &lt;a href="http://www.thoughtworks-studios.com/mingle-agile-project-management"&gt;Mingle&lt;/a&gt;, or &lt;a href="http://www.pivotaltracker.com/"&gt;Pivotal Tracker&lt;/a&gt;, Google Docs, or Excel, or sticky notes, or &lt;a href="http://www.youtube.com/watch?v=2xV3zTlgu3Q"&gt;hand signals&lt;/a&gt; and a series of grunts.&lt;/p&gt;

&lt;p&gt;Successful agile teams are characterized by quickness, lightness, and ease of movement. They are mentally quick and alert. They have a resourceful and adaptable character. They are well-coordinated in movement and have the ability to think and draw conclusions quickly. That&amp;#39;s the entirety of the dictionary definition of “agile” by the way. Seems simple, doesn&amp;#39;t it? &lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/relevance-blog/~4/725ZyKaOI-Y" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://thinkrelevance.com/blog/2012/02/07/agile-reboot-putting-the-man-back-in-manifesto</feedburner:origLink></entry>
  <entry>
    <title>ThinkRelevance: The Podcast - Episode 005 - Michael Parenteau</title>
    <id>http://thinkrelevance.com/blog/2012/02/03/thinkrelevance-the-podcast-episode-005-michael-parenteau</id>
    <published>2012-02-03T15:00:00Z</published>
    <link href="http://feedproxy.google.com/~r/relevance-blog/~3/TmuJwhxfxK0/thinkrelevance-the-podcast-episode-005-michael-parenteau" />
    <author>
      <name>Craig Andera</name>
      <email>craig@thinkrelevance.com</email>
    </author>
    <content type="html">&lt;p&gt;&lt;img src="http://s3.amazonaws.com/thinkrelevance-podcast/005-michael-parenteau.jpg" alt="cover art"&gt;&lt;/p&gt;

&lt;p&gt;Ever since I began thinking about doing a Relevance podcast, I knew that I was going to want to have Michael Parenteau on the show. Michael is head of our design department, and a designer himself. He has a great attitude, and brings both that and his considerable talent to everything he does. I happened to be down in Durham the week that we released the new website, which Michael had a big hand in bringing about, so I knew the time was right to have a conversation with him about it. &lt;/p&gt;

&lt;p&gt;In this episode, we talk with &lt;a href="http://thinkrelevance.com/team/members/michael-parenteau"&gt;Michael Parenteau&lt;/a&gt; about being a designer at Relevance, Sanskrit, the importance of remembering the human part of software, and washing feet at Burning Man. Enjoy!&lt;/p&gt;

&lt;p&gt;Download the episode &lt;a href="http://s3.amazonaws.com/thinkrelevance-podcast/ThinkRelevance-005-michael-parenteau.mp3"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The show is finally &lt;a href="http://itunes.apple.com/us/podcast/thinkrelevance-the-podcast/id498067022"&gt;available on iTunes&lt;/a&gt;! You can also subscribe to the podcast using our &lt;a href="http://feeds.feedburner.com/thinkrelevance/podcast"&gt;podcast feed&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;You can send feedback about the show to &lt;a href="mailto:podcast@thinkrelevance.com"&gt;podcast@thinkrelevance.com&lt;/a&gt;, or leave a comment here on the blog. Thanks for listening!&lt;/p&gt;

&lt;h2&gt;Show Notes&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Our guest, &lt;a href="http://thinkrelevance.com/team/members/michael-parenteau"&gt;Michael Parenteau&lt;/a&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://twitter.com/parenteau"&gt;@parenteau&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://github.com/michaelparenteau"&gt;Michael on GitHub&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;We have &lt;a href="http://thinkrelevance.com"&gt;a brand new website&lt;/a&gt;! You&amp;#39;re probably looking at it right now.

&lt;ul&gt;
&lt;li&gt;Note the hand-drawn illustrations on &lt;a href="http://thinkrelevance.com/team"&gt;the team page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;And the &lt;a href="http://thinkrelevance.com/how-we-work"&gt;How We Work&lt;/a&gt; section&lt;/li&gt;
&lt;li&gt;Plus the &lt;a href="http://assets1.thinkrelevance.com/images/bg/body-bkg.jpg"&gt;neat background image&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;And don&amp;#39;t forget about the &lt;a href="http://www.theleagueofmoveabletype.com/goudy-bookletter-1911"&gt;interesting typography&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Check out what &lt;a href="http://www.unmatchedstyle.com/gallery/thinkrelevancecom.php"&gt;unmatchedstyle&lt;/a&gt; had to say about the website, too&lt;/li&gt;
&lt;li&gt;Please &lt;a href="mailto:website@thinkrelevance.com"&gt;send us feedback&lt;/a&gt; about the website&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;People we mentioned during the podcast

&lt;ul&gt;
&lt;li&gt;Jen Myers &lt;a href="https://twitter.com/#!/antiheroine"&gt;@antiheroine&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Kevin Altman &lt;a href="https://twitter.com/#!/itg"&gt;@itg&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Other things that came up on this show

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://clojurescriptone.com"&gt;ClojureScript One&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Pair_programming"&gt;Pair programming&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://git-scm.com"&gt;Git&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://github.com"&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://haml-lang.com"&gt;HAML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://slim-lang.com"&gt;Slim&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/mojombo/jekyll"&gt;Jekyll&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://ruby-lang.org"&gt;Ruby&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://liquidmarkup.org/"&gt;Liquid&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://agilemanifesto.org/principles.html"&gt;Agile Principles&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://clojure.org"&gt;Clojure&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Software_craftsmanship"&gt;Software Craftsmanship&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Sanskrit"&gt;Sanskrit&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.shreemaa.org/drupal/?q=taxonomy_menu/54/88"&gt;Devi Mandir&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.burningman.com"&gt;Burning Man&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;img src="http://feeds.feedburner.com/~r/relevance-blog/~4/TmuJwhxfxK0" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://thinkrelevance.com/blog/2012/02/03/thinkrelevance-the-podcast-episode-005-michael-parenteau</feedburner:origLink></entry>
  <entry>
    <title>Where to Find Relevancers this Month!</title>
    <id>http://thinkrelevance.com/blog/2012/01/27/where-to-find-relevancers-this-month</id>
    <published>2012-01-27T08:50:00Z</published>
    <link href="http://feedproxy.google.com/~r/relevance-blog/~3/yu8GHZGSWJw/where-to-find-relevancers-this-month" />
    <author>
      <name>Lynn Grogan</name>
      <email>lynn@thinkrelevance.com</email>
    </author>
    <content type="html">&lt;p&gt;Want to meet a Relevancer in person?  Here&amp;#39;s where you can find us in the next month:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Durham, NC&lt;/strong&gt;
Every Tuesday - 7pm @ Splat Space&lt;br/&gt;
&lt;a href="http://www.meetup.com/splatspace/events/48476622/"&gt;Splat Space Open Meeting&lt;/a&gt;&lt;br/&gt;
Attending: &lt;a href="http://thinkrelevance.com/team/members/alan-dipert"&gt;Alan Dipert&lt;/a&gt;, Splat Space founder and Meetup organizer&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Baltimore, MD&lt;/strong&gt;
2/1 - 7:30pm @Revelytix&lt;br/&gt;
&lt;a href="http://baltimorefp.wordpress.com/2012/01/28/first-presentationhack-night-wednesday-february-1st-at-revelytix/"&gt;BaltimoreFP Presentation/Hack Night&lt;/a&gt;&lt;br/&gt;
Speaking: &lt;a href="http://thinkrelevance.com/team/members/alex-redington"&gt;Alex Redington&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Aruba&lt;/strong&gt;
2/6-2/10&lt;br/&gt;
&lt;a href="http://speakerconf.com/"&gt;SpeakerConf&lt;/a&gt;&lt;br/&gt;
Speaking: &lt;a href="http://thinkrelevance.com/team/members/michael-nygard"&gt;Michael Nygard&lt;/a&gt; and &lt;a href="http://thinkrelevance.com/team/members/stuart-halloway"&gt;Stuart Halloway&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Durham, NC&lt;/strong&gt;
2/6/2012, 7pm @ Splat Space&lt;br/&gt;
&lt;a href="http://www.meetup.com/TriClojure/events/47918212/"&gt;Monthly TriClojure Meeting&lt;/a&gt;&lt;br/&gt;
Speaking: &lt;a href="http://thinkrelevance.com/team/members/brenton-ashworth"&gt;Brenton Ashworth&lt;/a&gt;, &lt;em&gt;ClojureScript One&lt;/em&gt;&lt;br/&gt;
Attending: &lt;a href="http://thinkrelevance.com/team/members/chris-redinger"&gt;Chris Redinger&lt;/a&gt;, TriClojure Founder and Meetup Organizer&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Atlanta, GA&lt;/strong&gt;
2/23-2/24&lt;br/&gt;
We&amp;#39;re proud sponsors of &lt;a href="http://lessconf.lesseverything.com/"&gt;Lessconf&lt;/a&gt;&lt;br/&gt;
Attending: A dozen Relevancers&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/relevance-blog/~4/yu8GHZGSWJw" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://thinkrelevance.com/blog/2012/01/27/where-to-find-relevancers-this-month</feedburner:origLink></entry>
  <entry>
    <title>ThinkRelevance: The Podcast - Episode 004 - Aaron Bedra's Valedictory</title>
    <id>http://thinkrelevance.com/blog/2012/01/25/thinkrelevance-the-podcast-episode-004-aaron-bedra-s-valedictory</id>
    <published>2012-01-25T19:30:00Z</published>
    <link href="http://feedproxy.google.com/~r/relevance-blog/~3/TnawKZyyftE/thinkrelevance-the-podcast-episode-004-aaron-bedra-s-valedictory" />
    <author>
      <name>Craig Andera</name>
      <email>craig@thinkrelevance.com</email>
    </author>
    <content type="html">&lt;p&gt;&lt;img src="http://s3.amazonaws.com/thinkrelevance-podcast/004-aaron-bedra.jpg" alt="Aaron Bedra on ThinkRelevance: The Podcast" title="Aaron Bedra"&gt;&lt;/p&gt;

&lt;p&gt;When I heard that Aaron Bedra was leaving Relevance, I was surprised and a bit saddened. But I also thought, &amp;quot;Hey, we should have him on the podcast.&amp;quot; And that&amp;#39;s just what we did. I think it&amp;#39;s great to work at a place where it&amp;#39;s cool to record an interview with someone who has decided to move on.&lt;/p&gt;

&lt;p&gt;In this episode, we talk to Aaron about what brought him to Relevance, some of the things he&amp;#39;s worked on while he was here and even a bit about what the future holds for him.&lt;/p&gt;

&lt;p&gt;Download the episode &lt;a href="http://s3.amazonaws.com/thinkrelevance-podcast/ThinkRelevance-004-aaron-bedra.mp3"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;You may have noticed a sweet new feature on the podcast: cover art! Our crack design team offered to produce &amp;quot;album covers&amp;quot; for our shows, and I realized that I&amp;#39;d be an idiot not to take them up on the offer. It&amp;#39;s a fun detail, and one I hope you&amp;#39;ll enjoy. &lt;/p&gt;

&lt;p&gt;As a reminder, you can subscribe to the podcast using our &lt;a href="http://feeds.feedburner.com/thinkrelevance/podcast"&gt;podcast feed&lt;/a&gt;.  I&amp;#39;m still working on getting the show added to iTunes, but that should happen pretty soon.&lt;/p&gt;

&lt;p&gt;You can send feedback about the show to &lt;a href="mailto:podcast@thinkrelevance.com"&gt;podcast@thinkrelevance.com&lt;/a&gt;, or leave a comment here on the blog. Thanks for listening!&lt;/p&gt;

&lt;h2&gt;Show Notes&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Our guest, Aaron Bedra

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://twitter.com/abedra"&gt;@abedra&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.aaronbedra.com/"&gt;Aaron&amp;#39;s blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/abedra"&gt;Aaron on GitHub&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Music

&lt;ul&gt;
&lt;li&gt;Intro: &lt;a href="http://www.last.fm/music/Billy+Cobham/_/Red+Baron" title="Red Baron"&gt;Red Baron&lt;/a&gt;, performed by &lt;a href="http://www.billycobham.com/" title="Billy Cobham"&gt;Billy Cobham&lt;/a&gt; off of &lt;a href="http://en.wikipedia.org/wiki/Spectrum_%28Billy_Cobham_album%29" title="Spectrum"&gt;&amp;quot;Spectrum&amp;quot;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Outro: &lt;a href="http://en.wikipedia.org/wiki/Aeroplane_%28Red_Hot_Chili_Peppers_song%29" title="Aeroplane"&gt;Aeroplane&lt;/a&gt;, by the Red Hot Chili Peppers, off of &amp;quot;One Hot Minute&amp;quot;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;People

&lt;ul&gt;
&lt;li&gt;Muness Alrubie: &lt;a href="http://twitter.com/muness"&gt;@muness&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Stu Halloway: &lt;a href="http://twitter.com/stuarthalloway"&gt;@stuarthalloway&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Justin Gehtland: &lt;a href="http://twitter.com/jgehtland"&gt;@jgethland&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;David Liebke: &lt;a href="http://twitter.com/liebke"&gt;@liebke&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Chris Redinger: &lt;a href="http://twitter.com/redinger"&gt;@redinger&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Links

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://groupon.com"&gt;Groupon&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://railsconf2012.com/"&gt;RailsConf&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/relevance/streamlined"&gt;Streamlined&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://rubyconf.org/"&gt;RubyConf&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.thoughtworks.com/"&gt;ThoughtWorks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.metasploit.com/"&gt;MetaSploit&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Programming Clojure: &lt;a href="http://pragprog.com/book/shcloj/programming-clojure"&gt;First Edition&lt;/a&gt;, &lt;a href="http://pragprog.com/book/shcloj2/programming-clojure"&gt;Second Edition&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://peepcode.com/system/previews/rails-security-audit/peepcode-security-preview.pdf"&gt;Building Safe Applications&lt;/a&gt;, a &lt;a href="http://peepcode.com"&gt;PeepCode&lt;/a&gt; book by Aaron Bedra&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/clojure/test.generative"&gt;test.generative&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/QuickCheck"&gt;QuickCheck&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://dl.acm.org/citation.cfm?id=1788479"&gt;EasyCheck&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://heroku.com"&gt;Heroku&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.lisperati.com/clojure-spels/casting.html"&gt;Casting SPELs in Lisp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://landoflisp.com/"&gt;Land of Lisp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://pragprog.com/book/fr_rr/rails-recipes"&gt;Rails Recipes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://github.com"&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://thestrangeloop.com/"&gt;Strange Loop&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://clojure-conj.org/"&gt;Clojure/conj&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://clojurewest.org/"&gt;Clojure/West&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;img src="http://feeds.feedburner.com/~r/relevance-blog/~4/TnawKZyyftE" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://thinkrelevance.com/blog/2012/01/25/thinkrelevance-the-podcast-episode-004-aaron-bedra-s-valedictory</feedburner:origLink></entry>
  <entry>
    <title>ThinkRelevance: The Podcast - Episode 003 - Brenton Ashworth on ClojureScript One</title>
    <id>http://thinkrelevance.com/blog/2012/01/12/podcast-episode-003</id>
    <published>2012-01-12T00:00:00Z</published>
    <link href="http://feedproxy.google.com/~r/relevance-blog/~3/0DOVo3x1kBA/podcast-episode-003" />
    <author>
      <name>Craig Andera</name>
      <email>craig@thinkrelevance.com</email>
    </author>
    <content type="html">&lt;p&gt;I was particularly excited to record this, our third episode of
ThinkRelevance: The Podcast. That&amp;#39;s because on today&amp;#39;s show, we talk
with Brenton Ashworth about ClojureScript One, which was released just
this week. As Brenton will explain, ClojureScript One is a project
aimed at helping people learn how to use ClojureScript quickly and
effectively.&lt;/p&gt;

&lt;p&gt;Download the episode &lt;a href="http://s3.amazonaws.com/thinkrelevance-podcast/ThinkRelevance-003-brenton-ashworth.mp3"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;As a reminder, you can subscribe to the podcast using our
&lt;a href="http://feeds.feedburner.com/thinkrelevance/podcast"&gt;podcast feed&lt;/a&gt;.
I&amp;#39;m still working on getting the show added to iTunes, but that should
happen pretty soon.&lt;/p&gt;

&lt;p&gt;You can send feedback about the show to
&lt;a href="mailto:podcast@thinkrelevance.com"&gt;podcast@thinkrelevance.com&lt;/a&gt;, or
leave a comment here on the blog. Thanks for listening!&lt;/p&gt;

&lt;h2&gt;Show Notes&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Our guest, Brenton Ashworth

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://twitter.com/#!/brentonashworth"&gt;@brentonashworth&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://formpluslogic.blogspot.com/"&gt;Brenton&amp;#39;s blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/brentonashworth"&gt;Brenton on GitHub&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Music

&lt;ul&gt;
&lt;li&gt;The intro song on this episode is
&lt;a href="http://en.wikipedia.org/wiki/Ride_the_Lightning#Fight_Fire_with_Fire"&gt;Fight Fire With Fire&lt;/a&gt;,
by &lt;a href="http://en.wikipedia.org/wiki/Metallica"&gt;Metallica&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;The outro song is
&lt;a href="http://en.wikipedia.org/wiki/Paranoid_(song%29"&gt;Paranoid&lt;/a&gt; by
&lt;a href="http://en.wikipedia.org/wiki/Black_Sabbath"&gt;Black Sabbath&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;People

&lt;ul&gt;
&lt;li&gt;Luke Vanderhart: &lt;a href="http://twitter.com/levanderhart"&gt;@levanderhart&lt;/a&gt;,
&lt;a href="http://github.com/levand"&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Jen Myers: &lt;a href="https://twitter.com/#!/antiheroine"&gt;@antiheroine&lt;/a&gt;,
&lt;a href="http://jenmyers.net/"&gt;Blog&lt;/a&gt;, &lt;a href="https://github.com/jenmyers/"&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Kevin Altman &lt;a href="https://twitter.com/#!/itg"&gt;@itg&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Michael Parenteau &lt;a href="http://twitter.com/parenteau"&gt;@parenteau&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Rich Hickey: &lt;a href="http://twitter.com/richhickey"&gt;@richhickey&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fogus: &lt;a href="http://twitter.com/fogus"&gt;@fogus&lt;/a&gt;,
&lt;a href="http://blog.fogus.me/"&gt;Blog&lt;/a&gt;, &lt;a href="http://github.com/fogus"&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;David Nolen: &lt;a href="http://twitter.com/swannodette"&gt;@swannodette&lt;/a&gt;,
&lt;a href="http://dosync.posterous.com/"&gt;Blog&lt;/a&gt;, &lt;a href="https://github.com/swannodette"&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Links

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://clojurescriptone.com"&gt;ClojureScript One&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/clojure/clojurescript"&gt;ClojureScript&lt;/a&gt; itself&lt;/li&gt;
&lt;li&gt;&lt;a href="http://code.google.com/closure/"&gt;Google Closure&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/levand/domina"&gt;Domina&lt;/a&gt; - A ClojureScript DOM
manipulation library&lt;/li&gt;
&lt;li&gt;&lt;a href="http://weavejester.github.com/hiccup/"&gt;Hiccup&lt;/a&gt; - A fast library
for rendering HTML in Clojure&lt;/li&gt;
&lt;li&gt;&lt;a href="http://howwework.thinkrelevance.com/developer_narrative.html#pair_programming"&gt;How We Pair&lt;/a&gt;- A bit about pair programming at Relevance&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blip.tv/clojure/hammock-driven-development-4475586"&gt;The &amp;quot;Hammock Talk&amp;quot;&lt;/a&gt; - Rich&amp;#39;s excellent talk about how to solve hard problems&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;img src="http://feeds.feedburner.com/~r/relevance-blog/~4/0DOVo3x1kBA" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://thinkrelevance.com/blog/2012/01/12/podcast-episode-003</feedburner:origLink></entry>
  <entry>
    <title>ThinkRelevance: The Podcast - Episode 002 - David Liebke on Avout</title>
    <id>http://thinkrelevance.com/blog/2012/01/05/podcast-episode-002</id>
    <published>2012-01-05T00:00:00Z</published>
    <link href="http://feedproxy.google.com/~r/relevance-blog/~3/jcQgCtddtaI/podcast-episode-002" />
    <author>
      <name>Craig Andera</name>
      <email>craig@thinkrelevance.com</email>
    </author>
    <content type="html">&lt;p&gt;Hello, and welcome to the second episode of ThinkRelevance: The
Podcast. We had so much fun &lt;a href="http://thinkrelevance.com/blog/2011/12/19/podcast-episode-001.html"&gt;last
time&lt;/a&gt;
that we thought we&amp;#39;d do it again! This time, we talk to David Liebke
(&lt;a href="http://twitter.com/#!/liebke"&gt;@liebke&lt;/a&gt;), a developer here at
Relevance. The main thrust of our conversation centers on
&lt;a href="http://avout.io/"&gt;Avout&lt;/a&gt;, a Clojure library for managing distributed
state in a consistent manner. Avout is pretty cool, and we get to hear
David explain it, as well as talk a bit about the source of the names
of all David&amp;#39;s projects, the book
&lt;a href="http://en.wikipedia.org/wiki/Anathem"&gt;Anathem&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Download the episode &lt;a href="http://s3.amazonaws.com/thinkrelevance-podcast/ThinkRelevance-002-david-liebke.mp3"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In other exciting news, the show now has an actual feed, just like a
real, grown-up podcast. You can find it at
&lt;a href="http://feeds.feedburner.com/thinkrelevance/podcast"&gt;http://feeds.feedburner.com/thinkrelevance/podcast&lt;/a&gt;.
I&amp;#39;ll work on getting the show added to iTunes as the next step.&lt;/p&gt;

&lt;p&gt;Also, I believe I forgot to mention this last time, but please send
feedback about the show to
&lt;a href="mailto:podcast@thinkrelevance.com"&gt;podcast@thinkrelevance.com&lt;/a&gt;.
Thanks for listening!&lt;/p&gt;

&lt;h2&gt;Show Notes&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;David Liebke on the Internet

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://twitter.com/#!/liebke"&gt;@liebke&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://data-sorcery.org/"&gt;David&amp;#39;s blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/liebke"&gt;David on GitHub&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;The intro and outro music today both come from
&lt;a href="http://synthesist.net/music/anathem/"&gt;IOLET&lt;/a&gt; by David Stutz. The CD
is inspired by some of the concepts and themes in Anathem. The intro
song is &lt;em&gt;Deriving the Quadratic Equation&lt;/em&gt;, and the outro is
&lt;em&gt;Approximating Pi&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Avout can be found on the web at &lt;a href="http://avout.io"&gt;http://avout.io&lt;/a&gt;. You can ask questions on the &lt;a href="http://groups.google.com/group/clojure"&gt;Clojure mailing list&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Some of the technologies we talked about on this episode:

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://zookeeper.apache.org/"&gt;Zookeeper&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://hadoop.apache.org/"&gt;Hadoop&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.mongodb.org/"&gt;mongoDB&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://aws.amazon.com/simpledb/"&gt;Amazon SimpleDB&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Distributed_Transaction_Coordinator"&gt;Microsoft&amp;#39;s Distributed Transaction Coordinator (DTC)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/openUtility/menagerie"&gt;menagerie&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://clojure.org/protocols"&gt;Clojure Protocols&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://kotka.de/blog/2010/12/What_are_Pods.html"&gt;Clojure Pods&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;The people we mentioned today include:

&lt;ul&gt;
&lt;li&gt;Rich Hickey: &lt;a href="http://twitter.com/richhickey"&gt;@richhickey&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Stuart Sierra: &lt;a href="http://twitter.com/stuartsierra"&gt;@stuartsierra&lt;/a&gt;, &lt;a href="http://stuartsierra.com"&gt;Blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Neal_Stephenson"&gt;Neil Stephenson&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;img src="http://feeds.feedburner.com/~r/relevance-blog/~4/jcQgCtddtaI" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://thinkrelevance.com/blog/2012/01/05/podcast-episode-002</feedburner:origLink></entry>
  <entry>
    <title>ThinkRelevance: The Podcast - Episode 001</title>
    <id>http://thinkrelevance.com/blog/2011/12/19/podcast-episode-001</id>
    <published>2011-12-19T00:00:00Z</published>
    <link href="http://feedproxy.google.com/~r/relevance-blog/~3/gTo9j3PZzHs/podcast-episode-001" />
    <author>
      <name>Craig Andera</name>
      <email>craig@thinkrelevance.com</email>
    </author>
    <content type="html">&lt;p&gt;Relevance is a fascinating place to work. The primary reason for that,
in my opinion, is the great people that work there. I find I&amp;#39;m
constantly having interesting conversations with my coworkers, and
it&amp;#39;s not always about tech stuff. More than once I&amp;#39;ve had a random
hallway conversation and thought, &amp;quot;Wow, if I had recorded that, it
would make a pretty good podcast episode.&amp;quot;&lt;/p&gt;

&lt;p&gt;So that&amp;#39;s what I&amp;#39;m doing. On a roughly weekly basis, I&amp;#39;m going to be
releasing conversations with the people I am privileged to work with.
We&amp;#39;ve got no set agenda: just have an interesting conversation about
whatever people want to talk about.&lt;/p&gt;

&lt;p&gt;As this is our first episode, I&amp;#39;m still figuring out how to do all the
usual podcast stuff, like getting it on iTunes, creating a feed, and
all that jazz. So for our inaugural episode, we&amp;#39;re just going with &lt;a href="http://s3.amazonaws.com/thinkrelevance-podcast/ThinkRelevance-001-JustinGehtland.mp3"&gt;a
simple download link&lt;/a&gt;.
I&amp;#39;ll get all the fancy podcast stuff figured out, soon, I promise.&lt;/p&gt;

&lt;p&gt;In this episode, I talk with Justin Gehtland, who&amp;#39;s sort of our CEO
(he explains the &amp;quot;sort of&amp;quot; in the episode). As is always the case when
talking to Justin, it was a fun conversation. I hope you&amp;#39;ll agree.&lt;/p&gt;

&lt;h2&gt;Show Notes&lt;/h2&gt;

&lt;p&gt;We mention a lot of people in the podcast. Here&amp;#39;s a list of where to
find them on the web:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Justin Gehtland: &lt;a href="http://twitter.com/jgehtland"&gt;@jgehtland&lt;/a&gt;,
&lt;a href="http://thinkrelevance.com/blog/"&gt;Blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Alan Dipert: &lt;a href="http://twitter.com/alandipert"&gt;@alandipert&lt;/a&gt;,
&lt;a href="http://alan.dipert.org/"&gt;Blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&amp;quot;Scary&amp;quot; Ron Sumida: Current web whereabouts unknown&lt;/li&gt;
&lt;li&gt;Don Box: &lt;a href="http://twitter.com/donbox"&gt;@donbox&lt;/a&gt;,
&lt;a href="http://en.wikipedia.org/wiki/Don_Box"&gt;Wikipedia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Chris Sells: &lt;a href="http://twitter.com/csells"&gt;@csells&lt;/a&gt;,
&lt;a href="http://www.sellsbrothers.com/"&gt;Blog&lt;/a&gt;,
&lt;a href="http://en.wikipedia.org/wiki/Chris_Sells"&gt;Wikipedia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Brent Rector: &lt;a href="http://www.wiseowl.com/"&gt;Website&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Keith Brown: &lt;a href="http://twitter.com/keithbrown42"&gt;@keithbrown42&lt;/a&gt;,
&lt;a href="http://www.pluralsight-training.net/microsoft/Authors/Details?handle=keith-brown"&gt;Website&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Stu Halloway: &lt;a href="http://twitter.com/stuarthalloway"&gt;@stuarthalloway&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Tim Ewald: Current web whereabouts unknown&lt;/li&gt;
&lt;li&gt;Glenn Vanderburg: &lt;a href="http://twitter.com/glv"&gt;@glv&lt;/a&gt;, &lt;a href="http://www.vanderburg.org/blog"&gt;Blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Jason Rudolph: &lt;a href="http://twitter.com/jasonrudolph"&gt;@jasonrudolph&lt;/a&gt;, &lt;a href="http://jasonrudolph.com/"&gt;Website&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Rob Sanheim: &lt;a href="http://twitter.com/rsanheim"&gt;@rsanheim&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Rich Hickey: &lt;a href="http://twitter.com/richhickey"&gt;@richhickey&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Andy Hunt and Dave Thomas are &lt;a href="http://pragprog.com/"&gt;The Pragmatic Programmers&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Other notes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The intro to the podcast is the song &lt;a href="http://en.wikipedia.org/wiki/Jet_City_Woman"&gt;Jet City Woman&lt;/a&gt; by &lt;a href="http://en.wikipedia.org/wiki/Queensr%C3%BFche"&gt;Queensrÿche&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;The outro to the podcast is the song &lt;a href="http://en.wikipedia.org/wiki/Sultans_of_Swing"&gt;Sultans of Swing&lt;/a&gt; by &lt;a href="http://en.wikipedia.org/wiki/Dire_Straits"&gt;Dire Straits&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Justin, Stu Halloway, Tim, and I all used to work at &lt;a href="http://develop.com"&gt;DevelopMentor&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://howwework.thinkrelevance.com/developer_narrative.html#open_source_fridays"&gt;Relevance&amp;#39;s Fridays policy&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;You can find out more about B Corporations at
&lt;a href="http://www.bcorporation.net/"&gt;www.bcorporation.net&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Justin&amp;#39;s books:

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.amazon.com/Better-Faster-Lighter-Java-Bruce/dp/0596006764/ref=sr_1_1?s=books&amp;amp;ie=UTF8&amp;amp;qid=1324073116&amp;amp;sr=1-1"&gt;Better, Faster, Lighter Java&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.amazon.com/Java-Enterprise-Nutshell-OReilly/dp/0596101422/ref=sr_1_2?s=books&amp;amp;ie=UTF8&amp;amp;qid=1324073116&amp;amp;sr=1-2"&gt;Java Enterprise in a Nutshell&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.amazon.com/Spring-Developers-Notebook-Bruce-Tate/dp/0596009100/ref=sr_1_4?s=books&amp;amp;ie=UTF8&amp;amp;qid=1324073116&amp;amp;sr=1-4"&gt;Spring: A Developers&amp;#39;s Notebook&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.amazon.com/Pragmatic-Ajax-Web-2-0-Primer/dp/0976694085/ref=sr_1_5?s=books&amp;amp;ie=UTF8&amp;amp;qid=1324073116&amp;amp;sr=1-5"&gt;Pragmatic Ajax: A Web 2.0 Primer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.amazon.com/Rails-Java-Developers-Stuart-Halloway/dp/097761669X/ref=sr_1_6?s=books&amp;amp;ie=UTF8&amp;amp;qid=1324073116&amp;amp;sr=1-6"&gt;Rails for Java Developers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.amazon.com/Effective-Visual-Basic-Improve-Applications/dp/0201704765/ref=sr_1_7?s=books&amp;amp;ie=UTF8&amp;amp;qid=1324073116&amp;amp;sr=1-7"&gt;Effective Visual Basic: How to Improve Your VB/COM+ Applications&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.amazon.com/Windows-forms-programming-Visual-Basic/dp/7508331516/ref=sr_1_9?s=books&amp;amp;ie=UTF8&amp;amp;qid=1324073116&amp;amp;sr=1-9"&gt;Windows Forms Programming in Visual Basic .NET&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Band Together is on the web at
&lt;a href="http://www.bandtogethernc.org/"&gt;www.bandtogethernc.org&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Read about
&lt;a href="http://fantom.org/"&gt;Fan, the obscure programming language&lt;/a&gt;.  Apparently it&amp;#39;s called Fantom now.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://pragprog.com/book/shcloj/programming-clojure"&gt;Programming Clojure&lt;/a&gt;,
by Stuart Halloway.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://rubyonrails.org/"&gt;Ruby on Rails&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;img src="http://feeds.feedburner.com/~r/relevance-blog/~4/gTo9j3PZzHs" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://thinkrelevance.com/blog/2011/12/19/podcast-episode-001</feedburner:origLink></entry>
  <entry>
    <title>Documenting Architecture Decisions</title>
    <id>http://thinkrelevance.com/blog/2011/11/15/documenting-architecture-decisions</id>
    <published>2011-11-15T00:00:00Z</published>
    <link href="http://feedproxy.google.com/~r/relevance-blog/~3/eAPGawdFW0k/documenting-architecture-decisions" />
    <author>
      <name>Michael Nygard</name>
      <email>mtnygard@thinkrelevance.com</email>
    </author>
    <content type="html">&lt;h1&gt;Context&lt;/h1&gt;

&lt;p&gt;Architecture for agile projects has to be described and defined
differently. Not all decisions will be made at once, nor will all of
them be done when the project begins.&lt;/p&gt;

&lt;p&gt;Agile methods are not opposed to documentation, only to valueless
documentation. Documents that assist the team itself can have value,
but only if they are kept up to date. Large documents are never kept
up to date. Small, modular documents have at least a chance at being
updated.&lt;/p&gt;

&lt;p&gt;Nobody ever reads large documents, either. Most developers have been
on at least one project where the specification document was larger
(in bytes) than the total source code size. Those documents are too
large to open, read, or update. Bite sized pieces are easier for for
all stakeholders to consume.&lt;/p&gt;

&lt;p&gt;One of the hardest things to track during the life of a project is the
motivation behind certain decisions. A new person coming on to a
project may be perplexed, baffled, delighted, or infuriated by some
past decision. Without understanding the rationale or consequences,
this person has only two choices:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Blindly accept the decision.&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;This response may be OK, if the decision is still valid. It may
not be good, however, if the context has changed and the decision
should really be revisited. If the project accumulates too many
decisions accepted without understanding, then the development
team becomes afraid to change anything and the project collapses
under its own weight.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Blindly change it.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Again, this may be OK if the decision needs to be reversed. On the
other hand, changing the decision without understanding its
motivation or consequences could mean damaging the project&amp;#39;s
overall value without realizing it. (E.g., the decision supported
a non-functional requirement that hasn&amp;#39;t been tested yet.)&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;It&amp;#39;s better to avoid either blind acceptance or blind reversal.&lt;/p&gt;

&lt;h1&gt;Decision&lt;/h1&gt;

&lt;p&gt;We will keep a collection of records for &amp;quot;architecturally significant&amp;quot;
decisions: those that affect the structure, non-functional
characteristics, dependencies, interfaces, or construction techniques.&lt;/p&gt;

&lt;p&gt;An architecture decision record is a short text file in a format
similar to an Alexandrian pattern. (Though the decisions themselves
are not necessarily patterns, they share the characteristic balancing
of forces.) Each record describes a set of forces and a single
decision in response to those forces. Note that the decision is the
central piece here, so specific forces may appear in multiple ADRs.&lt;/p&gt;

&lt;p&gt;We will keep ADRs in the project repository under doc/arch/adr-NNN.md&lt;/p&gt;

&lt;p&gt;We should use a lightweight text formatting language like Markdown or
Textile.&lt;/p&gt;

&lt;p&gt;ADRs will be numbered sequentially and monotonically. Numbers will not
be reused.&lt;/p&gt;

&lt;p&gt;If a decision is reversed, we will keep the old one around, but mark
it as superseded. (It&amp;#39;s still relevant to know that it &lt;em&gt;was&lt;/em&gt; the
decision, but is &lt;em&gt;no longer&lt;/em&gt; the decision.)&lt;/p&gt;

&lt;p&gt;We will use a format with just a few parts, so each document is easy
to digest. The format has just a few parts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Title&lt;/strong&gt; These documents have names that are short noun phrases. For
example, &amp;quot;ADR 1: Deployment on Ruby on Rails 3.0.10&amp;quot; or &amp;quot;ADR 9: LDAP
for Multitenant Integration&amp;quot;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Context&lt;/strong&gt; This section describes the forces at play, including
technological, political, social, and project local. These forces are
probably in tension, and should be called out as such. The language in
this section is value-neutral. It is simply describing facts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Decision&lt;/strong&gt; This section describes our response to these forces. It
is stated in full sentences, with active voice. &amp;quot;We will ...&amp;quot;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Status&lt;/strong&gt; A decision may be &amp;quot;proposed&amp;quot; if the project stakeholders
haven&amp;#39;t agreed with it yet, or &amp;quot;accepted&amp;quot; once it is agreed. If a
later ADR changes or reverses a decision, it may be marked as
&amp;quot;deprecated&amp;quot; or &amp;quot;superseded&amp;quot; with a reference to its replacement.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Consequences&lt;/strong&gt; This section describes the resulting context, after
applying the decision.  All consequences should be listed here, not
just the &amp;quot;positive&amp;quot; ones. A particular decision may have positive,
negative, and neutral consequences, but all of them affect the team
and project in the future.&lt;/p&gt;

&lt;p&gt;The whole document should be one or two pages long. We will write each
ADR as if it is a conversation with a future developer. This requires
good writing style, with full sentences organized into
paragraphs. Bullets are acceptable only for visual style, not as an
excuse for writing sentence fragments. (Bullets kill people, even
PowerPoint bullets.)&lt;/p&gt;

&lt;h1&gt;Status&lt;/h1&gt;

&lt;p&gt;Accepted.&lt;/p&gt;

&lt;h1&gt;Consequences&lt;/h1&gt;

&lt;p&gt;One ADR describes one significant decision for a specific project. It
should be something that has an effect on how the rest of the project
will run.&lt;/p&gt;

&lt;p&gt;The consequences of one ADR are very likely to become the context for
subsequent ADRs. This is also similar to Alexander&amp;#39;s idea of a pattern
language: the large-scale responses create spaces for the smaller
scale to fit into.&lt;/p&gt;

&lt;p&gt;Developers and project stakeholders can see the ADRs, even as the team
composition changes over time.&lt;/p&gt;

&lt;p&gt;The motivation behind previous decisions is visible for everyone,
present and future. Nobody is left scratching their heads to
understand, &amp;quot;What were they thinking?&amp;quot; and the time to change old
decisions will be clear from changes in the project&amp;#39;s context.&lt;/p&gt;

&lt;hr&gt;

&lt;h1&gt;Experience Report&lt;/h1&gt;

&lt;p&gt;You may have noticed that this post is formatted like an ADR
itself. We&amp;#39;ve been using this format on a few of our projects since
early August. That&amp;#39;s not a very long time in the global sense, but
early feedback from both clients and developers has been quite
positive. In that time, we&amp;#39;ve had six to ten developers rotate through
projects using ADRs. All of them have stated that they appreciate the
degree of context they received by reading them.&lt;/p&gt;

&lt;p&gt;ADRs have been especially useful for capturing longer-term
intentions. We have several clients who are stabilizing their current
systems, but looking toward a larger rearchitecture in the
not-too-distant future. By writing these intentions down, we don&amp;#39;t
inadvertently make those future changes harder.&lt;/p&gt;

&lt;p&gt;One potential objection is that keeping these in version control with
the code makes them less accessible for project managers, client
stakeholders, and others who don&amp;#39;t live in version control like the
development team does. In practice, our projects almost all live in
GitHub private repositories, so we can exchange links to the latest
version in master. Since GitHub does markdown processing
automatically, it looks just as friendly as any wiki page would.&lt;/p&gt;

&lt;p&gt;So far, ADRs are proving to be a useful tool, so we&amp;#39;ll keep using
them.&lt;/p&gt;

&lt;h1&gt;More Reading&lt;/h1&gt;

&lt;p&gt;Thanks to Philipe Kruchten for discussing the &lt;a href="http://www.computer.org/portal/web/csdl/doi/10.1109/MS.2009.52"&gt;importance of
architecture decisions&lt;/a&gt;. I&amp;#39;m
told there is more about them in
&lt;a href="http://www.sei.cmu.edu/library/abstracts/books/0321552687.cfm"&gt;Documenting Software Architectures&lt;/a&gt;
which is near the top of my reading queue.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/relevance-blog/~4/eAPGawdFW0k" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://thinkrelevance.com/blog/2011/11/15/documenting-architecture-decisions</feedburner:origLink></entry>
  <entry>
    <title>Now with four more awesome</title>
    <id>http://thinkrelevance.com/blog/2011/10/24/now-with-more-awesome</id>
    <published>2011-10-24T00:00:00Z</published>
    <link href="http://feedproxy.google.com/~r/relevance-blog/~3/UKJxCW58mDc/now-with-more-awesome" />
    <author>
      <name>Muness Alrubaie</name>
      <email>muness@thinkrelevance.com</email>
    </author>
    <content type="html">&lt;p&gt;We may have &lt;a href="http://thinkrelevance.com/blog/2011/04/20/welcoming-two-more.html"&gt;stopped pretending to be Apple&lt;/a&gt; but we haven&amp;#39;t stopped adding more awesome to our team: Naoko Chamberlain, Clinton Nixon, Russ Olsen and Jenn Hudson.&lt;/p&gt;

&lt;p&gt;Naoko&amp;#39;s personality drove her to project management/coach calling.  She’s a planner and couldn&amp;#39;t help that if she tried.  She hugely appreciates the details.  It comes naturally to observe and attend to her surroundings, and she truly enjoys teamwork whether at work, play, or playing ball.  She also loves to organize everything -- even her sock drawer is organized by color and type.&lt;/p&gt;

&lt;p&gt;When Naoko is not planning to-do&amp;#39;s or organizing her sock drawer she expresses her love for wine, conversations, and sports.  When all three are in one place she is in an extra good mood (except for when Boilermakers, Yankees, or Colts are losing an important game).&lt;/p&gt;

&lt;p&gt;Clinton has spent the last 12 years all over the technology industry, from monitoring network security at Three Letter Agencies to hacking for startups to managing teams of developers. After discovering both Ruby and Durham, NC six years ago, he&amp;#39;s been a huge fan of both. He&amp;#39;s spent enough time at Relevance game nights and other events that he&amp;#39;s felt like part of the family for a long while. He has perfectly normal, non-nerdy hobbies outside of programming, like playing Dungeons &amp;amp; Dragons and playing the ukulele.&lt;/p&gt;

&lt;p&gt;Russ Olsen started his career doing that other kind of engineering, the sort that involves electricity, gears and getting dirty. Pretty rapidly the wonder of computer programming lured Russ away, which probably explains why most of his fingers are still intact today.&lt;/p&gt;

&lt;p&gt;Since turning to coding, Russ has worked on everything from 3D design and image processing software to database query engines and workflow systems.  Russ first discovered Ruby back in 2000 when he went looking for a simple programming language to teach to his son. The seven year old lost interest, but Russ never did and he has been building increasingly sophisticated systems in Ruby ever since.&lt;/p&gt;

&lt;p&gt;Russ also spends a fair bit of time promoting Ruby via public speaking and he helped found RubyNation, a regional Ruby conference held each Spring in Northern Virginia.  Russ has also written extensively about Ruby in the form of two highly regarded books: The first, &lt;a href="http://www.amazon.com/Design-Patterns-Ruby-Russ-Olsen/dp/0321490452"&gt;Design Patterns in Ruby&lt;/a&gt;  was published in 2008 and is a complete reworking of the classic Gang of Four patterns for a modern dynamic programming language. Russ&amp;#39;s second book &lt;a href="http://www.amazon.com/Eloquent-Ruby-Addison-Wesley-Professional/dp/0321584104"&gt;Eloquent Ruby&lt;/a&gt; is a guide to writing idiomatic Ruby.  Eloquent Ruby was an instant hit in the Ruby and Rails community when it was published earlier this year.&lt;/p&gt;

&lt;p&gt;Russ also has been secretly enamored with parentheses since a very early age and lately has been dabbling in Clojure.&lt;/p&gt;

&lt;p&gt;Jenn has 20 years of accounting and analytical experience in a wide range of industries including software, alternative energy, legal, construction, retail and photofinishing, working with both small business and major corporation settings.  She has extensive experience at managing an entire business including preparing strategic plans, implementing new programs and products, marketing and analyzing performance.  While away from the office, she enjoys cooking and entertaining, travel to far away places and following her daughter&amp;#39;s volleyball team around the country.&lt;/p&gt;

&lt;p&gt;I&amp;#39;d also like to wish our alumnus &lt;a href="http://twitter.com/#!/shayfrendt"&gt;Shay Frendt&lt;/a&gt; the best of luck with our friends at &lt;a href="http://chargify.com/"&gt;Chargify&lt;/a&gt;.  We love you, we miss you.&lt;/p&gt;

&lt;p&gt;We&amp;#39;re still looking for more awesome.  If you&amp;#39;d like to join this &lt;a href="http://thinkrelevance.com/team"&gt;awesome team&lt;/a&gt;, &lt;a href="mailto:jobs@thinkrelevance.com"&gt;introduce yourself&lt;/a&gt;.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/relevance-blog/~4/UKJxCW58mDc" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://thinkrelevance.com/blog/2011/10/24/now-with-more-awesome</feedburner:origLink></entry>
  <entry>
    <title>Friday Update 1.1</title>
    <id>http://thinkrelevance.com/blog/2011/08/08/Friday-Update</id>
    <published>2011-08-08T00:00:00Z</published>
    <link href="http://feedproxy.google.com/~r/relevance-blog/~3/fx7CE3HePCw/Friday-Update" />
    <author>
      <name>Jon Distad</name>
      <email>jon@thinkrelevance.com</email>
    </author>
    <content type="html">&lt;p&gt;Welcome to the latest installment of the critically acclaimed &amp;quot;Friday Update&amp;quot;!
This week&amp;#39;s theme is &amp;quot;In-browser Awesomeness (plus one more)&amp;quot;, and boy do we
have an exciting lineup for you today!&lt;/p&gt;

&lt;p&gt;First up, our brilliant intern Vojto (pronounced VOY-toe) has spiked out a Cocoa
library called &lt;a href="http://atmospheresync.org/"&gt;Atmosphere&lt;/a&gt; which waits for
client-side changes and pushes those changes to the server automagically. You
can read more about it on his
&lt;a href="http://thewebmage.wordpress.com/2011/08/05/friday-atmosphere-in-node-js/"&gt;blog&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Next we have the illustrious Chad Humphries, who is investigating using &lt;a href="http://weblog.rubyonrails.org/2011/5/22/rails-3-1-release-candidate"&gt;Rails
3.1&lt;/a&gt;,
&lt;a href="http://documentcloud.github.com/backbone/"&gt;Backbone.js&lt;/a&gt; and
&lt;a href="http://pivotal.github.com/jasmine/"&gt;Jasmine&lt;/a&gt; to build applications. He is
excited to announce that the Jasmine tests run both inside and outside the
browser.&lt;/p&gt;

&lt;p&gt;Continuing our theme, Bobby Calderwood and Alex Redington are working on an
in-browser &lt;a href="https://github.com/clojure/clojurescript/wiki"&gt;ClojureScript&lt;/a&gt;
evaluator. A server is required to perform compilation, but, in conjunction with
some additonal work from Alan Dipert and Brenton Ashworth, we could soon have a
browser-connected REPL!&lt;/p&gt;

&lt;p&gt;And our c-c-c-combo breaker: David Liebke is working on a Clojure library called
&lt;a href="http://liebke.github.com/cogito/"&gt;cogito&lt;/a&gt;. It&amp;#39;s a Clojure implementation of
System-Z+, a probabalistic reasoner.&lt;/p&gt;

&lt;p&gt;That&amp;#39;s it for now!&lt;/p&gt;

&lt;p&gt;And don&amp;#39;t forget to sign up for &lt;a href="http://clojureconj.org/"&gt;Clojure/conj&lt;/a&gt;!&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/relevance-blog/~4/fx7CE3HePCw" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://thinkrelevance.com/blog/2011/08/08/Friday-Update</feedburner:origLink></entry>
  <entry>
    <title>Friday Update 1.0</title>
    <id>http://thinkrelevance.com/blog/2011/08/01/Friday-Update</id>
    <published>2011-08-01T00:00:00Z</published>
    <link href="http://feedproxy.google.com/~r/relevance-blog/~3/Hfovri832hc/Friday-Update" />
    <author>
      <name>Jon Distad</name>
      <email>jon@thinkrelevance.com</email>
    </author>
    <content type="html">&lt;p&gt;An important part of Relevance&amp;#39;s culture is the work we do on Fridays. Many of
you have likely heard of 20% time. Perhaps you&amp;#39;ve even heard it from us! But for
those who haven&amp;#39;t, 20% time is time that is devoted entirely to personal
development and contributing to the open-source community. It doesn&amp;#39;t have to be
open-source, but it almost always is. In fact, we used to call the 20% time
&amp;quot;Open-source Friday,&amp;quot; but decided to stop lest we discourage people from
following interests or scratching itches that couldn&amp;#39;t be open-sourced.&lt;/p&gt;

&lt;p&gt;Since this time is so important to us, we&amp;#39;ve decided to share a cross-section of
our Friday projects with the rest of you! Consider this the first of many Friday
Updates.&lt;/p&gt;

&lt;p&gt;On the Clojure front, the &lt;a href="http://clojure.com"&gt;Clojure/core team&lt;/a&gt; has been
focusing on porting Clojure and its libraries to the recently announced
ClojureScript. In particular, keep your eye out for David Liebke&amp;#39;s port of
Annalemma, dubbed &lt;a href="https://github.com/liebke/apogee"&gt;Apogee&lt;/a&gt;. And if you haven&amp;#39;t
seen it already, Stuart Sierra recently wrote a &lt;a href="http://clojure.com/blog/2011/07/22/introducing-clojurescript.html"&gt;blog
post&lt;/a&gt; about
ClojureScript.&lt;/p&gt;

&lt;p&gt;The team is also busy organizing the second
&lt;a href="http://clojureconj.org"&gt;Clojure/conj&lt;/a&gt;! Which you should &lt;a href="http://www.eventbee.com/v/clojureconj2011"&gt;sign
up&lt;/a&gt; for today! Early bird pricing
ends soon!&lt;/p&gt;

&lt;p&gt;Rob Sanheim and Jamie Kite put together a Rails 3 engine called &lt;a href="https://github.com/rsanheim/honey_badger"&gt;Honey
Badger&lt;/a&gt; which sticks a badge onto the
page of a running Rails app with the environment, current git SHA, or anything
else you&amp;#39;d like displayed in non-Production environments.&lt;/p&gt;

&lt;p&gt;Craig Andera recently released
&lt;a href="https://github.com/candera/shadowspawn"&gt;ShadowSpawn&lt;/a&gt;, a Windows utility for
working with shadow copies. Check out his
&lt;a href="http://www.pluralsight-training.net/community/blogs/craig/archive/2011/07/25/announcing-shadowspawn.aspx"&gt;announcement&lt;/a&gt;
for more details.&lt;/p&gt;

&lt;p&gt;And last, but most certainly not least, Jess Martin has released an iOS library
called &lt;a href="https://github.com/jessmartin/CoolButtons"&gt;CoolButtons&lt;/a&gt;. It allows you
to draw glassy iOS-style buttons, all using CoreGraphics and no images.&lt;/p&gt;

&lt;p&gt;See you next week!&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/relevance-blog/~4/Hfovri832hc" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://thinkrelevance.com/blog/2011/08/01/Friday-Update</feedburner:origLink></entry>
  <entry>
    <title>Rails 3.1 HackFest Wrap-up</title>
    <id>http://thinkrelevance.com/blog/2011/07/25/rails-3_1-hackfest-wrapup</id>
    <published>2011-07-25T00:00:00Z</published>
    <link href="http://feedproxy.google.com/~r/relevance-blog/~3/wx9bLQPcsrk/rails-3_1-hackfest-wrapup" />
    <author>
      <name>Sam Umbach</name>
      <email>sam@thinkrelevance.com</email>
    </author>
    <content type="html">&lt;p&gt;Thanks to everyone who participated in the &lt;a href="http://weblog.rubyonrails.org/2011/7/14/rails-3-1-hackfest"&gt;Rails 3.1 HackFest&lt;/a&gt;!  I hope you enjoyed sharing your love of Rails, plus a few beers, as much as we did.  It was great getting to know &lt;a href="https://github.com/zporter"&gt;some&lt;/a&gt; &lt;a href="https://github.com/reedlaw"&gt;of&lt;/a&gt; &lt;a href="http://smashingboxes.com/"&gt;our&lt;/a&gt; &lt;a href="http://www.asmallorange.com/about/"&gt;neighbors&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In addition to upgrading a few Rails apps to the latest 3.1 release candidate, we also submitted a few &lt;a href="http://edgeguides.rubyonrails.org/"&gt;RailsGuides&lt;/a&gt; patches, found a &lt;a href="https://github.com/rails/rails/pull/2209"&gt;bug&lt;/a&gt; and submitted a failing test.  We didn&amp;#39;t even have a chance to fix it before &lt;a href="https://github.com/grzuy"&gt;grzuy&lt;/a&gt; picked it up and submitted the patch.&lt;/p&gt;

&lt;p&gt;We ran into a few bumps moving to the 3.1 asset pipeline, but overall the upgrade from Rails 3.0 to 3.1 has been smooth.  As for the 2.3 to 3.0 upgrade, Rails provides deprecation warnings in the previous point release, 3.0.9 as I write this, so the upgrade goes a little something like this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Upgrade to Rails 3.0.9&lt;/li&gt;
&lt;li&gt;Upgrade other gems as necessary (e.g., haml 3.0 to haml 3.1 + sass 3.1)&lt;/li&gt;
&lt;li&gt;Run tests, fix tests, rinse and repeat&lt;/li&gt;
&lt;li&gt;Walk through the application and fix any deprecation warnings that crop up in the rails log&lt;/li&gt;
&lt;li&gt;Upgrade to Rails 3.1&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;And now...your &lt;a href="http://bar.com/"&gt;moment of zen&lt;/a&gt;.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/relevance-blog/~4/wx9bLQPcsrk" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://thinkrelevance.com/blog/2011/07/25/rails-3_1-hackfest-wrapup</feedburner:origLink></entry>
  <entry>
    <title>Rails 3.1 HackFest comes to Bull City, July 22-23</title>
    <id>http://thinkrelevance.com/blog/2011/07/20/rails-3_1-hackfest-bull-city</id>
    <published>2011-07-20T00:00:00Z</published>
    <link href="http://feedproxy.google.com/~r/relevance-blog/~3/cTCjnRqw3x8/rails-3_1-hackfest-bull-city" />
    <author>
      <name>Sam Umbach</name>
      <email>sam@thinkrelevance.com</email>
    </author>
    <content type="html">&lt;p&gt;Join us at Relevance Inc. this Friday and Saturday as we participate in the &lt;a href="http://weblog.rubyonrails.org/2011/7/14/rails-3-1-hackfest"&gt;Rails 3.1 HackFest&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Come on down for two days of upgradin&amp;#39;, pipelinein&amp;#39;, bug fixin&amp;#39; good times! This is a great opportunity to meet some local Rails hackers, work through the 3.1 upgrade process, and give back to the larger Rails community.  If you&amp;#39;re in town this Friday or Saturday, please drop by any time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;UPDATE:&lt;/strong&gt; The Relevance office will be open Friday and Saturday from 8:30am until 6:00pm or after. Grab your laptop and swing by for an hour or camp out for both days; we&amp;#39;ll be here...with pizza.&lt;/p&gt;

&lt;p&gt;Find us at:&lt;br&gt;
514 South Duke Street&lt;br&gt;
Durham, NC 27701  &lt;/p&gt;

&lt;p&gt;For more information, please contact us via email at &lt;a href="mailto:info@thinkrelevance.com"&gt;info@thinkrelevance.com&lt;/a&gt; or by phone at 919-283-2748.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/relevance-blog/~4/cTCjnRqw3x8" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://thinkrelevance.com/blog/2011/07/20/rails-3_1-hackfest-bull-city</feedburner:origLink></entry>
  <entry>
    <title>Heroku-ification of a Clojure App</title>
    <id>http://thinkrelevance.com/blog/2011/07/10/heroku-ification-of-a-clojure-app</id>
    <published>2011-07-10T00:00:00Z</published>
    <link href="http://feedproxy.google.com/~r/relevance-blog/~3/dO37iZ4NL0M/heroku-ification-of-a-clojure-app" />
    <author>
      <name>Chris Redinger</name>
      <email>chris@thinkrelevance.com</email>
    </author>
    <content type="html">&lt;p&gt;Here at Relevance, Inc we often use Heroku for our Rails apps. Unfortunately, there hasn&amp;#39;t been a similarly easy deployment story for our Clojure web apps. Recently, Heroku has changed that with their Cedar stack.&lt;/p&gt;

&lt;p&gt;My colleague, &lt;a href="https://github.com/candera"&gt;Craig Andera&lt;/a&gt;, has been working on a web port of a board game called &lt;a href="https://github.com/candera/artifact"&gt;Artifact&lt;/a&gt;. I noticed he added a GitHub Issue &lt;a href="https://github.com/candera/artifact/issues/41"&gt;&amp;quot;Deploy app to Heroku&amp;quot;&lt;/a&gt; This seemed like the perfect time to show off just how easy it is to deploy a Clojure web app to Heroku.&lt;/p&gt;

&lt;p&gt;I grabbed a &lt;a href="https://github.com/candera/artifact/commit/7be7096c07f47ab83f71bcb105dacb2ab8cb49f0"&gt;recent commit&lt;/a&gt; that was configured to run a local Jetty server. Here is the simple process I followed to get his app deployed to Heroku. As a prerequisite, you should have a Heroku account as well as the heroku gem installed. That process is described on &lt;a href="http://heroku.com"&gt;their site&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Start with cloning the repo&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;git clone git@github.com:candera/artifact.git
cd artifact
&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;The next step is to create a new heroku app on cedar called artifact. When this command is run from inside your app, the remote heroku repository is automatically added for you.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;heroku create --stack cedar artifact
&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Then modify the -main function to work with how Heroku manages ports. The change we are making here is to read the port from the environment variable when it is available.&lt;/p&gt;

&lt;p&gt;In core.clj, change the following block of code from&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;defn&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;-main&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;args&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;run-jetty&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;app&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="no"&gt;:port&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;8080&lt;/span&gt;&lt;span class="p"&gt;}))&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;to&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;defn&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;-main&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;args&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;let&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;port&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;Integer/parseInt&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;System/getenv&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;PORT&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;8080&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;))]&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;run-jetty&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;app&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="no"&gt;:port&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;port&lt;/span&gt;&lt;span class="p"&gt;})))&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Next, create a Procfile in the root dir of the app to tell Heroku how to start our app. This tells the web dyno to use leiningen to launch the web server.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;web: lein run -m artifact.core
&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Commit the changes and push to Heroku.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;git add .
git commit -m &amp;quot;Heroku-ify&amp;quot;
git push heroku master
&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;And finally view the page.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;heroku open
&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;You can see the app at &lt;a href="http://artifact.herokuapp.com"&gt;http://artifact.herokuapp.com&lt;/a&gt;. It is still in early development, so expect to run into rough edges. If you&amp;#39;d like to help, I&amp;#39;m sure Craig would love your contributions.&lt;/p&gt;

&lt;p&gt;The process of taking a working Clojure web app and moving it to Heroku took me less than ten minutes, a small code change, and an additional line of config. This is a major development in the life of Clojure web development. With Heroku, we can build an app with the power of Clojure and the ease of deployment that Heroku provides to other frameworks, such as Rails. This helps us continue to expand our business and offer choice in deployment strategies to all our customers.&lt;/p&gt;

&lt;p&gt;For more detail than just this simple intro, be sure to read &lt;a href="http://devcenter.heroku.com/articles/clojure-web-application"&gt;&amp;quot;Building a Database-Backed Clojure Web Application&amp;quot;&lt;/a&gt;.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/relevance-blog/~4/dO37iZ4NL0M" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://thinkrelevance.com/blog/2011/07/10/heroku-ification-of-a-clojure-app</feedburner:origLink></entry>
  <entry>
    <title>Relevance Welcomes Mike Nygard to the Team</title>
    <id>http://thinkrelevance.com/blog/2011/06/03/welcome-mike-nygard</id>
    <published>2011-06-03T00:00:00Z</published>
    <link href="http://feedproxy.google.com/~r/relevance-blog/~3/W6IepUJnSCQ/welcome-mike-nygard" />
    <author>
      <name>Justin Gehtland</name>
      <email>justin@thinkrelevance.com</email>
    </author>
    <content type="html">&lt;p&gt;It is with great pleasure that I get to publicly welcome our newest team member, &lt;a href="http://www.michaelnygard.com/blog/"&gt;Mike Nygard&lt;/a&gt;.  We&amp;#39;ve known Mike for a long time, and have been attempting to brainwash him into believing we deserved to have him join for nearly that long.  After years of #hbb, too-smoky-to-drink-Scotch, and &lt;a href="http://clojure.com"&gt;adopting a new language to play with&lt;/a&gt;, we finally managed the task. &lt;/p&gt;

&lt;p&gt;Mike&amp;#39;s bio:&lt;/p&gt;

&lt;hr&gt;

&lt;p&gt;Somewhere in the mid-90&amp;#39;s, Michael went from &amp;quot;young hotshot&amp;quot; to &amp;quot;grizzled veteran&amp;quot;. He&amp;#39;s still not sure quite when or how that happened. It might have been &lt;a href="http://33degree.org/img/speakers/MichaelNygard.jpg"&gt;the beard&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;It might also be that Michael has worked in many different kinds of software development across many different domains, starting with assembly in the 8-bit micro days up through Java, Scala, and Clojure for massive distributed systems. That experience includes massive companies like Unisys, Best Buy, 3M, and Target, along with two startups that grew from 30 to more than 100 people, plus three terms as an independent consultant. He&amp;#39;s always looking for people who know they can do anything, and that describes Relevance.&lt;/p&gt;

&lt;p&gt;His desire to teach others shows in daily work, in speaking engagements, and in writing. Michael wrote &lt;a href="http://pragprog.com/titles/mnee/release-it"&gt;&amp;quot;Release It!&amp;quot;&lt;/a&gt;---about building large scale systems to survive the real world, rather than just passing QA---and has contributed to several other books. These days, he is devoted to improving the odds that a client&amp;#39;s system will make money for them, through a deep understanding of time, uncertainty, risk, ignorance, and architecture.&lt;/p&gt;

&lt;p&gt;He finds it astonishing that the most buzz-worthy technologies of the past two years are Emacs, Vi, Lisp, and batch processing (Hadoop).&lt;/p&gt;

&lt;hr&gt;

&lt;p&gt;We were unable to convince Mike that we were really &lt;a href="http://livingsocial.com"&gt;LivingSocial&lt;/a&gt; during his &amp;quot;interview&amp;quot;.  We did, however, convince him that we understood how to use parentheses appropriately when coding, and this seems to have done the trick.&lt;/p&gt;

&lt;p&gt;Welcome aboard, Mike!&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/relevance-blog/~4/W6IepUJnSCQ" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://thinkrelevance.com/blog/2011/06/03/welcome-mike-nygard</feedburner:origLink></entry>
  <entry>
    <title>The one where we welcome two more to the family</title>
    <id>http://thinkrelevance.com/blog/2011/04/20/welcoming-two-more</id>
    <published>2011-04-20T00:00:00Z</published>
    <link href="http://feedproxy.google.com/~r/relevance-blog/~3/Qg2qHiEmAx4/welcoming-two-more" />
    <author>
      <name>Justin Gehtland</name>
      <email>justin@thinkrelevance.com</email>
    </author>
    <content type="html">&lt;p&gt;Our &lt;a href="http://www.applerecords.com/"&gt;Apple&lt;/a&gt; gambit paid off. Two poor, easily deluded suckers......I mean, two fine, intelligent and wonderful people have decided to join our growing chorus.  Let me introduce you to:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://ravenousfig.com/"&gt;Jamie Kite&lt;/a&gt; Jamie is passionate about creating elegant solutions to complex problems. After receiving her B.S. in Computer Science from UCF (University of Central Florida, or alternately &amp;quot;Under Construction Forever&amp;quot;), she stumbled upon a social media marketing start-up in Orlando, FL where she went from Front-End Developer to Senior Ruby Developer and Project Lead faster than you can say &amp;quot;cakeplow.&amp;quot; Jamie is equally comfortable debugging Ruby code as she is reworking designs in Photoshop or writing poetic CSS. She lives her life by the &amp;quot;Under Construction Forever&amp;quot; mantra, always learning and eager to pick up new technologies and techniques to improve her craft. When she&amp;#39;s not writing code or designing user experiences, you can find her presiding over wedding ceremonies, pulling weeds, or cooking and writing for her food blog.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://twitter.com/lynngrogan"&gt;Lynn Grogan&lt;/a&gt; Lynn arrived in Durham after a two month road trip looking for a new place to live. She found Relevance and lured them in with two lines in her cover letter which read: I have memorized exactly two jokes in my life, but they are inappropriate for a cover letter and I would have to meet you in person to gauge whether or not they are appropriate to tell during an interview. One of them involves Willie Nelson, the other one involves a runny nose. Clearly these were good jokes because they hired her on as an office manager. Prior to Relevance, Lynn was working as Director of Operations at VonChurch, Inc. a firm in San Francisco that specializes in recruiting for the video game industry. Prior to that she was doing lots of stuff that mainly involved art galleries and coffee. Lynn was born and raised in the fine state of Wisconsin and has a B.A. from UW-Madison in Sociology.&lt;/p&gt;

&lt;p&gt;I think we can stop pretending to be other giant companies now. Sorry, &lt;a href="http://groupon.com"&gt;Groupon&lt;/a&gt; and &lt;a href="http://apple.com"&gt;Apple&lt;/a&gt;.  We&amp;#39;re still hiring, though, so this time, if you are interested, I&amp;#39;ll just let our &lt;a href="http://thinkrelevance.com/team"&gt;awesome team&lt;/a&gt; speak for itself.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/relevance-blog/~4/Qg2qHiEmAx4" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://thinkrelevance.com/blog/2011/04/20/welcoming-two-more</feedburner:origLink></entry>
  <entry>
    <title>When You Start, Define How You Will Behave</title>
    <id>http://thinkrelevance.com/blog/2011/04/06/startup-behavior</id>
    <published>2011-04-06T00:00:00Z</published>
    <link href="http://feedproxy.google.com/~r/relevance-blog/~3/s-1L-g3jpas/startup-behavior" />
    <author>
      <name>Justin Gehtland</name>
      <email>justin@thinkrelevance.com</email>
    </author>
    <content type="html">&lt;p&gt;When you are starting a new company, there are a lot of things you are asked to announce at the start. What are you going to do? Why are you doing it? What makes you so special? Why is your social coupon FPS better than LivingDiscountKillzone? Exactly when do you reach the magical $12B valuation?&lt;/p&gt;

&lt;p&gt;By all means, answer these questions. Each is important to some constituency, be it the employees you will try to attract, the investors who are clamoring to get in, the customers you hope to target, etc. The great thing about the modern world of &lt;a href="http://www.startuplessonslearned.com/"&gt;“lean startups”&lt;/a&gt; and &lt;a href="http://www.quora.com/What-are-the-most-annoying-recently-popular-buzz-words-or-phrases"&gt;“the pivot”&lt;/a&gt; is that you are expected to throw each of these answers away after three months. After all, the purpose of a startup is to discover a sustainable business model. Your first guess is going to be wrong.&lt;/p&gt;

&lt;p&gt;I’d suggest that, in addition to these ephemeral things, you also consider strongly announcing to the world how you are going to behave while you build this thing. This, however, is not ephemeral. It isn’t something you should pivot away from. It can’t be subject to &lt;a href="http://en.wikipedia.org/wiki/A/B_testing"&gt;A/B testing&lt;/a&gt;, and it can never be diluted through Series DD financing. It is the absolute statement of what you should expect of yourself, in normal times and in the face of &lt;a href="http://pinboard.in/blog/173/"&gt;crisis&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I recently had to craft a document for a new venture, and it includes the following paragraph:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I expect that we’ll create a company dedicated to the idea that you can be a capitalist, and still be a decent person at the same time. That we will treat employees, customers, investors and vendors with fairness, honor and dignity. We will empathize before we criticize, but criticize when it is important to do so. We’ll endeavor to understand our company’s externalities, minimizing the negative ones, accentuating the positive ones. We will, in all ways, act as if people actually matter.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Whenever the organization faces a tough decision, whenever it operates under stress, whenever it asks itself “what do I do now?”, it will have this statement as a guide. I guarantee that such a statement will eliminate a world of possibilities from the choice it has to make, and will draw a big &lt;a href="http://skitch.com/"&gt;Skitch&lt;/a&gt;-style red arrow at the right choice. You can pivot away from what you do, but you can’t pivot away from who you are.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/relevance-blog/~4/s-1L-g3jpas" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://thinkrelevance.com/blog/2011/04/06/startup-behavior</feedburner:origLink></entry>
  <entry>
    <title>Introducing Postfixer</title>
    <id>http://thinkrelevance.com/blog/2011/04/05/introducing-postfixer</id>
    <published>2011-04-05T00:00:00Z</published>
    <link href="http://feedproxy.google.com/~r/relevance-blog/~3/ZEBogIq6Hos/introducing-postfixer" />
    <author>
      <name>Sam Umbach</name>
      <email>sam@thinkrelevance.com</email>
    </author>
    <content type="html">&lt;h2&gt;&amp;quot;Have you got anything without spam?&amp;quot;&lt;/h2&gt;

&lt;p&gt;We recently heard from a client concerned that a few of his customers weren&amp;#39;t receiving automated emails.  His email account was filling with hundreds of bounce notifications, customers were getting frustrated, and there was nothing he could do about it.&lt;/p&gt;

&lt;p&gt;Inspection of the &lt;a href="http://www.postfix.org/"&gt;Postfix&lt;/a&gt; logs on his and several other servers revealed a systematic problem.  When these apps were first deployed, most emails were successfully delivered to customers (although a few might have ended up in the Spam/Bulk folder).  Over the years, however, the spam problem has only gotten worse; and email clients, ISPs, and mail services aggressively terminate suspect messages with extreme prejudice.&lt;/p&gt;

&lt;h2&gt;Enter Postfixer&lt;/h2&gt;

&lt;p&gt;Most of us aren&amp;#39;t Postfix gurus, let alone &lt;a href="http://tools.ietf.org/html/rfc5321"&gt;email&lt;/a&gt; experts.  &lt;a href="https://github.com/sumbach/postfixer"&gt;Postfixer&lt;/a&gt; helps with the following error-prone tasks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Configuring Postfix properly&lt;/li&gt;
&lt;li&gt;Setting up the necessary DNS entries&lt;/li&gt;
&lt;li&gt;Testing everything to ensure your emails make it to the Inbox&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Postfixer is a standalone utility powered by &lt;a href="https://github.com/capistrano/capistrano/wiki"&gt;Capistrano&lt;/a&gt;.  Git clone it, drop in a config file, and say goodbye to the Spam folder.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;$ git clone https://github.com/sumbach/postfixer.git
$ cd postfixer
$ cp config-hostname.example.com.yml config-errbit.thinkrelevance.com.yml
&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Here&amp;#39;s a sample config:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;#
# config-errbit.thinkrelevance.com.yml
#
canonical_hostname: errbit.thinkrelevance.com
additional_hostnames:
  - utility.thinkrelevance.com
email_domains:
  - thinkrelevance.com
forwarding_address: utility-errors@thinkrelevance.com
envelope_sender: bounces@thinkrelevance.com
application_user: deploy

sudo_user: deploy
address: errbit.thinkrelevance.com
&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Let&amp;#39;s break it down:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;canonical_hostname&lt;/strong&gt;: Fully-qualified domain name (FQDN) for your application server&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;additional_hostnames&lt;/strong&gt;: Any additional hostnames that this server is known by (may be empty)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;email_domains&lt;/strong&gt;: All domains for which this server should be able to send email&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;For example, if your application is accessed as &lt;a href="http://errbit.thinkrelevance.com/"&gt;http://errbit.thinkrelevance.com/&lt;/a&gt;, but its email comes from &lt;a href="mailto:errbit@thinkrelevance.com"&gt;errbit@thinkrelevance.com&lt;/a&gt;, then email_domains should be &amp;quot;thinkrelevance.com&amp;quot;.&lt;/li&gt;
&lt;li&gt;Every entry in email_domains should have DNS &lt;a href="http://wikipedia.org/wiki/Mx_records"&gt;MX Records&lt;/a&gt; set up.  You almost always want to send email from your registered domain (thinkrelevance.com), NOT from a hostname or subdomain (errbit.thinkrelevance.com, &lt;a href="http://www.thinkrelevance.com"&gt;www.thinkrelevance.com&lt;/a&gt;, etc).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;forwarding_address&lt;/strong&gt;: Email address for local messages (such as errors from cron jobs)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I typically use &amp;quot;errors@&amp;quot; followed by the first entry from email_domains.&lt;/li&gt;
&lt;li&gt;The domain (the part following the @ sign) MUST be included in email_domains.&lt;/li&gt;
&lt;li&gt;Email addressed to local user accounts (root, nobody, etc) will be forwarded to this address.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;envelope_sender&lt;/strong&gt;: SMTP envelope sender (where bounce messages end up)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;As with forwarding_address, the domain (the part following the @ sign) MUST be included in email_domains.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;application_user&lt;/strong&gt;: Local user account under which your application runs&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Emails addressed to this user&amp;#39;s account (for example, error messages from cron jobs) will be sent to forwarding_address.&lt;/li&gt;
&lt;li&gt;Outgoing email from this user&amp;#39;s account (messages sent by ActionMailer without an explicit From address or sent using the /usr/sbin/sendmail binary, for example) will be rewritten to change the From address to the forwarding_address set above.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;sudo_user&lt;/strong&gt;: Local user account with root sudo permissions&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Postfixer will SSH into the server using this account.  Might be the same as application_user.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;address&lt;/strong&gt;: FQDN or IP address used to SSH into this server&lt;/p&gt;

&lt;p&gt;Once you&amp;#39;ve updated your Postfixer config, a number of cap tasks are at your disposal:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;$ export CONFIG=errbit.thinkrelevance.com   # specifies which .yml file Postfixer uses
$ cap email:send_test_email                 # send a test message
$ cap email:check_dns                       # print a report of your existing DNS entries
&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;The send_test_email task uses the very helpful &lt;a href="http://www.port25.com/domainkeys/"&gt;port25 verifier&lt;/a&gt;.  If you&amp;#39;re like me, the response to the test email looks something like this:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;==========================================================
Summary of Results
==========================================================
SPF check:          softfail      (BAD)
DomainKeys check:   neutral       (BAD)
DKIM check:         neutral       (BAD)
Sender-ID check:    softfail      (BAD)
SpamAssassin check: ham           (GOOD)
&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Yuck!  Let&amp;#39;s fix that up.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;$ cap email:install_packages                # install DKIM-milter (and Postfix, if not installed)
$ cap email:backup_config                   # archive your current config files
$ cap email:generate_config                 # generate new config file based on the .yml
$ cap email:install_config                  # copy new config files to the server
$ cap email:restart                         # restart Postfix and DKIM-milter
$ cap email:print_dns                       # generate a report of the DNS changes you should make
&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Based on the output from print_dns, you should add/update your DNS configuration.  If you&amp;#39;re using &lt;a href="http://slicehost.com/"&gt;Slicehost&lt;/a&gt; for DNS, log in and edit DNS entries via &lt;a href="https://manage.slicehost.com/"&gt;SliceManager&lt;/a&gt;.  Otherwise, check with your registrar (&lt;a href="http://www.namecheap.com/"&gt;Namecheap&lt;/a&gt;, &lt;a href="https://www.godaddy.com/"&gt;GoDaddy&lt;/a&gt;, etc).&lt;/p&gt;

&lt;p&gt;(Note: print_dns assumes you&amp;#39;re using Google Apps.  If you&amp;#39;re using your ISP&amp;#39;s or your own incoming mail server, replace &amp;quot;include:_spf.google.com&amp;quot; in the &lt;a href="http://www.openspf.org/"&gt;SPF&lt;/a&gt; records with something appropriate to your setup.)&lt;/p&gt;

&lt;p&gt;Once you&amp;#39;ve updated your Postfix config and DNS entries, give &lt;code&gt;cap email:send_test_email&lt;/code&gt; another try.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;==========================================================
Summary of Results
==========================================================
SPF check:          pass          (GOOD)
DomainKeys check:   neutral       (BAD)
DKIM check:         pass          (GOOD)
Sender-ID check:    pass          (GOOD)
SpamAssassin check: ham           (GOOD)
&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Ahhhhh, much better.&lt;/p&gt;

&lt;h2&gt;Caveats&lt;/h2&gt;

&lt;p&gt;Postfixer does not (yet) check if your server is on a &lt;a href="http://wikipedia.org/wiki/DNSBL" title="DNSBL (DNS Blackhole List)"&gt;blacklist&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I recommend the awesome &lt;a href="http://www.mxtoolbox.com/blacklists.aspx"&gt;DNSBL Lookup&lt;/a&gt; tool from mxtoolbox.com&lt;/li&gt;
&lt;li&gt;If your server is on a blacklist, you&amp;#39;ll need to request to be removed (the process should be available on the blacklist provider&amp;#39;s web site)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Postfixer does not check for general DNS issues&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I recommend &lt;a href="http://www.dnsvalidation.com/"&gt;dnsvalidation.com&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Posfixer does not (yet) support &lt;a href="http://antispam.yahoo.com/domainkeys"&gt;Yahoo DomainKeys&lt;/a&gt; (as seen in the port25 verifier results above)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It does support the newer &lt;a href="http://www.dkim.org/"&gt;DKIM (DomainKeys Identified Mail)&lt;/a&gt; standard which has largely displaced Yahoo&amp;#39;s legacy solution.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Thanks&lt;/h2&gt;

&lt;p&gt;Huge thanks to &lt;a href="http://thinkrelevance.com/"&gt;Relevance&lt;/a&gt; for giving me Fridays to make these kinds of contributions.&lt;/p&gt;

&lt;p&gt;Thanks also to &lt;a href="http://twitter.com/shayfrendt"&gt;Shay Frendt&lt;/a&gt; for being my first guinea pig and for his new feature ideas.&lt;/p&gt;

&lt;p&gt;Thanks to &lt;a href="http://mike.bailey.net.au/"&gt;Mike Bailey&lt;/a&gt; for &lt;a href="http://deprec.org/"&gt;deprec&lt;/a&gt;, from which I got the idea to generate config files locally (using ERB templates) and deploy via Capistrano.&lt;/p&gt;

&lt;h2&gt;I&amp;#39;d like to contribute&lt;/h2&gt;

&lt;p&gt;That sounds great; I&amp;#39;d like you to contribute, too!  Postfixer is available on &lt;a href="https://github.com/sumbach/postfixer"&gt;Github&lt;/a&gt; and distributed under the MIT license.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://help.github.com/pull-requests/"&gt;Pull requests&lt;/a&gt; are welcome.&lt;/li&gt;
&lt;li&gt;Please post bugs and feature requests in &lt;a href="http://github.com/sumbach/postfixer/issues"&gt;Github issues&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;img src="http://feeds.feedburner.com/~r/relevance-blog/~4/ZEBogIq6Hos" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://thinkrelevance.com/blog/2011/04/05/introducing-postfixer</feedburner:origLink></entry>
  <entry>
    <title>Relevance Turns 30 (people)</title>
    <id>http://thinkrelevance.com/blog/2011/03/02/relevance-turns-30</id>
    <published>2011-03-02T00:00:00Z</published>
    <link href="http://feedproxy.google.com/~r/relevance-blog/~3/7x5VaxK7PB4/relevance-turns-30" />
    <author>
      <name>Justin Gehtland</name>
      <email>justin@thinkrelevance.com</email>
    </author>
    <content type="html">&lt;p&gt;All that pretending to be &lt;a href="http://groupon.com"&gt;Groupon&lt;/a&gt; the &lt;a href="http://thinkrelevance.com/blog/2011/01/11/new-team-members.html"&gt;last time around&lt;/a&gt; really helped with recruiting (not to mention revenue, what with all the coupons we sold).  As a result of all this gorging on awesome software development, we had to convince some more folks to join our team.  Since last we spoke, we&amp;#39;ve been incredibly lucky to add:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://twitter.com/bvandgrift"&gt;Ben Vandgrift&lt;/a&gt; Ben Vandgrift has devoted himself to the cause of &amp;#39;better living through automation&amp;#39; for the past 15 years.  After completing a BS in Software Engineering (Kentucky), he entered the world of enterprise software development.  He has since been recovering--despite a growing startup habit--by applying himself to progressively smaller and smaller companies doing bigger and better things.  An entrepreneur at heart, Ben also dabbles in art and music as time infrequently allows.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://twitter.com/turbomarc"&gt;Marc Phillips&lt;/a&gt; Marc went to Colorado College where students take one class at a time for three and a half weeks straight followed by the next one, with three and a half days off in between for the whole school year. That means geology classes are month-long camping trips, literature courses require a novel a night, and biology labs often result in the sharing of hopes and dreams with fetal pigs. After waking up one morning in Seattle he got his first job at Microsoft in 1997 by explaining his ride had already left and they might as well give him something to do. After 10 years in mobile devices and forgetting to cash in his stock options before they expired, he spent the next 4 years in emerging markets and technology incubation, moving into online services and managing teams inspired by rapid iteration and agile development practices. His passion for taking risks, making mistakes, and learning from them for the benefit of others was exhibited in its purest form when on a trip to the Costa Rican jungle he led a group through the trees after their jeep broke down, discovered a hidden mud hole by sinking in it up to his waist, then located and diverted a swarm of army ants that was preparing to raid their cabin with his bare feet while trying to clean his pants, all in under 30 minutes. While he now focuses his action-oriented iterative style on more technical projects, he still frequently does his best work without pants.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://twitter.com/fogus"&gt;Michael Fogus&lt;/a&gt; Fogus started out as a philosophy major (with a focus on Nietzschian vs. Kantian philosophy), but finished with a B.A. in Computer Science from St. Mary&amp;#39;s College and an M.S. in Computer Science from Johns Hopkins University (with a focus on A.I.).  As a software developer with experience in RTOS development, distributed simulation, machine vision, code generation, and expert system construction, Fogus has spent significant time with C, C++, CLIPS, Common Lisp, Java, Jess, Python, Scala, and Clojure.  Additionally, Fogus has been involved in the Clojure and Scala communities as the Co-author of the book &lt;a href="http://joyofclojure.com/"&gt;&amp;quot;The Joy of Clojure&amp;quot;&lt;/a&gt;, author of numerous Clojure libraries, and a one-time external maintainer of the Scala XML language facilities.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://twitter.com/vanderhart"&gt;Luke Vanderhart&lt;/a&gt; From a young age, Luke has been fascinated by the possibilities of computation. Through highschool, he worked for a startup in Colorado, developing a distributed semantic network knowledge management product. He took a break from software development to get a degree in Philosophy and Linguistics from the College of William and Mary, only to discover that both are profoundly relevant to the art of creating software. After college, he worked as a consultant for several large corporate and government clients, doing enterprise-scale data management and search. During this time, he became fascinated with the beauty of functional programming, particularly Clojure, and ended up writing a book on it (&lt;a href="http://www.amazon.com/Practical-Clojure-Experts-Voice-Source/dp/1430272317"&gt;Practical Clojure&lt;/a&gt;, published by Apress) with the help of Stuart Sierra. He lives in Annapolis, MD with his wife Hannah, who is a poet.&lt;/p&gt;

&lt;p&gt;I think for the next round of recruiting we&amp;#39;re going to pretend to be &lt;a href="http://www.applerecords.com/"&gt;Apple&lt;/a&gt;.  I hear they are doing some interesting things.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/relevance-blog/~4/7x5VaxK7PB4" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://thinkrelevance.com/blog/2011/03/02/relevance-turns-30</feedburner:origLink></entry>
  <entry>
    <title>The Legend of Team Iron Chef</title>
    <id>http://thinkrelevance.com/blog/2011/02/22/team-iron-chef</id>
    <published>2011-02-22T00:00:00Z</published>
    <link href="http://feedproxy.google.com/~r/relevance-blog/~3/SysBwdTEUyA/team-iron-chef" />
    <author>
      <name>Justin Gehtland</name>
      <email>justin@thinkrelevance.com</email>
    </author>
    <content type="html">&lt;p&gt;This year, instead of holding our retreat the way we always have (holing up in the office for two days and pretending to discuss important things between Magic duels and Rock Band shenanigans) we decided to do something different.  Since we&amp;#39;re much larger now (28 this year compared to 11 last) and since a lot of folks are now remote, we decided to go offsite, and off-road, and holed up in Snowshoe, WV. &lt;/p&gt;

&lt;p&gt;Now, you might think that a well-known ski resort like Snowshoe would have a lot going for it, and you&amp;#39;d be right, as long as you were thinking of things like nice slopes and good powder and relatively efficient lifts.  If you were thinking of &lt;em&gt;food&lt;/em&gt;, though, you would be sorely, sadly, and, alas, hungrily mistaken.  Essentially, Snowshoe has a 7-11 with a Dominos Pizza built into it, and that&amp;#39;s about it for food options.  With 26 employees and a bunch of families around, we were going to be sadly limited in our comestibles without some heroics.&lt;/p&gt;

&lt;p&gt;Enter Team Iron Chef.  Before heading up to the retreat, we collected some volunteers to handle our cooking duties (2 breakfasts, 2 lunches and a dinner, all for 30 people).  Our intrepid team of dupes&lt;sup&gt;H&lt;sup&gt;H&lt;sup&gt;H&lt;sup&gt;H&lt;sup&gt;Hheroes&lt;/sup&gt;&lt;/sup&gt;&lt;/sup&gt;&lt;/sup&gt;&lt;/sup&gt; consisted of Muness (@muness), Jared (@jdpace) and Michael (@parenteau).  This wonderful crew sacrificed their sleep, their energy and their participation in parts of the retreat to keep our rogue band well-stocked with calories.  And did they ever.&lt;/p&gt;

&lt;p&gt;Breakfast consisted of an onslaught of french toast, mounds of sausage, gallons of scrambled eggs, mountains of potatoes, rivers of coffee.  They had to rise at 7 to hit the stoves and slave away all through breakfast to keep the food available for the rest of us to shovel gluttonously down our gullets.  Then we would head off to the business portions of the retreat.&lt;/p&gt;

&lt;p&gt;Then lunch would arrive; on the first day, Team Iron Chef left the retreat a little early to prepare an Italian feast, essentially an infinite supply of carbohydrates.  There was pasta, and bread, and lasagna, and bread, and mushroom calzones, and bread, and a stunning marinara, and bread.  And comas.  The second day, they left a LOT early, and Jared showed off his skills as a master sushi chef and wowed us with a rainbow of fish flavors.  The immortal cry of &amp;quot;Volcano Rollllllllll!&amp;quot; will not soon be forgotten in the hills of West Virginia.&lt;/p&gt;

&lt;p&gt;And dinner, oh dinner, Michael and crew crafted an Indian feast.  Pots of stews, piles of flavors, bowls of chutney.  And bread.  &lt;/p&gt;

&lt;p&gt;For a company that takes so much pleasure in feeding itself, Team Iron Chef completely and utterly knocked it out of the park.  It was an unbelievable accomplishment, that was coupled with enormous personal sacrifice.  It was the very embodiment of team focus, and the retreat was made immeasurably better through their efforts.  When I am asked in the future for examples of people pulling together as a team, and for a team, I will scream &amp;quot;Volcano Rollll!&amp;quot; and think fondly of Retreat &amp;#39;11.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/relevance-blog/~4/SysBwdTEUyA" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://thinkrelevance.com/blog/2011/02/22/team-iron-chef</feedburner:origLink></entry>
  <entry>
    <title>Band Together Rocks -- You Should Help</title>
    <id>http://thinkrelevance.com/blog/2011/02/02/bandtogether</id>
    <published>2011-02-02T00:00:00Z</published>
    <link href="http://feedproxy.google.com/~r/relevance-blog/~3/1q0cewgsSf0/bandtogether" />
    <author>
      <name>Justin Gehtland</name>
      <email>justin@thinkrelevance.com</email>
    </author>
    <content type="html">&lt;p&gt;For the past two years, we&amp;#39;ve been working with &lt;a href="http://bandtogethernc.org/home/"&gt;Band Together&lt;/a&gt;, a North Carolina non-profit organization with an incredibly cool mission.  Every year, they throw one amazing party at which they raise money for a &lt;em&gt;different&lt;/em&gt; North Carolina non-profit.  Last year, that party was a concert featuring &lt;a href="http://michaelfranti.com/"&gt;Michael Franti&lt;/a&gt;, &lt;a href="http://www.theoldceremony.com/"&gt;The Old Ceremony&lt;/a&gt;, &lt;a href="http://www.oneeskimo.com/"&gt;One EskimO&lt;/a&gt; and others, and they gave &lt;a href="http://www.step-up.us/"&gt;StepUP Ministry&lt;/a&gt; &lt;em&gt;$358,000&lt;/em&gt;.  That&amp;#39;s big time.&lt;/p&gt;

&lt;p&gt;And what a party we had last year.  It rained like hell all over The Old Ceremony, which sucks because they are one of my favorite local bands, but it eased up enough for us to take the dance train to funky town as Michael Franti, my favorite artist anywhere, rocked the house.&lt;/p&gt;

&lt;p&gt;This year, Band Together has launched a two-year fund drive to benefit &lt;a href="http://www.alliancemedicalministry.org/"&gt;Alliance Medical Ministry&lt;/a&gt; and &lt;a href="http://www.urbanmin.org/"&gt;Urban Ministries of Wake County&lt;/a&gt;. The goals are bigger, the concerts get better every year, and I encourage anyone who likes great music and crazy good ways to help the community to get acquainted with Band Together and check out the show this year.  Relevance will be there, in force, in the VIP booth.  Will you join us?&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/relevance-blog/~4/1q0cewgsSf0" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://thinkrelevance.com/blog/2011/02/02/bandtogether</feedburner:origLink></entry>
  <entry>
    <title>And we grow, again.</title>
    <id>http://thinkrelevance.com/blog/2011/01/11/new-team-members</id>
    <published>2011-01-11T00:00:00Z</published>
    <link href="http://feedproxy.google.com/~r/relevance-blog/~3/pU1jcB-N7WQ/new-team-members" />
    <author>
      <name>Justin Gehtland</name>
      <email>justin@thinkrelevance.com</email>
    </author>
    <content type="html">&lt;p&gt;Continuing a trend of both collecting truly awesome people and blowing right past any reasonable internal forecast of potential growth, we are enormously pleased to announce the following new additions to our team. Between them, they expand our corps of coaches, level us up at systems architecture, add a slew of awesome technical skills, and make us more likable and cuddly, to boot.&lt;/p&gt;

&lt;p&gt;And here they are:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.linkedin.com/in/maggielitton"&gt;Maggie Litton&lt;/a&gt;: Maggie is a veteran project manager, scrummistress, and coach. After studying Film, Philosophy, and English at New York University and the University of Kentucky, she explored several career paths before falling in love with software development. Before joining Relevance, she spent the last several years scaling agile development practices for enterprise projects at IBM.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://twitter.com/samumbach"&gt;Sam Umbach&lt;/a&gt;: Most of all, Sam is passionate about the user!  He finds not just the technology solution, but also the humane design to go with it.  After
several years of embedded systems work in network security and, most recently, video games, he is now addicted to closing the feedback loop, iteratively discovering and building what the user needs.  When not at his computer, you&amp;#39;ll probably find Sam at one of the many Triangle music venues, enjoying a concert and a beer.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.pluralsight-training.net/community/blogs/tewald/default.aspx"&gt;Tim Ewald&lt;/a&gt;: Tim Ewald has 18 years of experience building distributed systems. Over the last decade he has worked primarily with web technologies. Tim is a pragmatic architect focused on designing effective solutions to complex problems. Prior to joining Relevance, he was VP of Architecture at SeaChange International, a world-leader in video-on-demand infrastructure for cable and telcos, where he worked on integrating Internet technologies with television infrastructure. Before SeaChange, he worked at Microsoft, where he helped design and build the first version of MSDN2 for delivering technical content to developers. Tim&amp;#39;s primary technical interests include advanced languages like Clojure and Ruby and hypermedia service APIs based on REST. Tim holds a Bachelor&amp;#39;s in Computer Science from Hampshire College and is a well-known conference speaker.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://pluralsight.com/craig"&gt;Craig Andera&lt;/a&gt;: Craig graduated with a master&amp;#39;s degree from MIT in 1995, and has spent the intervening time working variously in C++, C#, and (most recently) Clojure. Specializing in large-scale web system implementation, Craig has written for MSDN Magazine and has spoken at conferences both nationally and internationally.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://bobbycalderwood.com"&gt;Bobby Calderwood&lt;/a&gt;: Bobby is half developer, half businessman, and all family-man. He graduated with a degree in Engineering and Economics from Dartmouth College. During his time in college he also played fullback on the football team and served a two-year mission for his church in Arizona.  He has spent his whole career splitting the divide between business analyst and developer for small startups and large institutions alike, including being a technology consultant and developer for the FBI and the DoD.  He, his wife, and their two small children enjoy playing guitars and singing together, participating in their church congregation, and chasing their dog, Wally.&lt;/p&gt;

&lt;p&gt;Welcome to you all, I only hope that we live up to the fantastic expectations you must have of us after we pretended we were &lt;a href="http://techcrunch.com/2011/01/10/groupon-raises-like-a-billion-dollars/"&gt;Groupon&lt;/a&gt; during your interviews.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/relevance-blog/~4/pU1jcB-N7WQ" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://thinkrelevance.com/blog/2011/01/11/new-team-members</feedburner:origLink></entry>
  <entry>
    <title>hooppps - A Mobile dribbble Browser</title>
    <id>http://thinkrelevance.com/blog/2010/11/16/hooppps-a-mobile-dribbble-browser</id>
    <published>2010-11-16T00:00:00Z</published>
    <link href="http://feedproxy.google.com/~r/relevance-blog/~3/1jEO32_DNAQ/hooppps-a-mobile-dribbble-browser" />
    <author>
      <name>Michael Parenteau</name>
      <email>michael@thinkrelevance.com</email>
    </author>
    <content type="html">&lt;p&gt;I wanted to make a &lt;a href="http://dribbble.com/" title="Dribbble - What are you working on?"&gt;dribbble&lt;/a&gt; browser for my phone, so I convinced some of my Relevance teammates to help me in this endeavor.  The result: &lt;a href="http://hooppps.com"&gt;hooppps&lt;/a&gt;!  hooppps is an &lt;a href="http://github.com/relevance/hooppps"&gt;open-source&lt;/a&gt; Rails 3 app hosted on Heroku. Under the covers it uses the &lt;a href="http://github.com/jeremyw/swish"&gt;swish gem&lt;/a&gt;, a Ruby wrapper for the dribbble API.&lt;/p&gt;

&lt;p&gt;A screenshot of hooppps (from a desktop web browser):
&lt;img src="http://thinkrelevance.com/images/blog/hooppps-browser-layout.png" alt="A screenshot of the regular browser layout of hooppps, seen at http://hooppps.com" style="margin:10px 0 0 0" width="540px" height="386px"/&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;(On the screenshot above, the images inside hooppps are shots on dribbble by: &lt;a href="http://dribbble.com/dlanham"&gt;David Lanham&lt;/a&gt; and &lt;a href="http://dribbble.com/DanCassaro"&gt;Dan Cassaro&lt;/a&gt;)&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;What is dribbble?&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;&amp;quot;Dribbble is show and tell for designers, developers and other creatives. Share sneak peeks of your work as &amp;#39;shots&amp;#39; — small screenshots of the designs and applications you’re working on&amp;quot;&lt;/em&gt; - Quoted from the dribbble blog.&lt;/p&gt;

&lt;p&gt;I love dribbble. People ask me, &amp;quot;What is dribbble?&amp;quot; and I always reply, &amp;quot;It&amp;#39;s like Twitter, but for designers.&amp;quot; The truth is, although there are similarities, it&amp;#39;s very different from Twitter. dribbble is a community of some of the most talented designers and artists in the world! A dribbble user (AKA &amp;quot;player&amp;quot;) is asked the question, &amp;quot;What are you working on?&amp;quot;  You respond by uploading an image (AKA &amp;quot;shot&amp;quot;) no larger than 400px x 300px. This community is invite-only (AKA &amp;quot;draft&amp;quot;), and you can only post a limited number of &amp;quot;shots&amp;quot; per month. &amp;quot;Players&amp;quot; can follow each other, &amp;quot;like&amp;quot; shots, and leave comments. There is a lot of feedback shared amongst players, and keeping in the spirit of the application&amp;#39;s basketball theme, players can &amp;quot;rebound&amp;quot; shots. A &amp;quot;rebound&amp;quot; posts a shot that is inspired by another shot. If you like looking at beautiful art and design, you should definitely &lt;a href="http://dribbble.com/site/about"&gt;check out dribbble&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;Why make hooppps?&lt;/h2&gt;

&lt;p&gt;While dribbble is amazing in a desktop browser, they have not yet created a mobile interface. So when dribbble came out with an API, it made me think of how cool it would be to browse dribbble on my phone via a lovingly-crafted mobile interface.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Not just for iPhones&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Even though I personally use an iPhone, I didn&amp;#39;t want to limit the functionality to just that segment. Others have released native iPhone clients for dribble that you can buy in the App Store. And they are great apps. What I wanted though, was a simple and lightweight browser that &lt;strong&gt;anybody&lt;/strong&gt; could access via their smartphone browser. So, if you are on Android or iOS, you can experience dribbble on your phone in a mobile-friendly format via &lt;a href="http://hooppps.com"&gt;hooppps&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;Start small and iterate&lt;/h2&gt;

&lt;p&gt;hooppps is not a complete implementation of dribbble, nor does it attempt to cover every feature of the dribbble API. It is a simple experiment meant to improve the dribbble mobile experience. So far, that initial goal has been accomplished. However, this is just the first release. We want to make hooppps better. As the API provides more functionality, we&amp;#39;ll add that functionality to hooppps as we see fit.&lt;/p&gt;

&lt;h3&gt;Release 1&lt;/h3&gt;

&lt;p&gt;With the first release of hooppps, we hoped to get initial responses and feedback from people.&lt;/p&gt;

&lt;p&gt;The first release features include:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Views&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;popular shots&lt;/li&gt;
&lt;li&gt;shot detail&lt;/li&gt;
&lt;li&gt;player detail&lt;/li&gt;
&lt;li&gt;go to player&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Extras&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;comments on shots&lt;/li&gt;
&lt;li&gt;pagination&lt;/li&gt;
&lt;li&gt;share shot on Twitter&lt;/li&gt;
&lt;li&gt;follow player on Twitter&lt;/li&gt;
&lt;li&gt;iPhone home screen icon&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In addition to the features in hooppps today, the dribbble API also provides access to &amp;quot;shots by everyone&amp;quot; and &amp;quot;debut shots.&amp;quot; We did not implement these extra views...&lt;em&gt;yet&lt;/em&gt;.&lt;/p&gt;

&lt;h2&gt;Coming soon!&lt;/h2&gt;

&lt;p&gt;When I created the first view on hooppps, I thought, &amp;quot;Let&amp;#39;s implement the popular shots thread, because it&amp;#39;s &lt;em&gt;popular&lt;/em&gt;.&amp;quot; Well, it turns out that it may be full of popular shots, but it&amp;#39;s not the most popular &lt;em&gt;view&lt;/em&gt; in dribbble. Since we first mentioned hooppps on Twitter, people have noted that the &amp;quot;everyone&amp;quot; thread is more interesting, and that is what people view the most. So that was our first feature request. We are implementing that, and we will include the &amp;quot;debut&amp;quot; thread as well.&lt;/p&gt;

&lt;p&gt;What would you like to see in hooppps?&lt;/p&gt;

&lt;h2&gt;Desktop browser vs. mobile browser&lt;/h2&gt;

&lt;p&gt;I originally designed hooppps to just be experienced on a phone. But as I got to thinking about how people would be introduced to hooppps, I realized that a lot of people would end up on hooppps via their laptop or desktop computer. Simply showing them the mobile layout in their desktop browser would result in a subpar introduction to hooppps. But I didn&amp;#39;t want to focus on a layout for desktop browsers, because dribbble already has a wonderful desktop interface. Nevertheless, I wanted people to have an awesome first impression of hooppps, which meant that hooppps needed a special layout for the desktop browser: a preview of sorts.&lt;/p&gt;

&lt;p&gt;So then I got to thinking, &amp;quot;Why not make hooppps &lt;em&gt;functional&lt;/em&gt; in its desktop preview?&amp;quot; I created a &lt;code&gt;position:absolute&lt;/code&gt; div over an iPhone image with &lt;code&gt;overflow: hidden&lt;/code&gt;. Then, using the jQuery &lt;a href="http://plugins.jquery.com/project/mousewheel" title="Mouse Wheel Extension | jQuery Plugins"&gt;mousewheel plugin&lt;/a&gt;, I enabled scrolling of the content inside of that div, simulating the mobile experience.  (Thanks to &lt;a href="http://twitter.com/karnowski"&gt;Larry&lt;/a&gt; for solving that problem!)  In short, hooppps has a fully functional mobile interface visible in a desktop browser!&lt;/p&gt;

&lt;h2&gt;Collaboration and fun&lt;/h2&gt;

&lt;p&gt;hooppps has been a really fun project for me. I have learned more about Rails and designing for the mobile experience. It has also been really fun to get other developers here at Relevance involved. (For a list of contributors, see the &lt;a href="https://github.com/relevance/hooppps/blob/master/README.md"&gt;README&lt;/a&gt;.)&lt;/p&gt;

&lt;p&gt;From the very beginning, the idea was to open this up for others to contribute or fork to make their own dribbble browser. So, all of the code is public on &lt;a href="http://github.com/relevance/hooppps"&gt;GitHub&lt;/a&gt;. I would love to help other designers get involved (or even get started with their own implementation), so &lt;a href="http://twitter.com/parenteau"&gt;@reply me on Twitter&lt;/a&gt; with any questions.&lt;/p&gt;

&lt;h2&gt;Thanks!&lt;/h2&gt;

&lt;p&gt;I want to say thanks to everyone here at Relevance for helping me get hooppps out the door. Thank also to &lt;a href="http://weiskotten.com/"&gt;Jeremy Weiskotten&lt;/a&gt; for the &lt;a href="https://github.com/jeremyw/swish"&gt;swish gem&lt;/a&gt;. Without that, I probably would have not been ramped up so quickly. I also want to say thanks to &lt;a href="http://dribbble.com/simplebits"&gt;Dan Cederholm&lt;/a&gt; and &lt;a href="http://dribbble.com/frogandcode"&gt;Rich Thornett&lt;/a&gt; for doing such an awesome job with dribbble. And thanks to everyone out there that contributes to open-source software. It is really awesome to have so many tools and a wonderful community to work with!&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/relevance-blog/~4/1jEO32_DNAQ" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://thinkrelevance.com/blog/2010/11/16/hooppps-a-mobile-dribbble-browser</feedburner:origLink></entry>
  <entry>
    <title>Thoughts and Lessons from Rails Rumble 2010</title>
    <id>http://thinkrelevance.com/blog/2010/11/09/thoughts-and-lessons-from-rails-rumble-2010</id>
    <published>2010-11-09T00:00:00Z</published>
    <link href="http://feedproxy.google.com/~r/relevance-blog/~3/kG2YTXTIg7Y/thoughts-and-lessons-from-rails-rumble-2010" />
    <author>
      <name>Michael Parenteau</name>
      <email>michael@thinkrelevance.com</email>
    </author>
    <content type="html">&lt;p&gt;I met &lt;a href="http://nickplante.com"&gt;Nick Plante&lt;/a&gt; working at Relevance and discovered that he was one of the people who organized the &lt;a href="http://r10.railsrumble.com/" title="Rails Rumble 2010"&gt;Rails Rumble&lt;/a&gt;. I asked him about it and expressed my interests in participating.  It was too late to get in on a team, but he invited me to be a judge.&lt;/p&gt;

&lt;p&gt;I was asked to review 20 apps in about 72 hours, judging each by 4 categories: Appearance, Completeness, Innovativeness &amp;amp; Usefulness. I took this all very seriously, and I created a template to give detailed feedback in all areas.  (I know I would have loved to get feedback that way if I had entered.) There were many things that raised my brow throughout my review of the suggested apps.  Without a doubt, there were some amazing wins.  But, there were also several common fails for many of the apps I reviewed.&lt;/p&gt;

&lt;p&gt;First and foremost, let me start by recognizing that these apps were all made in just 48 hours by a team of no more than four people.  That&amp;#39;s a serious feat!  All of the apps had some serious sweat poured into them and just participating in the Rumble is a win, as there is much to learn from accepting such tight constraints.  And under these constraints, it was clear that most teams fell apart around the same thing -- &lt;a href="http://en.wikipedia.org/wiki/Minimum_viable_product"&gt;Minimal Viable Product&lt;/a&gt; (MVP).&lt;/p&gt;

&lt;p&gt;&lt;img src="http://thinkrelevance.com/images/blog/mvp.png" alt="A very unusable pen with lots of gadgetry and features... and the text that reads: 'When all you needed was a pen'" style="margin:10px 0 0 0" width="540px" height="615px"/&gt;&lt;/p&gt;

&lt;h2&gt;Minimal Viable Product&lt;/h2&gt;

&lt;p&gt;A Minimal Viable Product, in this case, would be the most &lt;strong&gt;simple and achievable feature set&lt;/strong&gt; used to &lt;strong&gt;demonstrate a solution&lt;/strong&gt; to &lt;strong&gt;users with limited time&lt;/strong&gt; (i.e., the judges) with a goal of &lt;strong&gt;getting feedback on its value&lt;/strong&gt;. Almost every great virtual product starts out small and introduces &lt;em&gt;enhancements&lt;/em&gt; to test the value of new features, while all the while its core remains usable and intact.&lt;/p&gt;

&lt;p&gt;The applications that I noticed most &lt;strong&gt;positively&lt;/strong&gt; were those that had a clear understanding of MVP. They served a specific purpose. They were polished in appearance. And the minimal feature set was functionally complete.  When certain features were not implemented, these apps clearly indicated that these features were &amp;quot;coming soon&amp;quot;; they were thoughtfully and tastefully integrated in appropriate locations throughout the app. These features were also &lt;em&gt;enhancements&lt;/em&gt; not blatant omissions. The teams who got this right created products/tools that demonstrated solutions.  They did so with clean interfaces that told the user what to do when and where.  And it was clear that the tool was working by the feedback provided to the user post-interaction via validation and messaging.  Even upon first laying eyes on these apps, they informed the user as to why they were there and what they should expect from their experience. They had clear calls-to-action that guided me to where I needed to be at each stage of my interaction with the app. Kudos to all who put such thought and work into your app &lt;a href="http://www.amazon.com/Think-Common-Sense-Approach-Usability/dp/0789723107" title="Amazon.com: Don&amp;amp;#39;t Make Me Think! A Common Sense Approach to Web Usability (0029236723101): Steve Krug, Roger Black: Books"&gt;so I didn&amp;#39;t have to figure out how to use it&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;The applications that I noticed most &lt;strong&gt;critically&lt;/strong&gt; were those that completely missed the MVP boat. These apps may have had great functionality on the inside, but signing up was complicated. Or &lt;em&gt;broken&lt;/em&gt;. Or upon landing, there was no clear explanation as to what problem the app was trying to solve.  Other apps got the landing right, but then fell apart on the inside due to excess features which resulted in poor organization, poor flow, or general incompleteness.  Some apps failed to guide the user through their experience; they lacked clear labeling and messaging.  These apps seemed to lack focus and/or balance.&lt;/p&gt;

&lt;h2&gt;Questions that could be helpful in a Rumble&lt;/h2&gt;

&lt;p&gt;How do we apply this learning to future Rumble events?  Asking the following questions could give you a head start on the competition.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For MVP:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What is the problem that I am solving?  How can I solve it in the most simple and focused way?&lt;/li&gt;
&lt;li&gt;Can we solve the overall problem one feature at a time?&lt;/li&gt;
&lt;li&gt;Are there future (post-Rumble) features that I want to preview to the users?  Can I provide those previews without compromising the core functionality of the app, or would these enhancements just be a distraction?&lt;/li&gt;
&lt;li&gt;Is what I am working on &lt;em&gt;essential&lt;/em&gt; to the current release of this product?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;For Usability:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Have I clearly stated what the user should be doing at every stage — from landing, to signup, to sign in, to using the tool, to logging out?&lt;/li&gt;
&lt;li&gt;Do I have validations, confirmations, and essential messaging in place?&lt;/li&gt;
&lt;li&gt;Have I labeled forms and form elements clearly?&lt;/li&gt;
&lt;li&gt;Are there any broken links?&lt;/li&gt;
&lt;li&gt;Have I made it easy for users to recover from mistakes they might make when entering data?&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Rails Rumble apps I reviewed that &lt;em&gt;&amp;quot;wowed me&amp;quot;&lt;/em&gt;&lt;/h2&gt;

&lt;p&gt;Of the apps that were assigned to me for judging, these entries were the shining stars.  (Note: they are not the list of top apps for the Rumble.  For that list, you should check out the complete scores and all of the &lt;a href="http://railsrumble.com/entries"&gt;amazing stuff that came out of this 48 hour whirlwind of productivity&lt;/a&gt;.)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.commendablekids.com/"&gt;Commendable Kids&lt;/a&gt; &lt;em&gt;(The clear winner IMHO)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://monitaur.net/"&gt;Monitaur&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.puzzlegasm.com/"&gt;puzzlegasm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://rails3templates.r10.railsrumble.com/"&gt;rails3templates&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://snoopdoc.r10.railsrumble.com/"&gt;snoopdoc&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://stillalive.r10.railsrumble.com/"&gt;stillalive&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.beargeo.com/"&gt;beargeo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://motivationdashboard.r10.railsrumble.com/"&gt;Motivation Dashboard&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Synopsis&lt;/h2&gt;

&lt;p&gt;All in all, it was really great to be a part of the Rumble. I enjoyed looking over all the applications, and I was even more amazed and humbled to get thanks from teams for my thorough reviews and honest feedback. I would do it again in a heartbeat, but I definitely hope to join a team and participate in the thrill of the competition next year.  I look forward to Rails Rumble 2011 and &lt;em&gt;hopefully&lt;/em&gt; your feedback!&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/relevance-blog/~4/kG2YTXTIg7Y" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://thinkrelevance.com/blog/2010/11/09/thoughts-and-lessons-from-rails-rumble-2010</feedburner:origLink></entry>
  <entry>
    <title>The Relevant Bits - Nov 2, 2010</title>
    <id>http://thinkrelevance.com/blog/2010/11/02/relevant-bits</id>
    <published>2010-11-02T00:00:00Z</published>
    <link href="http://feedproxy.google.com/~r/relevance-blog/~3/eC72wqAInr0/relevant-bits" />
    <author>
      <name>Chris Redinger</name>
      <email>chris@thinkrelevance.com</email>
    </author>
    <content type="html">&lt;p&gt;In addition to pulling off a successful &lt;a href="http://clojure-conj.org/"&gt;&amp;quot;Conj&amp;quot;&lt;/a&gt;, here is the run down of what we at Relevance were doing with our 20% time in October:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://github.com/spicycode"&gt;Chad&lt;/a&gt; continued his quest for &lt;a href="http://github.com/spicycode/Vimlander-2-The-Quickening"&gt;Vimlander 2 The Quickening&lt;/a&gt; to be the only vim config around.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://github.com/stuarthalloway"&gt;Stuart H&lt;/a&gt; has been knocking out tickets and applying patches to &lt;a href="http://github.com/clojure/clojure"&gt;Clojure&lt;/a&gt;. Grab &lt;a href="http://github.com/clojure/clojure/downloads#download_58806"&gt;1.3.0 Alpha 2&lt;/a&gt; if you want to keep up with the latest in Clojure development.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://github.com/michaelparenteau"&gt;Michael&lt;/a&gt; was an expert panel judge for the &lt;a href="http://railsrumble.com/"&gt;Rails Rumble&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://github.com/abedra"&gt;Aaron&lt;/a&gt; shows off how to do mobile org in his &lt;a href="http://github.com/abedra/shell-madness"&gt;emacs config&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://github.com/stuarthalloway"&gt;Stuart H&lt;/a&gt;, &lt;a href="http://github.com/michaelparenteau"&gt;Michael&lt;/a&gt; and &lt;a href="http://github.com/jondistad"&gt;Jon&lt;/a&gt; enhanced &lt;a href="http://github.com/relevance/mycroft"&gt;Mycroft&lt;/a&gt;. If you&amp;#39;re already using it, see the &lt;a href="http://github.com/relevance/mycroft/commits/master/"&gt;history&lt;/a&gt; to see what&amp;#39;s new. If you&amp;#39;re not already using, grab it and start inspecting your JVM data.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://github.com/jondistad"&gt;Jon&lt;/a&gt; and &lt;a href="http://github.com/michaelparenteau"&gt;Michael&lt;/a&gt; added paginated lists to their fork of &lt;a href="http://github.com/michaelparenteau/swish"&gt;swish&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://github.com/stuartsierra"&gt;Stuart S&lt;/a&gt; released &lt;a href="http://github.com/stuartsierra/lazytest"&gt;Lazytest&lt;/a&gt; 1.0.1, 1.0.2, 1.1.0, 1.1.1 and 1.1.2 of his testing framework. See the &lt;a href="http://github.com/stuartsierra/lazytest/blob/master/CHANGES.txt"&gt;changelog&lt;/a&gt; to figure out what your version of Lazytest provides.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://github.com/jondistad"&gt;Jon&lt;/a&gt; and &lt;a href="http://github.com/abedra"&gt;Aaron&lt;/a&gt;
updated &lt;a href="http://github.com/relevance/labrepl"&gt;labrepl&lt;/a&gt;, the environment for learning Clojure, for Clojure 1.3.0 compatability and closed out some GitHub issues.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://github.com/stuarthalloway"&gt;Stuart H&lt;/a&gt; uploaded his &lt;a href="http://github.com/stuarthalloway/clojure-presentations"&gt;slides&lt;/a&gt; from his Clojure presentation on protocols at JAOO.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://github.com/redinger"&gt;Chris&lt;/a&gt; released 1.0 of &lt;a href="http://github.com/redinger/validation_reflection"&gt;ValidationReflection&lt;/a&gt;, for Rails 3 compatibility.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://github.com/alandipert"&gt;Alan&lt;/a&gt; updated &lt;a href="http://github.com/alandipert/reconfig"&gt;reconfig&lt;/a&gt; to be Clojure 1.3 compatible. Check out this library if you want to reload config files in Clojure on SIGHUP.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://github.com/stuartsierra"&gt;Stuart S&lt;/a&gt; created &lt;a href="http://github.com/stuartsierra/message"&gt;Message&lt;/a&gt;, experiments in message-passing architectures in Clojure.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://github.com/spicycode"&gt;Chad&lt;/a&gt;, &lt;a href="http://github.com/aredington"&gt;Alex R&lt;/a&gt; and &lt;a href="http://github.com/karnowski"&gt;Larry&lt;/a&gt; forked &lt;a href="http://github.com/relevance/ruby-saml"&gt;ruby-saml&lt;/a&gt; and started adding some new features, including optional HTTP parameter passing and more test coverage.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://github.com/aredington"&gt;Alex R&lt;/a&gt; created &lt;a href="http://github.com/aredington/dwarf"&gt;Dwarf&lt;/a&gt;, a data mining tool for Rails 3.&lt;/li&gt;
&lt;/ul&gt;
&lt;img src="http://feeds.feedburner.com/~r/relevance-blog/~4/eC72wqAInr0" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://thinkrelevance.com/blog/2010/11/02/relevant-bits</feedburner:origLink></entry>
</feed>

