Birthdays Released on Android Market
Yesterday, I released my first Android application on Android Market – Birthdays. It is a birthday reminder application which syncs all your contacts’ birthdays to your calendar.
One can say that I’m a forgetful person and while there are some advantages of this situation, I often forget birthdays of people who matter. As a solution to this, I started maintaining birthdate of a person into his/her contact. Back then, I had just bought an iPhone and I was pleased that it had a “Birthday” field in the address book. I didn’t hesitate paying $0.99 for a birthday reminder app which didn’t exactly “remind” me (iPhone didn’t support Push notifications or Calendar sync back then).To be exact, it helped only a little if at all.
In the same time period, I was also excited about Android as a development platform. When I got my first Android device, I tried out a few birthday reminder apps already available. Most of them didn’t work as I expected them to. While some did, they relied on a background service for notifications which will keep running at all times. So, I decided to start the development of yet another birthday reminder application which will get the job done while not being a resource-hog. While the journey of the development was quite educational, it was easier than I initially thought (probably because of a slight change in my job description). I still can’t believe it took me a year to develop and publish my first “real” application.
So, what’s next? The application is still very basic. I am going to explore android SDK some more by adding new features like facebook sync, two-way contact sync etc. I have had a lot of help from Android developer community so, I am going to write a few blog posts explaining some issues I faced in the development of this application as my contribution. I am also planning to open the source to public as soon as I am done with implementing all the features I have in my mind. The application source can be accessed from Github.

If you haven’t yet tried it, give it a spin by downloading it from the Market. Do provide your feedback via comments below so that I can improve it further and make it more user-friendly.
A feature suggestion is also welcome. I will implement it as I get time to spare.
Note: Because of a major bug, all the calendar events created by Birthdays are being removed by Android upon reboot. I am working on an alternate way to sync the calendar. Please bear with me until I release a fix.
Changelog:
Birthdays v1.2 R6 (September 20, 2010):
- Fixed the “Invalid Birthday” issue
- Fixed crashes on Droid X
- Corrected calendar event dates
- Better calendar cleanup
- A few minor bugfixes
Birthdays v1.1.beta (August 21, 2010):
- Fixed the crash for non-HTC devices
Birthdays v1.0.beta (August 18, 2010):
- Initial release
Installing Redmine 1.0 on Mac OS X Snow Leopard
I have been a great fan of Redmine since I came to know about it back in 2008. I have been using it ever since to track my personal as well as professional projects. I had an installation of good old Redmine 0.8.6 on my Snow Leopard and I decided to upgrade it to 1.0 RC. As always, installation was not so smooth for me, but I managed to do it and here’s how.
I followed Redmine Upgrade Instructions initially, which required me to upgrade to Rails v2.3.5 from v2.2.2 with all dependencies. Thanks to awesome rubygems, it was a cakewalk. But, I made a rookie mistake there. Instead of installing them in system path using sudo, I installed them in user directory (~/.gem). To check your gem installation location, you can execute gem list -d. Anyway, it eventually led to an error “Missing the Rails gem. Please `gem install -v=2.3.5 rails`, update your RAILS_GEM_VERSION setting in config/environment.rb for the Rails version you do have installed, or comment out RAILS_GEM_VERSION to use the latest version installed” . This was very confusing as Rails 2.3.5 was already installed and upon executing rails -v, it displayed Rails 2.3.5. I had to uninstall Rails 2.3.5 and all the dependencies from user directory and reinstall them in system path using sudo.
Second challenge was to make Rails 2.3.5 work with mysql. As I was using default mysql installation in snow leopard, which happens to be a 32-bit one, I was not able to install mysql gem for ruby. After a little bit of googling, I found out that I had to download and install 64-bit MySQL in order to compile 64-bit gem. So, I installed new MySQL instance, migrated all my data from the older instance and then installed mysql gem. And I finally got the new Redmine installation got up and running on apache.
I wish I can have the wordpress-like automated upgrade mechanism in Redmine.
iOS4 on iPhone 3G: My Review
As mentioned previously, I installed iOS4 on my iPhone 3G a few days back. I have been using my iPhone sparingly since then and here comes the long overdue review.
First of all, as mentioned in the post earlier, the iOS4 felt slow and sluggish compared to 3.1.2 on iPhone 3G. It didn’t take me much time to figure out the reason. As I mentioned before, I’ve used redsn0w 0.9.5b5 to jailbreak my iPhone 3G. Now, redsn0w has a couple of checkboxes named “Enable Multitasking” and “Enabled Homescreen Wallpaper” which comes checked by default.

