<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3116223414845218047</id><updated>2012-01-25T14:13:01.702-06:00</updated><category term='one-to-one'/><category term='hibernate'/><category term='JBoss'/><category term='technical'/><category term='seam'/><category term='books'/><category term='process'/><category term='mock'/><category term='methodology'/><category term='principles'/><category term='database migration'/><category term='conference'/><category term='gorm'/><category term='curry'/><category term='grails'/><category term='interview'/><category term='agile'/><category term='groovy'/><category term='tips'/><category term='closure'/><category term='functional programming'/><category term='richfaces'/><category term='dsl'/><category term='unit testing'/><category term='design'/><category term='liquibase'/><category term='tdd'/><title type='text'>Assar Java Consulting</title><subtitle type='html'>Articles and thoughts on Java technologies, software engineering practices, and agile methods.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://assarconsulting.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3116223414845218047/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://assarconsulting.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Nirav Assar</name><uri>http://www.blogger.com/profile/15474798428329603952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_C-RhZqOI2Es/ShBy927zxaI/AAAAAAAAAAM/ETrMceR0qgQ/S220/nirav_profile.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>21</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3116223414845218047.post-3761847337916560112</id><published>2012-01-16T10:48:00.000-06:00</published><updated>2012-01-17T08:01:39.890-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='closure'/><category scheme='http://www.blogger.com/atom/ns#' term='groovy'/><category scheme='http://www.blogger.com/atom/ns#' term='dsl'/><title type='text'>Groovy DSL - A Simple Example</title><summary type='text'>Domain Specific Languages (DSLs) have become a valuable part of the Groovy idiom. DSLs are used in native Groovy builders, Grails and GORM, and testing frameworks. To a developer, DSLs are consumable and understandable, which makes implementation more fluid as compared to traditional programming. But how is a DSL implemented? How does it work behind the scenes? This article will demonstrate a </summary><link rel='replies' type='application/atom+xml' href='http://assarconsulting.blogspot.com/feeds/3761847337916560112/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://assarconsulting.blogspot.com/2012/01/groovy-dsl-simple-example.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3116223414845218047/posts/default/3761847337916560112'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3116223414845218047/posts/default/3761847337916560112'/><link rel='alternate' type='text/html' href='http://assarconsulting.blogspot.com/2012/01/groovy-dsl-simple-example.html' title='Groovy DSL - A Simple Example'/><author><name>Nirav Assar</name><uri>http://www.blogger.com/profile/15474798428329603952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_C-RhZqOI2Es/ShBy927zxaI/AAAAAAAAAAM/ETrMceR0qgQ/S220/nirav_profile.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3116223414845218047.post-7750019289195492057</id><published>2011-11-12T17:19:00.001-06:00</published><updated>2012-01-16T10:52:35.343-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='methodology'/><category scheme='http://www.blogger.com/atom/ns#' term='books'/><title type='text'>Pragmatic Thinking: Novice vs Expert</title><summary type='text'>Recently I started reading Andy Hunt's fine book "Pragmatic Thinking  And Learning." Hunt is notorious for writing books which offer 
practical, insightful advice in which developers can apply to their work
 on a daily basis.  His most famous book is "The Pragmatic Programmer",
 widely considered one of the top agile programmer books of all time. 
