<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">

    <title type="text">Viget Labs : Master Blog Feed</title>
    <subtitle type="text">FourLabs Blog: Post:</subtitle>
    <link rel="alternate" type="text/html" href="http://www.viget.com/blog/" />
    <link rel="self" type="application/atom+xml" href="http://www.viget.com/site/atom/" />
    <updated>2008-08-20T21:20:16Z</updated>
    <rights>Copyright (c) 2008, Viget Labs</rights>
    <generator uri="http://expressionengine.com/" version="1.6.2">ExpressionEngine</generator>
    <id>tag:viget.com,2008:08:20</id>


    <entry>
      <title>Welcome Jen, Our New Marketing Services Director</title>

<link rel="alternate" type="text/html" href="http://www.viget.com/blog/comments/welcome-jen-krupey/" />
      <id>tag:viget.com,2008:blog/24.1238</id>
      <published>2008-08-20T13:14:00Z</published>
      <updated>2008-08-20T21:20:16Z</updated>
      <author>
            <name>Viget Labs</name>
            <email>blogs@viget.com</email>
            <uri>http://www.viget.com/</uri>      </author>

      <category term="Staff"
        scheme="http://www.viget.com/blog/category/staff/"
        label="Staff" />
      <content type="html"><![CDATA[

                 <p>Join us in welcoming our new Director of Marketing Services, <a href="http://www.viget.com/about/team/jkrupey">Jen Krupey</a> (that&#8217;s ... crew-pay), who&#8217;ll lead our marketing lab and oversee its continued growth and evolution.</p>
<p>&#8220;Viget gets it. Cutting-edge development and award-winning designs have uniquely positioned us to provide clients with innovative and measurable internet marketing strategies,&#8221; Jen said. &#8220;I&#8217;m thrilled to be part of such a smart, energetic, and entrepreneurial team, and look forward to continuing the growth and success of the marketing lab.&#8221;</p>
<p>She assumes this post after serving as Director of Clients Services as <a title="TIG Global" href="http://www.tigglobal.com/">TIG Global</a>, where she was responsible for clients&#8217; online strategy spanning website design and functionality, paid/organic search, analytics and revenue management. Coupled with her additional experience at <a title="varsitybooks.com" href="http://www.varsitybooks.com">varsitybooks.com</a> and <a title="GMMB" href="http://www.gmmb.com/">GMMB</a>, Jen can provide holistic expertise to both our team and our clients.</p>
<p>Said <a href="http://www.viget.com/about/team/bwilliams">Brian</a>, &quot;Jen&#8217;s background is a perfect mix for the growing marketing services group at Viget.&nbsp; She&#8217;s been on the client side and the consulting side. She understands how to combine offline and online marketing and measurement, and she&#8217;s even done the startup thing.&nbsp; She&#8217;s proved that she can grow a team and flourish in a positive environment, and we think this new role at Viget represents a great opportunity to do just that. We&#8217;re really excited to work with her.&quot;</p>
<p>&nbsp;
</p>
                 

      ]]></content>
    </entry>

    <entry>
      <title>&#8220;If It&#8217;s Being Discussed, It&#8217;s Marketing&#8221; &amp;amp; Case Studies from ad:tech</title>

<link rel="alternate" type="text/html" href="http://www.viget.com/engage/comments/if-its-being-discussed-its-marketing-case-studies-from-adtech/" />
      <id>tag:viget.com,2008:engage/17.1233</id>
      <published>2008-08-19T20:02:00Z</published>
      <updated>2008-08-19T20:03:52Z</updated>
      <author>
            <name>Josh Chambers</name>
            <email>josh.chambers@viget.com</email>
            <uri>http://www.viget.com/about/team/jchambers</uri>      </author>

      <category term="Events"
        scheme="http://www.viget.com/blog/category/events/"
        label="Events" />
      <category term="General"
        scheme="http://www.viget.com/blog/category/general/"
        label="General" />
      <content type="html"><![CDATA[

                 <p>Ryan and I recently returned from <a href="http://www.viget.com/engage/ad-tech-chicago-here-we-come/" title="ad:tech Chicago,">ad:tech Chicago,</a> and I thought I&#8217;d add my two cents to <a href="http://www.viget.com/engage/blend-creativity-and-technology-in-digital-marketing-at-adtech/" title="Blending Creativity and Technology in Digital Marketing at AdTech">Ryan&#8217;s summation.</a> As a warning, this post has two parts which, although related, could be completely separate posts. Accordingly, I&#8217;ll save you the pain of attempting to create a lame analogy in an effort to connect the two topics and just split it up.</p>
<p>Part 1) Clay Shirky Was Awesome.</p>
<p>Part 2) Case Studies.
</p>
                 <p><strong>Part 1.</strong></p>
<p><a href="http://www.shirky.com/">Clay Shirky</a> is the author of the book &quot;Here Comes Everyone&quot; and was the keynote at ad:tech Chicago. It was Clay&#8217;s comment that inspired the title for this blog post: &quot;If it&#8217;s a conversation in the market, it&#8217;s marketing&#8212;regardless of whether or not there are any professionals involved.&quot;</p>
<p>I&#8217;ve been chewing on that for awhile. Think about it, regardless of who built it or who is talking; if they&#8217;re talking about a product or service, it&#8217;s marketing. Like when I stop Andy in the hallway and ask him about his iPhone, or when <a href="http://twitter.com/rmoede/statuses/866913758">Ryan get&#8217;s hosed by United Airlines (twice)</a>.&nbsp; This has implications for just about everyone in the online space. If you build a poor product, that means poor marketing. If you create a site with lousy user experience, that&#8217;s lousy marketing. If you shoot a lame video, that&#8217;s lame marketing. I&#8217;m not suggesting everything comes back to marketing; but I am suggesting that everyone has a part to play in ensuring those &quot;conversations&quot; Shirky is referring to are indeed &quot;good&quot; for your product or service--and in turn &quot;good&quot; marketing.</p>
<p><strong>Part 2. </strong>  Some of these case studies are directly relevant to the above quote, some are more indirectly related. However, they&#8217;re all worth checking out.</p>
<br />
<ol>
<br />
    <li><a href="http://www.youtube.com/user/TopThisTV"><strong>Heinz Ketchup - Top This TV on YouTube:</strong></a> Heinz built a <a href="http://topthistv.com/">microsite called Top This TV </a>and corresponding <a href="http://www.youtube.com/user/TopThisTV">Top This TV YouTube channel</a> to allow ketchup lovers to shoot the next Heinz Ketchup video commercial. It turned out to be quite the success receiving nealry 4,000 submissions (and roughly 1.2 million views) , and some pretty cool videos to boot. Heinz opened up the conversation and built a tool that allowed people to interact with, and share, a product they love. One might argue this was selfish marketing even though it does have prizes for the winner; however, people jumped right on board and were more than willing to promote a product they love. If they&#8217;re already talking about it (and they are, check out how many <a href="https://adwords.google.com/select/KeywordToolExternal">people search for ketchup</a>), why not give them a better outlet to do so? It was so successful, they&#8217;re doing it again.</li>
<br />
    <li><a href="http://www.facebook.com/apps/application.php?id=7544119301&amp;ref=s&amp;refurl=http%3A%2F%2Fwww.facebook.com%2Fs.php%3Fref%3Dsearch%26init%3Dq%26q%3Dscrabulous"><strong>Scrabulous vs. Hasbro</strong>:&nbsp; We all know this disaster.</a> However, what you might not know is that Hasbro responded to the angry fans with a letter which opened with, &quot;We understand your love for the Hasbro brand.&quot; Seriously? Missing the point. It&#8217;s not a love for the brand, it&#8217;s a love for the product. Hasbro had to do something about their intellectual property--we get it. But, rather than leveraging the overwhelming love for the product, they chose to belittle the importance of &quot;unprofessional&quot; conversations by ignoring their significance and pretending fans had no part to play in their marketing.</li>
<br />
    <li>&nbsp;<a href="http://www.guardian.co.uk/money/2007/aug/25/moneysupplement.studentfinance"><strong>HSBC vs. College Students:</strong></a> HSBC used to offer free checking to college students. Suddenly, one summer vacation they decided to charge college students without really telling them. Then Facebook arrived on the scene. Soon enough an entire group had organized on Facebook andHSBC was faced with an overwhelming unity of organized people who were talking about HSBC in a very poor light. As a result of this unified conversation, HSBC decided it might be a good idea to reverse their decision and <a href="http://www.guardian.co.uk/education/2007/aug/30/highereducation.studentfinance">re-institute free checking. </a></li>
<br />
    <li><strong>Johnson &amp; Jonson:</strong> Check out their <a href="http://www.google.com/url?sa=t&amp;ct=res&amp;cd=2&amp;url=http%3A%2F%2Fwww.jnjbtw.com%2F&amp;ei=p-2qSMKHGZCS8wTk4K0t&amp;usg=AFQjCNF4DXUiLDRlG6sT0V-HG3eaMcioZw&amp;sig2=hnRKEH2IrHVdD_V4Cvtz1g">blog, J&amp;J BTW.</a> If you notice the lack of comments, that&#8217;s because this is their comment policy: &quot;Since this blog is about Johnson &amp; Johnson, comments that don&rsquo;t directly relate to the Company or to topics covered on this blog won&rsquo;t be posted.... We generally won&rsquo;t post comments about products that are sold by the Johnson &amp; Johnson operating companies.&quot; Translation: Comments aren&#8217;t allowed. However, did you know that J&amp;J owns babycenter.com (they bought it)? A robust, thriving social community for parents with infants and young children. As Shirky asked, &quot;How could they get it so wrong, and so right at the same time?&quot;</li>
<br />
    <li><strong>Dollhouse and Dollverse:</strong> Why is it that so manyy cult followed TV shows get cancelled? Family Guy...Arrested Development...Well, the creators of <a href="http://www.dollverse.com">Dollverse.com</a> decided to pre-empt the cancelling of <a href="http://www.fox.com/programming/shows/new/dollhouse.htm">FOX&#8217;s Dollhouse</a> by creating an online community all about the show, and all about how much they don&#8217;t want it to be cancelled. Talk about some great marketing for the show! The interesting thing is, these people <i>want</i> to market the show. They care about it&#8217;s well being because they like watching it. They want to talk about it.</li>
</ol>
<br />
<p>I hope these case studies are useuful in inspiring you into new ideas, and new ways to engender &quot;good&quot; marketing. And, I hope we can begin to see all conversations as marketing, not for the sake of &quot;infecting&quot; those conversations; but for an improved understanding of how to create products and services that are truly valuable, and truly help people.
</p>

      ]]></content>
    </entry>

    <entry>
      <title>Nike&#8217;s Branded Storytelling</title>

