Thursday, August 16, 2012

Bye Bye Flash

The blogosphere is abuzz with the news of Adobe stopping to support flash for Android. There are 2 sentiments that I picked up from all the literature published on the web:

1) The fanboi group is talking about payback for 1999 and how Steve Jobs was right all along.
2) Quiet a few people are applauding Adobe for this step. Continuing to support flash was a loosing battle.

Personally, I was never a fan of flash but did not hate it either. It had come to signify annoying intros and adverts on websites for me but I accepted it as part and parcel of web dev technologies.

That being said, who is using flash right now ? I am writing this post on a nexus7 tablet with Jelly Bean and this device never supported flash and quiet frankly this has not made a difference to my web experience. I guess the web development world stared migrating away from flash long ago and this was just the final nail in the coffin.

I am kinda sad it all ended for flash the way it did, it was a powerful tool and HTML 5 is nowhere close to the feature set of Flash right now.

bye bye flash !

Friday, May 18, 2012

Launcher 7 for Android

I have been a android user for the last 2 years or so and I migrated to it after 6 long (and sometimes happy) years on nokia series 60 devices. I cannot think of migrating away from android now, i am hooked but i can appreciate the necessities of other platforms.

I am a fan of the whole metro and tiles thing going on windows phone world. It just makes using a smartphone easier for people. This is the main reason i got my wife a WP7 phone when we upgraded our plan last month and she couldn't be happier with her phone but this post is not about her experience.... it is about the Launcher 7 application on android.

Get the app on Google Play
The app developed by Timo Kujala gives you a taste of the minimalistic metro UI on your kick ass android phone. The app allows you to convert your android phone into a windows phone atleast from the experience perspective.

Thanks to the post on this app by Matt Smith that introduced me to the app. 

I decided to give it a spin on my HTC One S.

The first screen you see after the install is the initial configuration screen that allows you to choose the different styles. Once your home page is created, you can click on menu to change the background color and tile colors to customize the look you desire.

Initial settings screen and home screen

You can customize your launch screen later by tapping on the application from the list menu.

This app really rocks and kudos to the development team. The app has all the key features that would make my phone feel like a windows phone. Love the way the drag and drop of tiles has been implemented too.

It is kinda cool that my phone now looks like a windows phone but its scary too so I am switching back to my familiar HTC sense launcher UI for now.

Friday, April 20, 2012

Barcode Reader add on for Chrome

Simple menu popup from add-on
basic but functional

Just started using the Barcode Reader add-on for Chrome. If you are looking for a solution that reads QR codes posted on web pages then this is the must  have.

The UI and functionality is very basic and I would like to see more in the coming months from this add-on. The add-on only supports QR codes and Code 128 barcodes right now and reads them pretty well.

Screenshot of page, crop to select QR code
The primary function of the add-on is to allow you to decode QR code images shown on web pages. If you find your self on a page filled with barcodes and want to know whats inside them then all you have to do is click the icon and take web page screenshot. This opens up the add on page with the image of the web page, all you have to do is press the decode button. 

There is also the "crop" option which would come in handy if you have several QR codes on the page and cropping will allow you to select the one you are interested in. 

The add-on also allows you to decode QR codes using your webcam. This is pretty cool but not what I had initially downloaded the add-on for, this came as a bonus. 

The thing that kinda sucks about this is that you have to click on the Take photo button for it actually read the barcode.

I am a bit disappointed with the way results are displayed. There is really nothing i can do with the barcode value apart from copying and pasting it somewhere else. The idea behind the add-on was to give me the encoded data and I completely get this but hope that future revs would have more functionality.  

Friday, April 06, 2012

User behavior in App with Flurry Analytics

This blog post is a short summary of my experience with the Flurry analytics SDK. Adding the SDK to our application has been a good experience (so far) and has drastically improved our ability to make data driven decisions.

Why ?
We have a connected app and are able to gauge the performance of the app (we thought) based on the server based transactions but we found that there were certain questions that we just could not answer with our logs on the server.
  • Why isn't there a direct correlation between the number of downloads and the number of transactions ? Do our users even launch the app after they download it ?
  • We spent a lot of time adding a feature, do the users understand it ? do they even navigate to the screen ?
  • many more ...