Even after reading the book 7 years ago, I still </summary><link rel='replies' type='application/atom+xml' href='http://assarconsulting.blogspot.com/feeds/7750019289195492057/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://assarconsulting.blogspot.com/2011/11/pragmatic-thinking-novice-vs-expert.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3116223414845218047/posts/default/7750019289195492057'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3116223414845218047/posts/default/7750019289195492057'/><link rel='alternate' type='text/html' href='http://assarconsulting.blogspot.com/2011/11/pragmatic-thinking-novice-vs-expert.html' title='Pragmatic Thinking: Novice vs Expert'/><author><name>Nirav Assar</name><uri>http://www.blogger.com/profile/15474798428329603952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_C-RhZqOI2Es/ShBy927zxaI/AAAAAAAAAAM/ETrMceR0qgQ/S220/nirav_profile.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3116223414845218047.post-1829703297338653731</id><published>2011-09-21T15:48:00.001-05:00</published><updated>2012-01-16T10:53:22.750-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='groovy'/><title type='text'>4 Groovy Tips You May Not Know</title><summary type='text'>I have been programming in Groovy full time for almost two years now, and I feel quite comfortable with it. In fact, the language's idioms, shortcuts, and syntax has become part of my daily programming thinking. This is fantastic as it has opened my mind to unique programming elegance and artistry, but unfortunately on the flip-side it has cause me to cringe when looking at traditional Java code.</summary><link rel='replies' type='application/atom+xml' href='http://assarconsulting.blogspot.com/feeds/1829703297338653731/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://assarconsulting.blogspot.com/2011/09/4-groovy-tips-you-may-not-know.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3116223414845218047/posts/default/1829703297338653731'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3116223414845218047/posts/default/1829703297338653731'/><link rel='alternate' type='text/html' href='http://assarconsulting.blogspot.com/2011/09/4-groovy-tips-you-may-not-know.html' title='4 Groovy Tips You May Not Know'/><author><name>Nirav Assar</name><uri>http://www.blogger.com/profile/15474798428329603952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_C-RhZqOI2Es/ShBy927zxaI/AAAAAAAAAAM/ETrMceR0qgQ/S220/nirav_profile.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3116223414845218047.post-36986225935823662</id><published>2011-08-28T15:37:00.000-05:00</published><updated>2012-01-16T10:53:44.144-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='database migration'/><category scheme='http://www.blogger.com/atom/ns#' term='liquibase'/><category scheme='http://www.blogger.com/atom/ns#' term='grails'/><title type='text'>Database Migration in Grails</title><summary type='text'>This blog covers the Grails Database Migration Plugin, the official  plugin created by Spring Source and based on the popular Liquibase  framework. Examples will demonstrate how database migrations can be  controlled, managed, and executed.  

Database migrations are an important facet of web development. Preserving existing data while seamlessly adding new functionality and tables is critical </summary><link rel='replies' type='application/atom+xml' href='http://assarconsulting.blogspot.com/feeds/36986225935823662/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://assarconsulting.blogspot.com/2011/08/database-migration-in-grails.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3116223414845218047/posts/default/36986225935823662'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3116223414845218047/posts/default/36986225935823662'/><link rel='alternate' type='text/html' href='http://assarconsulting.blogspot.com/2011/08/database-migration-in-grails.html' title='Database Migration in Grails'/><author><name>Nirav Assar</name><uri>http://www.blogger.com/profile/15474798428329603952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_C-RhZqOI2Es/ShBy927zxaI/AAAAAAAAAAM/ETrMceR0qgQ/S220/nirav_profile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-cdms7yzza40/TlQU9KYMdiI/AAAAAAAAAEU/YeaREV0xk1E/s72-c/migration1.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3116223414845218047.post-4570090741436395914</id><published>2011-07-23T13:29:00.001-05:00</published><updated>2011-08-25T14:27:16.900-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='interview'/><title type='text'>Interviewing Agile Candidates</title><summary type='text'>At my current client project, the group I am with is expanding rapidly based on recent success of agile projects in the last two years. With the reputation of our group increasing, our group is in demand for development to support the business. This is a great thing.