<link rel="alternate" type="text/html" href="http://www.viget.com/engage/comments/nikes-branded-storytelling/" />
      <id>tag:viget.com,2008:engage/17.1232</id>
      <published>2008-08-19T12:31:00Z</published>
      <updated>2008-08-19T18:27:17Z</updated>
      <author>
            <name>Ryan Moede</name>
            <email>ryan.moede@viget.com</email>
            <uri>http://www.viget.com/about/team/rmoede</uri>      </author>

      <category term="Opinions/Reviews"
        scheme="http://www.viget.com/blog/category/opinion/"
        label="Opinions/Reviews" />
      <content type="html"><![CDATA[

                 <p>With the Olympics in full swing, Nike has gone all out to promote their vast new lineup of products and the innovative technology behind them. <p>
But rather than rely solely on <a href="http://www.nike.com/courage">classic Nike advertising</a> with hardcore athletes doing their thing to a rocking soundtrack, they&#8217;ve rounded out their advertising strategy with an impressive, in-depth collection of conversations with the people behind the Nike magic - product designers, engineers and scientists in the <a href="http://www.nike.com/nikelab/site.html?en_US#//video/interview-naftis">Nike Lab</a>.
</p>
                 <p>In introducing the new technology, Nike needed to take the time to explain the new ideas and achievements of the <a href="http://www.nike.com/nikelab/site.html?en_US#/technology/flywire">Flywire </a>and <a href="http://www.nike.com/nikelab/site.html?en_US#/technology/lunarlite">Lunarlite</a>. <object height="250" width="375">
<br />
<param name="movie" value="http://www.nikelab.com/flash/embedded_player.swf" />
<param name="allowfullscreen" value="true" /><embed height="250" width="375" src="http://www.nikelab.com/flash/embedded_player.swf?url=interview_naftis.flv&amp;language=en_us&amp;subtitles=xml/en_us/videos/naftis.xml&amp;title=designer%20interview:%20naftis&amp;autostart=true&amp;origin=/video/interview-naftis&amp;watitle=watch%20again%c2%a0&amp;ltitle=learn%20more%20about%20$product&amp;lurl=product/naftis" type="application/x-shockwave-flash" allowfullscreen="true"></embed></object></p>
<p>This is a great example of providing <a href="http://www.viget.com/engage/market-like-you-mean-it/">marketing with meaning</a>, as the Nike Lab site provides in-depth information and a compelling story to both inform and inspire the customer. Additionally, it touches on some of the key principles in developing a strong <a href="http://www.personalitynotincluded.com/mediakit/60words/">brand personality by delivering the kind of story that is unique, authentic and talkable</a>. <br />
<br />
<a href="http://www.influxinsights.com/blog/article/1973/brand-as-media-company--nike.html">Ed Cotton of BSSP</a> has a good take on Nike&#8217;s initiative:&nbsp;</p><blockquote>
<br />
<p>It&#8217;s a reminder that all brands have the opportunity to tell much big stories because the media bandwidth available to do so is that much bigger and costs nothing. It&#8217;s safe to assume that in the near future, these brand stories will have as much creative importance as advertising does today.</p></blockquote><p>As companies wrestle with new forms of storytelling, Nike has touched on a great model for pulling back the curtain and letting customers behind the scenes to discover a piece of the Nike experience.
</p>

      ]]></content>
    </entry>

    <entry>
      <title>Protip: Use Your Factories in Development</title>

<link rel="alternate" type="text/html" href="http://www.viget.com/extend/comments/protip-use-your-factories-in-development/" />
      <id>tag:viget.com,2008:extend/4.1231</id>
      <published>2008-08-17T23:16:00Z</published>
      <updated>2008-08-18T10:19:10Z</updated>
      <author>
            <name>Clinton R. Nixon</name>
            <email>clinton.nixon@viget.com</email>
            <uri>http://www.viget.com/about/team/cnixon</uri>      </author>

      <category term="Ruby on Rails"
        scheme="http://www.viget.com/blog/category/ruby_on_rails/"
        label="Ruby on Rails" />
      <category term="Tips and Tricks"
        scheme="http://www.viget.com/blog/category/tips_and_tricks/"
        label="Tips and Tricks" />
      <content type="html"><![CDATA[

                 <p>I&#8217;ve been training a new Rails developer recently, and I&#8217;ve found it rewarding. His questions are great: without already-built habits, he thinks of ways to do things I never would.</p>

<p>Last week, he said, &#8220;I need to test this view with some real data to make sure it looks OK. We have all these factory methods to use in our unit tests. Can we use those in development?&#8221; I almost said no, but then I realized it was a pretty great idea.</p>

<p>We&#8217;re using <a href="http://replacefixtures.rubyforge.org/">FixtureReplacement</a> on this project, but this technique will work with any factories. We opened <code>script/console</code> and typed the following:</p>

<pre name="code" class="ruby">require 'fixture_replacement'
include FixtureReplacement
require RAILS_ROOT + '/db/example_data'
</pre>

<p>With that, I could use, for example, our <code>create_completed_order</code> method to make a purchased cart with multiple items in it so we could see how the admin interface was looking. It&#8217;s no replacement for good testing, but for quick view checks, it&#8217;s a pretty cool trick.</p>

                 

      ]]></content>
    </entry>

    <entry>
      <title>Social Tools Transform the Workplace</title>