What ?
We started looking for ways we could answer these and other questions. The stress was on figuring our how users interacted with our application:
  • Do they use the features we put into the application?
  • How often do they use them ?
  • What screens do they visit in the app and how often ? (should we really be spending the time and effort in updating help section inside our app?)
  • Once they visit the screen do they perform the action we want them to perform or get side tracked by something else ?
  • ...
We already had transaction based data on the server already about our users but we were looking to finding out what percent of our users actually reached the point where they could perform a transaction.

The engineers in us already knew the answer : we had to put in some sort of logging mechanism in our application that logged the user activity. Nothing ground breaking, we have been doing that in web applications already. Things we considered:
  • Should we build our own ? This was interesting from engineering point of view and we could just extend what we were already doing in our web app. We decided to look for third party libraries as we just did not have the bandwidth and time to invest in building and testing something for all the platforms. Reinventing the wheel is a sin that modern dev teams should stay from.
  • Impact on app performance. We decided very early on that what ever library we choose should have minimal impact on the app performance. User activity was important but not at the cost of our apps speed.
  • Dashboard: we did not want to invest time in building a dashboard that displayed the metrics for the same reason we started looking for a third party library.
  • Cost: It almost always comes down to cost. All the stakeholders loved the idea of knowing the user behavior but no one wanted to put down a number on the spend. We started looking for the cheapest option we could find.
We looked at a few packages (not a lot) and quickly decided on using Flurry analytics SDK. Here is a breakdown of the reasons:
  • Free : Talk about in-expensive.
  • Reported activity offline and did not impact app performance.
  • Required very little development effort, the documentation was simple and to the point and we just added the library as a black box into our app.
  • Self service system, we did not have to speak to account managers or do a webex to understand how the system works. (I hate these calls)
  • Widely used in the industry. That took care of the end of life questions.
  • Support for the mobile platforms we cared about.
  • The analytics dashboard was just awesome.
  • Adding the SDK impacted our test cycle more than development. We had to add a relatively large number of test cases in our functional and performance tests.
  • We decided against using the pageviews in the SDK. We created our own custom events for page views.
  • Sessions on Android were handled differently from the default behavior. We made the implementation decision based on our application needs.
  • As with any good SaaS platform, the SDK website allows us to download all our data through APIS and we plan to do this periodically. We found that the data for the past few days often changes due to the nature of the SDK so we plan to download data before the last 7 days.
All in all, it was pretty easy getting up and running and we were able to add the SDK and track some of the core events within one iteration along with solving other worldly problems.

Tracking anything about the
user has taken a beating in the recent months especially when mobile applications are involved. Though I agree with most of the arguments made for privacy, some of the concerns that have surfaced are way over the top. I will leave this topic for another blog post.

