Tuesday, July 03, 2012

Modern Web Architecture- Javascript driven?

Todays web has become a central point of all applications. HTML,CSS and JavaScript technologies have evolved quickly - The entire Web architecture is moving quickly towards real-time.In addition, doing all data processing in client side and making less load on server achieves two important things:1)Web experience is like Desktop application[faster] since ongoing client/server communication is only about data exchange and not rendering logic. 2] development of client side and server side can go in different cycle. It leads to think that server development can be implemented in any technology or can be hybrid technology until it gives data in common format like JSON or XML. Client side technology will consume these data and act as per application needs.There should be no or very less binding or dependencies with server side implementation technology. So most of data processing or presenting logic resides on client side.This again gives to think a structured way or framework based client side development as we did for server side. In Java world, Spring,Struts,play framework,Tapestry,Grails,Rails are few among name. They mostly follows MVC pattern to make the code for better maintainability,testability.  Nowadays Javascript is one of the major technology used for client side development. Using Javascript framework not only helps to organize the code but  helps to develop code easily. There are lot MVC based Javascript[see this] are out nowadays.Each framework has pros and cons. A nice comparison has been done [here]. Among then backbone.js and ember.js are quite popular. We also need to consider a good Javascript template system for better client side development. Click here for a good comparison by linkedIn.
Choosing right framework is also very tough as it totally depends on which application you are making. Still one should try to follow these features while choosing framework.

1.Testability
2.Good UI bindings
3.Composed Views
4.Web presentation Layer
5.Play nicely with other
6.HTML5 compliant

Try out this link and and see the Todo Application written in various JavaScript based MVC framework.http://addyosmani.github.com/todomvc/

recently Angular.js comes in light for its clear MVC pattern design ,solid UI binding,HTML5 compliance, good unit testing framework and very easy to write code. Try out http://docs.angularjs.org/tutorial/ and http://avalanche123.com/blog/2012/02/29/angularjs-superheroic-javascript-mvc-framework/.

I am very much impressed with AngularJs. their design philosophy and clear architecture is really good.I am learning this framework and will post more about it and other Javascript framework time to time. Given some good link
Stay tuned for more update.

Installing GIT client Windows 7

Git is now most popular code repository now a days. you may go to https://github.com/ to get a web based repository.Git is written by Linux torvalds , creator of GNU Linux Kernel.

To install Git client for Windows 7
1. download msysgit from here.
2. follow the screen shot while installing this.
3. Generate SSH keypair. Please follow this documentation here.


The Future of Deployment by Nic Williams

I copied this content from youtube---

"When you type "cap deploy", "ey deploy", or "git push heroku master" your intent is to deploy your local application source to your running system on the Internet. That seems to be the point - you changed your code, and you want to Just Ship It. But what is your actual objective? Is it really to just "deploy app code changes"? Is this "app-centric" view and user experience satisfactory?
Code deployment is your intent on some occasions. On others you want to change your production environments for applications, or change scale attributes of your system, or change how applications and services within a system communicate with each other, or with remote services (such as facebook).
Is "app-centric deployment" the best mental model and toolchain for shipping changes to productions systems? Or is "environment-centric" or "node-centric", enabled with frameworks like Chef or Puppet, the most powerful & effective model of the system to allow you to deploy and manage change?
Or perhaps we should describe the entire system - all the apps, all the system dependencies, all the interconnections, all the scale attributes - and command it to come into existence? To command the system to go from nothing to v1 to v2 to v3, where each version includes changes in attributes of the system.
Where should configuration/manifests/attributes go? Source code files in the config folder? PaaS configuration or environment variables? Or should components of a system dynamically discover information about itself and configure itself?
Perhaps we need the benefits of a "system-centric" build toolchain, with an "app-centric" user/developer experience to trigger deploys, with a "node-centric" experience for sysadmins.
In this talk, we will reflect on the current state of deploying production systems, including build/deploy toolchains, and continuous deployment. We'll look at the attributes of a complete system, how we explicitly or implicitly describe them and their relationships, and how to orchestrate changes in the system - from app-centric, node-centric and system-centric views.
Let's discuss the difference between deployment in month 1 and living with your system for the next 59 months."
BioDr. Nic is a developer's developer.
He writes blog posts for developers; creates tools, libraries and text editor extensions for developers; and speaks to developers at conferences.
He's the VP of Developer Evangelism at Engine Yard, the leading Platform as a Service.

http://www.youtube.com/watch?v=I0n2wiYvFNw