<link rel="alternate" type="text/html" href="http://www.viget.com/engage/comments/social-tools-transform-the-workplace/" />
      <id>tag:viget.com,2008:engage/17.1230</id>
      <published>2008-08-15T14:17:00Z</published>
      <updated>2008-08-15T14:18:13Z</updated>
      <author>
            <name>Ryan Moede</name>
            <email>ryan.moede@viget.com</email>
            <uri>http://www.viget.com/about/team/rmoede</uri>      </author>

      <category term="Social Media"
        scheme="http://www.viget.com/blog/category/social_media/"
        label="Social Media" />
      <content type="html"><![CDATA[

                 <p>Nearly 60 percent of the respondents to a recent McKinsey global survey reported satisfaction with Web 2.0 initiatives and see them as a driver of competitive advantage. The <a href="http://www.mckinseyquarterly.com/Building_the_Web_20_Enterprise_McKinsey_Global_Survey_2174_abstract ">McKinsey Global Survey Results on Building the Web 2.0 Enterprise</a> (free with registration) also reported that these same companies expect to increase their efforts inleveraging these tools.</p>
<p>The report also highlights that this is bigger than just PR or marketing - companies are adapting their organizational structure and process to better take advantage of social tools.</p>
<p>This isn&#8217;t always an easy task for traditional companies; but some are recognizing that increasing their use of collaborative tools both internally and externally is a valuable endeavor.&nbsp;  <a href="http://www.beingpeterkim.com/2008/08/takeaways-from.html">Peter Kim puts it well</a>: &quot;Social technologies are bigger than just marketing and PR campaigns.&nbsp; They&#8217;re helping to reinvent the organization.&nbsp; Companies satisfied with their experience with Web 2.0 technologies are applying them within change management practices and organizational structures. Companies are using new tools to reconnect with customers for co-creation and collaboration. &#8216;Reconnecting,&#8217; you ask?&nbsp; Yes, the way businesses started and survived long before advertising as we hate it existed.&quot;
</p>
                 

      ]]></content>
    </entry>

    <entry>
      <title>I Can Has Stock Images!</title>

<link rel="alternate" type="text/html" href="http://www.viget.com/inspire/comments/i-can-has-stock-images/" />
      <id>tag:viget.com,2008:inspire/8.1229</id>
      <published>2008-08-14T20:22:00Z</published>
      <updated>2008-08-14T20:53:46Z</updated>
      <author>
            <name>Jim Basio</name>
            <email>jim.basio@viget.com</email>
            <uri>http://www.viget.com/about/team/jbasio</uri>      </author>

      <category term="General"
        scheme="http://www.viget.com/blog/category/general/"
        label="General" />
      <content type="html"><![CDATA[

                 <p>Stock imagery can really make or break a good design. Searching for that perfect image(s) to complement your design can be a very time  consuming task&#8212;not to mention budget limitations we may have to consider.</p>
<p>Luckily, there are lots of great stock image resources available on the web whether to meet any budget size.</p>

<p><img width="430" height="353" alt="image" src="http://www.viget.com/images/uploads/alternatives_pay.jpg" />
</p>
                 <ul>
<br />
    <li><a href="http://istockphoto.com/index.php" title="istockphoto.com">istockphoto.com</a> - giant selection of royalty-free stock images and photos</li>
<br />
    <li><a href="http://www.gettyimages.com/Home.aspx" title="gettyimages.com">gettyimages.com</a> - the leading provider of creative and editorial imagery and film to communications</li>
<br />
    <li><a href="http://moodboard.com/" title="moodboard.com">moodboard.com</a> - buy or sell images at a range of prices to suit your needs</li>
<br />
    <li><a href="http://www.jupiterimages.com/" title="jupiterimages.com">jupiterimages.com</a> - offers anything from royalty-free DVD   collections to standard rights-managed images and royalty-free images</li>
<br />
    <li><a href="http://digitalrailroad.net/" title="digitalrailroad.net">digitalrailroad.net</a> - selection of royalty-free and rights-  managed stock shots, but it also features an eBay-like marketplace where photographers vie to meet your requirements by the deadline</li>
</ul>
<br />
<h3>Inexpensive Alternatives</h3><p>
<ul>
<br />
    <li><a href="http://us.fotolia.com/" title="fotolia.com">fotolia.com</a> - inexpensive stock photography, photographers can also sign up to sell stock photos</li>
<br />
    <li><a href="http://dreamstime.com/" title="dreamstime.com">dreamstime.com</a> - essentially a royalty-free microstock site, the selection is limited</li>
<br />
    <li><a href="http://www.ultrashock.com/" title="ultrashock.com">ultrashock.com</a> - offers high-res photos, conceptual vector illustration and other assets</li>
</ul>
<br />
</p><h3>Specialty Providers</h3><p>
<ul>
<br />
    <li><a href="http://www.foodanddrinkphotos.com/bin/fooddrink.dll/go?a=disp&amp;t=home-loader.html&amp;_max=0&amp;_maxlb=0&amp;si=" title="foodanddrinkphotos.com">foodanddrinkphotos.com</a> - a comprehensive collection of photos about eating and drinking</li>
<br />
    <li><a href="http://sciencephoto.com/" title="sciencephoto.com">sciencephoto.com</a> - features some of the best science related stock photos available online</li>
</ul>
<h3>Freebies</h3><p>
<ul>
<br />
    <li><a href="http://www.photolib.noaa.gov/" title="photolib.noaa.gov">photolib.noaa.gov</a> - one example of the many photos you can use for free from U.S. Government sites.</li>
<br />
    <li><a href="http://public-domain-photos.com/" title="public-domain-photos.com">public-domain-photos.com</a> - claims to be the largest collection of public domain photos</li>
<br />
    <li><a href="http://www.sxc.hu/" title="sxc.hu">sxc.hu</a> - the leading free stock photo site</li>
<br />
    <li><a href="http://morguefile.com/" title="morguefile.com">morguefile.com</a> - contains photographs freely contributed by many artists to be used in creative projects by visitors to the site</li>
<br />
    <li><a href="http://stockvault.net/" title="stockvault.net">stockvault.net</a> - a stock photo sharing website where designers and photographers can meet to share their images</li>
<br />
    <li><a href="http://freerangestock.com/" title="freerangestock.com">freerangestock.com</a> - high-resolution free stock photos and free textures</li>
<br />
    <li><a href="http://photogen.com/" title="photogen.com">photogen.com</a> - nice collection of good quality photos</li>
<br />
    <li><a href="http://flickr.com/" title="flickr.com">flickr.com</a> - best online photo management and sharing
<br />
    application; be sure to check the license before using any of the photos</li>
<br />
    <li><a href="http://everystockphoto.com/" title="everystockphoto.com">everystockphoto.com</a> - excellent option for searching multiple sites (Flickr, Stock.xchng, etc.) for stock photos</li>
</ul>
<p><img width="432" height="333" alt="image" src="http://www.viget.com/images/uploads/alternatives_free.jpg" /></p>
<p>Feel free to add sites that been left out!
</p>

      ]]></content>
    </entry>

    <entry>
      <title>Blending Creativity and Technology in Digital Marketing at AdTech</title>

