<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/atom10full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" xml:lang="en-US">
  <title>OnMyList Blog</title>
  <subtitle type="html">List your pants off!</subtitle>
  <id>tag:blog.onmylist.com,2005:Typo</id>
  <generator version="4.0" uri="http://www.typosphere.org">Typo</generator>
  
  <link href="http://blog.onmylist.com" rel="alternate" type="text/html" />
  <updated>2008-02-17T18:08:26-05:00</updated>
  <link rel="self" href="http://feeds.feedburner.com/OnMyListBlog" type="application/atom+xml" /><entry>
    <author>
      <name>Noah</name>
    </author>
    <id>urn:uuid:5b9a4cbf-9e66-42ef-abac-f03bd8c6fa38</id>
    <published>2008-02-17T18:01:00-05:00</published>
    <updated>2008-02-17T18:08:26-05:00</updated>
    <title type="html">Upping participation</title>
    <link href="http://feeds.feedburner.com/~r/OnMyListBlog/~3/236678411/upping-participation" rel="alternate" type="text/html" />
    <category term="features" scheme="http://blog.onmylist.com/articles/category/features" label="Features" />
    <summary type="html">&lt;p&gt;I&amp;#8217;ve been spending lots of time trying to think of ways to increase participation in OnMyList from the thousands of users who visit the site each day.  Generally, we get about 6-7000 users a day, but only about 6 or 7 signups, and usually only a couple of new lists.  Not a very big percentage.  I&amp;#8217;ve identified a few area that I know can be improved upon.&lt;/p&gt;


	&lt;p&gt;(1) In order to make a list you have to be signed up.  Right now if a user attempts ot make a list, they are first taken to the signup page.  Kind of a buzz kill.  We are going to remove this requirement and take them directly to the list creation first, and ask for singup at the end, but not require it.&lt;/p&gt;


	&lt;p&gt;(2) I feel many users land on a list page and dont even realize that they could make a list.  They might think that onmylist is simply a personal website or an editorially driven one.  We are going to make some changes to the messaging to more clearly encourage participation.  In order for this to be more effective we are also going to work on simplifying (ie removing) unnecessary words or functions.&lt;/p&gt;


	&lt;p&gt;We&amp;#8217;ll see how this works out&amp;#8230;&lt;/p&gt;</summary>
    <content type="html">&lt;p&gt;I&amp;#8217;ve been spending lots of time trying to think of ways to increase participation in OnMyList from the thousands of users who visit the site each day.  Generally, we get about 6-7000 users a day, but only about 6 or 7 signups, and usually only a couple of new lists.  Not a very big percentage.  I&amp;#8217;ve identified a few area that I know can be improved upon.&lt;/p&gt;


	&lt;p&gt;(1) In order to make a list you have to be signed up.  Right now if a user attempts ot make a list, they are first taken to the signup page.  Kind of a buzz kill.  We are going to remove this requirement and take them directly to the list creation first, and ask for singup at the end, but not require it.&lt;/p&gt;


	&lt;p&gt;(2) I feel many users land on a list page and dont even realize that they could make a list.  They might think that onmylist is simply a personal website or an editorially driven one.  We are going to make some changes to the messaging to more clearly encourage participation.  In order for this to be more effective we are also going to work on simplifying (ie removing) unnecessary words or functions.&lt;/p&gt;


	&lt;p&gt;We&amp;#8217;ll see how this works out&amp;#8230;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=X0RUgFE"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=X0RUgFE" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=pBMA86E"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=pBMA86E" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=uXIwpWe"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=uXIwpWe" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=F9I2zre"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=F9I2zre" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=Sm2BliE"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=Sm2BliE" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=en3rKwe"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=en3rKwe" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content>
  <feedburner:origLink>http://blog.onmylist.com/articles/2008/02/17/upping-participation</feedburner:origLink></entry>
  <entry>
    <author>
      <name>Andrew</name>
    </author>
    <id>urn:uuid:b00c5c90-0d0b-4fd9-b9fe-49b689a9d335</id>
    <published>2007-11-20T14:48:00-05:00</published>
    <updated>2007-11-20T20:34:08-05:00</updated>
    <title type="html">Love Twitter and OnMyList?</title>
    <link href="http://feeds.feedburner.com/~r/OnMyListBlog/~3/187895087/love-twitter-and-onmylist-follow-our-tweeds" rel="alternate" type="text/html" />
    <category term="oml-news" scheme="http://blog.onmylist.com/articles/category/oml-news" label="OML News" />
    <category term="twitter" scheme="http://blog.onmylist.com/articles/tag/twitter" />
    <category term="onmylist" scheme="http://blog.onmylist.com/articles/tag/onmylist" />
    <category term="Twitter4R" scheme="http://blog.onmylist.com/articles/tag/twitter4r" />
    <link type="image/png" rel="enclosure" length="56875" href="http://blog.onmylist.com/files/Picture_21.png" title="Love Twitter and OnMyList?" />
    <summary type="html">&lt;p&gt;Now we tweed when OMLers create or edit lists. The list titles and shortened URLs are included in the update. You can follow it at &lt;a href="http://twitter.com/onmylist"&gt;http://twitter.com/onmylist&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://twitter.com/onmylist" title="OML tweeds (by AndrewNg.com)"&gt;&lt;img src="http://static.flickr.com/2062/2050987026_7110d6a5cf.jpg" title="OML tweeds (by AndrewNg.com)" alt="OML tweeds (by AndrewNg.com)" width="500" height="435" /&gt;&lt;/a&gt;&lt;/p&gt;</summary>
    <content type="html">&lt;p&gt;Now we tweed when OMLers create or edit lists. The list titles and shortened URLs are included in the update. You can follow it at &lt;a href="http://twitter.com/onmylist"&gt;http://twitter.com/onmylist&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://twitter.com/onmylist" title="OML tweeds (by AndrewNg.com)"&gt;&lt;img src="http://static.flickr.com/2062/2050987026_7110d6a5cf.jpg" title="OML tweeds (by AndrewNg.com)" alt="OML tweeds (by AndrewNg.com)" width="500" height="435" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=vemcdeB"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=vemcdeB" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=reD57WB"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=reD57WB" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=BTEsmUb"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=BTEsmUb" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=iIoi1Mb"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=iIoi1Mb" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=dzDBW5B"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=dzDBW5B" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=2WMedwb"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=2WMedwb" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content>
  <feedburner:origLink>http://blog.onmylist.com/articles/2007/11/20/love-twitter-and-onmylist-follow-our-tweeds</feedburner:origLink></entry>
  <entry>
    <author>
      <name>Noah</name>
    </author>
    <id>urn:uuid:44cf1c97-f3b0-47cc-a67b-97733cb515fc</id>
    <published>2007-11-15T21:41:00-05:00</published>
    <updated>2007-11-19T13:23:36-05:00</updated>
    <title type="html">Derek Powazek Joins our Team</title>
    <link href="http://feeds.feedburner.com/~r/OnMyListBlog/~3/185555745/derek-powazek-joins-our-team" rel="alternate" type="text/html" />
    <category term="oml-news" scheme="http://blog.onmylist.com/articles/category/oml-news" label="OML News" />
    <category term="advisory" scheme="http://blog.onmylist.com/articles/tag/advisory" />
    <category term="board" scheme="http://blog.onmylist.com/articles/tag/board" />
    <category term="powazek" scheme="http://blog.onmylist.com/articles/tag/powazek" />
    <category term="design" scheme="http://blog.onmylist.com/articles/tag/design" />
    <category term="community" scheme="http://blog.onmylist.com/articles/tag/community" />
    <summary type="html">&lt;p&gt;Derek and I met at &lt;a href="http://www.zaziesf.com"&gt;
