<?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; 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>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>How to be a better programmer</title>
		<link>http://www.msjtech.net/be-a-better-programmer/</link>
		<comments>http://www.msjtech.net/be-a-better-programmer/#comments</comments>
		<pubDate>Wed, 03 Feb 2010 15:21:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.msjtech.net/?p=151</guid>
		<description><![CDATA[Becoming a better programmer Following on from my previous article top 8 tips to get a job in programming I’ve decided to look a bit further into what steps you can take to actually become a better programmer. Below I’ve outlined some of the ways you can be transformed from a lowly code monkey to [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<h2>Becoming a better programmer</h2>
<p>Following on from my previous article top 8 tips to get a job in programming I’ve decided to look a bit further into what steps you can take to actually become a better programmer.<span id="more-151"></span> Below I’ve outlined some of the ways you can be transformed from a lowly code monkey to a silverback code gorilla! (Sorry – the jokes don’t get any better)</p>
<h2>Frameworks and other languages</h2>
<p>Learn other frameworks and languages and see how they do approach problems and complete tasks and compare it to the way you currently perform the same tasks. This not only gives you new perspectives but it also prevents your skill set from stagnating and therefore leaving you pigeon holed to a particular skill or technology.</p>
<h2>Sharpening the saw</h2>
<p>Never stop learning and <strong>Sharpening the saw</strong>. Always try and leave some time perhaps daily or weekly to read blogs, websites and books. Continually finding and learning new information is fundamental to being the best programmer you can be.</p>
<h2>Pair programming</h2>
<p>Pair programming is a very good way of seeing how people do things differently to you, whereby allowing you to pinch other people’s good ideas and incorporating them into your own. This is one of my favourite techniques and I’ve had a lot of success with it.</p>
<h2>Read other peoples code</h2>
<p>Reading other peoples code may sound more like a punishment than something you would want to do, but doing it can provide you with great insights into how other people write code and help you improve your own code.</p>
<p>Writing comments and documentation can also be useful &#8211; especially in a commercial environment where writing comments can help people understand the code quicker.</p>
<h2>Teach/Mentor</h2>
<p>Teach/mentor other people, doing this will help consolidate the knowledge that you have and also perhaps highlight areas in which you need to refresh your own knowledge.</p>
<h2>Work on projects that capture your imagination</h2>
<p>At some point we all feel like we’re stuck in a rut, maintaining and debugging the same bit of code day after day. In an ideal world we’d be able to move onto other projects that may interest us more, but that may always not be possible.</p>
<p>I have two suggestions to help for projects to work on:</p>
<p><strong>Get involved in an open source project </strong></p>
<p>Working on open source projects can expose you to new ideas and people that you may never have met normally. It can also help you regain your enthusiasm for working on projects that caputure your interest and your imagination.</p>
<p><strong>Create your own project from scratch</strong></p>
<p>At work you’re often in the situation where you end up working on just one piece of code or you’re used to having the entire infrastructure around you, working on a project from scratch forces you to think about things that you would otherwise take for granted.</p>
<h2>Learn to touch type</h2>
<p>Not necessarily an obvious one but having the ability to touch type actually has a big impact on your programming ability. It makes you much more productive and allows you to cover more ground. Not worrying about which keys you have to press lets you focus on the actual process of programming.</p>
<p>What has become apparent to me is that there are many different ways of improving your programming ability, some obvious and some not so. I believe that fundamentally there has to be a strong desire to want to improve and you have to be prepared to put some real effort in on your own time.</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.msjtech.net/be-a-better-programmer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Advantages and Disadvantages of Using Hibernate</title>
		<link>http://www.msjtech.net/advantages-and-disadvantages-of-hibernate/</link>
		<comments>http://www.msjtech.net/advantages-and-disadvantages-of-hibernate/#comments</comments>
		<pubDate>Wed, 18 Nov 2009 19:08:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.msjtech.net/?p=19</guid>
		<description><![CDATA[In this post I will go over some of the main advantages and disadvantages of using Hibernate. You may be thinking about using it or maybe you’re trying to persuade your manager to let you use it.


No related posts.]]></description>
			<content:encoded><![CDATA[<h2>Some reflections on using Hibernate</h2>
<p>In this post I will go over some of the main advantages and disadvantages of using Hibernate. You may be thinking about using it or maybe you’re trying to persuade your manager to let you use it. Or maybe you’re looking for a way to impress a girl on a date by showing off your Hibernate expertise! Probably not the last one actually…&#8230;<br />
<span id="more-19"></span><br />
<br/></p>
<h2>Advantages of using Hibernate</h2>
<h3>Better than using raw JDBC</h3>
<p>Hibernate provides an easy way of mapping your objects to your tables, so you don’t have to write JDBC calls every time you need something from the database. Instead you get to deal with objects and write nice queries using HQL (Hibernate Query Language) where you write queries using objects instead of tables.<br />
<br/></p>
<h3>Creates a bridge between the objects in your application and the database</h3>
<p>When you&#8217;re programming in Java you are programming in an object orientated manner where every component is viewed as an object. However when dealing with databases you are dealing with a more mathematical model, hence mapping between the two is tricky. This issue is more commonly known as the <strong>object-relational impedance mismatch</strong>.</p>
<p>Hibernate resolves this by allowing the user to think of any persistence related tasks using entities or objects instead of having to think about rows and tables.<br />
<br/></p>
<h3>Layer of abstraction</h3>
<p>Having an extra layer between your database and your application means that if you ever need to change anything database related such as a table name or column you only have to do it one place, that would be much trickier if you had just been using JDBC.<br />
<br/></p>
<h3>The Standard in ORM</h3>
<p>Hibernate is considered to be the accepted standard in object relational mapping and is also an implementation of the Java Persistence API which is a key part of the JEE platform.<br />
<br/></p>
<h3>Established framework</h3>
<p>Hibernate is an open source framework has been around for many years, there is lots of development activity and has been used on many different projects. Hence this reduces the risk that it will become obsolete any time soon and that learning it would have been a waste of time.<br />
<br/></p>
<h2>Disadvantages of using Hibernate</h2>
<h3>Large object graph</h3>
<p>If you&#8217;re not careful you can end up loading a large number of objects from the database which then reside in your memory.</p>
<p>One approach to resolving this is by using lazy loading, which has a few of its own caveats.<br />
<br/></p>
<h3>Can be a pain with complex legacy databases</h3>
<p>Hibernate works best and easiest with a brand new database, attempting to use it on an existing legacy database can be quite a difficult task. You end up having to use composite primary keys and large numbers of native SQL queries.<br />
<br/></p>
<h3>Steep learning curve</h3>
<p>It is quite easy to do the basics in hibernate but to really use hibernate well you need a good knowledge of ORM concepts, the way mappings and the session works and also more advanced concepts such as caching, lazy loading and fetching strategies.<br />
<br/></p>
<h3>Performance optimisation</h3>
<p>Trying to optimise performance at the database level is a bit trickier with Hibernate due to the fact the SQL that is executed is actually generated by Hibernate, hence you are not able to just go in and adjust the SQL accordingly.<br />
<br/></p>
<h3>Issue when using with a Web/MVC application</h3>
<p>Lazy loading is the big gotcha in MVC applications that use Hibernate for their persistence. All you want to do is load a collection of objects and display them on the page, but for some reason you keep getting a LazyInitializationException. The root cause of this is that the logic of the application has completed and session has been closed before the view was completely rendered.<br />
<br/></p>
<h2><strong>Conclusion</strong></h2>
<p>Hibernate is an excellent framework to use for ORM based persistence, but as with everything in life there is a cost involved. Also there are alternatives such as iBatis and Spring’s JDBC framework that are worth looking at.</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.msjtech.net/advantages-and-disadvantages-of-hibernate/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My Top Java Technologies</title>
		<link>http://www.msjtech.net/top-java-technologies/</link>
		<comments>http://www.msjtech.net/top-java-technologies/#comments</comments>
		<pubDate>Thu, 29 Jan 2009 23:44:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[hibernate]]></category>
		<category><![CDATA[hudson]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[review]]></category>
		<category><![CDATA[spring]]></category>
		<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://www.msjtech.net/?p=66</guid>
		<description><![CDATA[One of the best things about working in Java development is the vast amount of choice that is available for whatever your technical problem or requirement is. All this choice can sometimes be a bit overwhelming, so I have decided to put together a list of the technologies that I have found to be most [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p>One of the best things about working in Java development is the vast amount of choice that is available for whatever your technical problem or requirement is. All this choice can sometimes be a bit overwhelming, so I have decided to put together a list of the technologies that I have found to be most useful.</p>
<p><span id="more-66"></span></p>
<p><strong>The Spring Framework</strong><br />
Spring is the original framework that started the movement away from EJB&#8217;s and promoted a new more light-weight way of doing things in the form of Inversion of Control. At its core Spring frees you from having to write repetitive plumbing code and leaves you free to focus on coding business logic. There are also a number of useful additional modules that are provided &#8211; such as one for AOP, JDBC and a request based MVC framework.</p>
<p><strong>Hibernate</strong><br />
Hibernate is the most popular object relational mapping tool. Using Hibernate frees you from having to write low level JDBC code and enables you to deal with objects instead of tables.</p>
<p><strong>JSF</strong><br />
JSF in my opinion is one of the main frameworks that is having the most success in taking over from Struts. It is a lot more light weight and promotes a more flexible approach to development. JSF is component-centric which makes it very easy to create pages with a number of different inputs. RichFaces is a good example of a popular suite of components that are available. While it had teething problems early on especially with JSP integration, it has now matured into a much improved product.</p>
<p><strong>Tomcat </strong><br />
Is a lightweight server (servlet container) that can be used to deploy web applications (WAR&#8217;s) onto. Jetty is one of its main rivals, which many would argue is faster.</p>
<p><strong>Eclipse</strong><br />
Eclipse is arguably the best IDE out there for Java Development, it is very stable, fast and easy to use. It also has a thriving developer community around it, with many useful plugins available.</p>
<p><strong>JUNIT</strong><br />
JUnit is a very popular framework for developing unit tests for Java classes. Tests are created by extending the base TestCase class and there is an assertion library for verifying the results.</p>
<p><strong>Maven</strong><br />
Is a build automation tool that has been built on top of Ant. One of the key differences is that Maven manages your dependencies for you, which makes development a lot easier for large teams. It also generates some very useful project metrics and a wealth of documentation.</p>
<p><strong>Hudson</strong><br />
Is a new build automation server that I would say is the main sucessor from the original CruiseControl. Hudson provides the ability to automatically check out code, build and test it and then produce a report based on the outcome. Hudson provides some very useful additional functionality, such as change set support and distributed builds.</p>
<p><strong>Subversion</strong><br />
Is a version control system that is a successor to CVS. Subversion has a number of improvements over CVS, such as moving files is a lot easier, branching is straightforward, and the logging mechanisms are much better.</p>
<p><strong>Selenium </strong><br />
Allows you to create and easily execute automated tests against an actual browser. There is an IDE version that is a plugin for FireFox that allows you to actually record your interaction with the browser and replay it back. There is also a core version through which you can write tests in Java which is also quite easy to use. I find writing Java based tests is much easier and at a more comforable level of granularity than HTMLUnit.</p>
<p><strong>Grinder</strong><br />
Scalability and performance optimisation are crucial requirements for todays Web apps &#8211; Grinder is one of the best open source tools out there to help you test and refine the capabilites of your application. Grinder has a simple and easy to use UI with a scripting language in Jython to produce more complex tests. JMeter from Apache is also a very good related product.</p>
<p>Feel free to leave any comments if you think I have missed any of your favourite technologies.</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.msjtech.net/top-java-technologies/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
