Building a Better Twitter Feed Reader

Like many of you, I’m addicted to reading Twitter.  And not surprisingly, I’m also addicted to reading feeds.  So you’d think I’d love reading my Twitter feeds in FeedDemon, right?

Unfortunately, no.  The problem is that Twitter feeds are plain text – no hyperlinks, no images, no nothing.  As a result, reading Twitter feeds is a bland experience in any feed reader.  For example, here’s how an item in a Twitter feed looks in FeedDemon 2.x:

That’s a boring way to view a Twitter stream, so I’ve spruced things up in FeedDemon 3.0:

As you can see, there are a number of improvements.  First, URLs are automatically hyperlinked and benefit from the short URL preview feature I mentioned last week.  Author names and @replies are automatically hyperlinked as well so you can click to view that person’s Twitter stream.  I’ve also added hyperlinking of #hashtags – just click to go to a Twitter search page which shows all tweets with that same hashtag.  And since Twitter isn’t meant to be a read-only service, I’ve added a “Reply” icon to enable replying to a specific tweet.

Last but not least, I’ve also added profile pictures.  Unfortunately, you’ll only see them if the feed is in a folder that isn’t synchronized, and then only when you’re subscribed to the Atom version of the feed (they’re not included in the RSS version).  Hopefully the Twitter folks will make it possible to determine a user’s profile image from their username, since that would enable always showing the profile image.

It Sucks to Throw Away New Code

Earlier this year I wrote about the joy of throwing away your code.  It’s true – as a rule, programmers generally love getting rid of old code.  But I discovered a corollary to that rule: it sucks to throw away code that you just wrote.

I know because I had to throw away a ton of code I wrote last week.

You know that upcoming FeedDemon feature I wrote about in my last post, the one which shows where a shortened URL will take you?  Well, in my first design, it didn’t display a balloon tip with the long URL.  Instead, when you clicked a short URL, it took you to a separate preview page that looked like this (click to enlarge):

I spent a few days coding this, but when I sat back and looked at it, I wasn’t wild about how you had to click a short URL to know where it would take you – it seemed like an unnecessary step.  I decided it would be better to show the long URL as you hovered over a short URL, which meant getting rid of the preview page and adding the balloon tips.

I almost didn’t make the change since the idea of throwing away hundreds of lines of freshly-painted code was too painful, but in the end I convinced myself that making the feature more usable was more important than saving my fragile programmer ego.

Perhaps that’s a lesson for other programmers, too?  I’m sure there are countless features in other applications that could be greatly improved, but most developers can’t bear the idea of throwing out recent code (besides, we like to show off by adding new features, not rewriting existing ones).  But you know what?  I’d pay to upgrade several applications I use if the new versions simplified existing features without adding any new ones.

Coming in FeedDemon: Know Where That TinyURL Will Take You

URL shorteners such as TinyURL perform a handy service: give them a long URL, and they return a shorter URL that’s less likely to break in emails.  Twitter users in particular benefit from URL shorteners because they enable shrinking a URL that would otherwise exceed Twitter’s 140-character limit.

There is, however, a downside.  When you’re faced with a short URL, you have no idea where it really goes.  Does it redirect to a useful site, or does it go to a phishing page?  For all you know, the link could point to a porn site that pops up the kind of images that your boss wouldn’t think too highly of.

In my case, I use FeedDemon as my primary web browser, and I was tired of looking at my Twitter page and not knowing where all those TinyURLs would take me.  So I decided to address this problem.

Starting with the next build of FeedDemon 2.8, mousing over a short URL will show a balloon tip which contains the long URL – so you’ll know where the link takes you before you click it.  Here’s how it looks:

So far, I’ve added support for the following URL shortening services:

If you know of any popular URL shortening services that I’m missing, let me know by posting a comment here.  As long as the service returns the long URL in the location header after doing a HEAD request, I should be able to support it in FeedDemon.

Update: Since originally blogging this post, I’ve added support for these services:

Everyone Loves Ads in FeedDemon!

On second thought, that headline might not be entirely correct :)

As you can imagine, the comments to my last post have spawned a lot of conversations at NewsGator.  I really don’t want to say yet what we’re going to do as a result (because we’re not sure yet), but please don’t think my lack of response is due to anything other than not wanting to open my mouth too soon.

