<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Veera Sundar</title>
	
	<link>http://veerasundar.com/blog</link>
	<description>Java / Web developer</description>
	<lastBuildDate>Mon, 30 Jan 2012 15:39:11 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<feedburner:info uri="veerasundar/dreamz" /><creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/</creativeCommons:license><feedburner:emailServiceId>veerasundar/dreamz</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/VeeraSundar" /><feedburner:info uri="veerasundar" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Backbone JS – Hello World tutorial</title>
		<link>http://feedproxy.google.com/~r/VeeraSundar/~3/pOrW3-_5-xE/</link>
		<comments>http://veerasundar.com/blog/2012/01/backbone-js-hello-world-tutorial/#comments</comments>
		<pubDate>Mon, 30 Jan 2012 15:39:11 +0000</pubDate>
		<dc:creator>Veera</dc:creator>
				<category><![CDATA[How To]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[backbone]]></category>
		<category><![CDATA[helloworld]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://veerasundar.com/blog/?p=2855</guid>
		<description><![CDATA[Backbone.js is recently getting lots of traction among the web developers because of its ability to organize the JavaScript code. It provides the structure (Model-View) around which we can build our JavaScript heavy web applications. I have started learning backbone.js for my personal project and I&#8217;m going to document my learning along the way. Let&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p></p><p><a href="http://documentcloud.github.com/backbone/">Backbone.js</a> is recently getting lots of traction among the web developers because of its ability to organize the JavaScript code. It provides the structure (Model-View) around which we can build our JavaScript heavy web applications.</p>
<p>I have started learning backbone.js for my personal project and I&#8217;m going to document my learning along the way. Let&#8217;s start with a simplest possible example: A Hello World tutorial in Backbone.js (duh!)</p>
<p>You are welcomed to point out any anti-patterns/mistakes that I made in this tutorial so that I can update the content for better.</p>
<p><a title="Backbone JS - Hello World tutorial" href="http://veerasundar.com/app/hello-backbone/" target="_blank">Demo</a> | <a title="Fork the source code in GitHub" href="https://github.com/vraa/hello-backbone" target="_blank">Source code</a></p>
<h2>The need for Backbone.js</h2>
<p>Generally, we use JavaScript to handle UI events (<em>click</em>, <em>keypress</em>, etc), to process the UI data (<em>innerHTML,</em> etc) and to render DOM elements (<em>appendChild, </em>etc).</p>
<p>Without a framework like Backbone.js, each developer would implement the above logic in his/her own coding style. This might cause some maintenance issues if multiple developers are involved.</p>
<p>Backbone.js provides a structure to do the above operations so that it is easy to write a maintainable code with less effort.</p>
<p>With Backbone, you get the following constructs:</p>
<ol>
<li><strong>Model </strong>- used to represent your application data. For example, an <em>Employee</em> model.</li>
<li><strong>Collection </strong>- used to hold a list of your model objects. For example, an <em>Employees </em>collection which contains a list of <em>Employee </em>model.</li>
<li><strong>Views </strong>- each model &amp; collection can be associated with a Backbone view. You can also create a view for an existing DOM element so that the view can respond to events generated from that DOM element.</li>
</ol>
<p>That said, Let&#8217;s start building our application step by step.</p>
<h2>0. Requirement</h2>
<p>Our requirement is to <a href="http://veerasundar.com/app/hello-backbone/" target="_blank">create a application</a> that gets a name from the user and says &#8216;Hello {name}&#8217; and appends it to a list.</p>
<h2>1. Create the User Interface</h2>
<p>Let&#8217;s create our user interface first.</p>
<pre class="brush:html">	&lt;body&gt;
		&lt;header&gt;
			&lt;h1&gt;Backbone JS - Hello World Tutorial!&lt;/h1&gt;
			&lt;h5&gt;&amp;lt;= &lt;a href='#'&gt;back to the article&lt;/a&gt;&lt;/h5&gt;
		&lt;/header&gt;

		&lt;section id='UserInput'&gt;
			&lt;fieldset&gt;
				&lt;legend&gt;Enter a name and click say hello!&lt;/legend&gt;
				&lt;input type="text" name="hello" placeholder="your friend name" value="veera" /&gt; &amp;#160; &lt;button&gt;Say hello&lt;/button&gt;
			&lt;/fieldset&gt;
		&lt;/section&gt; 

		&lt;ol id="HelloList"&gt;

		&lt;/ol&gt;

		&lt;script type="text/javascript" src="jquery-1.7.1.min.js"&gt;&lt;/script&gt;
		&lt;script type="text/javascript" src="underscore-min.js"&gt;&lt;/script&gt;
		&lt;script type="text/javascript" src="backbone-min.js"&gt;&lt;/script&gt;
		&lt;script type="text/javascript" src="hello.js"&gt;&lt;/script&gt;
	&lt;/body&gt;</pre>
<p>As you can see, it&#8217;s a simple HTML document with a textbox, button to accept user input and a empty OL element to hold the list of hello messages.</p>
<h2>2. Create the Backbone Views to represent the UI elements</h2>
<p>We have two views in our UI: One that accepts user input and one that shows the accepted inputs as a list. So, we&#8217;ll create two Backbone views for this. Open the <em>hello.js </em>and type in the below code.</p>
<pre class="brush:javascript">(function($) {

	var UserInputView = Backbone.View.extend({

		el : '#UserInput',

		initialize : function() {
			this.helloListView = new HelloListView();
		},

		events : {
			'click button' : 'addToHelloCollection'
		},

		addToHelloCollection : function(e) {
		}
	});

	var HelloListView = Backbone.View.extend({

		el : '#HelloList',

	});

	new UserInputView();

})(jQuery);</pre>
<p>Because we are creating the Backbone views to represent the existing DOM elements, we can mention the elements in <em>el<strong> </strong></em>option. You can use the CSS3 selector syntax here and Backbone will find the element for you.</p>
<p>All Backbone objects has an <em>initialize() </em>function. Above we are initializing the <em>UserInputView </em>with a reference to the <em>HelloListView</em>.</p>
<p>Each view can accept a <em>events</em> object. Within this, you can specify what are all the events this view will trigger and method name to handle the event. In our case, we have a <em>click </em>event for the <em>button </em>element and a method <em>addToHelloCollection</em> to handle the click event. It is important to note that Backbone searches for the elements mentioned inside the <em>events </em>hash (in this case <em>button</em>) inside the <em>el</em>. So the <em>el</em> element should contain whatever element you give in the <em>events </em>object.</p>
<h2>3. Create Backbone Model, Collection and a view to represent the model</h2>
<p>It&#8217;s time to create a Backbone Model to hold our application data. We can map each hello message to a model. Since we have list of messages, we&#8217;ll create a Backbone Collection too. Lets look at the code.</p>
<pre class="brush:javascript">var Hello = Backbone.Model.extend({
		initialize : function() {
			this.name = 'name'
		}
	});

	var HelloView = Backbone.View.extend({
		tagName : 'li',
		render : function() {
			$(this.el).html('Hello ' + this.model.get('name'));
			return this;
		}
	});

	var HelloList = Backbone.Collection.extend({
		model : Hello
	});</pre>
<p><em>Hello</em> is the model object with a property <em>name </em>initialized to &#8216;name&#8217;. <em>HelloList</em> is the collection and we set this collection <em>model </em>property to our <em>Hello</em> model.</p>
<p>In Backbone, each Model and Collection can have it&#8217;s own view to render themselves. So, we created a <em>HelloView</em> for the <em>Hello</em> model with the <em>render() </em>method to generate the HTML output. Since this view is not associated with any existing DOM elements and Backbone needs a wrapper tag to surround the rendered output, we provide the <em>tagName </em>property with &#8216;li&#8217;. Because of this, when the <em>Hello</em> model generates its HTML code (in <em>render() </em>method), it will be surrounded by <em>li </em>tag.</p>
<h2>4. Combine everything: The final code for hello.js</h2>
<p>Lets update our <em>hello.js </em>file with this final JavaScript.</p>
<pre class="brush:javascript">(function($) {

	var UserInputView = Backbone.View.extend({

		el : '#UserInput',

		initialize : function() {
			this.helloListView = new HelloListView();
		},

		events : {
			'click button' : 'addToHelloCollection'
		},

		addToHelloCollection : function(e) {
			var hello = new Hello({
				name : this.$('input').val()
			});
			this.helloListView.collection.add(hello);
		}
	});

	var Hello = Backbone.Model.extend({
		initialize : function() {
			this.name = 'name'
		}
	});

	var HelloView = Backbone.View.extend({
		tagName : 'li',
		render : function() {
			$(this.el).html('Hello ' + this.model.get('name'));
			return this;
		}
	});

	var HelloList = Backbone.Collection.extend({
		model : Hello
	});

	var HelloListView = Backbone.View.extend({

		el : '#HelloList',

		initialize : function() {
			_.bindAll(this, 'render', 'appendToHelloUL');
			this.collection = new HelloList();
			this.collection.bind('add', this.appendToHelloUL);
		},

		render:function(){

			$.each(this.collection.models, function(i, helloModel){
				self.appendToHelloUL(helloModel);
			});
		},

		appendToHelloUL : function(helloModel) {
			var helloView = new HelloView({
				model : helloModel
			});
			$(this.el).append(helloView.render().el);
		}
	});

	new UserInputView();

})(jQuery);</pre>
<p>As you can see, we have two Backbone views:</p>
<ol>
<li><em>UserInputView</em> &#8211; which listens to the user interface events(<em>button click</em>) and update the model object with user input.</li>
<li><em>HelloListView</em> &#8211; which listens to the changes in our model(<em>add </em>event) and update the user interface with the model values.</li>
</ol>
<div>Everything starts when we create a <em>new UserInputView() </em>which triggers <em>initialize </em>function for each objects and sets up event listeners. When user interacts with the view, the respective event listeners are called and the model gets updated. Then the <em>HelloListView</em> which is listening to model changes gets triggered and the user interface is updated.</div>
<p>Well, that concludes this tutorial. You can see the <a title="Backbone JS - Hello World tutorial" href="http://veerasundar.com/app/hello-backbone/" target="_blank">completed application in action</a> or <a title="Github source" href="https://github.com/vraa/hello-backbone" target="_blank">fork the code in GitHub</a>.</p>
<h2  class="related_post_title">Related Posts</h2><ul class="related_post"><li><a href="http://veerasundar.com/blog/2012/01/the-rise-of-the-front-end-developers/" title="The Rise of the Front End Developers">The Rise of the Front End Developers</a></li><li><a href="http://veerasundar.com/blog/2011/11/sorting-an-array-of-custom-objects-in-javascript/" title="Sorting an array of custom objects in JavaScript">Sorting an array of custom objects in JavaScript</a></li><li><a href="http://veerasundar.com/blog/2011/10/rock-paper-scissors-and-bombs/" title="Rock Paper Scissors and Bombs">Rock Paper Scissors and Bombs</a></li><li><a href="http://veerasundar.com/blog/2011/10/intercepting-onclick-event-in-javascript-using-jquery/" title="Intercepting onclick event in JavaScript using JQuery">Intercepting onclick event in JavaScript using JQuery</a></li><li><a href="http://veerasundar.com/blog/2011/09/making-get-and-post-requests-in-android-application/" title="Making GET and POST requests in android application">Making GET and POST requests in android application</a></li></ul><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/veerasundar/dreamz?a=NtELCij_bBo:YTNZHZH_vWo:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/veerasundar/dreamz?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/veerasundar/dreamz?a=NtELCij_bBo:YTNZHZH_vWo:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/veerasundar/dreamz?i=NtELCij_bBo:YTNZHZH_vWo:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/veerasundar/dreamz?a=NtELCij_bBo:YTNZHZH_vWo:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/veerasundar/dreamz?i=NtELCij_bBo:YTNZHZH_vWo:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/veerasundar/dreamz?a=NtELCij_bBo:YTNZHZH_vWo:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/veerasundar/dreamz?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/veerasundar/dreamz?a=NtELCij_bBo:YTNZHZH_vWo:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/veerasundar/dreamz?i=NtELCij_bBo:YTNZHZH_vWo:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/veerasundar/dreamz/~4/NtELCij_bBo" height="1" width="1"/>
<p><a href="http://feedads.g.doubleclick.net/~a/3HfSBnfpfqX25_pmOVWJpXOWwoo/0/da"><img src="http://feedads.g.doubleclick.net/~a/3HfSBnfpfqX25_pmOVWJpXOWwoo/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/3HfSBnfpfqX25_pmOVWJpXOWwoo/1/da"><img src="http://feedads.g.doubleclick.net/~a/3HfSBnfpfqX25_pmOVWJpXOWwoo/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/VeeraSundar/~4/pOrW3-_5-xE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://veerasundar.com/blog/2012/01/backbone-js-hello-world-tutorial/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://veerasundar.com/blog/2012/01/backbone-js-hello-world-tutorial/</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/veerasundar/dreamz/~3/NtELCij_bBo/</feedburner:origLink></item>
		<item>
		<title>We’re on Google+ and Facebook</title>
		<link>http://feedproxy.google.com/~r/VeeraSundar/~3/A9DK8BRGUrw/</link>
		<comments>http://veerasundar.com/blog/2012/01/were-on-google/#comments</comments>
		<pubDate>Sat, 28 Jan 2012 04:24:44 +0000</pubDate>
		<dc:creator>Veera</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[circle]]></category>
		<category><![CDATA[friend-connect]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[google-plus]]></category>
		<category><![CDATA[personal]]></category>
		<category><![CDATA[plus]]></category>
		<category><![CDATA[reader]]></category>

		<guid isPermaLink="false">http://veerasundar.com/blog/?p=2838</guid>
		<description><![CDATA[I&#8217;ve been using Google Friend Connect tool in this blog for my readers to join this site. But, last November, Google announced that they will be shutting down Friend Connect and recommended site owners to create a Google+ page, instead. So, there it is: Google+ page for this blog. There were 148 subscribers joined this [...]]]></description>
			<content:encoded><![CDATA[<p></p><p><img class="alignleft size-medium wp-image-2844" title="Google-Plus-Circle-Of-Life" src="http://veerasundar.com/blog/wp-content/uploads/2012/01/Google-Plus-Circle-Of-Life-300x195.jpg" alt="" width="300" height="195" />I&#8217;ve been using Google Friend Connect tool in this blog for my readers to join this site. But, last November, Google announced that they will be <a title="Google shutting down friend connect" href="http://googleblog.blogspot.com/2011/11/more-spring-cleaning-out-of-season.html" target="_blank">shutting down Friend Connect</a> and recommended site owners to create a Google+ page, instead.</p>
<p>So, there it is: <a title="Google Plus page for Veera Sundar Blog" href="https://plus.google.com/112623957029861555682?prsrc=3" target="_blank">Google+ page for this blog</a>.</p>
<p>There were <strong>148 subscribers </strong>joined this site through Friend Connect. I have already sent out a newsletter to all of them, asking to add my blog to their circle. But, I highly doubt that how many of them have a Google+ profile already. So, I expect, the adoption would be little slow.</p>
<p>Anyway, If you are already in Google+, don&#8217;t forget to <a title="Add my blog to your Google+ circle" href="https://plus.google.com/112623957029861555682?prsrc=3" target="_blank">add my blog to your circle</a>. Also, I&#8217;ve setup a <a title="Veera Sundar Blog on Facebook" href="https://www.facebook.com/veera.sundar.blog" target="_blank">Facebook page</a> too!</p>
<p>Thanks for reading. :)</p>
<h2  class="related_post_title">Related Posts</h2><ul class="related_post"><li><a href="http://veerasundar.com/blog/2009/10/google-friend-connect-an-invite-to-join-my-community/" title="Google Friend Connect : An invite to join my community ">Google Friend Connect : An invite to join my community </a></li><li><a href="http://veerasundar.com/blog/2008/12/google-reader-gets-a-facelift/" title="Google Reader gets a facelift!">Google Reader gets a facelift!</a></li><li><a href="http://veerasundar.com/blog/2011/12/looking-back-and-forward/" title="Looking back and forward">Looking back and forward</a></li><li><a href="http://veerasundar.com/blog/2011/12/need-your-input/" title="Need your input ">Need your input </a></li><li><a href="http://veerasundar.com/blog/2011/11/design-changes/" title="Design changes">Design changes</a></li></ul><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/veerasundar/dreamz?a=YEXx-MlCf3A:1QO-iDPI04c:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/veerasundar/dreamz?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/veerasundar/dreamz?a=YEXx-MlCf3A:1QO-iDPI04c:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/veerasundar/dreamz?i=YEXx-MlCf3A:1QO-iDPI04c:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/veerasundar/dreamz?a=YEXx-MlCf3A:1QO-iDPI04c:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/veerasundar/dreamz?i=YEXx-MlCf3A:1QO-iDPI04c:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/veerasundar/dreamz?a=YEXx-MlCf3A:1QO-iDPI04c:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/veerasundar/dreamz?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/veerasundar/dreamz?a=YEXx-MlCf3A:1QO-iDPI04c:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/veerasundar/dreamz?i=YEXx-MlCf3A:1QO-iDPI04c:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/veerasundar/dreamz/~4/YEXx-MlCf3A" height="1" width="1"/>
<p><a href="http://feedads.g.doubleclick.net/~a/7v7AgoCBNw24yrk_xgNBXGVfBkM/0/da"><img src="http://feedads.g.doubleclick.net/~a/7v7AgoCBNw24yrk_xgNBXGVfBkM/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/7v7AgoCBNw24yrk_xgNBXGVfBkM/1/da"><img src="http://feedads.g.doubleclick.net/~a/7v7AgoCBNw24yrk_xgNBXGVfBkM/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/VeeraSundar/~4/A9DK8BRGUrw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://veerasundar.com/blog/2012/01/were-on-google/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://veerasundar.com/blog/2012/01/were-on-google/</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/veerasundar/dreamz/~3/YEXx-MlCf3A/</feedburner:origLink></item>
		<item>
		<title>The Rise of the Front End Developers</title>
		<link>http://feedproxy.google.com/~r/VeeraSundar/~3/TPoI943Fjf0/</link>
		<comments>http://veerasundar.com/blog/2012/01/the-rise-of-the-front-end-developers/#comments</comments>
		<pubDate>Tue, 24 Jan 2012 17:53:54 +0000</pubDate>
		<dc:creator>Veera</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[back-end]]></category>
		<category><![CDATA[backbone]]></category>
		<category><![CDATA[front-end]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[nodejs]]></category>
		<category><![CDATA[opinion]]></category>

		<guid isPermaLink="false">http://veerasundar.com/blog/?p=2826</guid>
		<description><![CDATA[In any web development company, there exists two different worlds; well there are more, but we&#8217;ll just focus on - front end (designers) &#38; back end (developers) The Front end guys are responsible for making something that is visible to the end users (THE LOOK). The back end guys are responsible for making the front end work [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>In any web development company, there exists two different worlds; well there are <em>more,</em> but we&#8217;ll just focus on - front end (designers) &amp; back end (developers)</p>
<p>The Front end guys are responsible for making something that is visible to the end users (THE LOOK). The back end guys are responsible for making the front end work (THE FUNCTIONALITY). Together, they both deliver a complete web application/site.</p>
<p>The back end developers would typically use programming languages, such as Java/C++/Python. Apart from talking to database and processing requests, they even have an arsenal of libraries to generate the site markup (JSPs, server side templates, etc).</p>
<p>Front end guys usually fill in by writing HTML documents and CSS files (merely a <em>writer</em>) to present this markup in an visually pleasing way and back end just take these templates to populate data.</p>
<p>Front end had only one option to do any logical operations, by using <em>JavaScript </em>- which has been used for a long time just to validate forms (and do some freaky stuffs).</p>
<p>Because of this <em>cultural </em>difference, there&#8217;s always been a ego-war between these two worlds. Even the company management would rate the front end guys par below the back end developers because the front ends guys don&#8217;t do any serious programming.</p>
<p>All was going fine until the web2.0 era. Now, the front end realized that they could use JavaScript to do much more cooler stuffs than just the form validation. The development of high speed JavaScript engines (such as V8) made it possible to run complex JavaScript code right in the browser. With the introduction of technologies such as WebGL and Canvas, even graphics rendering became feasible using JavaScript.</p>
<p>But, this didn&#8217;t change anything on the server side; the server programs were still running on JVMs/Rubys/Pythons.</p>
<p>Fast forward to today: The scenario is dramatically changing. JavaScript has just sneaked its way into the servers. Now, it is no longer required that a web application needs to have a back end programming language such as Java/C++. Everything can be done using just JavaScript.</p>
<p>Thanks to <strong>node.js </strong>which made it possible to run the JavaScript on the server side. Using <strong>MongoDB, </strong>one can replace the need to have SQL code and now store JSON documents using JavaScript MongoDB connectors. The JavaScript template libraries such as <strong>{{Mustache}}/Underscore </strong>almost removed the need to have server side templates (JSPs). On the client side, JavaScript MVC frameworks such as <strong>Backbone.JS </strong>enable us to write maintainable code. And, there&#8217;s always the plain old JavaScript waiting for us to write some form validation script.</p>
<p>With that, now it is possible to do the heavy lifting just by using JavaScript. The front end JavaScript programmers no longer need to focus on just the front end. They can use their skill set to develop the web application <strong>end-to-end.</strong></p>
<p>This rise of the front end developers poses a real threat to the survival of back end developers. If you are one of that back end guy, do you already realize this threat? What&#8217;s your game plan to stay fit to survive this challenge?</p>
<h2  class="related_post_title">Related Posts</h2><ul class="related_post"><li><a href="http://veerasundar.com/blog/2008/12/i-am-a-java-developer-should-i-know-about-div/" title="I am a Java developer. Should I know about DIV ?">I am a Java developer. Should I know about DIV ?</a></li><li><a href="http://veerasundar.com/blog/2012/01/backbone-js-hello-world-tutorial/" title="Backbone JS &#8211; Hello World tutorial">Backbone JS &#8211; Hello World tutorial</a></li><li><a href="http://veerasundar.com/blog/2011/02/redesigning-my-home-page-as-a-game/" title="Redesigning my home page as a game">Redesigning my home page as a game</a></li><li><a href="http://veerasundar.com/blog/2010/12/javascript-getattribute-method/" title="JavaScript getAttribute method">JavaScript getAttribute method</a></li><li><a href="http://veerasundar.com/blog/2010/07/infinite-scroll-loading-content-while-scrolling-using-java-and-jquery/" title="Infinite scroll : Loading content while scrolling, using Java and JQuery">Infinite scroll : Loading content while scrolling, using Java and JQuery</a></li></ul><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/veerasundar/dreamz?a=2cNRpi5twMc:el6_CbG6UjU:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/veerasundar/dreamz?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/veerasundar/dreamz?a=2cNRpi5twMc:el6_CbG6UjU:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/veerasundar/dreamz?i=2cNRpi5twMc:el6_CbG6UjU:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/veerasundar/dreamz?a=2cNRpi5twMc:el6_CbG6UjU:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/veerasundar/dreamz?i=2cNRpi5twMc:el6_CbG6UjU:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/veerasundar/dreamz?a=2cNRpi5twMc:el6_CbG6UjU:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/veerasundar/dreamz?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/veerasundar/dreamz?a=2cNRpi5twMc:el6_CbG6UjU:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/veerasundar/dreamz?i=2cNRpi5twMc:el6_CbG6UjU:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/veerasundar/dreamz/~4/2cNRpi5twMc" height="1" width="1"/>
<p><a href="http://feedads.g.doubleclick.net/~a/uqHAwP1g7YOTUW_ns6dWZKwpDCs/0/da"><img src="http://feedads.g.doubleclick.net/~a/uqHAwP1g7YOTUW_ns6dWZKwpDCs/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/uqHAwP1g7YOTUW_ns6dWZKwpDCs/1/da"><img src="http://feedads.g.doubleclick.net/~a/uqHAwP1g7YOTUW_ns6dWZKwpDCs/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/VeeraSundar/~4/TPoI943Fjf0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://veerasundar.com/blog/2012/01/the-rise-of-the-front-end-developers/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		<feedburner:origLink>http://veerasundar.com/blog/2012/01/the-rise-of-the-front-end-developers/</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/veerasundar/dreamz/~3/2cNRpi5twMc/</feedburner:origLink></item>
		<item>
		<title>Fix for viewing Tamil font in Chrome – Ubuntu</title>
		<link>http://feedproxy.google.com/~r/VeeraSundar/~3/vOpJGSZZYC0/</link>
		<comments>http://veerasundar.com/blog/2012/01/fix-for-viewing-tamil-font-in-chrome-ubuntu/#comments</comments>
		<pubDate>Sun, 22 Jan 2012 10:16:00 +0000</pubDate>
		<dc:creator>Veera</dc:creator>
				<category><![CDATA[How To]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[font]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[indic]]></category>
		<category><![CDATA[regional]]></category>
		<category><![CDATA[sans]]></category>
		<category><![CDATA[serif]]></category>
		<category><![CDATA[tamil]]></category>
		<category><![CDATA[ttf]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://veerasundar.com/blog/?p=2819</guid>
		<description><![CDATA[It seems like the Chrome browser in Ubuntu has some issues in displaying Tamil fonts. I guess, other Indian languages also might be having the same issue. The weirdest thing is Firefox was displaying the Tamil content properly. So, after searching through the Chromium group for a while, found the fix for this issue. To [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>It seems like the Chrome browser in Ubuntu has some issues in displaying Tamil fonts. I guess, other Indian languages also might be having the same issue. The weirdest thing is Firefox was displaying the Tamil content properly.</p>
<p>So, after searching through the Chromium group for a while, found the fix for this issue.</p>
<h2>To fix Tamil font in Ubuntu Chrome</h2>
<ol>
<li>Open Terminal</li>
<li>Go to the folder: <strong>cd /usr/share/fonts/truetype/freefont</strong></li>
<li>Delete <em>FreeSerif.ttf: </em><strong>sudo rm FreeSerif.ttf</strong></li>
<li>Delete <em>FreeSans.ttf: </em><strong>sudo rm FreeSans.ttf</strong></li>
<li>Close and re-open the browser.</li>
</ol>
<p>The Tamil font should be displayed properly now.</p>
<h2  class="related_post_title">Related Posts</h2><ul class="related_post"><li><a href="http://veerasundar.com/blog/2011/06/git-tutorial-getting-started/" title="Git Tutorial &#8211; Getting Started">Git Tutorial &#8211; Getting Started</a></li><li><a href="http://veerasundar.com/blog/2011/04/app-engine-java-development-on-netbeans/" title="App Engine Java development on Netbeans">App Engine Java development on Netbeans</a></li><li><a href="http://veerasundar.com/blog/2010/11/how-to-setup-java-development-environment-in-ubuntu/" title="How to setup Java development environment in Ubuntu?">How to setup Java development environment in Ubuntu?</a></li><li><a href="http://veerasundar.com/blog/2012/01/java-lang-verifyerror-expecting-a-stackmap-frame-at-branch-target-jdk-7/" title="Java.lang.VerifyError: Expecting a stackmap frame at branch target &#8211; JDK 7">Java.lang.VerifyError: Expecting a stackmap frame at branch target &#8211; JDK 7</a></li><li><a href="http://veerasundar.com/blog/2012/01/how-to-create-a-new-image-in-gimp-with-the-size-of-clipboard-image/" title="How to create a new image in GIMP with the size of clipboard image">How to create a new image in GIMP with the size of clipboard image</a></li></ul><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/veerasundar/dreamz?a=bT1cifJ7nN4:p91mWdvXeaw:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/veerasundar/dreamz?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/veerasundar/dreamz?a=bT1cifJ7nN4:p91mWdvXeaw:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/veerasundar/dreamz?i=bT1cifJ7nN4:p91mWdvXeaw:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/veerasundar/dreamz?a=bT1cifJ7nN4:p91mWdvXeaw:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/veerasundar/dreamz?i=bT1cifJ7nN4:p91mWdvXeaw:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/veerasundar/dreamz?a=bT1cifJ7nN4:p91mWdvXeaw:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/veerasundar/dreamz?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/veerasundar/dreamz?a=bT1cifJ7nN4:p91mWdvXeaw:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/veerasundar/dreamz?i=bT1cifJ7nN4:p91mWdvXeaw:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/veerasundar/dreamz/~4/bT1cifJ7nN4" height="1" width="1"/>
<p><a href="http://feedads.g.doubleclick.net/~a/BC5Alg0Sbu9RE7exCkCxE4tJLFo/0/da"><img src="http://feedads.g.doubleclick.net/~a/BC5Alg0Sbu9RE7exCkCxE4tJLFo/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/BC5Alg0Sbu9RE7exCkCxE4tJLFo/1/da"><img src="http://feedads.g.doubleclick.net/~a/BC5Alg0Sbu9RE7exCkCxE4tJLFo/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/VeeraSundar/~4/vOpJGSZZYC0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://veerasundar.com/blog/2012/01/fix-for-viewing-tamil-font-in-chrome-ubuntu/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://veerasundar.com/blog/2012/01/fix-for-viewing-tamil-font-in-chrome-ubuntu/</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/veerasundar/dreamz/~3/bT1cifJ7nN4/</feedburner:origLink></item>
		<item>
		<title>Java.lang.VerifyError: Expecting a stackmap frame at branch target – JDK 7</title>
		<link>http://feedproxy.google.com/~r/VeeraSundar/~3/bTuQXnWTg20/</link>
		<comments>http://veerasundar.com/blog/2012/01/java-lang-verifyerror-expecting-a-stackmap-frame-at-branch-target-jdk-7/#comments</comments>
		<pubDate>Wed, 18 Jan 2012 13:53:21 +0000</pubDate>
		<dc:creator>Veera</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[error]]></category>
		<category><![CDATA[exception]]></category>
		<category><![CDATA[jdk]]></category>
		<category><![CDATA[jdk7]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://veerasundar.com/blog/?p=2811</guid>
		<description><![CDATA[Right now, when I try to persist an object in Google App Engine, I&#8217;m facing the error &#8220;Java.lang.VerifyError: Expecting a stackmap frame at branch target&#8220;. I&#8217;m using JDK 7 and it seems like the problem lies with this JDK. After googling a bit, I found that there seems to be two solutions to fix this [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Right now, when I try to persist an object in Google App Engine, I&#8217;m facing the error &#8220;<strong>Java.lang.VerifyError: Expecting a stackmap frame at branch target</strong>&#8220;. I&#8217;m using JDK 7 and it seems like the problem lies with this JDK.</p>
<p>After googling a bit, I found that there seems to be two solutions to fix this problem.</p>
<h2>Solution 1: Change to JDK 6</h2>
<p>As simple as is, change your JDK to version 6 and you won&#8217;t be bugged by this exception anymore. Well, in my case, I <em>have </em>to use JDK 7. So, moving on to the solution 2.</p>
<h2>Solution 2: Configure JVM</h2>
<p>Go to <strong>Windows -&gt; Preferences -&gt; Installed JREs. </strong>Select the default JVM and click edit. Then add this parameter as VM argument &#8220;<strong>-XX:-UseSplitVerifier</strong>&#8221; as seen below.</p>
<p style="text-align: center;"><img class="size-full wp-image-2813 aligncenter" title="Screenshot-Edit-JRE" src="http://veerasundar.com/blog/wp-content/uploads/2012/01/Screenshot-Edit-JRE-.png" alt="" width="637" height="615" /></p>
<p>This should solve the issue.</p>
<h2  class="related_post_title">Related Posts</h2><ul class="related_post"><li><a href="http://veerasundar.com/blog/2011/06/git-tutorial-getting-started/" title="Git Tutorial &#8211; Getting Started">Git Tutorial &#8211; Getting Started</a></li><li><a href="http://veerasundar.com/blog/2011/04/app-engine-java-development-on-netbeans/" title="App Engine Java development on Netbeans">App Engine Java development on Netbeans</a></li><li><a href="http://veerasundar.com/blog/2010/11/how-to-setup-java-development-environment-in-ubuntu/" title="How to setup Java development environment in Ubuntu?">How to setup Java development environment in Ubuntu?</a></li><li><a href="http://veerasundar.com/blog/2012/01/the-rise-of-the-front-end-developers/" title="The Rise of the Front End Developers">The Rise of the Front End Developers</a></li><li><a href="http://veerasundar.com/blog/2012/01/fix-for-viewing-tamil-font-in-chrome-ubuntu/" title="Fix for viewing Tamil font in Chrome &#8211; Ubuntu">Fix for viewing Tamil font in Chrome &#8211; Ubuntu</a></li></ul><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/veerasundar/dreamz?a=kjgJYaQJ40g:qLLcbYJyXMo:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/veerasundar/dreamz?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/veerasundar/dreamz?a=kjgJYaQJ40g:qLLcbYJyXMo:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/veerasundar/dreamz?i=kjgJYaQJ40g:qLLcbYJyXMo:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/veerasundar/dreamz?a=kjgJYaQJ40g:qLLcbYJyXMo:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/veerasundar/dreamz?i=kjgJYaQJ40g:qLLcbYJyXMo:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/veerasundar/dreamz?a=kjgJYaQJ40g:qLLcbYJyXMo:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/veerasundar/dreamz?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/veerasundar/dreamz?a=kjgJYaQJ40g:qLLcbYJyXMo:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/veerasundar/dreamz?i=kjgJYaQJ40g:qLLcbYJyXMo:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/veerasundar/dreamz/~4/kjgJYaQJ40g" height="1" width="1"/>
<p><a href="http://feedads.g.doubleclick.net/~a/l_XvYRi8DkbEG5PJqr6qwNA-kVo/0/da"><img src="http://feedads.g.doubleclick.net/~a/l_XvYRi8DkbEG5PJqr6qwNA-kVo/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/l_XvYRi8DkbEG5PJqr6qwNA-kVo/1/da"><img src="http://feedads.g.doubleclick.net/~a/l_XvYRi8DkbEG5PJqr6qwNA-kVo/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/VeeraSundar/~4/bTuQXnWTg20" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://veerasundar.com/blog/2012/01/java-lang-verifyerror-expecting-a-stackmap-frame-at-branch-target-jdk-7/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://veerasundar.com/blog/2012/01/java-lang-verifyerror-expecting-a-stackmap-frame-at-branch-target-jdk-7/</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/veerasundar/dreamz/~3/kjgJYaQJ40g/</feedburner:origLink></item>
	</channel>
</rss>

