<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Adam Jordens@littlesquare:~/</title>
	
	<link>http://littlesquare.com</link>
	<description>Just a little square in a sea of blogs.</description>
	<lastBuildDate>Wed, 09 Sep 2009 08:11:57 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/littlesquare" type="application/rss+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
		<title>You’re a big company, now act like a little one.</title>
		<link>http://feedproxy.google.com/~r/littlesquare/~3/1-yO6b1oz7c/</link>
		<comments>http://littlesquare.com/2009/09/09/youre-a-big-company-now-act-like-a-little-one/#comments</comments>
		<pubDate>Wed, 09 Sep 2009 08:11:57 +0000</pubDate>
		<dc:creator>ajordens</dc:creator>
				<category><![CDATA[General Discussions]]></category>

		<guid isPermaLink="false">http://littlesquare.com/2009/09/09/youre-a-big-company-now-act-like-a-little-one/</guid>
		<description><![CDATA[Very good article over on Smart Bear about small companies behaving like small companies when it comes to interacting with customers, and not pretending to be something they aren’t.
&#160;
I won’t claim to work for a big company, it’s still very much the opposite.&#160; But over the past 5 or 6 years, I have seen a [...]]]></description>
			<content:encoded><![CDATA[<p>Very good <a href="http://blog.asmartbear.com/blog/youre-a-little-company-now-act-like-one.html">article</a> over on Smart Bear about small companies behaving like small companies when it comes to interacting with customers, and not pretending to be something they aren’t.</p>
<p>&#160;</p>
<p>I won’t claim to work for a big company, it’s still very much the opposite.&#160; But over the past 5 or 6 years, I have seen a transition in how customers are marketed to and interacted with from sale to solution implementation and beyond.&#160; We’ve gone from a group of 2 to a company of more than 70 complete with departments, budgets, vice presidents, BoDs, etc.&#160; </p>
<p>I’m not a marketer so I’m not going to comment on our web presence or our quarterly e-mail campaigns.&#160; They seem to be working as that mythical funnel remains full.&#160; Needless to say, our sales process was very rudimentary back in the day, there certainly was no funnel.&#160; We develop enterprise solutions and have always made the $100k+ deals.</p>
<p>&#160;</p>
<p>All things aside, when you start considering customers as a number or percentage point in some quarterly metric you’re trying to hit, you’ve lost an edge.&#160; The startup isn’t even going to have the metric in the first place, they’re going to be concentrating on getting the customer’s attention, getting them product, iterating on said product, and maintaining the relationship.&#160; The product may suck (<em>our first few releases definitely did</em>) but that’s addressable over time.&#160; The relationship is far more important and can be lost very quickly.&#160; </p>
<p>The other thing that changes as a company gets larger is focus.&#160; No longer do you have that laser guided focus on getting product to a single customer, you’re now dealing with existing and new customers simultaneously.&#160; Your decision making ability slows as you’re forced to consider the implications of change to <em>all</em> customers.&#160; It’s one of those annoying but necessary evils that comes with maturity and customer successes.&#160; <img src='http://littlesquare.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .&#160; </p>
<p>I shouldn’t say it’s impossible to maintain the focus, it just becomes more difficult.&#160; Your ability to focus on a particular customer is, in my mind, a key indicator of your ability to be successful.&#160; It’s one of the reasons we track a customer satisfaction metric.&#160; I won’t get into how it’s calculated, but essentially its a gauge of how often we’re communicating with a customer and whether or not the relationship is positive and if they’re happy with their particular solution.&#160; Green is good, Red/Yellow is bad.</p>
<p>The other key indicator in my mind is not making the same mistake twice, but that’s a topic for another post.&#160; It’s an item of significant competitive advantage that the slightly larger company has over the startup. </p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/littlesquare?a=1-yO6b1oz7c:nB4oueolH5w:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/littlesquare?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/littlesquare?a=1-yO6b1oz7c:nB4oueolH5w:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/littlesquare?i=1-yO6b1oz7c:nB4oueolH5w:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/littlesquare?a=1-yO6b1oz7c:nB4oueolH5w:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/littlesquare?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/littlesquare/~4/1-yO6b1oz7c" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://littlesquare.com/2009/09/09/youre-a-big-company-now-act-like-a-little-one/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://littlesquare.com/2009/09/09/youre-a-big-company-now-act-like-a-little-one/</feedburner:origLink></item>
		<item>
		<title>I’ve been a terrible blogger…</title>
		<link>http://feedproxy.google.com/~r/littlesquare/~3/-kK9HDG11v8/</link>
		<comments>http://littlesquare.com/2009/09/07/ive-been-a-terrible-blogger/#comments</comments>
		<pubDate>Tue, 08 Sep 2009 06:47:39 +0000</pubDate>
		<dc:creator>ajordens</dc:creator>
				<category><![CDATA[citations]]></category>

		<guid isPermaLink="false">http://littlesquare.com/2009/09/07/ive-been-a-terrible-blogger/</guid>
		<description><![CDATA[I must admit that I’ve been a terrible blogger these past few months.
I blame Twitter!
&#160;
Now that fall is upon us, I’m going to try and write more than 140 characters on a somewhat regular basis.&#160; 
]]></description>
			<content:encoded><![CDATA[<p>I must admit that I’ve been a terrible blogger these past few months.</p>
<p>I blame <a href="http://twitter.com/ajordens">Twitter</a>!</p>
<p>&#160;</p>
<p>Now that fall is upon us, I’m going to try and write more than 140 characters on a somewhat regular basis.&#160; </p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/littlesquare?a=-kK9HDG11v8:LzG8SfjiVGY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/littlesquare?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/littlesquare?a=-kK9HDG11v8:LzG8SfjiVGY:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/littlesquare?i=-kK9HDG11v8:LzG8SfjiVGY:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/littlesquare?a=-kK9HDG11v8:LzG8SfjiVGY:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/littlesquare?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/littlesquare/~4/-kK9HDG11v8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://littlesquare.com/2009/09/07/ive-been-a-terrible-blogger/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://littlesquare.com/2009/09/07/ive-been-a-terrible-blogger/</feedburner:origLink></item>
		<item>
		<title>Maintaining OEM’d Source</title>
		<link>http://feedproxy.google.com/~r/littlesquare/~3/j_TzVBfvt1g/</link>
		<comments>http://littlesquare.com/2009/09/07/maintaining-oemd-source/#comments</comments>
		<pubDate>Tue, 08 Sep 2009 06:42:29 +0000</pubDate>
		<dc:creator>ajordens</dc:creator>
				<category><![CDATA[General Discussions]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://littlesquare.com/2009/09/07/maintaining-oemd-source/</guid>
		<description><![CDATA[Background
The company I work for made the decision to OEM a product from a partner, rather than invest valuable development time to build something that has essentially been commoditized.
Development resources are at a premium and we consciously don’t want to spend any more time on this code base than we have to, we’re much better [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Background</strong></p>
<p>The company I work for made the decision to OEM a product from a partner, rather than invest valuable development time to build something that has essentially been commoditized.</p>
<p>Development resources are at a premium and we consciously don’t want to spend any more time on this code base than we have to, we’re <strong>much better</strong> at adding value in other areas.</p>
<p>&#160;</p>
<p>Not necessarily a bad or the wrong decision, we’ve just reached the point in time where we need to make functional changes to the OEM’d code base.&#160; </p>
<p>&#160;</p>
<p><strong>Due Diligence</strong></p>
<p>Obviously, before you entertain the outright purchase or license of a third party product/code base, there’s a few questions you ought to ask yourself:</p>
<p><em>- Is the technology stack compatible with our existing products?&#160; </em>(A member of the development staff should provide the answer)</p>
<p>-<em> Does the product do significantly less/more than we will ever need it to? </em>(The later is an important question, do you really want to maintain features that customers will never use? What’s the cost of re-implementing just the features the customer does need?)</p>
<p>- <em>What’s the support model look like? </em>(Who is fixing bugs, you or the source company? How are patches exchanged, or are they?)</p>
<p>&#160;</p>
<p><strong>Maintenance</strong></p>
<p>During the course of our due diligence, we did send a couple developers on site to become familiar with not only the code base but in particular the build process around it.</p>
<p>This did pay dividends as we were able to setup Bamboo builds capable of automatically creating installation packages and running unit tests.</p>
<p><em>Significant win in my books</em>.&#160; Test coverage may not be the greatest, but if you can build a complete candidate release in 7 minutes, manual testing/verification remains a possibility.</p>
<p>&#160;</p>
<p>That’s it for now.&#160; </p>
<p>I’ll admit that I was a skeptic when the idea of adopting a 3rd party code base was first brought up.&#160; Fortunately the changes we’ve been required to make thus far have been minor.&#160; Technology stack is slightly different and anecdotally bug fixes seem to be taking ~3x longer then they would on our primary product, I expect that ratio to more or less even out as we familiarize ourselves with the patterns and structure in the new code base.&#160; </p>
<p>The verdict&#8217;s still out on whether or not we’ll be able to add any new components of significant functionality while keeping things at all maintainable.</p>
<p>But of course that’s the challenge inherent with any software development activity!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/littlesquare?a=j_TzVBfvt1g:JHfG55qWU-U:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/littlesquare?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/littlesquare?a=j_TzVBfvt1g:JHfG55qWU-U:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/littlesquare?i=j_TzVBfvt1g:JHfG55qWU-U:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/littlesquare?a=j_TzVBfvt1g:JHfG55qWU-U:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/littlesquare?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/littlesquare/~4/j_TzVBfvt1g" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://littlesquare.com/2009/09/07/maintaining-oemd-source/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://littlesquare.com/2009/09/07/maintaining-oemd-source/</feedburner:origLink></item>
		<item>
		<title>DeveloperForce.com : Initial Thoughts and Experiences using the Platform</title>
		<link>http://feedproxy.google.com/~r/littlesquare/~3/SUmw2UtL2ws/</link>
		<comments>http://littlesquare.com/2009/07/08/developerforce-com-initial-thoughts-and-experiences-using-the-platform/#comments</comments>
		<pubDate>Thu, 09 Jul 2009 06:39:19 +0000</pubDate>
		<dc:creator>ajordens</dc:creator>
				<category><![CDATA[General Discussions]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Open Source Software]]></category>

		<guid isPermaLink="false">http://littlesquare.com/2009/07/08/developerforce-com-initial-thoughts-and-experiences-using-the-platform/</guid>
		<description><![CDATA[The team and I have recently kicked off a rather ambitious project.&#160; In an attempt to help accelerate the early development activities, we’ve made a decision to build a series of one-off implementations using the DeveloperForce.com platform (salesforce.com sans the sales CRM portions).
The objective is to learn enough about the platform during these initial largely [...]]]></description>
			<content:encoded><![CDATA[<p>The team and I have recently kicked off a rather ambitious <a href="http://www.genologics.com/translational-research">project</a>.&#160; In an attempt to help accelerate the early development activities, we’ve made a decision to build a series of one-off implementations using the <em>DeveloperForce.com</em> platform (<em>salesforce.com sans the sales CRM portions</em>).</p>
<p>The objective is to learn enough about the platform during these initial largely custom implementations, to be in a position to hopefully create and deliver a largely standalone solutions faster than we would using the typical Java technology stack.</p>
<p>The jury is still out, but what follows are some initial thoughts after working with the platform.&#160; The team in question are a group of 3 senior developers working collectively on an application deployed in a single Salesforce Organization.&#160; <em></em></p>
<p><em>Forgive my use or miss-use of Salesforce/DeveloperForce terminology.&#160; </em><em>It can get confusing at times <img src='http://littlesquare.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </em></p>
<p><strong></strong></p>
<p><strong>Version Control</strong></p>
<p>Like any good development shop, we store all code and build artifacts in source control.&#160; Subversion is our poison of choice.</p>
<p>Salesforce development is a bit different in that a lot of the configuration and development activities can occur in either the browser or their Eclipse-based IDE.&#160; </p>
<p>Our strategy for getting code and configurations under source control was to use Eclipse and regularly sync with our development organizations (<em>Salesforce jargon for a development space or area</em>).&#160; </p>
<p>Unbeknownst to us at the onset, there are certain configurations you can make using the browser that are not possible to make with the IDE.&#160; It’s important that these configurations (<em>user/queue creation, etc.</em>) are documented externally (<em>ie. in a spreadsheet</em>).</p>
<p>Code and configurations are moved between developers using Subversion and the Eclipse synchronization capabilities (or the Salesforce migration tool).&#160; By storing these artifacts in Subversion, we’re also able to do code reviews on them via Crucible.</p>
<p>Your mileage may vary with this approach, as we found the current Salesforce tooling to be quite poor at conflict resolution when it came to structural changes.&#160; Moreover, we frequently had to fall back to manually making changes via the web browser.&#160; <strong></strong></p>
<p><strong>Very annoying</strong>.&#160; </p>
<p>I think it’s safe to assume that despite all the redeeming qualities of the DeveloperForce platform, some significant gaps remain when it comes to the expectations of traditional software developers.&#160; By traditional, I mean those of us that are used to using source control, doing code reviews, etc.&#160; <strong>I guess Salesforce considers us a dying breed <img src='http://littlesquare.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </strong></p>
<p>&#160;</p>
<p>Would I choose the platform to build a product I expected to maintain in the long-term and derive significant value from? <strong>No</strong>.&#160; </p>
<p>Would I use it in the short-term as a RAD environment to build a prototype? <strong>Possibly</strong>, but not without first considering some of the more traditional alternatives (<em>there are a number of schema-less data storage products available these days, combine that with a Grails, Seam, Rails or Django and you may very well be off to the races</em>).</p>
<p>&#160;</p>
<p>That’s enough for one night.&#160; I plan on doing a follow-up once the team has more experience maintaining and migrating code after it’s been deployed to DeveloperForce.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/littlesquare?a=SUmw2UtL2ws:X1CUhPeL61Y:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/littlesquare?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/littlesquare?a=SUmw2UtL2ws:X1CUhPeL61Y:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/littlesquare?i=SUmw2UtL2ws:X1CUhPeL61Y:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/littlesquare?a=SUmw2UtL2ws:X1CUhPeL61Y:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/littlesquare?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/littlesquare/~4/SUmw2UtL2ws" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://littlesquare.com/2009/07/08/developerforce-com-initial-thoughts-and-experiences-using-the-platform/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://littlesquare.com/2009/07/08/developerforce-com-initial-thoughts-and-experiences-using-the-platform/</feedburner:origLink></item>
		<item>
		<title>Hibernate Scalability Talk</title>
		<link>http://feedproxy.google.com/~r/littlesquare/~3/S8TzwRY2ub8/</link>
		<comments>http://littlesquare.com/2009/06/20/hibernate-scalability-talk/#comments</comments>
		<pubDate>Sun, 21 Jun 2009 03:05:48 +0000</pubDate>
		<dc:creator>ajordens</dc:creator>
				<category><![CDATA[General Discussions]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Open Source Software]]></category>
		<category><![CDATA[qcon hibernate]]></category>

		<guid isPermaLink="false">http://littlesquare.com/2009/06/20/hibernate-scalability-talk/</guid>
		<description><![CDATA[Good talk from Emmanuel Bernard and Max Ross on the subject over at InfoQ. Both Hibernate Core and Shards are covered, as well as Hibernate Search.
Particularly interesting for me was his overview of the different mechanisms by which you can support multiple customer schemas securely and with decent performance.&#160; The product I’m actively working on [...]]]></description>
			<content:encoded><![CDATA[<p>Good <a href="http://www.infoq.com/presentations/Scaling-Hibernate-Emmanuel-Bernard-Max-Ross">talk</a> from Emmanuel Bernard and Max Ross on the subject over at InfoQ. Both Hibernate Core and Shards are covered, as well as Hibernate Search.</p>
<p>Particularly interesting for me was his overview of the different mechanisms by which you can support multiple customer schemas securely and with decent performance.&#160; The product I’m actively working on is likely headed in this direction, looks like Oracle VPD is Emmanuel’s preferred solution.&#160; A quick search has turned up an add-on for Postgres called <a href="http://veil.projects.postgresql.org/curdocs/index.html">Veil</a> which aims to provide row/column-level security similar to Oracle VPD.&#160; Good to at least have a choice, but I imagine that when push comes to shove, Oracle will win out.</p>
<p>Shards has always looked interesting, will be nice when it finally hits GA and supports the JPA API.&#160; Would make it slightly easier to incorporate and play around with.</p>
<p>Interesting thoughts on clustering Lucene/Hibernate Search.&#160; We’re currently running it asynchronously (<em>ie. @Asynchronous in Seam</em>) on a single node but will likely need to look at pushing it to a second box and trying to get indexes in near real time without noticeable degradation to the front-end.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/littlesquare?a=S8TzwRY2ub8:kxOtU7cfPwQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/littlesquare?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/littlesquare?a=S8TzwRY2ub8:kxOtU7cfPwQ:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/littlesquare?i=S8TzwRY2ub8:kxOtU7cfPwQ:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/littlesquare?a=S8TzwRY2ub8:kxOtU7cfPwQ:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/littlesquare?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/littlesquare/~4/S8TzwRY2ub8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://littlesquare.com/2009/06/20/hibernate-scalability-talk/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://littlesquare.com/2009/06/20/hibernate-scalability-talk/</feedburner:origLink></item>
		<item>
		<title>Win7, nice to meet you.</title>
		<link>http://feedproxy.google.com/~r/littlesquare/~3/PtH6N4c7Q9E/</link>
		<comments>http://littlesquare.com/2009/05/21/win7-nice-to-meet-you/#comments</comments>
		<pubDate>Fri, 22 May 2009 05:12:57 +0000</pubDate>
		<dc:creator>ajordens</dc:creator>
				<category><![CDATA[citations]]></category>

		<guid isPermaLink="false">http://littlesquare.com/2009/05/21/win7-nice-to-meet-you/</guid>
		<description><![CDATA[I hate to admit it but I’ve been running Vista on a desktop machine at home for the better part of the past 8 months.
It has not been a terrible experience (High-end dual-core with 8 gigs of ram does help) but I’ve been looking for more.
I’ve heard good things about Win7, and with the recent [...]]]></description>
			<content:encoded><![CDATA[<p>I hate to admit it but I’ve been running Vista on a desktop machine at home for the better part of the past 8 months.</p>
<p>It has not been a terrible experience (<em>High-end dual-core with 8 gigs of ram does help</em>) but I’ve been looking for more.</p>
<p>I’ve heard good things about Win7, and with the recent release of the RC, decided to upgrade.</p>
<p>&#160;</p>
<p>I must say the process was quite painless and almost everything worked out of the box.&#160; We just got a new SonicWALL Firewall/VPN at work and the client had to be re-installed.&#160; Other than that, a minor tweak to the <a href="http://www.blogsdna.com/1900/how-to-run-google-chrome-on-windows-7-64-bit-version.htm">command-line parameters for Chrome</a> and I was off to the races.</p>
<p>YMMV but I’ve seen a noticeable improvement in my day-to-day activities on the machine.&#160; </p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/littlesquare?a=PtH6N4c7Q9E:EWdcJGhc5Ts:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/littlesquare?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/littlesquare?a=PtH6N4c7Q9E:EWdcJGhc5Ts:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/littlesquare?i=PtH6N4c7Q9E:EWdcJGhc5Ts:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/littlesquare?a=PtH6N4c7Q9E:EWdcJGhc5Ts:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/littlesquare?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/littlesquare/~4/PtH6N4c7Q9E" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://littlesquare.com/2009/05/21/win7-nice-to-meet-you/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://littlesquare.com/2009/05/21/win7-nice-to-meet-you/</feedburner:origLink></item>
		<item>
		<title>Good-bye Exchange, it was nice knowing you (I hope)</title>
		<link>http://feedproxy.google.com/~r/littlesquare/~3/XC2yS4MCjl8/</link>
		<comments>http://littlesquare.com/2009/05/21/good-bye-exchange-it-was-nice-knowing-you-i-hope/#comments</comments>
		<pubDate>Fri, 22 May 2009 05:04:24 +0000</pubDate>
		<dc:creator>ajordens</dc:creator>
				<category><![CDATA[General Discussions]]></category>

		<guid isPermaLink="false">http://littlesquare.com/2009/05/21/good-bye-exchange-it-was-nice-knowing-you-i-hope/</guid>
		<description><![CDATA[I’m happy to say that after a good 3 or 4 years of using Exchange for all our corporate email/calendaring, there is light at the end of the tunnel.
I got an invitation today to join our pilot project on Google Apps for Enterprise.&#160; Awesome, right!?
Is it bad than I’m looking forward to the opportunity to [...]]]></description>
			<content:encoded><![CDATA[<p>I’m happy to say that after a good 3 or 4 years of using Exchange for all our corporate email/calendaring, there is light at the end of the tunnel.</p>
<p>I got an invitation today to join our pilot project on Google Apps for Enterprise.&#160; Awesome, right!?</p>
<p>Is it bad than I’m looking forward to the opportunity to jettison all 35 or 40k emails and start anew?&#160; I’d honestly trade that in an instance to free up the memory and CPU cycles chewed up by Entourage.&#160; </p>
<p>&#160;</p>
<p>It’ll be interesting to see how it plays out.&#160; It’s still a pilot project so there are a few obvious and annoying gaps that force me back to Entourage, but if we can work out those kinks I’ll sure be a happy camper.&#160; </p>
<p><em>Given that our executives were willing to jump on the iPhone bandwagon from the Blackberry, this idea could actually fly.</em></p>
<p>&#160;</p>
<p>I’d be curious to hear from any small to mid-sized companies (<em>we’re in the 75-100 employee range</em>) that have made similar transitions.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/littlesquare?a=XC2yS4MCjl8:OYALr47BkBQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/littlesquare?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/littlesquare?a=XC2yS4MCjl8:OYALr47BkBQ:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/littlesquare?i=XC2yS4MCjl8:OYALr47BkBQ:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/littlesquare?a=XC2yS4MCjl8:OYALr47BkBQ:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/littlesquare?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/littlesquare/~4/XC2yS4MCjl8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://littlesquare.com/2009/05/21/good-bye-exchange-it-was-nice-knowing-you-i-hope/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://littlesquare.com/2009/05/21/good-bye-exchange-it-was-nice-knowing-you-i-hope/</feedburner:origLink></item>
		<item>
		<title>Framework misuses are still your bugs.</title>
		<link>http://feedproxy.google.com/~r/littlesquare/~3/YR-4MvuA90A/</link>
		<comments>http://littlesquare.com/2009/03/03/framework-misuses-are-still-your-bugs/#comments</comments>
		<pubDate>Tue, 03 Mar 2009 16:24:04 +0000</pubDate>
		<dc:creator>ajordens</dc:creator>
				<category><![CDATA[General Discussions]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Open Source Software]]></category>

		<guid isPermaLink="false">http://littlesquare.com/2009/03/03/framework-misuses-are-still-your-bugs/</guid>
		<description><![CDATA[I spent a few hours tonight trying to diagnose a problem we were running into tonight with some web application code.
That was on top of the better part of a day that was spent by another developer digging into the code.
Development ain’t easy, and frameworks for all their glory strive to make the easy stuff [...]]]></description>
			<content:encoded><![CDATA[<p>I spent a few hours tonight trying to diagnose a problem we were running into tonight with some web application code.</p>
<p>That was on top of the better part of a day that was spent by another developer digging into the code.</p>
<p>Development ain’t easy, and frameworks for all their glory strive to make the easy stuff easier and the difficult stuff… well it’s still difficult.</p>
<p>Take Seam for example, a couple simple @In annotations here and there, and all of a sudden you have an application up and running.&#160; </p>
<p>But throw transactions and exceptions into the mix and the expected behaviour is up in the air.</p>
<p>Imagine the following scenario:</p>
<blockquote><p>Component A calls Component B.update() which in turn calls EntityManager.persist(someEntity).</p>
<p>someEntity fails a database constraint and an EntityAlreadyExists exception is propagated from Component B.update().&#160; </p>
</blockquote>
<p>Can Component A turn around and update someEntity and call Component B.update() again?</p>
<p>It depends.&#160; In Seam there is a RollbackInterceptor behind the scenes that will rollback any transaction crossing an injection boundary (<em>it’s slightly more complicated than that but we’ll leave that for another day</em>).&#160; </p>
<p>If Component A was a POJO Transactional Seam component, and Component B was a Seam EntityHome component, this wouldn’t work.&#160; In this sitation, Component B throwing an exception would actually rollback the transaction before control was returned to Component A.&#160; Component A could very well handle the exception but the underlying transaction would still be rolled back.</p>
<p>From the looks of the implementation, the EntityHome (<em>Component B</em>) is relying on the entity existing in its PersistenceContext when doing an update.&#160; You can update() multiple times as long as the transaction remains open and long-running.</p>
<p>Throw an exception into the mix and that transaction is likely to get rolled back by the RollbackInterceptor and the persistence context reset.</p>
<p>From that point on, calling Component B.update() (<em>equivalent to EntityHome.update()</em>) is going to report a success but do nothing but flush an empty persistence context.&#160; </p>
<p>&#160;</p>
<p>The short term fix was to have Component B.update() re-merge in <em>someEntity</em>.&#160; However, rather than perverting the framework, it likely makes sense to dig deeper into the implementations and merge Component A and Component B to prevent the RollbackInterceptor from firing and rolling back the transaction on an exception that is recoverable.</p>
<p>The things you learn!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/littlesquare?a=YR-4MvuA90A:8kA-TneiYog:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/littlesquare?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/littlesquare?a=YR-4MvuA90A:8kA-TneiYog:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/littlesquare?i=YR-4MvuA90A:8kA-TneiYog:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/littlesquare?a=YR-4MvuA90A:8kA-TneiYog:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/littlesquare?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/littlesquare/~4/YR-4MvuA90A" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://littlesquare.com/2009/03/03/framework-misuses-are-still-your-bugs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://littlesquare.com/2009/03/03/framework-misuses-are-still-your-bugs/</feedburner:origLink></item>
		<item>
		<title>"No matter how cool your interface is, less of it would be better."</title>
		<link>http://feedproxy.google.com/~r/littlesquare/~3/2HMEqZm0OHc/</link>
		<comments>http://littlesquare.com/2009/02/18/no-matter-how-cool-your-interface-is-less-of-it-would-be-better/#comments</comments>
		<pubDate>Wed, 18 Feb 2009 08:02:22 +0000</pubDate>
		<dc:creator>ajordens</dc:creator>
				<category><![CDATA[General Discussions]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://littlesquare.com/2009/02/18/no-matter-how-cool-your-interface-is-less-of-it-would-be-better/</guid>
		<description><![CDATA[Interesting little article over on InfoQ talking about Alan Cooper’s book About Face.
&#160;
Few key points:

Design for Intermediates Users
Use Tools that Help Beginners to Become Intermediates
Less is More
Design for the Probable, Provide for the Possible
Eliminate Errors or Confirmation Dialogs

&#160;
There’s an interesting closing comment discussing the need (or lack there of) for error or confirmation dialogs.&#160; 
“Cooper [...]]]></description>
			<content:encoded><![CDATA[<p>Interesting little <a href="http://www.infoq.com/articles/UI-Principles-Naysawn-Naderi">article</a> over on InfoQ talking about <em>Alan Cooper</em>’s book <strong>About Face</strong>.</p>
<p>&#160;</p>
<p>Few key points:</p>
<ul>
<li>Design for Intermediates Users</li>
<li>Use Tools that Help Beginners to Become Intermediates</li>
<li>Less is More</li>
<li>Design for the Probable, Provide for the Possible</li>
<li>Eliminate Errors or Confirmation Dialogs</li>
</ul>
<p>&#160;</p>
<p>There’s an interesting closing comment discussing the need (<em>or lack there of</em>) for error or confirmation dialogs.&#160; </p>
<blockquote><p>“Cooper notes that while they [error dialogs] are used to signal that something went wrong with the code, the user tends to interpret them as “I’ve done something wrong.”&#160; When users are told that they are wrong repeatedly, they start to hate your product”</p>
</blockquote>
<p><font face="Trebuchet MS" color="#888888"></font>I suspect there’s some truth behind the statement, however all things being equal, if your product is blowing up, there’s a good chance that users aren’t going to be happy campers anyways.</p>
<p>That being said, I agree that showing an error dialog with some cryptic exception message only decipherable by the originating author, is probably not doing anyone a favor.&#160;&#160; </p>
<p>Using the Java IDE IntelliJ as an example, it’s quite rare for a user to get an actual error dialog.&#160; Instead, there’s a little status icon in the corner that will blink red whenever there’s a problem.&#160; Clicking it will provide additional details with the option of submitting it back as a bug report.&#160; </p>
<p>It’s important to remember who the user is, and considering the article’s focus on differentiating between beginner, intermediate and expert users, this <strong>status icon</strong> approach is probably best suited for intermediate/expert users, and not beginners.&#160; </p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/littlesquare?a=2HMEqZm0OHc:jtXyqnhkUmY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/littlesquare?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/littlesquare?a=2HMEqZm0OHc:jtXyqnhkUmY:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/littlesquare?i=2HMEqZm0OHc:jtXyqnhkUmY:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/littlesquare?a=2HMEqZm0OHc:jtXyqnhkUmY:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/littlesquare?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/littlesquare/~4/2HMEqZm0OHc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://littlesquare.com/2009/02/18/no-matter-how-cool-your-interface-is-less-of-it-would-be-better/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://littlesquare.com/2009/02/18/no-matter-how-cool-your-interface-is-less-of-it-would-be-better/</feedburner:origLink></item>
		<item>
		<title>Ribs ribs ribs RIBS!!!!</title>
		<link>http://feedproxy.google.com/~r/littlesquare/~3/cvnHvIWXGKQ/</link>
		<comments>http://littlesquare.com/2009/02/17/ribs-ribs-ribs-ribs/#comments</comments>
		<pubDate>Wed, 18 Feb 2009 02:51:35 +0000</pubDate>
		<dc:creator>ajordens</dc:creator>
				<category><![CDATA[General Discussions]]></category>

		<guid isPermaLink="false">http://littlesquare.com/2009/02/17/ribs-ribs-ribs-ribs/</guid>
		<description><![CDATA[Glenn, if you’re reading this, we’re doing it again.
…
About 4 years ago, some friends and I decided to venture down to the neighborhood rib house for some an all-you-can-eat rib spectacle.&#160; 
It’s taken us awhile (years really, some even had to leave the country) to recover, but this time we’ll be 29 co-workers strong.&#160; 
The [...]]]></description>
			<content:encoded><![CDATA[<p>Glenn, if you’re reading this, we’re doing it again.</p>
<p>…</p>
<p>About <a href="http://littlesquare.com/2005/08/17/how-many-ribs-are-safe-to-eat/">4 years ago</a>, some friends and I decided to venture down to the neighborhood rib house for some an <strong>all-you-can-eat rib</strong> spectacle.&#160; </p>
<p>It’s taken us awhile (<em>years really, some even had to leave the country</em>) to recover, but this time we’ll be <strong>29</strong> <a href="http://www.genologics.com">co-workers</a> strong.&#160; </p>
<p>The plan is to round everyone up and head to the saloon (<em>yes, bonus points again because the place has saloon in it’s name</em>) for a feast after work.&#160; Should be a night to remember, everyone has been encouraged to wear a white shirt and make a mess of it.&#160; </p>
<p>Food (<em>and drink</em>) is always a good bonding experience, so all-you-can-eat must be even better, right?</p>
<p>&#160;</p>
<p>I’ll post an update after the fact, should have some better pictures this time as well.&#160; If nothing else, ghetto iPhone photos will have to do us justice.&#160; </p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/littlesquare?a=cvnHvIWXGKQ:cbAm3d1YlHw:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/littlesquare?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/littlesquare?a=cvnHvIWXGKQ:cbAm3d1YlHw:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/littlesquare?i=cvnHvIWXGKQ:cbAm3d1YlHw:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/littlesquare?a=cvnHvIWXGKQ:cbAm3d1YlHw:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/littlesquare?d=7Q72WNTAKBA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/littlesquare/~4/cvnHvIWXGKQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://littlesquare.com/2009/02/17/ribs-ribs-ribs-ribs/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://littlesquare.com/2009/02/17/ribs-ribs-ribs-ribs/</feedburner:origLink></item>
	</channel>
</rss>