Funny thing is, I actually do understand some of the negative reaction to ads (for proof, take a look at this cartoon I drew many years ago).  I personally don’t find the ads in FeedDemon to be bothersome, but I do recognize that advertising has entered every corner of our lives, and sometimes it seems there’s no escaping it no matter how hard we try.  For many of you, it’s not about how tasteful or targeted the ads are: it’s about not wanting to be sold to every minute of your lives.  I get that.

The problem for us is that we find ourselves in an ugly economic climate that absolutely requires everyone to earn revenue wherever they can.  Charging for our software again didn’t seem wise (imagine the reaction to that!), which led us to consider advertising as a possible revenue stream.  I won’t claim to have been in love with the idea, but after considering the alternatives, and especially once I saw how the ads would look in FeedDemon, I felt better about it.  Anyway, if you want a bit more detail on our thinking behind the ad-based version, check out this post on Jeff Nolan’s blog.

So…what I would like to know next is how you recommend we earn revenue from our software.  Let’s just assume we offer an ad-free version for a small fee: would that alone be enough to pay the bills?  I have serious doubts about that (that doesn’t mean we won’t do it, but it does mean we have to consider other approaches, too).

Look, I love the fact that there are still people who buy software – even just to get rid of the ads – but the ugly truth for developers is that these people are in the extreme minority.  Today’s audience has been conditioned to expect software for free, and plenty of otherwise honest people have no qualms about piracy.  Within days of releasing a paid ad-free version, it would be available on hundreds of warez sites and IRC channels.

Really, that’s a huge reason why we considered ads in the first place.  Very few people are willing to pay for software anymore, so we had to look at other sources of revenue.  Which is why I want to hear from you about anything we might be overlooking.  If charging for software doesn’t work, and advertising in software bothers so many people, then what else can we do?

Hit The Deck: Tasteful Ads in FeedDemon

It’s been almost a year since we made FeedDemon, NetNewsWire and NewsGator Inbox free, and it has been very gratifying to gain so many new customers.  But as you can imagine, we continue to look for ways to generate revenue from our software.

One of the ideas, of course, was to include advertising in our applications, but that idea never sit well with us.  As I’ve written before, I’ve seen too many cases where advertising led to compromising customers’ privacy, and that wasn’t a path any of us wanted to ever go down.  And besides, so much advertising on the web is irrelevant, tacky and often just plain obnoxious.  No developer wants to work at building a great user interface only to see it marred by animated Viagra ads.

At some point, Brent Simmons mentioned an ad network called The Deck, and it was different than most other networks we’ve looked at.  The Deck is focused on ads for creative web professionals, and they’re picky about the ads they accept.  Just as important, the ads can be embedded in our applications without sharing any customer data.

I’ve been running a test version of FeedDemon which features ads from The Deck, and I have to say, I like what I see.  Every single ad is tastefully done, and since they’re static images, there’s no flashy animation trying to get your attention.  I even found myself clicking on several of them to find out more, which is something I very rarely do.

The screenshot below shows how it looks (click to enlarge):

As you can see, the ads are displayed at the bottom left of FeedDemon’s user interface – they’re not inserted into the feeds you’re subscribed to, nor will they jump around the page you’re reading.

Long story short, we’re going to give this a shot, and we want to know what you think about it.  It’s important to us that we generate revenue from our software, but we absolutely don’t want to do it in a way that offends or distracts our customers.

If you’re interested in taking a look, stop by the FeedDemon 2.8 Beta site to download a test version which has the ads enabled.

The Value of Automated Error Reporting

The past few releases of FeedDemon have an included an error reporting feature which captures unexpected problems and sends us detailed reports on what went wrong.  If you’ve never seen this feature in action (and I hope you haven’t), it looks like this:


I’ve been going over the past few months of error reports, and much to my surprise, I discovered that the top three most common problems were never reported in our support forums.  If I didn’t add error-reporting to FeedDemon, it’s possible that I’d never have known about these bugs – so if you’re a software developer and you don’t have a similar feature, perhaps that will convince you to add one!

The downside to having an error reporting feature is the dismay you’ll feel if you discover – as I did – that a huge number of problems aren’t your fault, but are instead caused by third-party software (especially anti-virus programs, buggy graphics drivers, and flaky web browsers).   These are the most frustrating bugs because your code isn’t wrong, and you can only hack together a workaround rather than truly fix them.

