If you didn't notice, in recent releases the Digg and Reddit social beacons were missing. They were removed some time ago to make space for a better method of discovering comments. I had released a stand-alone app FindComments few weeks ago. It uses ContextVoice to find comments from all sources (Twitter, Digg, Reddit, and many more). In v2.0.6 that app is integrated with ReaderScope. You will see a new icon on the action panel, which you can tap to find comments on the current news item from all over the web.
Try it on some popular news stories from Slashdot or XKCD to see how it works.
Showing posts with label altcanvas. Show all posts
Showing posts with label altcanvas. Show all posts
Saturday, July 03, 2010
Monday, June 07, 2010
ReaderScope 2.0
ReaderScope 2.0 is out in the Market today.
As explained in last post, the rules of free have changed in this version. Instead of giving a crippled version for unlimited time at no cost; now ReaderScope will be available in its full glory but for limited time - 5 days. After that you can buy the Value Pack for $2.49 and unlock the expired version.
Enjoy!
As explained in last post, the rules of free have changed in this version. Instead of giving a crippled version for unlimited time at no cost; now ReaderScope will be available in its full glory but for limited time - 5 days. After that you can buy the Value Pack for $2.49 and unlock the expired version.
Enjoy!
Labels:
altcanvas,
android,
readerscope
Wednesday, June 02, 2010
ReaderScope upcoming changes
Last weekend I released ReaderScope 1.9.8. It has some changes that should fix crashes that some users have reported in comments at Android market. These crashes went unnoticed for such a long time, because I didn't see them myself during my testing and they were not captured by the built-in crash reporting mechanism. But I found about them last week, thanks to Android market's new crash report collection mechanism. One frequent crash was happening in the background download service and it wasn't captured by RS's crash handler. It should be fixed in v1.9.8. So thumbs up to Android team for adding this new facility to Market.
But this post is mainly about what's coming next. For starters, the version number will now graduate to 2.x. And then there will be a key change in the way free version of ReaderScope works.
Right now you can download ReaderScope from various market places for FREE. It has the basic look, with what is known as Legacy color scheme. It has Ads below the news screen. It has a handy widget, but it cannot be refreshed unless the app is unlocked with Value pack. The value pack is available for $2.49. Once you buy it and enter the unlock code, you get full access to 3 additional themes, no Ads, fully functional widget and ability to see favicons against your feeds.
Starting with 2.x, you will be able to access the full functionality of ReaderScope right out of the box, when you install the free app from any market place. The default color scheme will be changed from Legacy to Night (which so far I've heard is most popular), but you can change to others if you want. There will be no ads. You will have fully functional widget (If you are like me, you will read half of your news via the widget). The favicons will be visible.
So what's the catch? The free version will expire in 5 days. You can buy the Value pack for $2.49 and unlock it.
In addition, support for Android 1.5 will be dropped.
Why this change?
There are couple of reasons.
1. The default (legacy) color scheme is super dull. And yet, that's the first impression users get when they download the free app. I have read many users complaining about the "awful" UI of ReaderScope, and I believe part of it is the dull color scheme. So even though some pretty color schemes are hidden in the app, users don't know about them until they dig down 2 layers of settings and see the theme previews.
2. The admob code can make the UI sluggish on slow networks. When the app starts, the admob jar downloads an Ad over network. So if the network is slow, this request can sometimes add to the startup time of the app. And the worse part is, it happens even when you have unlocked the app. With the unlocked app, you won't see the ads, but I don't have control over admob code and make it stop fetch that one ad at startup. With 2.x, admob jar will be completely removed.
3. Dropping support for 1.5 had to be done someday. Only after that features from 1.6+ SDKs could be used. I hope, the users stuck with 1.5 will soon get updated by their carriers (or they will start using cyanogen like me ;).
The 2.x version will make no difference to users who have already bought the value pack, they will keep getting updates as usual. Others who have been using the app without the Value pack, will see a 5 day expiration notice upon upgrade. They will need to buy the value pack within that time.
However, if you are happy with the way free ReaderScope is right now, you will have an option. You will find v1.9.8 apk available for download here. Obviously, it won't get any fixes/features, but the app is quite stable as it is today and you can use it for free if you want. However if you want ongoing fixes and features, you will have to upgrade to 2.x and buy a value pack within 5 days.
First 2.x release should hit the market around next week. Till then please, let me know your feedback on this change.
But this post is mainly about what's coming next. For starters, the version number will now graduate to 2.x. And then there will be a key change in the way free version of ReaderScope works.
Right now you can download ReaderScope from various market places for FREE. It has the basic look, with what is known as Legacy color scheme. It has Ads below the news screen. It has a handy widget, but it cannot be refreshed unless the app is unlocked with Value pack. The value pack is available for $2.49. Once you buy it and enter the unlock code, you get full access to 3 additional themes, no Ads, fully functional widget and ability to see favicons against your feeds.
Starting with 2.x, you will be able to access the full functionality of ReaderScope right out of the box, when you install the free app from any market place. The default color scheme will be changed from Legacy to Night (which so far I've heard is most popular), but you can change to others if you want. There will be no ads. You will have fully functional widget (If you are like me, you will read half of your news via the widget). The favicons will be visible.
So what's the catch? The free version will expire in 5 days. You can buy the Value pack for $2.49 and unlock it.
In addition, support for Android 1.5 will be dropped.
Why this change?
There are couple of reasons.
1. The default (legacy) color scheme is super dull. And yet, that's the first impression users get when they download the free app. I have read many users complaining about the "awful" UI of ReaderScope, and I believe part of it is the dull color scheme. So even though some pretty color schemes are hidden in the app, users don't know about them until they dig down 2 layers of settings and see the theme previews.
2. The admob code can make the UI sluggish on slow networks. When the app starts, the admob jar downloads an Ad over network. So if the network is slow, this request can sometimes add to the startup time of the app. And the worse part is, it happens even when you have unlocked the app. With the unlocked app, you won't see the ads, but I don't have control over admob code and make it stop fetch that one ad at startup. With 2.x, admob jar will be completely removed.
3. Dropping support for 1.5 had to be done someday. Only after that features from 1.6+ SDKs could be used. I hope, the users stuck with 1.5 will soon get updated by their carriers (or they will start using cyanogen like me ;).
The 2.x version will make no difference to users who have already bought the value pack, they will keep getting updates as usual. Others who have been using the app without the Value pack, will see a 5 day expiration notice upon upgrade. They will need to buy the value pack within that time.
However, if you are happy with the way free ReaderScope is right now, you will have an option. You will find v1.9.8 apk available for download here. Obviously, it won't get any fixes/features, but the app is quite stable as it is today and you can use it for free if you want. However if you want ongoing fixes and features, you will have to upgrade to 2.x and buy a value pack within 5 days.
First 2.x release should hit the market around next week. Till then please, let me know your feedback on this change.
Labels:
altcanvas,
readerscope
Saturday, April 17, 2010
ReaderScope 1.9 - OAuth
For past month or so, some of you (ReaderScope users) might be facing problems if you were using AutoLogin. This happened after I updated the login mechanism in v1.8.2 to support Google Reader authentication changes. I won't go into the details, but AutoLogin is very likely to fail in the new scheme of authentication. So I advised some of you who sent me the error reports to switch to Username/Password login. It was a temporary solution.
Today I am glad to announce that starting with v1.9 ReaderScope supports OAuth login for Google Reader - the right way to login without password (compared to other password less alternatives at least).
This has been possible only after Google Reader team enabled OAuth login for their service a few weeks ago. I have been working since to get ReaderScope working with OAuth. Not all the time was spent on OAuth, but in order to implement OAuth I had redesign entire networking layer of ReaderScope (which I am glad I did because I could improve some things along the way).
Finally RS with OAuth is ready. If you were still using AutoLogin, then after upgrading to v1.9 you will get a warning message that AutoLogin is no longer supported and you will be automatically logged out. On restart you will be taken to Login screen where you can start doing OAuth login.
If you are using username/password, then after upgrading to v1.9 you will get a message informing that a new password less login option is available. You won't be forcefully logged out though. You can choose to logout and relogin.
I have been testing most of the functionality in past couple of days. But I won't be surprised if some holes were left out. Please report any problems you might face or sent crash reports if you get any.
Enjoy the upgrade!
Today I am glad to announce that starting with v1.9 ReaderScope supports OAuth login for Google Reader - the right way to login without password (compared to other password less alternatives at least).
This has been possible only after Google Reader team enabled OAuth login for their service a few weeks ago. I have been working since to get ReaderScope working with OAuth. Not all the time was spent on OAuth, but in order to implement OAuth I had redesign entire networking layer of ReaderScope (which I am glad I did because I could improve some things along the way).
Finally RS with OAuth is ready. If you were still using AutoLogin, then after upgrading to v1.9 you will get a warning message that AutoLogin is no longer supported and you will be automatically logged out. On restart you will be taken to Login screen where you can start doing OAuth login.
If you are using username/password, then after upgrading to v1.9 you will get a message informing that a new password less login option is available. You won't be forcefully logged out though. You can choose to logout and relogin.
I have been testing most of the functionality in past couple of days. But I won't be surprised if some holes were left out. Please report any problems you might face or sent crash reports if you get any.
Enjoy the upgrade!
Labels:
altcanvas,
googlereader,
readerscope
Wednesday, March 17, 2010
New app "Find Comments"
Over the weekend I found a simple API from ContextVoice. It was something I was looking for a long time. A service that when given a URL of a news story, returns reader comments from all over the web.
It didn't take long to put together a simple app around this API.
FindComments is really simple.
1) Install app
1.1) Do NOT look for a new icon in the launcher. You won't find it.
2) Browse any news story or blog post in the browser.
3) Press Menu > Share Page
4) Press "Find Comments"
Voila!
Available in Android Market, AndAppStore, Slideme.
Here are screenshots. Give it a spin.
ReaderScope users, give it a try. Would you like to see this integrated tightly with ReaderScope?
It didn't take long to put together a simple app around this API.
FindComments is really simple.
1) Install app
1.1) Do NOT look for a new icon in the launcher. You won't find it.
2) Browse any news story or blog post in the browser.
3) Press Menu > Share Page
4) Press "Find Comments"
Voila!
Available in Android Market, AndAppStore, Slideme.
Here are screenshots. Give it a spin.
ReaderScope users, give it a try. Would you like to see this integrated tightly with ReaderScope?
Monday, March 15, 2010
@font-face-lift
I always found that customizing the look of one's website is greatly constrained by the inability to customize the typeface. Traditionally browsers use pre-installed fonts and with the CSS font-family property, you can provide a list of typefaces that you would like your text to be rendered with (Trebuchet MS, Verdana, Sans-Serif, monospace, for instance). But this list is merely a suggestion. You don't have complete control over how your web page is going to look like in X browser on Y platform.
On last friday however I found that it is about to change now (at least in my hopes). I stumbled upon a blog post which had its text rendered in a very beautiful font. After some digging through its source, I discovered the @font-face CSS property.
It's not that this is some brand new thing in latest CSS spec, but it seems to have become of practical use only in latest browsers. You can learn more about how to use it in this post. I am going to talk about my experience with it and how it is still not perfect.
If you are reading this post in an RSS reader, go on and open it up on my blog at this point. You will see it rendered in a beautiful font. But not all of you may be. What it should ideally look like is:
But is that what you see?
The snapshot above is of Safari 4.0.4 on Mac OS X. I believe it looks the same on latest Chrome versions of Linux and Mac OS X. It looks similar in Chrome on Windows XP, but on my eeepc it looks very light for some reason. It won't look anything like it at all in Firefox on any OS. That really disappointed me, but the fault here is not of Firefox, but of my blogging site blogger.com.
After a lot of debugging of why Firefox wasn't loading @font-face, I found that Firefox does not allow a webpage to load fonts that are served on a different domain. Blogger does not allow the user to host any arbitrary file, so I host my font files on www.altcanvas.com. That offends Firefox and instead of loading the custom fonts (Junction, Santana), it falls back to Trebuchet MS. You can find more details about Firefox's policy on this matter in this article.
I spent whole friday doing fun-font research for my blog. But it stoked me enough that I started redesigning www.altcanvas.com too, which desperately needed a facelift anyway.
So over the weekend with the help of two new fonts (Junction and Comfortaa) and my recently learnt CSS tricks, I redesigned my website. Check out the new look of http://www.altcanvas.com
Again the ideal look is like this:
Don't know what you will get to see. But this time, Firefox's rendering will look just like what you see above. That's because the fonts are now hosted under the same domain that is serving the web-pages.
What I also found was, even if all modern browsers successfully show custom fonts defined with @font-face, their rendering differs. For instance, the Junction font is only available in Regular font-weight and no bold variant is available. So the bold text doesn't look any different from normal text when viewed in webkit browsers (Chrome, Safari), but Firefox (and I believe IE too) smartly creates a bold variant of the typeface. Also I guess, the final look is affected by the OS platform, screen resolution, Anti-Aliasing settings, etc. (The 'e's look poor for Junction font in IE.)
So in conclusion, we have a new powerful tool. It's not perfect, but it's pretty good.
If you want to customize typeface of your own website or blog, I highly recommend fontsquirrel's free @font-face kits.
Ads:
* CSS: The Missing Manual
* Head First HTML with CSS & XHTML
* Fonts & Encodings
On last friday however I found that it is about to change now (at least in my hopes). I stumbled upon a blog post which had its text rendered in a very beautiful font. After some digging through its source, I discovered the @font-face CSS property.
It's not that this is some brand new thing in latest CSS spec, but it seems to have become of practical use only in latest browsers. You can learn more about how to use it in this post. I am going to talk about my experience with it and how it is still not perfect.
If you are reading this post in an RSS reader, go on and open it up on my blog at this point. You will see it rendered in a beautiful font. But not all of you may be. What it should ideally look like is:
But is that what you see?
The snapshot above is of Safari 4.0.4 on Mac OS X. I believe it looks the same on latest Chrome versions of Linux and Mac OS X. It looks similar in Chrome on Windows XP, but on my eeepc it looks very light for some reason. It won't look anything like it at all in Firefox on any OS. That really disappointed me, but the fault here is not of Firefox, but of my blogging site blogger.com.
After a lot of debugging of why Firefox wasn't loading @font-face, I found that Firefox does not allow a webpage to load fonts that are served on a different domain. Blogger does not allow the user to host any arbitrary file, so I host my font files on www.altcanvas.com. That offends Firefox and instead of loading the custom fonts (Junction, Santana), it falls back to Trebuchet MS. You can find more details about Firefox's policy on this matter in this article.
I spent whole friday doing fun-font research for my blog. But it stoked me enough that I started redesigning www.altcanvas.com too, which desperately needed a facelift anyway.
So over the weekend with the help of two new fonts (Junction and Comfortaa) and my recently learnt CSS tricks, I redesigned my website. Check out the new look of http://www.altcanvas.com
Again the ideal look is like this:
Don't know what you will get to see. But this time, Firefox's rendering will look just like what you see above. That's because the fonts are now hosted under the same domain that is serving the web-pages.
What I also found was, even if all modern browsers successfully show custom fonts defined with @font-face, their rendering differs. For instance, the Junction font is only available in Regular font-weight and no bold variant is available. So the bold text doesn't look any different from normal text when viewed in webkit browsers (Chrome, Safari), but Firefox (and I believe IE too) smartly creates a bold variant of the typeface. Also I guess, the final look is affected by the OS platform, screen resolution, Anti-Aliasing settings, etc. (The 'e's look poor for Junction font in IE.)
So in conclusion, we have a new powerful tool. It's not perfect, but it's pretty good.
If you want to customize typeface of your own website or blog, I highly recommend fontsquirrel's free @font-face kits.
* CSS: The Missing Manual
* Head First HTML with CSS & XHTML
* Fonts & Encodings
Friday, March 12, 2010
ReaderScope 1.8.{2,3} - new authentication and global share
I released 1.8.2 couple of days ago. The only change it had was the new login mechanism. Google reader team announced on fougrapi group (that stands for "Friends of the Unofficial Google Reader API") that Google Reader soon will be discontinuing the old SID-based login mechanism. Thanks to them for announcing this well before the actual change is supposed to happen (sometime in April). ReaderScope accordingly has been updated to follow the new rules.
This change is almost painless for username/password based logins. However the AutoLogin is a little hairy issue. The library used to get AutoLogin working is unsupported and undocumented. There is an official way to do AutoLogin kind of thing on Android 2.0 devices, but it requires access to actual device to test and still I hear it's not well documented. Besides the devices at versions <2.0 are going to be there for a long time. Therefore I got the undocumented and unsupported library to get working somehow with the new auth mechanism. However the changes I had to make were only little short of hocus-pocus. So I was very skeptical about how it was working. I released a preview on ReaderScope mailing list. So far the feedback of the preview release and actual 1.8.2 has been positive. I haven't seen anyone reporting issues due to failed logins. I have strategic log statements to detect if things go wrong with authentication. So just mail me the logs if you see suspicious behavior. Settings > Logs. Menu > Email.
Today in 1.8.3, I also fixed a bug which would have caused auth problems if anyone was upgrading from pre-1.2.5 installation.
With the new authentication done, I have a very exciting feature implemented in 1.8.3.
When you share the news item now, you will have option to trigger the global sharing apps. They could be your favorite Twitter, Facebook, Email clients. The most useful one I found was "Read It Later" which lets you save the news item to your InstaPaper account for reading later. These are the same apps that you see when you "Share Page" from browser.
I remember someone had requested this feature once long time ago. I am sorry it took so long to implement. But now that it is here, I am sure you will enjoy it.
Ads:
* Hello, Android: Introducing Google's Mobile Development Platform (Pragmatic Programmers)
* Professional Android Application Development (Wrox Programmer to Programmer)
* Android Wireless Application Development
This change is almost painless for username/password based logins. However the AutoLogin is a little hairy issue. The library used to get AutoLogin working is unsupported and undocumented. There is an official way to do AutoLogin kind of thing on Android 2.0 devices, but it requires access to actual device to test and still I hear it's not well documented. Besides the devices at versions <2.0 are going to be there for a long time. Therefore I got the undocumented and unsupported library to get working somehow with the new auth mechanism. However the changes I had to make were only little short of hocus-pocus. So I was very skeptical about how it was working. I released a preview on ReaderScope mailing list. So far the feedback of the preview release and actual 1.8.2 has been positive. I haven't seen anyone reporting issues due to failed logins. I have strategic log statements to detect if things go wrong with authentication. So just mail me the logs if you see suspicious behavior. Settings > Logs. Menu > Email.
Today in 1.8.3, I also fixed a bug which would have caused auth problems if anyone was upgrading from pre-1.2.5 installation.
With the new authentication done, I have a very exciting feature implemented in 1.8.3.
When you share the news item now, you will have option to trigger the global sharing apps. They could be your favorite Twitter, Facebook, Email clients. The most useful one I found was "Read It Later" which lets you save the news item to your InstaPaper account for reading later. These are the same apps that you see when you "Share Page" from browser.
I remember someone had requested this feature once long time ago. I am sorry it took so long to implement. But now that it is here, I am sure you will enjoy it.
Ads:
* Hello, Android: Introducing Google's Mobile Development Platform (Pragmatic Programmers)
* Professional Android Application Development (Wrox Programmer to Programmer)
* Android Wireless Application Development
Labels:
altcanvas,
authentication,
googlereader,
readerscope,
share,
social
Tuesday, March 09, 2010
Portable apps for iPhone, Android, Pre, n900 - Can Processing.js help?
I don't know. But if you want to find out, then I have something for you.
Processing.alt
Visit this website from your desktop browser. You will see an IDE. Write some processing code to create a sketch and save it when you are done.
Visit the same website from your iPhone/Android/n900/Pre browser. You will get a simple viewer interface. Find your sketch under My Sketchbook and run it.
Processing is a well known language to create sketches, animations, games. It is a simplified dialect of java. The resulting sketches are in the form of bytecode and can be run on desktop or in java applets. In Summer of 2008, John Resig (jQuery fame) ported Processing to javascript. Processing.js uses the HTML5 canvas element to render the sketches.
The modern browsers that ship with today's smart phones support HTML5 element. So it is very much plausible to get your Processing sketch/game working on all the modern smart phones without any knowledge of native app development for each platform. Processing.js has a potential to become an uber-portable library for mobile development.
That was the idea I started out with about a month ago. After several iterations, I ended up with a website that you see now. It is an IDE when opened from desktop browser. You can write Processing code, run it, save it, share it for others to see in the Gallery. There are also some samples you can find in Gallery right now. Try them out.
The same website acts as a viewer for your processing sketch when opened from a mobile phone. You can view the shared sketches from the Gallery or you can login and find your saved sketches in My Sketchbook.
One great advantage of Processing.js is, it can intermix javascript with Processing code. So in the samples you will find how javascript is used to automatically find the kind of browser and adjust the dimensions of the sketch accordingly.
I have tested the site on Android HTC Magic and Nokia n900. A friend told me it worked as expected on his iPhone too. Also I am treating Palm Pre's user agent as mobile platform. So on these four platforms you should see the mobile interface of the website. But in case if you don't, let me know and I'll see what is wrong.
As you will see that running Processing code on smartphones is indeed possible, but is fairly sluggish. However I believe the future is not far when the phones will become more powerful, browsers will become more optimized and Processing.js can also be tuned for speed. We already have two gadgets with 1GHz processors - Nexus One and iPad.
The IDE also has a lot of scope for innovation. But before jumping ahead of myself, I decided to open it as beta. I would like to hear your thoughts and suggestions on this idea.
So try it out and leave your opinion in the comments.
P.S. For logging in to save your sketches, use your GMail account. You don't need to login to browse through the Gallery.
Ads:
* Processing: A Programming Handbook for Visual Designers and Artists
* Learning Processing: A Beginner's Guide to Programming Images, Animation, and Interaction (Morgan Kaufmann Series in Computer Graphics)
* Processing: Creative Coding and Computational Art (Foundation)
Processing.alt
Visit this website from your desktop browser. You will see an IDE. Write some processing code to create a sketch and save it when you are done.
Visit the same website from your iPhone/Android/n900/Pre browser. You will get a simple viewer interface. Find your sketch under My Sketchbook and run it.
Processing is a well known language to create sketches, animations, games. It is a simplified dialect of java. The resulting sketches are in the form of bytecode and can be run on desktop or in java applets. In Summer of 2008, John Resig (jQuery fame) ported Processing to javascript. Processing.js uses the HTML5 canvas element to render the sketches.
The modern browsers that ship with today's smart phones support HTML5 element. So it is very much plausible to get your Processing sketch/game working on all the modern smart phones without any knowledge of native app development for each platform. Processing.js has a potential to become an uber-portable library for mobile development.
That was the idea I started out with about a month ago. After several iterations, I ended up with a website that you see now. It is an IDE when opened from desktop browser. You can write Processing code, run it, save it, share it for others to see in the Gallery. There are also some samples you can find in Gallery right now. Try them out.
The same website acts as a viewer for your processing sketch when opened from a mobile phone. You can view the shared sketches from the Gallery or you can login and find your saved sketches in My Sketchbook.
One great advantage of Processing.js is, it can intermix javascript with Processing code. So in the samples you will find how javascript is used to automatically find the kind of browser and adjust the dimensions of the sketch accordingly.
I have tested the site on Android HTC Magic and Nokia n900. A friend told me it worked as expected on his iPhone too. Also I am treating Palm Pre's user agent as mobile platform. So on these four platforms you should see the mobile interface of the website. But in case if you don't, let me know and I'll see what is wrong.
As you will see that running Processing code on smartphones is indeed possible, but is fairly sluggish. However I believe the future is not far when the phones will become more powerful, browsers will become more optimized and Processing.js can also be tuned for speed. We already have two gadgets with 1GHz processors - Nexus One and iPad.
The IDE also has a lot of scope for innovation. But before jumping ahead of myself, I decided to open it as beta. I would like to hear your thoughts and suggestions on this idea.
So try it out and leave your opinion in the comments.
P.S. For logging in to save your sketches, use your GMail account. You don't need to login to browse through the Gallery.
Ads:
* Processing: A Programming Handbook for Visual Designers and Artists
* Learning Processing: A Beginner's Guide to Programming Images, Animation, and Interaction (Morgan Kaufmann Series in Computer Graphics)
* Processing: Creative Coding and Computational Art (Foundation)
Labels:
altcanvas,
android,
animation,
html5,
iphone,
javascript,
maemo,
magic,
n900,
palmpre,
pre,
processing,
processingjs
Saturday, March 06, 2010
ReaderScope 1.8.1 - rethinking features
In the release-early-release-often model, as the software product evolves over time, new features get added consistently. The same happened with ReaderScope for over 7 months. It started with very basic functionality and went through many iterations to reach at its current state.
Adding lot of new features however has couple of risks. First one is affecting the performance. I try to keep that under control after completing a round of new features. Memory footprint analysis and some latency measurement checks have helped to keep the ReaderScope UI very responsive over time. The second downside of features is loosing the direction, unknowingly causing a feature creep. So once in a while, it is essential that the software developer steps back a little and reviews the direction his/her software is going in. That's what I am doing in this post.
There is one feature in ReaderScope that I added few months back that I am not sure helps the main direction of the app. It is the tabbed interface. When I added it, my intent was to cater news from channels besides Google Reader. I put the Google News feeds under the News tab and was planning to add more feeds from popular news channels too. The third tab was Social. It had only a single feed for Twitter account. It smartly parsed the Twitter messages and extracted the news items pointed by the embedded links. (I love the Twitter feature and it's not going away, read below... actually nothing is going away for that matter).
Over time I have realized that the tabs are not serving any useful purpose for most of the userbase. I would rather spend time improving the Google Reader specific functionality than supporting the half baked extra tabs.
Therefore starting from v1.8.1 the tabs are disabled by default. You will only see the labels and feeds from your Google Reader account just like old days. The "Social Channels" label (which was part of the Social tab) will now appear at the bottom of your Google Reader List. If you want you can configure it to appear at the top or be invisible altogether (Settings > Customize Layout).
And for some reason if you like the tabs, you still have option. Go to Settings > Miscellaneous > Enable Tab Interface. You will get the old interface back.
One more feature is the favicons. Favicons are pretty if you read the feeds that do have favicons. However, not all users may have subscribed to feeds that publish favicons. Out of my 250+ feeds at least 150+ show valid favicons. But for some users most of their feeds may not be publishing any favicons. For them the favicon placeholder appears empty. If they are using dark themes then these placeholders appear as white rounded squares. Understandably, those users would like to turn off the favicon feature. Now they can. Head over to Settings > Value Pack > Load FavIcons and uncheck the box if you want. (The favicon feature concerns only the Value Pack users. You haven't got one yet? It's only $2.49, hurry!)
I hope these changes simplify the UI for you. Let me know how you like it.
v1.8.1 also has one crash fix. There was a bug which could lead to crash if you immediately quit the app after starting it. It was specific to Value pack owners. It is fixed in this version.
Adding lot of new features however has couple of risks. First one is affecting the performance. I try to keep that under control after completing a round of new features. Memory footprint analysis and some latency measurement checks have helped to keep the ReaderScope UI very responsive over time. The second downside of features is loosing the direction, unknowingly causing a feature creep. So once in a while, it is essential that the software developer steps back a little and reviews the direction his/her software is going in. That's what I am doing in this post.
There is one feature in ReaderScope that I added few months back that I am not sure helps the main direction of the app. It is the tabbed interface. When I added it, my intent was to cater news from channels besides Google Reader. I put the Google News feeds under the News tab and was planning to add more feeds from popular news channels too. The third tab was Social. It had only a single feed for Twitter account. It smartly parsed the Twitter messages and extracted the news items pointed by the embedded links. (I love the Twitter feature and it's not going away, read below... actually nothing is going away for that matter).
Over time I have realized that the tabs are not serving any useful purpose for most of the userbase. I would rather spend time improving the Google Reader specific functionality than supporting the half baked extra tabs.
Therefore starting from v1.8.1 the tabs are disabled by default. You will only see the labels and feeds from your Google Reader account just like old days. The "Social Channels" label (which was part of the Social tab) will now appear at the bottom of your Google Reader List. If you want you can configure it to appear at the top or be invisible altogether (Settings > Customize Layout).
And for some reason if you like the tabs, you still have option. Go to Settings > Miscellaneous > Enable Tab Interface. You will get the old interface back.
One more feature is the favicons. Favicons are pretty if you read the feeds that do have favicons. However, not all users may have subscribed to feeds that publish favicons. Out of my 250+ feeds at least 150+ show valid favicons. But for some users most of their feeds may not be publishing any favicons. For them the favicon placeholder appears empty. If they are using dark themes then these placeholders appear as white rounded squares. Understandably, those users would like to turn off the favicon feature. Now they can. Head over to Settings > Value Pack > Load FavIcons and uncheck the box if you want. (The favicon feature concerns only the Value Pack users. You haven't got one yet? It's only $2.49, hurry!)
I hope these changes simplify the UI for you. Let me know how you like it.
v1.8.1 also has one crash fix. There was a bug which could lead to crash if you immediately quit the app after starting it. It was specific to Value pack owners. It is fixed in this version.
Labels:
altcanvas,
featurecreep,
googlereader,
readerscope,
tabs
Friday, February 26, 2010
Android fragmentation : How big a deal is it?
I came across this Infoworld story via slashdot the other day, with a sensational headline: "Google Android - a Universe of Incompatible Devices". The actual headline of the article is even more catchy "Google Android's self destruction derby begins".
The job of headlines is to attract readers. But the truth is hardly black or white. Furthermore the claims made in the article don't address specific issues that developer may or may not face. After spending past 8-9 months developing ReaderScope, I think I can better judge these fragmentation issues from developer's point of view. I have both positive and negative opinions in this matter, but all are based on my first hand experience.
That's pretty much I can think of till now. Let me know in comments what are your opinions on this matter.
Ads:
* Professional Android 2 Application Development
* Android Programming Tutorials: Easy-To-Follow Training-Style Exercises on Android Application Development
* Android Application Development: Programming with the Google SDK
The job of headlines is to attract readers. But the truth is hardly black or white. Furthermore the claims made in the article don't address specific issues that developer may or may not face. After spending past 8-9 months developing ReaderScope, I think I can better judge these fragmentation issues from developer's point of view. I have both positive and negative opinions in this matter, but all are based on my first hand experience.
- Backward compatibility : All the Android platform versions are backward compatible. If you developed an app for Android 1.5, then it will still work on latest and greatest Android 2.1. It may look blurry on high DPI devices, but it will work nonetheless. I have hardly heard any case otherwise. Therefore, It doesn't make sense to call all the Android devices incompatible.
- Games : I believe Game developers are the most affected by fragmentation issues. But even then I think their major concern is differing screen sizes and input controls. Hence I don't think release of 2.0, 2.1 would have affected them if they had already updated their games for all three screen sizes as per the guidelines in 1.6.
- Standard UI : If your app is not a game and/or you are using standard UI widgets, then it doesn't take much effort to qualify your app on newer SDK versions. I didn't have to make any specific changes to ReaderScope for 2.0 and 2.1 platforms. I know of people using it on these newer phones and aren't having any platform specific issues. I however hit a problem when I started supporting 1.6. Some users started seeing crashes when ReaderScope was writing to SDCard, it later became clear that it was due to a newly introduced permission in 1.6.
- Google published a chart on Jan 4th this year that shows current distribution of platform versions. It seemed like a great step to alleviate this problem. Unfortunately, they haven't updated that chart ever since. Nexus one was released on Jan 5th, so that chart is pretty outdated IMO. I think Google can certainly do a better job there to help the fragmentation problem.
- It's shocking that there are still so many Android 1.5 users. I heard from a user in Russia, that they won't be upgrading from 1.5 until May this year. That's way too long. I don't know what's the update schedule in India, but OTA updates are unheard of in India, because the phone didn't come with mandatory data plan. (Thanks to cyanogen, my Magic is running a ROM somewhere between 1.6 and 2.0.) Android 1.5 R3 came back in April 2009. So 1.5 is getting over a year old. It's high time Google/their partners start updating these poor souls.
- The backward compatibility is a huge win, but the biggest disadvantage of fragmentation is you cannot use new features introduced in newer versions. I don't want to code live wallpapers (introduced in 2.1), but there are some great improvements in 1.6 and 2.0 that I would like to use, but can't because then I would have to drop support for 1.5 users. There is some reflection witchcraft that can help in this case, but it may not be worth it.
- There is one surprising thing that I recently discovered by accident. The browser shipped in v1.6 doesn't support HTML5 offline caching feature. It is only supported in 2.0+ browsers. I believe that's is an important feature and iPhone seems to have had it for a long time. That's a key feature for cross platform web apps.
That's pretty much I can think of till now. Let me know in comments what are your opinions on this matter.
Ads:
* Professional Android 2 Application Development
* Android Programming Tutorials: Easy-To-Follow Training-Style Exercises on Android Application Development
* Android Application Development: Programming with the Google SDK
Labels:
altcanvas,
android,
fragmentation,
mobile,
readerscope
Thursday, January 28, 2010
ReaderScope v1.7 - Widget, new Icons and .... Ads
Last night I released ReaderScope v1.7.
It now comes with a simple yet useful home screen widget.
You can tap on the news and it will be opened in the regular viewer that you see in the main app. The icon in the upper left corner, opens the full app. The icon in the lower right corner refreshes the news items in the widget. This refresh icon however, will only work with the Value pack (previously known as Theme pack, it costs only $2.49)
v1.7 comes with more stylized icons. They are also made DPI specific, so users with high DPI devices (Droid, Nexus One), will see better icons now.
And last but not the least. In this version I added an Ad-bar on the news reading screen. It is part of the basic free app. You can get rid of it by installing the Value pack.
[If you have donated to ReaderScope in the past, you are entitled to a free unlock code of the value pack. I've sent them yesterday to all the three donors. If you haven't received them or having any troubles using them, please let me know.]
Let me know what you think of the new widget, icons and the ads.
Cheers!
It now comes with a simple yet useful home screen widget.
You can tap on the news and it will be opened in the regular viewer that you see in the main app. The icon in the upper left corner, opens the full app. The icon in the lower right corner refreshes the news items in the widget. This refresh icon however, will only work with the Value pack (previously known as Theme pack, it costs only $2.49)
v1.7 comes with more stylized icons. They are also made DPI specific, so users with high DPI devices (Droid, Nexus One), will see better icons now.
And last but not the least. In this version I added an Ad-bar on the news reading screen. It is part of the basic free app. You can get rid of it by installing the Value pack.
[If you have donated to ReaderScope in the past, you are entitled to a free unlock code of the value pack. I've sent them yesterday to all the three donors. If you haven't received them or having any troubles using them, please let me know.]
Let me know what you think of the new widget, icons and the ads.
Cheers!
Labels:
altcanvas,
readerscope
Saturday, January 02, 2010
Make Android speak your Twits with "TwitSpeak"
Happy New Year All.
I thought what could be a better way to wish Happy New Year than to release a new Android app ... and make the source open.
So here is a fun little app TwitSpeak.
Just tap the icon and it will read your latest twit to you. How's that? Give it a shot.
And as I said, the complete source code of the app is out in the open, under Android's favorite licese APL 2.0.
http://code.google.com/p/twitspeak
(Tip for developers: If you were looking forward to integrating Twitter in your app and found the OAuth tricky to implement, you have ready to use code now. and it is under APL 2.0. Go, grab it).
You can get it from Android Market or get the apk.
I thought what could be a better way to wish Happy New Year than to release a new Android app ... and make the source open.
So here is a fun little app TwitSpeak.
Just tap the icon and it will read your latest twit to you. How's that? Give it a shot.
And as I said, the complete source code of the app is out in the open, under Android's favorite licese APL 2.0.
http://code.google.com/p/twitspeak
(Tip for developers: If you were looking forward to integrating Twitter in your app and found the OAuth tricky to implement, you have ready to use code now. and it is under APL 2.0. Go, grab it).
You can get it from Android Market or get the apk.
Labels:
altcanvas,
android,
APL,
foss,
opensource,
text-to-speech,
tts,
twitter
Saturday, December 26, 2009
ReaderScope 1.5 - quicker, better, prettier
ReaderScope 1.5 is ready for the holidays. With the latest improvements it gives the best Google Reader experience out there for your Android phone.
ReaderScope now uses non-blocking UI and the items are now loaded progressively. What does that mean? See it yourself.
As you know, the app is free in various markets. The themes (including the 'Santa' theme in above video) are part of a Theme Pack, which can be purchased for a ONLY $2.49$3.49
Big thanks to the beta testers who helped testing the unstable 1.5 builds for over a week. Thank you guys!
Also if you like ReaderScope, vote for it at Android Arcade Facebook app.
ReaderScope now uses non-blocking UI and the items are now loaded progressively. What does that mean? See it yourself.
As you know, the app is free in various markets. The themes (including the 'Santa' theme in above video) are part of a Theme Pack, which can be purchased for a ONLY $2.49
Big thanks to the beta testers who helped testing the unstable 1.5 builds for over a week. Thank you guys!
Also if you like ReaderScope, vote for it at Android Arcade Facebook app.
Labels:
altcanvas,
googlereader,
readerscope,
rss
Tuesday, December 15, 2009
Preview android.R.drawable.* images
This morning I was going through the Android SDK docs- specifically android.R.drawable class, to find out what stock icons android has that I can use in my project. Android has lot of icons in this class and one is encouraged to use stock icons whenever possible.
However I couldn't find any way to see how these icons look like. Their names are supposed to tell something about them, but they are vaguely descriptive at best. So I asked around on stackoverflow for help. I got a helpful link, but it is still a subset of all the drawables.
After a bit of thinking, I figured java reflection can help here and I put some code together. I ended up with a simple app which lists all the icons alongside their names. So now when you want to check out how a particular android.R.drawable.* looks like just scroll through this list.
Get the tarball and the apk. For the basic code snippet, check out my reply on stackoverflow.
Ads:
* Professional Android 2 Application Development
* The Busy Coder's Guide to Advanced Android Development
* Unlocking Android: A Developer's Guide
However I couldn't find any way to see how these icons look like. Their names are supposed to tell something about them, but they are vaguely descriptive at best. So I asked around on stackoverflow for help. I got a helpful link, but it is still a subset of all the drawables.
After a bit of thinking, I figured java reflection can help here and I put some code together. I ended up with a simple app which lists all the icons alongside their names. So now when you want to check out how a particular android.R.drawable.* looks like just scroll through this list.
Get the tarball and the apk. For the basic code snippet, check out my reply on stackoverflow.
Ads:
* Professional Android 2 Application Development
* The Busy Coder's Guide to Advanced Android Development
* Unlocking Android: A Developer's Guide
Labels:
altcanvas,
android,
icons,
sdk,
stackoverflow
Friday, December 11, 2009
ReaderScope 1.4 (with a Theme Pack)
Yes, now you don't have to stare at the black and khaki interface of ReaderScope. With 1.4, ReaderScope adds a theme pack. Right now it comes with three themes which look far more pleasant than the legacy color scheme. Also the Theme Pack is the first premium add-on to ReaderScope. You can buy it for only $3.49, from here. You can see the preview in the Theme switcher, just go to Settings -> Themes.
In future more themes will be added to the theme pack and you can get access to all of them, for just $3.49.
Go on, give it a try.
In future more themes will be added to the theme pack and you can get access to all of them, for just $3.49.
Go on, give it a try.
Labels:
altcanvas,
android,
googlereader,
readerscope,
themes
Thursday, November 19, 2009
Android AsyncTask template
Any meaningful GUI application needs to employ multiple threads, otherwise it is very likely to lock while doing any I/O operations - leaving bad impression on the user. Same is true for Android apps. In fact, android framework prompts user to close the app if it doesn't respond in 10 seconds or so. So it's absolutely essential to perform any task - that has even a remote possibility of taking a bit longer - in a background thread.
Fortunately Android framework has some useful constructs built into the framework that make our job relatively easy while doing multithreaded GUI programming. android.os.AsyncTask is one of them.
The basic steps to make your app multithreaded using AsyncTask are as follows:
1. Identify the code segment that you want to execute in background thread. (for e.g. code that does network i/o, bulk file transfer on local disk, etc)
2. Model it as an AsyncTask object.
(Subclass the AsyncTask object and put your code segment in the doInBackground(...) method)
3. Figure out what parameters you have to pass to the task, the result that the task should return and how to handle the exception in case something goes wrong.
This is pretty simple, but the third step gets bit complicated as your app grows and there are multiple asynchronous tasks that you want to code in.
When I was faced with this problem during the development of CuTewit, I stumbled through some steps. After a while I managed to create a template for modelling with AsyncTasks. In my second app - ReaderScope - the same template worked very nicely. ReaderScope has over 50 different tasks that are run on background thread at one time or another. The template I use, has made it pretty easy to add new AsyncTasks.
In this post, I want to share that template with you. I have written a small example app that demonstrates the use of the template. Download source tarball and apk to try it yourself.
Here is the source code of AppTask.java (the derivative of AsyncTask) for discussion.
What is Payload?
To simplify the management of passing parameters and carrying result/exception back, we create a special object called Payload. Payload carries four entities - the type of the AsyncTask (int taskType), parameters to the task (Object[] data), result of the task (Object result), exception that took place during the task (Exception exception).
Note the signatures of doInBackground and onPostExecute. The same payload object is passed around.
How do you start a new task?
How do you define a new async task?
You don't have to create another AsyncTask derivative object. Just define a new taskType, e.g. APPTASK_2 in AppTask.java. Create a switch case for that taskType in each of 'doInBackground', 'onPostExecute', 'onProgressUpdate'. Depending upon the nature of the tasks, the contents of payload.data will vary. Since this data is passed as generic Object[], you can pass around any types of objects that suite the task's needs. On the other hand, you have to be careful to not type cast them to wrong classes.
[We loose Java's static type checking by defining params and result as generic 'Object's. But it saves us from repetitively defining similar AsyncTask derivatives]
How is the progress of the task updated?
When you call publishProgress(...), it results in a call to onProgressUpdate(...) which is running in the GUI thread. Here, you can manipulate any widget like progress bar to indicate the task progress.
...
This may not be the only way to code AsyncTask, but it certainly has worked for me - not just for one, but for two sizeable projects. Before this, it used to be pretty cumbersome to define a new task.
You can download the source code and use it in your app if you like.
Any comments and suggestions are welcome.

Ads:
Fortunately Android framework has some useful constructs built into the framework that make our job relatively easy while doing multithreaded GUI programming. android.os.AsyncTask is one of them.
The basic steps to make your app multithreaded using AsyncTask are as follows:
1. Identify the code segment that you want to execute in background thread. (for e.g. code that does network i/o, bulk file transfer on local disk, etc)
2. Model it as an AsyncTask object.
(Subclass the AsyncTask object and put your code segment in the doInBackground(...) method)
3. Figure out what parameters you have to pass to the task, the result that the task should return and how to handle the exception in case something goes wrong.
This is pretty simple, but the third step gets bit complicated as your app grows and there are multiple asynchronous tasks that you want to code in.
When I was faced with this problem during the development of CuTewit, I stumbled through some steps. After a while I managed to create a template for modelling with AsyncTasks. In my second app - ReaderScope - the same template worked very nicely. ReaderScope has over 50 different tasks that are run on background thread at one time or another. The template I use, has made it pretty easy to add new AsyncTasks.
In this post, I want to share that template with you. I have written a small example app that demonstrates the use of the template. Download source tarball and apk to try it yourself.
Here is the source code of AppTask.java (the derivative of AsyncTask) for discussion.
package com.altcanvas.asynctemplate; import android.os.AsyncTask; public class AppTask extends AsyncTask<AppTask.Payload, Object, AppTask.Payload> { public static final String TAG = "AppTask"; public static final int APPTASK_1 = 1001; public static final int APPTASK_2 = 1002; /* * Runs on GUI thread */ protected void onPreExecute() { } /* * Runs on GUI thread */ public void onPostExecute(AppTask.Payload payload) { switch(payload.taskType) { case APPTASK_1: AsyncTemplateActivity app = (AsyncTemplateActivity) payload.data[0]; if(payload.result != null) { // Present the result on success int answer = ((Integer) payload.result).intValue(); app.taskStatus.setText("Success: answer = "+answer); } else { // Report the exception on failure String msg = (payload.exception !=null) ? payload.exception.toString() : ""; app.taskStatus.setText("Failure: error ="+msg); } break; case APPTASK_2: break; } } /* * Runs on GUI thread */ public void onProgressUpdate(Object... value) { int type = ((Integer) value[0]).intValue(); switch(type) { case APPTASK_1: AsyncTemplateActivity app = (AsyncTemplateActivity) value[1]; int progress = ((Integer) value[2]).intValue(); app.progressBar.setProgress(progress); break; case APPTASK_2: break; } } /* * Runs on background thread */ public AppTask.Payload doInBackground(AppTask.Payload... params) { AppTask.Payload payload = params[0]; try { switch(payload.taskType) { case APPTASK_1: // extract the parameters of the task from payload AsyncTemplateActivity app = (AsyncTemplateActivity) payload.data[0]; int numSteps = ((Integer) payload.data[1]).intValue(); if(numSteps < 0) throw new AppException("Invalid input"); // perform the task int progress = 0; for(; progress < numSteps; progress++) { try { // pretend to work for 1 second Thread.currentThread().sleep(1000); } catch(InterruptedException ie) { break; } publishProgress(new Object[] { new Integer(APPTASK_1), app, progress}); } publishProgress(new Object[] { new Integer(APPTASK_1), app, progress});
// Return result of the task payload.result = new Integer(42); break; case APPTASK_2: break; } } catch(AppException ape) { payload.exception = ape; payload.result = null; } return payload; } public static class Payload { public int taskType; public Object[] data; public Object result; public Exception exception; public Payload(int taskType, Object[] data) { this.taskType = taskType; this.data = data; } } }
To simplify the management of passing parameters and carrying result/exception back, we create a special object called Payload. Payload carries four entities - the type of the AsyncTask (int taskType), parameters to the task (Object[] data), result of the task (Object result), exception that took place during the task (Exception exception).
Note the signatures of doInBackground and onPostExecute. The same payload object is passed around.
How do you start a new task?
new AppTask().execute(new AppTask.Payload( AppTask.APPTASK_1, new Object[] { AsyncTemplateActivity.this, new Integer(numSteps) }));
[You can find it in AsyncTemplateActivity.java in the sample app]
How do you define a new async task?
You don't have to create another AsyncTask derivative object. Just define a new taskType, e.g. APPTASK_2 in AppTask.java. Create a switch case for that taskType in each of 'doInBackground', 'onPostExecute', 'onProgressUpdate'. Depending upon the nature of the tasks, the contents of payload.data will vary. Since this data is passed as generic Object[], you can pass around any types of objects that suite the task's needs. On the other hand, you have to be careful to not type cast them to wrong classes.
[We loose Java's static type checking by defining params and result as generic 'Object's. But it saves us from repetitively defining similar AsyncTask derivatives]
How is the progress of the task updated?
When you call publishProgress(...), it results in a call to onProgressUpdate(...) which is running in the GUI thread. Here, you can manipulate any widget like progress bar to indicate the task progress.
...
This may not be the only way to code AsyncTask, but it certainly has worked for me - not just for one, but for two sizeable projects. Before this, it used to be pretty cumbersome to define a new task.
You can download the source code and use it in your app if you like.
Any comments and suggestions are welcome.

Ads:
Labels:
altcanvas,
android,
async,
GUI,
multithreading,
readerscope
Thursday, November 12, 2009
ReaderScope v1.3.3 - offline podcasts
ReaderScope primarily started as an Android app to access Google Reader from the phone. Over time however, various features were added as they proved complimentary to the act of news reading - like sharing the news with friends (Twitter, SMS, Email); bookmarking it (Del.icio.us); reading what others think about it (Digg, Reddit, FriendFeed); support for rich forms of news, i.e. podcasts and youtube videos, etc.
This release improves one of those fringe features, that of Podcasts. ReaderScope supports scheduled download of news items for reading offline. However that wasn't supported for podcasts yet. This release tries to address that problem a bit.
Now as you click on a podcast beacon, you will be asked whether you want to play the podcast right away or just download it for later listening.

If you choose to download, it will start downloading in the background (with progress in the notification). When the download is complete, you can listen to it by clicking on the notification. You can do this when you are offline too.
Furthermore, you can choose to download multiple podcasts simultaneously. They will download in parallel and will be accessible via their independent notifications.

You can listen to them one by one after they are downloaded. When the podcast ends or if you choose to stop it; the local downloaded file is automatically deleted freeing the storage it occupies.
How do you like it? Let me know.
Also in this release there are some bug fixes. There was a glitch in the Google News and Twitter news features. If you were to sync your feeds with "Thorough" option, the feeds under Google News and Social Channels would disappear. This release fixes that problem.
That's it for now. Upgrade to v1.3.3 and let me know if there's any problem.
Cheers!
This release improves one of those fringe features, that of Podcasts. ReaderScope supports scheduled download of news items for reading offline. However that wasn't supported for podcasts yet. This release tries to address that problem a bit.
Now as you click on a podcast beacon, you will be asked whether you want to play the podcast right away or just download it for later listening.

If you choose to download, it will start downloading in the background (with progress in the notification). When the download is complete, you can listen to it by clicking on the notification. You can do this when you are offline too.
Furthermore, you can choose to download multiple podcasts simultaneously. They will download in parallel and will be accessible via their independent notifications.

You can listen to them one by one after they are downloaded. When the podcast ends or if you choose to stop it; the local downloaded file is automatically deleted freeing the storage it occupies.
How do you like it? Let me know.
Also in this release there are some bug fixes. There was a glitch in the Google News and Twitter news features. If you were to sync your feeds with "Thorough" option, the feeds under Google News and Social Channels would disappear. This release fixes that problem.
That's it for now. Upgrade to v1.3.3 and let me know if there's any problem.
Cheers!
Labels:
altcanvas,
android,
googlereader,
podcast,
readerscope,
rss
Friday, November 06, 2009
ReaderScope v1.3.2 - Social Channels
Few months back I realized that all the stories I read in my slashdot or ars-technica feeds seemed kinda ... stale. Why? Because most of the interesting ones I had already read - through links posted by the people I follow on Twitter. It is now a cliché to say that Twitter is the fastest medium of spreading news. Consequently, it's the news channel that delivers the latest news. Moreover, it's the news that you care about most; because it is coming from the people you have chosen to follow.
So how can a modern news reader be complete without incorporating this real time news channel.
In v1.3.2, ReaderScope introduces Social Channels.

You will see a third tab "Social" when you start the upgraded ReaderScope. You will find a preset Twitter subscription there. When you tap on it, you will be asked to login to Twitter (if you haven't already). Once it gets Twitter credentials, you can tap it again and it will download you twitter timeline. It won't show you all the twits (that is for dedicated twitter clients). Instead, it will go through all the twits and will pick the ones that have embedded links in them. ReaderScope will fetch the stories/pictures/videos pointed to by those links and when it's done, they will be presented to you as news items (with the original twits as yellow subtext).


How do you like that?
You can also schedule the Twitter subscription for periodic download.
You will see lot of other improvements in this version too, especially the item list (it now has author and timestamp, right in the list). The news fetched from Google News channels, looks fresh (unread) now; instead of dull in color. The unread counts have been fixed too.
On Podcast front: the ones that take too long "Preparing" (because of long time in buffering over slow network) can now be stopped.
So download the upgrade and enjoy.
And yes... in case you haven't noticed yet, ReaderScope is now accepting donations. ReaderScope is available FREE of cost for everyone to use. Some users who are avid news readers, will see great value in it. While others may not. So it's up to you to decide what's ReaderScope worth to you. If you can express it in terms of $$, you will help towards further development of ReaderScope. You can find the donate button on this page
... better yet, let me paste that button right here. :)
Thanks for all your support. More features are coming to ReaderScope. Show your support and help it improve.
Cheers!
So how can a modern news reader be complete without incorporating this real time news channel.
In v1.3.2, ReaderScope introduces Social Channels.

You will see a third tab "Social" when you start the upgraded ReaderScope. You will find a preset Twitter subscription there. When you tap on it, you will be asked to login to Twitter (if you haven't already). Once it gets Twitter credentials, you can tap it again and it will download you twitter timeline. It won't show you all the twits (that is for dedicated twitter clients). Instead, it will go through all the twits and will pick the ones that have embedded links in them. ReaderScope will fetch the stories/pictures/videos pointed to by those links and when it's done, they will be presented to you as news items (with the original twits as yellow subtext).


How do you like that?
You can also schedule the Twitter subscription for periodic download.
You will see lot of other improvements in this version too, especially the item list (it now has author and timestamp, right in the list). The news fetched from Google News channels, looks fresh (unread) now; instead of dull in color. The unread counts have been fixed too.
On Podcast front: the ones that take too long "Preparing" (because of long time in buffering over slow network) can now be stopped.
So download the upgrade and enjoy.
And yes... in case you haven't noticed yet, ReaderScope is now accepting donations. ReaderScope is available FREE of cost for everyone to use. Some users who are avid news readers, will see great value in it. While others may not. So it's up to you to decide what's ReaderScope worth to you. If you can express it in terms of $$, you will help towards further development of ReaderScope. You can find the donate button on this page
... better yet, let me paste that button right here. :)
Thanks for all your support. More features are coming to ReaderScope. Show your support and help it improve.
Cheers!
Labels:
altcanvas,
android,
googlereader,
readerscope,
social,
twitter
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!
Labels:
altcanvas,
android,
googlenews,
googlereader,
news,
readerscope,
rss
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!
Labels:
altcanvas,
android,
googlereader,
podcast,
readerscope
Subscribe to:
Posts (Atom)



















