FeedSpider Dev Blog: End to end (basic) functionality!

The past two and a half weeks have been very busy, FeedSpider-wise. The app now successfully allows you to go all the way from login to pulling up an article! I even got it running on a Touchpad to celebrate webOS’s birthday on the 6th.

In addition, most of the preferences are now wired in, and you can move between folders, feeds, and articles, and mark articles read and unread, starred and unstarred. Next is a matter of filling in all of the gaps and wiring a bunch of stuff in, and adding a few odds and ends that I haven’t gotten to yet, such as adding subscriptions, and handling sharing.

My earlier prediction panned out and much of my time has gone into building the UI. The core logic has continued to port relatively easily. I don’t think that I’ve touched the API layer at all. So far, much of the work has been fiddly and time consuming (in the sense of make minor UI change, refresh, check, repeat until satisfied), but not that difficult.

The two biggest remaining challenges that I have identified are working with OAuth, and figuring out a better way to handle the folder, feed, and article lists, so that I can do it properly using dividers. Based on the reading that I’ve been doing, I think that I may be stuck writing my own custom kind to add swipeable behaviours to an enyo.Repeater, as what I’m doing is a little complex for enyo.List.

If progress continues the way that it has been, I’m hoping to have something that I can begin testing on real hardware soon, and maybe a beta shortly after that.

Anyways, on to the screenshots. I typically find myself posting a new one almost every day on twitter, so if you want to keep up on the bleeding edge, check it out at twitter.com/feedspiderapp.

feedspider-enyo4

By June 5th, I had finished my re-design of the main page, and was successfully loading the list of feeds from the server, separating them into feeds and folders, and properly displaying their unread counts.

feedspider-enyo5

After a weekend away, I next worked on the preferences page. The Mojo-style groupbox does not exist in Enyo, and as I wasn’t too fond of the Enyo version, I rolled my own. This is the prototype.

feedspider-enyo6

By the next day, I had mostly finished wiring up the preferences page, except for dealing with a little UI bug, which I tackled the next afternoon. It caused my my custom picker headers to not have their width (100%) set correctly if they were invisible/hidden when the page was rendered. The calculation was made based on the width of the page rather than the width of the containing object, like it should have been. I wound up fixing it by manually setting the width when they were made visible, basing the calculation on the width of the other objects in the groupbox.

feedspider-enyo7

The next day, the Internet was out in the morning, so I finished up the help page – one of the few things available that didn’t need Internet access in order to fetch data.

feedspider-enyo8

When the Internet came back on, I got the list of feeds to notify the user about working, finally completing the Preferences page.

feedspider-enyo9

This week, I worked on getting the rest of the way from login to making an article available, getting the folder view working…

feedspider-enyo10

… and the Feed view, which required some new Kinds to represent the individual articles (as well as some more fiddling with the UI).

feedspider-enyo11By Wednesday, I had the article view laid out and properly displaying (although at this point none of the buttons work on this page).

feedspider-enyo12Yesterday saw the re-introduction of theming (which was a lot easier than I expected) as well as the ability to change the font size in the article view.

feedspider-enyo13

And today, I got the buttons in the article view wired up and working.

Next up, I need to get the sharing options working on the article page, and then on to dealing with the way that the folder, feed and article lists are handled. I also need to make a point of updating this blog more frequently. This is one big info dump!

FeedSpider 2 Development Blog: FeedSpider goes Cross-platform

With things quieting down going into the summer, I’ve found myself with some extra free time. So, I decided to start work on a project that has been at the back of my mind for a while now – porting FeedSpider to Enyo 2. This port solves a few problems for me:

  1. Mojo, as a framework, is an evolutionary dead end. It has not received any updates since 2011, and, even then, had been superseded by Enyo. Enyo is the future, and is something that I need to improve my skills with.
  2. There is currently no RSS reader client for Open webOS (which does not support Mojo). I might be able to help out there 🙂
  3. Personally, I have switched back to an iPhone as my daily driver, (although I still love my touchpad), and I haven’t been able to find an RSS reader client that I like. So, I’ll do what I did before – roll my own.

The first goal of this project is to replicate the FeedSpider experience in Enyo (with a few tweaks), and to deliver a working RSS reader client for webOS (both open and legacy) and iOS. Further goals are to add support for Android, Windows Phone, and possibly even a Windows 8 (touch) app.

I’ve already had a fairly successful week, and have begun designing the new app and fleshing out some of the components. So far, I’ve ported over the login system, and have successfully pulled test data down from The Old Reader. I am working on the layout of the main page, and am starting to port the Mojo classes over to handle the static feeds (ie. All Items, Starred, Shared, etc.).

Fortunately, at the end of the day, it is all Javascript, so I can reuse much of the code and structure, thanks in no small part to Darrin Holst’s excellent architecture. In fact, it looks like I will be able to use many of the Prototype.js classes with few or no changes.

That being said, I forsee a couple of challenges. OAuth has reared it’s ugly head again, and while I might be able to use OAuth.io, I may need to come up with a more creative solution. That will require further research. I’m also sure that I will run into further pitfalls during the porting process that will slow me down a bit. But, with a little bit of creative thinking, and some reflection on the architecture before building, I’m sure that I can handle it.

To close off this inaugural post, here are a few screenshots of what I’ve completed already.

feedspider-enyo

This is the initial layout test/mockup. These items are all statically generated.

feedspider-enyo2

Here is the new login screen. As of this screenshot, it actually works, and should be able to authenticate to any of the non-OAuth RSS readers.

feedspider-enyo3

Today’s update comes after I completed the port of the static feeds from Prototype.js classes to Enyo kinds. This was necessary since they mix layout and functionality. The Prototype classes that just handle functionality don’t needed to be converted into Enyo kinds.

For more information as the project continues, stay tuned to this blog and follow @FeedSpiderApp on Twitter.