<link rel="alternate" type="text/html" href="http://www.viget.com/engage/comments/blend-creativity-and-technology-in-digital-marketing-at-adtech/" />
      <id>tag:viget.com,2008:engage/17.1228</id>
      <published>2008-08-14T14:59:00Z</published>
      <updated>2008-08-19T14:48:54Z</updated>
      <author>
            <name>Ryan Moede</name>
            <email>ryan.moede@viget.com</email>
            <uri>http://www.viget.com/about/team/rmoede</uri>      </author>

      <category term="Events"
        scheme="http://www.viget.com/blog/category/events/"
        label="Events" />
      <content type="html"><![CDATA[

                 <p>Digital marketing is at an unprecedented stage today. Never before has such a rich and immersive set of tools spanned across media to allow companies and consumers to interact. And where marketing was once segregated to individual media - print, television, radio - digital marketing has smashed these silos to allow a new kind of persuasive digital storytelling to emerge.&nbsp;</p>
<p>This transition is not without it&#8217;s struggles, and for two days in Chicago last week, digital marketers from across the country gathered for the latest <a href="http://www.ad-tech.com/chicago/adtech_chicago.aspx">AdTech conference</a> to discuss what&#8217;s working and what still needs to improve. 
</p>
                 <p>AdTech pulls together some of the industry&#8217;s best in digital marketing for a series of conferences around the world to talk best practices, social media monitoring, ROI and of course, <a href="http://www.flickr.com/photos/adrants/sets/72157606572630043/">partying like a rockstar</a>.</p>
<p>I&#8217;ve waited a few days to post my thoughts and thoroughly process some of the big ideas from the event. (You can also read my <a href="http://search.twitter.com/search?q=&amp;ands=&amp;phrase=&amp;ors=&amp;nots=&amp;tag=&amp;lang=all&amp;from=rmoede&amp;to=&amp;ref=&amp;near=&amp;within=15&amp;units=mi&amp;since=2008-08-04&amp;until=2008-08-06&amp;rpp=15">posts to Twitter throughout the conference</a>.) I think one of the more important take-aways was a comment made by Jamie Anderson at <a href="http://www.c-k.com/cramer-krasselt.html">Cramer-Krasselt </a>during what was easily the best session of the event &quot;<a href="http://www.ad-tech.com/chicago/session_detail.asp?session=839&amp;refad=1">Developing the Big Idea - Creative Strategy and Execution in the Digital Era</a>:&quot;</p>
<br />
<blockquote>
<br />
<p>&quot;Functionality is brand.&quot;</p>
<br />
</blockquote>
<p>As more of consumers first interactions and experiences with a brand begin online, the user experience crafted by the brand are increasingly critical in defining the brand. Is it useful? Does navigating the site or appliation meet their expectations? Once overlooked by brand managers and marketers, there is an emerging recognition that a site&#8217;s design and user experience is a <a href="http://www.subtraction.com/archives/2008/0812_highly_demog.php">core building block of a brand in the digital age</a>. Whether it&#8217;s a <a href="http://www.thecoronabeach.com/">playful experience</a>, <a href="http://nikeplus.nike.com/nikeplus/index.jhtml">useful application</a>, or <a href="http://www.new.facebook.com/pages/Invisible-Children/8392031367?ref=s&amp;refurl=http%3A%2F%2Fwww.new.facebook.com%2Fs.php%3Fq%3Dinvisible%2Bchildren%26init%3Dq">social cause initiative</a>, digital marketers are blending technology and creativity like never before. With this change in digital storytelling, agencies are slowly beginning to recognize the structural changes that are necessary to deliver these new services.</p>
<p>The new digital agencies are blending strategy, marketing, creative and development to deliver web applications that work to <a href="http://www.viget.com/engage/market-like-you-mean-it/">solve problems and provide a meaningful service</a>.&nbsp;  As <a href="http://experiencematters.criticalmass.com/2008/07/25/why-digital-marketing-needs-a-reboot/">David Armano wrote</a>, &quot;It&rsquo;s time to come to terms with how people really use the web (hint - it might not be to figure out your experimental navigation) and how we can harness the true power of digital.&nbsp; Digital marketing doesn&rsquo;t need more tradigital creativity - it needs more creative problem solving.&quot;</p>
<p>Hopefully AdTech can help spark more of these conversations and shape a digital marketing space that blends creativty and technology to better serve consumers.
</p>

      ]]></content>
    </entry>

    <entry>
      <title>Introducing ActsAsMarkup: A Markdown, Textile, Wikitext, and RDoc Plugin for ActiveRecord</title>

