<?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>Sun, 21 Jun 2009 03:06:17 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8</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" /><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>
		<item>
		<title>Great Article on David Kelly</title>
		<link>http://feedproxy.google.com/~r/littlesquare/~3/AEf3P4xwLYk/</link>
		<comments>http://littlesquare.com/2009/02/08/great-article-on-david-kelly/#comments</comments>
		<pubDate>Sun, 08 Feb 2009 19:53:39 +0000</pubDate>
		<dc:creator>ajordens</dc:creator>
				<category><![CDATA[General Discussions]]></category>

		<guid isPermaLink="false">http://littlesquare.com/2009/02/08/great-article-on-david-kelly/</guid>
		<description><![CDATA[There is a great article with David Kelley, the founder of Ideo, one of the most important design firms in the world, on the Fast Company site. The article touches a bit about Kelley’s life and his battle with cancer, but the article focuses on Kelley’s idea of “Design Thinking”. Designing experiences rather than objects. [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>There is a great article with David Kelley, the founder of <a href="http://ideo.com/">Ideo</a>, one of the most important design firms in the world, on the Fast Company site. The article touches a bit about Kelley’s life and his battle with cancer, but the article focuses on Kelley’s idea of “Design Thinking”. Designing experiences rather than objects. The read is really great and definitely inspires you to open your thought spectrum up a bit. (via <a href="http://surfstation.com/">surfstation</a>)</p>
</blockquote>
<p><font face="Trebuchet MS" color="#888888"></font>Check out the <a href="http://www.fastcompany.com/magazine/132/a-designer-takes-on-his-biggest-challenge-ever.html?page=0,4">article</a>.&#160; </p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/littlesquare?a=AEf3P4xwLYk:j5ymS2ig7gY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/littlesquare?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/littlesquare?a=AEf3P4xwLYk:j5ymS2ig7gY:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/littlesquare?i=AEf3P4xwLYk:j5ymS2ig7gY:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/littlesquare?a=AEf3P4xwLYk:j5ymS2ig7gY: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/AEf3P4xwLYk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://littlesquare.com/2009/02/08/great-article-on-david-kelly/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://littlesquare.com/2009/02/08/great-article-on-david-kelly/</feedburner:origLink></item>
		<item>
		<title>Windows Live Writer isn’t bad</title>
		<link>http://feedproxy.google.com/~r/littlesquare/~3/deOP7KfB0pg/</link>
		<comments>http://littlesquare.com/2008/12/29/windows-live-writer-isnt-bad/#comments</comments>
		<pubDate>Tue, 30 Dec 2008 04:02:35 +0000</pubDate>
		<dc:creator>ajordens</dc:creator>
				<category><![CDATA[citations]]></category>

		<guid isPermaLink="false">http://littlesquare.com/2008/12/29/windows-live-writer-isnt-bad/</guid>
		<description><![CDATA[Until recently, the bulk of my writing was done on a Mac using Ecto.&#160; 
I was looking for a suitable publishing tool for Windows and was directed towards Windows Live Writer.
Short answer, it’s nice.&#160; I’ve installed the 2009: Release Candidate and published to WordPress with no problems whatsoever.&#160; 
]]></description>
			<content:encoded><![CDATA[<p>Until recently, the bulk of my writing was done on a Mac using Ecto.&#160; </p>
<p>I was looking for a suitable publishing tool for Windows and was directed towards <a href="http://windowslivewriter.spaces.live.com/">Windows Live Writer</a>.</p>
<p>Short answer, it’s nice.&#160; I’ve installed the <strong>2009: Release Candidate</strong> and published to WordPress with no problems whatsoever.&#160; </p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/littlesquare?a=deOP7KfB0pg:8quYm7DpMM8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/littlesquare?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/littlesquare?a=deOP7KfB0pg:8quYm7DpMM8:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/littlesquare?i=deOP7KfB0pg:8quYm7DpMM8:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/littlesquare?a=deOP7KfB0pg:8quYm7DpMM8: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/deOP7KfB0pg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://littlesquare.com/2008/12/29/windows-live-writer-isnt-bad/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://littlesquare.com/2008/12/29/windows-live-writer-isnt-bad/</feedburner:origLink></item>
		<item>
		<title>Playing around with Rails again</title>
		<link>http://feedproxy.google.com/~r/littlesquare/~3/XgG1bh0dY2E/</link>
		<comments>http://littlesquare.com/2008/12/29/playing-around-with-rails-again/#comments</comments>
		<pubDate>Tue, 30 Dec 2008 03:55:00 +0000</pubDate>
		<dc:creator>ajordens</dc:creator>
				<category><![CDATA[General Discussions]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://littlesquare.com/2008/12/29/playing-around-with-rails-again/</guid>
		<description><![CDATA[I’ve been knee deep in the Java world for a long time doing a combination of desktop, backend J2EE (spring/hibernate) and most recently Seam-based web application development.
It’s the Christmas break and I’ve taken a bit of time to create an Ubuntu VM with Rails 2.2 installed in it.&#160; Rails has come a long ways since [...]]]></description>
			<content:encoded><![CDATA[<p>I’ve been knee deep in the Java world for a long time doing a combination of desktop, backend J2EE (spring/hibernate) and most recently Seam-based web application development.</p>
<p>It’s the Christmas break and I’ve taken a bit of time to create an Ubuntu VM with Rails 2.2 installed in it.&#160; Rails has come a long ways since I last was working (<em>playing is probably a more appropriate descriptor</em>) with it.&#160; I’ve got a couple ideas to perhaps flush out, but before that, I need to re-learn a few things and come back up to speed.</p>
<p>Installation was simple and straight forward enough, there are a number of decent guides for getting Ruby and Rails <a href="http://wiki.rubyonrails.org/rails/pages/RailsOnUbuntu">installed</a> in Ubuntu.&#160; Since I’m working in Ubuntu and not on my work MacBook Pro, there will be no TextMate for me.&#160; Fortunately, the guys from JetBrains have released early access versions of their new Ruby IDE <a href="http://www.jetbrains.com/ruby/index.html">RubyMine</a>.&#160; I’m a long time user of their Java IDE and if the Ruby equivalent is anywhere near as good, it’ll be a real winner.</p>
<p>RubyMine is nice in that it seems to largely delegate to the command-line Rails generators.&#160; No magic and if you spot an error (<em>it’s still beta software</em>), you can still execute the respective command-line tools and continue working.</p>
<p>&#160;</p>
<p>Don’t have much else to say, I hope everyone is enjoying their respective holiday seasons.&#160; </p>
<p>Happy New Year!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/littlesquare?a=XgG1bh0dY2E:r6XxM6Fksp8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/littlesquare?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/littlesquare?a=XgG1bh0dY2E:r6XxM6Fksp8:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/littlesquare?i=XgG1bh0dY2E:r6XxM6Fksp8:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/littlesquare?a=XgG1bh0dY2E:r6XxM6Fksp8: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/XgG1bh0dY2E" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://littlesquare.com/2008/12/29/playing-around-with-rails-again/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://littlesquare.com/2008/12/29/playing-around-with-rails-again/</feedburner:origLink></item>
		<item>
		<title>Lessons Learned as a Project Lead</title>
		<link>http://feedproxy.google.com/~r/littlesquare/~3/dlTGtGaeCw0/</link>
		<comments>http://littlesquare.com/2008/10/05/lessons-learned-as-a-project-lead/#comments</comments>
		<pubDate>Sun, 05 Oct 2008 21:01:04 +0000</pubDate>
		<dc:creator>ajordens</dc:creator>
				<category><![CDATA[General Discussions]]></category>

		<guid isPermaLink="false">http://littlesquare.com/2008/10/05/lessons-learned-as-a-project-lead/</guid>
		<description><![CDATA[It&#8217;s been a busy couple of months. For those that don&#8217;t know, my role has shifted slightly from being focused on the technical aspects of an existing product to leading a few seasoned developers in their efforts on an entirely new suite of products. It&#8217;s an interesting challenge to do green-field development again, particularly in [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been a busy couple of months. For those that don&#8217;t know, my role has shifted slightly from being focused on the technical aspects of an existing product to leading a few seasoned developers in their efforts on an entirely new suite of products. It&#8217;s an interesting challenge to do <em>green-field</em> development again, particularly in a different (<em>but complementary</em>) <a href="http://www.genologics.com/biorepository">domain</a>.</p>
<p>We are approaching the 6 week and it&#8217;s about time I reflect on what we&#8217;ve accomplished and tease out a handful of lessons learned.</p>
<p>I&#8217;ll be using the terms <em>iteration</em> and <em>sprint</em> more or less interchangeably in what follows.</p>
<p><strong>Lesson #1 : Be Agile</strong></p>
<p><em>Being agile</em> is a pretty generic goal these days. To be specific, we&#8217;ve found a lot of value in developing rhythm within the team; things like regularly sized iterations, scheduled kick offs, test days, retrospectives, etc.</p>
<p>Shorter iterations (<em>we&#8217;re doing 2 week</em>) have forced us to decompose tasks at a sufficiently granular level. Borrowing some thoughts from <a href="http://www.joelonsoftware.com/items/2007/10/26.html">Joel Spolsky</a>, we&#8217;ve set an upper bound of task size at 2 days to help drive the necessary design aspects. On the flip side, we generally don&#8217;t go smaller than .5 day estimates. Estimates are done as a team using <a href="http://www.planningpoker.com/">planning poker</a>. There are still surprises but we&#8217;re finding out about them after a day or two which makes the response that much easier to make.</p>
<p>Like any project, an iteration must have a well defined beginning and end. In our case, we spend a couple hours on the Monday morning doing the necessary breakdowns for the sprint. The sprint concludes with an all hands test day on the Friday (<em>2 weeks later</em>) with a quick planning meeting the afternoon before. Iteration retrospectives are held on either Friday or Monday as scheduling permits.</p>
<p>Focusing on having working software (<em>and being able to demo it</em>) at the end of an iteration is important. I&#8217;ll admit failure in this (<em>so far</em>) but we&#8217;re committed to regular iteration demos starting next week. In our case, the product manager has expressed an interesting in giving these demos which should help drive home the customer problems we&#8217;re addressing.</p>
<p>Test days are critical to the success of an iteration. In my opinion, you shouldn&#8217;t be coding features on the last day of an iteration<em>.</em> You should be testing. If you&#8217;ve been regularly testing throughout the iteration than you likely won&#8217;t need an entire day but the distinction is vital.</p>
<p>Resist the temptation to focus solely on feature development, fallout from test day needs to be included in the next iteration.</p>
<p>Lastly, it&#8217;s important to take time to reflect on the iteration. Grab a few beers and take the last hour of an iteration to discuss the good and bad with your team. Document the feedback and <strong>be prepared</strong> to incorporate it into the next iteration.</p>
<p><strong>Lesson #2 : Communication</strong></p>
<p>Nothing new here, a team must communicate in order to be successful. For us, we&#8217;ve found value in regular 15 minutes morning scrums to discuss current tasks and blockers. Even though we all sit together in the same <em>pod</em>, IM is a significant inter-team communication tool for us.</p>
<p>As the project lead, I&#8217;ve got regular weekly opportunities to share status with other project stakeholders. There are weekly meetings with requirements analysts to discuss two things.</p>
<ol>
<li>Acceptance criteria for a feature currently under development.</li>
<li>Sign-off for completed features.</li>
</ol>
<p>In week one of an iteration, we&#8217;re focused on specifying acceptance criteria for the features we will be implementing. In week two we&#8217;re getting sign-off for the features that we did complete. <em>Rinse and repeat</em>.</p>
<p>These meetings are quick (<em>1hr</em>) and should stay that way.</p>
<p><strong>Lesson #3: Adequate Tooling</strong></p>
<p>We work in an environment that has embraced the <a href="http://www.atlassian.com/">Atlassian</a> product suite (<em>JIRA, Confluence, FishEye, Crucible and Bamboo are all heavily used</em>).</p>
<p>It&#8217;s important to track the status of both an iteration and project. Stakeholders need this information regularly and you need to be able to provide it regularly (<em>with minimal effort to boot</em>).</p>
<p>There are a number of perfectly acceptable ways to track the status of a project, some manual and some electronic.</p>
<blockquote>
<p>Our typical approach to task management involves using physical cards<em>.</em> A team would do a breakdown and the outcome would be a series of task cards (<em>including an estimate</em>). The developer would be assigned 1..* cards and expended effort would be recorded directly on the card. When work was completed, test suggestions were written on the card and then handed off to QA.</p>
</blockquote>
<blockquote>
<p>The project lead would look at the stack of tasks and produce a burn down chart to share progress with stakeholders.</p>
</blockquote>
<p>I had a few problems with the manual nature of this process. There are three inputs to an iteration: bugs, user stories/tasks, and general to-do items. My pet peeve was in the general duplication of information. Bugs and general to-do items are already tracked in JIRA, and having to also track them on task cards seemed counter-intuitive. Not to mention the effort required to manually manage burn-down charts.</p>
<p>Fortunately for us, there is an extension (<a href="http://www.greenpeppersoftware.com/confluence/display/GH/Plugin">GreenHopper</a>) available for JIRA that essentially duplicates what we were previously doing manually. We&#8217;re now consistently tracking bugs, user stories/sub-tasks, and general purpose to-do&#8217;s. <em>GreenHopper</em> leverages existing JIRA functionality around time tracking and reporting to provide a series of planning and task-oriented views. Everything is interactive and moving a task from one iteration to another is a simple drag and drop operation. <em>GreenHopper</em> can generate burn-down charts for particular iterations and JIRA is able to track estimation accuracy (<em>amongst a slew of other things</em>).</p>
<p>To summarize, I&#8217;ve still got time to write code which equates to me being a pretty happy camper.</p>
<p><em>Process is important as much as it enables you to consistently move forward. Too little and you won&#8217;t know where you&#8217;re going, too much and you&#8217;ll never get there.</em></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/littlesquare?a=dlTGtGaeCw0:4N6mY-7E2-0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/littlesquare?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/littlesquare?a=dlTGtGaeCw0:4N6mY-7E2-0:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/littlesquare?i=dlTGtGaeCw0:4N6mY-7E2-0:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/littlesquare?a=dlTGtGaeCw0:4N6mY-7E2-0: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/dlTGtGaeCw0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://littlesquare.com/2008/10/05/lessons-learned-as-a-project-lead/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://littlesquare.com/2008/10/05/lessons-learned-as-a-project-lead/</feedburner:origLink></item>
	</channel>
</rss>
