June 16, 2013

Apps availble on Apple’s iOS but not on Android

For someone switching from an Android to an iPhone/iPad, they may be interested in exploring what the Apple app ecosystem has to offer that’s missing on Android. A lot of companies and developers still release their new titles to iOS first. Also iOS apps tends to feature more experimentation with design and other creative aspects of the user experience. Here are some such titles:

(Also check out the List of Essential Apps for iOS)

Apps: Not only do apps try to experiment with new designs, but the best ones react playfully to the user touches and gestures

  • Clear – gesture-based to-do list 
  • Paper by FiftyThree – drawing app
  • Tweetbot – twitter client
  • Solar : Weather – gesture-based weather
  • Star Walk – augmented reality star charts and constellations
  • Yahoo Weather
  • Summly – news app
  • Sparrow – mail client

Games: I find that there is not only a wider selection of games on iOS, but also ones with distinct artwork and controls. Here are some stand-out examples:

  • Badlands
  • Tengami – not out yet, but here’s a trailer
  • Clash of Clans
  • Ms. Splosion
  • Mittens

There are continuously new amazing games coming out. I would recommend getting the TouchArcade app to keep on top of them.

Things you can do on Android that aren’t possible on iOS


For someone switching from an iPhone/iPad to Andriod, they are interested in knowing what sort of apps are unique to Android that they can take advantage of. Here are a few:

(Also check out the List of Essential Apps for Android)

Full suite of Google apps: Not all Android devices may come with Google’s suite of apps. So make sure you have all the essential ones:

  • Google Search – includes Google Now, and on-device app search
  • GMail
  • Calendar
  • Maps
  • Street View on Google Maps
  • Chrome Browser
  • Hangouts
  • Google Play Music
  • YouTube
  • Google Chrome to Phone

Custom Keyboards: I would recommend the Google Keyboard which allows you to swipe your finger across the keyboard to input text.

Widgets: Newer versions of Android include lock-screen widgets which I find more useful than home-screen widgets. Dashclock Widget is a nice one to try out.

Files: Android gives you access to all the files on your device, so its easier to manage them instead of having to go through iTunes’ awkward app-specific file transfer system. Here are some useful apps in this category

  • ES File Explorer
  • Dropbox (the Android version lets you edit text files, a feature missing from the iOS version)
  • some text editor like Jota Text Editor to edit any text file on the device
  • Adobe Reader

Wallpaper Apps: Innovative apps like Gainos Fresh Wallpapers are available on Android which can automatically update your wallpaper from the most popular stream on Flickr at regular intervals. You can also find a wide swathe of Live Wallpapers apps like GyroSpace 3D and Ditalix as well as regular Wallpapers apps that give you a wide selection of static wallpapers to choose from.

Screensaver: Newer versions of Android come with a screensaver functionality called Daydream. You can set the device to display this when it is docked. Daydream functionality comes baked into apps you have on your device. E.g. Gainos Fresh Wallpapers will show you a stream of popular photos from Flickr. Flipboard shows you latest news stories. You can also turn your device into a photo frame by showing pictures from your device’s Gallery. Or you could keep it simple and just display the time.

Launchers: To completely change the look and feel of your home screen, you can replace the Launcher with a custom one. I haven’t tried any custom Launchers myself, but some of the popular names I’ve heard are Nova Launcher and GO Launcher EX.

Essential Apps for iPhone, iPad and Android

App Wall© Long Zheng

Friends who get a new iPhone, iPad or Android device often ask me what apps to get on their new device. So I’ve compiled a list of the essential apps that are available on both systems. I chose these apps because I feel this collection will allow new users to experience the magical feeling that they are thirsty for from their new gadget.

