<?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, 27 Jun 2010 04:32:46 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/littlesquare" /><feedburner:info uri="littlesquare" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Sanofi Aventis developing iPad Applications?</title>
		<link>http://feedproxy.google.com/~r/littlesquare/~3/qGyQBYoMZIc/</link>
		<comments>http://littlesquare.com/2010/06/sanofi-aventis-developing-ipad-applications/#comments</comments>
		<pubDate>Sun, 27 Jun 2010 02:46:49 +0000</pubDate>
		<dc:creator>ajordens</dc:creator>
				<category><![CDATA[General Discussions]]></category>

		<guid isPermaLink="false">http://www.littlesquare.com/?p=390</guid>
		<description><![CDATA[Was just glancing through the New and notable list of iPad applications and noticed GoMealsHD. Powered by the CalorieKing nutritional database, GoMeals allows you to search thousands of foods and dishes from popular restaurants, grocery stores and the items you have in your own kitchen to easily see the nutritional value (i.e. calories, carbohydrates, fats, [...]]]></description>
			<content:encoded><![CDATA[<p>Was just glancing through the <strong><em>New and notable</em></strong> list of iPad applications and noticed <strong><a href="http://ax.itunes.apple.com/ca/app/gomealshd/id377999508#">GoMealsHD</a></strong>.</p>
<blockquote><p>Powered by the CalorieKing nutritional database, GoMeals allows you to search thousands of foods and dishes from popular restaurants, grocery stores and the items you have in your own kitchen to easily see the nutritional value (i.e. calories, carbohydrates, fats, protein, etc.) of the foods you eat. You may also track your daily food intake by saving food items to your &quot;Today&#8217;s Plate&quot; on the application&#8217;s calendar. You can monitor each day&#8217;s caloric intake, as well as the distribution of carbs, fats, and proteins. If you&#8217;re going out to eat, use the restaurant locator to easily find restaurants nearby and browse their menu and the nutritional information for the menu items to help support the best choices for you. Everything you need to develop a more nutritious eating plan is in one easy application.</p>
</blockquote>
<p>It doesn’t look like it’s a particularly new app (<a href="http://www.prnewswire.com/news-releases/new-gomealstm-iphone-application-from-sanofi-aventis-us-to-help-people-with-diabetes-eat-healthy-anywhere-anytime-70456712.html">press release</a>) but it’s just now graced the New and notable list.&#160; Should likely receive a healthy bump in # of users.</p>
<p>&#160;</p>
<p>It may seem strange for a pharmaceutical giant like Sanofi to be developing iOS applications (<em>motivations?</em>), but it does look like an interesting health outreach project on the company’s part.&#160; </p>
<p>There’s even a twitter account for the application (<a href="http://twitter.com/gomeals">gomeals</a>).</p>
<p>&#160;</p>
<p>Here’s hoping they make special note of the so-called <em>death on a bun</em> <a href="http://leisureblogs.chicagotribune.com/thestew/2010/06/friendlys-ultimate-grilled-cheese-burger-melt.html">Ultimate Grilled Cheeseburger Melt</a> (<em>1500+ calories, ~100g fat and more sodium than you can shake a fist at</em>).</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/littlesquare?a=qGyQBYoMZIc:uKmBSND7NnE:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/littlesquare?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/littlesquare?a=qGyQBYoMZIc:uKmBSND7NnE:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/littlesquare?i=qGyQBYoMZIc:uKmBSND7NnE:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/littlesquare?a=qGyQBYoMZIc:uKmBSND7NnE: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/qGyQBYoMZIc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://littlesquare.com/2010/06/sanofi-aventis-developing-ipad-applications/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://littlesquare.com/2010/06/sanofi-aventis-developing-ipad-applications/</feedburner:origLink></item>
		<item>
		<title>Migrating a SVN Repository to GIT</title>
		<link>http://feedproxy.google.com/~r/littlesquare/~3/fkan305rlJY/</link>
		<comments>http://littlesquare.com/2010/06/migration-a-svn-repository-to-git/#comments</comments>
		<pubDate>Sun, 20 Jun 2010 21:19:23 +0000</pubDate>
		<dc:creator>ajordens</dc:creator>
				<category><![CDATA[General Discussions]]></category>
		<category><![CDATA[Open Source Software]]></category>

		<guid isPermaLink="false">http://www.littlesquare.com/?p=386</guid>
		<description><![CDATA[Yesterday I took on the task of migrating a remote SVN repository to GIT.&#160; I recently bought a small cloud server from Rackspace with the goal of amalgamating various services I had hosted previously at Webfaction. The SVN –&#62; GIT migration was simple and painless (thanks to Jon Maddox for the reference instructions).&#160; Importantly, all [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday I took on the task of migrating a remote SVN repository to GIT.&#160; </p>
<p>I recently bought a small cloud server from Rackspace with the goal of amalgamating various services I had hosted previously at Webfaction.</p>
<p>The SVN –&gt; GIT migration was simple and painless (thanks to <a href="http://www.jonmaddox.com/2008/03/05/cleanly-migrate-your-subversion-repository-to-a-git-repository/">Jon Maddox</a> for the reference instructions).&#160; Importantly, all the commit history from Subversion was maintained.</p>
<p>&#160;</p>
<p>Create a new <em>git</em> user:</p>
<blockquote><p><font color="#444444" face="Verdana">adduser git</font></p>
</blockquote>
<p>&#160;</p>
<p>As the <em>git</em> user</p>
<blockquote><p><font color="#444444" face="Verdana">mkdir repos</font></p>
<p><font color="#444444" face="Verdana">cd repos</font></p>
<p><font color="#444444" face="Verdana">mkdir trunk_tmp</font></p>
<p><font color="#444444" face="Verdana">cd trunk_tmp</font></p>
<p><font color="#444444" face="Verdana">git-svn init <a href="http://x.y.z/svn/trunk">http://x.y.z/svn/trunk</a> –no-metadata</font></p>
<p><font color="#444444" face="Verdana">git config svn.authorsfile ~/repos/users.txt</font></p>
<p><font color="#444444" face="Verdana">git-svn fetch</font></p>
<p>&#160;</p>
</blockquote>
<p>The <em>users.txt </em>should contain a mapping of svn to git users in the following format:</p>
<blockquote><p><font color="#444444" face="Verdana">svnusername = My Full Name &lt;my email address&gt;</font></p>
</blockquote>
<p>&#160;</p>
<p>After the <em>git-svn fetch</em> operation has completed (it will download all revisions from subversion and may take a while), do the following: </p>
<blockquote><p><font color="#444444" face="Verdana">git clone trunk_tmp trunk</font></p>
<p><font color="#444444" face="Verdana">rm –rf trunk_tmp</font></p>
</blockquote>
<p><em></em></p>
<p><em>~git/repos/trunk</em> is the new home of your GIT repository.</p>
<p>&#160;</p>
<p>To access it remotely (<em>over ssh</em>):</p>
<blockquote><p><font color="#444444" face="Verdana">git clone ssh://git@&lt;host&gt;/~git/repos/trunk</font></p>
</blockquote>
<p>&#160;</p>
<p>Simple as that.&#160; I’m the only one using the repository so tunnelling it over a single user account is satisfactory.&#160; I’d recommend setting up ssh private/public keys to make authentication more seamless.</p>
<p>&#160;</p>
<p><strong>Resource</strong></p>
<ul>
<li><a href="http://git.or.cz/course/svn.html">http://git.or.cz/course/svn.html</a> – Provides a reasonable mapping of SVN –&gt; GIT commands. </li>
<li><a href="http://www.jonmaddox.com/2008/03/05/cleanly-migrate-your-subversion-repository-to-a-git-repository/">http://www.jonmaddox.com/2008/03/05/cleanly-migrate-your-subversion-repository-to-a-git-repository/</a> – More detailed instructions on the repository migration. </li>
</ul>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/littlesquare?a=fkan305rlJY:fbMCSbcM0wQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/littlesquare?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/littlesquare?a=fkan305rlJY:fbMCSbcM0wQ:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/littlesquare?i=fkan305rlJY:fbMCSbcM0wQ:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/littlesquare?a=fkan305rlJY:fbMCSbcM0wQ: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/fkan305rlJY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://littlesquare.com/2010/06/migration-a-svn-repository-to-git/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://littlesquare.com/2010/06/migration-a-svn-repository-to-git/</feedburner:origLink></item>
		<item>
		<title>Upgrading to Hibernate Search 3.2.0 (w/ Seam)</title>
		<link>http://feedproxy.google.com/~r/littlesquare/~3/sQq-ArKMdis/</link>
		<comments>http://littlesquare.com/2010/05/upgrading-to-hibernate-search-3-2-0-w-seam/#comments</comments>
		<pubDate>Tue, 01 Jun 2010 03:08:47 +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/2010/05/31/upgrading-to-hibernate-search-3-2-0-w-seam/</guid>
		<description><![CDATA[A couple weeks back I set out to upgrade the version of Hibernate Search that one of our applications was using. The boys at JBoss had recently released Hibernate Search 3.2.0 and it looked pretty sweet. The possibility of performance improvements around indexing was enough to make me upgrade. Unfortunately, like most software frameworks, Hibernate [...]]]></description>
			<content:encoded><![CDATA[<p>A couple weeks back I set out to upgrade the version of Hibernate Search that one of our applications was using.   </p>
<p>The boys at JBoss had recently <a href="http://in.relation.to/Bloggers/HibernateSearch32ReleasedMappingMassIndexingClustering">released</a> Hibernate Search 3.2.0 and it looked pretty sweet. The possibility of performance improvements around indexing was enough to make me upgrade.</p>
<p>Unfortunately, like most software frameworks, Hibernate Search introduced/forced some new dependencies on us. We had previously been using Seam 2.2.0 and Hibernate 3.3.0 (<em>both JPA1</em>), neither of which were compatible with Hibernate Search 3.2.0.</p>
<p>We&#8217;re using Maven, so I&#8217;ll quickly outline the dependency changes I had to make (<em>all dependences are available via the </em><a href="http://relation.to/Bloggers/JBossMavenRepositoryChanges"><em>JBoss Nexus Repository</em></a>):</p>
<blockquote><p><font size="2" face="Verdana">&lt;dependency&gt;       <br />&#160;&#160;&#160; &lt;groupId&gt;javax.persistence&lt;/groupId&gt;        <br />&#160;&#160;&#160; &lt;artifactId&gt;persistence-api&lt;/artifactId&gt;        <br />&#160;&#160;&#160; &lt;!&#8211; bit of a hack to make sure we aren&#8217;t transitively pulling in the persistence api (should be referencing hibernate-jpa-2.0-api now) –-&gt;        <br />&#160;&#160;&#160; &lt;version&gt;explicitly-fail&lt;/version&gt;        <br />&lt;/dependency&gt;</font></p>
</blockquote>
<p>javax.persistence:persistence-api is the JPA1 API and is no longer relevant and should never be included as a dependency. The <em>explicitly-fail</em> version will trigger a build failure if it ever manages to sneak in.</p>
<blockquote><p><font size="2" face="Verdana">&lt;dependency&gt;       <br /> &lt;groupId&gt;org.hibernate.javax.persistence&lt;/groupId&gt;        <br /> &lt;artifactId&gt;hibernate-jpa-2.0-api&lt;/artifactId&gt;        <br /> &lt;version&gt;1.0.0.Final&lt;/version&gt;        <br />&lt;/dependency&gt;</font>      </p>
</blockquote>
<p>org.hibernate.javax.persistence:hibernate-jpa-2.0-api is the new JPA2 API published by Hibernate.&#160; </p>
<p>All previous hibernate dependencies had to be upgraded to <strong>3.5.2.Final</strong>, and Hibernate Search bumped up to<strong> 3.2.0.Final</strong>.</p>
<p>If you&#8217;re using Seam, you&#8217;ll also need to upgrade it to <strong>2.2.1.CR1</strong>.&#160; Note that this is not yet a final release but is necessary in order to support JPA2.</p>
<p>Unfortunately, Seam <strong>2.2.1.CR1</strong> lacks a complete Hibernate Search integration.&#160; I could no longer able properly inject a FullTextEntityManager (<em>via @In</em>).</p>
<p>Instead I was forced to obtain a FullTextSession programmatically:</p>
<blockquote><p><font face="Verdana">private FullTextSession getFullTextSession()       <br />{        <br />&#160;&#160;&#160; Session session = (Session) entityManager.getDelegate();        <br />&#160;&#160;&#160; return Search.getFullTextSession&#160; (session.getSessionFactory().getCurrentSession());        <br />}</font></p>
</blockquote>
<p>Seam also enhanced it&#8217;s EntityManager so that it now returns a JDK proxy when getDelegate() is called.&#160; </p>
<p>That would be fine and dandy, but unfortunately the proxy does not implement org.hibernate.classic.Session, as required by the FullTextSession in Hibernate Search.&#160; </p>
<p>Session.getSessionFactory().getCurrentSession() will return an org.hibernate.classic.Session and does allow you to move forward.&#160; </p>
<p>A bit annoying and hopefully something that will get corrected in the near future.&#160; I’m hoping that either Hibernate Search will be upgraded to not require a classic session, or Seam will provide an EntityManager delegate implementing the classic session interface. Better yet, Seam should just provide a fully supported integration with Hibernate Search 3.2.0.   </p>
<p>Honestly, that was about it as far as the upgrade went.&#160; We were able to index using either the new MassIndexer API or the old suggested best practice from Hibernate Search 3.1.&#160; </p>
<p>It&#8217;s interesting to note that on my test system, the MassIndexer API was slower than the previous indexing code. The documentation does cover many different tuning possibilities so it’s entirely possible the situation could be improved.</p>
<p>Also, the MassIndexer API runs in a series of transactions and unless your timeout is set sufficiently high (<em>ie. higher than the default JBoss 5 minutes</em>), you will see transaction timeouts. </p>
<p>I didn&#8217;t attempt to work around this and opt&#8217;d to stick with existing indexing code that already runs in a separate Seam @Asynchronous method (<em>thus avoiding timeouts</em>).</p>
<p>Somewhat less than ideal, but if you&#8217;re keen on running Hibernate Search 3.2.0 w/ Seam in JBoss 4.2.3, it <strong>is possible<em> </em></strong>and not too much work.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/littlesquare?a=sQq-ArKMdis:6oC3aYfDSBk:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/littlesquare?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/littlesquare?a=sQq-ArKMdis:6oC3aYfDSBk:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/littlesquare?i=sQq-ArKMdis:6oC3aYfDSBk:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/littlesquare?a=sQq-ArKMdis:6oC3aYfDSBk: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/sQq-ArKMdis" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://littlesquare.com/2010/05/upgrading-to-hibernate-search-3-2-0-w-seam/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://littlesquare.com/2010/05/upgrading-to-hibernate-search-3-2-0-w-seam/</feedburner:origLink></item>
		<item>
		<title>A tale of two computers : the iPad vs. Netbook</title>
		<link>http://feedproxy.google.com/~r/littlesquare/~3/8uSa-Yrb0sc/</link>
		<comments>http://littlesquare.com/2010/05/a-tale-of-two-computers-the-ipad-vs-netbook/#comments</comments>
		<pubDate>Sun, 16 May 2010 16:43:13 +0000</pubDate>
		<dc:creator>ajordens</dc:creator>
				<category><![CDATA[General Discussions]]></category>

		<guid isPermaLink="false">http://littlesquare.com/2010/05/16/a-tale-of-two-computers-the-ipad-vs-netbook/</guid>
		<description><![CDATA[A couple weeks back I made a trip down to Seattle in search of an iPad. BestBuy was a complete bust, they get ~10 units in per week and quickly sell out. If you really want one, you&#8217;re going to have to visit an actual Apple store. That same weekend, I also picked up a [...]]]></description>
			<content:encoded><![CDATA[<p>A couple weeks back I made a trip down to Seattle in search of an iPad. BestBuy was a complete bust, they get ~10 units in per week and quickly sell out. If you really want one, you&#8217;re going to have to visit an actual Apple store.</p>
<p>That same weekend, I also picked up a Netbook for the girlfriend. It was a much easier buying experience, they&#8217;re everywhere. We ended up picking up an Acer from Costco for $499.</p>
<p>First things first, the iPad is not a laptop replacement IMO. It&#8217;s certainly sexy and crowd pleasing, but if you&#8217;re looking for a communication device in the sense of sending emails, video conferencing, etc., you&#8217;re better off with a Netbook (MacBook Air included). The virtual keyboard is passable, but not terribly suited to significant correspondence. Plan on grabbing the Apple bluetooth keyboard if you&#8217;re looking to publish content via the iPad. Lastly, if you&#8217;re the attention seeking type sporting a permanently popped collar, the iPad is a surefire crowd attractor. &nbsp;&nbsp;</p>
<p>On the flip-side, if you&#8217;re looking for a new content consumption device (twitter, google reader, books, etc.) it really is your ticket to ride. I&#8217;ve been running a little test over the past couple weeks where I&#8217;ve restricted Twitter and RSS usage to the iPad. It&#8217;s completely anecdotal, but it seems much easier to keep up to date on the iPad versus say using Tweetie or Google Reader on the MBP.</p>
<p>The Flash argument is a non-starter for me, 99% of the sites I access on a regular basis are fine. Once FailBlog converts over to HTML5, I&#8217;ll be set.</p>
<p>Furthermore, just being able to sit on the couch or lay in bed and not end up with a <b>3rd degree burn</b>, makes the iPad worth the price of admission.</p>
<p><i>As I type this, the girlfriend is happily skyping with friends and tagging faces in Picasa. Being able to do both at the same time is an obviously technological and patentable marvel!</i></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/littlesquare?a=8uSa-Yrb0sc:nwZaJy8s2Tc:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/littlesquare?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/littlesquare?a=8uSa-Yrb0sc:nwZaJy8s2Tc:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/littlesquare?i=8uSa-Yrb0sc:nwZaJy8s2Tc:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/littlesquare?a=8uSa-Yrb0sc:nwZaJy8s2Tc: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/8uSa-Yrb0sc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://littlesquare.com/2010/05/a-tale-of-two-computers-the-ipad-vs-netbook/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://littlesquare.com/2010/05/a-tale-of-two-computers-the-ipad-vs-netbook/</feedburner:origLink></item>
		<item>
		<title>We’re Hiring</title>
		<link>http://feedproxy.google.com/~r/littlesquare/~3/97Y40NnXDzc/</link>
		<comments>http://littlesquare.com/2010/04/were-hiring/#comments</comments>
		<pubDate>Thu, 29 Apr 2010 02:40:52 +0000</pubDate>
		<dc:creator>ajordens</dc:creator>
				<category><![CDATA[General Discussions]]></category>
		<category><![CDATA[genologics hiring recruitment]]></category>

		<guid isPermaLink="false">http://littlesquare.com/2010/04/28/were-hiring/</guid>
		<description><![CDATA[We’re looking for a few talented developers to join our ranks. GenoLogics is a leading provider of lab informatics solutions for translational research, with solutions crossing the clinical and discovery domains. GenoLogics focuses on providing best-in-class informatics solutions for genomics/next generation sequencing, proteomics, and biorepositories. Traditionally we’re a strong Java / Groovy shop, so if [...]]]></description>
			<content:encoded><![CDATA[<p>We’re looking for a few talented developers to join our ranks.</p>
<blockquote><p>GenoLogics is a leading provider of lab informatics solutions for translational research, with solutions crossing the clinical and discovery domains. GenoLogics focuses on providing best-in-class informatics solutions for genomics/next generation sequencing, proteomics, and biorepositories.</p>
</blockquote>
<p>Traditionally we’re a strong Java / Groovy shop, so if the thought of living and working in lovely <strong>Victoria, British Columbia </strong>appeals to you. Let’s get in touch.</p>
<p>Relocation costs would likely be discussed if you’re an out of towner (<em>Seattle, Calgary, etc.</em>)</p>
<p>You can reach me at: <strong>adam.jordens</strong><strong> –</strong>at- <strong>genologics –</strong>dot- <strong>com</strong></p>
<p>More information on the jobs themselves can be found <a href="http://www.genologics.com/company/current-opportunities">here</a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/littlesquare?a=97Y40NnXDzc:Yrb5MvXT0Ns:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/littlesquare?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/littlesquare?a=97Y40NnXDzc:Yrb5MvXT0Ns:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/littlesquare?i=97Y40NnXDzc:Yrb5MvXT0Ns:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/littlesquare?a=97Y40NnXDzc:Yrb5MvXT0Ns: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/97Y40NnXDzc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://littlesquare.com/2010/04/were-hiring/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://littlesquare.com/2010/04/were-hiring/</feedburner:origLink></item>
		<item>
		<title>Developers should have the fastest hardware you can buy</title>
		<link>http://feedproxy.google.com/~r/littlesquare/~3/6RqqkI8rFgI/</link>
		<comments>http://littlesquare.com/2010/03/developers-should-have-the-fastest-hardware-you-can-buy/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 04:01:06 +0000</pubDate>
		<dc:creator>ajordens</dc:creator>
				<category><![CDATA[General Discussions]]></category>
		<category><![CDATA[hardware]]></category>

		<guid isPermaLink="false">http://littlesquare.com/2010/03/04/developers-should-have-the-fastest-hardware-you-can-buy/</guid>
		<description><![CDATA[I was fortunate enough to recently have my 3 year old MacBook Pro retired from service. A new and much faster one has appeared in its place. Old Laptop (2.333ghz, 5400rpm HD, 3GB DDR2) mvn clean install - 8-10 minutes depending on system load mvn clean install -DskipTests - 4-5 minutes depending on system load [...]]]></description>
			<content:encoded><![CDATA[<p>I was fortunate enough to recently have my 3 year old MacBook Pro retired from service. A new and <i>much faster</i> one has appeared in its place.</p>
<p><b>Old Laptop</b> (<i>2.333ghz, 5400rpm HD, 3GB DDR2</i>)</p>
<p><i>mvn clean install -</i> 8-10 minutes depending on system load</p>
<p><i>mvn clean install -DskipTests -</i> 4-5 minutes depending on system load</p>
<p><i>JBoss startup -</i> 70-90 seconds depending on system load</p>
<p><i>IntelliJ Responsiveness</i> &#8211; Slow</p>
<p><b><br /></b></p>
<p><b>New Laptop</b> (<i>2.8ghz, 128GB SSD, 4GB DDR3</i>)</p>
<p><i>mvn clean install -</i> 3 &#8211; 4 minutes</p>
<p><i>mvn clean install -DskipTests -</i> 70 seconds</p>
<p><i>JBoss startup -</i> 32 seconds</p>
<p><i>IntelliJ Responsiveness</i> &#8211; Blazing Fast</p>
<p>Night and day difference. I haven&#8217;t counted yet, but on average, I would anticipate doing probably between 8 and 12 build + deploys a day. A realistic estimate would put my daily build time savings around <b>30 minutes</b>. And that&#8217;s discounting the morale and efficiency boost coming from not having to context switch every time the machine bogs down because something is running in the background.</p>
<p>I&#8217;m a developer and speed geek. I&#8217;m that guy who grew up with the 300A Celeron overclocked to 450mhz. I&#8217;m greatly annoyed with inefficiencies and constantly find myself tweaking aliases, just to get that 5 step build process down to one.</p>
<p><b><br /></b></p>
<p><b>Fuzzy Math</b></p>
<p>Assuming a pie in the sky daily wage of <b>$300</b> (<i>to make the numbers easier</i>), a <b>30 minute savings per day</b> equates to <b>$18.75</b>. Multiply that by <b>250 days</b> worked in a typical year (<i>2000 hrs</i>) and you&#8217;re looking at a theoretical productivity gain of over <b>$4500</b>.</p>
<p>I would argue that regardless of how efficient you think your programmers are today, you will <strong>always <span style="font-weight: normal;">see positive benefits from ensuring they always have access to decent hardware and build environments.</span></strong></p>
<p>Now take this new laptop. It cost under <b>$3000</b> (<i>apple premium</i>). If laptops aren&#8217;t your thing, a desktop can be had probably half.</p>
<p>If you cannot justify spending $3000 per developer every 1.5years, at least consider upgrading core components. I don&#8217;t have numbers, but I&#8217;m guessing that a significant portion of the improvements I&#8217;m seeing were a result of the SSD.</p>
<p>Either way, if you value the time of your programmers, I don&#8217;t see how you can lose.</p>
<p><i>Time is money, and efficient programmers == happy programmers.</i></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/littlesquare?a=6RqqkI8rFgI:B5DzZgSyWwE:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/littlesquare?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/littlesquare?a=6RqqkI8rFgI:B5DzZgSyWwE:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/littlesquare?i=6RqqkI8rFgI:B5DzZgSyWwE:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/littlesquare?a=6RqqkI8rFgI:B5DzZgSyWwE: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/6RqqkI8rFgI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://littlesquare.com/2010/03/developers-should-have-the-fastest-hardware-you-can-buy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://littlesquare.com/2010/03/developers-should-have-the-fastest-hardware-you-can-buy/</feedburner:origLink></item>
		<item>
		<title>Having fun and writing good software</title>
		<link>http://feedproxy.google.com/~r/littlesquare/~3/Sj4qZXp3-7E/</link>
		<comments>http://littlesquare.com/2010/03/having-fun-and-writing-good-software/#comments</comments>
		<pubDate>Tue, 02 Mar 2010 07:56:52 +0000</pubDate>
		<dc:creator>ajordens</dc:creator>
				<category><![CDATA[General Discussions]]></category>

		<guid isPermaLink="false">http://littlesquare.com/2010/03/01/having-fun-and-writing-good-software/</guid>
		<description><![CDATA[The act of writing good software is as much process execution as it is source code generation. Follow the right process and it can be a tremendously enjoyable experience. There&#8217;s nothing I like better than to come home from a day in the office and marvel at the amount of work accomplished (easily measured as [...]]]></description>
			<content:encoded><![CDATA[<p>The act of writing good software is as much process execution as it is source code generation. Follow the right process and it can be a tremendously enjoyable experience.</p>
<p>There&#8217;s nothing I like better than to come home from a day in the office and marvel at the amount of work accomplished (<i>easily measured as tasks completed, bugs squashed, etc.</i>). See that burn down chart trending downwards can bring a tear to a man&#8217;s eye!</p>
<p>Working hard is not what burns me out, it&#8217;s the soul sucking meetings and status updates along the way.</p>
<p>As a working example, I&#8217;m going to outline the high level processes, tools and techniques that my team and I regularly follow during our quest to develop good software and get it into the hands of our customers.</p>
<p>First, I&#8217;ll quickly outline the various tools that are used to make our collective lives much easier.</p>
<p><b>Tools</b></p>
<p>We are huge believers in the entire Atlassian stack. We started out with JIRA five or six years ago, and our tool box has expanded to include Confluence, Fisheye, Crucible, Bamboo and most recently GreenHopper.</p>
<p>If you&#8217;re a development shop (<i>of any size really</i>) looking for a kick ass suite of tools, look no further than what Atlassian has to offer.</p>
<p>For the purpose of this post, I&#8217;m going to focus on JIRA/GreenHopper, Crucible and Bamboo.</p>
<p>JIRA is a typical bug tracking software, <a href="http://www.atlassian.com/software/greenhopper/">GreenHopper</a> is a set of agile extensions that allow you to easily manage and prioritize User Stories, Tasks, Bugs, etc., visualize burn downs, and manage sprints/releases on a per-project basis.</p>
<p>Every single piece of work we work on is estimated and tracked in GreenHopper. Burn downs are generated automatically and actively monitored. Prior to GreenHopper, we were manually tracking cards on a whiteboard and generating burn downs through Excel. <b>Very cumbersome</b>. I don&#8217;t even want to remind anyone of what happens when someone knocks all the cards off your whiteboard.</p>
<p><a href="http://www.atlassian.com/software/crucible/">Crucible</a> is essentially online code reviews done right. Simply point it a repository (<i>subversion in our case</i>) and you can completely manage the peer review process through a web browser. Prior to moving to the online review process, we were doing over the shoulder reviews prior to check-in. This required someone to drop whatever it was they were doing, and head over to your desk for 15-20 minutes. With Crucible, code is committed first and reviews setup immediately after. You can easily track what code has been reviewed and what hasn&#8217;t.</p>
<p><a href="http://www.atlassian.com/software/bamboo/">Bamboo</a> is the last piece of our puzzle and manages all of our continuous integration builds. We have a series of builds that are either run per check-in or nightly. Performance reports are generated and published to a Maven site nightly.</p>
<p><b>Process</b></p>
<p>For the past two years we&#8217;ve been developing software in effectively two week chunks with a release every month.</p>
<p>Each two week iteration starts on a <b>Wednesday</b> and consists of the following:</p>
<ul>
<li>A 1hr kick-off and retrospective meeting</li>
<li>Daily 10 minute scrums with members of Development and QA.</li>
<li>A 1hr sync. session with Product Management every Thursday to quickly review progress and have any outstanding questions answered.</li>
<li>An all hands on deck 2hr test session every second Thursday. This includes members of Development, QA and Product Management.</li>
<li>A 15 minute show &amp; tell every second Tuesday (<i>last day of the iteration</i>) with members of Development, QA, Product Management and Technical Writing.</li>
</ul>
<p>Ignoring the scrums, that amounts to &lt; 5hrs of meetings an iteration. Sounds simple right?</p>
<p>All of our kick-off meetings involve a review of our backlog and upcoming iteration. The backlog is a JIRA version that theoretically contains all the user stories, tasks, bugs, and anything that we could possibly work on. It&#8217;s prioritization is a collective effort by both Development and Product Management. Items in the backlog may or may not be estimated, and each 2 week iteration includes roughly 1-1.5 weeks of estimated work per developer. This 1-1.5 dev weeks / iteration / developer is essentially our velocity and can be adjusted to account for risk and granularity of tasks being worked on.</p>
<p>Once tasks are pulled into an iteration, they must be (re)estimated (<i>typical</i> <i>granularity is 1-3 days</i>). Design is a considered a critical task and it&#8217;s not uncommon to see dedicated design and review tasks in our iterations.</p>
<p>At the end of each iteration we run a retrospective. This gives us an opportunity to review velocity from the previous two weeks, as well as identify things that we did well as a team and things we would like to improve upon. We identify 2-3 items from the list to focus on for the next iteration.</p>
<p>Every morning we kick off the day with a quick 10 minute scrum. This scrum provides each member of the team with an opportunity to highlight what they&#8217;ve worked on in the last day and identify any blockers to the group. Depending on whether or not everyone is in the office, we may choose to run this in-person or via Jabber/XMPP.</p>
<p>Once a week we take an opportunity to sit down with Product Management and review our backlog. We&#8217;ll take a stab at estimating the highest priority items and may even move them into a coming iteration / release. We typically only plan an iteration or two into the future.</p>
<p>Finally, to end of an iteration we have an all hands on deck test day on the last Thursday. This involves all members of development, our QA representative, and at least one person from Product Management. We prepare our test cases ahead of time and take over a board room for 2 hours. It&#8217;s important to get everyone in the same room in order to make efficient use of time. Questions must be answered quickly, and it&#8217;s important to have representation from both Development and Products.</p>
<p>Throughout an iteration we will do frequent deployments for other people in the organization to play with. With only one technical writer for the whole company, it&#8217;s been a difficult haul to keep user facing documentation up to date with each release. In addition to documenting the expected and actual behaviours as part of User Stories, we&#8217;ve started doing quick 20 minute show &amp; tells on the last day of an iteration. This gives the technical writer and product management one last opportunity to review features before the iteration is closed and the release goes out the door.</p>
<p>Assuming everything goes to plan, we close everything down on a Tuesday and prepare ourselves to start fresh on the Wednesday. It&#8217;s important to note that we purposely start and end our iterations mid-week. We found the stress level to be significantly higher when we attempted to rush for a Friday completion date.</p>
<p>That&#8217;s it in a nutshell. We&#8217;ve been following this basic process for the last year or so with a decent amount of success. Of course nothing is perfect and we&#8217;ve made minor modifications as necessary.</p>
<p>I&#8217;d be interested to hear what others are doing for a lightweight agile process and what forms of tooling they&#8217;ve incorporated.</p>
<p>Cheers!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/littlesquare?a=Sj4qZXp3-7E:6PmN90FFfyE:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/littlesquare?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/littlesquare?a=Sj4qZXp3-7E:6PmN90FFfyE:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/littlesquare?i=Sj4qZXp3-7E:6PmN90FFfyE:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/littlesquare?a=Sj4qZXp3-7E:6PmN90FFfyE: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/Sj4qZXp3-7E" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://littlesquare.com/2010/03/having-fun-and-writing-good-software/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://littlesquare.com/2010/03/having-fun-and-writing-good-software/</feedburner:origLink></item>
		<item>
		<title>When Good is Enough (and when it isn’t)</title>
		<link>http://feedproxy.google.com/~r/littlesquare/~3/-om9nC6RlmA/</link>
		<comments>http://littlesquare.com/2009/12/when-good-is-enough-and-when-it-isnt/#comments</comments>
		<pubDate>Wed, 02 Dec 2009 05:30:06 +0000</pubDate>
		<dc:creator>ajordens</dc:creator>
				<category><![CDATA[General Discussions]]></category>

		<guid isPermaLink="false">http://littlesquare.com/2009/12/01/when-good-is-enough-and-when-it-isnt/</guid>
		<description><![CDATA[It’s a constant debate that we fight on a daily basis, is the work we’ve completed good enough, or is important enough to spend an extra half day or day(s) perfecting. Often times we’re forced to make sacrifices, but when is it the right time to push back or accept defeat? Obviously what follows here [...]]]></description>
			<content:encoded><![CDATA[<p>It’s a constant debate that we fight on a daily basis, is the work we’ve completed good enough, or is important enough to spend an extra half day or day(s) perfecting.</p>
<p>Often times we’re forced to make sacrifices, but when is it the right time to push back or accept defeat?</p>
<p>Obviously what follows here are my own opinions but I’m a firm believer that a well executed plan only 80% complete, is worth leaps and bounds more than a flawed plan 100% complete. </p>
<p>&#160;</p>
<p>A few questions I commonly ask myself:</p>
<ul>
<li><em><u>Is what I’m working on tied to a software release</u>.&#160; </em>We release on a month basis in two 2 week iterations.&#160; I know that if I want to make it into a release, I need to have it done sufficiently ahead of time in order to ensure adequate testing.&#160; <strong>This may mean cutting scope.&#160; </strong>Cutting scope is fine IMO, just do so in a way that you avoid silly shortcuts that create headaches for yourself when you inevitably have to come back and add functionality. </li>
<li><em><u>Who is the consumer</u></em>. Is it a paying customer (<em>ie. they have already paid)</em>? Is it for a demo? Is it for another developer? If its a customer, what are they actually trying to accomplish? Often times, we get caught up in our own expectations of how something should look or behave, and lose sight of what the customer is actually trying to do.&#160; If the customer is currently using pen &amp; paper to track something, a simple (<em>ugly?) </em>web form may be perfectly acceptable. <strong>Don’t overcomplify. </strong>With good feedback, you can always come back and do a better job. Focus on the present, don’t get distracted on what you <strong>*might*</strong> need to do in the future. </li>
<li><em><u>How often is the functionality used</u>. </em>If the feature or function being worked on is used by a handful of backend administrators, you may not need to go over the top on day one.&#160; If they come back and tell you that they absolutely cannot use the system without A, B or C.&#160; Make sure you understand what A, B and C are and get cracking.&#160; <strong>Quick turnaround built loyalty and trust.&#160; You need both as early in the customer relationship as possible.&#160; </strong>If the feature is public facing and used by a large percentage of the audience, by all means, perfect it. </li>
<li><em><u>Do I need to modify the database</u></em>. From a technical perspective, this has always been a killer.&#160; Make a flub manipulating the database, and you’ll cause yourself countless hours of time trying to correct customer datasets. <strong>Get representational datasets, migrate them automatically and test test test!</strong>&#160; Speaking from experience, do not cut corners testing or working with your database migrations. </li>
<li><em><u>Have I been burnt in this area before</u></em>. Maybe the work you’re doing is in direct response to a filed bug.&#160; Either way, if you’re working a particularly risky area of the codebase, it’s worth going that extra step to ensure you’ve got solid code coverage (<em>unit, regression, selenium tests, etc.</em>).&#160; <strong>Fool me once… Fool me twice…</strong> </li>
</ul>
<p>&#160;</p>
<p>There are plenty more, but in general, I err on the side of trying to get releases out the door.&#160; If we spend 20 calendar days in a release (4 work weeks), <strong>up to 6</strong> of those will be spent either performing non-automated regression tests (<em>don’t worry, we have automated tests as well</em>) or fixing post code-complete deficiencies.&#160; </p>
<p>Test cases are a given.&#160; If you’re working Java or any other programming language with tooling like JUnit or TestNG, I really see no excuse not to use it.&#160; If nothing else, it’s a good safety net if you ever need to refactor a particular area of the code base.&#160; </p>
<p>&#160;</p>
<p>If I had to pick a guiding principle, it would be:&#160; <strong><em>Get it in, Make it right, Make it fast.</em></strong>&#160; </p>
<p><em><strong></strong></em></p>
<p><em><strong>Get it in </strong>because you need the feedback.</em></p>
<p><em><strong>Make it right </strong>because that’s what we’re paid to do and stakeholders expect it.</em></p>
<p><em><strong>Make it fast </strong>because it’s no fun staying up until 2:00am trying to debug performance problems on a customers live system.</em></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/littlesquare?a=-om9nC6RlmA:2TTARS00w_k:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/littlesquare?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/littlesquare?a=-om9nC6RlmA:2TTARS00w_k:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/littlesquare?i=-om9nC6RlmA:2TTARS00w_k:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/littlesquare?a=-om9nC6RlmA:2TTARS00w_k: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/-om9nC6RlmA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://littlesquare.com/2009/12/when-good-is-enough-and-when-it-isnt/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://littlesquare.com/2009/12/when-good-is-enough-and-when-it-isnt/</feedburner:origLink></item>
		<item>
		<title>Using Interfaces with JAXB</title>
		<link>http://feedproxy.google.com/~r/littlesquare/~3/12FNB2YdqrA/</link>
		<comments>http://littlesquare.com/2009/11/using-interfaces-with-jaxb/#comments</comments>
		<pubDate>Thu, 26 Nov 2009 02:38:23 +0000</pubDate>
		<dc:creator>ajordens</dc:creator>
				<category><![CDATA[General Discussions]]></category>

		<guid isPermaLink="false">http://littlesquare.com/2009/11/25/using-interfaces-with-jaxb/</guid>
		<description><![CDATA[I set about the other day to use JAXB-annotated classes to generate some JSON as part of some web services work. The trivial case worked. @XmlRootElement public class ExtMessage { &#160;&#160;&#160; private String owner; &#160;&#160;&#160; @XmlElement &#160;&#160;&#160; private ExtConcreteBody body; } What I set about doing next caused some immediate grief.&#160; My intention for ‘body’ [...]]]></description>
			<content:encoded><![CDATA[<p>I set about the other day to use JAXB-annotated classes to generate some JSON as part of some web services work.</p>
<p>The trivial case worked.</p>
<blockquote><p>@XmlRootElement     <br />public class ExtMessage      <br />{      <br />&#160;&#160;&#160; private String owner; </p>
<p>&#160;&#160;&#160; @XmlElement     <br />&#160;&#160;&#160; private ExtConcreteBody body; </p>
<p>}</p>
</blockquote>
<p>What I set about doing next caused some immediate grief.&#160; My intention for ‘body’ is to actually be one of many JSON entities. First attempt was to introduce a JSONBody interface and use that instead of ExtConcreteBody.</p>
<blockquote><p>@XmlRootElement     <br />public class ExtMessage      <br />{      <br />&#160;&#160;&#160; private String owner; </p>
<p>&#160;&#160;&#160; @XmlElement     <br />&#160;&#160;&#160; private JSONBody body; </p>
<p>}</p>
</blockquote>
<p>Of course that didn’t work.&#160; At marshalling time, the JAXB provider complained about not supporting interfaces.</p>
<p>A quick search on Google said I wasn’t the only person who had run into this problem before.&#160; </p>
<p>Best resource I found was the <a href="https://jaxb.dev.java.net/guide/Mapping_interfaces.html">JAXB User Guide</a>.&#160; Seems to have some funny rendering and be slightly out of date, but it led me down the correct path.</p>
<p>Essentially you need to make use of an <strong>XmlJavaTypeAdapter</strong>.&#160; JAXB ships a default one (AnyTypeAdapter) that will generate a ‘<font face="cour">type=&quot;xs:anyType&quot;</font>’ in your xml schema.&#160; If you want specific type support, you can implement your own Adapter.&#160; </p>
<p>After adding the class-level @XmlJavaTypeAdapter(AnyTypeAdapter.class) to JSONBody, I thought I had it licked.</p>
<p>Then the JAXB provider complained that “Marshalling Error: class [...] nor any of its super class is known to this context”.</p>
<p><strong>WTF?</strong></p>
<p>Fortunately that led me to a comment on a random blog post on <a href="http://syrupsucker.blogspot.com/2008/10/collections-and-jax-rs.html">Collections and JAX-RS</a> mentioning that you should use an @XmlSeeAlso(…) if you want to avoid that error.</p>
<p>Finally it works.</p>
<blockquote><p>@XmlRootElement</p>
<p>@<strong>XmlSeeAlso</strong>(ExtConcreteBody.class)      <br />public class ExtMessage      <br />{      <br />&#160;&#160;&#160; private String owner; </p>
<p>&#160;&#160;&#160; @XmlElement     <br />&#160;&#160;&#160; private JSONBody body; </p>
<p>}</p>
<p>@<strong>XmlJavaTypeAdapter</strong>(AnyTypeAdapter.class)      <br />public interface JSONBody      <br />{      <br />}</p>
<p>@XmlRootElement     <br />public class ExtConreteBody implements JSONBody       <br />{      <br />&#160;&#160;&#160; private int id;</p>
<p>}</p>
</blockquote>
<p>The JSON looked like:</p>
<blockquote><p>{&quot;extMessage&quot;:{&quot;body&quot;:{&quot;@type&quot;:&quot;extConcreateBody&quot;,&quot;id&quot;:&quot;0&quot;},&quot;owner&quot;:&quot;dummy.user&quot;}}</p>
</blockquote>
<p>Which seemed reasonable to me.</p>
<p>Hopefully this helps anyone else out there that is having grief trying to do the same thing!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/littlesquare?a=12FNB2YdqrA:Q_lT5rCh5bk:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/littlesquare?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/littlesquare?a=12FNB2YdqrA:Q_lT5rCh5bk:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/littlesquare?i=12FNB2YdqrA:Q_lT5rCh5bk:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/littlesquare?a=12FNB2YdqrA:Q_lT5rCh5bk: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/12FNB2YdqrA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://littlesquare.com/2009/11/using-interfaces-with-jaxb/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://littlesquare.com/2009/11/using-interfaces-with-jaxb/</feedburner:origLink></item>
		<item>
		<title>You’re a big company, now act like a little one.</title>
		<link>http://feedproxy.google.com/~r/littlesquare/~3/Ue5X6QGLhlc/</link>
		<comments>http://littlesquare.com/2009/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 [...]]]></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=Ue5X6QGLhlc:1-yO6b1oz7c:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/littlesquare?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/littlesquare?a=Ue5X6QGLhlc:1-yO6b1oz7c:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/littlesquare?i=Ue5X6QGLhlc:1-yO6b1oz7c:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/littlesquare?a=Ue5X6QGLhlc:1-yO6b1oz7c: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/Ue5X6QGLhlc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://littlesquare.com/2009/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/youre-a-big-company-now-act-like-a-little-one/</feedburner:origLink></item>
	</channel>
</rss>
