<?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>Pramatr Blog &#187; Opinion</title>
	<atom:link href="http://www.pramatr.com/blog/tag/opinion/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.pramatr.com/blog</link>
	<description>A collection of articles from pramatr.com on technology, security, software and anything we find interesting</description>
	<lastBuildDate>Mon, 29 Mar 2010 19:48:11 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Gartner Magic Quadrant the Be All End All</title>
		<link>http://www.pramatr.com/blog/2009/11/13/thoughts-gartner-magic-quandrant/</link>
		<comments>http://www.pramatr.com/blog/2009/11/13/thoughts-gartner-magic-quandrant/#comments</comments>
		<pubDate>Fri, 13 Nov 2009 17:13:57 +0000</pubDate>
		<dc:creator>pramatr</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Opinion]]></category>
		<category><![CDATA[analyst]]></category>
		<category><![CDATA[gartner]]></category>
		<category><![CDATA[magic quadrant]]></category>
		<category><![CDATA[report]]></category>

		<guid isPermaLink="false">http://www.pramatr.com/blog/?p=1106</guid>
		<description><![CDATA[I had an opportunity to read the Gartner Magic Quadrant Provisioning report recently. With 50 pages it&#8217;s quite a thorough report so I won&#8217;t bore you with the gory details. Dave Kearns does a great job of summarizing it here and you can read the entire report published by CA here.
The first thing I did [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-1130" style="margin: 5px;" title="opinions" src="http://69.89.31.94/~pramatrc/blog/wp-content/uploads/2009/11/opinions.png" alt="opinions" width="166" height="240" />I had an opportunity to read the <strong>Gartner Magic Quadrant Provisioning</strong> report recently. With 50 pages it&#8217;s quite a thorough report so I won&#8217;t bore you with the gory details. Dave Kearns does a great job of summarizing it <a href="http://wwww.networkworld.com/newsletters/dir/2009/101909id1.html">here</a> and you can read the entire report published by CA <a href="http://www.gartner.com/technology/media-products/reprints/ca/article4/article4.html">here</a>.</p>
<p>The first thing I did was compare the Magic Quadrant chart with the same chart from 2007. A quick comparison shows little that separates the two. The larger enterprise solutions remain where they always have, in the upper echelon of the square, while the remainders continue to jostle for position around the centre.</p>
<p>There was minor movement amongst the larger organizations; one moved up a little on one axis while another tiptoed along the other. But despite that nothing much visibly has happened.</p>
<p>Personally it&#8217;s no surprise as the larger organizations make the biggest footprint. With a larger reservoir of capital they can afford to make things happen much quicker, marketing, sales and even innovation.</p>
<p><strong>Its Just One Opinion Right ?</strong><br />
I think we should be grateful that this market even has a Magic Quadrant report for people to chew over. As is states at end of the report, &#8220;Gartner does not endorse any vendor, product or service depicted in the Magic Quadrant, and does not advise technology users to select only those vendors placed in the &#8220;Leaders&#8221; quadrant<em>.</em>&#8221;</p>
<p>It&#8217;s a bit naive though to think the report is just another <strong>opinion</strong>, as James Governor analyst with RedMonk says, being in Gartner&#8217;s Magic Quadrant can move mountains for a company.</p>
<p>Organizations use these reports as a means for garnering further sales, why else participate?</p>
<p>Quotes and positioning details are peeled off and reprinted on marketing material. In fact it&#8217;s not uncommon to find the entire Magic Quadrant report available on company websites which have benefited from the report.</p>
<p>Ratings by research firms matter, their opinions are taken very seriously by IT procurement departments evaluating products and services.</p>
<p><strong>Moving Mountains</strong><br />
The Gartner Magic Quadrant evaluation process looks at several areas, not only regarding the product, its limitations and direction but also the supporting business infrastructure, marketing execution, pricing, sales execution. For a lesser-sized business, being compared to the likes of Oracle in these departments is hardly going to work in your favor.</p>
<p>As Dave Kearns mentions in his <a href="http://www.networkworld.com/newsletters/dir/2008/090808id2.html?t51hb">article</a>, Thor Technologies’ provisioning product was ranked third or fourth (depending on how you read the chart) a few years ago. Once it was acquired by Oracle however, it was repositioned at the top of the leader quadrant with little change except for the acquisition. Despite the improved sales force the product remained the<strong> same</strong> yet it had gravitated to <strong>Leader status</strong>.</p>
<p>So it&#8217;s not hard to see why some businesses find these annual reports demoralizing and even attribute them to potential lost earnings as was the case with ZL Technologies</p>
<p>It can not be underestimated; the Magic Quadrant is incredibly powerful. &#8220;It&#8217;s the difference between trying to sell something and trying to fulfill. The business of IT purchasing is predicated on requests for proposals. Everybody in the leaders [quadrant] is always going to be invited to bed,&#8221; James Governor RedMonk analyst.</p>
<p><strong>Not All Lost</strong><br />
If there are any positives that can be taken from these reports (for those that have not favored highly) is that they can be a catalyst for <strong>change</strong>. These detailed reports highlight areas that can be <strong>improved</strong>, providing <strong>opportunities</strong> where <strong>alternative</strong> strategies need to be sought; whether that is improving marketing execution, customer experience or something else.</p>
<p>Whether Gartner stops producing these reports or alters them makes no odds, there will <strong>always</strong> be opinions that some people give greater importance to over all others.</p>
<p>Bone-idle IT procurement departments will <strong>continue</strong> to start and end their product evaluation with these reports and opinions; grading product viability on how high and furthest to the right something is on a chart. But for <strong>many</strong>, especially with IT security budgets shrinking, purchasing decisions are being done with a lot more care. Businesses are using these opinions and reports along with many others to find something that is right for them rather than relying on where a product is positioned against bespoke criteria.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pramatr.com/blog/2009/11/13/thoughts-gartner-magic-quandrant/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fun with Grails</title>
		<link>http://www.pramatr.com/blog/2009/07/19/fun-with-grails/</link>
		<comments>http://www.pramatr.com/blog/2009/07/19/fun-with-grails/#comments</comments>
		<pubDate>Sun, 19 Jul 2009 16:20:04 +0000</pubDate>
		<dc:creator>pramatr</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Opinion]]></category>
		<category><![CDATA[Resources]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://pramatr.com/?p=905</guid>
		<description><![CDATA[Anyone that has been following @pramatrdev on Twitter will have seen the numerous tweets recently about Grails. I first started looking at Grails back in 2006? after a recommendation from a work collegue. It looked quite interesting and I managed to hack together something quite simple but it was a little hard work in places [...]]]></description>
			<content:encoded><![CDATA[<p>Anyone that has been following <a href="http://twitter.com/pramatrdev">@pramatrdev</a> on Twitter will have seen the numerous <a href="http://twitter.com/#search?q=%23grails">tweets</a> recently about <a href="http://www.grails.org/">Grails</a>. I first started looking at <a href="http://www.grails.org/">Grails</a> back in 2006? after a recommendation from a work collegue. It looked quite interesting and I managed to hack together something quite simple but it was a little hard work in places to get what I wanted out of it. It was early days for the project however and it looked very promising.</p>
<p>I&#8217;ve since recommended it several times to other people who were interested in building applications new applications. Most of the this feedback has been extremely positive so I&#8217;ve managed to get around to having another look at it recently. After <a href="http://twitter.com/snaglepus">@snaglepus</a> suggested I check out <a href="http://www.springsource.com/webinar/building-twitter-with-grails-40-minutes">Build twitter in Grails in 40 minutes</a> (registration is required) I have to say I was very impressed. Since watching that I&#8217;ve gone from knowing absolutely nothing about Grails (three years it too long to keep information in memory) to building a sample application very quickly. After finding plugins for many of the tasks I wanted, I&#8217;ve implemented the logic I need and let the tool do the rest of the heavy lifting work which led to a very productive evening of coding.</p>
<p>I really love it when you find technology which just seems to work and does exactly what you expect it to do. There is still much I want to learn about Grails and I&#8217;m sure there are many other tips and tricks I can pick up along the way. At the minute I&#8217;m just looking through the many Grails books to find a winner and I think I have in <a href="http://www.apress.com/book/view/9781590599952">The Definitive Guide to Grails, Second Edition</a>. If you haven&#8217;t looked at Grails before, I really recommend you check it out and see what it can do for you. And if you aren&#8217;t following me on Twitter, I&#8217;m <a href="http://twitter.com/pramatrdev">@pramatrdev</a> and I&#8217;m sure there will be a few more tweets about Grails before the month is over <img src='http://69.89.31.94/~pramatrc/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> .</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pramatr.com/blog/2009/07/19/fun-with-grails/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Spring Recipes: A Problem-Solution Approach</title>
		<link>http://www.pramatr.com/blog/2009/02/17/spring-recipes-a-problem-solution-approach/</link>
		<comments>http://www.pramatr.com/blog/2009/02/17/spring-recipes-a-problem-solution-approach/#comments</comments>
		<pubDate>Tue, 17 Feb 2009 14:04:13 +0000</pubDate>
		<dc:creator>pramatr</dc:creator>
				<category><![CDATA[Books]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Spring]]></category>
		<category><![CDATA[Examples]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Opinion]]></category>
		<category><![CDATA[Resources]]></category>

		<guid isPermaLink="false">http://pramatr.com/?p=421</guid>
		<description><![CDATA[I recently had the pleasure of reading Spring Recipes: A Problem-Solution Approach. I first began reading the sample chapters released on the authors website, so when the book was finally finished I was really looking forward to getting hold of a copy. When it arrived I was amazed to see that it weighed in at [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.apress.com/book/view/1590599799"><img class="alignleft size-medium wp-image-535" title="springrecipes" src="http://pramatr.files.wordpress.com/2009/02/springrecipes.jpg?w=228" alt="springrecipes" width="228" height="300" /></a>I recently had the pleasure of reading <a href="http://apress.com/book/view/1590599799">Spring Recipes: A Problem-Solution Approach</a>. I first began reading the sample chapters released on the authors website, so when the book was finally finished I was really looking forward to getting hold of a copy. When it arrived I was amazed to see that it weighed in at a hefty 752 pages, but that really shouldn&#8217;t put you off.</p>
<p>Spring Recipes covers Spring 2.5 (and earlier versions) taking it from the simplest concepts right through to the most advanced level. The book is divided into nineteen chapters organised into three parts; Core, Fundamentals and Advanced. Each part builds on the previous ones to grow your understanding of all aspects of the Spring framework, for this reason the book is best read cover to cover.</p>
<p>This book is in no way filler and is packed full of content covering not only the <a href="http://www.springsource.org/about">Spring framework</a> and but also several common Spring <a href="http://www.springsource.org/projects">projects</a> including; <a href="http://static.springframework.org/spring-security/site/index.html">Spring Security</a>, <a href="http://www.springsource.org/webflow">Spring Web Flow</a> and <a href="http://static.springframework.org/spring-ws/sites/1.5/">Spring Web Services</a>. For anyone that knows Spring (and it&#8217;s associated projects), this is a huge amount of information to cover in just one book, but this book really does deliver!</p>
<p>As the author puts it; <em>“Reading Spring Recipes will help you master the most important 80 percent of Spring&#8217;s features with just 20 percent of the effort you would need to learn them all.”</em> If you are already using Spring, this book will serve as an invaluable reference and companion guide for future development. If you are a newcomer to Spring, this book will serve as an excellent launch pad to get you up, running and productive with Spring very quickly.</p>
<h2><strong>Structure</strong></h2>
<p>Each of the recipes covered in the book follows; a problem, solution and then how it works approach. This approach lays out many of the common FAQ style questions that come up on <a href="http://forum.springframework.org/">Spring Forum</a> in an accessible way; clearly outlining the problem and mapping the path to the solution. This book also acts an excellent companion to the <a href="http://static.springframework.org/spring/docs/2.5.x/reference/">Spring Reference manual</a>, which is sometimes difficult to read in places and lacks the array of examples this book provides.</p>
<h2><strong>Audience</strong></h2>
<p>The intended audience for Spring Recipes, is any Java programmer hoping to learn more about Spring. No prior knowledge of Spring is required as this book covers it all right from core concepts such as inversion of control (or Ioc). This book is accessible to anyone who has heard the hype about Spring and simply wants to learn more about it and how they can leverage it&#8217;s power. This book gives Java developers hands-on experience using the Spring framework with real-world examples, this experience can be transferred straight into your Spring project.</p>
<h2><strong>Chapters</strong></h2>
<h3><strong>Part 1: Core</strong></h3>
<p>This part focuses on the core concepts and mechanisms of the Spring framework. The chapters in this part aim to familiarize you with Spring&#8217;s core. As a newcomer to Spring <strong>Chapter 1</strong> introduces the concept of inversion of control the core foundation of Spring. It explains how and IoC container works, but also why it is useful and beneficial to use one. This chapter serves as an excellent introduction to IoC and is invaluable to anyone who isn&#8217;t quite sure why they should use a container based approach. This chapter is a <strong>must</strong> for anyone new to Spring or anyone trying to deliver it to a new audience.</p>
<p><strong>Chapters 2-4</strong> build on the IoC introduction, explaining how to setup and configure a new Spring project and apply the basics of Spring configuration. These first four chapters are the foundation for the rest of the book and are a must read for anyone who has never used Spring before and even advanced users may find useful hints and tips within. <strong>Chapters 5-6</strong> cover the extremely powerful approach of <a href="http://en.wikipedia.org/wiki/Aspect-oriented_programming">AOP</a>, introducing <a href="http://en.wikipedia.org/wiki/Cross-cutting_concern">crosscutting concerns</a> and how these can be configured with Spring. This technique can be extremely useful to provide trace logging, caching and other crosscutting concerns such as security. This is a <strong>must</strong> read for anyone using Spring, even if you are not directly leveraging <a href="http://static.springframework.org/spring/docs/2.5.x/reference/aop.html">Spring AOP</a> or <a href="http://www.eclipse.org/aspectj/">AspectJ</a>. Spring AOP lays the foundation for introducing how Spring provides features such as transparent transaction support and method level authorization checking.</p>
<h3><strong>Part 2 : Fundamentals</strong></h3>
<p>This part has a split focus, it introduces Spring&#8217;s Data Access support, Web integration and also Testing support. <strong>Chapter 7</strong> introduces one of the most important aspects of Spring&#8217;s <a href="http://static.springframework.org/spring/docs/2.5.x/reference/spring-middle-tier.html">data access support</a> in the form of <a href="http://static.springframework.org/spring/docs/2.0.x/api/org/springframework/jdbc/core/JdbcTemplate.html">JdbcTemplate</a>. This shows the reader how they can use JdbcTemplate to prevent the use of direct JDBC and instead let Spring handle all of the boiler plate code. As JdbcTemplate removes the need for the common try/catch/finally/try/catch code seen with JDBC, the code is much cleaner and much more readable. Along with this support, the Spring <a href="http://static.springframework.org/spring/docs/2.0.x/api/org/springframework/dao/DataAccessException.html">DataAccessException</a> hierarchy is introduced which provides a rich set of common exceptions to provide a more granular handling approach.</p>
<p><strong>Chapter 8</strong> introduces Spring&#8217;s excellent <a href="http://static.springframework.org/spring/docs/2.5.x/reference/transaction.html">transaction management</a> support and explains in great detail all of the <a href="http://static.springframework.org/spring/docs/2.5.x/reference/transaction.html#transaction-declarative-txadvice-settings">various</a> propagation behaviours and isolation levels. This chapter is one of my favourites as it not only introduces the concept of Spring transaction support but transactions in general. It&#8217;s accessible to everyone and extremely useful when mentoring new developers.</p>
<p><strong>Chapter 9</strong> discusses how to integrate Spring with existing ORM frameworks, making their usage within the application seamless. This provides multiple approaches to integration allowing you to build on existing Spring classes, or completely decouple your classes from Spring removing the need for any Spring imports within your code. <strong>Chapters 10-11</strong> discuss Spring&#8217;s popular MVC framework and also discuss how many other leading web frameworks can be integrated with a Spring application. As many of the projects I have worked on in the past have used <a href="http://struts.apache.org/">Struts</a>, Chapter 11 was particularly useful to outline all of the options available to use Spring and Struts together.</p>
<p>This part finishes with the introduction of <a href="http://static.springframework.org/spring/docs/2.5.x/reference/testing.html">Spring Testing Support</a>, teaching you not only what features Spring has to offer but also how it integrates with popular testing frameworks such as <a href="http://www.junit.org/">JUnit</a> and <a href="http://testng.org">TestNG</a>. As the Spring Testing support has been overhauled, it was great that this book covered the <a href="http://static.springframework.org/spring/docs/2.5.x/reference/testing.html#testcontext-framework">TestContext</a>framework, but also legacy test classes to cover older versions of JUnit and TestNG. This chapter helps you leverage not only IoC for your tests but also transaction support, mock testing and also MVC integration testing. This approach enables you to easily decouple your code from your tests, providing first class support for all your testing needs.</p>
<h3><strong>Part 3 : Advanced</strong></h3>
<p>For anyone that has mastered the first twelve chapters, <strong>Chapter 13</strong> is where things start to get really interesting. This chapter is dedicated to one of the most scary Spring projects, namely <a href="http://static.springsource.org/spring-security/site/index.html">Spring Security</a> (formerly known as Acegi). Spring Security provides a full range of authentication, authorization and access control options which allow it to secure a standalone Java application or a web-based application. This book focuses on version 2.x onwards which <a href="http://blog.springsource.com/2008/04/17/spring-security-20-final-release-no-more-dead-fairies/">dramatically</a> reduced the size of the required configuration and also its complexity. Spring Security can be a difficult subject to tackle as it&#8217;s often hard for developers to understand it&#8217;s concepts, but this chapter builds security into the example application in piecemeal steps. This demystifies many of the problematic areas of Spring Security whilst addressing the common problems a new developer might face.</p>
<p><strong>Chapter 14</strong> covers the portlet application development using the Spring Portlet MVC framework, highlighting the portlet-specific features which differ from the standard Spring MVC framework. If you don&#8217;t require the portlet features currently within your application, this chapter can safely be skipped as the next one is another gem. <strong>Chapter 15</strong> covers the <a href="http://www.springsource.org/webflow">Spring Web Flow</a> framework which addresses the three major pain–points facing web application developers: user interface navigation control, state management, and modularity. Spring Web Flow offers a <a href="http://static.springframework.org/spring-webflow/docs/2.0.x/reference/htmlsingle/spring-webflow-reference.html#flow-overview">flow</a> definition language which encapsulates a reusable sequence of steps that can execute in different contexts. This framework is extremely flexible and powerful, but this chapter provides a great introduction into what is a very large subject.</p>
<p><strong>Chapter 16</strong> introduces the remoting integration that Spring provides for various technologies such as RMI, Hessian, Burlap, HTTP Invoker, and Web Services. Having already been familiar with many of these technologies, this chapter provides an excellent insight into how these can be integrated with Spring and how quickly this can be achieved. This chapter concludes with a look at Spring Web Services including how to develop contract-first web services. <strong>Chapter 17</strong> discusses how to develop EJB 2.x and 3.0 components with Spring&#8217;s EJB support, and how to use Spring&#8217;s JMS support to simplify sending, receiving, and listening to JMS messages. This introduces a powerful concept of <a href="http://blog.springsource.com/2006/08/11/message-driven-pojos/">message-driven POJOs</a>for those who like the concept of message-driven beans (MDBs) but don&#8217;t want the restrictions of an EJB container.</p>
<p><strong>Chapter 18</strong> demonstrates how easily Spring beans can be exported as JMX MBeans with relative ease in comparison to the typical approach. It continues to extend this by providing remote access, auto-detection and notification. This chapter continues by introducing Spring&#8217;s email support which removes the reliance on <a href="http://java.sun.com/products/javamail/">JavaMail</a> specific mail sessions and exceptions. This provides an abstraction which is independent making it easy to switch to another e-mail API. This chapter finishes with a look at the options available for scheduling tasks within the Spring framework, this integrates with the JDK Timer and also <a href="http://www.opensymphony.com/quartz/">Quartz</a> scheduler.</p>
<p><strong>Chapter 19</strong>, this part and the book concludes with a look at the various scripting languages that can used with Spring applications including; JRuby, Groovy and BeanShell. One of the most powerful features of using scripts is that any changes made to these can be detected by Spring and thus the beans can be <a href="http://static.springframework.org/spring/docs/2.5.x/reference/dynamic-language.html#dynamic-language-refreshable-beans">refreshed</a> automatically. This is of great benefit when you wish to avoid the long compile, deploy and test cycles or the application cannot be taken down regularly for maintenance. This chapter demonstrates how scripted beans can be added to your application quickly and simply using Spring.</p>
<h2><strong>Summary</strong></h2>
<p>This book has undertaken a mammoth task, trying to squeeze Spring and associated projects all into one book. This book is very clearly written, with well-structured, concise examples that get to the heart of the problem without complicating it with unnecessary detail. The examples provide solutions to real world problems instead of taking the form of the simplistic examples found in many other technology books. My only real minor criticism of this book is it&#8217;s scope and size. Given the huge undertaking, there are obviously going to be some areas which only provide a minimal amount of information. This should be expected given the vast array of information covered, but there are a range of <a href="http://www.apress.com">Apress</a> <a href="http://www.apress.com/book/view/1430216247">books</a> which can build on this foundation. I would still give this book five out of five and rate it as one of the best framework specific books I&#8217;ve read.</p>
<p>This book should accompany anyone starting their journey with the Spring framework and even seasoned developers. It can take you from knowing nothing about the Spring framework to knowing pretty much everything you need to create a fully functional web application with all the bells and whistles you&#8217;d expect. It provides information and examples on numerous integration points with other popular open source frameworks and languages allowing you to truly become a Spring expert. Read it, read it again and keep it on your bookshelf as a solid reference for the Spring framework.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pramatr.com/blog/2009/02/17/spring-recipes-a-problem-solution-approach/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Embedded Database Performance: Handle With Care</title>
		<link>http://www.pramatr.com/blog/2009/02/10/embedded-database-performance-handle-with-car/</link>
		<comments>http://www.pramatr.com/blog/2009/02/10/embedded-database-performance-handle-with-car/#comments</comments>
		<pubDate>Tue, 10 Feb 2009 06:00:38 +0000</pubDate>
		<dc:creator>pramatr</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Opinion]]></category>
		<category><![CDATA[Refactoring]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[Connection Pool]]></category>
		<category><![CDATA[Improvement]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Jdbc]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Smells]]></category>

		<guid isPermaLink="false">http://pramatr.com/?p=11</guid>
		<description><![CDATA[Embedded databases are proving pretty popular with many teams finding their usage extremely appealing. Many embedded databases have impressive features; easy to integrate into the software, low administration requirements, very low footprint and generally extremely fast. It is for this last reason that some people look to these databases, but it is also for this reason [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://en.wikipedia.org/wiki/Embedded_database">Embedded databases</a> are proving pretty popular with many teams finding their usage extremely appealing. Many embedded databases have impressive features; easy to integrate into the software, low administration requirements, very low footprint and generally extremely fast. It is for this last reason that some people look to these databases, but it is also for this reason that they need to be handled with care.</p>
<p>Just <a href="http://hsqldb.org/web/openoffice.html">like</a> OpenOffice, a previous project I worked on used an embedded version of <a href="http://hsqldb.org/">HSQLDB</a>. We had started to have several performance problems so engaged in some profiling to find potential areas for improvement. After staring at several screens full of SQL debug, one thing became apparent; our system was producing a huge number of SQL statements. This was accompanied by the realisation that it was also producing a huge number of exactly the same SQL statements.</p>
<p>As the embedded database was extremely fast, there had never been any performance problems before. In fact the database was not the bottleneck in many of the application operations. As the application grew more complex however, performance problems began to arise quite quickly. These problems only got worse when the numbers started to increase. Complexity + Scaling != Success. The extemely fast embedded database was now starting to be a real problem, some serious changes needed to be made.</p>
<p>Many of the database performance problems were resolved quite quickly by simply re-learning the most basic best practices, just because the embedded database was quick these should not have been ignored;</p>
<ul>
<li>Connection pooling can improve performance</li>
<li>Statement caching can improve performance</li>
<li>Batching statements can improve performance</li>
<li>Performing <a href="http://pramatr.com/2009/02/05/sql-n-1-selects-explained/">SQL n + 1 selects</a> are a bad idea regardless of how quick the database is</li>
<li>Caching common SQL results can improve performance</li>
<li>The database needs to be profiled to see exactly what SQL is getting executed against it</li>
</ul>
<p>It may be possible to ignore these issues early in the project, but as the complexity increases and the application is expected to scale they can begin to be exposed. Embedded databases performance can be impressive, but make sure you handle with care.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pramatr.com/blog/2009/02/10/embedded-database-performance-handle-with-car/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Playing The Blame Game: A Better Way?</title>
		<link>http://www.pramatr.com/blog/2009/02/10/playing-the-blame-game-a-better-way/</link>
		<comments>http://www.pramatr.com/blog/2009/02/10/playing-the-blame-game-a-better-way/#comments</comments>
		<pubDate>Tue, 10 Feb 2009 06:00:17 +0000</pubDate>
		<dc:creator>pramatr</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Opinion]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[Code Review]]></category>
		<category><![CDATA[Communication]]></category>
		<category><![CDATA[Discipline]]></category>
		<category><![CDATA[Improvement]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Team]]></category>

		<guid isPermaLink="false">http://pramatr.com/?p=638</guid>
		<description><![CDATA[Success! We&#8217;ve just released a new version of our software, this calls for a celebration. All the team march down to the local bar for a well earned beer or an orange juice for the designated driver. But what&#8217;s that annoying noise in my jacket pocket, my mobile phone&#8217;s ringing and it&#8217;s the boss. Some [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.sxc.hu/photo/867352"><img class="alignleft size-full wp-image-650" title="family-game" src="http://pramatr.files.wordpress.com/2009/02/family-game.jpg" alt="family-game" width="300" height="200" /></a>Success! We&#8217;ve just released a new version of our software, this calls for a celebration. All the team march down to the local bar for a well earned beer or an orange juice for the designated driver. But what&#8217;s that annoying noise in my jacket pocket, my mobile phone&#8217;s ringing and it&#8217;s the boss. Some customers have just upgraded and now they are reporting serious problems with their systems, looks like we better get ready to play the blame game.</p>
<p>For those people who have never played the blame game before, we need to set out the rules. The rules are actually quite simple, if in doubt seek the advice of a seasoned player. The first rule of the blame game is, <em>it&#8217;s never your fault</em>. The second rule of the blame game is, <em>it&#8217;s <strong>never</strong> your fault</em>. The third rule of the blame game is, <em>it&#8217;s <strong>always</strong> some one else&#8217;s fault</em>. So now we&#8217;ve established the rules, we need to work out some tactics to work out whose fault it actually is.</p>
<p>The first candidate for blame <strong>always</strong> has to be the last person to leave the company. Anything that&#8217;s wrong can easily be blamed on them, after all they can&#8217;t defend themselves so they make an ideal target. The next candidate can be chosen from any of the temporary staff you currently employ, the shorter the contract the better. If you aren&#8217;t going to have to see these people for much longer, this should work out quite nicely. The next candidate is anyone that&#8217;s working for the company in another location (if it&#8217;s another country this works even better). You might have to work with these people again, but you&#8217;re probably not going to see them on a daily basis, it shouldn&#8217;t be too awkward. Now this is where your choices start to become a little tricky, you&#8217;re down to the people that you work with everyday.</p>
<p>You have to keep this simple and align yourselves with the strongest members of the team, after all this is survival of the fittest. Fit yourself nicely into the crowd and look for anyone that doesn&#8217;t quite fit, this is real back to basics school ground behaviour. Pick off the weak and vulnerable first as these shouldn&#8217;t put up much of a resistance, then work your way up the power hierarchy until you find your <a href="http://www.thefreedictionary.com/patsy">patsy</a>. So there you have it, those are the basic tactics for the blame game you might have to tweak as appropriate within your organisation but the general approach should apply.</p>
<p>The most important decision you face when presented with the blame game is do you <strong>really</strong> want to play? If you decide that it&#8217;s really not for you, the best way to deal with it is to simply throw out all of the rules, rip the board in half, stamp your feet as hard as you can and shout out loud, <em>&#8220;I refuse to play&#8221;</em>. It is often said that; <em>&#8220;we work in a blame free culture, until something goes wrong&#8221;</em>. Are you really interested in finding someone to blame when something goes wrong? Will it really help the customer solve their problem any sooner if you&#8217;ve found the person to carry the can for the failure? In the time it takes to sit there and rack your brains for potential candidates to take the blame, you could already be investigating the cause of the problems and attempting to fix them. In his recent <a href="http://www.artima.com/weblogs/viewpost.jsp?thread=246513">post</a> Sean Landis said;</p>
<blockquote><p><em>Successful Agile development presupposes that team members will all act like adults. That&#8217;s a euphemism for being competent and professional. Agile teams are expected to accept a high level of responsibility and accountability. When they don&#8217;t, things can fall apart really fast.</em></p></blockquote>
<p>Regardless of how bullet proof a process claims to be, there are always going to be issues that weren&#8217;t found prior to the release. If issues are always going to occur, should teams really be allowed to turn on each other in response to them, will this really lead to a better working relationship? The most important thing is that problems are dealt with promptly and professionally when they arise. Instead of trying to assign blame, people should be responsible for their own actions, they need to learn from the experience and measures should be put in place (if possible) to prevent this happening again. Next time your team is out celebrating your latest release and your mobile phone starts to ring, do you really want to start playing the blame game?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pramatr.com/blog/2009/02/10/playing-the-blame-game-a-better-way/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