This means the group has opened up several positions for agile developers. It also means that the core members of the group have </summary><link rel='replies' type='application/atom+xml' href='http://assarconsulting.blogspot.com/feeds/4570090741436395914/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://assarconsulting.blogspot.com/2011/07/interviewing-agile-candidates.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3116223414845218047/posts/default/4570090741436395914'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3116223414845218047/posts/default/4570090741436395914'/><link rel='alternate' type='text/html' href='http://assarconsulting.blogspot.com/2011/07/interviewing-agile-candidates.html' title='Interviewing Agile Candidates'/><author><name>Nirav Assar</name><uri>http://www.blogger.com/profile/15474798428329603952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_C-RhZqOI2Es/ShBy927zxaI/AAAAAAAAAAM/ETrMceR0qgQ/S220/nirav_profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3116223414845218047.post-6328051107543082243</id><published>2011-02-21T16:16:00.001-06:00</published><updated>2011-02-22T15:09:46.336-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tdd'/><category scheme='http://www.blogger.com/atom/ns#' term='groovy'/><title type='text'>5 Handy Groovy Shortcuts</title><summary type='text'>Groovy's main advantage over Java programming is the ability for a developer to implement a solution in fewer lines of code. Groovy's idioms produce concise, short, and clean code. Of course, on first look the code may look strange to a Java developer. But once you learn Groovy's shortcuts you realize the value of consciseness and how less noise produces easier maintenance of code. To me, this is</summary><link rel='replies' type='application/atom+xml' href='http://assarconsulting.blogspot.com/feeds/6328051107543082243/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://assarconsulting.blogspot.com/2011/02/5-handy-groovy-shortcuts.html#comment-form' title='12 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3116223414845218047/posts/default/6328051107543082243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3116223414845218047/posts/default/6328051107543082243'/><link rel='alternate' type='text/html' href='http://assarconsulting.blogspot.com/2011/02/5-handy-groovy-shortcuts.html' title='5 Handy Groovy Shortcuts'/><author><name>Nirav Assar</name><uri>http://www.blogger.com/profile/15474798428329603952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_C-RhZqOI2Es/ShBy927zxaI/AAAAAAAAAAM/ETrMceR0qgQ/S220/nirav_profile.jpg'/></author><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3116223414845218047.post-1771839272428775892</id><published>2010-12-30T14:48:00.003-06:00</published><updated>2010-12-30T15:05:54.437-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mock'/><category scheme='http://www.blogger.com/atom/ns#' term='grails'/><title type='text'>mockFor and MockFor in Grails</title><summary type='text'>I recently came across a small shortcoming in Grails' mockFor feature. I wasn't able to return a value from a service that was mocked. I get an error where the return value is always a closure, not the value I intended. (Note this occurred in grails v1.1).

I found that using Groovy's MockFor is just as convenient and does not contain this shortcoming.

Concept Overview

