FeedDemon to Sync with Google Reader?

Amit Agarwal has the scoop: I’ve been experimenting with making FeedDemon sync with Google Reader.  It’s something we get a lot of requests for, so we decided to see what it would entail to add Google Reader synching to both FeedDemon and NetNewsWire.

I should make it clear that it’s not 100% definite that this feature will see the light of day – it’s still in the experimental stage.  I sort of have an unwritten policy of not promising a feature until I’ve already coded it, and there’s a lot of coding left to do here :)

But assuming that Google Reading synching is added, I’m curious to know what specifically you would like to see.  Beyond the basics of synching (i.e.: ensuring that changes you make in Google Reader are reflected in FeedDemon, and vice versa), what could I do to make the integration more useful?

One thing I’ve added already is sharing – just click FeedDemon’s  “Share” icon to add an article to your Google Reader “Shared Items” page.  But I’m guessing there are some other features in Google Reader that I’m not aware of which could be really nice to take advantage of.

The Great Un-Friending of 2009

If we ever friended each other on Facebook, then there’s a good chance you’re annoyed with me right now for un-friending you.  But I swear it’s nothing personal.  Lemme ‘splain.

I’ve been on Facebook for a while but I never really used it – the UI felt clumsy and cluttered, and I just didn’t get the appeal.  But lately I keep running into people in the “real world” who swear by Facebook, so I decided I should take a second look at it.

BTW, when I say “real world,” I mean the world away from my computer and the small circle of geeks I cocoon myself in.  If you’re not familiar with that world, it’s worth a visit.  Nobody cares what OS you’re running, what browser you’re using, or whether your HTML validates.

Anyway…because I never used Facebook, I just blindly friended anyone and everyone.  Which now, of course, makes it such a noisy place that I can’t possibly spend any time there.  So I pared down my list of friends to a much smaller group of semi-related folks in the hopes that I’d better understand why so many people like Facebook.  And the first people to get cut were my geeky friends.

So, don’t take it personally if I un-friended you – it probably just means you’re a geek, in which case you should be following me on Twitter instead :)

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.

Start the New Year With a New TopStyle

Earlier this month I announced that Stefan van As has acquired TopStyle, and I’m pleased to now announce that Stefan has just released the first beta of TopStyle 4.0.

There are some great additions in this new version, such as:

  • Unicode support (at long last!)
  • Live FTP editing
  • Customizable HTML toolbar
  • Code folding
  • Bookmarks

My favorite new feature has to be Unicode support.  I use TopStyle to edit all of FeedDemon’s CSS, HTML, XML and XSL files, and it’s great to finally be able to save them as UTF-8/UTF-16 in TopStyle.

If you’d like to try it out, stop by Stefan’s TopStyle 4 site to download it.  This is a beta, of course, so it comes with the usual warnings about not downloading it unless you’re comfortable using unfinished software.  That said, as long as you install TopStyle 4 in a different folder than TopStyle 3, you can still run both versions at the same time – so you can try out TopStyle 4 without fear of messing with the current version.

PS: Just a reminder that since TopStyle 4 is no longer “mine,” questions and comments about TopStyle 4 should be posted to Stefan’s TopStyle 4 newsgroups rather than to NewsGator’s TopStyle forums.  However, questions about TopStyle 3.5 should still be posted in our forums.

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.

ANN: TopStyle Acquired by Stefan van As

I have some good news for TopStyle customers: we’ve reached an agreement with long-time Windows developer Stefan van As to acquire TopStyle, ensuring the future of the product.

Why is this good news?

It’s no secret that TopStyle has languished since I created FeedDemon several years ago.  I’ve had several false starts with the next version, only to be pulled away by other demands.  Honestly, it’s been clear for a long time that if TopStyle was going to continue, we’d have to find someone else to handle it – and now we have.

Why Stefan van As?

Stefan is one of those rare developers who can completely take charge of an entire application, and he’s got a good eye for design (as illustrated by his previous involvement with Macromedia Authorware and Adobe Captivate).

In fact, if you’ve been using TopStyle for a while, you may recognize his name: he’s the guy I hired several years back to develop a Dreamweaver extension which enabled using TopStyle as Dreamweaver’s CSS editor.  I found Stefan to be very capable and easy to work with, and it certainly helps that he’s so familiar with TopStyle.

What about TopStyle 4.0?

Stefan has already been working on the next version of TopStyle, adding some highly-demanded features to the product.  For example:

  • Unicode support
  • “Live” FTP editing
  • Extensible toolbuttons

Unicode support is long overdue, and I can tell you that adding it to TopStyle was no easy task.  The fact that Stefan could take over an existing product and add such a complex feature is a testament to his skill.

And it won’t end with TopStyle 4.0 – Stefan is committed to keeping TopStyle alive and well, so you can expect additional versions in the future.  You can find more details in the FAQ on Stefan’s site.

What will be your involvement, Nick?

Stefan will be completely taking over TopStyle, but I’ll be available to him whenever he needs me (which, knowing Stefan, won’t be too often!).  But I’ll remain a loyal TopStyle customer.  I continue to use it every day – it’s what I rely on to create FeedDemon’s newspapers, for example – and will stay involved with the TopStyle community.

Of course, part of me is sad to no longer be “the TopStyle guy.”  I put a lot of time and energy into that program, and I wish I could’ve done it justice over the past few years.  At the same time, I’m incredibly pleased that we found Stefan – I honestly wasn’t sure we’d find someone with the right set of skills for TopStyle, and I really worried about TopStyle’s future (as did many TopStyle customers).  To be able to hand over my creation to someone I’m completely confident about is quite a relief (and besides, it’ll be fun watching TopStyle’s development from the other side for a change!).

Good luck, Stefan – and thanks!

Smart Software Should Get Out of Your Way

I shudder when I hear about how software needs to be “smart.”  It’s not because I think today’s software is smart enough already (it’s not), but because all too often “smart” translates to “intensely annoying.”

If you believe the tech pundits, “smart” software should predict what we’ll do so it can perform the next action faster.  “Smart” software should automatically correct our mistakes.  And “smart” software should adjust its user interface based on the features we’ve used in the past.

Sounds nice enough, but I’ve rarely seen software do these things without causing even more frustration than it attempts to solve.  It ends up being less like a helpful coworker and more like that annoying braniac every office is plagued with who constantly interrupts you with advice on working smarter by doing things his way. 

We all know that guy – he’s textbook smart but socially inept.  Which is a good description of much of today’s software.

In the semi-perfect world I keep in my head, “smart software” is software that gets the hell out of my way.  It doesn’t try to guess what I’m going to do next, doesn’t constantly offer me “helpful” tips, and doesn’t move things around on me in an attempt to suit my needs.  And above all, it doesn’t try to predict what I’m going to do, because that only makes the software less predictable.

(Side rant: smart software also doesn’t give me any “tips of the day,” and unless shutting down the application will cause a widespread power outage, it should never ask whether I “really want to exit” when I try to close it.)

Truly smart software shows me some respect by letting me tackle the task at hand with minimal interruption.  Instead of confronting me with a myriad of settings and customization options that I’m unlikely to need, it helps me focus by giving me less choices and fewer reasons to have to make those choices in the first place.

So far, my iPhone gets the overall prize for being smartly designed.  Yeah, it’s got some annoyances (please, give me cut/copy/paste!), but it’s so damn simple to use that I rarely have to think about what I’m doing.  The iPhone also made me see tons of flaws in the software I’ve created – the biggest being that I’ve tried to please power users by making too many non-essential details configurable, and doing so in a way that intimidates new users.  I mistook complexity for power, and that wasn’t smart.