Privacy was one of the first hurdles we had to cross internally before implementation could begin. We set our goal: We wanted to know what "users" did when they opened our application, not a particular "user". The privacy concerns played a important role in our implementation decisions (rightly so) and we made a conscious effort not to include any PII in the data we logged. We are also not using the data we collect in making any real time decisions on what to display to a particular user (we cannot, it wasn't built for this.).

Adding the analytics sdk in our application(s) did not solve all our issues but it definitely provided us more data to base our product decisions on.

Moving forward:
It is awesome that Flurry has recently added HTML5 to its list of supported platforms. It makes my life easier if i can use the same engine for mobile web and apps.

I also love the user segmentation and funnel features they have recently added to their dashboard.

Monday, April 02, 2012

Google Play Books : Interface sucks

I recently bought the Beginning Iphone And Ipad Web Apps on Google Play. My goal was to read it on my Tab (HTC Flyer) and quite frankly the experience sucks.

Its just a scanned copy of the book and lacks any sort of tightness that I would expect from a ebook. There are no links and i have to zoom to original size before i can change the page. This was my first "E" book purchase and quiet frankly I am wondering if i should just get my money back and pay the extra $12 to get a hard copy of the book.

Thursday, March 29, 2012

Pizza Magnet : I want one of those !!!!

Red Tomato Pizza, a Dubai based pizzeria has solved the age old problem plaguing mankind for ages. How do i make ordering pizza even simpler then making a call ?

You just press a button and the pizza is ordered and delivered ( assuming the 30 min delivery)... yeah its that simple... Isn't this awesome ?

I was blown away when i saw the video on their site. They call it the "V.I.P fridge magnet" ( i think they should call it the "most awesome thing invented by mankind").

It looks like its pretty simple to setup.
- Create an account with your phone number.
- Setup your usual order.
- Order the magnet to be delivered to you.
- Charge the magnet and place it anywhere.
- Setup the magnet with the bluetooth of your smartphone ( I was elated to see android in the demo)
- Keep your phone close to you ( forget it in the office and it aint gonna work)
- Press the button , your favorite order is placed
- You receive an SMS confirmation and you can cancel the order by replying to it.

There are 2 reasons why I got really excited about this:
  1. This is a amazing use case for the practical use of bluetooth technology. I havent heard about it much lately and I have a soft corner for apps that use bluetooth.
  2. Me and my wife always order the same pizza from Papa Johns and I hate calling the number, speaking to the person and confirming my order... I am just too lazy for this. So now, all i have to do is push a button ? wow.
If Papa Johns offers this, I will stand in line outside their pizzeria's or best buy for 2 days to be one of the first to pick this up.

Tuesday, March 27, 2012

Lean Startup : My thoughts

I am not much of a book reader but I just completed reading "The Lean Startup" by Eric Ries cover to cover in record time (for me at least) of 2 weeks. My train commute gives me about 1.5 hours every week day to spend on things that interest mui and I put that time to good use over the last couple of weeks.

We also have a group @ my day job lead by my CTO that meets once a week to go over the material in the book and discusses how some of these principles could be put to work in what we do every day (and night). I realized from the first few sessions that everybody reads the same text but interprets it differently. I decided to jot down my understanding of the things in the book and stuff that I found interesting based on my first reading before my thoughts were influenced by others from the group. This blog post contains just that... my thoughts and things I remember.

What was I looking for (before starting the book)?
Last year I had seen a few videos on youtube with Eric Ries and Ash Maurya talking about the principles of lean startup and all of it (well most of it) made sense. I did not explore more at that time as we were transitioning product development from waterfall to agile (big step).

Its now very close to a year since we adopted scrum for product development and the honeymoon period is over. As a scrum master i have seen my team deliver stories sprint after sprint and have been very happy with their performance but the executive in me has started wondering if this dev engine is adding real value to the company. We are building stuff quicker and getting it out the door but is this stuff really important ? My team focusses on the stories on the top of the backlog and works hard to get it done in the 2 week iteration but is their effort really helping add any value ? The product owner gets the backlog organized based on interactions with the stakeholders but have we identified the right stakeholders ? Lean startup was interesting as from the surface it worked well with agile and promised an approach to deciding what to build next.

The fact that my CEO gifted everyone a copy of the Lean Startup (#ilovefree) book also helped in getting me started.

Spending my commute time over the last couple of weeks on the book was well worth the effort. I had to resist the temptation to check emails now and then but I feel I am wiser than i was before i read this book.

The lean startup model works (should) as it is rooted in evolution. I am a firm believer that in order to be successful the organization should be able to adapt and evolve based on the changing environment. The model offers a scientific method to approach the real world product direction issues. I did not find the core principles to be very far from the agile framework. I walked away from the book thinking that the combination of lean startup and agile framework would work best in a start up.

It is easy to think (at least initially) that this model is relavant only to start ups. This was my assumption too when i began reading the book but Eric shattered this notion in the first part of the book by defining entrepreneurs with real world examples. I walked away thinking that its easier to implement the model in a scrappy startup with 6-7 people but its not impossible to put this model to work in a well established organization of 1000 people or more. Challenging ..... yes... impossible I treat this as a set of ideas and principles that could be adapted and applied to any organization.

In the first half of the book I believed that this model would only work when you are trying to build a new product but now i think that this model works for all sorts of new development. It could work well for new features for a existing product line. The pivot or persevere meetings would play and vital role in defining what gets added to the feature and how the user stories are created and prioritized.

The vision section of the book was where Eric laid the ground work for what was to follow. I found the steer section of the book most interesting and valuable. This is where he got into the nitty gritty with the MVP, quality of metrics and pivots. The Adapt section had its moments but i kinda knew most of the stuff he was talking about already.

I havent been able to wrap my head around a couple of things completely:
- Does Intuition play a role in product development ?
- Throw away waste

While reading the book i constantly debated with myself on the role of intuition in product development. Over the years my knowledge and experience about the stuff i build has led me to place a lot of trust on my intuition. Validated learning puts very little faith in intuition (i assume) but I wasn't convinced that things will be so black and white every time in the real world. The consensus i have reached with my inner self is that intuition plays an important role in determining the make up of the experiments we run but not the pivot or persevere decisions. They have to be made based on the hard data we collect from the experiments.

I like the lean startup model but it almost seems very mechanical and robotic. I am a firm believer in being passionate about what you build. A side effect of passion is the attachment a person develops with the stuff he/she works on. As a manager i encourage this behavior as this leads to ownership. The goal of the model is to build stuff that adds value and discard waste quickly. What if the stuff that adds value today is deemed as waste tomorrow ? How will this impact the morale of the team? Not everyone is vested in process, some people really love the product. Hmmm...

At the end of the day, the goal is the product and a process is a way to get to it. I liked the lean startup model as it answered some of the burning questions in my mind and gave me a logical approach to setting up a process that would deliver learning (translate that into results). The model does not guarantee success but guarantees early failures which in my book is critical.

I have formed opinions on MVP, validated learning, learning milestones, vanity metrics, innovation accounting and others and will follow up with posts on these topics in the coming days.

Thursday, February 23, 2012

Developing for the Motorola MC 75 smart device

I worked on a small application for the MC 75 handheld device from Motorola this week. The device sports Windows Mobile 6.5 and .NET CF 3.5 and you can use v 2.6 of the symbol EMDK to access the barcode scanner and other goodies.

It was quiet a experience hammering out a app in 2 days considering the last time I worked on windows mobile was when Visual Studio 2005 was the hot new thing and I was the envy of developer brethren for getting upgraded to it. I ended up spending 70% of time setting up my environment and getting the "hello world" or "howdy world" app on the device.

I never realized that Microsoft cut off support for Windows Mobile when it launched the Windows Phone 7 platform in the Visual Studio 2010. They still support the old versions of VS if you have them for smart device development. This was a bummer as getting an older version of a microsoft product can be a pain in the ass.

This is what I did to get the env setup on a Windows 7 (64 bit) machine:

1) Install the trial version of Visual Studio 2008. ( you could buy it too if you wanted to)
3) Microsoft device center, this was way cooler then Active Sync.
4) Symbol EMDK ... I used 2.6 for C#