Also check out the things you can do on Android but not on iOS as well as apps available on iOS but not Android.

  • Google Essentials
    • Google Search – particularly for Google Now and Google Googles (reverse image search)
    • Google Maps
    • Chrome Browser
    • YouTube
  • Social
    • Facebook
    • Yelp
    • Twitter
    • Skype
    • LinkedIn
    • SoundCloud – audio clips from musicians, news networks, etc
    • Vine – share short animated clips
    • Grooveshark – personalized internet radio
    • Last.fm – personalized internet radio
    • Google+
    • Cinemagram – share short animated clips
  • Photos
    • Instagram
    • Pinterest
    • Pixlr Express – simple photo editing
    • Google Goggles – reverse image search
  • Reading
    • Pocket – offline reading
    • Flipboard – news feeds
    • Pulse – news feeds
    • Kobo/Kindle – books
    • Zinio – magazines
  • Food
    • Urbanspoon
    • Foodspotting
    • Epicurious Recipe App
    • OpenTable
  • Music
    • SoundHound – record a clip of music to find out which song it is
    • Songza
  • Movies
    • Flixster
    • Netflix
  • Text/Notes/Documents/Files
    • Evernote
    • Dropbox
    • Skitch
    • Google Drive
  • Location
    • Around Me
    • some transit apps specific to your city
  • Optical
    • Layar – augmented reality
    • Word Lens – real-time translations from camera’s live feed
    • any QR code scanner (e.g. ScanLife for iOS, QR Droid for Android)
  • Utilities
    • Google Translate – quick access to translate
    • any Flashlight app


Don’t download all these games at once, because then they will just sit on your device and you will forget to ever open them up and then after a while just forget why you downloaded it at all. I’d suggest to download and try out 1-2 games per day and only look for something new from this list when you get tired of what you already have.

  • Physics-based
    • Angry Birds franchise
    • Cut the Rope franchise
    • Wimp: Who Stole My Pants
    • Crayon Physics
    • Paper Toss
  • Endless
    • Fruit Ninja
    • Temple Run franchise
    • Doodle Jump
    • Tiny Wings (try Tiny Bird on Android)
    • Jetpack Joyride
    • Super Mega Worm
  • Social
    • Draw Something
  • Puzzles
    • Where’s My Water
    • Pudding Monsters
    • Candy Crush Saga
    • Tangram
  • Platformers
    • Wind-up Knight
    • Vector
    • Spell Sword
    • Megatroid
  • Word Games
    • 4 Pics 1 Word
    • Scramble
    • Words with Friends
  • Music Games
    • Tap Tap Revenge
  • Tower Defense
    • Kingdom Rush
April 27, 2013

Migrating blog away from Posterous

I’m in the middle of migrating away this blog from the Posterous service which is getting shut down. Please excuse the appearance of the site, as well as any broken links, during the migration. Things should be back to normal within 24 hours.

Update: Wow, this is taking much longer than I thought. Should be done shortly though.

Update 2: All done! Things should be back to normal now. I’ve tried to keep the design similar to what it was at Posterous and all old links should still be working. Let me know if you do find any broken links or if any elements are out of place. Thanks!

October 27, 2012

How to Suck at Acquiring New Customers – Audible.com

How to Suck at Acquiring New Customers - Audible.com

Just had the worst sign up and getting started experience at Audible.com. I find out of an offer from the Tech News Today podcast for a 1 month free membership and 1 free book. So I decide to sign up thinking it will be a quick 5-10 minute thing. 1 hour later, I am writing a blog post about the horrible experience setting this service up.

The actual sign-up process is quite streamlined. They ask you to set up an Amazon account. I was expecting to setup some sort of account so that’s not bad. Then even though your checkout total is $0, they want you to fill out credit card information. Ok, I understand because they are selling a monthly subscription. So I’ll do that.

But to actually start listening to your first book, is a whole different story. They don’t have a web-app, so you have to download some client. I wanted to listen to the audio books when doing chores around the home, so I decided to download the Windows client. During installation, the client wants me to close all my Chrome windows. I find this really annoying whenever an application asks me to do this because I always have something going on in my browser windows. Anyway, I reluctantly close all Chrome windows. The installation finishes and the application starts up. There’s a button to go to my Online Library where I can go to get books.

So I’m back on the website now. I decide to buy Game of Thrones as my first free book. Oh but wait, I have to pay $22.05 for this book! What happened to my first free book? After some looking around I realize that the 1 free book is based on the fact that they gave me 1 free ‘credit’ when I signed up. And the site claims that:

a very small number of audiobooks and other titles are valued at more than one credit

The Game of Thrones book is priced at 2 credits (as well as every other book in that series). To be fair, some of the other books I looked at, including popular titles like The Hobbit and The Hunger Games, were priced at 1 credit each.