Often a developer would </summary><link rel='replies' type='application/atom+xml' href='http://assarconsulting.blogspot.com/feeds/1771839272428775892/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://assarconsulting.blogspot.com/2010/12/mockfor-and-mockfor-in-grails.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3116223414845218047/posts/default/1771839272428775892'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3116223414845218047/posts/default/1771839272428775892'/><link rel='alternate' type='text/html' href='http://assarconsulting.blogspot.com/2010/12/mockfor-and-mockfor-in-grails.html' title='mockFor and MockFor in Grails'/><author><name>Nirav Assar</name><uri>http://www.blogger.com/profile/15474798428329603952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_C-RhZqOI2Es/ShBy927zxaI/AAAAAAAAAAM/ETrMceR0qgQ/S220/nirav_profile.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3116223414845218047.post-772619736035042556</id><published>2010-10-31T22:35:00.168-05:00</published><updated>2010-12-13T20:10:23.472-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='conference'/><category scheme='http://www.blogger.com/atom/ns#' term='grails'/><title type='text'>Grails SpringOne 2GX Presentation Summary</title><summary type='text'>This month I had the privilege of attending the SpringOne 2GX conference in Chicago. It was an amazing event for me where I got to meet the leaders in the field and learned many new things.  I primarily went to dive in deep into the latest Groovy and Grails developments, technologies, and trends. This blog serves as a housing place for my notes on each presentation I attended.  At the end of the </summary><link rel='replies' type='application/atom+xml' href='http://assarconsulting.blogspot.com/feeds/772619736035042556/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://assarconsulting.blogspot.com/2010/10/grails-springone-2gx-presentation.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3116223414845218047/posts/default/772619736035042556'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3116223414845218047/posts/default/772619736035042556'/><link rel='alternate' type='text/html' href='http://assarconsulting.blogspot.com/2010/10/grails-springone-2gx-presentation.html' title='Grails SpringOne 2GX Presentation Summary'/><author><name>Nirav Assar</name><uri>http://www.blogger.com/profile/15474798428329603952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_C-RhZqOI2Es/ShBy927zxaI/AAAAAAAAAAM/ETrMceR0qgQ/S220/nirav_profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3116223414845218047.post-3297062947762314959</id><published>2010-10-28T14:49:00.001-05:00</published><updated>2010-12-13T20:11:42.202-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gorm'/><category scheme='http://www.blogger.com/atom/ns#' term='grails'/><title type='text'>Grails One to Many Mapping with Foreign Key</title><summary type='text'>Grails is a fabulous light weight framework that operates by convention over configuration. This mode of operation results in significant developer productivity and a decrease in configuration headaches.  However, Grails conventions sometimes yield subtle unwanted results.  One example is the default one to many unidirectional mapping configuration, in a very specific scenario.  Grails maps the </summary><link rel='replies' type='application/atom+xml' href='http://assarconsulting.blogspot.com/feeds/3297062947762314959/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://assarconsulting.blogspot.com/2010/10/grails-one-to-many-mapping-with-foreign.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3116223414845218047/posts/default/3297062947762314959'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3116223414845218047/posts/default/3297062947762314959'/><link rel='alternate' type='text/html' href='http://assarconsulting.blogspot.com/2010/10/grails-one-to-many-mapping-with-foreign.html' title='Grails One to Many Mapping with Foreign Key'/><author><name>Nirav Assar</name><uri>http://www.blogger.com/profile/15474798428329603952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_C-RhZqOI2Es/ShBy927zxaI/AAAAAAAAAAM/ETrMceR0qgQ/S220/nirav_profile.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3116223414845218047.post-5422215067397555046</id><published>2010-08-15T18:54:00.001-05:00</published><updated>2010-12-13T20:12:41.929-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mock'/><category scheme='http://www.blogger.com/atom/ns#' term='closure'/><category scheme='http://www.blogger.com/atom/ns#' term='groovy'/><title type='text'>3 Common Ways to Use Groovy Closures</title><summary type='text'>What is a Closure?

The concept of closures is an important part of the Groovy language. A closure resembles a function or method in many aspects of programming. For example a closure can take arguments, can have a return value, and can be executed from one or many clients. A closure is essentially a block of code that is defined and executed a later point. A closure can be assigned to a variable</summary><link rel='replies' type='application/atom+xml' href='http://assarconsulting.blogspot.com/feeds/5422215067397555046/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://assarconsulting.blogspot.com/2010/08/3-common-ways-to-use-groovy-closures.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3116223414845218047/posts/default/5422215067397555046'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3116223414845218047/posts/default/5422215067397555046'/><link rel='alternate' type='text/html' href='http://assarconsulting.blogspot.com/2010/08/3-common-ways-to-use-groovy-closures.html' title='3 Common Ways to Use Groovy Closures'/><author><name>Nirav Assar</name><uri>http://www.blogger.com/profile/15474798428329603952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_C-RhZqOI2Es/ShBy927zxaI/AAAAAAAAAAM/ETrMceR0qgQ/S220/nirav_profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3116223414845218047.post-8285990472909079713</id><published>2010-07-21T15:06:00.001-05:00</published><updated>2010-07-21T16:09:05.933-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='principles'/><category scheme='http://www.blogger.com/atom/ns#' term='design'/><title type='text'>Software Principles are like some Life Principles</title><summary type='text'>Software principles are useful tools for design and implementation and they help us produce quality products. However, software principles can be compromised at times. They don't always have to be followed as there are exceptions to the rule. In some ways, they are similar to some life principles, and this blog explores that idea.

