Monday, March 24, 2014

This Week I Learned - Week 1

I read a lot of stuff daily and sometimes I don't remember what I read after some time. So in order to remember them and review them, I would like to note them down in my blog and share them.

These might be useful to others too.

1: Older Developer Problem: I read about a developer who is out of work as he is older and the same work can be done by other younger developers at fraction of the cost and the technologies he has learned have become old. In India, most of the developers grow into the managerial responsibilities after some time, it does makes sense to keep in mind the things we can do to avoid the older developer problem if we wish to continue in the developer path. There is an excellent answer in Quora about always being fresh.

2: Comparison of Javascript Frameworks: There are lot of javascript frameworks coming up for creating single page/multipage javascript applications. While planning to build an application, I came across this comparison of Angular JS, Backbone JS and Ember JS. There are important differences between each of the apps. Angular JS is very adaptable and guides developers to write testable code often. Backbone JS doesn't do a lot of handholding and is used to write single page apps. Ember JS is the biggest library but it does provide lot of support for common use cases like back button support which are anyway required in an application.

3: MicroServices Architecture: Martin Fowler talks about new kind of application architecture called Microservice architecture. Spring Framework is also going forward in this direction.

The term "Microservice Architecture" has sprung up over the last few years to describe a particular way of designing software applications as suites of independently deployable services. While there is no precise definition of this architectural style, there are certain common characteristics around organization around business capability, automated deployment, intelligence in the endpoints, and decentralized control of languages and data.
 Here I do see the advantages of this kind of architecture. It is easy to use different technologies for different parts of the application and it would be possible to make changes quickly as everything is decoupled. I am not sure how we can decouple data. Till date, in all the applications I have created, one database contains lot of data related to users and it spans multiple functionalities. How can we split that data without duplicating the user information at each place ?

4: Spring Boot and other projects: Spring 4 release brought a new framework called Spring Boot which is used to quickly start a spring project. It helps to quickly get up and running with applications ala Rails. I have tried that and it works well to start up a web application. But it is too early to see how easy it is to configure or change the defaults included in the template project. It uses Groovy internally to decorate the classes so that developers need not write boilerplate code.

5: Devops with Chef & Vagrant: To get over the problem of long time for development machine setup, there is a solution called Vagrant. This tool can be used to automate the setup of a development machine. You can specify the configuration of the machine, the software needed to be installed, etc and Vagrant will setup the machine and get it available as a VM with a single command. Vagrant Up. I think this kind of single command setup will help a lot if  a lot of AWS instances are required to be created. It will be easily to replicate the setup with one command. I am looking into this and still have to setup.

6: AWS Reference Architectures: Initially when I wanted to deploy an application to cloud, this reference architectures would have helped a lot.

7: The Importance of Finishing : A parable about a guy jumping on to new things without completing the old ones.

8: The End of Average: (Atleast in the Winner Takes All Market) : In media and things that require our attention, it is going to be the end of average as the reach of the best is practically everyone. So everyone will only refer to the best, so the average ones will not be needed.  .

Note: I want to introduce a tool to manage and organize everything. I use a free tool called trello for that. Trello is the fastest, easiest way to organize anything, from your day-to-day work, to a favorite side project, to your greatest life plans. You can give it a try here and I'm sure you will like it too.