Anyway, I decided to get The Hunger Games in the end. Now its added to my Online Library, and there is a button to download the book. But clicking on the button tells me that I don’t have the Windows client installed and that I need to download it. Even though I clearly have it installed and running! After getting frustrated, I call up Customer Service who direct me to switch off the ‘Software Verification’ setting in my online account because they don’t have good support for Google Chrome. Its awesome that you can’t find this information on their help pages.

So I hang up with Customer Service and am finally ready to have my computer read out my audio book to me. But no, it wants me to Activate my client before I can use it (even though it let me download books without activation). Still, this would be fine, except that it doesn’t actually accept my valid username and password! Hats off to Audible for making it really easy for me to give away my credit card information but making it nearly impossible for me to get the service I want, while pretending to be a legitimate business.

The Audible iPhone app worked fine – I was able to download and listen to books. But the Windows client would just not let me activate it. I called up Customer Service again, and they had no clue what was wrong. The only thing that I could think up was that I had an extraordinarily long password. I mentioned that to Customer Service and they said that it shouldn’t have any effect. Also I was able to log into the website and the iPhone app using this password. After getting no where with Customer Service, I hung up and decided to change my password to a shorter one. Lo and behold, suddenly I was able to activate the client. What a horrible bug to have, and be completely oblivious to its existence.

The only good thing was that I was able to change my password back to the long one after activation and the client kept working.

Great job Audible! You make me seriously doubt if I want to renew my membership next month.

March 27, 2011

Lessons Learned Working on a Programming Side-Project

The last few months I had been building an app for the upcoming launch of the BlackBerry PlayBook tablet. Its a fairly simple app – a text editor that syncs notes with Dropbox – and consists of about 3000 lines of source code. Now that I have submitted version 1.0 of my app to the BlackBerry AppWorld, I wanted to take a step back and look at my progress, and more importantly, my productivity.

I used the Mercurial Activity Extension to plot out my commits and collect other relevant data. Here is a chart of my commit activity for the duration of the project along with some annotations:

Lessons Learned Working on a Programming Side-Project

I worked on this during any spare time that I got from my full-time job. I first started during the Christmas/New Year’s holidays. This was the most productive, and also the most frustrating time, since I was learning how to do things on a new platform (Adobe AIR + BlackBerry QNX) for the first time. Also RIM had an offer going on for all developers: if the app was submitted before February 1, and accepted, the developer would win a free PlayBook. So initially I was aiming to finish up in about a month.

However, on January 13 I found out that RIM had extended that deadline to March 15. And my productivity suddenly dropped right after. I realized that I didn’t have an excuse for ignoring all the other things in my life that required my attention, so I started dealing with them. Also, work got a bit busier during early February and I generally found myself having less spare time. Anyhow, my activity started picking up again closer to the next deadline. There was another small drop when I discovered that the second deadline had been extended, but I pulled through this one with a determination to finish by the now defunct second deadline. Eventually, I was able to finish slightly past that deadline, and had my first release ready by 22nd March.

Lessons Learned:

  • Deadlines work. But only when they are enforced by some third-party. Self-imposed deadlines have never been effective for me.
  • Life always gets in the way. There’s just no getting around this one.
  • Momentum is important. It’s hard to get back momentum once you lose it. But once you have it, you’re on a roll and much more productive.
  • Social life gets put on the back burner. Devoting your time between a full-time job, a side-project that feels like another full-time job, and taking care of life’s necessities, really doesn’t leave time for anything else.

I didn’t stop there with my analytics. I wanted to dig deeper into the data. So I plotted a chart of my activity per day of the week:

Lessons Learned Working on a Programming Side-Project

The chart is divided into working days and holidays (weekends, Christmas break, New Year’s, Family Day, and an extra day off I took on the Wednesday between Christmas and New Year’s). Surprisingly, my two most productive days of the week are not on the weekend, but they are Tuesday and Friday.

I knew that I had been doing a lot of my coding during the wee hours of the morning, but I wanted to know exactly how much. So I plotted this chart mapping my number of commits done per hour over all days:

Lessons Learned Working on a Programming Side-Project

It looks like 7am is the most productive time of the day for me. There is a reason why I have gravitated towards working in the mornings: there are the least amount of distractions then. Most of the world is asleep and there is little activity on Facebook, Twitter, tech blogs and news websites to distract me. Also, my mind is fresh in the morning and not tired after a full day of work. Luckily, I have a job that is flexible with their work hours, so I was able to shift my working hours to later in the day. Night time was mostly reservered for eating dinner and unwinding by watching a little TV and clicking away at links on sites I frequently visit.