Zazie&lt;/a&gt; in Cole Valley for a late morning brunch way back in June.  He didn&amp;#8217;t know me from Adam at the time but graciously agreed to meet up since we were practically neighbors.  I wanted to run OnMyList past Derek and see what what his thoughts on the website and space were.  I think we had just launched a week or two earlier.  After our meeting I decided it would be good to have his opinion a little more often and began exploring adding him to the advisory board.  Four months later we have.&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://www.powazek.com"&gt;
Derek&lt;/a&gt; has a great set of past experiences on all kinds of interesting stuff from design to communities to publishing to photography to chihuahuas (that&amp;#8217;s a funny word to type by the way).  He played key roles at &lt;a href="http://www.blogger.com"&gt;
Blogger&lt;/a&gt;, &lt;a href="http://www.technorati.com"&gt;
Technorati&lt;/a&gt;, and was the founder of user generated magazine &lt;span class="caps"&gt;JPG&lt;/span&gt;.  Derek also wrote a seminal book on online communities titled, &amp;#8220;Design for Community: The Art of Connecting Real People in Virtual Places.&amp;#8221;&lt;/p&gt;


	&lt;p&gt;Derek joins our existing advisory board members, who I would be remiss not to mention, Jude Lange, &lt;a href="http://www.mediaconvergencegroup.com"&gt;
Jim Spencer&lt;/a&gt;, and &lt;a href="http://www.gusto.com"&gt;
Jeff Wasson&lt;/a&gt;.&lt;/p&gt;</summary>
    <content type="html">&lt;p&gt;Derek and I met at &lt;a href="http://www.zaziesf.com"&gt;
Zazie&lt;/a&gt; in Cole Valley for a late morning brunch way back in June.  He didn&amp;#8217;t know me from Adam at the time but graciously agreed to meet up since we were practically neighbors.  I wanted to run OnMyList past Derek and see what what his thoughts on the website and space were.  I think we had just launched a week or two earlier.  After our meeting I decided it would be good to have his opinion a little more often and began exploring adding him to the advisory board.  Four months later we have.&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://www.powazek.com"&gt;
Derek&lt;/a&gt; has a great set of past experiences on all kinds of interesting stuff from design to communities to publishing to photography to chihuahuas (that&amp;#8217;s a funny word to type by the way).  He played key roles at &lt;a href="http://www.blogger.com"&gt;
Blogger&lt;/a&gt;, &lt;a href="http://www.technorati.com"&gt;
Technorati&lt;/a&gt;, and was the founder of user generated magazine &lt;span class="caps"&gt;JPG&lt;/span&gt;.  Derek also wrote a seminal book on online communities titled, &amp;#8220;Design for Community: The Art of Connecting Real People in Virtual Places.&amp;#8221;&lt;/p&gt;


	&lt;p&gt;Derek joins our existing advisory board members, who I would be remiss not to mention, Jude Lange, &lt;a href="http://www.mediaconvergencegroup.com"&gt;
Jim Spencer&lt;/a&gt;, and &lt;a href="http://www.gusto.com"&gt;
Jeff Wasson&lt;/a&gt;.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=cqkGBeB"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=cqkGBeB" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=A65as9B"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=A65as9B" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=WUohQHb"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=WUohQHb" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=PUwIDBb"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=PUwIDBb" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=YlwHMCB"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=YlwHMCB" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=WOnf2kb"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=WOnf2kb" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content>
  <feedburner:origLink>http://blog.onmylist.com/articles/2007/11/15/derek-powazek-joins-our-team</feedburner:origLink></entry>
  <entry>
    <author>
      <name>Ray</name>
    </author>
    <id>urn:uuid:ef0eb1f4-385d-4f17-ac16-71344bfd8984</id>
    <published>2007-11-11T01:58:00-05:00</published>
    <updated>2007-11-11T14:07:56-05:00</updated>
    <title type="html">OnMyList Redesign</title>
    <link href="http://feeds.feedburner.com/~r/OnMyListBlog/~3/183015314/onmylist-redesign" rel="alternate" type="text/html" />
    <category term="features" scheme="http://blog.onmylist.com/articles/category/features" label="Features" />
    <category term="oml-news" scheme="http://blog.onmylist.com/articles/category/oml-news" label="OML News" />
    <category term="onmylist" scheme="http://blog.onmylist.com/articles/tag/onmylist" />
    <category term="news" scheme="http://blog.onmylist.com/articles/tag/news" />
    <summary type="html">&lt;p&gt;Over the last month, we worked very hard to design and implement a lot of new features and improvements for OnMyList and we&amp;#8217;ve been so anxious to let the world know about it.  Well, we finally did it!  If you go to the &lt;a href="http://www.onmylist.com"&gt;site&lt;/a&gt; now, you should see a brand new user interface.  It has a lot of cool new features.  Here are some of them:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;Improved profile &amp;#8211; The new profile page now makes it easy for you to see lists you created, lists you made as favorites, lists you rated, people you subscribe to, and people who subscribe to you.  You can also sort lists by new to old, old to new, or view count.  The Latest Updates tab shows a newsfeed of your OnMyList activities, described next.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;Newsfeeds &amp;#8211; You can now spy on any list or anyone very easily because you will get notified when you make a list, comment on a list, someone else comment on your list or on a list that you commented on, subscribe to someone or someone subscribe to you, someone made your list a favorite, ...etc.  We hope this will help our members to stay on top of lists that you are interested and facilitate interactions between members.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;profile questions &amp;#38; answers &amp;#8211; When you go to your profile page, you will find a link at the bottom of the right sidebar to add new profile question and answer to show off your personalities.  We&amp;#8217;ve also made the editing more obvious with the Edit buttons (We feel the in place editors were too subtle).&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;ticker news &amp;#8211; There is a Overheard box on the homepage that shows selected lists that we&amp;#8217;ve picked that are interesting.  Pretty cool, huh?&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;invite friends &amp;#8211; Want to let your friends know you are an OnMyList superstar?  Want to show off your lists and what your favorites are?  Have a list of images and videos that you want to impress someone?  We&amp;#8217;ve made it easy for you.  Look around at the top of the site.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;crop profile picture &amp;#8211; We know you&amp;#8217;ve been wanting to show your whole face in the profile picture.  Now you have it.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;facebook app &amp;#8211; We have a &lt;a href="http://www.facebook.com/apps/application.php?api_key=d3110b40c94efde7d4c57efaf9543087"&gt;facebook application&lt;/a&gt; for some time.  You can show off your lists to your friends whenever you create or update your lists.  You can make a list of favorite gifts for my birthday and have it show up in facebook, and hopefully get a few presents.  Isn&amp;#8217;t that cool?&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;widget &amp;#8211; Just like the facebook app.  And what&amp;#8217;s more: You can choose to display your latest/favorites/highest rated lists.  It just gets better!  Get your widget to show off in your own blog or website by clicking My Widgets in your profile page now.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;Please let us know whether you like it or not.  Enjoy and list your pants off!&lt;/p&gt;</summary>
    <content type="html">&lt;p&gt;Over the last month, we worked very hard to design and implement a lot of new features and improvements for OnMyList and we&amp;#8217;ve been so anxious to let the world know about it.  Well, we finally did it!  If you go to the &lt;a href="http://www.onmylist.com"&gt;site&lt;/a&gt; now, you should see a brand new user interface.  It has a lot of cool new features.  Here are some of them:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;Improved profile &amp;#8211; The new profile page now makes it easy for you to see lists you created, lists you made as favorites, lists you rated, people you subscribe to, and people who subscribe to you.  You can also sort lists by new to old, old to new, or view count.  The Latest Updates tab shows a newsfeed of your OnMyList activities, described next.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;Newsfeeds &amp;#8211; You can now spy on any list or anyone very easily because you will get notified when you make a list, comment on a list, someone else comment on your list or on a list that you commented on, subscribe to someone or someone subscribe to you, someone made your list a favorite, ...etc.  We hope this will help our members to stay on top of lists that you are interested and facilitate interactions between members.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;profile questions &amp;#38; answers &amp;#8211; When you go to your profile page, you will find a link at the bottom of the right sidebar to add new profile question and answer to show off your personalities.  We&amp;#8217;ve also made the editing more obvious with the Edit buttons (We feel the in place editors were too subtle).&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;ticker news &amp;#8211; There is a Overheard box on the homepage that shows selected lists that we&amp;#8217;ve picked that are interesting.  Pretty cool, huh?&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;invite friends &amp;#8211; Want to let your friends know you are an OnMyList superstar?  Want to show off your lists and what your favorites are?  Have a list of images and videos that you want to impress someone?  We&amp;#8217;ve made it easy for you.  Look around at the top of the site.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;crop profile picture &amp;#8211; We know you&amp;#8217;ve been wanting to show your whole face in the profile picture.  Now you have it.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;facebook app &amp;#8211; We have a &lt;a href="http://www.facebook.com/apps/application.php?api_key=d3110b40c94efde7d4c57efaf9543087"&gt;facebook application&lt;/a&gt; for some time.  You can show off your lists to your friends whenever you create or update your lists.  You can make a list of favorite gifts for my birthday and have it show up in facebook, and hopefully get a few presents.  Isn&amp;#8217;t that cool?&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;widget &amp;#8211; Just like the facebook app.  And what&amp;#8217;s more: You can choose to display your latest/favorites/highest rated lists.  It just gets better!  Get your widget to show off in your own blog or website by clicking My Widgets in your profile page now.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;Please let us know whether you like it or not.  Enjoy and list your pants off!&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=bIdnsOB"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=bIdnsOB" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=lGtJkYB"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=lGtJkYB" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=soDNjYb"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=soDNjYb" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=ximtHlb"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=ximtHlb" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=8ksI6GB"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=8ksI6GB" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=ew9cueb"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=ew9cueb" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content>
  <feedburner:origLink>http://blog.onmylist.com/articles/2007/11/11/onmylist-redesign</feedburner:origLink></entry>
  <entry>
    <author>
      <name>Andrew</name>
    </author>
    <id>urn:uuid:6ac49798-431b-4601-bca0-9feb946e29d6</id>
    <published>2007-11-10T04:32:00-05:00</published>
    <updated>2007-11-10T04:57:50-05:00</updated>
    <title type="html">attachment_fu and s3 woes, or how I spent most of Friday</title>
    <link href="http://feeds.feedburner.com/~r/OnMyListBlog/~3/182615773/attachment_fu-and-s3-woes-or-how-i-spent-most-of-friday" rel="alternate" type="text/html" />
    <category term="ruby-on-rails" scheme="http://blog.onmylist.com/articles/category/ruby-on-rails" label="Ruby on Rails" />
    <category term="attachment_fu" scheme="http://blog.onmylist.com/articles/tag/attachment_fu" />
    <category term="amazon" scheme="http://blog.onmylist.com/articles/tag/amazon" />
    <category term="s3" scheme="http://blog.onmylist.com/articles/tag/s3" />
    <category term="ec2" scheme="http://blog.onmylist.com/articles/tag/ec2" />
    <category term="aws" scheme="http://blog.onmylist.com/articles/tag/aws" />
    <category term="ruby" scheme="http://blog.onmylist.com/articles/tag/ruby" />
    <category term="RoR" scheme="http://blog.onmylist.com/articles/tag/ror" />
    <category term="rubyonrails" scheme="http://blog.onmylist.com/articles/tag/rubyonrails" />
    <category term="rails" scheme="http://blog.onmylist.com/articles/tag/rails" />
    <category term="crop" scheme="http://blog.onmylist.com/articles/tag/crop" />
    <category term="javascript" scheme="http://blog.onmylist.com/articles/tag/javascript" />
    <summary type="html">&lt;p&gt;At &lt;span class="caps"&gt;OML&lt;/span&gt; we use Amazon S3 for storage, when we launched the site Gravatar was very unreliable so we had to roll our own with attachment_fu, and it worked fairly well.&lt;/p&gt;


	&lt;p&gt;With our redesign we want to make all avatars square coz the site looks better that way, so I added a JavaScript image cropper to help you crop your uploaded pictures into squares. It didn&amp;#8217;t take long to write and it worked fine in my local development machine. But I was using file_system in attachment_fu locally instead of S3. (Now in retrospect I should&amp;#8217;ve setup my own test bucket on S3)... I switched it to S3 on the beta site and it stopped working, that is, the images don&amp;#8217;t get cropped properly! After about 10 hours of tracing through attachment_fu and trying silly things such as writing my own with_image override in s3_backend.rb, in the end I only had to add a single line and a minor change. Here are the before and after code&amp;#8230;&lt;/p&gt;


	&lt;p&gt;before:&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;  &lt;span class="keyword"&gt;def &lt;/span&gt;&lt;span class="method"&gt;crop2square&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;args&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt;
    &lt;span class="ident"&gt;image2crop&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="ident"&gt;find_or_initialize_thumbnail&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="symbol"&gt;:full&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt;
    &lt;span class="ident"&gt;image2crop&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;with_image&lt;/span&gt; &lt;span class="keyword"&gt;do&lt;/span&gt; &lt;span class="punct"&gt;|&lt;/span&gt;&lt;span class="ident"&gt;img&lt;/span&gt;&lt;span class="punct"&gt;|&lt;/span&gt;
      &lt;span class="attribute"&gt;@data&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="ident"&gt;img&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;crop&lt;/span&gt;&lt;span class="punct"&gt;(&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;&lt;span class="expr"&gt;#{args[:width]}&lt;/span&gt;x&lt;span class="expr"&gt;#{args[:height]}&lt;/span&gt;+&lt;span class="expr"&gt;#{args[:x1]}&lt;/span&gt;+&lt;span class="expr"&gt;#{args[:y1]}&lt;/span&gt;&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;)&lt;/span&gt;
    &lt;span class="keyword"&gt;end&lt;/span&gt;
    &lt;span class="ident"&gt;attachment_options&lt;/span&gt;&lt;span class="punct"&gt;[&lt;/span&gt;&lt;span class="symbol"&gt;:thumbnails&lt;/span&gt;&lt;span class="punct"&gt;].&lt;/span&gt;&lt;span class="ident"&gt;each&lt;/span&gt; &lt;span class="punct"&gt;{&lt;/span&gt; &lt;span class="punct"&gt;|&lt;/span&gt;&lt;span class="ident"&gt;suffix&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="ident"&gt;size&lt;/span&gt;&lt;span class="punct"&gt;|&lt;/span&gt; &lt;span class="ident"&gt;create_or_update_thumbnail&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="attribute"&gt;@data&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="ident"&gt;suffix&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="punct"&gt;*&lt;/span&gt;&lt;span class="ident"&gt;size&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt; &lt;span class="punct"&gt;}&lt;/span&gt;
  &lt;span class="keyword"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;after:&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;  &lt;span class="keyword"&gt;def &lt;/span&gt;&lt;span class="method"&gt;crop2square&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;args&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt;
    &lt;span class="ident"&gt;image2crop&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="ident"&gt;find_or_initialize_thumbnail&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="symbol"&gt;:full&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt;
    &lt;span class="ident"&gt;image2crop&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;temp_path&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="ident"&gt;image2crop&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;create_temp_file&lt;/span&gt;
    &lt;span class="ident"&gt;image2crop&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;with_image&lt;/span&gt; &lt;span class="keyword"&gt;do&lt;/span&gt; &lt;span class="punct"&gt;|&lt;/span&gt;&lt;span class="ident"&gt;img&lt;/span&gt;&lt;span class="punct"&gt;|&lt;/span&gt;
      &lt;span class="attribute"&gt;@data&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="ident"&gt;img&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;crop&lt;/span&gt;&lt;span class="punct"&gt;(&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;&lt;span class="expr"&gt;#{args[:width]}&lt;/span&gt;x&lt;span class="expr"&gt;#{args[:height]}&lt;/span&gt;+&lt;span class="expr"&gt;#{args[:x1]}&lt;/span&gt;+&lt;span class="expr"&gt;#{args[:y1]}&lt;/span&gt;&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;)&lt;/span&gt;
    &lt;span class="keyword"&gt;end&lt;/span&gt;
    &lt;span class="ident"&gt;attachment_options&lt;/span&gt;&lt;span class="punct"&gt;[&lt;/span&gt;&lt;span class="symbol"&gt;:thumbnails&lt;/span&gt;&lt;span class="punct"&gt;].&lt;/span&gt;&lt;span class="ident"&gt;each&lt;/span&gt; &lt;span class="punct"&gt;{&lt;/span&gt; &lt;span class="punct"&gt;|&lt;/span&gt;&lt;span class="ident"&gt;suffix&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="ident"&gt;size&lt;/span&gt;&lt;span class="punct"&gt;|&lt;/span&gt; &lt;span class="ident"&gt;create_or_update_thumbnail&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="attribute"&gt;@data&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;path&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="ident"&gt;suffix&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="punct"&gt;*&lt;/span&gt;&lt;span class="ident"&gt;size&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt; &lt;span class="punct"&gt;}&lt;/span&gt;
  &lt;span class="keyword"&gt;end&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;I don&amp;#8217;t really feel like explaining why this works right now, and if you&amp;#8217;re having the same problem I&amp;#8217;m sure you won&amp;#8217;t care either and you just want to copy and paste the code and move onto your next problem.&lt;/p&gt;


	&lt;p&gt;Hope this helps&amp;#8230;&lt;/p&gt;</summary>
    <content type="html">&lt;p&gt;At &lt;span class="caps"&gt;OML&lt;/span&gt; we use Amazon S3 for storage, when we launched the site Gravatar was very unreliable so we had to roll our own with attachment_fu, and it worked fairly well.&lt;/p&gt;


	&lt;p&gt;With our redesign we want to make all avatars square coz the site looks better that way, so I added a JavaScript image cropper to help you crop your uploaded pictures into squares. It didn&amp;#8217;t take long to write and it worked fine in my local development machine. But I was using file_system in attachment_fu locally instead of S3. (Now in retrospect I should&amp;#8217;ve setup my own test bucket on S3)... I switched it to S3 on the beta site and it stopped working, that is, the images don&amp;#8217;t get cropped properly! After about 10 hours of tracing through attachment_fu and trying silly things such as writing my own with_image override in s3_backend.rb, in the end I only had to add a single line and a minor change. Here are the before and after code&amp;#8230;&lt;/p&gt;


	&lt;p&gt;before:&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;  &lt;span class="keyword"&gt;def &lt;/span&gt;&lt;span class="method"&gt;crop2square&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;args&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt;
    &lt;span class="ident"&gt;image2crop&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="ident"&gt;find_or_initialize_thumbnail&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="symbol"&gt;:full&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt;
    &lt;span class="ident"&gt;image2crop&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;with_image&lt;/span&gt; &lt;span class="keyword"&gt;do&lt;/span&gt; &lt;span class="punct"&gt;|&lt;/span&gt;&lt;span class="ident"&gt;img&lt;/span&gt;&lt;span class="punct"&gt;|&lt;/span&gt;
      &lt;span class="attribute"&gt;@data&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="ident"&gt;img&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;crop&lt;/span&gt;&lt;span class="punct"&gt;(&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;&lt;span class="expr"&gt;#{args[:width]}&lt;/span&gt;x&lt;span class="expr"&gt;#{args[:height]}&lt;/span&gt;+&lt;span class="expr"&gt;#{args[:x1]}&lt;/span&gt;+&lt;span class="expr"&gt;#{args[:y1]}&lt;/span&gt;&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;)&lt;/span&gt;
    &lt;span class="keyword"&gt;end&lt;/span&gt;
    &lt;span class="ident"&gt;attachment_options&lt;/span&gt;&lt;span class="punct"&gt;[&lt;/span&gt;&lt;span class="symbol"&gt;:thumbnails&lt;/span&gt;&lt;span class="punct"&gt;].&lt;/span&gt;&lt;span class="ident"&gt;each&lt;/span&gt; &lt;span class="punct"&gt;{&lt;/span&gt; &lt;span class="punct"&gt;|&lt;/span&gt;&lt;span class="ident"&gt;suffix&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="ident"&gt;size&lt;/span&gt;&lt;span class="punct"&gt;|&lt;/span&gt; &lt;span class="ident"&gt;create_or_update_thumbnail&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="attribute"&gt;@data&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="ident"&gt;suffix&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="punct"&gt;*&lt;/span&gt;&lt;span class="ident"&gt;size&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt; &lt;span class="punct"&gt;}&lt;/span&gt;
  &lt;span class="keyword"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;after:&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;  &lt;span class="keyword"&gt;def &lt;/span&gt;&lt;span class="method"&gt;crop2square&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;args&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt;
    &lt;span class="ident"&gt;image2crop&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="ident"&gt;find_or_initialize_thumbnail&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="symbol"&gt;:full&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt;
    &lt;span class="ident"&gt;image2crop&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;temp_path&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="ident"&gt;image2crop&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;create_temp_file&lt;/span&gt;
    &lt;span class="ident"&gt;image2crop&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;with_image&lt;/span&gt; &lt;span class="keyword"&gt;do&lt;/span&gt; &lt;span class="punct"&gt;|&lt;/span&gt;&lt;span class="ident"&gt;img&lt;/span&gt;&lt;span class="punct"&gt;|&lt;/span&gt;
      &lt;span class="attribute"&gt;@data&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="ident"&gt;img&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;crop&lt;/span&gt;&lt;span class="punct"&gt;(&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;&lt;span class="expr"&gt;#{args[:width]}&lt;/span&gt;x&lt;span class="expr"&gt;#{args[:height]}&lt;/span&gt;+&lt;span class="expr"&gt;#{args[:x1]}&lt;/span&gt;+&lt;span class="expr"&gt;#{args[:y1]}&lt;/span&gt;&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;)&lt;/span&gt;
    &lt;span class="keyword"&gt;end&lt;/span&gt;
    &lt;span class="ident"&gt;attachment_options&lt;/span&gt;&lt;span class="punct"&gt;[&lt;/span&gt;&lt;span class="symbol"&gt;:thumbnails&lt;/span&gt;&lt;span class="punct"&gt;].&lt;/span&gt;&lt;span class="ident"&gt;each&lt;/span&gt; &lt;span class="punct"&gt;{&lt;/span&gt; &lt;span class="punct"&gt;|&lt;/span&gt;&lt;span class="ident"&gt;suffix&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="ident"&gt;size&lt;/span&gt;&lt;span class="punct"&gt;|&lt;/span&gt; &lt;span class="ident"&gt;create_or_update_thumbnail&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="attribute"&gt;@data&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;path&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="ident"&gt;suffix&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="punct"&gt;*&lt;/span&gt;&lt;span class="ident"&gt;size&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt; &lt;span class="punct"&gt;}&lt;/span&gt;
  &lt;span class="keyword"&gt;end&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;I don&amp;#8217;t really feel like explaining why this works right now, and if you&amp;#8217;re having the same problem I&amp;#8217;m sure you won&amp;#8217;t care either and you just want to copy and paste the code and move onto your next problem.&lt;/p&gt;


	&lt;p&gt;Hope this helps&amp;#8230;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=QQDixQB"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=QQDixQB" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=cUktO2B"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=cUktO2B" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=EEySikb"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=EEySikb" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=cJQeyGb"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=cJQeyGb" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=GYywmzB"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=GYywmzB" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=lW5d66b"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=lW5d66b" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content>
  <feedburner:origLink>http://blog.onmylist.com/articles/2007/11/10/attachment_fu-and-s3-woes-or-how-i-spent-most-of-friday</feedburner:origLink></entry>
  <entry>
    <author>
      <name>Noah</name>
    </author>
    <id>urn:uuid:e4170567-ee99-4061-b39f-463f28349271</id>
    <published>2007-10-10T17:04:00-04:00</published>
    <updated>2007-10-10T17:24:48-04:00</updated>
    <title type="html">It must be Halloween time...</title>
    <link href="http://feeds.feedburner.com/~r/OnMyListBlog/~3/168113616/it-must-be-halloween-time" rel="alternate" type="text/html" />
    <category term="oml-news" scheme="http://blog.onmylist.com/articles/category/oml-news" label="OML News" />
    <category term="halloween" scheme="http://blog.onmylist.com/articles/tag/halloween" />
    <category term="lists" scheme="http://blog.onmylist.com/articles/tag/lists" />
    <category term="cotumes" scheme="http://blog.onmylist.com/articles/tag/cotumes" />
    <category term="decorations" scheme="http://blog.onmylist.com/articles/tag/decorations" />
    <category term="holidays" scheme="http://blog.onmylist.com/articles/tag/holidays" />
    <summary type="html">&lt;p&gt;....because that&amp;#8217;s what OMLers are listing about.  In the last week or so we&amp;#8217;ve seen a  deluge of Halloween related lists at &lt;A href="http://www.onmylist.com"&gt;OnMyList&lt;/A&gt;.  We&amp;#8217;re quickly becoming Halloween Headquarters.  I still haven&amp;#8217;t figured out what I am going to be this year.  Perhaps I will go as a giant list and make it a marketing event.&lt;/p&gt;


	&lt;p&gt;Here&amp;#8217;s a rundown of ghoulish lists:&lt;/p&gt;


&lt;p&gt;
&lt;A href="http://www.onmylist.com/category/food_drink/Eerie_Eats_For_Your_Halloween_Party_1"&gt;Eerie Eats for Your Halloween Party&lt;/A&gt;&lt;/P&gt;

&lt;p&gt;
&lt;A href="http://www.onmylist.com/category/home_garden/Things_You_Can_Do_With_Your_Halloween_Pumpkins_1"&gt;Things You Can Do With Your Halloween Pumpkin&lt;/A&gt;&lt;/P&gt;
&lt;p&gt;
&lt;A href="http://www.onmylist.com/category/fashion/Halloween_Costumes_For_Couples_1"&gt;Halloween Costumes for Couples&lt;/A&gt;&lt;/P&gt;
&lt;p&gt;
&lt;A href="http://www.onmylist.com/category/miscellaneous/My_favorite_Halloween_costumes_that_I_cant_affordDAMN_1"&gt;My Favorite Halloween Costumes That I Can&amp;#8217;t Afford&amp;#8230;DAMN!&lt;/A&gt;&lt;/P&gt;
&lt;p&gt;
&lt;A href="http://www.onmylist.com/category/miscellaneous/Cool_Halloween_Decorations_1"&gt;Cool Halloween Decorations&lt;/A&gt;&lt;/P&gt;
&lt;p&gt;
&lt;A href="http://www.onmylist.com/category/celebrity/Famous_Witchs_1"&gt;Famous Witches&lt;/A&gt;&lt;/P&gt;
&lt;p&gt;
&lt;A href="http://www.onmylist.com/category/fashion/13_Awesomely_creative_Halloween_costume_ideas_1"&gt;13 Awesomely Creative Halloween Costume Ideas&lt;/A&gt;&lt;/P&gt;</summary>
    <content type="html">&lt;p&gt;....because that&amp;#8217;s what OMLers are listing about.  In the last week or so we&amp;#8217;ve seen a  deluge of Halloween related lists at &lt;A href="http://www.onmylist.com"&gt;OnMyList&lt;/A&gt;.  We&amp;#8217;re quickly becoming Halloween Headquarters.  I still haven&amp;#8217;t figured out what I am going to be this year.  Perhaps I will go as a giant list and make it a marketing event.&lt;/p&gt;


	&lt;p&gt;Here&amp;#8217;s a rundown of ghoulish lists:&lt;/p&gt;


&lt;p&gt;
&lt;A href="http://www.onmylist.com/category/food_drink/Eerie_Eats_For_Your_Halloween_Party_1"&gt;Eerie Eats for Your Halloween Party&lt;/A&gt;&lt;/P&gt;

&lt;p&gt;
&lt;A href="http://www.onmylist.com/category/home_garden/Things_You_Can_Do_With_Your_Halloween_Pumpkins_1"&gt;Things You Can Do With Your Halloween Pumpkin&lt;/A&gt;&lt;/P&gt;
&lt;p&gt;
&lt;A href="http://www.onmylist.com/category/fashion/Halloween_Costumes_For_Couples_1"&gt;Halloween Costumes for Couples&lt;/A&gt;&lt;/P&gt;
&lt;p&gt;
&lt;A href="http://www.onmylist.com/category/miscellaneous/My_favorite_Halloween_costumes_that_I_cant_affordDAMN_1"&gt;My Favorite Halloween Costumes That I Can&amp;#8217;t Afford&amp;#8230;DAMN!&lt;/A&gt;&lt;/P&gt;
&lt;p&gt;
&lt;A href="http://www.onmylist.com/category/miscellaneous/Cool_Halloween_Decorations_1"&gt;Cool Halloween Decorations&lt;/A&gt;&lt;/P&gt;
&lt;p&gt;
&lt;A href="http://www.onmylist.com/category/celebrity/Famous_Witchs_1"&gt;Famous Witches&lt;/A&gt;&lt;/P&gt;
&lt;p&gt;
&lt;A href="http://www.onmylist.com/category/fashion/13_Awesomely_creative_Halloween_costume_ideas_1"&gt;13 Awesomely Creative Halloween Costume Ideas&lt;/A&gt;&lt;/P&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=GhqWY1TR"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=GhqWY1TR" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=ny3CxozY"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=ny3CxozY" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=lwPIIh7i"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=lwPIIh7i" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=Z0aeKdY3"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=Z0aeKdY3" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=suNpSVi1"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=suNpSVi1" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=EzOKeRJw"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=EzOKeRJw" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content>
  <feedburner:origLink>http://blog.onmylist.com/articles/2007/10/10/it-must-be-halloween-time</feedburner:origLink></entry>
  <entry>
    <author>
      <name>Noah</name>
    </author>
    <id>urn:uuid:427933b2-fb6a-472e-ac65-eee96d6974e8</id>
    <published>2007-10-04T22:50:00-04:00</published>
    <updated>2007-10-04T23:04:49-04:00</updated>
    <title type="html">How to build a community according to Flickr</title>
    <link href="http://feeds.feedburner.com/~r/OnMyListBlog/~3/165512303/how-to-build-a-community-according-to-flickr" rel="alternate" type="text/html" />
    <category term="flickr" scheme="http://blog.onmylist.com/articles/tag/flickr" />
    <category term="community" scheme="http://blog.onmylist.com/articles/tag/community" />
    <category term="tips" scheme="http://blog.onmylist.com/articles/tag/tips" />
    <summary type="html">&lt;p&gt;I found this interesting article about how to build a community on Business Week.  In it, Heather Champ, Flickr community manager, gives 10 tips on how to foster a great passionate community.  I think we&amp;#8217;re getting some of them right and need work on others.  I especially like Champ&amp;#8217;s assertion that schwag is &amp;#8220;one of the core pillars of the Internet.&amp;#8221;&lt;/p&gt;


	&lt;p&gt;Any suggestions for us on what we can do better?&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://images.businessweek.com/ss/07/09/0914_flickr/index_01.htm"&gt;Read the article/slideshow here.&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;&lt;img src="http://farm2.static.flickr.com/1201/1487479866_b5ce826645.jpg?v=0"&gt;&lt;/p&gt;</summary>
    <content type="html">&lt;p&gt;I found this interesting article about how to build a community on Business Week.  In it, Heather Champ, Flickr community manager, gives 10 tips on how to foster a great passionate community.  I think we&amp;#8217;re getting some of them right and need work on others.  I especially like Champ&amp;#8217;s assertion that schwag is &amp;#8220;one of the core pillars of the Internet.&amp;#8221;&lt;/p&gt;


	&lt;p&gt;Any suggestions for us on what we can do better?&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://images.businessweek.com/ss/07/09/0914_flickr/index_01.htm"&gt;Read the article/slideshow here.&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;&lt;img src="http://farm2.static.flickr.com/1201/1487479866_b5ce826645.jpg?v=0"&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=Lq2A6loV"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=Lq2A6loV" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=jnRAx4wO"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=jnRAx4wO" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=H21gYInK"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=H21gYInK" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=l5dEt1fi"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=l5dEt1fi" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=cbVGHXZq"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=cbVGHXZq" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=KgezzJdv"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=KgezzJdv" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content>
  <feedburner:origLink>http://blog.onmylist.com/articles/2007/10/04/how-to-build-a-community-according-to-flickr</feedburner:origLink></entry>
  <entry>
    <author>
      <name>Andrew</name>
    </author>
    <id>urn:uuid:ab6384ae-bf0b-4939-98d8-0e54aed585f4</id>
    <published>2007-09-19T16:25:00-04:00</published>
    <updated>2007-09-19T16:57:18-04:00</updated>
    <title type="html">Facebook app invites with RoR</title>
    <link href="http://feeds.feedburner.com/~r/OnMyListBlog/~3/158702598/facebook-app-invites-with-ror" rel="alternate" type="text/html" />
    <category term="ruby-on-rails" scheme="http://blog.onmylist.com/articles/category/ruby-on-rails" label="Ruby on Rails" />
    <category term="facebook" scheme="http://blog.onmylist.com/articles/tag/facebook" />
    <category term="application" scheme="http://blog.onmylist.com/articles/tag/application" />
    <category term="rubyonrails" scheme="http://blog.onmylist.com/articles/tag/rubyonrails" />
    <category term="RoR" scheme="http://blog.onmylist.com/articles/tag/ror" />
    <summary type="html">&lt;p&gt;Ray and I spent quite a while to get everything in our Facebook app to work. There were some blog posts about how get invites to work but they are outdated (and they involve some nasty FQLs).&lt;/p&gt;


	&lt;p&gt;One thing that I did was to create a beta fb application to test all this stuff out with our beta server, this helps a lot.&lt;/p&gt;


	&lt;p&gt;So in case you&amp;#8217;re going crazy adding invites to your fb app, here&amp;#8217;s how we did it. Keep in mind that the fb platform changes rapidly so by the time you read this there is probably a better way to do invites.&lt;/p&gt;


	&lt;p&gt;In your canvas partial, add a link to http://apps.facebook.com/[yourappname]/invite&lt;/p&gt;


	&lt;p&gt;here&amp;#8217;s how our invite method looks like:&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;  &lt;span class="keyword"&gt;def &lt;/span&gt;&lt;span class="method"&gt;invite&lt;/span&gt;
    &lt;span class="attribute"&gt;@appname&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="constant"&gt;ENV&lt;/span&gt;&lt;span class="punct"&gt;['&lt;/span&gt;&lt;span class="string"&gt;RAILS_ENV&lt;/span&gt;&lt;span class="punct"&gt;']&lt;/span&gt; &lt;span class="punct"&gt;==&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;production&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt; &lt;span class="punct"&gt;?&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;onmylist&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt; &lt;span class="punct"&gt;:&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;onmylist_beta&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt;
    &lt;span class="attribute"&gt;@appid&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="constant"&gt;ENV&lt;/span&gt;&lt;span class="punct"&gt;['&lt;/span&gt;&lt;span class="string"&gt;RAILS_ENV&lt;/span&gt;&lt;span class="punct"&gt;']&lt;/span&gt; &lt;span class="punct"&gt;==&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;production&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt; &lt;span class="punct"&gt;?&lt;/span&gt; &lt;span class="number"&gt;12345678&lt;/span&gt; &lt;span class="punct"&gt;:&lt;/span&gt; &lt;span class="number"&gt;01234567&lt;/span&gt;

    &lt;span class="keyword"&gt;if&lt;/span&gt; &lt;span class="ident"&gt;fbsession&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;is_valid?&lt;/span&gt;
      &lt;span class="attribute"&gt;@friends2exclude&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="ident"&gt;fbsession&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;friends_getAppUsers&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;uid_list&lt;/span&gt;        
    &lt;span class="keyword"&gt;end&lt;/span&gt;

    &lt;span class="ident"&gt;render&lt;/span&gt; &lt;span class="symbol"&gt;:partial&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;select_fbml&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; 
  &lt;span class="keyword"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;note: app id&amp;#8217;s are not real! :)&lt;/p&gt;


	&lt;p&gt;Here&amp;#8217;s the select_fbml partial:&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_xml "&gt;&lt;span class="punct"&gt;&amp;lt;&lt;/span&gt;&lt;span class="namespace"&gt;fb&lt;/span&gt;&lt;span class="punct"&gt;:&lt;/span&gt;&lt;span class="tag"&gt;fbml&lt;/span&gt;&lt;span class="punct"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="punct"&gt;&amp;lt;&lt;/span&gt;&lt;span class="namespace"&gt;fb&lt;/span&gt;&lt;span class="punct"&gt;:&lt;/span&gt;&lt;span class="tag"&gt;subtitle&lt;/span&gt;&lt;span class="punct"&gt;&amp;gt;&lt;/span&gt;Invite your friends to join OnMyList&lt;span class="punct"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="namespace"&gt;fb&lt;/span&gt;&lt;span class="punct"&gt;:&lt;/span&gt;&lt;span class="tag"&gt;subtitle&lt;/span&gt;&lt;span class="punct"&gt;&amp;gt;&lt;/span&gt;

&lt;span class="punct"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag"&gt;div&lt;/span&gt; &lt;span class="attribute"&gt;style&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;background-color:#f2fbdc;padding-bottom:0;margin-bottom:0&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&amp;gt;&lt;/span&gt;

&lt;span class="punct"&gt;&amp;lt;%&lt;/span&gt; &lt;span class="attribute"&gt;join_button&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="attribute"&gt;CGI::escapeHTML&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;&amp;lt;fb:req-choice url='http://www.facebook.com/apps/application.php?id=#{@appid}' label='Join OnMyList'&amp;gt;&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; %&lt;span class="punct"&gt;&amp;gt;&lt;/span&gt;

&lt;span class="punct"&gt;&amp;lt;&lt;/span&gt;&lt;span class="namespace"&gt;fb&lt;/span&gt;&lt;span class="punct"&gt;:&lt;/span&gt;&lt;span class="tag"&gt;request-form&lt;/span&gt; 
&lt;span class="attribute"&gt;method&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;POST&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; 
&lt;span class="attribute"&gt;invite&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;true&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; 
&lt;span class="attribute"&gt;type&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;OnMyList&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; 
&lt;span class="attribute"&gt;action&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;http://apps.facebook.com/&amp;lt;%= @appname %&amp;gt;/&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;
&lt;span class="attribute"&gt;content&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;Let's join OnMyList so you can list your pants off! &amp;lt;%= join_button %&amp;gt;&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&amp;gt;&lt;/span&gt;

&lt;span class="punct"&gt;&amp;lt;&lt;/span&gt;&lt;span class="namespace"&gt;fb&lt;/span&gt;&lt;span class="punct"&gt;:&lt;/span&gt;&lt;span class="tag"&gt;multi-friend-selector&lt;/span&gt;
&lt;span class="attribute"&gt;rows&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;5&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;
&lt;span class="attribute"&gt;exclude_ids&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;&amp;lt;%= @friends2exclude.join(',') %&amp;gt;&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;
&lt;span class="attribute"&gt;showborder&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;false&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; 
&lt;span class="attribute"&gt;actiontext&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;Here are your friends who don't have OnMyList. Invite them now!&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&amp;gt;&lt;/span&gt;
&lt;span class="punct"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="namespace"&gt;fb&lt;/span&gt;&lt;span class="punct"&gt;:&lt;/span&gt;&lt;span class="tag"&gt;request-form&lt;/span&gt;&lt;span class="punct"&gt;&amp;gt;&lt;/span&gt;

&lt;span class="punct"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag"&gt;div&lt;/span&gt;&lt;span class="punct"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="punct"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="namespace"&gt;fb&lt;/span&gt;&lt;span class="punct"&gt;:&lt;/span&gt;&lt;span class="tag"&gt;fbml&lt;/span&gt;&lt;span class="punct"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;the exclude_ids param is to exclude your friends who already have the app installed.&lt;/p&gt;</summary>
    <content type="html">&lt;p&gt;Ray and I spent quite a while to get everything in our Facebook app to work. There were some blog posts about how get invites to work but they are outdated (and they involve some nasty FQLs).&lt;/p&gt;


	&lt;p&gt;One thing that I did was to create a beta fb application to test all this stuff out with our beta server, this helps a lot.&lt;/p&gt;


	&lt;p&gt;So in case you&amp;#8217;re going crazy adding invites to your fb app, here&amp;#8217;s how we did it. Keep in mind that the fb platform changes rapidly so by the time you read this there is probably a better way to do invites.&lt;/p&gt;


	&lt;p&gt;In your canvas partial, add a link to http://apps.facebook.com/[yourappname]/invite&lt;/p&gt;


	&lt;p&gt;here&amp;#8217;s how our invite method looks like:&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;  &lt;span class="keyword"&gt;def &lt;/span&gt;&lt;span class="method"&gt;invite&lt;/span&gt;
    &lt;span class="attribute"&gt;@appname&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="constant"&gt;ENV&lt;/span&gt;&lt;span class="punct"&gt;['&lt;/span&gt;&lt;span class="string"&gt;RAILS_ENV&lt;/span&gt;&lt;span class="punct"&gt;']&lt;/span&gt; &lt;span class="punct"&gt;==&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;production&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt; &lt;span class="punct"&gt;?&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;onmylist&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt; &lt;span class="punct"&gt;:&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;onmylist_beta&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt;
    &lt;span class="attribute"&gt;@appid&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="constant"&gt;ENV&lt;/span&gt;&lt;span class="punct"&gt;['&lt;/span&gt;&lt;span class="string"&gt;RAILS_ENV&lt;/span&gt;&lt;span class="punct"&gt;']&lt;/span&gt; &lt;span class="punct"&gt;==&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;production&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt; &lt;span class="punct"&gt;?&lt;/span&gt; &lt;span class="number"&gt;12345678&lt;/span&gt; &lt;span class="punct"&gt;:&lt;/span&gt; &lt;span class="number"&gt;01234567&lt;/span&gt;

    &lt;span class="keyword"&gt;if&lt;/span&gt; &lt;span class="ident"&gt;fbsession&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;is_valid?&lt;/span&gt;
      &lt;span class="attribute"&gt;@friends2exclude&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="ident"&gt;fbsession&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;friends_getAppUsers&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;uid_list&lt;/span&gt;        
    &lt;span class="keyword"&gt;end&lt;/span&gt;

    &lt;span class="ident"&gt;render&lt;/span&gt; &lt;span class="symbol"&gt;:partial&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;select_fbml&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; 
  &lt;span class="keyword"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;note: app id&amp;#8217;s are not real! :)&lt;/p&gt;


	&lt;p&gt;Here&amp;#8217;s the select_fbml partial:&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_xml "&gt;&lt;span class="punct"&gt;&amp;lt;&lt;/span&gt;&lt;span class="namespace"&gt;fb&lt;/span&gt;&lt;span class="punct"&gt;:&lt;/span&gt;&lt;span class="tag"&gt;fbml&lt;/span&gt;&lt;span class="punct"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="punct"&gt;&amp;lt;&lt;/span&gt;&lt;span class="namespace"&gt;fb&lt;/span&gt;&lt;span class="punct"&gt;:&lt;/span&gt;&lt;span class="tag"&gt;subtitle&lt;/span&gt;&lt;span class="punct"&gt;&amp;gt;&lt;/span&gt;Invite your friends to join OnMyList&lt;span class="punct"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="namespace"&gt;fb&lt;/span&gt;&lt;span class="punct"&gt;:&lt;/span&gt;&lt;span class="tag"&gt;subtitle&lt;/span&gt;&lt;span class="punct"&gt;&amp;gt;&lt;/span&gt;

&lt;span class="punct"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag"&gt;div&lt;/span&gt; &lt;span class="attribute"&gt;style&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;background-color:#f2fbdc;padding-bottom:0;margin-bottom:0&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&amp;gt;&lt;/span&gt;

&lt;span class="punct"&gt;&amp;lt;%&lt;/span&gt; &lt;span class="attribute"&gt;join_button&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="attribute"&gt;CGI::escapeHTML&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;&amp;lt;fb:req-choice url='http://www.facebook.com/apps/application.php?id=#{@appid}' label='Join OnMyList'&amp;gt;&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; %&lt;span class="punct"&gt;&amp;gt;&lt;/span&gt;

&lt;span class="punct"&gt;&amp;lt;&lt;/span&gt;&lt;span class="namespace"&gt;fb&lt;/span&gt;&lt;span class="punct"&gt;:&lt;/span&gt;&lt;span class="tag"&gt;request-form&lt;/span&gt; 
&lt;span class="attribute"&gt;method&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;POST&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; 
&lt;span class="attribute"&gt;invite&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;true&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; 
&lt;span class="attribute"&gt;type&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;OnMyList&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; 
&lt;span class="attribute"&gt;action&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;http://apps.facebook.com/&amp;lt;%= @appname %&amp;gt;/&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;
&lt;span class="attribute"&gt;content&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;Let's join OnMyList so you can list your pants off! &amp;lt;%= join_button %&amp;gt;&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&amp;gt;&lt;/span&gt;

&lt;span class="punct"&gt;&amp;lt;&lt;/span&gt;&lt;span class="namespace"&gt;fb&lt;/span&gt;&lt;span class="punct"&gt;:&lt;/span&gt;&lt;span class="tag"&gt;multi-friend-selector&lt;/span&gt;
&lt;span class="attribute"&gt;rows&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;5&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;
&lt;span class="attribute"&gt;exclude_ids&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;&amp;lt;%= @friends2exclude.join(',') %&amp;gt;&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;
&lt;span class="attribute"&gt;showborder&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;false&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; 
&lt;span class="attribute"&gt;actiontext&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;Here are your friends who don't have OnMyList. Invite them now!&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&amp;gt;&lt;/span&gt;
&lt;span class="punct"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="namespace"&gt;fb&lt;/span&gt;&lt;span class="punct"&gt;:&lt;/span&gt;&lt;span class="tag"&gt;request-form&lt;/span&gt;&lt;span class="punct"&gt;&amp;gt;&lt;/span&gt;

&lt;span class="punct"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag"&gt;div&lt;/span&gt;&lt;span class="punct"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="punct"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="namespace"&gt;fb&lt;/span&gt;&lt;span class="punct"&gt;:&lt;/span&gt;&lt;span class="tag"&gt;fbml&lt;/span&gt;&lt;span class="punct"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;the exclude_ids param is to exclude your friends who already have the app installed.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=GwgpYB68"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=GwgpYB68" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=tBzEY3nZ"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=tBzEY3nZ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=OBXg3nFr"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=OBXg3nFr" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=ux7ePYyK"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=ux7ePYyK" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=dEPBCcgv"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=dEPBCcgv" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=MPQC9mEC"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=MPQC9mEC" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content>
  <feedburner:origLink>http://blog.onmylist.com/articles/2007/09/19/facebook-app-invites-with-ror</feedburner:origLink></entry>
  <entry>
    <author>
      <name>Noah</name>
    </author>
    <id>urn:uuid:7f91ee73-dad2-4bd9-918c-f066c11c2b54</id>
    <published>2007-09-18T19:38:00-04:00</published>
    <updated>2007-09-19T14:20:26-04:00</updated>
    <title type="html">9 out of 10 Ritual Coffee Customers prefer Apple</title>
    <link href="http://feeds.feedburner.com/~r/OnMyListBlog/~3/158307174/9-out-of-10-ritual-coffee-customers-prefer-apple" rel="alternate" type="text/html" />
    <category term="oml-news" scheme="http://blog.onmylist.com/articles/category/oml-news" label="OML News" />
    <category term="apple" scheme="http://blog.onmylist.com/articles/tag/apple" />
    <category term="ritual" scheme="http://blog.onmylist.com/articles/tag/ritual" />
    <category term="coffee" scheme="http://blog.onmylist.com/articles/tag/coffee" />
    <category term="design" scheme="http://blog.onmylist.com/articles/tag/design" />
    <category term="startup" scheme="http://blog.onmylist.com/articles/tag/startup" />
    <category term="makeshift" scheme="http://blog.onmylist.com/articles/tag/makeshift" />
    <category term="offices" scheme="http://blog.onmylist.com/articles/tag/offices" />
    <summary type="html">&lt;p&gt;Today &lt;a href="http://blog.andrewng.com/"&gt;Andrew&lt;/a&gt;, &lt;a href="http://www.shearshear.com"&gt;Margaret&lt;/a&gt; and &lt;a href="http://www.onmylist.com/members/noah"&gt;I&lt;/a&gt; were all working from &lt;a href="ttp://ritualroasters.com/"&gt;Ritual Coffee&lt;/a&gt; in the Mission.  &lt;span class="caps"&gt;AS I&lt;/span&gt; walked in I looked on at the army of hopped up people working diligently on their computers.  Staring back at me was a sea of glowing half eaten Apples.  In fact I later did a little count.  Of the 27 laptops in Ritual, 24 of them were macs.  Pretty impressive!  I wonder what the common thread is at Ritual?&lt;/p&gt;


	&lt;p&gt;Here&amp;#8217;s Margaret designing the new OnMyList.&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://www.flickr.com/photos/ayn/1403397503/" title="My PB, Margaret and her 17 MBP, Noah's PB (by AndrewNg.com)"&gt;&lt;img src="http://static.flickr.com/1369/1403397503_be57eed410.jpg" title="My PB, Margaret and her 17 MBP, Noah's PB (by AndrewNg.com)" alt="My PB, Margaret and her 17 MBP, Noah's PB (by AndrewNg.com)" width="500" height="333" /&gt;&lt;/a&gt;&lt;/p&gt;</summary>
    <content type="html">&lt;p&gt;Today &lt;a href="http://blog.andrewng.com/"&gt;Andrew&lt;/a&gt;, &lt;a href="http://www.shearshear.com"&gt;Margaret&lt;/a&gt; and &lt;a href="http://www.onmylist.com/members/noah"&gt;I&lt;/a&gt; were all working from &lt;a href="ttp://ritualroasters.com/"&gt;Ritual Coffee&lt;/a&gt; in the Mission.  &lt;span class="caps"&gt;AS I&lt;/span&gt; walked in I looked on at the army of hopped up people working diligently on their computers.  Staring back at me was a sea of glowing half eaten Apples.  In fact I later did a little count.  Of the 27 laptops in Ritual, 24 of them were macs.  Pretty impressive!  I wonder what the common thread is at Ritual?&lt;/p&gt;


	&lt;p&gt;Here&amp;#8217;s Margaret designing the new OnMyList.&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://www.flickr.com/photos/ayn/1403397503/" title="My PB, Margaret and her 17 MBP, Noah's PB (by AndrewNg.com)"&gt;&lt;img src="http://static.flickr.com/1369/1403397503_be57eed410.jpg" title="My PB, Margaret and her 17 MBP, Noah's PB (by AndrewNg.com)" alt="My PB, Margaret and her 17 MBP, Noah's PB (by AndrewNg.com)" width="500" height="333" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=0dzeuXJz"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=0dzeuXJz" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=MWI2JC6i"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=MWI2JC6i" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=98Rf8yyo"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=98Rf8yyo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=cBAAeVms"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=cBAAeVms" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=QiH9YaK8"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=QiH9YaK8" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=vljAcZRT"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=vljAcZRT" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content>
  <feedburner:origLink>http://blog.onmylist.com/articles/2007/09/18/9-out-of-10-ritual-coffee-customers-prefer-apple</feedburner:origLink></entry>
  <entry>
    <author>
      <name>Noah</name>
    </author>
    <id>urn:uuid:b8ebfcc8-f906-4516-ac94-c3a2d3ff3057</id>
    <published>2007-09-16T21:49:00-04:00</published>
    <updated>2007-09-16T21:58:14-04:00</updated>
    <title type="html">Stats Watching</title>
    <link href="http://feeds.feedburner.com/~r/OnMyListBlog/~3/157405652/stats-watching" rel="alternate" type="text/html" />
    <category term="oml-news" scheme="http://blog.onmylist.com/articles/category/oml-news" label="OML News" />
    <category term="baseball" scheme="http://blog.onmylist.com/articles/tag/baseball" />
    <category term="stumbleupon" scheme="http://blog.onmylist.com/articles/tag/stumbleupon" />
    <category term="onmylist" scheme="http://blog.onmylist.com/articles/tag/onmylist" />
    <category term="traffic" scheme="http://blog.onmylist.com/articles/tag/traffic" />
    <category term="stats" scheme="http://blog.onmylist.com/articles/tag/stats" />
    <summary type="html">&lt;p&gt;I guess its kind of like scoreboard watching down the stretch in baseball.  Waiting to see what other teams in your division are doing.  Jockeying for wildcard or division position.  Except in the startup version your obsessively watching your own traffic statistics.  The commonality being that you should probably be more worried about winning your game and less worried about watching scores.  I must have checked our Google stats 50 times today.  We&amp;#8217;re getting huge traffic from &lt;a href="http://www.stumbleupon.com/"&gt;Stumbleupon&lt;/a&gt; which isn&amp;#8217;t so surprising.  The &lt;a href="http://www.onmylist.com/"&gt;OnMyList&lt;/a&gt; concept is meant to be viral and search/stumble friendly.  It has been so far.  It&amp;#8217;s always fascinating to watch the traffic roll in though.  All those potential listers out there just waiting to be found.  There&amp;#8217;s gold in them hills!!!&lt;/p&gt;


	&lt;p&gt;Back to work.  Won&amp;#8217;t check stats for at least another 20 minutes.&lt;/p&gt;</summary>
    <content type="html">&lt;p&gt;I guess its kind of like scoreboard watching down the stretch in baseball.  Waiting to see what other teams in your division are doing.  Jockeying for wildcard or division position.  Except in the startup version your obsessively watching your own traffic statistics.  The commonality being that you should probably be more worried about winning your game and less worried about watching scores.  I must have checked our Google stats 50 times today.  We&amp;#8217;re getting huge traffic from &lt;a href="http://www.stumbleupon.com/"&gt;Stumbleupon&lt;/a&gt; which isn&amp;#8217;t so surprising.  The &lt;a href="http://www.onmylist.com/"&gt;OnMyList&lt;/a&gt; concept is meant to be viral and search/stumble friendly.  It has been so far.  It&amp;#8217;s always fascinating to watch the traffic roll in though.  All those potential listers out there just waiting to be found.  There&amp;#8217;s gold in them hills!!!&lt;/p&gt;


	&lt;p&gt;Back to work.  Won&amp;#8217;t check stats for at least another 20 minutes.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=TcDfTMwl"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=TcDfTMwl" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=tAsCHZ3D"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=tAsCHZ3D" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=jvyZr8pj"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=jvyZr8pj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=I8g4dZih"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=I8g4dZih" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=UeN3MxHC"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=UeN3MxHC" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=cWEUUcO1"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=cWEUUcO1" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content>
  <feedburner:origLink>http://blog.onmylist.com/articles/2007/09/16/stats-watching</feedburner:origLink></entry>
  <entry>
    <author>
      <name>Noah</name>
    </author>
    <id>urn:uuid:019d2211-131e-4108-943a-fcd1131a1a77</id>
    <published>2007-09-11T16:16:00-04:00</published>
    <updated>2007-09-11T16:16:50-04:00</updated>
    <title type="html">Funny email received in response to our newsletter</title>
    <link href="http://feeds.feedburner.com/~r/OnMyListBlog/~3/155182110/funny-email-received-in-response-to-our-newsletter" rel="alternate" type="text/html" />
    <category term="oml-news" scheme="http://blog.onmylist.com/articles/category/oml-news" label="OML News" />
    <summary type="html">&lt;p&gt;Top Ten List of Things Your Email Was&lt;/p&gt;


	&lt;p&gt;Irreverent
Politically Incorrect
Inflammatory
Shameless
Self-Promoting
Debasing towards Certain Groups
Stereotype Confirming
Widget Flaunting
Facebook Pandering
&lt;span class="caps"&gt;FRIKKIN FUNNY AS HELL&lt;/span&gt; ahahahahaa&lt;/p&gt;


	&lt;p&gt;horns up
\m/
but you shoulda linked to the Facebook appy!&lt;/p&gt;</summary>
    <content type="html">&lt;p&gt;Top Ten List of Things Your Email Was&lt;/p&gt;


	&lt;p&gt;Irreverent
Politically Incorrect
Inflammatory
Shameless
Self-Promoting
Debasing towards Certain Groups
Stereotype Confirming
Widget Flaunting
Facebook Pandering
&lt;span class="caps"&gt;FRIKKIN FUNNY AS HELL&lt;/span&gt; ahahahahaa&lt;/p&gt;


	&lt;p&gt;horns up
\m/
but you shoulda linked to the Facebook appy!&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=qHEIkvFK"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=qHEIkvFK" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=6XUJGz1b"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=6XUJGz1b" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=gnLPYfbp"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=gnLPYfbp" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=FCbuNZgu"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=FCbuNZgu" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=zjGx5X8J"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=zjGx5X8J" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=q78WECnW"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=q78WECnW" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content>
  <feedburner:origLink>http://blog.onmylist.com/articles/2007/09/11/funny-email-received-in-response-to-our-newsletter</feedburner:origLink></entry>
  <entry>
    <author>
      <name>Ray</name>
    </author>
    <id>urn:uuid:20336811-bb12-451e-ae1c-c68dce0b7450</id>
    <published>2007-08-29T14:24:00-04:00</published>
    <updated>2007-08-29T14:31:31-04:00</updated>
    <title type="html">OML has moved to EC2 and there is a new web widget</title>
    <link href="http://feeds.feedburner.com/~r/OnMyListBlog/~3/149758617/oml-has-moved-to-ec2-and-there-is-a-new-web-widget" rel="alternate" type="text/html" />
    <category term="oml-news" scheme="http://blog.onmylist.com/articles/category/oml-news" label="OML News" />
    <category term="ec2" scheme="http://blog.onmylist.com/articles/tag/ec2" />
    <category term="widget" scheme="http://blog.onmylist.com/articles/tag/widget" />
    <summary type="html">&lt;p&gt;We moved over to Amazon &lt;span class="caps"&gt;EC2&lt;/span&gt; last night, went very smoothly and also deployed a new web widget that you can show off at your own website.&lt;/p&gt;


	&lt;p&gt;OnMyList being on &lt;span class="caps"&gt;EC2&lt;/span&gt; helps us scale better and provide better performance.  You will notice the site loads substantially faster.&lt;/p&gt;


	&lt;p&gt;You can follow these &lt;a href="http://blog.rayvinly.com/articles/2007/08/29/onmylist-web-widget"&gt;instructions&lt;/a&gt; to create your own web widget to put it on your website&lt;/p&gt;</summary>
    <content type="html">&lt;p&gt;We moved over to Amazon &lt;span class="caps"&gt;EC2&lt;/span&gt; last night, went very smoothly and also deployed a new web widget that you can show off at your own website.&lt;/p&gt;


	&lt;p&gt;OnMyList being on &lt;span class="caps"&gt;EC2&lt;/span&gt; helps us scale better and provide better performance.  You will notice the site loads substantially faster.&lt;/p&gt;


	&lt;p&gt;You can follow these &lt;a href="http://blog.rayvinly.com/articles/2007/08/29/onmylist-web-widget"&gt;instructions&lt;/a&gt; to create your own web widget to put it on your website&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=Kp2FU4ob"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=Kp2FU4ob" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=kJnAYx1C"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=kJnAYx1C" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=SxLntXXa"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=SxLntXXa" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=btheIHjO"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=btheIHjO" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=T7jCUXQl"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=T7jCUXQl" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=BzLsPDZc"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=BzLsPDZc" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content>
  <feedburner:origLink>http://blog.onmylist.com/articles/2007/08/29/oml-has-moved-to-ec2-and-there-is-a-new-web-widget</feedburner:origLink></entry>
  <entry>
    <author>
      <name>Andrew</name>
    </author>
    <id>urn:uuid:86c1759e-dbc8-4557-937d-a01fdca127c5</id>
    <published>2007-08-27T17:40:00-04:00</published>
    <updated>2007-08-27T17:43:28-04:00</updated>
    <title type="html">Expected downtime Tuesday 8/28 8:30-10:30pm PDT</title>
    <link href="http://feeds.feedburner.com/~r/OnMyListBlog/~3/148957096/expected-downtime-tuesday-8-28-8-30-10-30pm-pdt" rel="alternate" type="text/html" />
    <category term="oml-news" scheme="http://blog.onmylist.com/articles/category/oml-news" label="OML News" />
    <category term="downtime" scheme="http://blog.onmylist.com/articles/tag/downtime" />
    <summary type="html">&lt;p&gt;We are going to bring down our site for upgrades and to move to Amazon &lt;span class="caps"&gt;EC2&lt;/span&gt; tomorrow 8/28 from 8:30 to 10:30 pm California time. If it all goes smoothly we might be back before 10:30&amp;#8230; :)&lt;/p&gt;</summary>
    <content type="html">&lt;p&gt;We are going to bring down our site for upgrades and to move to Amazon &lt;span class="caps"&gt;EC2&lt;/span&gt; tomorrow 8/28 from 8:30 to 10:30 pm California time. If it all goes smoothly we might be back before 10:30&amp;#8230; :)&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=Vjn6WSXI"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=Vjn6WSXI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=OmCaDmPV"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=OmCaDmPV" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=uQxCGh0Q"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=uQxCGh0Q" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=40XCgMdJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=40XCgMdJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=SHHIotQc"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=SHHIotQc" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=TlDGsEmn"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=TlDGsEmn" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content>
  <feedburner:origLink>http://blog.onmylist.com/articles/2007/08/27/expected-downtime-tuesday-8-28-8-30-10-30pm-pdt</feedburner:origLink></entry>
  <entry>
    <author>
      <name>Noah</name>
    </author>
    <id>urn:uuid:6e76df97-0a91-41a1-b879-ee402b20db45</id>
    <published>2007-07-25T19:54:00-04:00</published>
    <updated>2007-07-25T20:12:41-04:00</updated>
    <title type="html">Community Guru</title>
    <link href="http://feeds.feedburner.com/~r/OnMyListBlog/~3/137407966/community-guru" rel="alternate" type="text/html" />
    <category term="jobs" scheme="http://blog.onmylist.com/articles/tag/jobs" />
    <category term="community" scheme="http://blog.onmylist.com/articles/tag/community" />
    <category term="seth" scheme="http://blog.onmylist.com/articles/tag/seth" />
    <category term="godin" scheme="http://blog.onmylist.com/articles/tag/godin" />
    <summary type="html">&lt;p&gt;So you want to be a community guru huh?  Well you&amp;#8217;ve come to the right place.  OnMyList is a burgeoning community that is spreading quickly for such a brand spanking new website.  We just launched a little over a month ago and have already had over 100,000 unique visitors.  We combine elements of blogging with elements of community.  Throw in a dash of Digg, like the user voting element, and you have OnMyList.&lt;/p&gt;


	&lt;p&gt;Driving traffic is &lt;span class="caps"&gt;NOT&lt;/span&gt; building community.  So one of the most important positions at OnMyList is the Community Relations Advocate.  When you get the job, you can come up with a more snazzy title as your first order of business.&lt;/p&gt;


	&lt;p&gt;You&amp;#8217;ll be responsible for all communications with existing members of OnMyList.  It will be your responsibility to increase all usage numbers and to create high levels of satisfaction among users.  You will also be expected to make the case for new developments that increase our chances of the above happening.  You will have to work across almost every group in the company to make these things happen.&lt;/p&gt;


	&lt;p&gt;Qualifications:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;Must be a very active member of at least 1, but preferably more, existing communities.&lt;/li&gt;
		&lt;li&gt;Must have exemplary written and verbal skills.&lt;/li&gt;
		&lt;li&gt;At least 5 years of solid work experience preferably in online space. &lt;/li&gt;
		&lt;li&gt;Good grasp of online marketing techniques is required.&lt;/li&gt;
		&lt;li&gt;Some technical fluency.&lt;/li&gt;
		&lt;li&gt;Must be a cool person to work with.&lt;/li&gt;
		&lt;li&gt;Absolutely must understand and commit to all of the things that come with a startup (creating processes, rolling sleeves up, working late/weekends, having fun) &lt;/li&gt;
		&lt;li&gt;College degree is essential&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;This position is in San Francisco, CA.&lt;/p&gt;


	&lt;p&gt;This position comes with equity and responsibility.  Salary and health insurance will also be provided.&lt;/p&gt;


	&lt;p&gt;We are committed to being a very fun place to work and socially responsible company.  Giving back will be a key piece of who we are.&lt;/p&gt;


	&lt;p&gt;Please submit resume and an informal email introducing yourself to:&lt;/p&gt;


	&lt;p&gt;jobs@onmylist.com&lt;/p&gt;</summary>
    <content type="html">&lt;p&gt;So you want to be a community guru huh?  Well you&amp;#8217;ve come to the right place.  OnMyList is a burgeoning community that is spreading quickly for such a brand spanking new website.  We just launched a little over a month ago and have already had over 100,000 unique visitors.  We combine elements of blogging with elements of community.  Throw in a dash of Digg, like the user voting element, and you have OnMyList.&lt;/p&gt;


	&lt;p&gt;Driving traffic is &lt;span class="caps"&gt;NOT&lt;/span&gt; building community.  So one of the most important positions at OnMyList is the Community Relations Advocate.  When you get the job, you can come up with a more snazzy title as your first order of business.&lt;/p&gt;


	&lt;p&gt;You&amp;#8217;ll be responsible for all communications with existing members of OnMyList.  It will be your responsibility to increase all usage numbers and to create high levels of satisfaction among users.  You will also be expected to make the case for new developments that increase our chances of the above happening.  You will have to work across almost every group in the company to make these things happen.&lt;/p&gt;


	&lt;p&gt;Qualifications:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;Must be a very active member of at least 1, but preferably more, existing communities.&lt;/li&gt;
		&lt;li&gt;Must have exemplary written and verbal skills.&lt;/li&gt;
		&lt;li&gt;At least 5 years of solid work experience preferably in online space. &lt;/li&gt;
		&lt;li&gt;Good grasp of online marketing techniques is required.&lt;/li&gt;
		&lt;li&gt;Some technical fluency.&lt;/li&gt;
		&lt;li&gt;Must be a cool person to work with.&lt;/li&gt;
		&lt;li&gt;Absolutely must understand and commit to all of the things that come with a startup (creating processes, rolling sleeves up, working late/weekends, having fun) &lt;/li&gt;
		&lt;li&gt;College degree is essential&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;This position is in San Francisco, CA.&lt;/p&gt;


	&lt;p&gt;This position comes with equity and responsibility.  Salary and health insurance will also be provided.&lt;/p&gt;


	&lt;p&gt;We are committed to being a very fun place to work and socially responsible company.  Giving back will be a key piece of who we are.&lt;/p&gt;


	&lt;p&gt;Please submit resume and an informal email introducing yourself to:&lt;/p&gt;


	&lt;p&gt;jobs@onmylist.com&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=UBBGA7ay"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=UBBGA7ay" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=p39TS0jc"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=p39TS0jc" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=6E8BNxrL"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=6E8BNxrL" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=EhrscLE6"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=EhrscLE6" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=7hvwd6Sf"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=7hvwd6Sf" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=VYhVmGo3"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=VYhVmGo3" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content>
  <feedburner:origLink>http://blog.onmylist.com/articles/2007/07/25/community-guru</feedburner:origLink></entry>
  <entry>
    <author>
      <name>Andrew</name>
    </author>
    <id>urn:uuid:eb0a2d1a-d2ee-4250-a4b8-d4af8847de1a</id>
    <published>2007-07-09T19:07:00-04:00</published>
    <updated>2007-07-09T19:22:25-04:00</updated>
    <title type="html">We're getting better</title>
    <link href="http://feeds.feedburner.com/~r/OnMyListBlog/~3/132104715/were-getting-better" rel="alternate" type="text/html" />
    <category term="oml-news" scheme="http://blog.onmylist.com/articles/category/oml-news" label="OML News" />
    <category term="onmylist" scheme="http://blog.onmylist.com/articles/tag/onmylist" />
    <category term="features" scheme="http://blog.onmylist.com/articles/tag/features" />
    <category term="updates" scheme="http://blog.onmylist.com/articles/tag/updates" />
    <summary type="html">&lt;p&gt;We have just posted a bunch of new features&amp;#8230;&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;stats bar
&lt;img src="http://farm2.static.flickr.com/1127/764774024_283ff328bb.jpg" alt="" /&gt;&lt;/li&gt;
		&lt;li&gt;new list create/edit page design&lt;/li&gt;
		&lt;li&gt;ability to change passwords (instead of just resetting them)&lt;/li&gt;
		&lt;li&gt;now you can login with either email or username&lt;/li&gt;
		&lt;li&gt;new categories (politics, family, &amp;#38; shopping)&lt;/li&gt;
		&lt;li&gt;you can post your lists to Facebook by clicking the little &lt;img src="http://www.onmylist.com/images/facebook.gif" alt="" /&gt; icon &lt;/li&gt;
		&lt;li&gt;you can delete comments on your own lists&lt;/li&gt;
		&lt;li&gt;&lt;span class="caps"&gt;RSS&lt;/span&gt; feeds for users and latest updates&lt;/li&gt;
	&lt;/ul&gt;</summary>
    <content type="html">&lt;p&gt;We have just posted a bunch of new features&amp;#8230;&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;stats bar
&lt;img src="http://farm2.static.flickr.com/1127/764774024_283ff328bb.jpg" alt="" /&gt;&lt;/li&gt;
		&lt;li&gt;new list create/edit page design&lt;/li&gt;
		&lt;li&gt;ability to change passwords (instead of just resetting them)&lt;/li&gt;
		&lt;li&gt;now you can login with either email or username&lt;/li&gt;
		&lt;li&gt;new categories (politics, family, &amp;#38; shopping)&lt;/li&gt;
		&lt;li&gt;you can post your lists to Facebook by clicking the little &lt;img src="http://www.onmylist.com/images/facebook.gif" alt="" /&gt; icon &lt;/li&gt;
		&lt;li&gt;you can delete comments on your own lists&lt;/li&gt;
		&lt;li&gt;&lt;span class="caps"&gt;RSS&lt;/span&gt; feeds for users and latest updates&lt;/li&gt;
	&lt;/ul&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=aJWAEEeS"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=aJWAEEeS" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=ruunGnuO"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=ruunGnuO" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=Xz7ZrBAd"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=Xz7ZrBAd" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=25Ui1QYX"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=25Ui1QYX" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=OiFS3QPc"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=OiFS3QPc" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=hhYM41IZ"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=hhYM41IZ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content>
  <feedburner:origLink>http://blog.onmylist.com/articles/2007/07/09/were-getting-better</feedburner:origLink></entry>
  <entry>
    <author>
      <name>Noah</name>
    </author>
    <id>urn:uuid:ab5b10cf-aaa2-4d84-8045-1c80cc601500</id>
    <published>2007-07-01T17:50:00-04:00</published>
    <updated>2007-07-01T18:04:47-04:00</updated>
    <title type="html">Slave to the iPhone hype</title>
    <link href="http://feeds.feedburner.com/~r/OnMyListBlog/~3/129567533/slave-to-the-iphone-hype" rel="alternate" type="text/html" />
    <category term="oml-news" scheme="http://blog.onmylist.com/articles/category/oml-news" label="OML News" />
    <category term="iPhone" scheme="http://blog.onmylist.com/articles/tag/iphone" />
    <category term="contest" scheme="http://blog.onmylist.com/articles/tag/contest" />
    <category term="giveaway" scheme="http://blog.onmylist.com/articles/tag/giveaway" />
    <category term="apple" scheme="http://blog.onmylist.com/articles/tag/apple" />
    <category term="lists" scheme="http://blog.onmylist.com/articles/tag/lists" />
    <category term="phones" scheme="http://blog.onmylist.com/articles/tag/phones" />
    <category term="ipod" scheme="http://blog.onmylist.com/articles/tag/ipod" />
    <summary type="html">&lt;p&gt;get busy pimping your best lists!  we&amp;#8217;re going to give an 8GB iPhone to the person with the most popular list between today and midnight of July 14.  you are only counted once per day so don&amp;#8217;t bother repeatedly clicking on your own list.  however, you can get 14 easy views by doing it once per day between now and the 14th.&lt;/p&gt;

&lt;p&gt;see the skinny here: 
&lt;a href="http://www.onmylist.com/category/tech/OnMyList_is_giving_away_an_iPhone_1"&gt;OnMyList is giving away an iPhone&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img src="http://farm2.static.flickr.com/1065/667479420_94186a7cbf.jpg?v=0"alt=""/&gt;&lt;/p&gt;</summary>
    <content type="html">&lt;p&gt;get busy pimping your best lists!  we&amp;#8217;re going to give an 8GB iPhone to the person with the most popular list between today and midnight of July 14.  you are only counted once per day so don&amp;#8217;t bother repeatedly clicking on your own list.  however, you can get 14 easy views by doing it once per day between now and the 14th.&lt;/p&gt;

&lt;p&gt;see the skinny here: 
&lt;a href="http://www.onmylist.com/category/tech/OnMyList_is_giving_away_an_iPhone_1"&gt;OnMyList is giving away an iPhone&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img src="http://farm2.static.flickr.com/1065/667479420_94186a7cbf.jpg?v=0"alt=""/&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=q9uCHDkQ"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=q9uCHDkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=Ex27RVKC"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=Ex27RVKC" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=pwUyTz7F"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=pwUyTz7F" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=VBKXUvwM"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=VBKXUvwM" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=smCzN3o2"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=smCzN3o2" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=hP80fxw3"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=hP80fxw3" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content>
  <feedburner:origLink>http://blog.onmylist.com/articles/2007/07/01/slave-to-the-iphone-hype</feedburner:origLink></entry>
  <entry>
    <author>
      <name>Andrew</name>
    </author>
    <id>urn:uuid:af20293b-0bf3-49ef-8c6b-77306b3170d3</id>
    <published>2007-06-15T00:12:00-04:00</published>
    <updated>2007-06-15T00:36:50-04:00</updated>
    <title type="html">memcached and cache_fu</title>
    <link href="http://feeds.feedburner.com/~r/OnMyListBlog/~3/124985107/memcached-and-cache_fu" rel="alternate" type="text/html" />
    <category term="ruby-on-rails" scheme="http://blog.onmylist.com/articles/category/ruby-on-rails" label="Ruby on Rails" />
    <category term="cache_fu" scheme="http://blog.onmylist.com/articles/tag/cache_fu" />
    <category term="MemCached" scheme="http://blog.onmylist.com/articles/tag/memcached" />
    <category term="CachedModel" scheme="http://blog.onmylist.com/articles/tag/cachedmodel" />
    <category term="rails" scheme="http://blog.onmylist.com/articles/tag/rails" />
    <category term="rubyonrails" scheme="http://blog.onmylist.com/articles/tag/rubyonrails" />
    <category term="performance" scheme="http://blog.onmylist.com/articles/tag/performance" />
    <category term="cache" scheme="http://blog.onmylist.com/articles/tag/cache" />
    <category term="caching" scheme="http://blog.onmylist.com/articles/tag/caching" />
    <summary type="html">&lt;p&gt;After going live for about a week it became obvious that we should implement caching to help performance. I experimented with Rails&amp;#8217; page caching, but in Rails 1.2 the &lt;i&gt;expire_cache&lt;/i&gt; helper does not deal with custom routes very well. Also, our pages have view counts, ratings, etc, that change way too often for us to be able to cache the entire page.&lt;/p&gt;


	&lt;p&gt;The next thing I looked at was caching the MySQL queries, this seemed easier than implementing fragment caching, coz I found a &lt;a href="http://nubyonrails.com/articles/2006/08/17/memcached-basics-for-rails"&gt;CachedModel tutorial&lt;/a&gt; and it looked very good. Took me about an hour to get everything with CachedModel working, I then looked at the verbose output of memcached and my development.log, it didn&amp;#8217;t seem to be caching very much. After some more googling it turned out that CachedModel only caches find() queries, but we use custom finders in our models almost exclusively. To get it to cache more I had to manually cache and evict objects, which was kindda not fun.&lt;/p&gt;


	&lt;p&gt;So back to more googling, and I found a RailConf 2007 presentation  by &lt;a href="http://errtheblog.com"&gt;Chris Wanstrath&lt;/a&gt; on &lt;i&gt;cache_fu&lt;/i&gt;, it was appropriately titled &lt;a href="http://errtheblog.com/post/4872"&gt;&lt;em&gt;Kickin&amp;#8217; Ass with cache_fu&lt;/em&gt;&lt;/a&gt;. It seemed cool, and he talked about creating wrappers for custom finders, which was exactly what I needed. So I spent like an hour on it and moved from &lt;em&gt;CachedModel&lt;/em&gt; to &lt;i&gt;cache_fu&lt;/i&gt;.&lt;/p&gt;


	&lt;p&gt;I was all excited that it was so easy, almost too easy right? Yeah, I restarted my development server in &lt;a href="http://locomotive.raaum.org/"&gt;&lt;em&gt;Locomotive&lt;/em&gt;&lt;/a&gt;, loaded the main page, and was greeted with a &lt;i&gt;&amp;#8220;NoMethodError: protected method&amp;#8221;&lt;/i&gt; error. It was pretty weird, I spent quite a while trying to figure it out by going through the &lt;i&gt;cache_fu&lt;/i&gt; code, still couldn&amp;#8217;t figure out it. I emailed Chris, who was extremely helpful and replied to my mails in lightning fast speed (&lt;em&gt;thanks Chris!&lt;/em&gt;), he had never seen an error like that before either. After a while I went ahead and checked out cache_fu on our production server and ran the test suites that comes with it, it worked! Chris suspected that the problem had to do with Locomotive, I went ahead and installed a few gems to my global environment and ran the tests outside of the Locomotive sandbox, it worked! So after comparing the installed gem lists between Locomotive and MacPorts&amp;#8217; Ruby installation, I narrowed it down to the &lt;strong&gt;&lt;em&gt;Ruby-MemCache&lt;/em&gt;&lt;/strong&gt; gem. Uninstalled that, everything worked! So I thought I&amp;#8217;d blog about this in case someone run into the same problem in the future. I have no idea when I installed that gem, I guess the name looked good so I installed it.&lt;/p&gt;


	&lt;p&gt;cache_fu is pretty neat, I created finders that check if there are cached version of the data and I&amp;#8217;m using these new finders in our controllers, for example, here&amp;#8217;s how the custom finder that locates recently updated lists looks like (I&amp;#8217;ve removed some irrelevant code):&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="keyword"&gt;def &lt;/span&gt;&lt;span class="method"&gt;List.recently_updated&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;category&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="ident"&gt;find_conditions&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; 
  &lt;span class="ident"&gt;sort_column&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="ident"&gt;sort_direction&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="ident"&gt;limit&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="ident"&gt;offset&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt;

  &lt;span class="ident"&gt;find_conditions&lt;/span&gt; &lt;span class="punct"&gt;+=&lt;/span&gt; 
    &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt; AND (lists.is_private=0 OR lists.is_private IS NULL)&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;
  &lt;span class="ident"&gt;lists&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="constant"&gt;List&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;find&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="symbol"&gt;:all&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="symbol"&gt;:conditions&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="ident"&gt;find_conditions&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt;
    &lt;span class="symbol"&gt;:order&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;updated_at DESC&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;,&lt;/span&gt; &lt;span class="symbol"&gt;:limit&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="ident"&gt;limit&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; 
    &lt;span class="symbol"&gt;:offset&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="ident"&gt;offset&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt;  

  &lt;span class="ident"&gt;lists&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="constant"&gt;List&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;cached_perform_roster_sort&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;lists&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; 
    &lt;span class="ident"&gt;sort_column&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="ident"&gt;sort_direction&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt;

  &lt;span class="ident"&gt;lists&lt;/span&gt;
&lt;span class="keyword"&gt;end&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;The cached version of it looks like this:&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="keyword"&gt;def &lt;/span&gt;&lt;span class="method"&gt;List.cached_recently_updated&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;category&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="ident"&gt;find_conditions&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; 
  &lt;span class="ident"&gt;sort_column&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="ident"&gt;sort_direction&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="ident"&gt;limit&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="ident"&gt;offset&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt;

  &lt;span class="ident"&gt;get_cache&lt;/span&gt;&lt;span class="punct"&gt;('&lt;/span&gt;&lt;span class="string"&gt;recently_updated:&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt; &lt;span class="punct"&gt;+&lt;/span&gt; &lt;span class="ident"&gt;category&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;to_s&lt;/span&gt; &lt;span class="punct"&gt;+&lt;/span&gt;
    &lt;span class="ident"&gt;conditions&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;to_s&lt;/span&gt; &lt;span class="punct"&gt;+&lt;/span&gt; &lt;span class="ident"&gt;sort_direction&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;to_s&lt;/span&gt; &lt;span class="punct"&gt;+&lt;/span&gt; 
    &lt;span class="ident"&gt;limit&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;to_s&lt;/span&gt; &lt;span class="punct"&gt;+&lt;/span&gt; &lt;span class="ident"&gt;offset&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;to_s&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt; &lt;span class="keyword"&gt;do&lt;/span&gt;

    &lt;span class="ident"&gt;recently_updated&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;category&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="ident"&gt;find_conditions&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; 
      &lt;span class="ident"&gt;sort_column&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="ident"&gt;sort_direction&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="ident"&gt;limit&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="ident"&gt;offset&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt;
  &lt;span class="keyword"&gt;end&lt;/span&gt;
&lt;span class="keyword"&gt;end&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;pretty clean and simple! :) We&amp;#8217;re testing the version of our site that uses memcached right now, if all goes well we will deploy it to the live site and hopefully you will enjoy a nice speedup.&lt;/p&gt;


	&lt;p&gt;Now we just have to tune the caching a bit, probably will add fragment caching to various places. Next big thing for me is to scale, right now we&amp;#8217;re considering &lt;a href="http://aws.amazon.com/ec2"&gt;&lt;span class="caps"&gt;EC2&lt;/span&gt;&lt;/a&gt; and &lt;a href="http://joyent.com/accelerator"&gt;Joyent&lt;/a&gt;.&lt;/p&gt;</summary>
    <content type="html">&lt;p&gt;After going live for about a week it became obvious that we should implement caching to help performance. I experimented with Rails&amp;#8217; page caching, but in Rails 1.2 the &lt;i&gt;expire_cache&lt;/i&gt; helper does not deal with custom routes very well. Also, our pages have view counts, ratings, etc, that change way too often for us to be able to cache the entire page.&lt;/p&gt;


	&lt;p&gt;The next thing I looked at was caching the MySQL queries, this seemed easier than implementing fragment caching, coz I found a &lt;a href="http://nubyonrails.com/articles/2006/08/17/memcached-basics-for-rails"&gt;CachedModel tutorial&lt;/a&gt; and it looked very good. Took me about an hour to get everything with CachedModel working, I then looked at the verbose output of memcached and my development.log, it didn&amp;#8217;t seem to be caching very much. After some more googling it turned out that CachedModel only caches find() queries, but we use custom finders in our models almost exclusively. To get it to cache more I had to manually cache and evict objects, which was kindda not fun.&lt;/p&gt;


	&lt;p&gt;So back to more googling, and I found a RailConf 2007 presentation  by &lt;a href="http://errtheblog.com"&gt;Chris Wanstrath&lt;/a&gt; on &lt;i&gt;cache_fu&lt;/i&gt;, it was appropriately titled &lt;a href="http://errtheblog.com/post/4872"&gt;&lt;em&gt;Kickin&amp;#8217; Ass with cache_fu&lt;/em&gt;&lt;/a&gt;. It seemed cool, and he talked about creating wrappers for custom finders, which was exactly what I needed. So I spent like an hour on it and moved from &lt;em&gt;CachedModel&lt;/em&gt; to &lt;i&gt;cache_fu&lt;/i&gt;.&lt;/p&gt;


	&lt;p&gt;I was all excited that it was so easy, almost too easy right? Yeah, I restarted my development server in &lt;a href="http://locomotive.raaum.org/"&gt;&lt;em&gt;Locomotive&lt;/em&gt;&lt;/a&gt;, loaded the main page, and was greeted with a &lt;i&gt;&amp;#8220;NoMethodError: protected method&amp;#8221;&lt;/i&gt; error. It was pretty weird, I spent quite a while trying to figure it out by going through the &lt;i&gt;cache_fu&lt;/i&gt; code, still couldn&amp;#8217;t figure out it. I emailed Chris, who was extremely helpful and replied to my mails in lightning fast speed (&lt;em&gt;thanks Chris!&lt;/em&gt;), he had never seen an error like that before either. After a while I went ahead and checked out cache_fu on our production server and ran the test suites that comes with it, it worked! Chris suspected that the problem had to do with Locomotive, I went ahead and installed a few gems to my global environment and ran the tests outside of the Locomotive sandbox, it worked! So after comparing the installed gem lists between Locomotive and MacPorts&amp;#8217; Ruby installation, I narrowed it down to the &lt;strong&gt;&lt;em&gt;Ruby-MemCache&lt;/em&gt;&lt;/strong&gt; gem. Uninstalled that, everything worked! So I thought I&amp;#8217;d blog about this in case someone run into the same problem in the future. I have no idea when I installed that gem, I guess the name looked good so I installed it.&lt;/p&gt;


	&lt;p&gt;cache_fu is pretty neat, I created finders that check if there are cached version of the data and I&amp;#8217;m using these new finders in our controllers, for example, here&amp;#8217;s how the custom finder that locates recently updated lists looks like (I&amp;#8217;ve removed some irrelevant code):&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="keyword"&gt;def &lt;/span&gt;&lt;span class="method"&gt;List.recently_updated&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;category&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="ident"&gt;find_conditions&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; 
  &lt;span class="ident"&gt;sort_column&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="ident"&gt;sort_direction&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="ident"&gt;limit&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="ident"&gt;offset&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt;

  &lt;span class="ident"&gt;find_conditions&lt;/span&gt; &lt;span class="punct"&gt;+=&lt;/span&gt; 
    &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt; AND (lists.is_private=0 OR lists.is_private IS NULL)&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;
  &lt;span class="ident"&gt;lists&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="constant"&gt;List&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;find&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="symbol"&gt;:all&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="symbol"&gt;:conditions&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="ident"&gt;find_conditions&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt;
    &lt;span class="symbol"&gt;:order&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;updated_at DESC&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;,&lt;/span&gt; &lt;span class="symbol"&gt;:limit&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="ident"&gt;limit&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; 
    &lt;span class="symbol"&gt;:offset&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="ident"&gt;offset&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt;  

  &lt;span class="ident"&gt;lists&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="constant"&gt;List&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;cached_perform_roster_sort&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;lists&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; 
    &lt;span class="ident"&gt;sort_column&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="ident"&gt;sort_direction&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt;

  &lt;span class="ident"&gt;lists&lt;/span&gt;
&lt;span class="keyword"&gt;end&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;The cached version of it looks like this:&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="keyword"&gt;def &lt;/span&gt;&lt;span class="method"&gt;List.cached_recently_updated&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;category&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="ident"&gt;find_conditions&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; 
  &lt;span class="ident"&gt;sort_column&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="ident"&gt;sort_direction&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="ident"&gt;limit&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="ident"&gt;offset&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt;

  &lt;span class="ident"&gt;get_cache&lt;/span&gt;&lt;span class="punct"&gt;('&lt;/span&gt;&lt;span class="string"&gt;recently_updated:&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt; &lt;span class="punct"&gt;+&lt;/span&gt; &lt;span class="ident"&gt;category&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;to_s&lt;/span&gt; &lt;span class="punct"&gt;+&lt;/span&gt;
    &lt;span class="ident"&gt;conditions&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;to_s&lt;/span&gt; &lt;span class="punct"&gt;+&lt;/span&gt; &lt;span class="ident"&gt;sort_direction&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;to_s&lt;/span&gt; &lt;span class="punct"&gt;+&lt;/span&gt; 
    &lt;span class="ident"&gt;limit&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;to_s&lt;/span&gt; &lt;span class="punct"&gt;+&lt;/span&gt; &lt;span class="ident"&gt;offset&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;to_s&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt; &lt;span class="keyword"&gt;do&lt;/span&gt;

    &lt;span class="ident"&gt;recently_updated&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;category&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="ident"&gt;find_conditions&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; 
      &lt;span class="ident"&gt;sort_column&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="ident"&gt;sort_direction&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="ident"&gt;limit&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="ident"&gt;offset&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt;
  &lt;span class="keyword"&gt;end&lt;/span&gt;
&lt;span class="keyword"&gt;end&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;pretty clean and simple! :) We&amp;#8217;re testing the version of our site that uses memcached right now, if all goes well we will deploy it to the live site and hopefully you will enjoy a nice speedup.&lt;/p&gt;


	&lt;p&gt;Now we just have to tune the caching a bit, probably will add fragment caching to various places. Next big thing for me is to scale, right now we&amp;#8217;re considering &lt;a href="http://aws.amazon.com/ec2"&gt;&lt;span class="caps"&gt;EC2&lt;/span&gt;&lt;/a&gt; and &lt;a href="http://joyent.com/accelerator"&gt;Joyent&lt;/a&gt;.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=o6tzLrvw"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=o6tzLrvw" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=wRlPf7B3"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=wRlPf7B3" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=gVpFGHDd"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=gVpFGHDd" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=3lb2VE6L"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=3lb2VE6L" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=okP37PSq"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=okP37PSq" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=z990sP0B"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=z990sP0B" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content>
  <feedburner:origLink>http://blog.onmylist.com/articles/2007/06/15/memcached-and-cache_fu</feedburner:origLink></entry>
  <entry>
    <author>
      <name>Andrew</name>
    </author>
    <id>urn:uuid:1d8c6969-4cfc-4228-8149-216c9e6f9d41</id>
    <published>2007-06-11T17:22:00-04:00</published>
    <updated>2007-06-11T17:23:53-04:00</updated>
    <title type="html">Expected down time tonight, 10pm EST</title>
    <link href="http://feeds.feedburner.com/~r/OnMyListBlog/~3/124285215/expected-down-time-tonight-10pm-est" rel="alternate" type="text/html" />
    <category term="oml-news" scheme="http://blog.onmylist.com/articles/category/oml-news" label="OML News" />
    <summary type="html">&lt;p&gt;We have to bring the server down for a few minutes to install a card to provide console access, if everything goes smoothly we should be back online at 10:15 or so&amp;#8230;&lt;/p&gt;</summary>
    <content type="html">&lt;p&gt;We have to bring the server down for a few minutes to install a card to provide console access, if everything goes smoothly we should be back online at 10:15 or so&amp;#8230;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=EbfPCogb"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=EbfPCogb" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=hXh7Oea1"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=hXh7Oea1" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=rVnOnnQK"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=rVnOnnQK" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=4zkwA1ve"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=4zkwA1ve" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=x04s21wR"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=x04s21wR" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=5jjVGiFR"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=5jjVGiFR" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content>
  <feedburner:origLink>http://blog.onmylist.com/articles/2007/06/11/expected-down-time-tonight-10pm-est</feedburner:origLink></entry>
  <entry>
    <author>
      <name>Andrew</name>
    </author>
    <id>urn:uuid:ec722dc5-7e6c-4ba8-991f-ae6346291bda</id>
    <published>2007-06-09T16:27:00-04:00</published>
    <updated>2007-06-09T16:33:16-04:00</updated>
    <title type="html">Sorry about the down time</title>
    <link href="http://feeds.feedburner.com/~r/OnMyListBlog/~3/124285216/sorry-about-the-down-time" rel="alternate" type="text/html" />
    <category term="oml-news" scheme="http://blog.onmylist.com/articles/category/oml-news" label="OML News" />
    <category term="downtime" scheme="http://blog.onmylist.com/articles/tag/downtime" />
    <summary type="html">&lt;p&gt;The server that hosts &lt;span class="caps"&gt;OML&lt;/span&gt; had a problem this morning and our site was down for a couple of hours. We couldn&amp;#8217;t log onto it remotely so we had to get the hosting company to locate the server and reboot it from there, which took a good couple of hours. Unfortunately we didn&amp;#8217;t have a serial rescue console setup with this server so it&amp;#8217;s hard for us to figure out what went wrong. We will get that setup &lt;span class="caps"&gt;ASAP&lt;/span&gt; and will look through all the logs to try to figure out what happened&amp;#8230; Will post updates to this blog&amp;#8230;&lt;/p&gt;</summary>
    <content type="html">&lt;p&gt;The server that hosts &lt;span class="caps"&gt;OML&lt;/span&gt; had a problem this morning and our site was down for a couple of hours. We couldn&amp;#8217;t log onto it remotely so we had to get the hosting company to locate the server and reboot it from there, which took a good couple of hours. Unfortunately we didn&amp;#8217;t have a serial rescue console setup with this server so it&amp;#8217;s hard for us to figure out what went wrong. We will get that setup &lt;span class="caps"&gt;ASAP&lt;/span&gt; and will look through all the logs to try to figure out what happened&amp;#8230; Will post updates to this blog&amp;#8230;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=KZ6q6xnz"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=KZ6q6xnz" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=kbuhHY4c"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=kbuhHY4c" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=lb87G9BQ"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=lb87G9BQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=mKtJuJb9"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=mKtJuJb9" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=qbvQlzCQ"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=qbvQlzCQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/OnMyListBlog?a=7kjGvhmy"&gt;&lt;img src="http://feeds.feedburner.com/~f/OnMyListBlog?i=7kjGvhmy" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content>
  <feedburner:origLink>http://blog.onmylist.com/articles/2007/06/09/sorry-about-the-down-time</feedburner:origLink></entry>
  <entry>
    <author>
      <name>Andrew</name>
    </author>
    <id>urn:uuid:e483b46a-f4f2-44dd-b195-3ab80777d34e</id>
    <published>2007-06-08T17:30:00-04:00</published>
    <updated>2007-06-08T17:44:34-04:00</updated>
    <title type="html">aws-s3 woes</title>
    <link href="http://feeds.feedburner.com/~r/OnMyListBlog/~3/124285217/aws-s3-woes" rel="alternate" type="text/html" />
    <category term="ruby-on-rails" scheme="http://blog.onmylist.com/articles/category/ruby-on-rails" label="Ruby on Rails" />
    <category term="attachment_fu" scheme="http://blog.onmylist.com/articles/tag/attachment_fu" />
    <category term="amazon" scheme="http://blog.onmylist.com/articles/tag/amazon" />
    <category term="s3" scheme="http://blog.onmylist.com/articles/tag/s3" />
    <category term="ec2" scheme="http://blog.onmylist.com/articles/tag/ec2" />
    <category term="aws" scheme="http://blog.onmylist.com/articles/tag/aws" />
    <category term="ruby" scheme="http://blog.onmylist.com/articles/tag/ruby" />
    <category term="RoR" scheme="http://blog.onmylist.com/articles/tag/ror" />
    <category term="rubyonrails" scheme="http://blog.onmylist.com/articles/tag/rubyonrails" />
    <category term="rails" scheme="http://blog.onmylist.com/articles/tag/rails" />
    <summary type="html">&lt;p&gt;At &lt;span class="caps"&gt;OML&lt;/span&gt; we use Amazon&amp;#8217;s S3 for profile pics storage, we switched from local disk to S3 for scalability reasons when we need to move to multiple app servers or Amazon &lt;span class="caps"&gt;EC2&lt;/span&gt;. To implement S3 with &lt;a href="http://svn.techno-weenie.net/projects/plugins/attachment_fu/"&gt;attachment_fu&lt;/a&gt; was fairly straight-forward. However, we ran into a lot of problems with the aws-s3 gem. Basically the S3 backend, which uses aws-s3, failed with a broken pipe.&lt;/p&gt;


	&lt;p&gt;I did a bit of googling on this and found out the author of aws-s3 attempted to fix this in the latest subversion snapshot (# attempts changed to 10 by yours truly):&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="keyword"&gt;rescue&lt;/span&gt; &lt;span class="constant"&gt;Errno&lt;/span&gt;&lt;span class="punct"&gt;::&lt;/span&gt;&lt;span class="constant"&gt;EPIPE&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="constant"&gt;Timeout&lt;/span&gt;&lt;span class="punct"&gt;::&lt;/span&gt;&lt;span class="constant"&gt;Error&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="constant"&gt;Errno&lt;/span&gt;&lt;span class="punct"&gt;::&lt;/span&gt;&lt;span class="constant"&gt;EPIPE&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="constant"&gt;Errno&lt;/span&gt;&lt;span class="punct"&gt;::&lt;/span&gt;&lt;span class="constant"&gt;EINVAL&lt;/span&gt;
    &lt;span class="attribute"&gt;@http&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="ident"&gt;create_connection&lt;/span&gt;
    &lt;span class="ident"&gt;attempts&lt;/span&gt; &lt;span class="punct"&gt;==&lt;/span&gt; &lt;span class="number"&gt;10&lt;/span&gt; &lt;span class="punct"&gt;?&lt;/span&gt; &lt;span class="keyword"&gt;raise&lt;/span&gt; &lt;span class="punct"&gt;:&lt;/span&gt; &lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;attempts&lt;/span&gt; &lt;span class="punct"&gt;+=&lt;/span&gt; &lt;span class="number"&gt;1&lt;/span&gt;&lt;span class="punct"&gt;;&lt;/span&gt; &lt;span class="keyword"&gt;retry&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt;
&lt;span class="keyword"&gt;end&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;So I checked out the latest &lt;span class="caps"&gt;SVN&lt;/span&gt; snapshot as a plugin, but it didn&amp;#8217;t quite fix it, from time to time I still got the same error. So I ended up retrying it a couple more time in my own rescue block, if it still fails, then catch the exception and fail gracefully.&lt;/p&gt;


	&lt;p&gt;It seems to work for me, feel free to post comments if you are still having problems with profile pics&amp;#8230; It would be great if you would also email the pics you tried to upload to &lt;a href="mailto:feedback@onmylist.com"&gt;feedback@onm