Saturday, October 31, 2009

ReaderScope v1.3 - Beyond Google Reader

Google Reader gives us choice in News Reading. With the advent of RSS aggregators, we got the power to subscribe to selective sources of news. That way we can fetch the up-to-date information from the selective sources that we prefer. This saves us time. We build a focused channel to acquire our daily diet of news.

However there is a flip side to that. What if an important news is unrolling that is outside the scope of our news channel. It's being reported by a publisher that we are not subscribed to. In that case we miss out the hotness of a news.

What if after the same routine of reading your regular list of feeds, you get bored. You miss that element of surprise that one gets by reading random headlines.

For the times like this, ReaderScope v1.3 introduces some new features that go beyond Google Reader.

You can now read "Google News" in a separate tab, alongside Google Reader feeds. The tab lists six different categories of news: Headlines, World News, Sports, Entertainment, Business, Sci/Tech. You can now stay up-to-date with the latest happenings in any of these areas.


In addition to that, ReaderScope now offers the latest Google Reader feature: "Popular Items". As the official Google Reader Blog says:

We use algorithms to find top-rising images, videos and pages from anywhere (not just your subscriptions), collect them in the new Popular items section and order them by what we think you'll like best. Now you don't have to be embarrassed about missing that hilarious video everyone is talking about — it should show up in your "Popular items" feed automatically.

Now you can access the same list from ReaderScope.




In addition, you can now access other lists that were absent in ReaderScope untils now: "All Items", "Starred", "Shared".

You may feel that there is not enough space on screen for all this stuff. If you feel so, you can customize the elements to get more space. The tab panel that lets you choose between Google news and Reader, disappears automatically as you start browsing the news. In the Google Reader's feed list, if you don't want the extra labels, just go to "Settings -> Customize Layout" and you will be able to rearrange all of them.

And yes, ReaderScope is now Android 1.6 ready - for bigger and smaller screens.

So update your copy and enjoy!

Wednesday, October 28, 2009

Frets on Fire for Maemo - Update

Back in March, when Fremantle SDK was released, I had ported Frets on Fire to it. Subsequent discussion made it clear that modifications were required to actually make it run on the device. I created a stripped down version which could run without the OpenGL code. This made it suitable for n900 (and even n810). But due to lack of actual device, I couldn't test it.

Fast forward 7 months. Now I have access to actual n900, so recently I went back to the FoF code. After couple weeks of getting re-acquainted with the code, I have it satisfactorily running on the n900.

Frets-On-Fire code primarily has three parts -
  • playing the song (loading song, computing notes, etc. uses pygame for audio),
  • showing the visuals (PyOpenGL+pygame code) and
  • handling input.
All these components are pretty involved and hard to rewrite - especially so with the audio part (I hardly have any experience in musical notes and midi files). So my priority was to get almost all of the audio code as it is. It was easy to tweak the input code - to make it suite the n900 keyboard. I bypassed the visual part completely - replaced OpenGL with simple pygame sprites. (You may get disappointed by the stark looks).

I have created a project on googlecode to host the code - maemofof. It shows all the changes I had to make, starting from the base Frets-on-Fire code from v1.3.110.

The next step is to package it nicely and push to extras-devel. There are few problems with packaging though.

I couldn't get ogg files to play through pygame. I installed the ogg-support package, but for pygame/sdl to work with it, something more is required - which wouldn't install due to broken dependencies (libsdl-mixeroggwav1.2-dev). So for now I converted all ogg files to wav. But the wav files are huge (~80MB if a single song is included as sample). That makes them inconvenient to package and they also take a long time to load (~90 seconds).

But good news is, the ball got rolling again. I hope to make some progress in coming days. If you have any suggestions, feel free to chime in comments.

Saturday, October 24, 2009

ReaderScope 1.2.7 - Podcasts, Expanded View

Podcast support was a feature request in one of the market comments. I hadn't thought about it before that. When I looked into how to do it, it turned out to be pretty simple - thanks to Android's easy MediaPlayer API.

If you have subscribed to any podcast in your Google Reader, open it in ReaderScope just like any other feed. When you open a news item that has podcast attached, you will see a speaker icon near the bottom right corner, as shown in the following picture.

Just tap on it. You will see a notification indicating that the Podcast has started playing in the background.


The notification shows the progress through the podcast. If you want to pause or stop it, just tap on the Notification and you will be presented with the options. You can read your other news or even exit ReaderScope, and the podcast will keep playing in the background.

Second feature that made into this version is "Expanded view".

Just press the new menu option - "Expanded Mode" and you will see expanded list of news items with a portion of the news content below each of them. Useful to skim through the news items in a hurry.



Last but not the least, "Periodic Cleanup" feature. In v1.2.5 new options were introduced to cleanup old news items. With the "Periodic Cleanup" feature, you can choose to run the cleanup service at desired intervals. That will keep the storage in check. The periodic cleanup will delete the items that match your specified settings for "Cleanup Age" and "Keep Unread Items" option.

That's it folks. BTW, check out the new Google Reader features the were introduced recently.

Happy Halloween!

Tuesday, October 20, 2009

Sprint HTC Hero problems with ReaderScope

[Update: A fix for this problem is released in v1.2.8a. Please update.]

In past 2-3 weeks new users of Sprint HTC Hero have been trying ReaderScope. Unfortunately, they hit a crash immediately after they open the app. A lot of them have been helpful in sending the crash reports to me. I have now received over 10-12 such crash reports, all confirmed to be on Sprint HTC Hero devices.

