Friday, June 28, 2013

Bing Image Parser

How many people have noticed the different images that are displayed on the home page of the search engine Bing? I used to visit the Bing homepage just to check the image each day. As an aside you can get some trivia on the US version of the site.



It was then that I had an idea to see if there was a way to automate the way to see different images that are provided by Bing. After a search, done ironically, on well "Google" (Searching on Google is like second nature for me), I was able to get an RSS feed URL for the Bing images, and able to parse it using a small Java application.

The reason behind choosing a source which gives data as RSS is that it is a standard. What the core of this application does is parse an RSS Feed. The other functionality like console, ability to save image and other settings are built around this core. So essentially this can be reused to parse other RSS Feeds.
The UI is not very fancy, it is a invoked via command line and there is a windows shell script that can be used to run it easily. (Make sure you have Java runtime installed). If you don't want the source code, you can grab a build file (zip file with the application and shell script file) from GitHub.

After getting the build file, extract it to a folder, edit the "settings.properties" file and run the "run-biotd.cmd" file. If you are opting to save the images to disk, make sure that the folder specified exists.



The entire eclipse project is now available at GitHub and licensed under the "Apache License Version 2.0" at the link below.
https://github.com/midhunhk/the-bing-image-of-the-day-parser

Build no 0.4.5 is available at
https://github.com/midhunhk/the-bing-image-of-the-day-parser/blob/master/BIotD/builds/BIotD_0.4.5.zip

Make sure to check these out and watch out for future updates. You can use this source code to parse any other RSS feed response and make an awesome app, so don't wait up.

Saturday, June 22, 2013

Mobile App vs Desktop application Development

The app development and release cycle for mobile (or tablet) and desktop applications differ vastly.

A desktop application is expected to be feature complete at the time of launch and may have undergone years of development (in the case of large applications like an Office Suite) before a major version is released. Only minor fixes for bug and security are expected till the next major release.Unless it is a major security related update, most of the time I ignore application updates for my desktop applications. This is because if there is no change in user experience or performance, it doesn’t seem work to go over the procedure of doing an update (A system restart for some applications if on Windows adds to this misery). I keep my graphics driver software up to date without seeing any significant performance improvements.

On the other hand, most users expect their mobile apps to get regular updates. It has sort of become a norm. This could be an addition of a new feature, improvement in user experience or a bug fix. Updating an app is seamless and there is little or no data loss and you can start using the updated app as soon as it is updated.

So while developing a mobile app, in my view, it is important to launch the first version with the most important and basic features that an app is concentrating. And add additional features upon each updates in short cycles. This would keep give the users a feeling that the app developer is constantly developing the app on improving the user experience. Most importantly this would keep the app fresh. If it stops evolving, users might get bored and may try out another app.

The advantages of this kind of release cycle are that the developers can get feedback from the users early and take into account feature suggestions or changes.

It should, however be noted that these views may not apply to all scenarios, there are exceptions. For e.g.: there is no scope or need for a short release cycles in the case of an app like Calculator.Desktop browsers like Google Chrome and Firefox have short release cycles, although there may be some minor change in a version.


To conclude, the approach for mobile app development is different from that followed for conventional software releases. This should be researched from a marketing as well as technical stand point before being finalized.