mirror of
https://github.com/viq/NewsBlur.git
synced 2025-09-18 21:43:31 +00:00
236 lines
55 KiB
HTML
236 lines
55 KiB
HTML
<html><head><link rel="stylesheet" type="text/css" href="reader.css" ><link rel="stylesheet" type="text/css" href="storyDetailView.css" ><meta name="viewport" id="viewport" content="width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/></head><body id="story_pane" class="NB-iphone"> <div id="NB-header-container"><div class="NB-header"><div class="NB-header-inner"><div class="NB-story-date">Monday, July 30th, 2012 11:22am</div><div class="NB-story-title">Introducing Blurblogs, Roy, and Y Combinator</div><a href="http://ios.newsblur.com/classify-author/" class="NB-story-author " id="NB-story-author"><div class="NB-highlight"></div></a><div id="NB-story-tags" class="NB-story-tags"><a href="http://ios.newsblur.com/classify-tag/meta" class="NB-story-tag "><div class="NB-highlight"></div>meta</a><a href="http://ios.newsblur.com/classify-tag/news" class="NB-story-tag "><div class="NB-highlight"></div>news</a></div></div></div></div> <div id="NB-share-bar-wrapper"><div class="NB-story-shares"><div class="NB-story-comments-shares-teaser-wrapper"><div class="NB-story-comments-shares-teaser"><div class="NB-story-comments-label"><b>10 comments</b></div><div class="NB-story-share-profiles NB-story-share-profiles-comments"><div class="NB-story-share-profile"><div class="NB-user-avatar"><a id="NB-user-share-bar-32601" class="NB-show-profile" href="http://ios.newsblur.com/show-profile/32601"><div class="NB-highlight"></div><img src="http://www.gravatar.com/avatar/fe66f260795c73ef4add39866445a861" /></a></div></div><div class="NB-story-share-profile"><div class="NB-user-avatar"><a id="NB-user-share-bar-27551" class="NB-show-profile" href="http://ios.newsblur.com/show-profile/27551"><div class="NB-highlight"></div><img src="http://graph.facebook.com/1702670/picture" /></a></div></div><div class="NB-story-share-profile"><div class="NB-user-avatar"><a id="NB-user-share-bar-2391" class="NB-show-profile" href="http://ios.newsblur.com/show-profile/2391"><div class="NB-highlight"></div><img src="http://a0.twimg.com/profile_images/1224057243/hi-res-me-100_normal.jpg" /></a></div></div><div class="NB-story-share-profile"><div class="NB-user-avatar"><a id="NB-user-share-bar-26578" class="NB-show-profile" href="http://ios.newsblur.com/show-profile/26578"><div class="NB-highlight"></div><img src="http://a0.twimg.com/profile_images/1649024682/me_hat_and_horns_cropped_square_smaller_normal.jpg" /></a></div></div><div class="NB-story-share-profile"><div class="NB-user-avatar"><a id="NB-user-share-bar-16915" class="NB-show-profile" href="http://ios.newsblur.com/show-profile/16915"><div class="NB-highlight"></div><img src="http://www.newsblur.com/media/img/reader/default_profile_photo.png" /></a></div></div><div class="NB-story-share-profile"><div class="NB-user-avatar"><a id="NB-user-share-bar-27384" class="NB-show-profile" href="http://ios.newsblur.com/show-profile/27384"><div class="NB-highlight"></div><img src="http://a0.twimg.com/profile_images/1184802534/red-b-trans_normal.png" /></a></div></div><div class="NB-story-share-profile"><div class="NB-user-avatar"><a id="NB-user-share-bar-33727" class="NB-show-profile" href="http://ios.newsblur.com/show-profile/33727"><div class="NB-highlight"></div><img src="http://www.gravatar.com/avatar/e03239b46891d86412ca17c5c168c601" /></a></div></div><div class="NB-story-share-profile"><div class="NB-user-avatar"><a id="NB-user-share-bar-30650" class="NB-show-profile" href="http://ios.newsblur.com/show-profile/30650"><div class="NB-highlight"></div><img src="http://www.gravatar.com/avatar/9bdb9076ca7ffd131e059b1009eedf4a" /></a></div></div><div class="NB-story-share-profile"><div class="NB-public-user NB-user-avatar"><a id="NB-user-share-bar-34861" class="NB-show-profile" href="http://ios.newsblur.com/show-profile/34861"><div class="NB-highlight"></div><img src="http://a0.twimg.com/profile_images/1522032303/Avatar_Trout_Mask_Replica_normal.png" /></a></div></div><div class="NB-story-share-profile"><div class="NB-public-user NB-user-avatar"><a id="NB-user-share-bar-33172" class="NB-show-profile" href="http://ios.newsblur.com/show-profile/33172"><div class="NB-highlight"></div><img src="http://a0.twimg.com/profile_images/454155693/twitterProfilePhoto_normal.jpg" /></a></div></div></div><div class="NB-right"><div class="NB-story-share-profiles NB-story-share-profiles-shares"><div class="NB-story-share-profile"><div class="NB-public-user NB-user-avatar"><a id="NB-user-share-bar-31540" class="NB-show-profile" href="http://ios.newsblur.com/show-profile/31540"><div class="NB-highlight"></div><img src="http://www.newsblur.com/media/img/reader/default_profile_photo.png" /></a></div></div><div class="NB-story-share-profile"><div class="NB-public-user NB-user-avatar"><a id="NB-user-share-bar-24053" class="NB-show-profile" href="http://ios.newsblur.com/show-profile/24053"><div class="NB-highlight"></div><img src="http://www.newsblur.com/media/img/reader/default_profile_photo.png" /></a></div></div><div class="NB-story-share-profile"><div class="NB-user-avatar"><a id="NB-user-share-bar-20033" class="NB-show-profile" href="http://ios.newsblur.com/show-profile/20033"><div class="NB-highlight"></div><img src="http://a0.twimg.com/profile_images/1851424641/Photofunia_Winter_Morning_AbQNV2v63ZYuBUi26z1ovg_o_normal.jpg" /></a></div></div><div class="NB-story-share-profile"><div class="NB-user-avatar"><a id="NB-user-share-bar-27714" class="NB-show-profile" href="http://ios.newsblur.com/show-profile/27714"><div class="NB-highlight"></div><img src="http://a0.twimg.com/profile_images/1996897824/Blue_Sun_normal.jpg" /></a></div></div><div class="NB-story-share-profile"><div class="NB-user-avatar"><a id="NB-user-share-bar-32965" class="NB-show-profile" href="http://ios.newsblur.com/show-profile/32965"><div class="NB-highlight"></div><img src="http://a0.twimg.com/profile_images/1777023742/image1327374245_normal.png" /></a></div></div><div class="NB-story-share-profile"><div class="NB-user-avatar"><a id="NB-user-share-bar-13" class="NB-show-profile" href="http://ios.newsblur.com/show-profile/13"><div class="NB-highlight"></div><img src="http://a0.twimg.com/profile_images/1382021023/Campeche_Steps_normal.jpg" /></a></div></div><div class="NB-story-share-profile"><div class="NB-user-avatar"><a id="NB-user-share-bar-32048" class="NB-show-profile" href="http://ios.newsblur.com/show-profile/32048"><div class="NB-highlight"></div><img src="http://www.newsblur.com/media/img/reader/popular.jpg" /></a></div></div><div class="NB-story-share-profile"><div class="NB-user-avatar"><a id="NB-user-share-bar-25694" class="NB-show-profile" href="http://ios.newsblur.com/show-profile/25694"><div class="NB-highlight"></div><img src="http://www.newsblur.com/media/img/reader/default_profile_photo.png" /></a></div></div><div class="NB-story-share-profile"><div class="NB-user-avatar"><a id="NB-user-share-bar-30751" class="NB-show-profile" href="http://ios.newsblur.com/show-profile/30751"><div class="NB-highlight"></div><img src="http://www.gravatar.com/avatar/99d69444eb445b7f4e3b89e60e7684ab" /></a></div></div></div><div class="NB-story-share-label"><b>19 shares</b></div></div></div></div></div></div></div></div> <div class="NB-san-serif" id="NB-font-style"> <div class="NB-medium" id="NB-font-size"> <div class="NB-story"><p>What a difference a few months make. NewsBlur was a side-project of mine for two years. In March of this year, <a href="http://blog.newsblur.com/post/18561597889/going-full-time">I committed myself full-time</a> and went from developing NewsBlur almost entirely on the NYC subway to writing code every waking minute of the day.</p>
|
||
|
||
<p>And now there are three big announcements to make.</p>
|
||
|
||
<h1>1. NewsBlur is now a <em>social</em> news reader</h1>
|
||
|
||
<p>The big news of the day is that you can now share stories on NewsBlur. When you share a story, your comments and the original story are posted to your blurblog. Your blurblog is a simple and customizable website. People can comment and reply directly on your blurblog, and you can follow your friends to read the news stories and blog posts that they care about.</p>
|
||
|
||
<p><img src="http://f.cl.ly/items/3e1r202n3I232M473J2b/blurblog%20screenshot.png" style="margin: 0 auto; width: 600px; height: 869px;" /></p>
|
||
|
||
<p>Since you’re good at picking your friends, and your friends are good at picking their friends, you will see friends of friends show up, expanding your network with shared stories that you will enjoy. It’s a new way of sharing the news. And because NewsBlur is already an easy to use news reader, it’s simple to find and share stories that your friends will care about.</p>
|
||
|
||
<p>Every NewsBlur user has their own blurblog. All you have to do is signup for an account on <a href="http://www.newsblur.com"><a href="http://www.newsblur.com">www.newsblur.com</a></a> and share interesting stories.</p>
|
||
|
||
<h1>2. Y Combinator</h1>
|
||
|
||
<p>For those of you who work with computer science, you may know that a Y-combinator generalizes recursion, abstracting its implementation, and thereby separating it from the actual work of the function in question.<sup id="fnref:p27033939756-1"><a href="http://blog.newsblur.com/rss#fn:p27033939756-1" rel="footnote">1</a></sup></p>
|
||
|
||
<p><a href="http://www.ycombinator.com"><img src="http://media.tumblr.com/tumblr_m70zd46Ych1qg4k90.png" style="margin: 12px auto; width: 200px; border: none;" /></a></p>
|
||
|
||
<p>I’m pleased as punch to announce an investment in NewsBlur by Y Combinator, the investment firm. Over the past two months, we’ve been humbled by the roster of experienced partners giving us candid advice. It’s their tough love that is the catalyst for the next few months of transitioning NewsBlur from side project to world-class news reader. Expect NewsBlur to become simpler and more refined.</p>
|
||
|
||
<h1>3. Introducing Roy Yang</h1>
|
||
|
||
<p>When Y Combinator accepted me as a solo founder, their first piece of advice was to find a co-founder. Looking at every successful startup, a common pattern emerges. Every great startup has multiple people carrying the load when the company takes off.</p>
|
||
|
||
<p>There is one person on this planet that I would trust as a co-founder. His name is Roy Yang and we have been friends since we met in New York four years ago. We worked together for nearly two years at Daylife, another news startup. I attended his wedding last year in Mexico, and he was the only person I called when I knew I needed somebody talented, focused, and able to complement me on a project that demands enormous time and effort.</p>
|
||
|
||
<p><del class="diff modified"><a href="http://roy.dev.newsblur.com"></del><ins class="diff modified"><a href="http://roy.newsblur.com"></ins><img src="http://media.tumblr.com/tumblr_m70ymxFDo01qg4k90.jpg" style="margin: 12px auto; border: none;" /></a></p>
|
||
|
||
<p>Roy is now responsible for both iOS apps and is instrumental in challenging me when I think I’m right and am clearly not. He’s got the patience of a monk and the determination of a true New Yorker. <del class="diff modified"><a href="http://roy.dev.newsblur.com"></del><ins class="diff modified"><a href="http://roy.newsblur.com"></ins>Follow Roy’s blurblog</a> to keep up with him.</p>
|
||
|
||
<h1>A glimpse into the future of NewsBlur</h1>
|
||
|
||
<p>This summer marks the beginning of NewsBlur as a full-time startup. Look forward to new mobile apps, new designs, and new features. Here’s a quick idea of what we’re working on for the next few weeks:</p>
|
||
|
||
<div style="width: 596px; margin: 0 auto;">
|
||
<img src="http://media.tumblr.com/tumblr_m712747pFO1qg4k90.png" style="clear: none; float: left; margin: 0 24px 24px 0;" /><img src="http://media.tumblr.com/tumblr_m71281yZ7G1qg4k90.png" style="clear: none; float: left; margin: 0 0 24px 0;" /><img src="http://media.tumblr.com/tumblr_m7126ws7p21qg4k90.png" style="clear: none; float: left; margin: 0 24px 24px 0;" /><img src="http://media.tumblr.com/tumblr_m712dfQTw21qg4k90.png" style="clear: none; float: left; margin: 0 0 24px 0;" /></div>
|
||
|
||
<p>Until then, follow <a href="http://twitter.com/newsblur">@newsblur</a> on Twitter and start sharing news and blogs on <a href="http://www.newsblur.com">NewsBlur</a>.</p>
|
||
|
||
<p>— Samuel Clay, <a href="http://twitter.com/samuelclay">@samuelclay</a></p>
|
||
|
||
<div class="footnotes">
|
||
<hr /><ol><li id="fn:p27033939756-1">
|
||
<p>This Y-combinator description is from <a href="http://stackoverflow.com/questions/93526/what-is-a-y-combinator">this StackOverflow answer</a>. Learn about how a Y-combinator works: <a href="http://mvanier.livejournal.com/2897.html%C2%A0">http://mvanier.livejournal.com/2897.html </a><a href="http://blog.newsblur.com/rss#fnref:p27033939756-1" rev="footnote">↩</a></p>
|
||
</li>
|
||
|
||
</ol></div></div> </div> </div> <div class='NB-share-header'></div><div class='NB-share-wrapper'><div class='NB-share-inner-wrapper'><div id="NB-share-button-id" class='NB-share-button NB-button'><a href="http://ios.newsblur.com/share"><div>Share this story <span class="NB-share-icon"></span></div></a></div></div></div> <div id="NB-comments-wrapper"> <div class="NB-feed-story-comments"><div class="NB-story-comment" id="NB-user-comment-32601"><div class="NB-user-avatar"><a class="NB-show-profile" href="http://ios.newsblur.com/show-profile/32601"><img src="http://www.gravatar.com/avatar/fe66f260795c73ef4add39866445a861" /></a></div><div class="NB-story-comment-author-container"> <div class="NB-story-comment-username">mgeraci</div> <div class="NB-story-comment-location">New York, NY</div> <div class="NB-story-comment-date">133 days ago</div></div><div class="NB-story-comment-content">MICHAEL GLASS IS IN HIS UNDERPANTS</div> <div class="NB-button-wrapper" style="clear:both; padding-bottom: 8px;"> <div class="NB-story-comment-like-button NB-button"><a href="http://ios.newsblur.com/like-comment/32601"><div class="NB-story-comment-like-button-wrapper"><span class="NB-favorite-icon"></span>Favorite</div></a></div> <div class="NB-story-comment-reply-button NB-button"> <a href="http://ios.newsblur.com/reply/32601/mgeraci"><div class="NB-story-comment-reply-button-wrapper"> Reply </div></a> </div></div><div class="NB-story-comment-replies"><div class="NB-story-comment-reply" id="NB-user-comment-5016de09f01b3063b500005b"> <a class="NB-show-profile" href="http://ios.newsblur.com/show-profile/13"> <img class="NB-story-comment-reply-photo" src="http://a0.twimg.com/profile_images/1382021023/Campeche_Steps_normal.jpg" /> </a> <div class="NB-story-comment-username NB-story-comment-reply-username">samuel</div> <div class="NB-story-comment-location">Cole Valley in San Francisco</div> <div class="NB-story-comment-date NB-story-comment-reply-date">133 days ago</div> <div class="NB-story-comment-reply-content">You bet that was purposeful.</div> <div style="clear:both;" class="NB-button-wrapper"> <div class="NB-story-comment-edit-button NB-story-comment-share-edit-button NB-button"><a href="http://ios.newsblur.com/edit-reply/32601/13/5016de09f01b3063b500005b"><div class="NB-story-comment-edit-button-wrapper">Edit</div></a></div> </div></div><div class="NB-story-comment-reply" id="NB-user-comment-5016de90f01b3063b500007b"> <a class="NB-show-profile" href="http://ios.newsblur.com/show-profile/32601"> <img class="NB-story-comment-reply-photo" src="http://www.gravatar.com/avatar/fe66f260795c73ef4add39866445a861" /> </a> <div class="NB-story-comment-username NB-story-comment-reply-username">mgeraci</div> <div class="NB-story-comment-location">New York, NY</div> <div class="NB-story-comment-date NB-story-comment-reply-date">133 days ago</div> <div class="NB-story-comment-reply-content">Nothing like butts to get more traffic.</div> <div style="clear:both;" class="NB-button-wrapper"> </div></div><div class="NB-story-comment-reply" id="NB-user-comment-50170972f01b302577000045"> <a class="NB-show-profile" href="http://ios.newsblur.com/show-profile/1148"> <img class="NB-story-comment-reply-photo" src="http://graph.facebook.com/100445/picture" /> </a> <div class="NB-story-comment-username NB-story-comment-reply-username">michaelglass</div> <div class="NB-story-comment-location">San Francisco</div> <div class="NB-story-comment-date NB-story-comment-reply-date">133 days ago</div> <div class="NB-story-comment-reply-content">swoon. @Samuel, @lilliealbert and I want to buy you a beer.</div> <div style="clear:both;" class="NB-button-wrapper"> </div></div><div class="NB-story-comment-reply" id="NB-user-comment-501719a8f01b303d3c000044"> <a class="NB-show-profile" href="http://ios.newsblur.com/show-profile/13"> <img class="NB-story-comment-reply-photo" src="http://a0.twimg.com/profile_images/1382021023/Campeche_Steps_normal.jpg" /> </a> <div class="NB-story-comment-username NB-story-comment-reply-username">samuel</div> <div class="NB-story-comment-location">Cole Valley in San Francisco</div> <div class="NB-story-comment-date NB-story-comment-reply-date">133 days ago</div> <div class="NB-story-comment-reply-content">We'll be in NYC in October. Let's make it happen then.</div> <div style="clear:both;" class="NB-button-wrapper"> <div class="NB-story-comment-edit-button NB-story-comment-share-edit-button NB-button"><a href="http://ios.newsblur.com/edit-reply/32601/13/501719a8f01b303d3c000044"><div class="NB-story-comment-edit-button-wrapper">Edit</div></a></div> </div></div><div class="NB-story-comment-reply" id="NB-user-comment-501719d3f01b303d6600006d"> <a class="NB-show-profile" href="http://ios.newsblur.com/show-profile/13"> <img class="NB-story-comment-reply-photo" src="http://a0.twimg.com/profile_images/1382021023/Campeche_Steps_normal.jpg" /> </a> <div class="NB-story-comment-username NB-story-comment-reply-username">samuel</div> <div class="NB-story-comment-location">Cole Valley in San Francisco</div> <div class="NB-story-comment-date NB-story-comment-reply-date">133 days ago</div> <div class="NB-story-comment-reply-content">Wait, you're in SF? So confused. Hell yes, come September when I move back to SF after living in Mountain View for the summer (so I can bike to YC dinners every week).</div> <div style="clear:both;" class="NB-button-wrapper"> <div class="NB-story-comment-edit-button NB-story-comment-share-edit-button NB-button"><a href="http://ios.newsblur.com/edit-reply/32601/13/501719d3f01b303d6600006d"><div class="NB-story-comment-edit-button-wrapper">Edit</div></a></div> </div></div><div class="NB-story-comment-reply" id="NB-user-comment-50175a56f01b3021c2000011"> <a class="NB-show-profile" href="http://ios.newsblur.com/show-profile/30781"> <img class="NB-story-comment-reply-photo" src="http://a0.twimg.com/profile_images/1512078016/IMG_3404_normal.jpg" /> </a> <div class="NB-story-comment-username NB-story-comment-reply-username">lillie</div> <div class="NB-story-comment-location">La Lengua, San Francisco</div> <div class="NB-story-comment-date NB-story-comment-reply-date">133 days ago</div> <div class="NB-story-comment-reply-content">I totally didn't catch the glass-in-the-river shot. And yes, beers! In SF! Not Mountain View!</div> <div style="clear:both;" class="NB-button-wrapper"> </div></div><div class="NB-story-comment-reply" id="NB-user-comment-502930ecf01b307a5100000f"> <a class="NB-show-profile" href="http://ios.newsblur.com/show-profile/30607"> <img class="NB-story-comment-reply-photo" src="http://www.gravatar.com/avatar/aab3a0416dee80a9d6d05ac08cf38a17" /> </a> <div class="NB-story-comment-username NB-story-comment-reply-username">pyrho</div> <div class="NB-story-comment-date NB-story-comment-reply-date">120 days ago</div> <div class="NB-story-comment-reply-content">\o/ Great news ! Congrats!</div> <div style="clear:both;" class="NB-button-wrapper"> </div></div></div></div><div class="NB-story-comment" id="NB-user-comment-27551"><div class="NB-user-avatar"><a class="NB-show-profile" href="http://ios.newsblur.com/show-profile/27551"><img src="http://graph.facebook.com/1702670/picture" /></a></div><div class="NB-story-comment-author-container"> <div class="NB-story-comment-username">Roy</div> <div class="NB-story-comment-location">San Francisco</div> <div class="NB-story-comment-date">133 days ago</div></div><div class="NB-story-comment-content">Hello World! So excited to be part of the NewsBlur team. Samuel, Shiloh and I, we're making things happen. Can't wait to show you guys what's in store over the next weeks and months.</div> <div class="NB-button-wrapper" style="clear:both; padding-bottom: 8px;"> <div class="NB-story-comment-like-button NB-button selected"><a href="http://ios.newsblur.com/unlike-comment/27551"><div class="NB-story-comment-like-button-wrapper"><span class="NB-favorite-icon"></span>Favorited</div></a></div> <div class="NB-story-comment-reply-button NB-button"> <a href="http://ios.newsblur.com/reply/27551/Roy"><div class="NB-story-comment-reply-button-wrapper"> Reply </div></a> </div></div><div class="NB-story-comment-replies"><div class="NB-story-comment-reply" id="NB-user-comment-50170982f01b30256f00005a"> <a class="NB-show-profile" href="http://ios.newsblur.com/show-profile/1148"> <img class="NB-story-comment-reply-photo" src="http://graph.facebook.com/100445/picture" /> </a> <div class="NB-story-comment-username NB-story-comment-reply-username">michaelglass</div> <div class="NB-story-comment-location">San Francisco</div> <div class="NB-story-comment-date NB-story-comment-reply-date">133 days ago</div> <div class="NB-story-comment-reply-content">welcome! Excited to see improvements in ios world!</div> <div style="clear:both;" class="NB-button-wrapper"> </div></div></div></div><div class="NB-story-comment" id="NB-user-comment-2391"><div class="NB-user-avatar NB-story-comment-reshare"><a class="NB-show-profile" href="http://ios.newsblur.com/show-profile/2391"><img src="http://a0.twimg.com/profile_images/1224057243/hi-res-me-100_normal.jpg" /></a></div><div class="NB-story-comment-author-container"> <div class="NB-story-comment-reshares"> <div class="NB-story-share-profile"> <div class="NB-user-avatar"><img src="http://graph.facebook.com/1702670/picture"></div> </div></div> <div class="NB-story-comment-username">MacDiva</div> <div class="NB-story-comment-location">Worldwide | NYC</div> <div class="NB-story-comment-date">133 days ago</div></div><div class="NB-story-comment-content">Congrats, Sam! Glad to see Newsblur's continued success. :)</div> <div class="NB-button-wrapper" style="clear:both; padding-bottom: 8px;"> <div class="NB-story-comment-like-button NB-button selected"><a href="http://ios.newsblur.com/unlike-comment/2391"><div class="NB-story-comment-like-button-wrapper"><span class="NB-favorite-icon"></span>Favorited</div></a></div> <div class="NB-story-comment-reply-button NB-button"> <a href="http://ios.newsblur.com/reply/2391/MacDiva"><div class="NB-story-comment-reply-button-wrapper"> Reply </div></a> </div></div></div><div class="NB-story-comment" id="NB-user-comment-26578"><div class="NB-user-avatar"><a class="NB-show-profile" href="http://ios.newsblur.com/show-profile/26578"><img src="http://a0.twimg.com/profile_images/1649024682/me_hat_and_horns_cropped_square_smaller_normal.jpg" /></a></div><div class="NB-story-comment-author-container"> <div class="NB-story-comment-username">smadin</div> <div class="NB-story-comment-location">Boston</div> <div class="NB-story-comment-date">133 days ago</div></div><div class="NB-story-comment-content">hey, check out Courtney's blurblog starring in those screenshots!</div> <div class="NB-button-wrapper" style="clear:both; padding-bottom: 8px;"> <div class="NB-story-comment-like-button NB-button"><a href="http://ios.newsblur.com/like-comment/26578"><div class="NB-story-comment-like-button-wrapper"><span class="NB-favorite-icon"></span>Favorite</div></a></div> <div class="NB-story-comment-reply-button NB-button"> <a href="http://ios.newsblur.com/reply/26578/smadin"><div class="NB-story-comment-reply-button-wrapper"> Reply </div></a> </div></div><div class="NB-story-comment-replies"><div class="NB-story-comment-reply" id="NB-user-comment-5016ee0ff01b307f35000029"> <a class="NB-show-profile" href="http://ios.newsblur.com/show-profile/23766"> <img class="NB-story-comment-reply-photo" src="https://www.gravatar.com/avatar/b81436883b4b34c863b52fca89461ba1" /> </a> <div class="NB-story-comment-username NB-story-comment-reply-username">Courtney</div> <div class="NB-story-comment-location">Boston, MA</div> <div class="NB-story-comment-date NB-story-comment-reply-date">133 days ago</div> <div class="NB-story-comment-reply-content">Sam has been so awesomely open to my feedback and has dealt so well with so much of my, uh, less charming behavior (filing bugs via twitter, anyone?) for so long, my ego is to the point that I just kind of assume at all times that he will do the nicest thing possible re: me & his product, like give me a cameo in his post about YCombinator and merging the dev branch. Because I'm an asshole and he is the bessssst.</div> <div style="clear:both;" class="NB-button-wrapper"> </div></div></div></div><div class="NB-story-comment" id="NB-user-comment-16915"><div class="NB-user-avatar"><a class="NB-show-profile" href="http://ios.newsblur.com/show-profile/16915"><img src="http://www.newsblur.com/media/img/reader/default_profile_photo.png" /></a></div><div class="NB-story-comment-author-container"> <div class="NB-story-comment-username">Jester</div> <div class="NB-story-comment-location"><null></div> <div class="NB-story-comment-date">133 days ago</div></div><div class="NB-story-comment-content">Great to see all the new changes to Newsblur! Looking forward to what's coming in future :)<br/><br/>I noticed that your link to 'Follow Roy's Blurblog' goes to dev.newsblur, so doesn't work.</div> <div class="NB-button-wrapper" style="clear:both; padding-bottom: 8px;"> <div class="NB-story-comment-like-button NB-button"><a href="http://ios.newsblur.com/like-comment/16915"><div class="NB-story-comment-like-button-wrapper"><span class="NB-favorite-icon"></span>Favorite</div></a></div> <div class="NB-story-comment-reply-button NB-button"> <a href="http://ios.newsblur.com/reply/16915/Jester"><div class="NB-story-comment-reply-button-wrapper"> Reply </div></a> </div></div><div class="NB-story-comment-replies"><div class="NB-story-comment-reply" id="NB-user-comment-50170965f01b3023e5000056"> <a class="NB-show-profile" href="http://ios.newsblur.com/show-profile/27551"> <img class="NB-story-comment-reply-photo" src="http://graph.facebook.com/1702670/picture" /> </a> <div class="NB-story-comment-username NB-story-comment-reply-username">Roy</div> <div class="NB-story-comment-location">San Francisco</div> <div class="NB-story-comment-date NB-story-comment-reply-date">133 days ago</div> <div class="NB-story-comment-reply-content">Thanks for the heads up. We've fixed it but will take a little bit to propagate. Not bad in terms of launch day issues. You can go to <a href="http://roy.newsblur.com">http://roy.newsblur.com</a> to check out all the goodness!</div> <div style="clear:both;" class="NB-button-wrapper"> </div></div></div></div><div class="NB-story-comment" id="NB-user-comment-27384"><div class="NB-user-avatar NB-story-comment-reshare"><a class="NB-show-profile" href="http://ios.newsblur.com/show-profile/27384"><img src="http://a0.twimg.com/profile_images/1184802534/red-b-trans_normal.png" /></a></div><div class="NB-story-comment-author-container"> <div class="NB-story-comment-reshares"> <div class="NB-story-share-profile"> <div class="NB-user-avatar"><img src="http://a0.twimg.com/profile_images/1649024682/me_hat_and_horns_cropped_square_smaller_normal.jpg"></div> </div></div> <div class="NB-story-comment-username">brico</div> <div class="NB-story-comment-location">Washington, DC</div> <div class="NB-story-comment-date">133 days ago</div></div><div class="NB-story-comment-content">woot!</div> <div class="NB-button-wrapper" style="clear:both; padding-bottom: 8px;"> <div class="NB-story-comment-like-button NB-button"><a href="http://ios.newsblur.com/like-comment/27384"><div class="NB-story-comment-like-button-wrapper"><span class="NB-favorite-icon"></span>Favorite</div></a></div> <div class="NB-story-comment-reply-button NB-button"> <a href="http://ios.newsblur.com/reply/27384/brico"><div class="NB-story-comment-reply-button-wrapper"> Reply </div></a> </div></div></div><div class="NB-story-comment" id="NB-user-comment-33727"><div class="NB-user-avatar NB-story-comment-reshare"><a class="NB-show-profile" href="http://ios.newsblur.com/show-profile/33727"><img src="http://www.gravatar.com/avatar/e03239b46891d86412ca17c5c168c601" /></a></div><div class="NB-story-comment-author-container"> <div class="NB-story-comment-reshares"> <div class="NB-story-share-profile"> <div class="NB-user-avatar"><img src="http://www.newsblur.com/media/img/reader/popular.jpg"></div> </div></div> <div class="NB-story-comment-username">secretsquirrel</div> <div class="NB-story-comment-location">Toronto, Canada</div> <div class="NB-story-comment-date">132 days ago</div></div><div class="NB-story-comment-content">Great news, guys. And it looks like there's even more good stuff on the way.</div> <div class="NB-button-wrapper" style="clear:both; padding-bottom: 8px;"> <div class="NB-story-comment-like-button NB-button"><a href="http://ios.newsblur.com/like-comment/33727"><div class="NB-story-comment-like-button-wrapper"><span class="NB-favorite-icon"></span>Favorite</div></a></div> <div class="NB-story-comment-reply-button NB-button"> <a href="http://ios.newsblur.com/reply/33727/secretsquirrel"><div class="NB-story-comment-reply-button-wrapper"> Reply </div></a> </div></div></div><div class="NB-story-comment" id="NB-user-comment-30650"><div class="NB-user-avatar NB-story-comment-reshare"><a class="NB-show-profile" href="http://ios.newsblur.com/show-profile/30650"><img src="http://www.gravatar.com/avatar/9bdb9076ca7ffd131e059b1009eedf4a" /></a></div><div class="NB-story-comment-author-container"> <div class="NB-story-comment-reshares"> <div class="NB-story-share-profile"> <div class="NB-user-avatar"><img src="http://www.newsblur.com/media/img/reader/popular.jpg"></div> </div></div> <div class="NB-story-comment-username">DMack</div> <div class="NB-story-comment-date">129 days ago</div></div><div class="NB-story-comment-content">interesting.... rather interesting indeed.</div> <div class="NB-button-wrapper" style="clear:both; padding-bottom: 8px;"> <div class="NB-story-comment-like-button NB-button"><a href="http://ios.newsblur.com/like-comment/30650"><div class="NB-story-comment-like-button-wrapper"><span class="NB-favorite-icon"></span>Favorite</div></a></div> <div class="NB-story-comment-reply-button NB-button"> <a href="http://ios.newsblur.com/reply/30650/DMack"><div class="NB-story-comment-reply-button-wrapper"> Reply </div></a> </div></div></div><div class="NB-story-comments-public-header-wrapper"><div class="NB-story-comments-public-header">2 public comments</div></div><div class="NB-story-comment" id="NB-user-comment-34861"><div class="NB-user-avatar"><a class="NB-show-profile" href="http://ios.newsblur.com/show-profile/34861"><img src="http://a0.twimg.com/profile_images/1522032303/Avatar_Trout_Mask_Replica_normal.png" /></a></div><div class="NB-story-comment-author-container"> <div class="NB-story-comment-username">galmeida</div> <div class="NB-story-comment-location"><null></div> <div class="NB-story-comment-date">133 days ago</div></div><div class="NB-story-comment-content">se liga, Piru, agora o app de iPad sai...</div> <div class="NB-button-wrapper" style="clear:both; padding-bottom: 8px;"> <div class="NB-story-comment-like-button NB-button"><a href="http://ios.newsblur.com/like-comment/34861"><div class="NB-story-comment-like-button-wrapper"><span class="NB-favorite-icon"></span>Favorite</div></a></div> <div class="NB-story-comment-reply-button NB-button"> <a href="http://ios.newsblur.com/reply/34861/galmeida"><div class="NB-story-comment-reply-button-wrapper"> Reply </div></a> </div></div></div><div class="NB-story-comment" id="NB-user-comment-33172"><div class="NB-user-avatar NB-story-comment-reshare"><a class="NB-show-profile" href="http://ios.newsblur.com/show-profile/33172"><img src="http://a0.twimg.com/profile_images/454155693/twitterProfilePhoto_normal.jpg" /></a></div><div class="NB-story-comment-author-container"> <div class="NB-story-comment-reshares"> <div class="NB-story-share-profile"> <div class="NB-user-avatar"><img src="http://www.newsblur.com/media/img/reader/popular.jpg"></div> </div></div> <div class="NB-story-comment-username">Aissen</div> <div class="NB-story-comment-date">132 days ago</div></div><div class="NB-story-comment-content">I' guess I'm gonna try this now to replace what I used to love from Google Reader.</div> <div class="NB-button-wrapper" style="clear:both; padding-bottom: 8px;"> <div class="NB-story-comment-like-button NB-button"><a href="http://ios.newsblur.com/like-comment/33172"><div class="NB-story-comment-like-button-wrapper"><span class="NB-favorite-icon"></span>Favorite</div></a></div> <div class="NB-story-comment-reply-button NB-button"> <a href="http://ios.newsblur.com/reply/33172/Aissen"><div class="NB-story-comment-reply-button-wrapper"> Reply </div></a> </div></div></div></div> </div> <script src="zepto.js"></script><script src="storyDetailView.js"></script></body></html>
|
||
|
||
|
||
2012-12-11 10:32:33.268 NewsBlur[7560:c07] resizeScrollView: {{0, 0}, {320, 460}}
|
||
2012-12-11 10:32:33.268 NewsBlur[7560:c07] Applied Index: Was -2, now 6 (-2/5/6) [12 stories - 0]
|
||
2012-12-11 10:32:33.269 NewsBlur[7560:c07]
|
||
|
||
|
||
|
||
htmlString:
|
||
|
||
|
||
<html><head><link rel="stylesheet" type="text/css" href="reader.css" ><link rel="stylesheet" type="text/css" href="storyDetailView.css" ><meta name="viewport" id="viewport" content="width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/></head><body id="story_pane" class="NB-iphone"> <div id="NB-header-container"><div class="NB-header"><div class="NB-header-inner"><div class="NB-story-date">Monday, April 2nd, 2012 5:52pm</div><div class="NB-story-title">Building real-time feed updates for NewsBlur with Redis and WebSockets</div><a href="http://ios.newsblur.com/classify-author/" class="NB-story-author " id="NB-story-author"><div class="NB-highlight"></div></a><div id="NB-story-tags" class="NB-story-tags"><a href="http://ios.newsblur.com/classify-tag/code" class="NB-story-tag "><div class="NB-highlight"></div>code</a></div></div></div></div> <div id="NB-share-bar-wrapper"><div class="NB-story-shares"><div class="NB-story-comments-shares-teaser-wrapper"><div class="NB-story-comments-shares-teaser"><div class="NB-story-comments-label"><b>2 comments</b></div><div class="NB-story-share-profiles NB-story-share-profiles-comments"><div class="NB-story-share-profile"><div class="NB-public-user NB-user-avatar"><a id="NB-user-share-bar-34925" class="NB-show-profile" href="http://ios.newsblur.com/show-profile/34925"><div class="NB-highlight"></div><img src="http://www.newsblur.com/media/img/reader/default_profile_photo.png" /></a></div></div><div class="NB-story-share-profile"><div class="NB-public-user NB-user-avatar"><a id="NB-user-share-bar-21719" class="NB-show-profile" href="http://ios.newsblur.com/show-profile/21719"><div class="NB-highlight"></div><img src="http://www.gravatar.com/avatar/39e9b5dcdc876ad6ea6f1f67227037aa" /></a></div></div></div><div class="NB-right"><div class="NB-story-share-profiles NB-story-share-profiles-shares"></div><div class="NB-story-share-label"><b>2 shares</b></div></div></div></div></div></div></div></div> <div class="NB-san-serif" id="NB-font-style"> <div class="NB-medium" id="NB-font-size"> <div class="NB-story"><p>Today, NewsBlur is going real-time. Blogs using the PubSubHubbub protocol (PuSH), which includes all Blogger, Tumblr, and many Wordpress blogs, will instantaneously show new updates to subscribers on NewsBlur. Making this happen, while not for the faint of heart, was straight-forward enough that <del class="diff modified">I’m </del><ins class="diff modified">I’m </ins>sharing the recipe I used to get everything hooked up and running smoothly.</p>
|
||
|
||
<p>Every user, both premium and standard, will now receive instantaneous updates. <del class="diff modified">I’ve </del><ins class="diff modified">I’ve </ins>been beta-testing this feature for the past few weeks, and <del class="diff modified">I’ve </del><ins class="diff modified">I’ve </ins>been quite pleased in knowing that <del class="diff modified">I’m </del><ins class="diff modified">I’m </ins>now reading on the bleeding-edge.</p>
|
||
|
||
<p>If you are a developer, you may be interested in how this was done. There are two components in a real-time feed: detecting updates and then informing users of those updates.</p>
|
||
|
||
<h2>Get blog updates in real-time</h2>
|
||
|
||
<p>If you are building a system that consumes an RSS feed and you want it to push to you, <del class="diff modified">you’ll </del><ins class="diff modified">you’ll </ins>have to subscribe to a special PubSubHubbub hub url that the RSS feed gives you in the original RSS feed.</p>
|
||
|
||
<p>Take a look at the <code><ins class="diff"><feed></ins></code> section in the NewsBlur <del class="diff modified">Blog’s </del><ins class="diff modified">Blog’s </ins>RSS feed:</p>
|
||
|
||
<pre><code><del class="diff modified">>>> </del><ins class="diff modified">>>> </ins># Python
|
||
<del class="diff modified">>>> </del><ins class="diff modified">>>> </ins>from utils import feedparser
|
||
<del class="diff modified">>>> </del><ins class="diff modified">>>> </ins>from pprint import pprint
|
||
<del class="diff modified">>>> </del><ins class="diff modified">>>> </ins>fp = feedparser.parse('http://blog.newsblur.com/rss')
|
||
<del class="diff modified">>>> </del><ins class="diff modified">>>> </ins>pprint(fp.feed)
|
||
{'generator': u'Tumblr (3.0; @newsblur)',
|
||
'generator_detail': {'name': u'Tumblr (3.0; @newsblur)'},
|
||
'link': u'http://blog.newsblur.com/',
|
||
'links': [{'href': u'http://tumblr.superfeedr.com/',
|
||
'rel': u'hub',
|
||
'type': u'text/html'},
|
||
{'href': u'http://blog.newsblur.com/',
|
||
'rel': u'alternate',
|
||
'type': u'text/html'}],
|
||
'subtitle': u'Visual feed reading with intelligence.',
|
||
'subtitle_detail': {'base': u'http://blog.newsblur.com/rss',
|
||
'language': None,
|
||
'type': u'text/html',
|
||
'value': u'Visual feed reading with intelligence.'},
|
||
'title': u'The NewsBlur Blog',
|
||
'title_detail': {'base': u'http://blog.newsblur.com/rss',
|
||
'language': None,
|
||
'type': u'text/plain',
|
||
'value': u'The NewsBlur Blog'}}
|
||
</code></pre>
|
||
|
||
<p>If <del class="diff modified">there’s </del><ins class="diff modified">there’s </ins>a <code>rel="hub"</code> <del class="diff modified">elements </del><ins class="diff modified">node </ins>under <code>links</code>, then the RSS feed is advertising its PubSubHubbub abilities. If you make a subscription request to that address, then the feed will push out updates to your callback URL.</p>
|
||
|
||
<p>The code for sending the subscription requests, along with generating the verification token, can be found on GitHub: <a href="http://github.com/samuelclay/NewsBlur/tree/master/apps/push/views.py">the PuSH views for handling updates and the initial callback</a> and <a href="http://github.com/samuelclay/NewsBlur/tree/master/apps/push/models.py">the PuSH models used to store subscriptions in the DB</a>. <del class="diff modified">Here’s </del><ins class="diff modified">Here’s </ins>the main request that your server has to send:</p>
|
||
|
||
<pre><code># Python
|
||
response = self._send_request(hub, {
|
||
'hub.mode' : 'subscribe',
|
||
'hub.callback' : callback,
|
||
'hub.topic' : topic,
|
||
'hub.verify' : ['async', 'sync'],
|
||
'hub.verify_token' : subscription.generate_token('subscribe'),
|
||
'hub.lease_seconds' : lease_seconds,
|
||
})
|
||
</code></pre>
|
||
|
||
<p>The publisher will then ping your server back to confirm the subscription. Once the publisher is configured to send blog updates to your server, you just have to let users know when <del class="diff modified">there’s </del><ins class="diff modified">there’s </ins>a new story, and <del class="diff modified">that’s </del><ins class="diff modified">that’s </ins>takes some COMET/push technology with the help of WebSockets.</p>
|
||
|
||
<h2>Serving updates to visitors in real-time</h2>
|
||
|
||
<p>When a publisher pushes a new story to your server, apart from dupe detection and storing it in your database, you need to alert users who are currently on the site.</p>
|
||
|
||
<p><a href="http://redis.io">Redis</a> is your new best friend. One of its primary <del class="diff modified">functions </del><ins class="diff modified">data structures, apart from hashes, sets, sorted sets, and key-value, </ins>is a <del class="diff modified">pub sub system </del><ins class="diff modified">pubsub type </ins>that is <del class="diff modified">perfected </del><ins class="diff modified">perfect </ins>for this <del class="diff modified">type </del><ins class="diff modified">kind </ins>of update. Users subscribe to the updates of all of the feeds <del class="diff modified">that </del><ins class="diff modified">to which </ins>they <del class="diff modified">are subscribed to. </del><ins class="diff modified">subscribe. </ins>When these sites have a new story, they publish a simple notification to each of the <del class="diff modified">feed’s </del><ins class="diff modified">feed’s </ins>subscribers.</p>
|
||
|
||
<p>Here the feed fetcher is publishing to any listening subscribers.</p>
|
||
|
||
<pre><code># Python
|
||
def publish_to_subscribers(self, feed):
|
||
try:
|
||
r = redis.Redis(connection_pool=settings.REDIS_POOL)
|
||
listeners_count = r.publish(str(feed.pk), 'story:new')
|
||
if listeners_count:
|
||
logging.debug(" <del class="diff modified">---> </del><ins class="diff modified">---> </ins>[%-30s] Published to %s subscribers" % (
|
||
feed.title[:30], listeners_count))
|
||
except redis.ConnectionError:
|
||
logging.debug(" <del class="diff modified">***> </del><ins class="diff modified">***> </ins>[%-30s] Redis is unavailable for real-time." % (
|
||
feed.title[:30],))
|
||
</code></pre>
|
||
|
||
<p>These subscribers have subscribed via Redis. To know that a user is currently connected and wants to be notified of updates, <a href="http://socket.io">Socket.io</a> is used to connect the browser to a Node.js server that will subscribe to <del class="diff modified">update </del><ins class="diff modified">updates </ins>via Redis.</p>
|
||
|
||
<p>The browser opens up a WebSocket and listens for updates for the feeds that they care about:</p>
|
||
|
||
<pre><code>// JavaScript
|
||
setup_socket_realtime_unread_counts: function() {
|
||
if (!this.socket) {
|
||
var server = window.location.protocol + '//' +
|
||
window.location.hostname + ':8888';
|
||
this.socket = this.socket || io.connect(server);
|
||
|
||
this.socket.on('connect', _.bind(function() {
|
||
var active_feeds = this.send_socket_active_feeds();
|
||
console.log(["Connected to real-time pubsub with " +
|
||
active_feeds.length + " feeds."]);
|
||
|
||
this.socket.on('feed:update', _.bind(function(feed_id, message) {
|
||
console.log(['Real-time feed update', feed_id, message]);
|
||
this.force_feeds_refresh(false, false, parseInt(feed_id, 10));
|
||
}, this));
|
||
|
||
this.flags.feed_refreshing_in_realtime = true;
|
||
this.setup_feed_refresh();
|
||
}, this));
|
||
|
||
this.socket.on('disconnect', _.bind(function() {
|
||
console.log(["Lost connection to real-time pubsub. Falling back to polling."]);
|
||
this.setup_feed_refresh();
|
||
}, this));
|
||
}
|
||
},
|
||
</code></pre>
|
||
|
||
<p>The app server is ready to handle thousands of concurrent subscription requests, being Node.js and asynchronous:</p>
|
||
|
||
<pre><code># CoffeeScript
|
||
fs = require 'fs'
|
||
io = require('socket.io').listen 8888
|
||
redis = require 'redis'
|
||
|
||
REDIS_SERVER = if process.env.NODE_ENV == 'dev' then 'localhost' else 'db01'
|
||
client = redis.createClient 6379, REDIS_SERVER
|
||
|
||
io.sockets.on 'connection', (socket) <del class="diff modified">->
|
||
</del><ins class="diff modified">->
|
||
</ins> console.log " <del class="diff modified">---> </del><ins class="diff modified">---> </ins>New connection brings total to" +
|
||
" #{io.sockets.clients().length} consumers."
|
||
socket.on 'subscribe:feeds', (feeds, username) <del class="diff modified">->
|
||
</del><ins class="diff modified">->
|
||
</ins> socket.subscribe?.end()
|
||
socket.subscribe = redis.createClient 6379, REDIS_SERVER
|
||
|
||
console.log " <del class="diff modified">---> </del><ins class="diff modified">---> </ins>[#{username}] Subscribing to #{feeds.length} feeds"
|
||
socket.subscribe.subscribe feeds
|
||
|
||
socket.subscribe.on 'message', (channel, message) <del class="diff modified">->
|
||
</del><ins class="diff modified">->
|
||
</ins> console.log " <del class="diff modified">---> </del><ins class="diff modified">---> </ins>[#{username}] Update on #{channel}: #{message}"
|
||
socket.emit 'feed:update', channel
|
||
|
||
socket.on 'disconnect', () <del class="diff modified">->
|
||
</del><ins class="diff modified">->
|
||
</ins> socket.subscribe?.end()
|
||
console.log " <del class="diff modified">---> </del><ins class="diff modified">---> </ins>[] Disconnect, there are now" +
|
||
" #{io.sockets.clients().length-1} consumers."
|
||
</code></pre>
|
||
|
||
<p><del class="diff modified">That’s </del><ins class="diff modified">That’s </ins>all there is to it. There a lot going on, but <del class="diff modified">it’s </del><ins class="diff modified">it’s </ins>effectively a small circle composed of subscribers and publishers, using Redis to maintain pubsub connections between the many clients and their many feeds.</p>
|
||
|
||
<p></p></div> </div> </div> <div class='NB-share-header'></div><div class='NB-share-wrapper'><div class='NB-share-inner-wrapper'><div id="NB-share-button-id" class='NB-share-button NB-button'><a href="http://ios.newsblur.com/share"><div>Share this story <span class="NB-share-icon"></span></div></a></div></div></div> <div id="NB-comments-wrapper"> <div class="NB-feed-story-comments"><div class="NB-story-comments-public-header-wrapper"><div class="NB-story-comments-public-header">2 public comments</div></div><div class="NB-story-comment" id="NB-user-comment-34925"><div class="NB-user-avatar"><a class="NB-show-profile" href="http://ios.newsblur.com/show-profile/34925"><img src="http://www.newsblur.com/media/img/reader/default_profile_photo.png" /></a></div><div class="NB-story-comment-author-container"> <div class="NB-story-comment-username">nb015</div> <div class="NB-story-comment-location"><null></div> <div class="NB-story-comment-date">172 days ago</div></div><div class="NB-story-comment-content">Hello World</div> <div class="NB-button-wrapper" style="clear:both; padding-bottom: 8px;"> <div class="NB-story-comment-like-button NB-button"><a href="http://ios.newsblur.com/like-comment/34925"><div class="NB-story-comment-like-button-wrapper"><span class="NB-favorite-icon"></span>Favorite</div></a></div> <div class="NB-story-comment-reply-button NB-button"> <a href="http://ios.newsblur.com/reply/34925/nb015"><div class="NB-story-comment-reply-button-wrapper"> Reply </div></a> </div></div></div><div class="NB-story-comment" id="NB-user-comment-21719"><div class="NB-user-avatar"><a class="NB-show-profile" href="http://ios.newsblur.com/show-profile/21719"><img src="http://www.gravatar.com/avatar/39e9b5dcdc876ad6ea6f1f67227037aa" /></a></div><div class="NB-story-comment-author-container"> <div class="NB-story-comment-username">AlK</div> <div class="NB-story-comment-location">Paris</div> <div class="NB-story-comment-date">134 days ago</div></div><div class="NB-story-comment-content">Testing blurblog!</div> <div class="NB-button-wrapper" style="clear:both; padding-bottom: 8px;"> <div class="NB-story-comment-like-button NB-button"><a href="http://ios.newsblur.com/like-comment/21719"><div class="NB-story-comment-like-button-wrapper"><span class="NB-favorite-icon"></span>Favorite</div></a></div> <div class="NB-story-comment-reply-button NB-button"> <a href="http://ios.newsblur.com/reply/21719/AlK"><div class="NB-story-comment-reply-button-wrapper"> Reply </div></a> </div></div></div></div> </div> <script src="zepto.js"></script><script src="storyDetailView.js"></script></body></html>
|
||
|
||
|
||
2012-12-11 10:32:33.275 NewsBlur[7560:c07] resizeScrollView: {{0, 0}, {320, 460}}
|
||
2012-12-11 10:32:33.276 NewsBlur[7560:c07] Applied Index: Was -2, now 4 (4/5/6) [12 stories - 0]
|
||
2012-12-11 10:32:33.276 NewsBlur[7560:c07]
|
||
|
||
|
||
|
||
htmlString:
|
||
|
||
|
||
<html><head><link rel="stylesheet" type="text/css" href="reader.css" ><link rel="stylesheet" type="text/css" href="storyDetailView.css" ><meta name="viewport" id="viewport" content="width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/></head><body id="story_pane" class="NB-iphone"> <div id="NB-header-container"><div class="NB-header"><div class="NB-header-inner"><div class="NB-story-date">Wednesday, September 5th, 2012 8:21am</div><div class="NB-story-title">Take it to the couch with the NewsBlur iPad app</div><a href="http://ios.newsblur.com/classify-author/" class="NB-story-author " id="NB-story-author"><div class="NB-highlight"></div></a><div id="NB-story-tags" class="NB-story-tags"><a href="http://ios.newsblur.com/classify-tag/mobile" class="NB-story-tag "><div class="NB-highlight"></div>mobile</a></div></div></div></div> <div id="NB-share-bar-wrapper"><div class="NB-story-shares"><div class="NB-story-comments-shares-teaser-wrapper"><div class="NB-story-comments-shares-teaser"><div class="NB-story-comments-label"><b>1 comment</b></div><div class="NB-story-share-profiles NB-story-share-profiles-comments"><div class="NB-story-share-profile"><div class="NB-user-avatar"><a id="NB-user-share-bar-33405" class="NB-show-profile" href="http://ios.newsblur.com/show-profile/33405"><div class="NB-highlight"></div><img src="http://graph.facebook.com/2231474/picture" /></a></div></div></div><div class="NB-right"><div class="NB-story-share-profiles NB-story-share-profiles-shares"></div><div class="NB-story-share-label"><b>1 share</b></div></div></div></div></div></div></div></div> <div class="NB-san-serif" id="NB-font-style"> <div class="NB-medium" id="NB-font-size"> <div class="NB-story"><p>There’s no wrong way to hold an iPad loaded with <a href="http://www.newsblur.com/ipad">the brand new NewsBlur iPad app</a>, provided it’s facing you and turned on.</p>
|
||
|
||
<p><a href="http://www.newsblur.com/ipad"><img src="http://f.cl.ly/items/1l3g3k0O301j450e470c/iPad.png" title="The NewsBlur iPad app in revealing positions" /></a></p>
|
||
|
||
<p>This brand new iPad app is not just an accessory to the web. It’s a full blown reading experience. Here are some of the many features now available in the palm of your hands:</p>
|
||
|
||
<ul><li>All your sites, folders, and friend’s blurblogs</li>
|
||
<li>Super-fast everything, from near-instant downloading of stories to the mouthfeel of the app itself</li>
|
||
<li>Commenting on stories and sharing them on your blurblog</li>
|
||
<li>New users can easily get started by importing directly from Google Reader, so you can tell friends about the app without having them to go the website first</li>
|
||
</ul><p>The biggest new feature is all about sharing stories with people. Blurblogs, those shared story feeds, are now part of your feed list. And you can expand your network by following more people directly from the app. Following more people means being exposed to stories from sites you may not have even heard of. And because the NewsBlur iPad app is so fast, you can traverse between stories quickly, settling on the ones that look interesting. And better yet, see contribute to a discussion between friends, all on the app.</p>
|
||
|
||
<p>But wait, there’s more! In fact, there’s a whole lot more, because this is a universal iOS app, which means there’s an iPhone app to boot. Everything you can do on the iPad app is available on the iPhone app.</p>
|
||
|
||
<p><a href="http://www.newsblur.com/ipad"><img src="http://f.cl.ly/items/3u222b2Q0d2v2I440N02/iPhone.png" title="NewsBlur iPhone app to boot" /></a></p>
|
||
|
||
<p>The iPad app and latest version of the iPhone app were built by my good friend Roy. Now that the Y Combinator summer has ended, we wish him well as he’s moving on to pursue his non-news dreams. So long buddy, and thanks for all the hard work this summer. Roy <a href="http://roycyang.tumblr.com/post/30118352382/what-ive-learned-during-my-summer-in-yc">wrote about his impression</a> of Y Combinator and the past summer.</p>
|
||
|
||
<p>Go <a href="http://www.newsblur.com/ipad">download the NewsBlur iOS app</a> and forget about sitting at your desk.</p></div> </div> </div> <div class='NB-share-header'></div><div class='NB-share-wrapper'><div class='NB-share-inner-wrapper'><div id="NB-share-button-id" class='NB-share-button NB-button'><a href="http://ios.newsblur.com/share"><div>Share this story <span class="NB-share-icon"></span></div></a></div></div></div> <div id="NB-comments-wrapper"> <div class="NB-feed-story-comments"><div class="NB-story-comment" id="NB-user-comment-33405"><div class="NB-user-avatar"><a class="NB-show-profile" href="http://ios.newsblur.com/show-profile/33405"><img src="http://graph.facebook.com/2231474/picture" /></a></div><div class="NB-story-comment-author-container"> <div class="NB-story-comment-username">satadru</div> <div class="NB-story-comment-location">New York, NY</div> <div class="NB-story-comment-date">96 days ago</div></div><div class="NB-story-comment-content">And now awaiting sharing on an android version... (Blar doesn't support sharing yet.)</div> <div class="NB-button-wrapper" style="clear:both; padding-bottom: 8px;"> <div class="NB-story-comment-like-button NB-button"><a href="http://ios.newsblur.com/like-comment/33405"><div class="NB-story-comment-like-button-wrapper"><span class="NB-favorite-icon"></span>Favorite</div></a></div> <div class="NB-story-comment-reply-button NB-button"> <a href="http://ios.newsblur.com/reply/33405/satadru"><div class="NB-story-comment-reply-button-wrapper"> Reply </div></a> </div></div></div></div> </div> <script src="zepto.js"></script><script src="storyDetailView.js"></script></body></html>
|