The actual device is pretty cool but getting the Wi-Fi to work was not as straight forward as you would expect. I finally got it to work after reading the blog post and first comment from Michael.

I hope that the smart devices from Motorola ( and Symbol) move either to Windows Phone 7 (or 8) or get on to the Android bandwagon. Windows mobile 6 with the .net compact framework was awesome but its time has passed and I really dont want to code on that platform again.

Thursday, February 16, 2012

AppQuu : Love the concept but need more functionality

I hate to say this but I was just thinking about a way to do a "read me later" for the apps that I see and read about on my commute. I had grand plans on how one magical weekend I would find the time to hammer out an app that would let me do just that... and here it is. Came across AppQuu on and felt the instant connection.

AppQuu in its own words is "Your Personal App Store" and works pretty well if you have an iPhone. Its really a pretty neat bookmark service.

The only setup required is to install their bookmark in your browser after providing them your phone number on their site. Its a pretty simple step on Chrome and I assume they support firefox and IE too. To use it, all you have to do is click on the bookmark when you are browsing a web page that has the download link of a application. Note, the bookmark looks for links to the Apple app store (http://itunes...) so if the webpage does not have the link then you will not be able to add the bookmark.

Once you collect your bookmarks, you can get them emailed or texted to your device. The message contains a link that pops up a WAP page that lists your apps. You click on the link to install the app. Simple enough ?

How does AppQuu make money ? I am not sure but one of the ways is the click throughs when you download the app from iTunes. The link they provide is through the linkshare network for iTunes.

Thumbs up to the AppQuu team for putting this together and providing a nice UX.

I am a Android user myself and havent yet figured out if they support Android at this time. Looks like my search will continue until they add Android or I find the magical weekend.

Friday, January 20, 2012

Unregistering a WP7 phone from your account

Its annoying when you loose a windows 7 phone that has been registered to your developer account. Its painful when you cannot register your new device with your app hub account as the one you lost cannot be un-registered.

The instructions on MSDN only talks about using the Windows Phone SDK tool to un register the device but if i dont have the device then how do I do it ?

heres how ...... login to your app hub account -> go to your account settings -> select the devices section -> click on remove ... as simple as that.