It is pretty much self-explanatory what they do. All you have to do is disable them to avoid sluggish user interface and applications. While disabling “Enable Multitasking” is strongly recommended, you can keep “Enabled Homescreen Wallpaper” turned on by sacrificing a little memory for the sake of better looks.
Now, getting to the actual review, the two major enhancements I can access are Folders and iBooks (iAd is not really a feature, is it Steve?). I didn’t like the concept of folders on iPhone to be fair. I seriously don’t know how people can (or more importantly, want to) install more than 180 apps on their phone. If you have to for some reason, why scroll through screens when you have excellent app searching enabled in spotlight? The other “major” addition iBooks is slightly better than Classics. I wouldn’t like to read books on a 3.5 incher device anyway.
Looking at the minor enhancements, I like the 3D dock and wallpaper support on home screen. Birthday Calendar is an excellent addition and makes $4.99 app Birthdays useless. Search suggestions in Safari are vaguely helpful (mostly to make sure my crappy EDGE connection is not lost
). Finally, a search bar in messages which is very helpful (After using android, I always look for search button in my iPhone if I need to search for something anywhere, just to be disappointed).
As expected, not a major upgrade for me owning an iPhone 3G. Just a fairly polished enhancement release, I suppose. Nonetheless, it makes the upgrade worth it. It’s a good thing Apple stopped charging iPod upgrades.
Episode II: Return of a freelancer
The change has finally come – for both me and my blog. I am back to freelancing after working at Infosys for two years. The primary reason being lack of time to concentrate on things I wanted. I’ve learnt a lot of things in my time at Infy and I thoroughly enjoyed it. Leaving it was a toughest decision I had to make till now, but I’m glad that I will be getting more time to work on my ideas now. With this, there begins a new episode of my career.
As for my blog, after so much time spent on my blog’s design, I turned out to be a less-than-average designer (not to mention, too much of a critic) and didn’t like any of my designs. So, I modified The Theme Foundry’s Traction theme a little bit. I will introduce little functional enhancements going forward but, now the website has reached a stable point in terms of look-and-feel.
P.S. – As I have more time on my hands now, I will be posting more on my blog about my experiments with Android, Javascript and more.
Updating and Jailbreaking iOS4 on iPhone 3G
First of all, I have a previously jailbroken iPhone 3G (MB version, jailbroken with PwnageTool) with OS 3.1.2. As the iOS4 upgrade didn’t have many things in store for me (iPhone 3G, you see), I wasn’t so excited about it. But I finally spared some time to install it on my (now spare) iPhone.
As always it happens to me, the PwnageTool 4.01 didn’t work for me as expected/described. I got the famous error 1600/1604 every time I tried to restore the custom firmware. iTunes threw error 1604 after spending a lot of time trying to restore the custom image in Recovery Mode. I also tried DFU mode, but it wouldn’t work. I searched the web/forums for similar issue for iPhone 3G. I found many people having it on 3Gs, but unfortunately none for 3G. Anyway, I tried all the suggested solutions for 3Gs without any luck.
After spending approximately 2 hours trying to figure out the issue, I decided to give redsn0w 0.9.5 beta 5 a go as it works differently than PwnageTool. The catch is, I had to upgrade to the new baseband. Anyway, after a couple of retries, it worked. Ultrasn0w unlock works as expected. iOS4 seems slower than 3.1.2 initially, but I’ll reserve my opinion till I spend a lot of time with it. Yes, you guessed it. The review is coming.
Windows Live Essentials beta and Photo Fuse Impressions
I wanted to try out the all-new Windows Live Essentials beta because of its awesome new features; especially Photo Fuse. I was in love with the concept the first time I heard about it. Mostly, because I always click multiple pics of same scene just to make sure nobody is looking around or has their eyes closed. Even after taking enough precautions, when I transfer the pics to the computer, I find many flaws that shouldn’t have been there (probably because I’m a lousy photographer). So, when I heard about the Photo Fuse feature Microsoft has been working on for next Windows Live Photo Gallery, I couldn’t wait to see it in action.
I was a bit unsure whether it will work as expected because most of these so-called “cool” features don’t quite work out for me. So, today I downloaded and installed Live Essentials Photo Gallery and I’m glad to say that Microsoft has implemented it in unique way. I tried almost dozen of sets of similar photos for Fuse. Some of the results were good, while others were not-so-good. Out of the 11 sets I tested, it identified all the front-facing faces in the photo and displayed alternative faces from other similar photographs. Only glitch is, it doesn’t identify the faces, it just assumes the same position in the other photo.
Blending multiple photos in one is also not as clean as I would’ve wanted. It does not detect or blend the background of the faces but considering image processing hasn’t reached there yet, it’s good enough for now.
The software is still in beta, so I’m sure Microsoft will improve things for final version. But, I will certainly be waiting for the day where photo management applications start identifying the person in the photo and we can replace the face without affecting the background.
The change is coming…
As you can probably notice, this site is going through a major change. I am set out to come up with entirely new design for my main site as well as my blog. The transition is going to take a lot of time as I don’t have enough to work on it right now. I will keep experimenting with different tools to improve the usability and visibility of the content. Meanwhile, you will have to bear with me.
Rooting HTC Desire: The Hard Way
There are many HTC Desire Rooting tutorials and step-by-step guides out there. Best ones amongst them are probably this and this. There are easier methods like this, but I prefer simpler over easier (Yup, I’m too lazy to burn a CD. I’d rather do it without rebooting
). Before proceeding with the process I followed, I should mention that my HTC Desire is Singapore/Unlocked version which comes with RUU_Bravo_hTC_Asia_WWE_1.19.707.7_Radio_32.36.00.2 8U_4.06.00.02_2_release_126179_signed.exe ROM by default.
I primarily used Snow Leopard for this process (I had to use windows to make GoldCard). Following the above mentioned xda-developers guide pretty much did it. As it mentions, even I don’t have a branded (career locked) ROM, I needed a GoldCard to make it work (I came to know that after couple of failed attempts
). Anyway, following the guide for Mac OS X, everything else worked perfectly till the time came to restart device in recovery mode and flash update.zip from SD card. It failed to flash it because image verification failed. So, after spending some time on internet trying to find a solution, I finally found one. I found a way to enter a custom flasher menu in recovery mode by executing recovery-mac.sh (Which loads the green menu mentioned here). It took me a while to figure out that this menu doesn’t operate with volume up/down like the bootloader. So, here is the tip – The green recovery menu can be navigated using optical trackball; so it’s not stuck or frozen
So, finally I have my HTC Desire rooted. First thing I did was to get rid of the stock ROM. I took the Red Pill (Pays-ROM 2.0) and installed the ROM. Let’s see if I can find any difference in speed and battery usage.
Update: My desire keeps restarting if I click on new text message notification (More on that here). So, reverting back to the stock ROM for now. I hope I can work on my own ROM soon enough before I lose interest or I find a perfect ROM
HTC Desire vs iPhone 3G: My Verdict
It’s been around half a week since I have been using HTC Desire. I was very much happy with the initial impressions of the device. But, there is a big difference between playing around with the device and actually using it in my day-to-day schedule. So, I totally replaced my old iPhone 3G with HTC Desire for a couple of days after preparing it over the weekend.
Before going through preparation process (which include applications I’ve installed) comments on “Things I May Love” and some of “Things I love on iPhone” from previous post.
- People (Contacts): Two words – absolutely amazing. Linking of contacts with exchange and facebook works seamlessly. Love it.
- Google Calendar Sync: Very helpful. I don’t have to connect it to my computer to sync anymore. Can’t possibly forget any events and reminders
- Integration to social networks: Great. Uploading photos to twitter/facebook/flickr is piece of cake. Even uploading a video to youtube is very easy.
- Adobe Flash: Visited a few websites, which looked fine except veoh. I couldn’t watch any video there. Not sure what is the deal.
- FM Radio: As I mentioned before, the reception is pretty weak. But, works flawlessly if the signal is strong. Anyway, I don’t think I will be using it much.
- OTA Software Updates: Still waiting for Froyo to be available for Desire.
- Lock text message to prevent deletion: I should have labeled it as “Things I love” in the first place.
- Pattern-based Screen Lock: This one has turned out to be a disappointment. Even if I enable it, the default screen unlock (slide down) doesn’t go away. So, I have to unlock my screen twice. I hope HTC will fix this in next update.
- Voice recognition: Did not use it that much but, mostly it is accurate.
- DoubleTwist: As it turns out, it’s neither the most convenient nor the fastest music syncing I have seen. It takes too much time to refresh iTunes playlists (Maybe my library is too big but, I am looking for a worthy alternative to iTunes, right?). So far, copying the music directly to SD has been convenient.
- Keyboard Accuracy: Now I am pretty sure that iPhone keyboard is far more accurate than the one on Android. I have tried HTC IME mod and swype. None of them made any difference. I still hope a little bit of practice will do it right.
- Battery: Battery life is less than half of what my iPhone delivered. I don’t think it’s Google Talk because Android seems to be using most of it (more than 90% in some cases). I will try different suggestions from guys at xda developers forum to increase it.
- Scratch-proof Screen: I assumed that all the high-end phones come with this feature now because iPhone has it from the beginning. But, sadly, I was wrong. I’ve got scratches on my screen and I hate it
(who doesn’t?).
I went through Android Marketplace and downloaded all the alternatives to the applications I was using on my iPhone. I found android counterparts for some of them, alternative applications for some and some cool stuff that wasn’t available on iPhone. So here goes the list and comparison of all the applications I have on both phones.
Android Counterparts of the Apps I was using on iPhone:
- Twitter: Official twitter client for iPhone was probably most opened application on my iPhone. Even though I am using peep as a widget, I installed official Android Twitter application. It is very different from its iPhone counterpart and lacks some features as well but, it simply works!
- Foursquare: Another application I loved on iPhone. It is almost same as its iPhone counterpart on Android.
- Dictionary.com: Sometimes, I get an urge to read literal meaning of some word. To quench that thirst, I kept it on my iPhone (Evidently, I am too lazy to open the browser). The best thing about it was, it worked without active internet connection. Sadly, it is not the case in its Android counterpart which requires internet connection. I am not sure whether it’s worth it.
- Facebook: Almost same as its iPhone counterpart. I don’t use it much so, it doesn’t matter that much.
- Evernote: Exactly same as its iPhone counterpart. Works for me
- Boxee Remote: I use it once in a while when I am too lazy to get up to my keyboard.
(Better or worse) Android alternatives to iPhone Applications:
- EboBirthday (Alternative to Birthdays on iPhone): It is a birthday reminder application and it works well. It would have been better if it read birthdays from facebook, too. Considering it is free (compared to $2.99 for Birthdays) it does the job very well.
- Astrid Tasks: (Half-alternative to Awesome Notes): It is a task list application with pretty good feature set. Awesome Notes is kinda awesome but, I can ignore the fact that it only does less than half things Awesome Notes does considering it is free. Edit: Astrid Tasks has improved a lot since I originally wrote this. It just may be better than Awesome Notes now.
- Shazam (Alternative to Midomi Soundhound): Again, a free alternative to an excellent paid application. Sad thing is, it can’t identify live songs or hums.
- Scoreboard (Alternative to ESPN Scorecenter): This one is not exactly convenient to use but, it’s an improvement over ESPN Scorecenter.
- Settings Widget (Alternative to SBSettings): I used SBSettings to quickly turn on/off radios or kill processes. Android has got a built in Home Widget that does the same work. Nothing like it.
iPhone Applications I could not find on Android Market:
IMDB: I couldn’t even find any good alternatives. Being a movie buff, one of the must haves for me.Edit: Available in Android Market now.eBay: Being an occasional eBayer, useful.Edit: Available in Android Market now.- Big Cinemas: Big Cinemas being the only multiplex in Mangalore, the city where I live, I used it every weekend to check out show times. I would love to have it on Desire.
(Awesome) Applications that are missing from iPhone:
- Barcode Reader: Amazing piece of work. I love it when I don’t have to search Android Market for application that I just read a review about. Just flash the QR Code and I am good to go
- Google Goggles: Still experimental and slow but, very cool application to have. (I don’t know if it is cool enough to use to impress girls
) - ES File Explorer: Yes, a file explorer. Beat that iPhone..
- Google Talk/Lattitude: If you are into these services, these apps run in the background. You’re constantly annoyed/spied by friends
- Google Earth/Sky Map: Not so useful but, cool pieces of work.
So, HTC Desire is overall as good as it gets over good old iPhone 3G. It is way more snappier, friendlier and cooler than iPhone 3G. Beside, now that Apple has discontinued it, I chose perfect time to upgrade. The only shortcomings are battery life, keyboard accuracy and lack of application availability. But still, they are not deal-breakers for me.
I haven’t tried my hand in custom ROM yet (heck, I didn’t even root it yet
). Once I get enough time, I will start developing on Android. Meanwhile, I am sure ROM chefs will work to remove all the pain points.
P.S.: If anybody have a suggestion about alternatives to apps I want or any other cool applications, feel free to contact me.
Update: Now that I’ve got a couple of deep scratches on my Desire screen, I know that all the high end smartphones don’t come with scratch-resistant screens. Added it to the list.