Software and Life

In life we have ethics and morals that we live</summary><link rel='replies' type='application/atom+xml' href='http://assarconsulting.blogspot.com/feeds/8285990472909079713/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://assarconsulting.blogspot.com/2010/07/software-principles-are-like-some-life.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3116223414845218047/posts/default/8285990472909079713'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3116223414845218047/posts/default/8285990472909079713'/><link rel='alternate' type='text/html' href='http://assarconsulting.blogspot.com/2010/07/software-principles-are-like-some-life.html' title='Software Principles are like some Life Principles'/><author><name>Nirav Assar</name><uri>http://www.blogger.com/profile/15474798428329603952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_C-RhZqOI2Es/ShBy927zxaI/AAAAAAAAAAM/ETrMceR0qgQ/S220/nirav_profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3116223414845218047.post-6596733124382705905</id><published>2010-07-05T13:22:00.004-05:00</published><updated>2010-08-28T11:19:05.679-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='functional programming'/><category scheme='http://www.blogger.com/atom/ns#' term='curry'/><category scheme='http://www.blogger.com/atom/ns#' term='groovy'/><title type='text'>Apply Groovy Curried Closures and Composition to Business Rules</title><summary type='text'>Groovy offers new programming idiomsGroovy is a language that operates on the Java platform and is completely compatible with Java.  Many of its features are easily grasped by Java programmers attempting to learn the language. For example, Groovy automatically provides getters and setters for attributes on objects, treats numbers and strings as first class objects, and offers a myriad of </summary><link rel='replies' type='application/atom+xml' href='http://assarconsulting.blogspot.com/feeds/6596733124382705905/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://assarconsulting.blogspot.com/2010/07/apply-groovy-curried-closures-and.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3116223414845218047/posts/default/6596733124382705905'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3116223414845218047/posts/default/6596733124382705905'/><link rel='alternate' type='text/html' href='http://assarconsulting.blogspot.com/2010/07/apply-groovy-curried-closures-and.html' title='Apply Groovy Curried Closures and Composition to Business Rules'/><author><name>Nirav Assar</name><uri>http://www.blogger.com/profile/15474798428329603952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_C-RhZqOI2Es/ShBy927zxaI/AAAAAAAAAAM/ETrMceR0qgQ/S220/nirav_profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3116223414845218047.post-4606431015586759762</id><published>2010-05-10T11:27:00.000-05:00</published><updated>2010-05-10T11:27:16.892-05:00</updated><title type='text'>JBoss Seam White Paper Published</title><summary type='text'>JBoss Seam has been in use within industry for a few years now and has a substantial following in the developer market.  Recently, I published a paper highlighting how Seam enables Rapid Application Development (RAD) in the context of Agile environments.  The paper was written in collaboration with my colleague, Jacob Orshalick. 

JBoss Seam: Agile RIA Development Framework