It also looks like I do roughly about the same number of commits on holidays as a do on workdays. Its just that my commits during holidays are spread out more evenly during the day. This makes me wonder if I am more focused and get the same amount of work done, as I would on a full day of a holiday, that I get done in a few hours on a workday. Perhaps I am subconsciously treating the fact that I can’t be too late to get to the office for my job as a  ‘deadline’. And that deadline mentality forces me to get more things done faster. Perhaps I’m one of those people who work better under pressure.

December 9, 2010

Doing some Vector Art

For the longest time I’ve been wanting to have a personal avatar that I could use for my profile picture with online services. I didn’t feel comfortable putting up a real picture, but on the other hand I wanted to have something more personal than some arbitrary photo/design.

So recently, I decided to spend some time and create a vector version of my cartoon-self. Since I am not artistically inclined, I decided to use an existing photo of myself as inspiration. I traced the outline of my face from the photo, and continuously used it for reference for contours, colours and gradients. I tried not to make it too realistic in an effort to avoid the uncanny valley.

I find doing such drawings relaxing and it gets the creative juices flowing. I also got to learn a lot about how things work in Inkscape. I particularly love how you can fine tune vector paths to the smallest detail and easily create smooth lines – something I would never be able to do with just my hands using pencil and paper.

Since I use version control for almost everything (including this project), I was able to document the progress of my work. In the end I wrote up a script to fetch all the versions of my image from the first draft to the final image, and created an animation from them showing the progression of the work:


My python code for extracting all versions of a file from a SVN repository can be found here. Note that you will need to install the pysvn library for your python distribution for this to work.


June 22, 2010

Obscure features of iOS4 on the iPhone

Here are some features in the new OS upgrade that weren’t immediately clear to me what they were doing

  • In the AppStore, some of the purchases have a plus sign next to them. This indicates that the app has an iPad version too.


  • Apart from the built-in spell-checker which underlines incorrect words with red squiggly lines, you can also select a word manually and in the pop-up that appears there will be an extra option called ‘Replace…’. Tapping ‘Replace…’ brings up suggestions for other words that you might have intended to type instead of the original.


I’ll add more if I find something else interesting.

April 24, 2010

Sukho Thai Restaurant Review

My friend Wing wanted to try out Sukho Thai Restaurant in the Regent Park area (Dundas and Parliament) because of a recent positive review he had read in NOW magazine.

We initially checked out their website which looked pretty impressive and very well done. I also spotted Shrimp Chips in the menu which I had been dying to eat for quite a long time but wasn’t quite sure where to get them from. So we decided to check the place out.

The website had raised our expectations high. But when we got to the neighbourhood, it didn’t look so great. My friend also pointed out that this was a high crime rate area (news to me!). We finally found the restaurant and it doesn’t look that great at first sight. A narrow corridor which is pretty much the entire restaurant. There was a lineup when we got there and a lineup was there as long as we were eating – which was past the 10pm closing time for the restaurant. We also had to wait about an hour in line to get a seat.

However when you do start to look around, the place is nicely decorated. We also started noticing the food that other people were being served, which looks appetizing and the servings were large. Considering the fact that most of the items are under $10, this looked like a great find.

The place even has translations posted up all over the place so you can learn some Thai while waiting around. Word of advice for anyone in groups larger than 2: make a reservation before hand – this place gets crowded! A group of 4 who were waiting in line before us weren’t able to find a table at all and eventually ordered take-out.

After I had ordered my choice selections off the menu, I noticed a sign on the wall certifying the place as Halal. For those of you that know me, you know that this is a big deal for me. This is first ever halal Thai place I’ve encountered in Toronto. I’ll certainly be coming back here more often.

And the food was simply amazing too. The Shrimp Chips fulfilled my craving. The spicy Pad Kee Mao with shrimp was full of flavours from its different ingredients. And so aromatic. The mango salad on the side was a nice retreat from the hot dish. As was the orange milky drink (which tasted somewhat like bubble tea). I’ve always wanted to have bubble tea with a meal! And in the end, I couldn’t resist and had to order desert. Tapioca with Coconut Milk.

Simply amazing. I had a hard time finishing up the desert after that big meal. I chatted with our waiter, complementing the food. It turned out he was the owner (or part-owner along with his wife and parents). His wife was the chief cook who is originally from Thailand. He even let me take some Shrimp Chips for takeout!

