<?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>Manjit's Musings on Online Startups and Web Technology &#187; Programming</title>
	<atom:link href="http://www.msjtech.net/category/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.msjtech.net</link>
	<description>My take on E-Commerce and the Technologies used to enable it</description>
	<lastBuildDate>Wed, 03 Feb 2010 15:21:56 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Benefits of Using JSF</title>
		<link>http://www.msjtech.net/benefits-of-using-jsf/</link>
		<comments>http://www.msjtech.net/benefits-of-using-jsf/#comments</comments>
		<pubDate>Fri, 27 Mar 2009 00:43:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[JSF]]></category>
		<category><![CDATA[Web Frameworks]]></category>

		<guid isPermaLink="false">http://www.msjtech.net/?p=130</guid>
		<description><![CDATA[How many Frameworks does it take to change a light bulb&#8230;.. Variety is definitely one word that comes to mind when thinking about Java based Web Frameworks, since the &#8216;pre-historic&#8217; days of Struts there has been an explosion in the number of frameworks available. One of the earliest successors to Struts was JSF. JSF has [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p><strong>How many Frameworks does it take to change a light bulb&#8230;..<br />
</strong><br />
Variety is definitely one word that comes to mind when thinking about Java based Web Frameworks, since the &#8216;pre-historic&#8217; days of Struts there has been an explosion in the number of frameworks available.<br />
<span id="more-130"></span><br />
One of the earliest successors to Struts was JSF. JSF has not had an easy time, for starters there were many issues with the JSP integration and due to the way that the JSF life-cycle worked, templating tools such as Tiles and Sitemesh were incompatible. However JSF came through the  problems and has developed into one of the most mature and complete Web frameworks available, plus with a 2.0 release in the works things are looking pretty good.</p>
<p>Having used JSF in anger on a number of different projects I felt I should write a post discussing some of the things I really liked about the framework  and also some of the areas where it is in need of improvement.</p>
<p><strong>Benefits of JSF </strong></p>
<p>JSF is a standard, it has the backing of the specification JSR &#8211; 127.  Vendors such as Oracle, and IBM have got a lot of incentive to support it. This has lead to the availability of a large number of high quality third party components. It is also worth noting that I have observed considerable JSF adoption in larger companies in particular, despite the overwhelming number of high quality alternatives.</p>
<p>JSF is view independent, therefore you are not tied to just using JSP&#8217;s as your view technology. I believe this has been a tremendous benefit as a newer templating language in the form of Facelets is available, which has made development in JSF much easier.</p>
<p>You can access beans directly by their names as opposed to another more convoluted mechanism.</p>
<p>JSF adopts the POJO model, whereby your bean doesn&#8217;t need to extend any other class, as is the case with Struts. This leads to cleaner more decoupled code.</p>
<p>Validation is very easy to do in JSF. One of my favourite aspects is the generic validation that it offers. For example if you have an age field you can do the following:</p>
<pre class="displaycode">&lt;h:inputText id="age" value="#{UserRegistration.user.age}"&gt;
 &lt;f:validateLongRange maximum="150" minimum="0"/&gt;
&lt;/h:inputText&gt;</pre>
<p>There is a large and active community and numerous components available. RichFaces and Icefaces are particularly notable but there are many others. There is lots of useful reference material available, and many active forums on the subject, most notably the Sun and Javaranch forum.</p>
<p>There are multiple implementations of JSF which means that you are not tied to one implementation.</p>
<p><strong>The Problem with JSF</strong></p>
<p>Having said all of the positive things above there are still many ways in which JSF could be improved:</p>
<p>There is still more XML configuration than I would like, especially when you compare it to some of the newer frameworks such as Wicket and Struts 2.</p>
<p>No support for bookmarking URLs</p>
<p>Creating new components is way too complicated.</p>
<p>Navigation rules are defined in an XML file, which can grow and become fairly complicated and brittle as the application becomes more complex.</p>
<p><strong>So where does that leave us</strong></p>
<p>In conclusion I would say that JSF has come a long way since the release of the first version, and thanks to complimentary tools such as Facelets, and RichFaces it has become a lot easier to use and has gained traction with developers.</p>
<p>As I mentioned earlier, there is a new version of JSF, code named Mojarra, which has a lot of promise. I am currently experimenting with a reference implementation of Mojarra, and will report back on my findings so stay tuned!</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.msjtech.net/benefits-of-using-jsf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Six Agile Practices to Boost your productivity</title>
		<link>http://www.msjtech.net/agile-practices-to-boost-productivity/</link>
		<comments>http://www.msjtech.net/agile-practices-to-boost-productivity/#comments</comments>
		<pubDate>Tue, 10 Feb 2009 22:54:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[improve]]></category>

		<guid isPermaLink="false">http://www.msjtech.net/?p=23</guid>
		<description><![CDATA[Why Use Agile Practices 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 [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<h2>Why Use Agile Practices</h2>
<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.<span id="more-23"></span></p>
<p><strong>Make it easy to commit code</strong></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 <a rel="nofollow" href="http://www.eclipse.org/" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.eclipse.org/');">Eclipse</a> and <a rel="nofollow" title="agile technology" href="http://subversion.tigris.org/" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://subversion.tigris.org/');">Subversion</a> make this quite easy to achieve.</p>
<p><strong>Short build cycle</strong></p>
<p>I&#8217;ve come across numerous companies where they are so focused on other issues that they 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.</p>
<p>In addition to this you may want to look at <a rel="nofollow" title="agile programming" href="http://www.zeroturnaround.com/javarebel/" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.zeroturnaround.com/javarebel/');">JavaRebel</a> &#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><strong>Test Driven development</strong></p>
<p>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. For more information on unit testing tools check out my post on <a href="http://www.msjtech.net/top-java-technologies/" >Java Technologies</a>.</p>
<p><strong>Automated build process</strong></p>
<p>There are a number of tools that will allow you to automate your build process <span class="misspell"><a rel="nofollow" href="http://cruisecontrol.sourceforge.net" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://cruisecontrol.sourceforge.net');">CruiseControl</a></span> and <a rel="nofollow" title="agile automation" href="https://hudson.dev.java.net/" onclick="javascript:pageTracker._trackPageview('/outbound/article/https://hudson.dev.java.net/');">Hudson</a> 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></p>
<p>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></p>
<p>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></p>
<p>Some of these agile practices 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.</p>
<p>Do you think there are there any that I have forgot? Please feel free to leave a comment below or email me.</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.msjtech.net/agile-practices-to-boost-productivity/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Top 8 tips to get a job in Programming</title>
		<link>http://www.msjtech.net/tips-to-get-programming-job/</link>
		<comments>http://www.msjtech.net/tips-to-get-programming-job/#comments</comments>
		<pubDate>Fri, 30 Jan 2009 00:44:32 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[blogs]]></category>
		<category><![CDATA[careers]]></category>
		<category><![CDATA[jobs]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://www.msjtech.net/?p=58</guid>
		<description><![CDATA[How easy is it to get a Job as a Programmer? In todays climate there are more people looking for jobs and less and less jobs available. In such competitive times you need to try harder to stand out against the other candidates. Having been in similar situations in the past, I managed to overcome [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<h2>How easy is it to get a Job as a Programmer?</h2>
<p>In todays climate there are more people looking for jobs and less and less jobs available. In such competitive times you need to try harder to stand out against the other candidates. Having been in similar situations in the past, I managed to overcome the odds and not only secure a role, but also have the luxury of being able to choose between different opportunities.</p>
<p><span id="more-58"></span></p>
<p>Below are some of the things you could do to give yourself the best chance possible.</p>
<p><strong>Prerequisites</strong><br />
Before I start I think it&#8217;s worth stating that a real interest in programming is a sort of a prerequisite. As a lot of the advice is will use up fair amount of your spare time, which will be much easier to do if you have an actual interest in this stuff.</p>
<p><strong>1. Best Practices</strong><br />
Learn about Design Patterns and development best practices. The chances are that someone out there has already solved whatever problem or technical requirement you have. Learning about best practices can help you avoid making common mistakes and improve your standard of coding in general.</p>
<p>A good book to learn about design patterns is <a href="http://www.amazon.com/gp/product/0596007124?ie=UTF8&amp;tag=mansmusononls-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0596007124" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.amazon.com/gp/product/0596007124?ie=UTF8&amp;tag=mansmusononls-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0596007124');">Head First Design Patterns</a><img style="border:none !important; margin:0px !important;" src="http://www.assoc-amazon.com/e/ir?t=mansmusononls-20&amp;l=as2&amp;o=1&amp;a=0596007124" border="0" alt="" width="1" height="1" />.</p>
<p><strong>2. Finding Information</strong><br />
Learn how to use google/resources effectively. You might laugh at this one, but knowing the most efficient way of searching on google for help with a problem or for some extra information can be invaluable. Also don&#8217;t be afraid to post to developer forums / mailing lists, or even email the people in charge of a project for some help.</p>
<p>Two newer websites that are also useful for helping with programming problems are <a title="Latest programming information" rel="nofollow" href="http://www.dzone.com" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.dzone.com');">dzone </a>and <a rel="nofollow" href="http://stackoverflow.com" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://stackoverflow.com');">stackoverflow</a></p>
<p><strong>3. Accreditation</strong><br />
Gain a widely recognised accreditation. For Java my personal recommendation would be The <a title="Programming tip" rel="nofollow" href="http://www.sun.com/training/certification/java/scjp.xml" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.sun.com/training/certification/java/scjp.xml');">Sun Certified Java Programmer</a> program &#8211; it would help give potential employees some reassurance with regards what your current standard of programming is.</p>
<p><strong>4. Agile</strong><br />
Learn about Agile software development &#8211; I believe that an Agile approach is the the best way to produce software, and even if you don&#8217;t end up using it, you could incorporate some of the best practices into your new role and impress your new boss. Check out my post on <a title="agile programming practices" href="http://www.msjtech.net/agile-practices-to-boost-productivity/" >Agile Best Practices</a> for further information.</p>
<p><strong>5. Join an Open Source Project</strong><br />
Join and contribute to an open source project &#8211; preferably something that has a fair amount of developer activity and something that you find interesting. Some suggestions would be <a title="database programming tool" rel="nofollow" href="http://hibernate.org" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://hibernate.org');">Hibernate</a>, The <a title="Java based Inversion of control technology" rel="nofollow" href="http://springframework.org" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://springframework.org');">Spring Framework</a>, <a title="testing tool for web developers" rel="nofollow" href="http://seleniumhq.org/" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://seleniumhq.org/');">Selenium</a>.</p>
<p><strong>6. Write a blog</strong><br />
I think this would score a lot of brownie points with potential employees. Starting a blog also has a number of other benefits, such as building relationships with other people in the industry and increasing your level of visibility.</p>
<p><strong>7. Learn Learn Learn</strong><br />
Keep up to date with the latest development related news and learn and experiment with new technologies. See my <a title="Programming resources" href="http://www.msjtech.net/links" > links</a> section for more places to find information.</p>
<p><strong>8. Improve your C.V </strong><br />
Your C.V is effectively your sales pitch to your potential employers &#8211; spend time on making it as clear and concise as possible. Also ensure that your strengths and full range of technical skills are adequately highlighted.</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.msjtech.net/tips-to-get-programming-job/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
