A More Explicitly Scalable Interface

When we first started FeedsAnywhere we wanted to create a scalable interface that was consistent from phones through desktops, but as displays moved to widescreen formats it became apparent that we sometimes scaled too far. The solution is to provide each user some control to define a maximum width.

Using jQuery UI Resizable with margin: auto

I'm been working on some design elements of the site and recently ran into a bug in jQuery UI's Resizable plug-in that I found reported elsewhere, but never with a solution. Well I'm pleased to report that I found one, and it's pretty simple.

You will need to host your own copy of jquery-ui.js for this fix to work because we'll need to make a small edit to it.

Making Use of Thumbnails in Title View

A new update was posted to FeedsAnywhere today and the most visible change is replacing the blue arrow that links to the full story at its original website. This will happen whenever an image is found within the item. If an image is not found the arrow will still be used. As with most interface changes, some will like the new look and others won't. If you find yourself in the latter case you can check your setting page and disable the thumbnails.

Behind the Scenes Improvements

I haven't blogged in a while, but there has still been a lot of activity going on behind the scenes. We moved to a newer version of Ubuntu for our server, optimized some queries and indexes, migrated to InnoDB, trimmed some code bloat to improve performance, fixed some bugs, improved preloading to add more cases where it is used, changed Mark All Read so your previous timeframe will be remembered, and more.

Hopefully the benefit you will see from all of this work is a much more responsive experience and allow you to spend more time reading and less time waiting.

Instapaper Support

The final sharing feature we're putting into place right now is Instapaper. A story can be individually saved to your Instapaper account from the same Share menu that offers Email, Facebook, Google Reader, and Twitter sharing, but there is also an option on the Settings page that can post any item to Instapaper when it is starred.

Since Instapaper doesn't support OAuth you will need to provide your user name and password. The first time you post an item to Instapaper you will be prompted for your credentials so you don't need to set up the service in advance.

Share Articles on Twitter

I mentioned in my last post that Twitter support was coming and it's ready even faster than I thought. Fortunately the same code used for Google Reader could be quickly adapted.

When you select Twitter from the item's Share menu an ellipsis will appear and it will change to a check once the post is complete. If authentication has not been done you will be prompted to authorize access to your Twitter stream.

Enjoy!

Share Articles on Facebook

Much like the recent ability to post an article to your Shared Items list in Google Reader, you can now also post an article to your Facebook wall. You can access the function from each item's Share menu.

The first time you try to share an item on Facebook you will be asked to give FeedsAnywhere permissions to write to your account. We only request the minimum functionality and despite permissions including the ability to read your profile we are only posting and not saving any of your Facebook data.

Add Items to Your Google Reader Shared Items List

Where there used to be an Email link in the footer of each item you will now find Share. Clicking or pressing it slides open a menu that now contains a Google Reader option in addition to Email. Selecting Google Reader will add the entry to your shared items list and display a check. The check will persist until the page is reloaded and selecting Google Reader again will unshare the item.

If you haven't authorized Google Reader access yet an authorization window will pop-up the first time you click the link. Syncing does not need to be enabled for sharing items.

Google Reader Syncing Using OAuth (no username or password needed)

FeedsAnywhere now supports password-less syncing with Google Reader using the OAuth protocol. I've been incrementally transitioning from the old ClientLogin method that required a user to provide the username and password for their Google Account to the newer OAuth method.

The benefit is better security through not having to give out a password while still maintaining control of who has access to your account. FeedsAnywhere only asks for access to Google Reader and that's all we can touch. You can also revoke access at any time through your Google Account settings.

Real-time Feeds

If you thought feeds content was being updated more quickly recently then you are absolutely right. I finally implemented pubsubhubbub support so if any feed you subscribe to supports that protocol well know about updates to the feed right away.

For those feeds that don't support a hub we'll continue to fetch it the old fashioned way.

Syndicate content

Navigation

j/k selects the next/previous item in the list
n/p in title view, selects the next item without opening it
space/shift+space moves to the next/previous page
shift+m open/close the main menu
shift+o open/close the options menu
enter select the highlight entry from a menu

Actions

enter,o in title view, expands or collapses the selected item
shift+a marks all items in the current page as read
d go to the item's list of similar stories
i/u designate the item as interesting/not interesting
m marks the item as read or unread
s adds or removes a star from the selected item
shift+s open/close the item's share menu
shift+u marks all items in the current page as unread
v opens the original source for the item in a new tab

Go To a New Page

g then h go to the homepage
g then i go to the Interesting items view
g then a go to the All items view
g then s go to the Saved items view
g then p go to the Popular items view
g then f go to the Select a Feed page

Application

- decrease the font size
= increase the font size
esc close any menu if open, otherwise deselect all items
? open/close a decription of keyboard shortcuts