The exception that occurs implies that there is something wrong with one of the XML layout files. In reality, the XML layout in question is a very simple one and hardly seems to be the cause. I have posted the layout to android-developers group for others' review too. Most importantly this exception is not seen on any other handset or emulator.

I started a thread on android-developers group to discuss this issue. Although, there has been no authoritative answer whether this problem is in HTC firmware or not; couple more developers have reported similar issues their apps are seeing only on Sprint HTC Hero.

At the moment the only hope I have is next firmware update from HTC for these devices. If anyone has better suggestion, I am all ears.

Keep checking the thread mentioned above, or this blog. Hopefully we will find the solution soon. Thanks for using ReaderScope.

Saturday, October 10, 2009

ReaderScope 1.2.3 - Search

Search box is implicit for any Google product. Google Reader offers one too. Searching through your hundreds of feeds, folders is really handy. With v1.2.3 the same search functionality comes to ReaderScope.




You can search through all items, or individual feeds or tags. Pressing search menu button on first screen will let you search through "All items". Pressing search menu button on second screen will let you search through whatever feed or tag you are browsing on that screen currently. The search box will indicate the scope of your search.

Besides this feature, the functionality of updating the unread counts is implemented completely in this version. In v1.2.2 only the GUI was updated to reflect changes in unread counts. But actual update in database was disabled because of performance issues. In v1.2.3 the syncing with database is deferred till the end. So now you will see a "Syncing database" progress dialog before you close the app.

In v1.2.2, some fixes went in that take care of crashes people were seeing. No obvious crashes have been reported since, so I hope everything is going well. BTW, Did you like the loading screen? :)

Cheers!

Monday, October 05, 2009

ReaderScope 1.2.1 - Auto Login

Today I came across this excellent article "5 Nice Apps I refuse to use" by Chuck Falzone. It talks about how all the Google Reader apps (or android app that needs access to Google services) ask for passwords to the user's Google account. As you know ReaderScope does it too. But I completely empathized with the author's point of view. For many like me, Google is the biggest closet in their wired home. Giving the key to this closet to any random app is scary for sure.

However, of all the login mechanisms I found out, the only supported method for a desktop/mobile app is asking user to enter his/her username and password. Google supports OAuth, but only for web apps. I wish they implement version of OAuth for desktop/mobile apps, just like Twitter. Another way, is to get the login tokens from Android platform. Although, it should be available as platform API, it is not. I guess the reason is, it will be limited only to 'Google experience' phones, hence it cannot be part of the platform.

But, thanks to the article I mentioned above, more info came out on this discussion. From the article I learnt, that a Google Reader widget accesses Google Account info available on phone. I went through the comments, and one of them gave a pointer to how this might be done. After following the email thread, I found a way to do this. The solution is not perfect/ideal. It uses a library put together by a Google engineer (@jbqueru), but it is not an official part of platform. With the help of ubikdroid's example code from the thread, I put together an "AutoLogin" feature for ReaderScope (as of v1.2.1)


If you are using a 'Google Experience' phone (or a ROM with Google Apps), then you don't have to give your password to ReaderScope. Just press AutoLogin and you are in.

If the existing users want to remove their password (which by the way is encoded before storage) from ReaderScope and use this new auth mechanism, then you can do so without loosing your cached items. Go to Settings->Credentials Management. Press "Logout". Choose "No" to the prompt of deleting cache. The app will exit. Start it again, you will be taken to Login screen. Now choose AutoLogin.

If your phone is not 'Google Experience' phone, this will not work. You will get an error message.

I put this together in past few hours. Although it has passed my automated regression tests, there might be some rough edges. Let me know if you see any problems.

Saturday, October 03, 2009

ReaderScope v1.2

After 1 week of reimplementation of news cache, 1 day of testing and 1 last hour of crazy epiphanies and patches... v1.2 is out.

Here is what is new.

With the brand new caching scheme, you can store your bulky news cache on SDCard. Right now my HTC magic is pulling about 1000 images from web (which must be total 10-20MB in size), but the app manager shows ReaderScope only taking 588KB on phone. Because all the content is going to the SDCard.


Also if you do periodic downloads with caching the content, you will notice that the subsequent downloads will take significantly shorter times. This is because, the new caching mechanism accurately downloads only the content that's not in the cache.

In addition, there are few new features that users have been asking for.

Mark All As Read


You can mark all the items in a feed read. Does the same function as its counterpart in Google Reader web interface.

Share with note


You can just "Share", or you can add a note if you wish. Again same job as its counterpart in Google Reader web interface.

Manual override to go offline


One loyal user of ReaderScope has been asking for this feature for a while. It has very practical use for certain. I finally got around to implementing it in v1.2. There are situations when you are online, but you don't want ReaderScope to use the network (because it costs $$). You could already customize the periodic background downloads to not use such specific network. But, you may want to restrict GUI's access to the network too. While you are reading the news, ReaderScope marks the items read, stars/shares them if you choose - this is synced with Google Reader over network.

With the "Go Offline" button, all these front-end actions will be batched instead of doing instant sync over the network (and you will see them in the Pending notification at the top, the one you see when you are actually offline). When you want to go online with the right kind of network, choose "Go Online" and tap on the notification, it will sync your actions.

Moreover, some bug fixes have also gone in.

Hopefully you will enjoy the new version. It's not unlikely that some silly bugs went unnoticed during this big rewrite of the caching mechanism. If you see any problems or hit any crashes, please email me the crash report (using the in built crash reporter).

Enjoy!