Tuesday, July 16, 2013

SenchaCon 2013 is going on in Orlando... Missing the fun but here are the top 10 reasons to use Sencha Touch

Senchacon 2013 has already started and if not for pressing engagements, I most definitely would have headed to Orlando. All is not lost for me as I plan to  follow on twitter and follow blogs of Sencha folks. Before I go into my top 10, I would like to give some history about my love affair on Sencha.

It was early 2012, when I came across Sencha Touch 1.1 framework.  I was at a large operator tasked with finding ways to engage developers and offer them tools to develop for smartphones. I had seen umpteen solutions until then - ranging from a Powerpoint deck full of promises to a whole range of products that did not deliver.

So my skepticism was high when some one claimed Sencha Touch can perform at close to native levels. Instead of a typical powerpoint, I had a walk-through of the Kitchen Sink complete with "rubber band scrolling"  and one by one my my concerns faded just like the fade transition supported by Sencha.

I was concerned about performance - the size of memory and the speed/cpu usage of a sencha app. But quickly my team learnt about the best practices - minify, paging, rescoping, effective memory management, etc and soon we were all fanbois of Sencha. 

When I left Orange, my first step at Silvo was to create a working prototype using RAILS and for the client side coding - it was no surprise that I used Sencha Touch 2.1 framework. If you are developing for  a startup or if you are a big company there are a wide range of reasons to use Sencha Touch. I list my top 10

10.  MVC  - Model View Controller is a proven and pervasive pattern that most of us have used in server side programming. Offering MVC framework in the browser complete with support for routes and event handling at the controller make it easy to organize and sustain code.

9. Model Association - Being able to define models that mimic the associations on server side and reflect these associations of object oriented design to navigate objects is truly a programmer's delight.  

8. Storage, Stores and Jersey Shores.   Okay, there is no Jersey shores, but being able to define stores that sync with servers and keeps track of changes on the client side is truly empowering to developers. Local Storage and caching makes it easy to provide a native like experience

7. Every imaginable view element - When I last counted there were 40+ different view elements in Sencha. If you decide to customize and reuse it, you can do so as well. 

6 Proxy - Communication between servers and clients has never been so easy. I remember using libraries, Message oriented middleware, supporting custom protocol, etc. With REST support and extensibility of JSON and XML you can attach a proxy to a store or a model and rest is easy.

5 Drag queen a.k.a Architect -  As a product marketing professional, I found the thought of learning Sencha daunting. It quickly dissipated when I began to use Sencha Architect dragged a few objects from the pallette to create a "hello world" app.  The code generated was simply pedantic!

4. Works great on Android, iPhone, iPad, Blackberry, Playbook and now Tizen. Am sure Microsoft Phone support is on the way! Steve Ballmer probably will be making a call after reading this.

3  Double Sassy - If you are delivering a cloud based solution and you do not have a name draw of a Google, then the best way to get traction is to send HTML5 links as an SMS when consumers interact with a business. That is exactly what I did with Silvo which had a SAAS platform as the core. Sencha HTML5 combined with CSS3 framework helped deliver the consumer experience. And theming was easy thanks to the awesome SASS framework.

2.  Cheaper, Faster and Better. Time taken to develop and support multiple devices is a major concern from time to market and cost perspective. Thanks to the significant javascript talent pool, you can tap just about anyone to code in Sencha.  If anyone is looking for resources give me a shout. @hjdave is awesome

1.  Awesome documentation, Even better samples and community support.  Many developer products fail because of poor documentation. Sencha Touch truly excels in all three.

If you have a differing point of view or have your own favorites about Sencha, please let me know in the comment section.

Thursday, July 11, 2013

Scaling Mount Success




With success of a product comes demands on your infrastructure from usage and data associated with it. Invariably you have a mountain of data that you can use to personalize or learn from. The infrastructure needs to do that was exactly the topic of  great discussion with a person from mobile and social gaming industry. His query was - "how would you scale when you have over millions of users and billion plus user records and growing".  In other words, do we need to add servers or should we use cloud infrastructure such as Amazon Web Services. Excellent question and I suspect he already knew the answer. My answer and indeed most startup I know today would have the same answer - move to a cloud based infrastructure, It just makes sense not just from a setup cost perspective, but from a cost benefit analysis and the ability to tune up or down based on demand. His point that game usage  has a fad trajectory - extremely popular for a few months and then gone the next-  reinforced that point.

Having said that, I do see regulatory requirement particularly around some security and privacy issues, existing investment in infrastructure, have stringent SLA requirements, and need to have full control over the infrastructure as primary factors behind not going to IAAS.

The next question naturally was around scaling data. How would you handle data warehouses which indeed can be unwieldy when your customer base grows. Yes, we can always take for granted HA, FT needs and cluster computing in our architecture. But when it comes today's world, we have to think Big  Data...

I particularly like Hive on Hadoop. Hadoop is already mainstream platform where packaged applications or SAAS applications like Silvo can addresses millions of retail interactions that deliver business value to users and is becoming widely available. Walmart labs in San Bruno is doing amazing things and expect them to be the flag bearer.  I believe Hadoop has gone beyond the first generation of applications primarily around consumer to becoming a core platform to deliver data heavy products for enterprises. Retail Science delivered over a SAAS platform can benefit from its ability to scale.

Yes, Hadoop can be slow but using it with Hive not for live or RT queries, but for preprocessing seems to make sense. I fashion Cassandra for real time live queries. In general, I look for solutions that hide complexity of database partitioning, Federated Tables or sharding, offer high performance and can be scaled. What more, I am seening some elements of support for ORM that will allow me to write Rails App easily


More on that later! Would love to hear your thoughts.