Much of Seam's </summary><link rel='replies' type='application/atom+xml' href='http://assarconsulting.blogspot.com/feeds/4606431015586759762/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://assarconsulting.blogspot.com/2010/05/jboss-seam-white-paper-published.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3116223414845218047/posts/default/4606431015586759762'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3116223414845218047/posts/default/4606431015586759762'/><link rel='alternate' type='text/html' href='http://assarconsulting.blogspot.com/2010/05/jboss-seam-white-paper-published.html' title='JBoss Seam White Paper Published'/><author><name>Nirav Assar</name><uri>http://www.blogger.com/profile/15474798428329603952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_C-RhZqOI2Es/ShBy927zxaI/AAAAAAAAAAM/ETrMceR0qgQ/S220/nirav_profile.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3116223414845218047.post-3660702120792606304</id><published>2010-04-04T14:26:00.019-05:00</published><updated>2012-01-16T17:21:02.229-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='technical'/><category scheme='http://www.blogger.com/atom/ns#' term='books'/><title type='text'>My Comprehensive Reading List</title><summary type='text'>Recently I decided to track all the books I have read since I graduated college and compile them into one comprehensive list.  What I discovered was that I have read many technical books and that my interests lie in a few discrete other areas.  All the books I have read contribute to my career path and my personal life in some way, and I try to apply anything I learned from reading.  I am </summary><link rel='replies' type='application/atom+xml' href='http://assarconsulting.blogspot.com/feeds/3660702120792606304/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://assarconsulting.blogspot.com/2010/04/my-comprehensive-reading-list.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3116223414845218047/posts/default/3660702120792606304'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3116223414845218047/posts/default/3660702120792606304'/><link rel='alternate' type='text/html' href='http://assarconsulting.blogspot.com/2010/04/my-comprehensive-reading-list.html' title='My Comprehensive Reading List'/><author><name>Nirav Assar</name><uri>http://www.blogger.com/profile/15474798428329603952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_C-RhZqOI2Es/ShBy927zxaI/AAAAAAAAAAM/ETrMceR0qgQ/S220/nirav_profile.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3116223414845218047.post-1444656031420429558</id><published>2010-03-28T21:19:00.009-05:00</published><updated>2011-03-02T10:29:14.977-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hibernate'/><title type='text'>One to One Shared Primary Key is Eagerly Fetched in Hibernate</title><summary type='text'>One to One Shared Primary Key is Eagerly Fetched  Every so often Hibernates presents some peculiarity that, at first observance, doesn't make much sense.  However, once you investigate the peculiarity thoroughly, you see why hibernate behaves the way it does.    An instance occurs when mapping a one-to-one relationship with a shared primary key.  In certain instances, even if this mapping is </summary><link rel='replies' type='application/atom+xml' href='http://assarconsulting.blogspot.com/feeds/1444656031420429558/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://assarconsulting.blogspot.com/2010/03/one-to-one-shared-primary-key-is.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3116223414845218047/posts/default/1444656031420429558'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3116223414845218047/posts/default/1444656031420429558'/><link rel='alternate' type='text/html' href='http://assarconsulting.blogspot.com/2010/03/one-to-one-shared-primary-key-is.html' title='One to One Shared Primary Key is Eagerly Fetched in Hibernate'/><author><name>Nirav Assar</name><uri>http://www.blogger.com/profile/15474798428329603952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_C-RhZqOI2Es/ShBy927zxaI/AAAAAAAAAAM/ETrMceR0qgQ/S220/nirav_profile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_C-RhZqOI2Es/S6-qYliSiLI/AAAAAAAAACg/-PDPJs3IujY/s72-c/passenger-objects.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3116223414845218047.post-6912675609712046945</id><published>2010-03-22T18:56:00.002-05:00</published><updated>2010-03-25T10:12:19.333-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='design'/><title type='text'>5 Ways to Think Wisely in Development</title><summary type='text'>Recently I have been reading some popular and interesting social psychology books.  The contents are based on empirical evidence and scientific research, and often provide stories about how society operates, and why people behave the way they do.  Some of the books in this genre include: Freakonomics, The Tipping Point, Outliers and Kluge

