NewsBlur/blog/_site/page9/index.html

541 lines
48 KiB
HTML
Raw Normal View History

2021-06-22 12:50:02 -04:00
<!DOCTYPE html>
<html lang="en"><head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
<title>Page 9 of 11 for The NewsBlur Blog | A new sound of an old instrument</title>
2021-06-22 12:50:02 -04:00
<meta name="generator" content="Jekyll v4.2.0" />
<meta property="og:title" content="The NewsBlur Blog" />
<meta property="og:locale" content="en_US" />
<meta name="description" content="NewsBlur is a personal news reader that brings people together to talk about the world. A new sound of an old instrument." />
<meta property="og:description" content="NewsBlur is a personal news reader that brings people together to talk about the world. A new sound of an old instrument." />
2021-06-28 18:50:30 -04:00
<link rel="canonical" href="https://blog.newsblur.com/page9/" />
<meta property="og:url" content="https://blog.newsblur.com/page9/" />
2021-06-22 12:50:02 -04:00
<meta property="og:site_name" content="The NewsBlur Blog" />
2021-06-28 18:50:30 -04:00
<link rel="prev" href="https://blog.newsblur.com/page8" />
<link rel="next" href="https://blog.newsblur.com/page10" />
2021-06-22 12:50:02 -04:00
<meta name="twitter:card" content="summary" />
<meta property="twitter:title" content="The NewsBlur Blog" />
<script type="application/ld+json">
2021-06-28 18:50:30 -04:00
{"@type":"WebPage","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"https://blog.newsblur.com/assets/newsblur_logo_512.png"}},"headline":"The NewsBlur Blog","description":"NewsBlur is a personal news reader that brings people together to talk about the world. A new sound of an old instrument.","url":"https://blog.newsblur.com/page9/","@context":"https://schema.org"}</script>
2021-06-22 12:50:02 -04:00
<!-- End Jekyll SEO tag -->
<link rel="stylesheet" href="/assets/main.css">
<link rel="stylesheet" type="text/css" href="https://cloud.typography.com/6565292/711824/css/fonts.css" />
2021-06-28 18:50:30 -04:00
<link rel="stylesheet" type="text/css" href="https://cloud.typography.com/6565292/731824/css/fonts.css" /><link type="application/atom+xml" rel="alternate" href="https://blog.newsblur.com/feed.xml" title="The NewsBlur Blog" /></head>
2021-06-22 12:50:02 -04:00
<body><header class="site-header" role="banner">
<div class="wrapper"><a class="site-title" rel="author" href="/">
<div class="site-title-image">
<img src="/assets/newsblur_logo_512.png">
</div>
<div class="site-title-text">The NewsBlur Blog</div>
</a><nav class="site-nav">
<input type="checkbox" id="nav-trigger" class="nav-trigger" />
<label for="nav-trigger">
<span class="menu-icon">
<svg viewBox="0 0 18 15" width="18px" height="15px">
<path d="M18,1.484c0,0.82-0.665,1.484-1.484,1.484H1.484C0.665,2.969,0,2.304,0,1.484l0,0C0,0.665,0.665,0,1.484,0 h15.032C17.335,0,18,0.665,18,1.484L18,1.484z M18,7.516C18,8.335,17.335,9,16.516,9H1.484C0.665,9,0,8.335,0,7.516l0,0 c0-0.82,0.665-1.484,1.484-1.484h15.032C17.335,6.031,18,6.696,18,7.516L18,7.516z M18,13.516C18,14.335,17.335,15,16.516,15H1.484 C0.665,15,0,14.335,0,13.516l0,0c0-0.82,0.665-1.483,1.484-1.483h15.032C17.335,12.031,18,12.695,18,13.516L18,13.516z"/>
</svg>
</span>
</label>
<div class="trigger"><a class="page-link" href="https://www.newsblur.com">Visit NewsBlur ➤</a></div>
</nav></div>
</header>
<header class="site-subheader" role="banner">
<div class="wrapper">
<div class="top">
NewsBlur is a personal news reader that brings people together to talk about the world.
</div>
<div class="bottom">
A new sound of an old instrument.
</div>
</div>
</header>
<main class="page-content" aria-label="Content">
<div class="wrapper">
<div class="home">
2021-07-01 15:01:42 -04:00
<ul class="post-list"><li><span class="post-meta">Mar 17, 2013</span>
<h3>
<a class="post-link" href="/2013/03/17/three-months-to-scale-newsblur/">
Three Months to Scale NewsBlur
</a>
</h3>
<div class="post-content e-content" itemprop="articleBody">
<p>At 4:16pm last Wednesday I got a short and to-the-point email from Nilay Patel at The Verge with only a link that started with the host “googlereader.blogspot.com”. The sudden spike in NewsBlurs visitors immediately confirmed — Google was shutting down Reader.</p>
<figure class="tmblr-full" data-orig-height="800" data-orig-width="600" data-orig-src="https://s3.amazonaws.com/static.newsblur.com/blog/Late%20night%20at%20the%20office.jpeg"><img width="500" style="margin: 0 auto;" data-orig-height="800" data-orig-width="600" src="https://s3.amazonaws.com/static.newsblur.com/blog/Late%20night%20at%20the%20office.jpeg" /></figure>
<h5 id="late-night-at-the-office">Late night at the office</h5>
<p>I had been preparing for a black swan event like this for the last four years since I began NewsBlur. With the deprecation of their social features a year ago I knew it was only a matter of time before Google stopped supporting Reader entirely. I did not expect it to come this soon.</p>
<p>As the <a href="http://storify.com/mattrose/reader-o-calypse-from-the-pov-of-a-competitor">Storify history of the Reader-o-calypse</a>, NewsBlur suffered a number of hurdles with the onslaught of new subscribers.</p>
<h2 id="a-few-of-my-challenges-and-solutions">A few of my challenges and solutions</h2>
<p>I was able to handle the 1,500 users who were using the service everyday, but when 50,000 users hit an uncachable and resource intensive backend, unless youve done your homework and load tested the living crap out of your entire stack, theres going to be trouble brewing. Heres just a few of the immediate challenges I faced over the past four days:</p>
<ul>
<li>My hosting provider, Reliable Hosting Services, was neither reliable, able to host my increasing demands, or a service I could count on. I switched to Digital Ocean and immediately got to <a href="https://github.com/samuelclay/NewsBlur/blob/master/fabfile.py#L934-L970">writing new Fabric scripts</a> so I could deploy a new app/task server by issuing a single command and having it serve requests automatically within 10 minutes of bootstrapping.</li>
<li>It didnt take long to max out my Amazon Simple Email Service (SES) accounts quota of 10,000 emails a day. So a few hours into the melee I switched to Mailgun, which unfortunately resulted in emailing myself 250,000 error reports. If you tried to email me and couldnt get through, its because 50,000 emails about lost database connections made their way ahead of you in line.</li>
<li>Eventually, I was just plain blacklisted on SES for sending too many emails.</li>
<li>Fortunately, when the PayPal fraud department called because of an unprecedented spike in payments, I was prepared.</li>
</ul>
<blockquote>
<p>Paypals fraud department just called, asked me whats going on. Asked the rep from Omaha if shes heard of Reader, and then a big Ohhh.</p>
<p>— NewsBlur (@NewsBlur) <a href="https://twitter.com/NewsBlur/status/313354032083259394">March 17, 2013</a></p>
</blockquote>
<script async="" src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
<ul>
<li>HAProxy would serve errors (site is down, maintenance, timeouts, etc) with a 200 OK status code instead of the proper 500 Exception status code because of a ridiculous undocumented requirement to <a href="https://github.com/samuelclay/NewsBlur/blob/master/templates/502.http#L1-L4">include HTTP Headers at the top of the error template</a>. When your webapp uses status codes to determine errors, you get extremely strange behavior when it loads utter crap into your DOM.</li>
<li>The inevitable file descriptor limits on Linux means that for every database connection you make, you use up one of the 1,024 file descriptors that are allocated to your process by default. Changing these limits is not only non-trivial, but they dont tend to stick. This is responsible for bringing down Mongo, PostgreSQL, and the real-time Node servers, all at different times of the night.</li>
<li>The support queue is enormous and Ive had to spend big chunks of my 16 hour days reassuring paying customers that eventually Stripe will forgive me and my unresponsive servers and will send the payment notification that is responsible for automatically upgrading their accounts to premium.</li>
</ul>
<figure class="tmblr-full" data-orig-height="450" data-orig-width="600" data-orig-src="https://s3.amazonaws.com/static.newsblur.com/blog/St%20Pattys%20Day%20Desk.jpeg"><img width="500" style="margin: 0 auto;" data-orig-height="450" data-orig-width="600" src="https://s3.amazonaws.com/static.newsblur.com/blog/St%20Pattys%20Day%20Desk.jpeg" /></figure>
<h5 id="the-sad-extent-of-my-st-patricks-day">The sad extent of my St. Patricks Day</h5>
<p>As a one-man-shop it has been humbling to receive the benefit of the doubt from many who have withheld their judgment despite the admittedly slow loadtimes and downtime NewsBlur experienced. Having the support of the amazing NewsBlur community is more than a guy could ask for. The tweets of encouragement, voting NewsBlur up on <a href="http://replacereader.com">replacereader.com</a> (If you havent yet, please tweet a vote for <a href="https://twitter.com/intent/tweet?source=webclient&amp;text=I%20think%20%23NewsBlur%20should%20%23replacereader.%20http://replacereader.com">“#newsblur to #replacereader”</a>), and the many positive comments and blog posts from people who have tried NewsBlur is great.</p>
<p>It has also been a dream come true to receive accolades from the many who are trying NewsBlur for the first time and loving it. Since the announcement, NewsBlur has welcomed 5,000 new premium subscribers and 60,000 new users (from 50,000 users originally).</p>
<p>&lt;table cellpadding=”12” cellspacing=”12” width=”100%”&gt;&lt;tr&gt;&lt;td&gt;<figure class="tmblr-full" data-orig-height="225" data-orig-width="300" data-orig-src="https://s3.amazonaws.com/static.newsblur.com/blog/Shirt%201.jpg"><img width="300" data-orig-height="225" data-orig-width="300" src="https://s3.amazonaws.com/static.newsblur.com/blog/Shirt%201.jpg" /></figure>&lt;/td&gt; &lt;td&gt;<figure class="tmblr-full" data-orig-height="200" data-orig-width="300" data-orig-src="https://s3.amazonaws.com/static.newsblur.com/blog/Shirt%202.jpg"><img width="300" data-orig-height="200" data-orig-width="300" src="https://s3.amazonaws.com/static.newsblur.com/blog/Shirt%202.jpg" /></figure>&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;&lt;td&gt;<figure class="tmblr-full" data-orig-height="225" data-orig-width="300" data-orig-src="https://s3.amazonaws.com/static.newsblur.com/blog/Shirt%203.jpg"><img width="300" data-orig-height="225" data-orig-width="300" src="https://s3.amazonaws.com/static.newsblur.com/blog/Shirt%203.jpg" /></figure>&lt;/td&gt; &lt;td&gt;<figure class="tmblr-full" data-orig-height="225" data-orig-width="300" data-orig-src="https://s3.amazonaws.com/static.newsblur.com/blog/Shirt%204.jpg"><img width="300" data-orig-height="225" data-orig-width="300" src="https://s3.amazonaws.com/static.newsblur.com/blog/Shirt%204.jpg" /></figure>&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;&lt;td&gt;<figure class="tmblr-full" data-orig-height="400" data-orig-width="300" data-orig-src="https://s3.amazonaws.com/static.newsblur.com/blog/Shirt%205.jpg"><img width="300" data-orig-height="400" data-orig-width="300" src="https://s3.amazonaws.com/static.newsblur.com/blog/Shirt%205.jpg" /></figure>&lt;/td&gt; &lt;td&gt;<figure class="tmblr-full" data-orig-height="405" data-orig-width="300" data-orig-src="https://s3.amazonaws.com/static.newsblur.com/blog/Shirt%206.jpg"><img width="300" data-orig-height="405" data-orig-width="300" src="https://s3.amazonaws.com/static.newsblur.com/blog/Shirt%206.jpg" /></figure>&lt;/td&gt; &lt;/tr&gt;&lt;/table&gt;</p>
<h5 id="newsblur-users-are-intelligent-kind-and-good-looking">NewsBlur users are intelligent, kind, and good looking!</h5>
<h1 id="the-next-three-months">The next three months</h1>
<p>Over the next three months Ill be working on:</p>
<ul>
<li>Scaling, scaling, scaling</li>
<li>Launching the redesign (<a href="http://dev.newsblur.com">which you can preview</a>)</li>
<li>Listening to all of you</li>
</ul>
<p>For those of you who are still trying to decide where to go now that youre a Reader refugee let me tell you a few of the unique things NewsBlur has to offer:</p>
<ol>
<li>Radical transparency. <a href="https://github.com/samuelclay">NewsBlur is totally open source</a> and will remain that way.</li>
<li>It still feels like RSS, just with a few more bells and whistles. NewsBlur provides actual list of posts, as opposed to the more curated magazine format of some of the other popular replacements. This clean interface makes it easy to see the stories you want. One innovation however is the four different view options you have. NewsBlur can show you the original site, feed, text or story view.</li>
<li>It has training. NewsBlur hides stories you dont want to read based on tags, keywords, authors, etc. It also highlights stories you want to read, based on the same criteria. This allows you to find the stories you care about, not just the stories that the hive cares about. And best of all, NewsBlur will show you why stories are either highlighted or hidden by showing the criteria in green or red.</li>
<li>NewsBlur has rebuilt the social community that Google had stripped out of Reader. Users can share stories through their Blurblog and discover new content by following friends Blurblogs. <a href="http://popular.newsblur.com">The People Have Spoken</a> is the blurblog of popular stories.</li>
<li>Because NewsBlur is entirely open-source, if you dont want to pay you can host your own server. <a href="http://github.com/samuelclay/NewsBlur">Instructions are on GitHub</a>, where you can also find the source code for the <a href="https://github.com/samuelclay/NewsBlur/tree/master/media/ios">NewsBlur iPhone + iPad app</a> and <a href="https://github.com/samuelclay/NewsBlur/tree/master/media/android/NewsBlur">Android app</a>.</li>
<li>Most importantly, NewsBlur is not entirely a free app. The immediate benefits of revenue have been very clear over the past few days. Not only are NewsBlurs interests aligned with its users, but as more users join NewsBlur, it makes more revenue that can be used to directly support the new users. Not convinced that paid is better than free? Read Pinboards Maciej Ceglowskis essay <a href="http://blog.pinboard.in/2011/12/don_t_be_a_free_user/">Dont Be a Free User</a>.</li>
</ol>
<figure class="tmblr-full" data-orig-height="450" data-orig-width="600" data-orig-src="https://s3.amazonaws.com/static.newsblur.com/blog/Shiloh%20in%20good%20times.jpeg"><img width="500" style="margin: 0 auto;" data-orig-height="450" data-orig-width="600" src="https://s3.amazonaws.com/static.newsblur.com/blog/Shiloh%20in%20good%20times.jpeg" /></figure>
<h5 id="shiloh-during-better-times-your-premium-subscription-goes-to-both-server-costs-and-feeding-her">Shiloh during better times. Your premium subscription goes to both server costs and feeding her</h5>
<p>With NewsBlurs native iOS app and Android app, you can read your news and share it with your friends anywhere. And with the coming improvements over the next three months, you bet NewsBlur will be the #1 choice for Google Reader refugees.</p>
<p><a href="http://www.newsblur.com">Join NewsBlur for $24/year</a> and discover what RSS should have been.</p>
</div>
</li><li><span class="post-meta">Jan 3, 2013</span>
<h3>
<a class="post-link" href="/2013/01/03/privacy-controls/">
A blurblog of one&#39;s own: new privacy controls
</a>
</h3>
<div class="post-content e-content" itemprop="articleBody">
<p>Here at NewsBlur HQ, we love greeting each new day by seeing what everyone posts on their blurblogs, but we understand that not everyone might want to have their reading preferences broadcast to the public (or have the public broadcast its opinions on said preferences). So were introducing a special new service for premium account holders that allows you to protect your posts from prying eyes.</p>
<p><img src="https://s3.amazonaws.com/static.newsblur.com/blog/Screen%20Shot%202012-12-17%20at%20Dec%2017%2012.17.51%20PM.png" alt="image" /></p>
<p>Just click the little sprocket in the bottom left of your dashboard and select “Profile &amp; Blurblog,” where youll be given one of three options:</p>
<ul>
<li>Public (default): The good old-fashioned oversharing youve come to know and love.</li>
<li>Protected: Everyone can see your stories, but only approved NewsBlur followers can reply or comment to your shares. Continue to drop knowledge for a grateful public, minus the peanut gallery.</li>
<li>Private: Only your approved followers can see your shares and comment. The outside world will never know about your love of bunny photos and animated GIFs. If you choose one of the latter two options, youll receive an e-mail every time someone requests to follow you, allowing you to carefully curate your inner circle. Want to remove any of your existing followers? Just visit their profile to boot them from blurblog access.</li>
</ul>
<p>Go forth and privatize! Itll be our little secret, at least until we discover that one of you is having an affair with your biographer.</p>
</div>
</li><li><span class="post-meta">Dec 17, 2012</span>
2021-06-22 12:50:02 -04:00
<h3>
2021-06-22 12:56:26 -04:00
<a class="post-link" href="/2012/12/17/sharing-bookmarklet/">
2021-06-22 12:50:02 -04:00
The sharing bookmarklet: bringing your online explorations to NewsBlur
</a>
</h3>
<div class="post-content e-content" itemprop="articleBody">
<p>There are lots of reasons not to post a cool article youve seen to your blurblog. Maybe you already follow too many blogs, and dont have room to add any more to your feed (in which case, may we humbly recommend a Premium account?) Maybe you dont want everyone to know just how crazy youve gotten about jai-alai or aerotrekking or My Little Pony: Friendship Is Magic. Or maybe you found a cool article on Facebook or Twitter or through an e-mail from a friend, and dont want to go through the hassle of adding the sites whole feed to your NewsBlur dashboard just to post one piece.</p>
<p>Thats what the <a href="http://www.newsblur.com/?next=goodies">NewsBlur bookmarklet tool</a> is for. Whether its a great article from a site that you dont like enough to follow regularly, or a first glimpse at an intriguing new site, the bookmarklet makes it easy to post anything you find around the Web to your blurblog.</p>
2021-06-22 13:05:48 -04:00
<p><img src="https://s3.amazonaws.com/static.newsblur.com/blog/Screen%20Shot%202012-12-17%20at%20Dec%2017%2011.58.26%20AM.png" alt="image" /></p>
2021-06-22 12:50:02 -04:00
<p>Setting up the bookmarklet tool is easy: Click on the little sprocket in the bottom left of your dashboard, and choose “Goodies &amp; Extras” from the menu. Youll see “Add Site &amp; Share Story Bookmarklet,” and next to that, a button that says “Share on NewsBlur.” Drag the button to the Bookmarks Bar in your browser, and youre in business.</p>
2021-06-22 13:05:48 -04:00
<p><a href="http://www.newsblur.com/?next=goodies"><img src="https://s3.amazonaws.com/static.newsblur.com/blog/Screen%20Shot%202012-12-17%20at%20Dec%2017%2011.56.14%20AM.png" alt="image" /></a></p>
2021-06-22 12:50:02 -04:00
<p>The next time you see an article that strikes your fancy, just click the bookmarklet and the NewsBlur window will open. (If you click it by accident or decide you dont want to share, just click anywhere outside of the box, and youll be back where you started.) The bookmarklet automatically selects all text on a page by default, but if you only want to blog a certain chunk of a story, just highlight it beforehand, and itll appear solo in the box.</p>
<p>You can also type within the box to edit the headline and text or delete any extraneous junk that may have wandered in. Add a comment of your own, click “Share This Story,” and youre on your way. Its frankly almost too easy, so be sure youre in the right browser tab when you launch it <a href="http://alliepape.newsblur.com">Allie</a> once accidentally posted the contents of her Gmail inbox to her blurblog when she wasnt paying attention. If any of you happened to be on there in those two minutes, she hopes you enjoyed the sneak peek into her darkest secrets, like all the books she has on hold at the library.</p>
<p>Using the bookmarklet is awesome and makes NewsBlurs content (and by extension, <a href="http://popular.newsblur.com">the Popular blog</a>) far more interesting and diverse, so get out there and drag back the best of the Web to share with your fellow users. <a href="http://www.youtube.com/watch?v=S_E2EHVxNAE">As Richard Marx would put it</a>: Wherever you go, whatever you do (on the Internet, at least), the NewsBlur bookmarklet will be right here waiting for you.</p>
</div>
</li><li><span class="post-meta">Oct 29, 2012</span>
<h3>
2021-06-22 12:56:26 -04:00
<a class="post-link" href="/2012/10/29/free-newsblur-swag-time/">
2021-06-22 12:50:02 -04:00
Time for some free NewsBlur swag!
</a>
</h3>
<div class="post-content e-content" itemprop="articleBody">
<p>Thats right, t-shirts, stickers, buttons, and magnets. Ive got a whole lot of good stuff to send out, so give me some critical info and Ill get you hooked up with the latest in startup love.</p>
<p><strong>The t-shirt entry form has been taken down as of Thursday, November 29th. Hopefully youve ordered your t-shirt by now.</strong></p>
</div>
</li><li><span class="post-meta">Oct 26, 2012</span>
<h3>
2021-06-22 12:56:26 -04:00
<a class="post-link" href="/2012/10/26/ios-update-1-6/">
2021-06-22 12:50:02 -04:00
Extreme makeover: NewsBlur iOS app edition
</a>
</h3>
<div class="post-content e-content" itemprop="articleBody">
<p>Now that NewsBlur has joined the wonderful world of Android, were turning our attention back to the iOS app, with a full-scale feature parity push for the new iPhone 5 and iOS 6. Its perfect for catching up on your reading when you realize that Apple Maps has sent you to the wrong address. Again.</p>
2021-06-22 13:05:48 -04:00
<p><img src="https://s3.amazonaws.com/static.newsblur.com/blog/iOS%20v1.6%20-%20Folders.png" alt="image" /> <img src="https://s3.amazonaws.com/static.newsblur.com/blog/iOS%20v1.6%20-%20Menus.png" alt="image" /></p>
2021-06-22 12:50:02 -04:00
<p>Weve tried to incorporate as many of your suggestions as possible, and here are some of the new features youll find:</p>
<ul>
<li>Collapsible folders: Check out folders one at a time (and save your scrolling fingers some work)</li>
<li>Saved stories: Access all your saved stories from the Web or other devices, and save other stories for later</li>
<li>Mark stories as unread: For that fresh new-story feeling</li>
<li>Send stories to Instapaper for reading later, or e-mail them to your friends/enemies</li>
<li>Share stories on Twitter and Facebook, and crush social-media naysayers who think youre just telling people what you ate for breakfast</li>
<li>New app-wide menus: An interface almost as stylish as your new device, and far less vulnerable to breakage and theft</li>
<li>Bug fixes, improvements, speed-ups, fine-tuning, and other things that arent particularly noticeable (but done because we love you)</li>
</ul>
<p>Check out the update, and be sure to let us know if anything isnt working the way it should. And Android folks, dont feel left out; an update with bug fixes is in the pipeline, so stay tuned (and thanks for the feedback!).</p>
</div>
</li><li><span class="post-meta">Oct 18, 2012</span>
<h3>
2021-06-22 12:56:26 -04:00
<a class="post-link" href="/2012/10/18/do-the-robot-the-official-newsblur-android-app-is/">
2021-06-22 12:50:02 -04:00
Do the robot: the official NewsBlur Android app is here
</a>
</h3>
<div class="post-content e-content" itemprop="articleBody">
<p>Youve been bugging us for two years about it, and now its finally here: NewsBlurs expansion to mobile is complete, with our first-ever <a href="http://www.newsblur.com/android">official Android app</a> ready and waiting for your device. Thanks to the gifts of money and time from Y Combinator and the programming prowess of Papermill creator Ryan Bateman (otherwise known as <a href="http://twitter.com/secretsquirrel">@secretsquirrel</a>), you can now join your iOS brethren on the couch with your daily dose of RSS goodness. Level of accompanying smugness is up to you.</p>
2021-06-22 13:05:48 -04:00
<p><img src="https://s3.amazonaws.com/static.newsblur.com/blog/v1%20-%201.png" alt="image" /> <img src="https://s3.amazonaws.com/static.newsblur.com/blog/v1%20-%203.png" alt="image" /> <img src="https://s3.amazonaws.com/static.newsblur.com/blog/v1%20-%203.png" alt="image" /> <img src="https://s3.amazonaws.com/static.newsblur.com/blog/v1%20-%204.png" alt="image" /></p>
2021-06-22 12:50:02 -04:00
<p>The Android app has all the features of the iOS app, including:</p>
<ul>
<li>All your sites, folders, and friends blurblogs</li>
<li>Speedy downloading of sites and general alacrity of use</li>
<li>The ability to share and comment on stories on your blurblog</li>
<li>Direct imports from Google Reader: download the app without ever having to hit the Web to set up an account</li>
<li>Follow new people, read their shares, and generally expand your knowledge, worldview, and personal magnetism</li>
</ul>
<p>Plus, it has that delicious Android flavor, with half the calories.</p>
<p>Download the official <a href="http://www.newsblur.com/android">NewsBlur Android app</a>. Tell your friends! Tip your waitstaff. Try the veal. Floss twice a day. Call your mom, she misses you.</p>
</div>
</li><li><span class="post-meta">Oct 1, 2012</span>
<h3>
2021-06-22 12:56:26 -04:00
<a class="post-link" href="/2012/10/01/giving-life-to-popular/">
2021-06-22 12:50:02 -04:00
Giving Life to &quot;The People Have Spoken&quot;
</a>
</h3>
<div class="post-content e-content" itemprop="articleBody">
<p>For a long time, weve maintained <a href="http://popular.newsblur.com">The People Have Spoken</a>, the blog of whats popular on NewsBlur, with a simple algorithm that measured how often something was shared. While thats a great way to see the stuff our users really like (<a href="http://xkcd.com/">Randall Munroe</a> would probably win the NewsBlur equivalent of the Oscar), it makes it harder for everyone to find new stuff that they might not have seen or heard of before. So weve decided to throw a human into the mix. Ill let Allie introduce herself in her own words:</p>
2021-06-22 13:05:48 -04:00
<p><a href="http://alliepape.com"><img src="https://s3.amazonaws.com/static.newsblur.com/blog/BigShot.jpg" alt="image" /></a></p>
2021-06-22 12:50:02 -04:00
<p>Hi, Im <a href="http://alliepape.com">Allie Pape</a>. Im a journalist here in San Francisco, and I met Sam when he e-mailed me about <a href="http://www.thebolditalic.com/alliepape/stories/2206-friend-me">an article I wrote about making friends in the city</a>. I love to read and spend most of my day paging through articles on the Internet, so I was excited to use NewsBlur as a way to manage and share my discoveries.</p>
<p>Sams given me the keys to the Popular account, so Im going to be following as many active NewsBlur users as possible, and re-posting 3-4 articles per day that I think are particularly notable. Ill also sprinkle in some things that I find outside of NewsBlur, if I think theyre interesting enough.</p>
<p>This is an experiment, and since Im just one person, you will probably find some biases in the kind of stuff I like to post. I prefer long pieces to short, and I definitely have a few areas that are of major interest to me (food, pop culture, feminism and womens issues, and socioeconomic trends) and a few that arent (sports, tech). Ill try to read outside of my comfort zone when I can, but I cant promise that I can be all things to all people. The hope is, though, that I can get more people reading NewsBlur, which means Sam can afford to hire other people with different interests to do additional curation for the community. And even if you think my taste is terrible, its probably more interesting than seeing the same three or four blogs posts over and over again.</p>
<p>If you want to know more about me or have comments or feedback, you can write to me at <a href="mailto:allie@newsblur.com">allie@newsblur.com</a>.</p>
<p>I hope youll subscribe to the Popular blurblog, and that Im able to introduce you to something new and cool you havent seen before.</p>
</div>
</li><li><span class="post-meta">Sep 5, 2012</span>
<h3>
2021-06-22 12:56:26 -04:00
<a class="post-link" href="/2012/09/05/newsblur-ipad-app/">
2021-06-22 12:50:02 -04:00
Take it to the couch with the NewsBlur iPad app
</a>
</h3>
<div class="post-content e-content" itemprop="articleBody">
<p>Theres no wrong way to hold an iPad loaded with <a href="http://www.newsblur.com/ipad">the brand new NewsBlur iPad app</a>, provided its facing you and turned on.</p>
2021-06-22 13:05:48 -04:00
<p><a href="http://www.newsblur.com/ipad"><img src="https://s3.amazonaws.com/static.newsblur.com/blog/iPad.png" alt="image" title="The NewsBlur iPad app in revealing positions" /></a></p>
2021-06-22 12:50:02 -04:00
<p>This brand new iPad app is not just an accessory to the web. Its 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 friends 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, theres more! In fact, theres a whole lot more, because this is a universal iOS app, which means theres an iPhone app to boot. Everything you can do on the iPad app is available on the iPhone app.</p>
2021-06-22 13:05:48 -04:00
<p><a href="http://www.newsblur.com/ipad"><img src="https://s3.amazonaws.com/static.newsblur.com/blog/iPhone.png" alt="image" title="NewsBlur iPhone app to boot" /></a></p>
2021-06-22 12:50:02 -04:00
<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 hes 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>
</li><li><span class="post-meta">Jul 30, 2012</span>
<h3>
2021-06-22 12:56:26 -04:00
<a class="post-link" href="/2012/07/30/introducing-blurblogs-roy-and-y-combinator/">
2021-06-22 12:50:02 -04:00
Introducing Blurblogs, Roy, and Y Combinator
</a>
</h3>
<div class="post-content e-content" itemprop="articleBody">
<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/2021/06/21/2012-03-01-going-full-time.html](http://blog.newsblur.com/2021/06/21/2012-03-01-going-full-time.html)">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. And now there are three big announcements to make. # 1. NewsBlur is now a *social* news reader 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.<figure class="tmblr-full" data-orig-height="869" data-orig-width="600" data-orig-src="http://f.cl.ly/items/3e1r202n3I232M473J2b/blurblog%20screenshot.png"><img style="margin: 0 auto;width: 600px; height: 869px; border: 1px solid #A0A0A0" data-orig-height="869" data-orig-width="600" src="http://f.cl.ly/items/3e1r202n3I232M473J2b/blurblog%20screenshot.png" /></figure>Since youre 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. Its a new way of sharing the news. And because NewsBlur is already an easy to use news reader, its simple to find and share stories that your friends will care about. Every NewsBlur user has their own blurblog. All you have to do is signup for an account on <a href="[http://www.newsblur.com](http://www.newsblur.com)">www.newsblur.com</a> and share interesting stories. # 2. Y Combinator 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.[^1] <a href="http://www.ycombinator.com"><figure class="tmblr-full" data-orig-height="81" data-orig-width="500"><img src="https://64.media.tumblr.com/97d36e865086575a3b131e7ec928534e/c3a0661d97716fb7-14/s540x810/172c7f8b8367a623b61a3f26e3d95ff5214b5e2c.png" style="margin: 12px auto;width: 200px;border: none" data-orig-height="81" data-orig-width="500" /></figure></a>Im pleased as punch to announce an investment in NewsBlur by Y Combinator, the investment firm. Over the past two months, weve been humbled by the roster of experienced partners giving us candid advice. Its 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. # 3. Introducing Roy Yang 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. 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.<a href="http://roy.newsblur.com"><figure class="tmblr-full" data-orig-height="334" data-orig-width="500"><img src="https://64.media.tumblr.com/88d3942183371de8e848da2416f28e29/c3a0661d97716fb7-c9/s540x810/028ee543cc6fd18a9daff3b46fbaaf1408994f25.jpg" style="margin: 12px auto;border: none" data-orig-height="334" data-orig-width="500" /></figure></a>Roy is now responsible for both iOS apps and is instrumental in challenging me when I think Im right and am clearly not. Hes got the patience of a monk and the determination of a true New Yorke
<figure data-orig-height="216" data-orig-width="284"><img src="https://64.media.tumblr.com/976b01805af2f28072b5fda19b03553e/c3a0661d97716fb7-2e/s540x810/3d07b12c76cc63bfcb21cee6d866c27dacd129f0.png" style="clear: none; float: left;margin: 0 24px 24px 0;border: 1px solid #A0A0A0;" data-orig-height="216" data-orig-width="284" /></figure>
<figure data-orig-height="216" data-orig-width="284"><img src="https://64.media.tumblr.com/62efdc1b56ca49a5df863ae0ff79b9af/c3a0661d97716fb7-89/s540x810/1b25ff57ad8c97ee62d3d0f621fde66005f5ffc1.png" style="clear: none; float: left;margin: 0 0 24px 0;border: 1px solid #A0A0A0;" data-orig-height="216" data-orig-width="284" /></figure>
<figure data-orig-height="216" data-orig-width="284"><img src="https://64.media.tumblr.com/aa7923057b5317a73d25d587f52b1a9b/c3a0661d97716fb7-74/s540x810/d09e1cbe95c3915f99a9b7b4e29e73c63fda0f4e.png" style="clear: none; float: left;margin: 0 24px 24px 0;border: 1px solid #A0A0A0;" data-orig-height="216" data-orig-width="284" /></figure>
<figure data-orig-height="216" data-orig-width="284"><img src="https://64.media.tumblr.com/430031fdbde97cfda01b197653885cd6/c3a0661d97716fb7-98/s540x810/97b2fb0e47f2b1cf3a1a69ad3dd6aebae0ec4c2d.png" style="clear: none; float: left;margin: 0 0 24px 0;border: 1px solid #A0A0A0;" data-orig-height="216" data-orig-width="284" /></figure>
<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>
</li><li><span class="post-meta">Apr 2, 2012</span>
<h3>
2021-06-22 12:56:26 -04:00
<a class="post-link" href="/2012/04/02/building-real-time-feed-updates-for-newsblur/">
2021-06-22 12:50:02 -04:00
Building real-time feed updates for NewsBlur with Redis and WebSockets
</a>
</h3>
<div class="post-content e-content" itemprop="articleBody">
<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 Im 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. Ive been beta-testing this feature for the past few weeks, and Ive been quite pleased in knowing that Im 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 id="get-blog-updates-in-real-time">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, youll 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 class="language-plaintext highlighter-rouge">&lt;feed&gt;</code> section in the NewsBlur Blogs RSS feed:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>&gt;&gt;&gt; # Python
&gt;&gt;&gt; from utils import feedparser
&gt;&gt;&gt; from pprint import pprint
&gt;&gt;&gt; fp = feedparser.parse('http://blog.newsblur.com/rss')
&gt;&gt;&gt; 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></div></div>
<p>If theres a <code class="language-plaintext highlighter-rouge">rel="hub"</code> node under <code class="language-plaintext highlighter-rouge">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>. Heres the main request that your server has to send:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><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></div></div>
<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 theres a new story, and thats takes some COMET/push technology with the help of WebSockets.</p>
<h2 id="serving-updates-to-visitors-in-real-time">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 data structures, apart from hashes, sets, sorted sets, and key-value, is a pubsub type that is perfect for this kind of update. Users subscribe to the updates of all of the feeds to which they subscribe. When these sites have a new story, they publish a simple notification to each of the feeds subscribers.</p>
<p>Here the feed fetcher is publishing to any listening subscribers.</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><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(" ---&gt; [%-30s] Published to %s subscribers" % (
feed.title[:30], listeners_count))
except redis.ConnectionError:
logging.debug(" ***&gt; [%-30s] Redis is unavailable for real-time." % (
feed.title[:30],))
</code></pre></div></div>
<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 updates via Redis.</p>
<p>The browser opens up a WebSocket and listens for updates for the feeds that they care about:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><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></div></div>
<p>The app server is ready to handle thousands of concurrent subscription requests, being Node.js and asynchronous:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><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) -&gt;
console.log " ---&gt; New connection brings total to" +
" #{io.sockets.clients().length} consumers."
socket.on 'subscribe:feeds', (feeds, username) -&gt;
socket.subscribe?.end()
socket.subscribe = redis.createClient 6379, REDIS_SERVER
console.log " ---&gt; [#{username}] Subscribing to #{feeds.length} feeds"
socket.subscribe.subscribe feeds
socket.subscribe.on 'message', (channel, message) -&gt;
console.log " ---&gt; [#{username}] Update on #{channel}: #{message}"
socket.emit 'feed:update', channel
socket.on 'disconnect', () -&gt;
socket.subscribe?.end()
console.log " ---&gt; [] Disconnect, there are now" +
" #{io.sockets.clients().length-1} consumers."
</code></pre></div></div>
<p>Thats all there is to it. There a lot going on, but its effectively a small circle composed of subscribers and publishers, using Redis to maintain pubsub connections between the many clients and their many feeds.</p>
<script src="http://yandex.st/highlightjs/6.1/highlight.min.js"></script>
<link rel="stylesheet" type="text/css" href="http://yandex.st/highlightjs/6.1/styles/github.min.css" />
<script type="text/javascript">
hljs.initHighlightingOnLoad();
</script>
</div>
</li></ul>
<!-- Pagination links -->
<div class="pagination">
<a href="/page8" class="previous">
Previous
</a>
<span class="page_number ">
Page: 9 of 11
2021-06-22 12:50:02 -04:00
</span>
<a href="/page10" class="next">Next</a>
</div>
<p class="rss-subscribe">subscribe <a href="/feed.xml">via RSS</a></p></div>
</div>
</main><footer class="site-footer h-card">
<data class="u-url" href="/"></data>
<div class="wrapper">
<h2 class="footer-heading">The NewsBlur Blog</h2>
<div class="footer-col-wrapper">
<div class="footer-col footer-col-1"><ul class="social-media-list"><li><a href="https://github.com/samuelclay"><svg class="svg-icon"><use xlink:href="/assets/minima-social-icons.svg#github"></use></svg> <span class="username">samuelclay</span></a></li><li><a href="https://www.twitter.com/newsblur"><svg class="svg-icon"><use xlink:href="/assets/minima-social-icons.svg#twitter"></use></svg> <span class="username">newsblur</span></a></li><li><a href="mailto:blog@newsblur.com?subject=Hello from the NewsBlur blog"><svg class="svg-icon"><use xlink:href="/assets/minima-social-icons.svg#email"></use></svg> <span class="username">blog@newsblur.com</span></a></li></ul>
</div>
<div class="footer-col footer-col-3">
<p>NewsBlur is a personal news reader that brings people together to talk about the world.<br />
A new sound of an old instrument.<br />
</p>
</div>
</div>
</div>
</footer>
</body>
</html>