Anyway…thanks to the error reporting feature, I’ve identified and fixed the top 10 most reported errors.  All of these fixes are included in FeedDemon 2.8 Beta 2, which was released today.

Helpless Icon Carnage

Last week I went on a toolbutton slaughter, and now the carnage has expanded to the icons in FeedDemon’s newspaper.

Each article in a FeedDemon newspaper has a series of icons beneath it, and over time the number of icons has grown to the point that they’ve become a serious distraction.  For example, with the addition of the sharing and tagging icons in the upcoming FeedDemon 2.8, each article would have 10 icons beneath it:


Most customers use only a few of these icons, so I’ve removed most them by default in FeedDemon 2.8:

Power users, of course, will want to customize the icons, so I’ve added an “Icons…” button to Options|Reading which displays this dialog:


While I’m still in the mood to clean up FeedDemon, where else should I target for simplification?

The Great ToolButton Slaughter

Looking back at early versions of FeedDemon, it’s obvious that I was raised in the Microsoft Office school of user-interface design.  Namely, fill your application with toolbuttons, the majority of which most people will never use.  Here, for example, is what the toolbars in the first version of FeedDemon looked like:

What on Earth was I thinking?  There were so many toolbuttons showing that I had to stack toolbars on top of each other to fit them all.  At the time I thought I was giving customers the features they wanted, but what I was really doing was scaring people away by overwhelming them with far too many choices.

Each version since then has been an exercise in killing toolbuttons.  By the time FeedDemon 2.0 rolled around, the toolbars were starting to look more sensible:

Much better, but really, the only toolbuttons that need to be showing all the time are the ones that most people will use all the time.  The other ones can be moved to menus and keyboard shortcuts, where they’re out of the way yet still accessible.

With that in mind, I’ve pared back the toolbars yet again in the upcoming FeedDemon 2.8:

As was the case with the sharing feature I discussed in my previous post, I should’ve taken a simpler approach with FeedDemon’s toolbars from the start.  I’ve learned the hard way that simplifying what you’ve already released is a lot harder than designing something simple to start with (especially since changing what existing customers have become used to is a sure way to annoy them).

PS: Power users who relied on previously available toolbuttons can always add them back – just click the “Customize” arrow at the far right of the toolbar.

Really Simple Sharing

It’s a common complaint of software developers: their customers keep asking for features that already exist.  That’s happened to me more times than I can count, and it used to frustrate me – until I realized I was the problem.  I had designed those features so poorly, or buried them so thoroughly, that they weren’t being noticed.

I bring this up because I keep seeing comments from people saying they’d like to use FeedDemon, but they really need a “sharing” feature like the one Google Reader has.  Or I’ll read a review of FeedDemon that says the lack of a sharing feature is a strike against it.  Which bothers me to no end since FeedDemon has had sharing for quite some time (and NewsGator Online has had it even longer).

The reason so many people miss FeedDemon’s sharing feature isn’t due to “user error,” of course, but because I made it too geeky and too hard to find.  In order to share an article in the current version of FeedDemon, you have to copy it to a “clippings folder” that has an RSS feed – and as you can see, it’s far from obvious how to do this:

  1. Create a clippings folder
  2. Choose to share it as an RSS feed
  3. Click an obscure icon under the article’s headline to display a menu of clippings folders
  4. Choose the clippings folder you want to copy the article to

Not exactly the simplest approach, huh?

So I decided to rectify this in the upcoming FeedDemon 2.8 by adding a single, obvious “Share” link – which is how I should’ve done it in the first place.


Simply click “Share,” and FeedDemon will copy the article to your shared clippings.  New users who don’t have any shared clippings (and probably don’t know what they are) can still use this feature, because it takes care of configuring everything without all the “geek speak” of the current version.

PS: I hope to release a public beta of FeedDemon 2.8 within the next 10 days.

Your Customers Have Enough Work to Do

If you haven’t had enough of a preview of FeedDemon’s upcoming tagging features, then check out this guest post I wrote for the NewsGator Widgets Blog.

“One of the more challenging tasks developers face — regardless of whether they develop desktop applications, web applications or even widgets — is designing a feature in a way that not only hides the technical details, but also respects the end user by not asking them to do too much work.”

I talk about how adding a feature requires thinking about the extra work you’d require of your customers if you don’t design it correctly, with FeedDemon’s tagging features used as examples.