<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	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/"
	>

<channel>
	<title>Welcome to Manjits Blog &#187; Uncategorized</title>
	<atom:link href="http://www.msjtech.net/category/uncategorized/feed" rel="self" type="application/rss+xml" />
	<link>http://www.msjtech.net</link>
	<description>Manjit&#039;s Musings On Business and Technology</description>
	<lastBuildDate>Tue, 31 Jan 2012 14:45:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>My thoughts on Grails and Groovy</title>
		<link>http://www.msjtech.net/groovy-and-grail/129/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=groovy-and-grail</link>
		<comments>http://www.msjtech.net/groovy-and-grail/129/#comments</comments>
		<pubDate>Tue, 31 Jan 2012 14:45:59 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[grails]]></category>
		<category><![CDATA[groovy]]></category>
		<category><![CDATA[Hibernate]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[Spring]]></category>
		<category><![CDATA[weblow]]></category>

		<guid isPermaLink="false">http://www.msjtech.net/?p=129</guid>
		<description><![CDATA[Getting Started with Grails I’ve been using Grails for developing web applications for a while and in this post I’m going to give an overview of Grails and provide some of the benefits and disadvantages of I&#8217;ve come across when using it. Grails overview Grails is a web framework based on Groovy and Java which [...]]]></description>
			<content:encoded><![CDATA[<div class="mceTemp">
<dl id="attachment_132" class="wp-caption alignright" style="width: 279px;">
<dt class="wp-caption-dt"><a href="http://www.msjtech.net/wp-content/uploads/2012/01/grails.png"><img class=" wp-image-132" title="Grails Tutorial" src="http://www.msjtech.net/wp-content/uploads/2012/01/grails-300x90.png" alt="Grails Logo" width="269" height="88" /></a></dt>
<dd class="wp-caption-dd"></dd>
</dl>
</div>
<h2>Getting Started with Grails</h2>
<p>I’ve been using Grails for developing web applications for a while and in this post I’m going to give an overview of Grails and provide some of the benefits and disadvantages of I&#8217;ve come across when using it.</p>
<h2>Grails overview</h2>
<p>Grails is a web framework based on Groovy and Java which can be deployed onto web servers such as Tomcat or Jetty.</p>
<p>Grails follows the convention over configuration concept that Ruby on Rails has made famous. It provides a command line interface and code scaffolding that allows you to create a full application quickly.</p>
<h3>Groovy</h3>
<p>If you haven’t used Groovy before the best way to describe it as being a superset of Java; most valid Java constructs are also valid Groovy constructs. Groovy has a number advanced features that complement the capabilities of Java, the syntax is more concise, you can use closures, and there is native support for lists and maps</p>
<h2>Grails benefits</h2>
<ul>
<li>The primary benefit is that Grails is a highly productive framework; the emphasis is on being able to automatically create artefacts quickly from the command prompt.</li>
</ul>
<p style="padding-left: 30px;">For example <em>grails create-controller</em> creates a new controller and automatically does all of the plumbing related to that controller. Even more powerful is the grails generate-all, which creates all the artefacts and interfaces for performing CRUD (Create/Read/Update/Delete) for the domain specified.</p>
<ul>
<li>Grails also underpinned by solid frameworks – it uses frameworks such as Spring, Hibernate (uses GORM which is based on Hibernate) and Sitemesh which are very mature and established frameworks.</li>
</ul>
<ul>
<li>Another important benefit is that Spring Webflow is also built in to the framework – which helps make complex workflows a lot easier to handle.</li>
</ul>
<ul>
<li>Validation is straightforward in Grails; the rules are defined within a static code block within the domain class.</li>
</ul>
<ul>
<li>There is also a very rich plugin ecosystem with Grails – it was built with plug-ability in mind and there is a large set of useful plugins that have been created by the grails community. It is also very easy to use these plugins within your own application using the<em> install-plugin</em> command.</li>
</ul>
<h2>Grails Disadvantages</h2>
<ul>
<li>There are not many real issues with using Grails, however one of the main things to bear in mind is that there is a learning curve associated with using Groovy, so that may make it more difficult to recommend to your colleagues.</li>
</ul>
<ul>
<li>There is also slightly less IDE support for groovy &#8211; especially in comparison with developing a vanilla Java application using them.</li>
</ul>
<ul>
<li>A grails application can also be a bit of a resource hog &#8211; which can probably be attributed to all of the heavyweight frameworks that Grails is made up of.</li>
</ul>
<ul>
<li>One of the problems using a dynamic language such as Groovy is that some errors that are normally caught at compile time with normal java will be not be caught until run time.</li>
</ul>
<h2>Grails in Action</h2>
<p>My favourite book on grails is <a title="Grails in Action" href="http://amzn.to/yx7bMF">Grails in action</a>. It is very well written and the authors seem to have a genuine interest in development.</p>
<h2>Final thoughts on Grails</h2>
<p>I have enjoyed using grails on my last few projects – there was a learning curve at the beginning but the rewards more than make up for that. I will be looking to using it on future projects and would definitely recommend it to other developers.</p>
<p><strong> </strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.msjtech.net/groovy-and-grail/129//feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Six Agile best practices everyone can use</title>
		<link>http://www.msjtech.net/agile-best-practices-everyone-can-use/19/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=agile-best-practices-everyone-can-use</link>
		<comments>http://www.msjtech.net/agile-best-practices-everyone-can-use/19/#comments</comments>
		<pubDate>Thu, 22 Sep 2011 01:42:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.msjtech.net/?p=19</guid>
		<description><![CDATA[Agile development has taken off in a big way and there are many notable companies that use it. However there are still those that are stuck in waterfall mode and find it hard to make the transition to Agile development. Here are some of the best Agile practices that I&#8217;ve found can be incorporated into [...]]]></description>
			<content:encoded><![CDATA[<p>Agile development has taken off in a big way and there are many notable companies that use it. However there are still those that are stuck in waterfall mode and find it hard to make the transition to Agile development. Here are some of the best Agile practices that I&#8217;ve found can be incorporated into any team and provide immediate benefits.</p>
<p><strong>Make it easy to commit code</strong><a href="http://www.msjtech.net/wp-content/uploads/2011/09/agile.jpg"><img class="alignright size-full wp-image-31" title="agile" src="http://www.msjtech.net/wp-content/uploads/2011/09/agile.jpg" alt="" width="198" height="265" /></a></p>
<p>Make it easy for developers to commit code and try and commit regularly so that your code stays code stays in check. I think merging code that has been worked on for long periods of time is one of the most error prone and time consuming tasks a developer can be faced. The ideal solution is to have your version control system integrated into your IDE, tools such as Eclipse and Subversion make this quite easy to achieve.</p>
<p>&nbsp;</p>
<p><strong>Short build cycle</strong><br />
I&#8217;ve come across numerous companies where they are so focused on other issues that they totally miss this one. Long build cycles mean that a surprisingly large amount of time is wasted when the developer has made a small change and is waiting his code to compile. It can also mean that the developer loses momentum and focus, which in turn means that even more time is lost.<br />
In addition to this you may want to look at JavaRebel &#8211; which provides a Ruby on Rails like functionality to Java and allows you to make changes to Java classes on the fly.</p>
<p>&nbsp;</p>
<p><strong>Test Driven development</strong> -<br />
Unit testing has become very popular and is probably one of the easiest things to sell to your boss. Adding unit tests to your code provides a number of benefits; it helps find development problems early on, and provides developers with more confidence to refactor code, which in turn leads to better, more robust code.</p>
<p><strong>Automated build process</strong>,<br />
There are a number of tools that will allow you to automate your build process CruiseControl and Hudson are two of the most popular ones. Build automation gives you immediate feedback on the health of your project, and helps ensure that no bugs or compilation errors are introduced into the build.</p>
<p><strong>Avoid creating silo&#8217;s of knowledge  </strong>-<br />
Try and ensure that knowledge of all parts of your system is spread evenly between your developers. This stops development grinding to a halt when a particular developer is ill or on holiday, it also helps ensure your code is of a higher quality as more people will have worked on a particular component and hence it should be more standardized.</p>
<p><strong>Have a place to share knowledge (informally)</strong><br />
Having a common place where everyone can share knowledge easily, such as a local Wiki can prove invaluable. There is obviously still a place for more formal documents, but a Wiki enables developers to do a brain dump on a particular problem or piece of functionality and store information that may have otherwise been lost.</p>
<p><strong>Conclusion</strong><br />
Some of these may seem obvious, but committing these thoughts to the net will hopefully give you a chance to think about them. In essence these practices enable your team to work in a more efficient and responsive way, which should not only benefit the customer, but also aid the developer in removing some of the distractions related to development and focus on the core task. Do you think there are there any that I have forgot? Please feel free to leave a comment below or email me.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.msjtech.net/agile-best-practices-everyone-can-use/19//feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

