NewsBlur: A feed reader with intelligence
newsblur.com
newsblur.com
NewsBlur is an RSS feed reader that tries to do two things very well:
1) Shows you the original site instead of a context-less feed. Read the original and NewsBlur marks the stories you've read.
2) Filter stories you either like or dislike. A three-stop slider goes between dislike, neutral, and like (red, yellow, and green). Training is super-easy and all click-based (as opposed to you having to writing out what you like in a site, NewsBlur asks you, semi-Hunch-style, your opinions on facets of the site).
I started working on NewsBlur to see if I could do it. Put the AI together with the back-end feed processing and fetching, along with the nifty front-end of the original site. This is one of those projects where I just kept pushing in all directions until I felt I had something good, not knowing if I could do it at all, but believing the entire time that I was able to complete the project.
If you have a project kicking around in the back of your mind, just dedicate enough weeks and months to get it done and done well. Provided you do that, you're almost guaranteed to succeed in some way. Those first few months of writing NewsBlur, I felt like a fraud, wishing I could just get threaded feed fetching to not break every few minutes. Even what I considered to be simple python gave me headaches. (Turns out threading is evil, use multiprocessing instead.)
NewsBlur is entirely open-source: http://github.com/samuelclay/NewsBlur/. The iPhone app, the front-end JavaScript, and the back-end Python. Pick it apart, but know that it is more a learning experience than a business. Turning it into something profitable may not be easy, but I only need 80 premium users to make that happen.
* Django: Web framework written in Python, used to serve all pages.
* Celery & RabbitMQ: Asynchronous queueing server, used to fetch and parse RSS feeds.
* MongoDB, Pymongo, & Mongoengine: Non-relational database, used to store stories, read stories, feed/page fetch histories, and proxied sites.
* PostgreSQL: Relational database, used to store feeds, subscriptions, and user accounts.
* jQuery: Cross-browser compliant JavaScript code. IE works without effort.
* Underscore.js: Functional programming for JavaScript. Indispensible.
* And many miscellaneous jQuery Plugins: Everything from resizable layouts, to progress bars, sortables, date handling, colors, corners, JSON, animations. See the complete list on NewsBlur's GitHub Javascript folder: http://github.com/samuelclay/NewsBlur/tree/master/media/js/
First bug I noticed, most easily visible with Daring Fireball: click on a story from the bottom list. If there's more than one story headline in view, it also marks the bottom one as read.
I noticed a small typo on http://samuelclay.com. I think you mean "Written with Django...".
1. Can you rate individual posts (I'm at work so I can't spend too much time on it right now) instead of just tags/authors? It wouldn't feel like that much work to me as a user. You could then just read the tags/authors from the rated posts and sort them accordingly.
2. I was searching for a way to close the training frame, but was confused by the gray "Cancel"-button. Gray generally means disabled. I understand that you want to highlight the "Save and Next"-button. I would just change the "Cancel"-button into a link, to make it more obvious that you can click it.
1) An application announcement on HN that genuinely appealed to me.
2) A single guy beat Google at UX in one of their best web applications (exposing the original site design for the feed is a fantastic idea!)
3) I paid for an application before it's ready.
4) I felt this was all so important I logged in to post this comment. :)
Kudos, you've done a fantastic job here. I really hope your environs permit you to keep this project going - it's a great idea, and I'm in love with it already!
One of the major problems I have with Reader is that certain low output feeds (making up the majority of my subscriptions) just seem to blend together - I forget why I subscribed to them, and have to go back to the original web page to try and figure out who the person is. Exposing the original page by default solves this beautifully. :)
Great work!
Edit: something I forgot. Visual display of the site allows me to instantly demonstrate RSS to my mother. Google Reader confused the hell out of her. :)
It seems to have a lot of mysterious features like "instafetch" and "intelligence trainer" and stuff.
I guess I'm saying that my first impression is that it looks nice but complicated, like there's the promise of great stuff there but it seems like it would be hard to figure out. Compare with Google in the early days: great technology, crazy fast, but all that tech is hidden in the background and you don't see that, you just see the search box and the results.
Perhaps you've been too enamored with the cool/powerful features and haven't focused enough on keeping it simple?
But definitely awesome!
And of course, there's no money in this and the use of feeds are declining (so integrate Twitter and Facebook API).
Anyways, very nice. :)
* FiveThirtyEight breaks your frames.
* I want a listing of all my unread articles to browse... I have >600 feeds and the list of blogs is long at just 64
* All NYTimes blogs seem broken? Freakonomics is super slow. An important feature of Google Reader is its aggressive pre-loading. When I click a headline, the feedback is instant. This keeps me reading (probably more than I should. Which is good for you, the feed reader seller.)
* On APOD, I just get a blinking cursor in the bottom window, and "original" mode works but "feed" and "story" don't seem to?
At this point, I'm just going to chalk it up to your site having issues, and check back again? http://img.skitch.com/20101026-tte8pqeksjx94syhuh7cbkt418.jp...
I really like your idea and will probably purchase it if it starts working. I'd also be happy to be a beta tester/constructive criticism provider/example of a heavy feed reader user.
As for speed, I watch my logs like a hawk and have graphs for how each feed performs. No feed should take more than 500ms to load (and only a very very tiny percentage have taken more, based on my graphs from today. And nothing took more than 1.5s). Speed is a super high priority for me. Moreso than many features. Preloading is hard to do. I have no idea what you want to click on.
The iframe buster buster code works about 95% of the time. It should catch most NYTimes sites and switch you automatically to the Feed view. It doesn't always work.
Fixes for these bugs will be coming in the next few weeks as I sit down and identify the culprits.
You should still go premium, even if there are a few bugs still lurking. Check the features board. I have updates regularly and have for months. It's a long road ahead and things only get better from here.
On the front page, there's no big "go premium!" button. When I went to the site to subscribe, I said "oh, um, where do I do that again?" and the answer was that I click on "choose your 64", which then gives me the option to subscribe.
It should be a big honking button!
Also, it uses Google Reader shortcuts + imports feeds. Making the transition easy.
Excellent way to present a product versus a strong competitor.
Well played sir, well played.
However, I was put off by having to choose 64 feeds to "turn on" immediately after the import procedure. It meant my first experience of NewsBlur was the difficult and uninteresting bookkeeping task of figuring out which of my few hundred feeds I really, really cared about, and I pretty much disengaged from the app at that point. If I didn't have to make that choice right then, my first experience would instead have been simply my familiar feeds in a (rather nice) new UI - and at your current price point that would probably have been enough for me to buy a premium account.
(To give more context - I subscribe to lots of feeds, and rarely unsubscribe except from really noisy feeds, so I probably have a lot of dormant feeds sitting in Google Reader. I certainly don't recognise by name all of my feeds, or which ones I'd choose to keep if I had to choose 64. The autoselect by popularity is a good start, but for me isn't a good match with the feeds I actually get most value out of.)
I fully understand why you'd limit free accounts - particularly with your servers on fire :) - but I would suggest imposing the 64 feed limit after an initial trial period, rather than immediately, so people get that initial great experience.
Put another way - if I had built this, the main reason I would have included Google Reader import in the free version would be so people could experience the value of my app without having to think - about what blogs to subscribe to, or what existing subscriptions to keep. Putting the paywall at this point in the first user experience removes that benefit in cases like mine. I might think about the benefits of your app and come back and upgrade - or I might forget - but you could have had me as an impulse buy.
Ideally, I'd make all feeds free and updated every 5 minutes. Realistically, if I force you to choose, I can perform that much better for everybody else. It's a trade-off which I try to stack in my favor by giving the user an easy-to-use UI to activate different feeds as they choose under the standard account.
You could pay $12 a year and get unlimited feeds. That would make both of us very happy. :-)
First, just give them 64 feeds and tell them about it on some form of status bar. The "updating your feeds 63/64" progress bar, but maybe yellow with "We're only updating 64 of your feeds. [a href="why-premium/"]Why?[/a]"
Also, you can choose those 64 feeds to update as a union of what they have subscribed to and what you're currently already having to fetch, thereby making the necessary amount of work for each new user theoretically less in the best case, and no worse in the worst case.
That is, I should go "wow!" before "awww, free is only 64", instead of the other way around.
Exactly what I was trying to say; you put it better than I did. (And your suggested fix would have worked for me too.)
edit: I'm totally cloning this repo in case you change your mind :P
I'm going to be curious mainly about what kind of spikes you get in your traffic, paid accounts, and leads to other publicity.
Next week, after the traffic and love die down a bit, I'll write up a post-mortem with any advice I can scrounge from the effects.
* Be up-front (on the landing page) about what you get for free and simply allude to the fact that a power-user option is available
* The dashboard needs to know if I'm using this enough to warrant a premium account. On a dashboard note: once I've clicked a feed, I need an easy path back to the dashboard.
* I need to be able to broadcast somehow that I'm using this. If I "like" a story, why can't I have a goo.gl shortened url to the story wrapped by NewsBlur post to my twitter/facebook??
Great work overall!!
I'm hesitant to go overboard on branding and pushing premium. Notice the logos nowhere to be found when you use the site. It's like a desktop app for the web.
And I'm also hesitant to wrap content in URLs like that. I don't know, shouldn't the URL go directly to the original writer?
Bug report, though: A couple of my blogs that I chose to "turn on" only show up as their comments feed. If I go ahead and turn them on, and click on the feed itself in the left pane, I get the site (fair enough), but the list of items in the bottom pane then only shows up the comments feed items. And clicking on them takes me to the comments. weird.
Haven't been able to figure out why. E.g. the XKCD blag (http://blag.xkcd.com) and Cheap Talk (http://cheeptalk.wordpress.com) feeds.
p.s: when this bug is fixed, and archiving support added, I'm totally premium-ing - hold me to it! Great work once again!
The iPhone app is not submitted yet. Feel free to play with it: http://github.com/samuelclay/NewsBlur/tree/master/media/ipho.... I still have a few screens to make, and a ton of bugs to sort through. Maybe January?
Django has stayed out of my way and that's been nice. I've used Django on other projects (specifically Storybird: http://storybird.com, an collaborative storytelling startup) and it's been the moon for us. Absolutely incredible. And I write RoR at DocumentCloud and it too has been phenomenal. They're both great. Choose the language, not the framework.
Now that you've launched, can you take a look at the Hacker News 100 feed (http://feeds.feedburner.com/newsyc100)?
Also, I don't know if this is intentional, but the feed view for a subreddit shows the subreddit page, and each item in the feed just scrolls through that page (instead of taking me to the comments of each link)
When I detect an iframe buster, I prevent it from doing its job, but instead of continuing to show the original site, I switch over to the feed view. It complies with the wishes of the parent site, and I don't look like a bozo with such a glaring and awful bug. The feed view is still a great view. (It's the Google Reader view.)
I'm assuming you fetch feeds using a queue.
* How do you add jobs to the queue ? Do you run a cron every n minutes to check which feeds need fetching and add them to queue ?
* When you add jobs do you check to see if a previous job for fetching the queue is still in the queue or do you use flags to mark feeds for which the jobs are in queue and eliminate duplicate jobs that way ?
In such cases, maybe you could doctor the links so that they'll open in a separate tab?
if(top.location!=self.location)top.location.replace(self.location);
For what it's worth, it's "diggbar"-style garbage that I added that to thwart, and as much as I like your interface, I'm going to be leaving the iframe-buster in place.
Edit: it looks like A List Apart's feed also breaks, likely for a similar reason.
And I'll have to admit, the more I'm using this, the more I'm liking it.
Faced with the limit of 64 feeds, I even signed up to the paid version, but now it still only allows me to import 64 feeds.
Also, is an HTTPS version coming?
And SSL is a bit of a ways off. I'm paying for the server out of pocket. I still need 62 more premium subscribers to be able to pay for the hosting fees (app server, db server, and task/fetch server).
Give it a few hours and it'll catch up and all will be well.
- The whole point of GR is I can read the original site even when it's not available - works nicely with restrictive filters etc.
- It's slower than GR - for obvious reasons.
However, it's great to see somebody taking a stab at an alternative news UI. Good luck on your project.
That, and I get to build a full-on distributed feed fetching and processing service, which has been a brutal, expensive, and wholly worthwhile experience.
-I really liked the little arrow, that we can lock on a page and allow us to create a bookmark like. It's innovative.
-It's really great that you released the source to the community!
Good luck!
I love the reading experience you've designed, though.
Signed up and imported my Google Reader account, but some feeds are taking forever to load. Some other feeds don't show up at all after a while.
After the hailstorm of traffic dies down, I'll look into this error. Thanks for the report.