<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>let x=x &#187; programming</title>
	<atom:link href="http://www.crazymcphee.net/x/category/tech/programming-tech/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.crazymcphee.net/x</link>
	<description>programming idiom and methodology</description>
	<lastBuildDate>Fri, 27 Jan 2012 09:36:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>The Frustrated Architect</title>
		<link>http://www.crazymcphee.net/x/2011/11/16/the-frustrated-architect/</link>
		<comments>http://www.crazymcphee.net/x/2011/11/16/the-frustrated-architect/#comments</comments>
		<pubDate>Wed, 16 Nov 2011 11:48:34 +0000</pubDate>
		<dc:creator>Scot Mcphee</dc:creator>
				<category><![CDATA[architecture]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[agile architecture]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[craftsmanship]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[emergent design]]></category>
		<category><![CDATA[methodology]]></category>

		<guid isPermaLink="false">http://www.crazymcphee.net/x/?p=701</guid>
		<description><![CDATA[An interesting set of slides by Simon Brown from a talk he gave about the role of the architect. A PDF is attached to the linked post or you can view the slides online. Wish I had heard the talk (see below). The Frustrated Architect: Software architecture plays a pivotal role in the delivery of [...]]]></description>
			<content:encoded><![CDATA[<p>An interesting set of slides by Simon Brown from a talk he gave about the role of the architect. A PDF is attached to the linked post or you can view the slides online. <strike>Wish I had heard the talk</strike> (see below).</p>
<p><a href="http://www.codingthearchitecture.com/presentations/skillsmatter2011-the-frustrated-architect/">The Frustrated Architect</a>:</p>
<blockquote><p>Software architecture plays a pivotal role in the delivery of successful software yet it&#8217;s frustratingly neglected by many teams. Whether performed by one person or shared amongst the team, the architecture role exists on even the most agile of teams yet the balance of up front and evolutionary thinking often reflects aspiration rather than reality.</p></blockquote>
<p>(Via <a href="http://www.codingthearchitecture.com/">coding the architecture</a>.)</p>
<p><strong>Update</strong> &#8211; if you go to <a href="http://skillsmatter.com/podcast/java-jee/frustrated-architect">this page</a> you can get a video of the presentation; it&#8217;s about an hour long. A word of warning: I couldn&#8217;t make the video play on the site with Chrome, I had to use Safari.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.crazymcphee.net/x/2011/11/16/the-frustrated-architect/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>case &#8220;String&#8221; : still FAIL</title>
		<link>http://www.crazymcphee.net/x/2011/11/08/case-string-still-fail/</link>
		<comments>http://www.crazymcphee.net/x/2011/11/08/case-string-still-fail/#comments</comments>
		<pubDate>Mon, 07 Nov 2011 22:18:41 +0000</pubDate>
		<dc:creator>Scot Mcphee</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[oo]]></category>

		<guid isPermaLink="false">http://www.crazymcphee.net/x/?p=693</guid>
		<description><![CDATA[You know, just because Java is going to gain a switch statement that works on java.util.String still doesn&#8217;t make it right. It&#8217;s still a code smell for an OO design fail. Although the diamond syntax and lambdas are way overdue (see article). Java is not the new COBOL &#124; Craig Tataryn&#8217;s .plan: A switch statement [...]]]></description>
			<content:encoded><![CDATA[<p>You know, just because Java is going to gain a switch statement that works on java.util.String still doesn&#8217;t make it <em>right</em>. It&#8217;s still a code smell for an OO design fail. Although the <em>diamond syntax</em> and <em>lambdas</em> are way overdue (see article).</p>
<p><a href="http://tataryn.net/2011/11/java-is-not-the-new-cobol/">Java is not the new COBOL | Craig Tataryn&#8217;s .plan</a>:</p>
<blockquote><p>A switch statement that I’ll actually use<br />
Yes, finally my Java brethren we have a switch statement that actually works on Strings!</p>
<pre>
switch (lang) {
   case "Java" :
      out.println("I like frameworks!");
      break;
   case "Ruby" :
      out.println("I like Pabst Blue Ribbon!");
      break;
   case "PHP" :
      out.println("I like WordPress!");
      break;
}
</pre>
<p>My God this has been a long time coming.
</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.crazymcphee.net/x/2011/11/08/case-string-still-fail/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>blog link: world–</title>
		<link>http://www.crazymcphee.net/x/2011/10/14/blog-link-world%e2%80%93/</link>
		<comments>http://www.crazymcphee.net/x/2011/10/14/blog-link-world%e2%80%93/#comments</comments>
		<pubDate>Fri, 14 Oct 2011 09:28:34 +0000</pubDate>
		<dc:creator>Scot Mcphee</dc:creator>
				<category><![CDATA[business]]></category>
		<category><![CDATA[infrastructure and frameworks]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[technical]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[craftsmanship]]></category>
		<category><![CDATA[unix]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.crazymcphee.net/x/2011/10/14/blog-link-world%e2%80%93/</guid>
		<description><![CDATA[world– by Robert Merkel at Larvatus Prodeo. Published October 14, 2011 at 09:02AM The technology world has just lost another giant, though one without the towering public persona of Steve Jobs. If you’re not actually a programmer, you’ve probably never heard of Dennis Ritchie. But the vast majority of software you use was built using [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://larvatusprodeo.net/2011/10/14/world/">world–</a> by Robert Merkel at <a href="http://larvatusprodeo.net">Larvatus Prodeo</a>. Published October 14, 2011 at 09:02AM</p>
<blockquote><p>The technology world has just lost another giant, though one without the towering public persona of Steve Jobs.</p>
<p>If you’re not actually a programmer, you’ve probably never heard of <a href="http://www.washingtonpost.com/blogs/blogpost/post/dennis-ritchie-father-of-c-programming-language-and-unix-dies-at-70/2011/10/13/gIQADGNbhL_blog.html">Dennis Ritchie</a>. But the vast majority of software you use was built using a tool that he originally designed, and the rest by tools that very liberally sample from his.</p>
<p>The “native language” that the central processor in a computer understands is an ornery beast. For one thing, back in the 1970s every two-bit computer company (if you’ll pardon the techy pun) had its own native language; these days, there still remain two very common ones, and dozens of less common examples out there. More importantly, it’s almost incomprehensible, even to most programmers. Take this little snippet, part of the preliminaries to a very simple program that just prints the message “hello, world” to the screen:</p>
<pre>_start:
        mov    eax, 4
        mov    ebx, 1
        mov    ecx, str
        mov    edx, str_len
        int    80h</pre>
<p>Writing long and complicated bits of software with such unhelpful notation is extremely slow and error-prone.</p>
<p>“High-level” languages, that allowed the logic of software to be expressed in more compact and readable notation, had existed since the 1950s; <a href="http://en.wikipedia.org/wiki/Grace_Hopper">Grace Hopper</a> was responsible for one of the first. Over time, more and more of the scientific and business software run on the large computers of the era was written in FORTRAN, COBOL, and other high-level langages. However, the “operating systems”, the software plumbing that joined those applications to the hardware, was invariably written in the machine language of specific systems.</p>
<p>In the late 1960s, Ritchie, working with Ken Thompson at Bell Laboratories, hacked together their own little operating system for an obsolete computer nobody was making use of. It was small, but it worked, and was one of the first practical systems to support “timesharing” – the ability for multiple users to run multiple programs simultaneously and interactively. Fairly early on, they had another brainwave; they would rewrite as much of the system – which became known as Unix – as possible in a high-level programming language, to speed development. But first, they needed a suitable high-level language. The resulting language, an evolution of earlier languages entitled BCPL and B, was called “C”.</p>
<p>Both C and Unix were raging successes, partly because of their inherent strengths. The use of C allowed Unix to be “ported” to many different computer systems, a process that continues today as its spiritual successor Linux, written in C, runs on everything from IBM mainframes (and the amphormous “Googleplex” of Google’s servers which, reportedly, draw 240 megawatts of power), to virtually every smartphone on the planet (the iPhone’s operating system is not Linux, but it is also a derivation of Unix and substantial parts are written in C). They also had the good fortune, as with the Internet and World Wide Web which owes so much to both, that they gradually escaped the crush of intellectual property law to become part of the intellectual commons of the field.</p>
<p>Almost as important was the elegance and economy that Ritchie, along with Brian Kernighan, brought to teaching the language. Their textbook <a href="http://en.wikipedia.org/wiki/The_C_Programming_Language">The C Programming Language</a> remains the best programming language textbook ever written, in my view, and the one that I still strongly recommend to my students.</p>
<p>Much of the Windows operating system, and Mac OS X, are implemented in C. Those parts that aren’t, are implemented in computer languages directly derived from it – C++ and Objective-C. Most of the software that runs on those systems is also written in C or its successor languages. And perhaps the most pervasive “new” high-level language of the last 20 years – Java – retains so much of C’s “look and feel” that it often takes a second glance to tell which language a piece of code is written in.</p>
<p>Neither C nor Unix were by any means perfect. While some of its design faults have been eliminated in its successors others remain, and will likely continue to bamboozle neophyte (and, all too often, experienced) programmers, for generations to come. But there was so much he and his colleagues got right. Fate did play its part, but there are very good reasons that generations of software developers not yet born will express themselves in notations largely based on Ritchie’s.</p>
<p>RIP, dmr.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.crazymcphee.net/x/2011/10/14/blog-link-world%e2%80%93/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dennis Ritchie: The Shoulders Steve Jobs Stood On &#124; Wired Enterprise &#124; Wired.com</title>
		<link>http://www.crazymcphee.net/x/2011/10/14/dennis-ritchie-the-shoulders-steve-jobs-stood-on-wired-enterprise-wired-com/</link>
		<comments>http://www.crazymcphee.net/x/2011/10/14/dennis-ritchie-the-shoulders-steve-jobs-stood-on-wired-enterprise-wired-com/#comments</comments>
		<pubDate>Fri, 14 Oct 2011 09:28:02 +0000</pubDate>
		<dc:creator>Scot Mcphee</dc:creator>
				<category><![CDATA[infrastructure and frameworks]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[unix]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.crazymcphee.net/x/?p=662</guid>
		<description><![CDATA[“Jobs’ genius is that he builds these products that people really like to use because he has taste and can build things that people really find compelling. Ritchie built things that technologists were able to use to build core infrastructure that people don’t necessarily see much anymore, but they use everyday.” via Dennis Ritchie: The [...]]]></description>
			<content:encoded><![CDATA[<p>“Jobs’ genius is that he builds these products that people really like to use because he has taste and can build things that people really find compelling. Ritchie built things that technologists were able to use to build core infrastructure that people don’t necessarily see much anymore, but they use everyday.”</p>
<p>via <a href="http://www.wired.com/wiredenterprise/2011/10/thedennisritchieeffect">Dennis Ritchie: The Shoulders Steve Jobs Stood On | Wired Enterprise | Wired.com</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.crazymcphee.net/x/2011/10/14/dennis-ritchie-the-shoulders-steve-jobs-stood-on-wired-enterprise-wired-com/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Spring, JPA/JTA, and multiple persistence units, with view transactions</title>
		<link>http://www.crazymcphee.net/x/2011/10/13/spring-jpajta-and-multiple-persistence-units-with-view-transactions/</link>
		<comments>http://www.crazymcphee.net/x/2011/10/13/spring-jpajta-and-multiple-persistence-units-with-view-transactions/#comments</comments>
		<pubDate>Thu, 13 Oct 2011 13:31:32 +0000</pubDate>
		<dc:creator>Scot Mcphee</dc:creator>
				<category><![CDATA[architecture]]></category>
		<category><![CDATA[infrastructure and frameworks]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[technical]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[glassfish]]></category>
		<category><![CDATA[hibernate]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jpa]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[persistence]]></category>
		<category><![CDATA[spring]]></category>

		<guid isPermaLink="false">http://www.crazymcphee.net/x/?p=655</guid>
		<description><![CDATA[I have grappled with this topic before. Tonight, after 13 hours of struggle, I finally got my web app perfected in this regard. It all started when I needed to start the Transaction out in the view, i.e. as soon as the resource is opened on the HTTP side (rather than when the database service [...]]]></description>
			<content:encoded><![CDATA[<p>I have <a href="http://www.crazymcphee.net/x/2011/02/16/come-back-gavin-king-all-is-forgiven-spring-is-the-new-ejb-2-1/">grappled with this topic</a> before. Tonight, after 13 hours of struggle, I finally got my web app perfected in this regard.</p>
<p>It all started when I needed to start the Transaction out in the view, i.e. as soon as the resource is opened on the HTTP side (rather than when the database service layer is called). I&#8217;m using JPA for a number of reasons;</p>
<ol>
<li>I need to access multiple databases each with a different schema (this means different connections)</li>
<li>They need to have XA transactions.</li>
<li>I&#8217;d like the transactions managed by the container (JTA).</li>
</ol>
<p>JPA provides all these things easily without all the complex Hibernate.xbm.xml mapping files and what-have-you.</p>
<p>The trick to starting the transaction with the web session is to use spring&#8217;s <span class="Apple-style-span" style="font-family: Consolas, Monaco, monospace; font-size: 12px; line-height: 18px; white-space: pre;">OpenEntityManagerInViewFilter</span>. Unfortunately I was using  <span class="Apple-style-span" style="font-family: Consolas, Monaco, monospace; font-size: 12px; line-height: 18px; white-space: pre;">PersistenceAnnotationBeanPostProcessor</span> to manage my multiple persistence units. The filter wants to know what <span class="Apple-style-span" style="font-family: Consolas, Monaco, monospace; font-size: 12px; line-height: 18px; white-space: pre;">EntityManagerFactory </span>it should bind to, and fair enough. But with my minimal configuration, there was no addressable EntityManagerFactory!</p>
<p>The solution was to stop the <span class="Apple-style-span" style="font-family: Consolas, Monaco, monospace; font-size: 12px; line-height: 18px; white-space: pre;">PersistenceAnnotationBeanPostProcessor <span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px; white-space: normal;">from doing the JNDI look ups and bind each PersistenceUnit into the Spring context with a manual JNDI lookup;</span></span></p>
<pre>  &lt;tx:annotation-driven /&gt;
  &lt;tx:jta-transaction-manager /&gt;

  &lt;bean id="pabpp" 
   class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" /&gt;</pre>
<pre>
  &lt;jee:jndi-lookup id="onePU" jndi-name="persistence/onePU" /&gt;
  &lt;jee:jndi-lookup id="twoPU" jndi-name="persistence/twoPU" /&gt;
  &lt;jee:jndi-lookup id="threePU" jndi-name="persistence/threePU" /&gt;</pre>
<p>then, in the web.xml the ViewFilter could be bound explicitly to the required persistence unit, in this case &#8220;onePU&#8221;. A fuller explanation can be found on my spring source forum post here; <a href="http://forum.springsource.org/showthread.php?115844-OpenEntityManagerInViewFilter-with-JPA-PersistenceAnnotationBeanPostProcessor">http://forum.springsource.org/showthread.php?115844-OpenEntityManagerInViewFilter-with-JPA-PersistenceAnnotationBeanPostProcessor</a></p>
<p>Overall, this is now quite an elegant solution.</p>
<p><strong>UPDATE</strong>. More documentation of the solution and the various configurations at the Spring forum here: <a href="http://forum.springsource.org/showthread.php?115587-Example-for-using-two-databases-w-Spring-amp-JTA-transaction-manager&amp;p=383432#post383432">http://forum.springsource.org/showthread.php?115587-Example-for-using-two-databases-w-Spring-amp-JTA-transaction-manager&amp;p=383432#post383432</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.crazymcphee.net/x/2011/10/13/spring-jpajta-and-multiple-persistence-units-with-view-transactions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A terrible, terrible Eclipse bug</title>
		<link>http://www.crazymcphee.net/x/2011/03/10/a-terrible-terrible-eclipse-bug/</link>
		<comments>http://www.crazymcphee.net/x/2011/03/10/a-terrible-terrible-eclipse-bug/#comments</comments>
		<pubDate>Thu, 10 Mar 2011 00:55:19 +0000</pubDate>
		<dc:creator>Scot Mcphee</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[rants]]></category>
		<category><![CDATA[technical]]></category>
		<category><![CDATA[tools and techniques]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[craftsmanship]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[poorly attempted humour]]></category>
		<category><![CDATA[refactor]]></category>
		<category><![CDATA[test driven design]]></category>
		<category><![CDATA[wizards considered harmful]]></category>

		<guid isPermaLink="false">http://www.crazymcphee.net/x/?p=610</guid>
		<description><![CDATA[I found a massive bug in Eclipse &#8211; it has a copy and paste function. In Eclipse&#8217;s defence, Intellij IDEA and Netbeans also exhibit identical broken functionality.]]></description>
			<content:encoded><![CDATA[<p>I found a massive bug in Eclipse &#8211; <em>it has a copy and paste function</em>.</p>
<p>In Eclipse&#8217;s defence, <em>Intellij IDEA</em> and <em>Netbeans</em> also exhibit identical broken functionality.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.crazymcphee.net/x/2011/03/10/a-terrible-terrible-eclipse-bug/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Come back Gavin King, all is forgiven (Spring is the new EJB 2.1)</title>
		<link>http://www.crazymcphee.net/x/2011/02/16/come-back-gavin-king-all-is-forgiven-spring-is-the-new-ejb-2-1/</link>
		<comments>http://www.crazymcphee.net/x/2011/02/16/come-back-gavin-king-all-is-forgiven-spring-is-the-new-ejb-2-1/#comments</comments>
		<pubDate>Wed, 16 Feb 2011 12:38:47 +0000</pubDate>
		<dc:creator>Scot Mcphee</dc:creator>
				<category><![CDATA[infrastructure and frameworks]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[rants]]></category>
		<category><![CDATA[tools and techniques]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[hibernate]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jpa]]></category>
		<category><![CDATA[persistence]]></category>
		<category><![CDATA[poorly attempted humour]]></category>
		<category><![CDATA[spring]]></category>

		<guid isPermaLink="false">http://www.crazymcphee.net/x/?p=600</guid>
		<description><![CDATA[I&#8217;ve just spent the past two days trying to make Spring transaction management work with JPA-annotated Hibernate-backed persistence classes that need to have multiple persistence units with transaction propagation REQUIRES_NEW between the two. For a start, the documentation is merely a series of outlines of brief hints. One measly section.The laughably short Spring 3 doco [...]]]></description>
			<content:encoded><![CDATA[<p><!-- p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Arial} p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Arial; min-height: 17.0px} -->I&#8217;ve just spent the past <em>two days </em>trying to make Spring transaction management work with JPA-annotated Hibernate-backed persistence classes that need to have multiple persistence units with transaction propagation REQUIRES_NEW between the two.</p>
<p>For a start, the documentation is merely a series of outlines of brief hints. One measly section.The laughably short Spring 3 doco section 13.5.1.4 &#8220;Dealing with multiple persistence units&#8221; conveniently omits  the transaction manager configuration from the example. The problem appears to be that the JPA transaction manager only (and compulsorily) deals with <em>one</em> entity manager factory. And an entity manager factory only deals with <em>one</em> persistence unit. So therefore you have to have <em>two</em> JPA transaction managers. Which means the two persistence unit transactions won&#8217;t co-operate properly even though they may share the underlying datasource and are configured through the single persistence unit manager bean.</p>
<p>The above scenario is totally trivial in an EJB 3 container backed with Hibernate, or Eclipselink, as the provider. About one-quarter of the configuration. If I have to use a JTA transaction manager obtained by JNDI lookup from the container, to run a transaction across two JPA persistence units which share the same underlying datasource, why the hell am I using Spring in the first place?</p>
<p>All I wanted was to isolate one set of db transactions from another, use JPA persistence units so the two sets of tables could live easily in two different schemas, and use the annotations to kill the fragile AOP regex-like-but-not-like-regex class and method pattern-matching jiggery pokery from the Spring configuration.</p>
<p>My god, this is such a stonkingly non-trivial forest of horrible configuration and a trial and error morass of filthy swamp miasma &#8230; an equivalent EJB3 backed by Hibernate JPA set up is, by comparison, an almost effortless task. I can produce a unit-tested all singing all dancing multiple persistence unit JPA app running in an EJB 3 container with XA datasources using Hibernate as the JPA implementation in almost no time at all. Getting the same thing with Spring (oh, and running some tests with Jetty inside Maven) is like having all your teeth pulled while you&#8217;re coming down from a three day methamphetamine binge. Getting Spring to run with multiple JPA persistence units on the same JDBC connection (without XA, across the same database connection) with a transaction propagation of REQUIRES_NEW on the entry point of one of the units is a hair-pulling, beard-greying, head-desk banging, co-worker punching, drunken ranting, blood-pressure raising experience of pure horror. Which apparently doesn&#8217;t end.</p>
<p><!-- p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Arial; min-height: 17.0px} p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Arial} -->Die, Spring, die. Can&#8217;t come soon enough as far as I am concerned. It&#8217;s more evil than Oracle. At least you <em>know</em> with Oracle you&#8217;re in for an un-lubed hard and fast backdoor job from Ellison with no reach-around before you even unpack the box. Spring is like a beautiful young sexy soft-porn film that turns into some relentlessly horrific succubus-filled horror film half way through.</p>
<p>Seriously, its enough to make one pine for bloody Weblogic. Spring is the new EJB 2.1.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.crazymcphee.net/x/2011/02/16/come-back-gavin-king-all-is-forgiven-spring-is-the-new-ejb-2-1/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>REST and SOA and Agile and Waterfall</title>
		<link>http://www.crazymcphee.net/x/2010/12/21/rest-and-soa-and-agile-and-waterfall/</link>
		<comments>http://www.crazymcphee.net/x/2010/12/21/rest-and-soa-and-agile-and-waterfall/#comments</comments>
		<pubDate>Tue, 21 Dec 2010 08:26:07 +0000</pubDate>
		<dc:creator>Scot Mcphee</dc:creator>
				<category><![CDATA[architecture]]></category>
		<category><![CDATA[business]]></category>
		<category><![CDATA[infrastructure and frameworks]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[tools and techniques]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[craftsmanship]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[methodology]]></category>
		<category><![CDATA[profession]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[soa]]></category>

		<guid isPermaLink="false">http://www.crazymcphee.net/x/?p=595</guid>
		<description><![CDATA[Recently I&#8217;ve been working on two projects. They are an exercise in contrasts. First the technologies and the development methodologies. So the first company uses a very Waterfall process and the integration platform is SOA. We&#8217;ve managed to build, in the middle of this, a small and focussed Java component that uses JMS in and [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I&#8217;ve been working on two projects. They are an exercise in contrasts.</p>
<p>First the technologies and the development methodologies.</p>
<p>So the first company uses a very Waterfall process and the integration platform is SOA. We&#8217;ve managed to build, in the middle of this, a small and focussed Java component that uses JMS in and out to avoid building horrible <em>horrible</em> BPEL or BPMN etc. But at either end, there&#8217;s some SOA bits to manage the integration with the &#8220;legacy&#8221;. So we&#8217;ve got this great bit of software, does amazing things, delivers real value to the business, which they want to put into production asap, but at every turn we&#8217;re hampered by the organisation or the technology platform. Its not so much the technology platform but the waterfall process the company has put around it. I&#8217;ve been told an internal wiki article detailing all the JMS  configuration is not  acceptable and the detail had to be in a Word document attached to an email requesting a not-production server configuration change. Word documents attached to emails are apparently far more &#8220;controllable&#8221; than a wiki with strong authentication protocols and history details in this world-view. Naturally I cut and pasted my wiki configuration detail into a Word document, spent a morning formatting it, and even added a link to the wiki before attaching it to an email. Acceptable process; configuration delivered. SOA and waterfall go together to make software development hell.</p>
<p>The second project has its many issues but one thing it does not have (for the components I have designed at least) is any SOA. It is all REST all the way down. There are multiple server-side-only components that all communicate to each other with REST over HTTP. Some of the data passed between servers is (or soon will be) JSON. The user interface is about to be delivered in two parts &#8211; one through actual REST-inspired web page requests to get the HTML and the other, via JQuery running on the web pages to actual JSON over REST services. These services will also call the REST services on the other components of the system (no database at the UI level). In fact many of the same JSON documents will be used to communicate from server to server as from ui to server. We are using Jersey for the REST. The process is Agile. The organisation hasn&#8217;t delivered such a large project with Agile before, and while I&#8217;ve been away on the other project there&#8217;s been some loss of focus. But despite some critical moments we had last week there&#8217;s been a renewed commitment to improving the engineering and project processes to achieve high velocity and good success. Its not perfect but it feels like the senior managers want the agile process to succeed. So, REST and Agile go together to make developer success.</p>
<p>Now, to the organisations. See if you can match the organisational description to the project style.</p>
<p>One of these two projects is a really fascinating piece of software in the transport industry (I can&#8217;t say more than that) which is integrating a number of &#8220;old&#8221; software solutions and creating some really sexy new features that the customer wants and loves. It is across what Eric Evans calls the &#8220;core domain&#8221; of the business. Not only is it a relatively short piece of work, but it will deliver high value to the business. It also enables a bunch of even higher value business services in the future. Things that directly expand their capabilities they can offer to their customers (which will be many of my readers) and do other related sexy things core to the business. The business salivate over it. It buffs their shine. They want it.</p>
<p>The other project is a little less flashy. The product is a rather niche product but it&#8217;s purpose is around the environmental effects of carbon emissions so at it&#8217;s core is the mission &#8220;save the planet from CO2&#8243; &#8212; a pretty high value mission you&#8217;d think. However the actual functions of the software product are fairly mundane &#8211; based around helping large organisations capture and control data about their carbon emissions, because many of them have been required now to report these numbers to government agencies for a number of years. It has customers, all of then big companies or government agencies, and all the future prospects are similar sorts of organisations.</p>
<p>Which one is which? Which one uses REST/Agile, and which one is the SOA/Waterfall project? Do you think you can guess?</p>
<p>Would you be surprised if I said that the &#8220;sexy&#8221; transport project is the first one (SOA/Waterfall) and the second one is the REST/Agile project?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.crazymcphee.net/x/2010/12/21/rest-and-soa-and-agile-and-waterfall/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Stuff that is just plain wrong, part 1,893,567</title>
		<link>http://www.crazymcphee.net/x/2010/11/05/stuff-that-is-just-plain-wrong-part-1893567/</link>
		<comments>http://www.crazymcphee.net/x/2010/11/05/stuff-that-is-just-plain-wrong-part-1893567/#comments</comments>
		<pubDate>Thu, 04 Nov 2010 23:04:19 +0000</pubDate>
		<dc:creator>Scot Mcphee</dc:creator>
				<category><![CDATA[infrastructure and frameworks]]></category>
		<category><![CDATA[rants]]></category>
		<category><![CDATA[tools and techniques]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jms]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[poorly attempted humour]]></category>
		<category><![CDATA[weblogic]]></category>

		<guid isPermaLink="false">http://www.crazymcphee.net/x/?p=591</guid>
		<description><![CDATA[Weblogic&#8217;s a big, vendor-supported, application server right? And it has advanced clustering features, right? So you&#8217;d think it&#8217;s clustered JMS implementation is one of the best in the business &#8212; after all large enterprise systems often require high capacity and reliable clustered messaging, right? And Weblogic is offered as a solution to those sorts of [...]]]></description>
			<content:encoded><![CDATA[<p>Weblogic&#8217;s a big, vendor-supported, application server right? And it has <em>advanced</em> clustering features, right? So you&#8217;d think it&#8217;s clustered JMS implementation is one of the best in the business &#8212; after all large enterprise systems often require high capacity and reliable clustered messaging, right? And Weblogic is offered as a solution to those sorts of problems with all it&#8217;s additional high-priced enterprise-grade products that run on it, right?</p>
<p>Well, <em>nope</em>.</p>
<p><em>Especially</em> nope if you hope to use clustered broadcast messaging (i.e. Topics)  to multiple connected clustered application receivers. Unless you cope with multiple versions of the same message in your application code.</p>
<p>Funny thing is, they <em>already</em> have this product that can do clustered broadcast messaging well proper, it&#8217;s called Coherence. But if you need the JMS API, not so suitable. However they could use this product to underpin their crappy 10 year old clustered JMS implementation in Weblogic. Do you think they will do that? Anyone want to open a book on it?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.crazymcphee.net/x/2010/11/05/stuff-that-is-just-plain-wrong-part-1893567/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mechanical Pencil Lust redux</title>
		<link>http://www.crazymcphee.net/x/2010/11/04/mechanical-pencil-lust-redux/</link>
		<comments>http://www.crazymcphee.net/x/2010/11/04/mechanical-pencil-lust-redux/#comments</comments>
		<pubDate>Thu, 04 Nov 2010 13:03:04 +0000</pubDate>
		<dc:creator>Scot Mcphee</dc:creator>
				<category><![CDATA[tools and techniques]]></category>
		<category><![CDATA[mechanical pencils]]></category>
		<category><![CDATA[stationery]]></category>

		<guid isPermaLink="false">http://www.crazymcphee.net/x/?p=586</guid>
		<description><![CDATA[Now my University research project is on the final straight, and I&#8217;ll have a new one starting sometime next year, I thought it time to have a look at some new mechanical pencils. Well, actually, I thought I had lost my previous favorite pencil, the Faber-Castell TK Fine Vario L 0.5mm. However I found it [...]]]></description>
			<content:encoded><![CDATA[<p>Now my University research project is on the final straight, and I&#8217;ll have a new one starting sometime next year, I thought it time to have a look at some new mechanical pencils. Well, actually, I thought I had lost my previous favorite pencil, the <a href="http://www.cultpens.com/acatalog/Faber-Castell_TK_Fine_Vario_Pencil.html">Faber-Castell TK Fine Vario L 0.5mm</a>. However I found it in a bag I had used yesterday to lug a book and my notepad to lunch. Undeterred, I thought it time to check out some new models including one I had previously lusted after before.</p>
<p>The original post is here - <a href="http://www.crazymcphee.net/x/2009/02/13/mechanical-pencil-lust/">http://www.crazymcphee.net/x/2009/02/13/mechanical-pencil-lust/</a></p>
<p>The Pentel graph gear was my original favorite, I gave the Faber-Castell 2011 straight away to Lisa, it was inadequate and plasticly for my needs, but perfect for Lisa&#8217;s, she destroys those things and already used 0.7mm lead. The Graph Gear eventually couldn&#8217;t go the distance. The the pocket clip, which is also the spring clip that holds the pencil tip out, finally gave away after about a year. Also its knobbly grip texture made writing with it for a long period actually painful on the fingers. Even though it was by far the most stylish <em>looking</em> pencil of the three.</p>
<div class="wp-caption alignnone" style="width: 610px"><img title="Pentel Graph Gear 1000 0.5mm" src="http://www.crazymcphee.net/x/wp-content/uploads/2009/02/pentel.png" alt="Pentel Graph Gear 1000 0.5mm" width="600" height="82" /><p class="wp-caption-text">Pentel Graph Gear 1000 0.5mm</p></div>
<p>My firm favorite soon switched to and has stayed with the TK Fine Vario L. The one drawback with the TK Fine Vario L is that the tip sleeve doesn&#8217;t retract, so it&#8217;s not strictly pocket safe. This is OK for me most of the time as usually it travels in one of my laptop backpack&#8217;s pen/pencil slots.However it&#8217;s sometimes annoying, although it&#8217;s adjustable soft-hard feature is very nice. It also balances extremely well in the hand and the metal barrel grip is very comfortable. With its dark green plastic, hexagonal section, upper half, it does look very old fashioned. However this is offset by its excellent writing comfort and long retractable rubber length (the Pentel&#8217;s short rubber had quickly worn out, and the cap had to be taken off to use it).</p>
<div class="wp-caption alignnone" style="width: 610px"><img title="Faber-Castell TK Fine Vario L 0.5mm" src="http://www.crazymcphee.net/x/wp-content/uploads/2009/02/tkfine05.jpg" alt="Faber-Castell TK Fine Vario L 0.5mm" width="600" height="46" /><p class="wp-caption-text">Faber-Castell TK Fine Vario L 0.5mm</p></div>
<p>So, I&#8217;ll continue to use the TK Fine Vario unless one of these just-purchased beauties can knock it off its perch (images link to the product page on <a href="http://www.cultpens.com/" target="_blank">Cult Pens</a>):</p>
<p><strong>OHTO Super Promecha Pencil PM-1500P</strong></p>
<div class="wp-caption alignnone" style="width: 610px"><a href="http://www.cultpens.com/acatalog/OHTO-Super-Promecha-1500P.html"><img title="OHTO Super Promecha Pencil PM-1500P " src="http://www.crazymcphee.net/x/wp-content/uploads/2009/02/ohtp-pm1500.jpg" alt="OHTO Super Promecha Pencil PM-1500P " width="600" height="123" /></a><p class="wp-caption-text">OHTO Super Promecha Pencil PM-1500P</p></div>
<p>The OHTO Super Promecha one looks like a superb technical pen but we&#8217;ll see how comfortable that the &#8220;fine diamond-cut knurled pattern&#8221; grip really is, especially with sustained use taking research notes. It has a lot of interesting features.</p>
<p><strong>Uni Kuru Toga Pencil 0.5mm M5-450</strong></p>
<div class="wp-caption alignnone" style="width: 610px"><a href="http://www.cultpens.com/acatalog/Uni-Kuru-Toga-Pencil.html"><img title="Uni Kuru Toga Pencil 0.5mm M5-450" src="http://www.cultpens.com/acatalog/kuru-toga-all.jpg" alt="Uni Kuru Toga Pencil 0.5mm M5-450" width="600" height="321" /></a><p class="wp-caption-text">Uni Kuru Toga Pencil 0.5mm M5-450</p></div>
<p>The Uni Kuru Toga claims to be a &#8220;self-sharpening&#8221; mechanical pencil. Every time the lead touches the paper it rotates the lead, resulting in a conical shape on the end of the lead. It&#8217;s pretty cheap, so I got it to find out if this miraculous claim is true or not. I ordered the orange one.</p>
<p><strong>rotring Tikky 3 Pencil 0.5mm Colour Barrel</strong></p>
<div class="wp-caption alignnone" style="width: 610px"><a href="http://www.cultpens.com/acatalog/rotring_Tikky_3_Pencil_Black.html"><img title="rotring Tikky 3 Pencil 0.5mm Colour Barrel  " src="http://www.cultpens.com/acatalog/rotring-tikky3-05-col.jpg" alt="rotring Tikky 3 Pencil 0.5mm Colour Barrel  " width="600" height="130" /></a><p class="wp-caption-text">rotring Tikky 3 Pencil 0.5mm Colour Barrel  </p></div>
<p>A cheap and cheerful pencil, it&#8217;s always handy to have some of those for emergencies, in the car, people wanting to borrow them, etc. I got the red one.</p>
<p>That&#8217;s it &#8211; total price GBP 33.93 including GBP 10 in shipping. The Ohto is naturally more than half of that total cost, but given the strength of the AUD at the moment I though it a good time to shop for an item like this.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.crazymcphee.net/x/2010/11/04/mechanical-pencil-lust-redux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