The most recent book I read is Kluge: The Haphazard </summary><link rel='replies' type='application/atom+xml' href='http://assarconsulting.blogspot.com/feeds/6912675609712046945/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://assarconsulting.blogspot.com/2010/03/5-ways-to-think-wisely-in-development.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3116223414845218047/posts/default/6912675609712046945'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3116223414845218047/posts/default/6912675609712046945'/><link rel='alternate' type='text/html' href='http://assarconsulting.blogspot.com/2010/03/5-ways-to-think-wisely-in-development.html' title='5 Ways to Think Wisely in Development'/><author><name>Nirav Assar</name><uri>http://www.blogger.com/profile/15474798428329603952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_C-RhZqOI2Es/ShBy927zxaI/AAAAAAAAAAM/ETrMceR0qgQ/S220/nirav_profile.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3116223414845218047.post-3803195160467278216</id><published>2010-01-31T20:28:00.000-06:00</published><updated>2010-01-31T20:28:45.403-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='richfaces'/><category scheme='http://www.blogger.com/atom/ns#' term='seam'/><category scheme='http://www.blogger.com/atom/ns#' term='JBoss'/><title type='text'>JBoss RichFaces 3.3 Book Review</title><summary type='text'>Boook Title

JBoss RichFaces 3.3
"Enchance your JSF web applications using powerful Ajax components"
by Demetrio Filocamo
Packt Publishing, November 2009

Introduction 

JavaServer Faces has been around for several years now and is an established technology for many enterprises.  Many component libraries supplement JSF to provide rich UI development to server applications.  JBoss RichFaces is one</summary><link rel='replies' type='application/atom+xml' href='http://assarconsulting.blogspot.com/feeds/3803195160467278216/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://assarconsulting.blogspot.com/2010/01/jboss-richfaces-33-book-review.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3116223414845218047/posts/default/3803195160467278216'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3116223414845218047/posts/default/3803195160467278216'/><link rel='alternate' type='text/html' href='http://assarconsulting.blogspot.com/2010/01/jboss-richfaces-33-book-review.html' title='JBoss RichFaces 3.3 Book Review'/><author><name>Nirav Assar</name><uri>http://www.blogger.com/profile/15474798428329603952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_C-RhZqOI2Es/ShBy927zxaI/AAAAAAAAAAM/ETrMceR0qgQ/S220/nirav_profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3116223414845218047.post-218056540821442794</id><published>2009-10-31T15:54:00.014-05:00</published><updated>2010-03-28T21:10:04.511-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='unit testing'/><title type='text'>The Perils of Not Unit Testing</title><summary type='text'>Overview