<link rel="alternate" type="text/html" href="http://www.viget.com/extend/comments/introducing-actsasmarkup-a-markdown-textile-wikitext-and-rdoc-plugin/" />
      <id>tag:viget.com,2008:extend/4.1227</id>
      <published>2008-08-12T20:44:00Z</published>
      <updated>2008-08-14T19:08:18Z</updated>
      <author>
            <name>Brian Landau</name>
            <email>brian.landau@viget.com</email>
                  </author>

      <category term="Introducing"
        scheme="http://www.viget.com/blog/category/introducing/"
        label="Introducing" />
      <content type="html"><![CDATA[

                 <p>On a project I&rsquo;ve been working on recently, I wanted to be able to enter in <a href="http://daringfireball.net/projects/markdown/">Markdown</a> text to a field and convert it into HTML in a view. Having read about <a title="Moving Past BlueCloth" href="http://tomayko.com/writings/ruby-markdown-libraries-real-cheap-for-you-two-for-price-of-one">BlueCloth&rsquo;s performance problems</a> though, I didn&rsquo;t want to use the <a title="Rails ActionView::Helpers::TextHelper#markdown" href="http://api.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html#M001735">built in markdown helper in ActionView</a>.</p>
<p>So I decided to give <a href="http://github.com/rtomayko/rdiscount/tree/master">RDiscount</a> a try, but I wanted to have the value for the column stored as a RDiscount Markdown object in the model object. So I started by creating an <code>acts_as_markdown</code> class method that took a list of columns to be represented as markdown objects. Quickly, my fellow Vigeteers and I realized it would be useful for a bunch of other markup languages as well, along with other Markdown libraries.</p>
                 <h3 id="acts_as_markup_internals">Acts As Markup Internals</h3>
<p>Let&rsquo;s work with a simple example. Let&rsquo;s say we have a <code>Post</code> model with a <code>body</code> column we want to put Markdown text into:</p>
<pre class="ruby" name="code">
class Post &lt; ActiveRecord::Base
  acts_as_markdown :body
end
</pre>
<p>When a <code>Post</code> record is accessed, an instance variable holding the Markdown object will be created. If you use the <code>.</code> method syntax, you will get this markdown object; if you use the bracket <code>[]</code> syntax, you will get the original string returned from the database. The reason we store it in an instance variable instead of creating a Markdown object each time is to prevent the text from needing to be parsed each time and a new object being created, which can slow down the application.</p>
<p>All of the objects used by <code>ActsAsMarkup</code> either come with or have been modified to have <code>to_s</code> and <code>to_html</code> methods. The <code>to_s</code> method will return the original markdown string. This is so no wonky wizardry has to be done to get the field to work with ActionView form field helpers. The <code>to_html</code> method returns the processed HTML ready to be used in the view.</p>
<pre class="ruby" name="code">
@post[&quot;body&quot;]       # =&gt; &quot;## Headline Text&quot;
@post.body          # =&gt; #&lt;RDiscount:&hellip;&gt;
@post.body.to_s     # =&gt; &quot;## Headline Text&quot;
@post.body.to_html  # =&gt; &quot;&lt;h2&gt; Headline Text&lt;/h2&gt;&quot;
</pre>
<p>If you change the value of the Markdown text, the Markdown object will be recreated with the new text:</p>
<pre class="ruby" name="code">
@post.body.to_s  # =&gt; &quot;## Headline Text&quot;
@post.body = &quot;### Another Headline&quot;
@post.body.to_s  # =&gt; &quot;### Another Headline&quot;
</pre>
<h3 id="options_and_variations">Options and Variations</h3>
<p>By default, ActsAsMarkup will use the RDiscount library. It&rsquo;s easy enough to change that -- just add a line in your <code>environment.rb</code> file:</p>
<pre class="ruby" name="code">
ActsAsMarkup.markdown_library = :bluecloth
</pre>
<p>Currently, ActsAsMarkup supports BlueCloth, RDiscount, <a href="http://github.com/rtomayko/rpeg-markdown/tree/master">Ruby PEG</a>, and <a href="http://maruku.rubyforge.org/">Maruku</a> Markdown libraries.</p>
<p>Of course, not everyone wants to use Markdown, so I&rsquo;ve also built in support for <a href="http://textile.thresholdstate.com/">Textile</a>, <a href="http://www.ruby-doc.org/stdlib/libdoc/rdoc/rdoc/index.html">RDoc</a>, and <a href="http://wikitext.rubyforge.org/">Wikitext</a>. These are available through convienence methods like <code>acts_as_textile</code> or by using the main <code>acts_as_markup</code>:</p>
<pre class="ruby" name="code">
acts_as_markup :language =&gt; :textile, :columns =&gt; :body
</pre>
<p>However; what if you want to give your users a choice of different languages instead of locking them in? Well, that&rsquo;s easy, too; there&rsquo;s the variable language option. Instead of providing <code>:markdown</code> or <code>:textile</code> or some other language, you supply <code>:variable</code> to the language option. ActsAsMarkup will then use another column to determine which parser to use on the text column. By default, a column name of &ldquo;<code>markup_language</code>&rdquo; will be used, but you can change this by passing the column name via the <code>:language_column</code> option to <code>acts_as_markup</code>.</p>
<pre class="ruby" name="code">
acts_as_markup :language =&gt; :variable, :columns =&gt; :body, :language_column =&gt; :language_name
</pre>
<p>When using the variable language option, the language column will accept case-insensitive names for the value (i.e. &ldquo;Markdown&rdquo; or &ldquo;markdown&rdquo;). Additionally, any value for the language column besides &ldquo;markdown&rdquo;, &ldquo;textile&rdquo;, &ldquo;rdoc&rdquo;, or &ldquo;wikitext&rdquo; will pass through as an ordinary string. This way, you can allow any value in this column you want, &ldquo;XHTML&rdquo;, &ldquo;Text&rdquo;, &ldquo;Plain Text&rdquo; or anything else, and process it (or not) elsewhere.</p>
<h3 id="give_it_to_me">Give it to me!</h3>
<p>ActsAsMarkup is being released as a gem and can be installed in the usual way:</p>
<pre><code>sudo gem install acts_as_markup </code></pre>
<p>Since it&rsquo;s meant to be used in a Rails app (although it can be used anywhere with ActiveRecord), you&rsquo;ll probably want to put this line in your <code>environment.rb</code> file:</p>
<pre><code>config.gem &quot;acts_as_markup&quot; </code></pre>
<p>The <a href="http://github.com/vigetlabs/acts_as_markup/tree/master" title="acts_as_markup">code</a> can be found on GitHub, and the <a href="http://viget.rubyforge.org/acts_as_markup/" title="acts_as_markup-1.1.0 Documentation">documentation</a> can be found on RubyForge.</p>

<h2 id="update">Update:</h2>

<p>If you want to contribute something to ActsAsMarkup a good place is to add support for another Markdown Library or some other markup language.</p>

<h3 id="instructions_for_how_to_add_a_new_markdown_library">Instructions for how to add a new Markdown Library:</h3>

<ol>
<li>Add another item to the <code>ActsAsMarkup::MARKDOWN_LIBS</code> hash in the form of:
<pre class="ruby" name ="code">:bluecloth => {:class_name => "BlueCloth",
               :lib_name => "bluecloth"}</pre>
<code>:lib_name</code> should be the name needed to require the library, while <code>:class_name</code> should be the class that we are making an instance of.</li>
<li>If you need to modify the object in anyway (e.g. to add a <code>to_s</code> or <code>to_html</code> method), add a file to the &#8220;lib/acts_as_markup/exts/&#8221; directory.</li>
<li>Add appropriate tests (see current tests).</li>
</ol>

<h3 id="instructions_for_how_to_add_a_new_markup_language">Instructions for how to add a new Markup Language:</h3>

<ol>
<li>Add a &#8220;<code>when</code>&#8221; statement to the &#8220;<code>case</code>&#8221; statement in <code>acts_as_markup</code>. The &#8220;<code>when</code>&#8221; statement should match with a symbol that represents the language name in some way (e.g. &#8220;<code>:markdown</code>&#8221;).</li>
<li>In the &#8220;<code>when</code>&#8221; block you need to set the &#8220;<code>klass</code>&#8221; local variable and require the library and the extension file if you need one (use the special <code>require_extensions</code> method to require extensions).</li>
<li>Add the same lines you added to the previous &#8220;<code>when</code>&#8221; statement to the &#8220;<code>:variable</code>&#8221; &#8220;<code>when</code>&#8221; statement. But replace &#8220;<code>klass</code>&#8221; with &#8220;<code>language_klass</code>&#8221; (e.g. &#8220;<code>markdown_klass</code>&#8221;).</li>
<li>Add a relevant &#8220;<code>when</code>&#8221; statement to the <code>class_eval</code> block for the &#8220;<code>:variable</code>&#8221; language option. This should look something like:
<code><pre>when /markdown/i
  @#{col.to_s} = #{markdown_klass}.new(self['#{col.to_s}'].to_s)</pre></code>
</li>
<li>Add a convenience method (e.g. &#8220;<code>acts_as_markdown</code>&#8221;)</li>
<li>Add an extension file to the &#8220;lib/acts_as_markup/exts/&#8221; directory if you need to modify the object in anyway.</li>
<li>Add appropriate tests (see current tests).</li>
</ol>


      ]]></content>
    </entry>

    <entry>
      <title>Resizing rounded rectangles in Photoshop</title>

<link rel="alternate" type="text/html" href="http://www.viget.com/inspire/comments/resizing-rounded-rectangles-in-photoshop/" />
      <id>tag:viget.com,2008:inspire/8.1226</id>
      <published>2008-08-12T18:13:00Z</published>
      <updated>2008-08-12T19:30:00Z</updated>
      <author>
            <name>Mindy Wagner</name>
            <email>mindy.wagner@viget.com</email>
                  </author>

      <category term="General"
        scheme="http://www.viget.com/blog/category/general/"
        label="General" />
      <content type="html"><![CDATA[

                 <p>The rounded corner style has been around for a quite a while now, and one thing (beyond wanton overuse) has always bothered me about it. When working with rounded rectangles in Photoshop, there seemed to be no elegant way to resize them. The corners don&#8217;t remain intact when you use Transform (Ctrl/Cmd-T) to scale the shape. Instead of lightly rounded edges, you end up with ugly mishaps like this:</p>

<p><img src="http://www.viget.com/images/uploads/goodbad.gif" alt="image" width="450" height="123" /></p>

<p>My default method for getting around it was to rasterize the shape, move the ends around, and then fill the gaps by resizing the middle. Darren Hoyt has a good walk through of that trick <a href="http://www.darrenhoyt.com/2007/09/30/resizing-rounded-rectangles-in-photoshop/">here</a>. Another workaround is to create the shape in Illustrator and then paste it in as a Smart Object. But both felt like bad hacks for doing something that should be inherently simple.
</p>
                 <p>As with nearly any Photoshop quandary there is an easy solution that doesn&#8217;t involve rasterizing or firing up Illustrator. Here&#8217;s how:</p>

<p>Starting with a rounded rectangle shape, use the Direct Selection tool (Ctrl/Cmd-A) to grab the path points for the corners you want moved. To grab multiple points you will need to hold the Shift key down after your first click. </p>

<p>For example, you would grab the 2 points in each corner (four total) to move the top edge:</p>

<p><img src="http://www.viget.com/images/uploads/selectPoints.gif" alt="image" width="450" height="113" /></p>

<p>Once the points are selected you can move them using either the Move or Transform tools. Hold the Shift key to keep them moving in a straight line. That&#8217;s it - no additional wizardry needed.</p>

<p><img src="http://www.viget.com/images/uploads/done.gif" alt="image" width="450" height="450" />
</p>

      ]]></content>
    </entry>

    <entry>
      <title>Viget Pushup Club Dominates Life</title>

<link rel="alternate" type="text/html" href="http://www.viget.com/blog/comments/viget-pushup-club-dominates-life/" />
      <id>tag:viget.com,2008:blog/24.1217</id>
      <published>2008-08-12T14:47:00Z</published>
      <updated>2008-08-12T14:55:34Z</updated>
      <author>
            <name>Josh Chambers</name>
            <email>josh.chambers@viget.com</email>
            <uri>http://www.viget.com/about/team/jchambers</uri>      </author>

      <category term="Staff"
        scheme="http://www.viget.com/blog/category/staff/"
        label="Staff" />
      <content type="html"><![CDATA[

                 <p><img height="221" align="left" width="151" alt="viget pushup club" src="/uploads/image/pushup-club.jpg" />Not only do we build web businesses, we also build muscles. Last week I randomly asked a few people if they would be interested in doing pushups with me at work as my solo pushup routine was lonely (read: sucked). I received a resounding &quot;Rarrr&quot; (because when discussing pushups, a &quot;yes&quot; would never suffice).&nbsp; Ever since pushup club started, we as a group have collectively broken 7 keyboards, ripped off 12 doorknobs, fractured 4 knuckles while shaking hands, and accidentally crushed 85 pop (not soda) cans.</p>
<p>The following video actually happened.</p>
<br />
<object width="455" height="352">	<param name="allowfullscreen" value="true" />	<param name="allowscriptaccess" value="always" />	<param name="movie" value="http://www.vimeo.com/moogaloop.swf?clip_id=1512058&amp;server=www.vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=ff9933&amp;fullscreen=1" />	<embed src="http://www.vimeo.com/moogaloop.swf?clip_id=1512058&amp;server=www.vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=ff9933&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="455" height="352"></embed></object><br /><a href="http://www.vimeo.com/1512058?pg=embed&amp;sec=1512058">Viget Pushup Club</a> from <a href="http://www.vimeo.com/user653194?pg=embed&amp;sec=1512058">Josh Chambers</a> on <a href="http://vimeo.com?pg=embed&amp;sec=1512058">Vimeo</a>.
<br />
<p>P.S. This wasn&#8217;t actually sponsored by Pay the Fan&#8230;</p>
<p>P.S.S. You can dive deeper into the iron psyche that is PUC via Twitter at <a href="http://www.twemes.com/vigetpushupclub" title="viget pushup club">http://www.twemes.com/vigetpushupclub</a>
</p>
                 

      ]]></content>
    </entry>

    <entry>
      <title>The Sketching Process: Learning From a Cartoonist</title>

<link rel="alternate" type="text/html" href="http://www.viget.com/advance/comments/5-lessons-from-a-cartoonist-applied-to-the-website-creation-process/" />
      <id>tag:viget.com,2008:advance/12.1225</id>
      <published>2008-08-11T23:00:00Z</published>
      <updated>2008-08-12T23:53:29Z</updated>
      <author>
            <name>Kevin Vigneault</name>
            <email>kevin.vigneault@viget.com</email>
            <uri>http://www.viget.com/about/team/kvigneault</uri>      </author>

      <category term="General"
        scheme="http://www.viget.com/blog/category/general/"
        label="General" />
      <content type="html"><![CDATA[

                 <p>When we design user interfaces, we go through a process of whiteboarding and wireframing before we design a full, visual composition. Essentially, we sketch out our work just like a painter or cartoonist or any other artist would. We get the basic ideas down on paper and then refine over and over again. With interface design though, it&#8217;s hard to clearly see the process in action because it happens over weeks or months. That&#8217;s why I thought it was really cool to watch <a href="http://cartooncave.blogspot.com/2007/11/cartoon-caveman-at-work.html">these videos from Pete Emslie</a> sketching out a cartoon in real-time. I took away a few important lessons from watching this that I&#8217;ll be applying to my own UI planning process.</p>
<p><img height="239" width="350" src="http://www.viget.com/images/uploads/sketch1.jpg" alt="image" /></p>
<p><strong>Lesson #1: Sketch the outlines first in the lowest possible fidelity.</strong> Getting started is always the hardest part (at least it is for me). So right away, create a really high-level flow for the site. Group together a handful of sections or sub-flows (try not to have specific pages). This allows you to get going really quickly and ensures you&#8217;re thinking first about how the whole application will come together - not specific features.</p>
<p><img height="239" width="350" src="http://www.viget.com/images/uploads/sketch2.jpg" alt="image" /></p>
<p><strong>Lesson #2: Refine the important stuff next, save the unimportant stuff for last.</strong> As soon as the outline was done, Pete moved right into refining the facial features. These are the most important part of his sketch - they&#8217;re the first thing someone will look at. If her eyes are messed up, people will notice. If her pinky is crooked, it&#8217;s not a huge deal. That&#8217;s just like your website. If your core features are great, people won&#8217;t care if your About Us page isn&#8217;t complete (or even if you have one).</p>
<p><img height="239" width="350" src="http://www.viget.com/images/uploads/sketch3.jpg" alt="image" /></p>
<p><strong>Lesson #3: Never stop moving the pencil.</strong> Each time Pete goes back to his paper to refine the drawing, he makes only a slight refinement. He doesn&#8217;t try to jump straight from a rough outline to a really detailed, full-color drawing. If you find yourself stuck when designing your interface, it&#8217;s probably because you&#8217;re trying to get too detailed, too quickly. Take a step back and think higher-level. Abstract a page if you need to - you can come back later to refine it .</p>
<p><img height="239" width="350" src="http://www.viget.com/images/uploads/sketch4.jpg" alt="image" /></p>
<p><strong>Lesson #4: It&#8217;s easier to erase thin, light lines than it is dark, heavy ones.</strong> Pete only commits to darker lines after he&#8217;s confident that all of his sketch lines are ok. The relation to web design here is obvious. Changing something on a wireframe is easy. Changing something in your code - hard.</p>
<p><img height="239" width="350" src="http://www.viget.com/images/uploads/sketch5.jpg" alt="image" />
</p>
                 

      ]]></content>
    </entry>

    <entry>
      <title>SXSW Interactive 2009</title>

<link rel="alternate" type="text/html" href="http://www.viget.com/blog/comments/sxsx-interactive-2009/" />
      <id>tag:viget.com,2008:blog/24.1224</id>
      <published>2008-08-08T19:08:00Z</published>
      <updated>2008-08-08T19:34:34Z</updated>
      <author>
            <name>Brian Wynne Williams</name>
            <email>brian.williams@viget.com</email>
            <uri>http://www.viget.com/about/team/bwilliams</uri>      </author>

      <category term="General"
        scheme="http://www.viget.com/blog/category/general/"
        label="General" />
      <content type="html"><![CDATA[

                 <p><img alt="SXSWi 2009" align="right" src="http://www.wynnewilliams.com/wp-content/uploads/2008/08/logo-sxsw09.gif" />The <a title="SXSW Interactive Festival" href="http://2009.sxsw.com/interactive">2009 SXSW Interactive Festival</a> is slated for March 13-17. Several of us <a title="went this past year" href="http://www.viget.com/blog/team-viget-visiting-austin-for-sxsw-2008">went this past year</a>. We had a blast, learned a lot, and even <a title="reconnected with Tom" href="http://www.viget.com/blog/welcome-tom-our-new-design-director">reconnected with Tom</a> -- all good things.</p>
<p>As you've probably noticed with all of&nbsp;the not-so-subtle self-promoting happening on Twitter right now, the 2009 panel picker went up today.&nbsp; I feel okay about shamelessly promoting all the sessions submited by Viget folks below, especially&nbsp;because I'd really like to see each one. Check 'em out:</p>
                 <ul>
    <li><a href="http://panelpicker.sxsw.com/ideas/view/1295?return=%2Fideas%2Findex%2F3%2Fq%3Aviget"><strong>Design Appetizers: The Pre-Composition Phase of Design</strong></a> <br />(Tom Osborne)</li>
    <li><a href="http://panelpicker.sxsw.com/ideas/view/1267?return=%2Fideas%2Findex%2F3%2Fq%3Aviget"><strong>Fitting Design and UX into an Agile Process</strong></a> <br />(Jackson Wilkinson)</li>
    <li><a href="http://panelpicker.sxsw.com/ideas/view/1265?return=%2Fideas%2Findex%2F3%2Fq%3Aviget"><strong>How MacGyver Would Do Design Research</strong></a> <br />(Jackson Wilkinson)</li>
    <li><a href="http://panelpicker.sxsw.com/ideas/view/1293?return=%2Fideas%2Findex%2F3%2Fq%3Aviget"><strong>Design School for Dummies</strong></a> <br />(Peyton Crump)</li>
    <li><a href="http://panelpicker.sxsw.com/ideas/view/1781?return=%2Fideas%2Findex%2F3%2Fq%3Aviget"><strong>Turning You Into You + Partners, Inc. Freelancing Sucks.</strong></a> <br />(Brian Williams)</li>
    <li><a href="http://panelpicker.sxsw.com/ideas/view/1816?return=%2Fideas%2Findex%2F3%2Fq%3Aviget"><strong>Social Design Patterns for Extroverts</strong></a> <br />(Jackson Fox)</li>
    <li><a href="http://panelpicker.sxsw.com/ideas/view/1790?return=%2Fideas%2Findex%2F3%2Fq%3Aviget"><strong>Start-up Mistakes: 5 to Avoid, 5 to Make</strong></a> <br />(Kevin Vigneault)</li>
    <li><a href="http://panelpicker.sxsw.com/ideas/view/1498?return=%2Fideas%2Findex%2F3%2Fq%3Aviget"><strong>Shoe Shopping: The Art of Self-Promotion for Small Agencies</strong></a> <br />(Brian Williams)</li>
    <li><a href="http://panelpicker.sxsw.com/ideas/view/1341?return=%2Fideas%2Findex%2F3%2Fq%3Aelliot"><strong>Quit Bitchin' and Get Your Glyph On . . .</strong></a> <br />(Samantha Warren / elliotjaystocks)</li>
</ul>
<p>Whether&nbsp;we have an opportunity to speak there or not, all of the topic ideas from everyone has me looking forward to 2009 already.&nbsp; See you in Austin!</p>
<p>&nbsp;</p>

      ]]></content>
    </entry>

    <entry>
      <title>Named Scope Caching</title>

<link rel="alternate" type="text/html" href="http://www.viget.com/extend/comments/named-scope-caching/" />
      <id>tag:viget.com,2008:extend/4.1222</id>
      <published>2008-08-07T13:42:00Z</published>
      <updated>2008-08-12T18:43:14Z</updated>
      <author>
            <name>Brian Landau</name>
            <email>brian.landau@viget.com</email>
                  </author>

      <category term="Ruby on Rails"
        scheme="http://www.viget.com/blog/category/ruby_on_rails/"
        label="Ruby on Rails" />
      <category term="Tips and Tricks"
        scheme="http://www.viget.com/blog/category/tips_and_tricks/"
        label="Tips and Tricks" />
      <content type="html"><![CDATA[

                 <p>When working on high-traffic Rails sites, it often becomes necessary to find ways to improve performance with caching. One place we&rsquo;ve found this is most convenient and easy-to-do is by caching an ActiveRecord result set for models that change rarely or not at all. An easy example of this is a Category model.</p>
<p>Often times, you have a categorization hierarchy that will never or rarely change over the life of an application. Ideally you would fetch the results once from the database and never have to again. So how do we go about caching this? First let&rsquo;s look at our model and create a <code>named_scope</code> for it:</p>
<pre name="code" class="ruby">
class Category &lt; ActiveRecord::Base
  acts_as_tree
  named_scope :find_top_level, :conditions =&gt; 'categories.parent_id IS NULL',
                              :order      =&gt; 'categories.name'
end
</pre>
<p>Next, we need to create create a method that fetches the results for our new scope and caches it in a class variable. It should also only do caching if in production environment (alternatively or additionally, we could use the ActionController.perform_caching config value), as this can cause problems in tests.</p>
<pre name="code" class="ruby">
def self.top_level
  unless ('production' == RAILS_ENV) &amp;&amp; ActionController.perform_caching
    @@top_level_cache = self.find_top_level
  else
    @@top_level_cache ||= self.find_top_level
  end
end
</pre>
<p>Finally, we need to create a method to invalidate our cache when records are saved or deleted. Since we know this isn&rsquo;t happening often (if at all), this should rarely be performed but is a good safeguard so we know our cache is current.</p>
<pre name="code" class="ruby">
after_save :reset_cached_finder
after_destroy :reset_cached_finder

def reset_cached_finder
  @@top_level_cache = nil
end
</pre>
<p>This is something that we could easily see doing in a number of models for a number of finders. Since this involves a lot of similar code, it would be great if we could create some meta code that would allow us to define these caches with a simple one liner.</p>
                 <p>Maybe with syntax like <code>cache_scopes :cached_method_name =&gt; :scope_name</code>. <br />
For example:</p>
<pre name="code" class="ruby">
cache_scopes :top_level =&gt; :find_top_level
</pre>
<p>Well <a title="cache_scopes.rb" href="http://gist.github.com/4268">here&rsquo;s the code</a> that does that:</p>
<script src="http://gist.github.com/4268.js"></script>
<p>Suggestions for improvement are encouraged, which is easily done with GitHub&rsquo;s new gist. </p>
<p>Enjoy and have fun caching!</p>



      ]]></content>
    </entry>

    <entry>
      <title>Summer of Start&#45;ups: Working with LaunchBox</title>

<link rel="alternate" type="text/html" href="http://www.viget.com/blog/comments/summer-of-startups-launchbox/" />
      <id>tag:viget.com,2008:blog/24.1221</id>
      <published>2008-08-06T12:46:00Z</published>
      <updated>2008-08-06T20:11:56Z</updated>
      <author>
            <name>Kevin Vigneault</name>
            <email>kevin.vigneault@viget.com</email>
            <uri>http://www.viget.com/about/team/kvigneault</uri>      </author>

      <category term="General"
        scheme="http://www.viget.com/blog/category/general/"
        label="General" />
      <content type="html"><![CDATA[

                 <p><a href="http://www.launchboxdigital.com">LaunchBox Digital</a> is a local DC program that gives a small batch of start-ups some capital and, more importantly, guidance through the earliest phase of the product-building process. This is the first year of the program; but, other similar programs like Y Combinator and TechStars have proven the model to be effective. We were lucky enough to be able to <a href="http://www.viget.com/blog/working-with-launchbox-digital">work a little bit with the teams over the past couple of months</a>. We had a great time jumping in and giving our recommendations (mostly UX and design). Today, the teams will be pitching their ideas in Reston, VA to a group of potential investors and tomorrow they&#8217;ll all be on the West Coast (Palo Alto to be exact) pitching their ideas again to another group. I got to meet most of the people in the program and I learned about each of their projects. I was thoroughly impressed with how good the ideas were and how far along they were in such a short period of time. Here are the teams we had the opportunity to meet with along with a brief blurb about what they&#8217;re up to.</p>
<p><a href="http:///www.jamlegend.com">JamLegend</a> - Guitar Hero and Rock Band are pretty big these days. In fact, <a href="http://flickr.com/photos/samanthatoy/2414797030/in/photostream/">we have both in our office</a> and while they&#8217;re great games, they have some limitations. Mainly, they&#8217;re expensive and have a relatively small catalog of songs - a lot less than people keep on their iPods for example. JamLegend is looking to open up the genre by taking the experience online. Users can play songs at three different skill levels, duel their friends or set up tournaments to take on anyone. What is most exciting to me is that content will be user-generated, so non-major label bands can get in on the action and upload their own songs for their fans to play either on the site or through a widget posted on other sites.</p>
<p><a href="http://www.mygamemug.com">MyGameMug</a> - It can be hard to find other people to game with. Especially if you&#8217;re not just looking for some random online players, but rather people who actually mesh with your personality and style of play. MyGameMug has created a site that makes finding people to game with easier and better. Think eHarmony for video gamers, except you&#8217;re just looking to play Gears of War, not date the person. The MyGameMug team has created a quick and easy quiz that allows users to find out which one of 16 gaming personas best matches them. Once users have their persona and log in, they can find other people that own and play the same PC and console games.</p>
<p><a href="http://www.buzzhubb.com">BuzzHubb</a> - One of Twitter&#8217;s greatest strengths is its simplicity. You follow people, they follow you. When you post something, everyone sees it. This simplicity is also one of its biggest weaknesses. What if you don&#8217;t want to post something so everyone can see? What if you just want to view posts from a particular group?There&#8217;s simply no way to have that level of control on Twitter and that&#8217;s where BuzzHubb shines. They&#8217;re all about segmenting you and your friends into &quot;Hubbs&quot;. In fact, the only way to join is to use a university email address where you&#8217;re automatically dropped into your school&#8217;s Hubb when you sign up. You can then create or join more Hubbs.</p>
<p><a href="http://www.koofers.com">Koofers</a> - At Virginia Tech, they invented the word &quot;koofers&quot;. It refers to the old quizzes and exams that students (mostly those in fraternities and sororities) would keep and pass down to younger students. Koofers the web site is looking to take that concept and spread it democratically to the web. But, there&#8217;s more to it than that. They&#8217;re tapping into vast amounts of university data that will help students choose the right courses and professors, as well as generate the optimal class schedule.</p>
<p><a href="http://www.razume.com">Razume</a> - Creating your resume is hard. Making it really good is even harder. It&#8217;s easier to look at someone else&#8217;s and see what they did well and what they did poorly than it is to critique yourself. That&#8217;s why Razume&#8217;s simple, but ingenious, idea of a resume review site is so good. Users can upload their resumes or create them online. Then, the community marks up the submitted resumes with feedback. Razume will be a must-stop for young job seekers especially who need some guidance getting past the first step of the hiring process (i.e., not having their resume thrown away).</p>
<p><a href="http://www.heekya.com">Heekya</a> - Content and information on the web is fragmented. Sometimes it&#8217;s separated by medium - videos on YouTube, photos on Flickr, etc. Almost always, content lives by itself with no connection to a greater story. Heekya is looking to connect content and provide context around stories. For example, they make it really easy to write up some text, drop in a picture or video and then link all that to a map so the reader knows where the story took place. Even better, they make content generation social. If someone else attended the same event that I did, I can clone their story and branch it off into my own narrative.</p>
<p><a href="http://www.sharememe.com">ShareMeme</a> - Your contacts exist across many different communication platforms - Gmail, AIM, Twitter, SMS, Facebook, etc. Let&#8217;s say you wanted to send out an invite to all of your contacts. How would you do that now? I&#8217;d probably dig through my email contacts and send those out first. Then I&#8217;d post it on Twitter. Then I might IM some people. Lastly, I might call or text some friends. With ShareMeme, I would have been able to do all of this from one place. They make it really easy to pull in your contacts from all over the place and send out messages to everyone&#8217;s preferred method. And it&#8217;s not just invites. You can send links and polls as well.</p>
<p>For more info about LaunchBox Digital, <a href="http://www.techcrunch.com/2008/08/05/launchbox-unleashes-its-first-nine-startups/">here&#8217;s a nice write-up on TechCrunch</a> from last night that includes a screencast demo for each of the teams.
</p>
                 

      ]]></content>
    </entry>

    <entry>
      <title>Interventional Paws Launches New Site</title>

<link rel="alternate" type="text/html" href="http://www.viget.com/blog/comments/interventional-paws-launches-new-site/" />
      <id>tag:viget.com,2008:blog/24.1220</id>
      <published>2008-08-05T13:39:00Z</published>
      <updated>2008-08-05T13:52:31Z</updated>
      <author>
            <name>Stephanie Hay</name>
            <email>stephanie.hay@viget.com</email>
            <uri>http://www.viget.com/about/team/shay</uri>      </author>

      <category term="Site Launches"
        scheme="http://www.viget.com/blog/category/site_launches/"
        label="Site Launches" />
      <content type="html"><![CDATA[

                 <p>We&#8217;re proud to have helped <a href="http://www.interventionalpaws.org" title="Interventional Paws">Interventional Paws</a>, a non-profit dedicated to advancing veterinary medicine while helping to improve the lives of pets everywhere, launch its new website aimed at continuing to connect pet lovers with innovative doctors.
</p>
<p>
Interventional Paws is an ExpressionEngine site, which allows its administrators easy access to update everything from pet success stories to veterinary grants available to doctor bios.&nbsp; 
</p>
<p>
The goal of the site is to grow an online community of pet owners and doctors alike who are seeking to be a part of advancing veterinary medicine, particularly interventional treatments that don&#8217;t require expensive, invasive surgeries.&nbsp; 
</p>
                 

      ]]></content>
    </entry>


</feed>