Really nice people and really nice restaurant. With great prices!

August 4, 2009

Ali’s Brief Introduction to Coffee Beverages

Espresso[1] [2]:
Espresso is a concentrated coffee beverage brewed by forcing hot water
under pressure through finely ground coffee. It is a relatively new
drink, introduced in the last century, since it requires special
machines (espresso machines) for its brewing. Espresso differs from
‘normal’ brewed coffee in the fact that the espresso machine is used
to create high pressure steam (up to 15 atmosphere) to pump through
the ground coffee. This results in a much higher concentration of the
final solution than is possible with just regular drip coffee makers
using gravity to move the water through the coffee grounds. Espresso
contains approximately two to three times the caffeine content of
regular drip brewed coffee. A shot of espresso has about half the
caffeine of a standard cup of drip brewed coffee.
Espresso ‘Shot’:
The act of producing a shot of espresso is often termed ‘pulling’ a
shot, originating from lever espresso machines which require pulling
down a handle attached to a spring-loaded piston, forcing hot water
through the coffee at high pressure. This process produces an almost
syrupy beverage by extracting and emulsifying the oils in the ground
As a result of the pressurized brewing process, all of the flavors and
chemicals in a typical cup of coffee are very concentrated. For this
reason, espresso is the base for other drinks:
Latte (Caffe Latte)[3]:
(1/3 espresso, 2/3 steamed milk)
What in English-speaking countries is now called a latte is shorthand
for ‘caffelatte’ meaning ‘coffee and milk’. Ordering a ‘latte’ in
Italy will get a large glass of hot milk, as latte simply means milk
in Italian. A Caffe Latte is typically prepared with approximately 1/3
espresso and 2/3 steamed milk, with a layer of foamed milk
approximately 5 mm thick on the top. Among all the drinks mentioned in
this guide, the Latte is the one with the most milk in it. Variants
include replacing the coffee with another drink base such as chai[4],
mate[5] or matcha[6].
(1/3 espresso, 1/3 steamed milk, 1/3 foam)
A Cappuccino differs from a Caffe Latte in that it is prepared with
much less steamed or textured milk than the Caffe Latte. A cappuccino
is traditionally served in a porcelain cup, which has far better
heat-retention characteristics than glass or paper. The foam on top of
the cappuccino acts as an insulator and helps retain the heat of the
liquid, allowing it to stay hotter longer. A skilled barista will pay
special attention to attaining the correct texture of the milk and the
ratio of the foam while steaming the milk, thus making the Cappuccino
one of the most difficult espresso-based beverages to make properly.
Moreover, some may even obtain artistic shapes while pouring the milk
on the top of the espresso coffee[8].


Mochaccino (Cafe Mocha)[9]:
(1/3 espresso, 2/3 steamed milk, with chocolate)
A Cafe Mocha is a variant of the Caffe Latte except that a portion of
chocolate is added, typically in the form of sweet cocoa powder,
although many varieties use chocolate syrup. Unlike Cappuccino, Cafe
Mochas do not contain the well-known milk froth on top. They may have
whipped cream instead. A ‘White Mocha’ is a variant made with white
chocolate instead of milk or dark.
Macchiato is espresso with a small amount of hot, foamed milk.
‘Macchiato’ simply means ‘marked’ or ‘stained’, and in the case of
Caffe Macchiato, this means literally ‘espresso stained/marked with
milk’. The ‘mark’ or ‘stain’ refers to the foamed milk that is put on
top to indicate the beverage has a little milk in it (usually about a
Other beverages:
There are lots more coffee beverages. Here are some links for further reading:
Happy drinking!

[1] http://en.wikipedia.org/wiki/Espresso
[2] http://bit.ly/sB7vp
[3] http://en.wikipedia.org/wiki/Latte
[4] http://en.wikipedia.org/wiki/Chai
[5] http://en.wikipedia.org/wiki/Mate_(beverage)
[6] http://en.wikipedia.org/wiki/Matcha
[7] http://en.wikipedia.org/wiki/Cappachino
[8] Latte Art: http://bit.ly/ChMp7
[9] http://en.wikipedia.org/wiki/Mochaccino
[10] http://en.wikipedia.org/wiki/Caffe_macchiato