Wednesday, December 30, 2015

Marching towards Microservices

To say that microservices have arrived would be the understatement of the year 2015 when most of the enterprise application creators seem to have realized the importance of keeping individual parts of application separately.
There is nothing new when it comes to microservices and there are tons of literature - ranging it from precise definitions stated by Martin Fowler, to the loosely coupled architectural term.

It is also easy to confuse microservice with SOA as the design seems similar; however, SOA is an integration of different applications, but microservices remain independent to each other - you can simply plug in and out different services while using them across different applications.

The  rise of javascript based frontend for web applications and in general, polyglot programming of applications has further argued the premise of having standalone pieces of applications that can

A) Scale very well

The individual service can scale up easily - as its underlying micro-architecture contains the least surprises and given today's virtualized/cloud environments, such services can be increased in volume as well as tested and rectified if something goes wrong.

B) Standalone

The services are standalone in the sense that each application that uses a microservices can use it with a specific set of data and as applications interact over http, there are no hassles of contract based services over SOAP/REST based services, which were based on service contract and were the norm earlier. So, we do not need an elaborate contract or some specific tool ; just a miniature web application framework would do.


An example of microservices making waves is into the SAP Hybris ecosystem via the YAAS that serves both as a place to host as well as market individual microservices for different e-Commerce implementations. Hosting is important because of the sensitive nature of data of different clients (which can be stored as different tenants) and also to remove the complexity of managing the server load when there are a lot more things to be completed.

Creating standalone applications and utilizing their mashup is no longer a field dominated by selected few, but are quickly becoming the norm in the coming  time and is poised to become the disruptive force of the decade.

Monday, November 2, 2015

On JavaScript generating engines

Javascript has become so pervasive today that there are camps which are trying to fight the syntactical challenges that it posts in order to leverage the benefits of the approach and the platforms using it i.e. making the browser (be it computer or mobile) do the hard work of rendering and html generation.

However, the catch is that there are different 'languages' that effectively generate JavaScript code. in this regard, again the Rails community scores a point as they where the first ones to leverage CoffeeScript for this job. Other technology have came late into play, but there is still room for these different langugages to manuever.
I've already covered coffeescript, which is in vogue with Rails/Django crowd and there are others like Dart for the GO/Java community - although Dart can be used as-is (native compilation for the crome browser) but since not all browsers support Dart, practical implementations have to live with the Dart2Js tool, which ends up being javascript anyways.


Dart VS TypeScript

After learning Dart for a month, I'd sum it up as an ambitious attempt towards improving web applications but it has a learning curve, which in my personal option is unwarranted. I am inclined towards TypeScript as it allows me to code in javascript (or a close to JS syntax) rather than forcing me to learn another language just to get things done.

Given the fact that Angular.js 2.0 is choosing later over former even if that means using a Microsoft based framework instead of in-house one, investing in TypeSafe seems more prudent today.

my 2 cents

Monday, September 14, 2015

True Omni-Commerce with IoT

The changing face of e-commerce means that successfully buying a product is more than just a few clicks away. Today, with the widespread influx of communicative devices and advertisements, the customer is constantly bombarded with advertisements of interest right from the morning tea to the evening commute, everywhere advertisements try to sell different products. However, this might only affect the user decision, which might be in the favor of competitors of the advertiser. So the context of advertisement with respect to the end customer needs to be revised and the user needs to be engaged -  buy the product rather than just influence decision making. SAP Hybris is currently aiming towards creating the online storefront of the future and is tinkering with some of the things that I am discussing- but a lot needs to be done before things are

Internet Of Things

As defined in Wikipedia, "The Internet of Things (IoT) is the network of physical objects or "things" embedded with electronics, software, sensors, and connectivity to enable objects to collect and exchange data."
Smart devices/sensors are already increasing exponentially and are poised to make the next big change in everyday life since the rise of internet and by 2020, only the B2B based such devices would be around 5.4 Billion.


Applied IoT

We've all heard about Amazon drones but the ideas do not stop there; by making a user context aware, the e-commerce can jump out of browser to mobile notifications through NFC enabled portals in physical stores. On the other hand, the user based sensors could be used for kiosks and physical display stores, making them intelligent. Another scenario could be the use of RIFD enabled tags on consumables, which can enable gamification based points for repeating customers, leading to repeated orders. These ideas are dime a dozen, but it remains to be seen which technology and business goes all out to adapt them.

True Omni Commerce

Although this sounds good in theory, in real world things like scalability and security take precedence and instead of just improving the context, there is a need to provide actual sales through these additional channels, or in other words, creating a mashup involving existing channels to generate even more avenues. I am currently working as a Hybris developer and am hoping to see some positive influences due to rise of such a technology, which is currently in the playground stage.

Thursday, August 13, 2015

Debugging Javascript

Just sharing a handy tip that saves a bit of time during javascript development. By using deb.js, it is possible to have stack trace in browser on errors (as javascript is not expressive while throwing errors). By using deb.js a lot of console.log statements and debugging sessions on chrome/firefox can be avoided.

Tuesday, August 11, 2015

Not just another bot

I receive a lot of mails from recruiters regarding job opportunities in some xyz technology. The trouble is that after five years of working in software development, I've picked up some mundane as well as niche skills and added them to my skillset.
However, when confronted with people who like to only concentrate on their requirements, I come up with something like this:
http://ma.tt/2014/08/specialization-is-for-insects-and-developers
I guess, specialization matters, but real world requirements are different. If you happen to be a recruiter or a manager, you would have to take this fact into account that any person that knows about the tool that you are hiring is a unique individual who also happens to know other related and unrelated stuff.