Unit testing is a widely accepted practice in most development shops in this day and age, especially with the advent of the tool JUnit.  JUnit was so widely effective and used early on that it has been included in the default distribution of eclipse as long as I can remember and I have been programming professionally in Java for about 8 years.  However, the drawbacks of not unit testing</summary><link rel='replies' type='application/atom+xml' href='http://assarconsulting.blogspot.com/feeds/218056540821442794/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://assarconsulting.blogspot.com/2009/10/perils-of-not-unit-testing.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3116223414845218047/posts/default/218056540821442794'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3116223414845218047/posts/default/218056540821442794'/><link rel='alternate' type='text/html' href='http://assarconsulting.blogspot.com/2009/10/perils-of-not-unit-testing.html' title='The Perils of Not Unit Testing'/><author><name>Nirav Assar</name><uri>http://www.blogger.com/profile/15474798428329603952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_C-RhZqOI2Es/ShBy927zxaI/AAAAAAAAAAM/ETrMceR0qgQ/S220/nirav_profile.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3116223414845218047.post-2379587430474098998</id><published>2009-08-23T14:44:00.000-05:00</published><updated>2009-08-23T14:51:53.169-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hibernate'/><category scheme='http://www.blogger.com/atom/ns#' term='one-to-one'/><title type='text'>One to One shared primary key association in JPA with Hibernate</title><summary type='text'>OverviewOne of the less commonly used mappings in JPA and Hiberate is the @OneToOne mapping with a shared primary key.  Conceptually this type of mapping is simple to understand.  However, recently I tried to implement this relationship between two objects and ran into some petty issues.  No clear example was listed on the net, so I decided to post a solution on a blog for possible reference for </summary><link rel='replies' type='application/atom+xml' href='http://assarconsulting.blogspot.com/feeds/2379587430474098998/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://assarconsulting.blogspot.com/2009/08/one-to-one-shared-primary-key.html#comment-form' title='28 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3116223414845218047/posts/default/2379587430474098998'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3116223414845218047/posts/default/2379587430474098998'/><link rel='alternate' type='text/html' href='http://assarconsulting.blogspot.com/2009/08/one-to-one-shared-primary-key.html' title='One to One shared primary key association in JPA with Hibernate'/><author><name>Nirav Assar</name><uri>http://www.blogger.com/profile/15474798428329603952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_C-RhZqOI2Es/ShBy927zxaI/AAAAAAAAAAM/ETrMceR0qgQ/S220/nirav_profile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_C-RhZqOI2Es/SpGcytF-h0I/AAAAAAAAACQ/eLcKJ25pXPk/s72-c/person-address-data-table.PNG' height='72' width='72'/><thr:total>28</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3116223414845218047.post-4981687667299690747</id><published>2009-08-01T15:14:00.022-05:00</published><updated>2009-08-01T22:32:20.648-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hibernate'/><title type='text'>Why Hibernate does "delete all then re-insert" - its not so strange</title><summary type='text'>OverviewHibernate allows developers to interact with data from a relational database in an object-oriented fashion.  This brings a lot of benefits to maintenance of development.  However, hibernate is an abstraction of data which essentially is its function as an ORM, and this usually forces the developer to know hibernate's internals in order to use the tool effectively.Maintaining collections </summary><link rel='replies' type='application/atom+xml' href='http://assarconsulting.blogspot.com/feeds/4981687667299690747/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://assarconsulting.blogspot.com/2009/08/why-hibernate-does-delete-all-then-re.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3116223414845218047/posts/default/4981687667299690747'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3116223414845218047/posts/default/4981687667299690747'/><link rel='alternate' type='text/html' href='http://assarconsulting.blogspot.com/2009/08/why-hibernate-does-delete-all-then-re.html' title='Why Hibernate does &quot;delete all then re-insert&quot; - its not so strange'/><author><name>Nirav Assar</name><uri>http://www.blogger.com/profile/15474798428329603952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_C-RhZqOI2Es/ShBy927zxaI/AAAAAAAAAAM/ETrMceR0qgQ/S220/nirav_profile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_C-RhZqOI2Es/SnSwM14sX5I/AAAAAAAAABo/oS2LNfjmueg/s72-c/objects.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3116223414845218047.post-9214911495508207790</id><published>2009-07-12T15:46:00.001-05:00</published><updated>2009-08-15T14:12:07.364-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='process'/><category scheme='http://www.blogger.com/atom/ns#' term='methodology'/><title type='text'>Clearing up the mud - Explaining the various "driven developments"</title><summary type='text'>OverviewIn recent years within the object oriented and agile community, several approaches to software design and development have materialized and are in use by professional software developers. Test Driven Design (TDD), Domain Driven Design (DDD), Behavior Driven Design (BDD) and Feature Driven Design (DDD) are some of the more well known approaches. While these philosophies all imbibe the </summary><link rel='replies' type='application/atom+xml' href='http://assarconsulting.blogspot.com/feeds/9214911495508207790/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://assarconsulting.blogspot.com/2009/05/clearing-up-mudd-explaining-various_22.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3116223414845218047/posts/default/9214911495508207790'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3116223414845218047/posts/default/9214911495508207790'/><link rel='alternate' type='text/html' href='http://assarconsulting.blogspot.com/2009/05/clearing-up-mudd-explaining-various_22.html' title='Clearing up the mud - Explaining the various &quot;driven developments&quot;'/><author><name>Nirav Assar</name><uri>http://www.blogger.com/profile/15474798428329603952</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_C-RhZqOI2Es/ShBy927zxaI/AAAAAAAAAAM/ETrMceR0qgQ/S220/nirav_profile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_C-RhZqOI2Es/Sljmq_TrNaI/AAAAAAAAABA/CCZNxONlUjg/s72-c/fdd1.GIF' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
