<?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; tools</title>
	<atom:link href="http://www.crazymcphee.net/x/tag/tools/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.crazymcphee.net/x</link>
	<description>programming idiom and methodology</description>
	<lastBuildDate>Wed, 11 Aug 2010 01:13:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>The Ordeal of Installing Oracle Service Bus on a Windows-based developer workstation</title>
		<link>http://www.crazymcphee.net/x/2010/07/12/the-ordeal-of-installing-oracle-service-bus-on-a-windows-based-developer-workstation/</link>
		<comments>http://www.crazymcphee.net/x/2010/07/12/the-ordeal-of-installing-oracle-service-bus-on-a-windows-based-developer-workstation/#comments</comments>
		<pubDate>Mon, 12 Jul 2010 07:30:12 +0000</pubDate>
		<dc:creator>Scot Mcphee</dc:creator>
				<category><![CDATA[infrastructure and frameworks]]></category>
		<category><![CDATA[rants]]></category>
		<category><![CDATA[technical]]></category>
		<category><![CDATA[esb]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[osb]]></category>
		<category><![CDATA[poorly attempted humour]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[weblogic]]></category>
		<category><![CDATA[wizards considered harmful]]></category>

		<guid isPermaLink="false">http://www.crazymcphee.net/x/?p=570</guid>
		<description><![CDATA[This is a genuine installation procedure which I wrote, but you might want to read it for its other values. Overview OSB installation in a development environment consists of a completely separate Weblogic instance and yet another &#8216;special installation&#8217; of Eclipse. You can&#8217;t use existing Eclipse installations. Nor is it recommend to use one of [...]]]></description>
			<content:encoded><![CDATA[<p>This is a genuine installation procedure which I wrote, but you might want to read it for its other values.</p>
<h2>Overview</h2>
<p>OSB installation in a development environment consists of a completely separate Weblogic instance and yet another &#8216;special installation&#8217; of Eclipse. You can&#8217;t use existing Eclipse installations. Nor is it recommend to use one of the five other existing Weblogic instances that Oracle products thoughtfully demand their own copy thereof (SOA Suite, I am looking at you).</p>
<h2>Installation process</h2>
<p>This is the procedure for installing OSB development environment.</p>
<p>As network firewall policy prevents the downloading of files, you will need to use installation media located within &lt;companyname&gt; network. Take the files conveniently stored on network server &lt;location redacted&gt; and copy them into a directory on your local computer. This directory is hereafter referred to as &#8216;installation files directory&#8217; below.</p>
<h3>Install Weblogic</h3>
<ol>
<li>Go to the installation files directory.</li>
<li>Run the executable file wls1033_oepe111150_win32.exe</li>
<li>This action launches the Oracle Installer for the Weblogic instance. It takes some time to run so contemplate the meaning of your life for a few minutes while it does. Maybe get a cup of tea. Stretch your legs. Think about lunch or your next holiday. File a support request for more memory. You should get at least 8GB.</li>
<li>Okay that&#8217;s it, you&#8217;ll finally see the Oracle Weblogic 10.3.3.0 installer. Think about the fact that Oracle sees fit to put &#8220;instructions&#8221; on the first screen telling you what the &#8220;Next&#8221; button does. This is advanced JEE server technology you&#8217;re installing, and potentially, Oracle think you don&#8217;t know what the &#8220;Next&#8221; button does. Maybe this reflects the level of experience inside Oracle, or perhaps it is indicative of the depth of respect in which Oracle holds their customers.</li>
<li>Press the &#8220;Next&#8221; button. The next screen you will see  is very important. If you fsck it up you&#8217;ll have to uninstall and start over. It does not have any instructions, but that&#8217;s OK, we&#8217;ve done it here in this wiki page for you. Pay attention.</li>
<li><strong>DO. NOT. ACCEPT. THE. DEFAULT.</strong> Especially if you installed SOA Suite or some other Oracle product before you installed this one. Double especially if you still want that product to work.</li>
<li>SELECT &#8220;Create a new Middleware Home&#8221; (THIS IS VERY IMPORTANT)</li>
<li>TYPE a name of an Appropriate Directory. I used &#8220;C:\Oracle\OSB_Middleware&#8221;</li>
<li>PRESS The &#8220;Next&#8221; button. Use the &#8220;Back&#8221; button if you need to see the instructions about how to use the &#8220;Next&#8221; button that Oracle conveniently provided for you on the first Screen. No, don&#8217;t do that. If you do that you&#8217;ll probably have to do this proceedure again and it will just make this entire experience last longer than it needs to. This is not a recommended practice.</li>
<li>The next screen demands that you give Oracle your Email Address to get &#8220;security updates&#8221;. It also wants a thing called your &#8220;My Oracle Support Password&#8221; (I suspect this is what might have been known as Oracle TechNet). As we both know, the best possible security measure is not to give out your password to strange programs that demand it.</li>
<li>As I planned on giving them my &lt;workcompany&gt; email, and as my Technet sub doesn&#8217;t use that Email address, I also unchecked the &#8220;I wish to receive security updated via My Oracle Support&#8221; check box.</li>
<li>Are you Sure? YES I&#8217;M VERY SURE. I would like to be &#8220;ignorant of security updates&#8221; and also Oracle spam. Ignorance is Bliss.</li>
<li>Look at that, I can&#8217;t give them my email address after all, what they really meant was &#8220;type your Oracle Support user id&#8221;. Press &#8220;Next&#8221;.</li>
<li>Now you have to choose whether you want a &#8220;Typical&#8221; installation or a &#8220;Custom&#8221; one. I chose &#8220;Typical&#8221;, which, being an Oracle installation, I expect to require an 8-core 64GB RAM 2TB SAN SSD -based supercomputer with a external 4-way Oracle RAC for configuration (&#8220;infrastructure&#8221;) DB in order to have enough grunt to service about 3 requests a minute. Press &#8220;Next&#8221;.</li>
<li>There&#8217;s a lot of choices here about the various subdirectories under the Middleware Home Directory that you created further back. I recommend accepting the defaults, but you can probably cause yourself countless of fun trolling on the My Oracle Support forums as you get ever-more-desparate for a solution to a very obscure problem that the phone support have no idea about and that was likely caused by you mucking about these defaults, causing the support personel to simply recommend you to reinstall the product, if you really feel the need to change them here.</li>
<li>If you can remember the instruction about the use of the &#8220;Next&#8221; button at step 4, then Press &#8220;Next&#8221;.</li>
<li>Now you can choose whether you want to put the shortcuts for &#8220;All users&#8221; or just you (&#8220;Local user&#8221;). If you are the BOFH I recommend &#8220;All Users&#8221;. As this is the default, we can all safely assume that the BOFH works for Oracle and is now responsible for designing their installation processes. Accept the default, and press &#8220;Next&#8221;.</li>
<li>The next screen is a summary of what you&#8217;ll be installing. You can also select each item and see a summary of what it does. Ponder the mystery of Oracle, and press &#8220;Next&#8221;.</li>
<li>Keep pondering that mystery while Oracle Weblogic Server 11g Release 1 (10.3.3.0) is installed. It takes a little bit of time. While it does that, you might to book that Holiday, get another cup of tea, or chase up that support request for the additional RAM you&#8217;ll be soon needing.</li>
<li>Congratulations! Installation is complete.</li>
<li>I opted to leave the &#8220;Run Quickstart&#8221; option checked.</li>
<li>Press &#8220;Done&#8221;. There are no onscreen instructions for this button.</li>
<li>Quickstart will run. It&#8217;s just a link farm.</li>
</ol>
<h3>Install Oracle Enterprise Pack for Eclipse (OEPE aka &#8220;Special Eclipse&#8221;)</h3>
<ol>
<li>Go to the installation files directory</li>
<li>Extract the file oepe-galileo-all-in-one-11.1.1.5.0.201003170852-win32.zip &#8230; I used 7zip and made sure to put it into a subdirectory of the installation files directory.</li>
<li>It&#8217;s kind of pretty big, takes a cople of minutes.</li>
<li>Just like a regular version of Eclipse, once this is unzipped, it&#8217;s installed. However it&#8217;s not a regular version of Eclipse. It is a &#8220;special&#8221; Eclipse that went to &#8220;special&#8221; school.</li>
<li>Although this directory can <em>probably</em> live anywhere, it&#8217;s a good idea to copy this directory into the new Oracle Middleware Home that you created when you installed Weblogic. Look I really have no idea why this is the case, however, it&#8217;s not good to anger the Oracle by using you regular development directories. ORACLE_HOME sweet ORACLE_HOME it is then.</li>
</ol>
<h3>Install OSB and OSB Dev Tools</h3>
<ol>
<li>Go to the installation files directory.</li>
<li>Extract the file ofm_osb_generic_11.1.1.3.0_disk1_1of1.zip &#8230; again I used 7zip and made sure to put it into a directory underneath the installation files directory.</li>
<li>Enter this directory. Enter the directory &#8220;osb&#8221; that will be created underneath it. Note that even though the file said &#8220;disk1_1of1&#8243; in the file name that underneath here there&#8217;s two directories, Disk1 and Disk2.</li>
<li>Go into the directory &#8220;Disk1&#8243;</li>
<li>Run the executable file &#8220;setup.exe&#8221;</li>
<li>A DOS window opens which asks you for the location of a JRE in order to use Oracle Universal Installer. Probably. Exactly why the Weblogic installer didn&#8217;t need to know where the JDK was, I do not know. Probably it used a sensible installer rather then the Oracle Universal Installer. I don&#8217;t ever think I&#8217;ve ever seen an machine with two Oracle installations on it that didn&#8217;t also have two or more installations of the Oracle Universal Installer also installed on it. Its name perhaps means that it installs itself universally, rather than it is a product which has a universal use for installing other software. Ponder the mystery of the Oracle.</li>
<li>A JRE will be located in the original Oracle Middleware Home that you created when you installed Weblogic. In fact there&#8217;s at least two (Sun JDK and JRockit). Use the Sun JDK. For example, my value for the JDK was &#8220;C:\Oracle\OSB_Middleware\jdk160_18&#8243;. Press Enter.</li>
<li>Now the Universal Installer will actually attempt to install something. It says &#8220;You are about to install the Oracle Service Bus (OSB) and may install the Oracle Service Bus IDE and Oracle Service Bus Examples (OSBE). Before proceeding, make sure that you have installed and configured Oracle WebLogic Server 11g. If you want to design OSB applications in Eclipse, make sure Oracle Enterprise Package for Eclipse (OEPE) is installed.&#8221; Which is all true if you&#8217;ve been following this guide.</li>
<li>Press &#8220;Next&#8221;. There&#8217;s no instructions in this program for the use of the &#8220;Next&#8221; button. Someone ought to file a change request for that.</li>
<li>Now you can choose whether you want a &#8220;Typical&#8221; installation or a &#8220;Custom&#8221; one. Typically, choose &#8220;Typical&#8221;.</li>
<li>Press &#8220;Next&#8221;. I tried looking for online help here about the use of the &#8220;Next&#8221; button but I did not find anything.</li>
<li>It does a prerequisite check. It should pass, and if it doesn&#8217;t, you are probably screwed. If it does, you will be able to Press &#8220;Next&#8221;</li>
<li>At this next screen <strong>DO NOT ACCEPT THE DEFAULTS</strong>.</li>
<li>Choose the Oracle Middleware Home that you installed the Weblogic into at the first part of this installation procedure. E.g. I chose &#8220;C:\Oracle\OSB_Middleware&#8221;.</li>
<li>Once you do the previous step, ff you followed the instructions for the Special Eclipse (OEPE), it will have found it automatically. If not, choose the location where you installed the Special Eclipse (OEPE Location). For example, my value was &#8220;C:\Oracle\OSB_Middleware\oepe-galileo-all-in-one-11.1.1.5.0.201003170852-win32&#8243;</li>
<li>Press &#8220;Next&#8221;. Did you know that the Oracle at Delphi was a priestess called the &#8216;Pythoness&#8217; who answered your question using gibberish verse. A Male Attendant of the Pythoness interpreted her raving mad gibberings and told you what they meant. For a fee. Does this sound familiar?</li>
<li>Review the installation details. When you are sure they are correct, press &#8220;Install&#8221;.</li>
<li>OSB will now install. It takes a little time so run those errands, go to lunch, get a coffee, dream of the Holiday you just Booked. I&#8217;d tell you to install the new 8GB of memory that you ordered before which surely has arrived by now, but that would mean turning your computer off. Best to wait until it&#8217;s finished then.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.crazymcphee.net/x/2010/07/12/the-ordeal-of-installing-oracle-service-bus-on-a-windows-based-developer-workstation/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>JAOO Brisbane 2009 highlights and thoughts</title>
		<link>http://www.crazymcphee.net/x/2009/05/13/jaoo-brisbane-2009-highlights-and-thoughts/</link>
		<comments>http://www.crazymcphee.net/x/2009/05/13/jaoo-brisbane-2009-highlights-and-thoughts/#comments</comments>
		<pubDate>Wed, 13 May 2009 12:55:54 +0000</pubDate>
		<dc:creator>Scot Mcphee</dc:creator>
				<category><![CDATA[architecture]]></category>
		<category><![CDATA[business]]></category>
		<category><![CDATA[professional practice]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[rants]]></category>
		<category><![CDATA[tools and techniques]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[jaoo]]></category>
		<category><![CDATA[methodology]]></category>
		<category><![CDATA[profession]]></category>
		<category><![CDATA[scrum]]></category>
		<category><![CDATA[test first]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[xp]]></category>

		<guid isPermaLink="false">http://www.crazymcphee.net/x/?p=356</guid>
		<description><![CDATA[I spent last Monday and Tuesday at the JAOO conference in Brisbane, and I have a couple of things which I want to say I thought interesting. (&#8216;JAOO&#8217; btw, because I see people asking about it on Twitter, is pronounced a bit like &#8220;yow&#8221; but with the &#8220;j&#8221; from German/Dutch like &#8220;jah&#8221;). Firstly, I found [...]]]></description>
			<content:encoded><![CDATA[<p>I spent last Monday and Tuesday at the <a href="http://www.jaoo.com.au/" target="_blank">JAOO</a> conference in Brisbane, and I have a couple of things which I want to say I thought interesting. (&#8216;JAOO&#8217; btw, because I see people asking about it on Twitter, is pronounced a bit like &#8220;yow&#8221; but with the &#8220;j&#8221; from German/Dutch like &#8220;jah&#8221;).</p>
<p>Firstly, I found the second day much better than the first. I did see <a href="http://www.michaelnygard.com/" target="_blank">Michael Nygard&#8217;s</a> two talks on Monday morning and got a lot a lot of useful information from those. Titled &#8216;Failure comes in flavours&#8217; the first was a great overview of the types of failure that applications running in production encounter, the second ways to avoid those failure modes. Basically it&#8217;s how many of the non-functional requirements can eat your app (and even the entire integration if you let the failure propagate easily) if you don&#8217;t give careful consideration to them. He&#8217;s got a <a href="http://www.pragprog.com/titles/mnee/release-it" target="_blank">book</a> so I&#8217;m going to check that out next.</p>
<p>The first day for me was severely spoilt by a poor vendor presentation (hint: one that is <em>not</em> Oracle, not that they would have necessarily done any better), which I should have known better to avoid. I already swim in the BPEL/BPM/SOA soup, I fully understand just how broken it is as an actual development concept (e.g. anti-test-first to name just <em>one</em>). I was fooled by the title to thinking maybe it had some insights to avoid the worst of these busted concepts, but no, the vendor&#8217;s tooling is all the rage if you drink the poor-tasting conceptual kool-aid. This stuff is marketed at managers and non-coding architects who choose to buy this stuff then dump it from a very great height into the laps of the poor developers who have to mangle it into a deliverable system (half the time with a development budget just a tenth the cost of the licence). Anyway back to the good stuff.</p>
<p>Mike Cannon-Brookes from <a href="http://www.atlassian.com/" target="_blank">Atlassian</a> (which makes great development tools, highly recommended) gave a mostly great closing speech on the first day which made me think about a couple of things. It wasn&#8217;t until the next morning however that it crystallised in my mind. It&#8217;s a bit of a minor criticism.</p>
<p>Mike threw out a minor line, an aside really, talking about Atlassian&#8217;s agile development methodology, and basically that said, people who say &#8216;you must do this&#8217; are wrong, because they miss your context. Here &#8216;this&#8217; is some type of agile process artefact like  maybe, pairing, or estimating in story points, or whatever. Well, it&#8217;s wrong and on two counts. The first count I realised just after the talk but couldn&#8217;t articulate it correctly in semi-drunken conversation. That first count is very simple. Mike&#8217;s timeline on his Atlassian experience has him, if I recall correctly, starting his company and creating the great tool Jira, in his early twenties. Now as he dissed &#8220;old people&#8221; in his talk I&#8217;m going to give some back. In your twenties you&#8217;ve got no idea <em>what works</em>, in a general sense. You might know (or think you know) <em>what works for you</em>, but that&#8217;s a completely different kettle of fish to <em>what works generally</em>. Why not? The word is <em>experience</em>. Its not until you reach &#8230; oh &#8230; I&#8217;ll say around 35 (and so maybe lose the capacity to build technical innovation, perhaps, as Mike asserted) that you can have real insights into <em>process</em> and <em>people</em>. It&#8217;s just because at this point, you just have not got enough <em>practice</em> at it (see Malcolm Gladwell&#8217;s recent book for some basic data about the power of practice).</p>
<p>But the bigger point I think is the word <em>context</em>. The phrase &#8216;my context is different&#8217;, is this classic phrase which <em>really</em> means &#8216;that won&#8217;t work here&#8217; and <em>that</em> really means, <em>I don&#8217;t want to change</em>. As a consultant , you hear this stuff all the time: &#8230; &#8220;We&#8217;re unique, our company is not like those other companies. We can&#8217;t do that here. Detailed estimates are really the most important part of the development process. The budget and the features must be fixed. We have a reporting process that allows the budget and features to be fixed. Pair programming doubles the time it takes to deliver the features. Quality doesn&#8217;t matter. Technical quality is  a business decision. The business are too busy to talk to you.&#8221; &#8230;  And a whole other other bunch of <em>epic agile fail</em>. Someone&#8217;s context is <em>exactly</em> why they aren&#8217;t as agile as their competitors and are looking at using &#8216;agile development&#8217; to help save them &#8230; but as long as they insist on <em>my context trumps all</em>, they will only get a fractional improvement and not an order-of-magnitude one. But Atlassian make great products, so it doesn&#8217;t mean you <em>have</em> to have &#8216;scrum&#8217;, or &#8216;XP&#8217; to do that, the greatness I guess, is orthogonal. However if you are looking to &#8216;do agile&#8217;, then <em>do agile</em>. Pick a method like Scrum or XP then do it all. How do you know pair programming will fail in your organisation if you don&#8217;t try it first? You don&#8217;t. Do it like it says to do it (e.g. the Kent Beck books) and after a few months experience for your team, use the lessons from the retrospectives that the team has discovered to improve the process. <em>Do not cripple the process with your &#8216;context&#8217; before you even try</em>.</p>
<p>And right on cue, on the second day along comes <a href="http://steve.cogentconsulting.com.au/" target="_blank">Steve Hayes</a> with a <em>great</em> presentation on exactly this topic: &#8220;How your choices affect your agility&#8221;. Steve is a fantastic speaker, entertaining and pretty insightful too I thought. I rated his talk the best talk of the conference. He said he got lots of red cards (participants could rate each talk as green==good, yellow==ok, red==bad) in his Sydney session &#8211; <em>what is the matter with your people</em>? It was a great talk. I loved the part about <em>naivety</em>. To propose a solution from the most naive perspective possible, and  what an <em>epic win </em>it is when a customer says &#8220;ok&#8221;! It means I understand the problem! I even tried this today with my client, I didn&#8217;t get the instant &#8220;OK&#8221; but working from the basis of that incredibly naive solution we did manage to eventually envisage <em>the simplest thing that could possibly work.</em> And I love that. So thanks tons for that insight, Steve!</p>
<p>Another great talk on the second day was <a href="http://www.lindarising.org/" target="_blank">Linda Rising&#8217;s</a> &#8216;Deception and Estimation&#8217; talk. Turns out (via psychology and evolutionary biology) we engage not in <em>rational</em> decision making but in <em>emotional</em> choices <em>all the time</em>. All choice is emotional. So we engage ourselves in self-deception <em>all the time</em>. And none of this is <em>bad</em> &#8230; <em>it&#8217;s good</em>. People who don&#8217;t engage in this constant self-deception are generally clinically insane. So get over it, and yourself, and when you&#8217;re estimating (and from the sounds of it, doing any sort of major-impact decision making) and get as <em>many perspectives as you can</em> from the most diverse range of people you can manage (to avoid <em>groupthink</em>, which is I guess, the situation where everyone&#8217;s self-deceptions all align). <a href="http://en.wikipedia.org/wiki/Joshua_Bloch" target="_blank">Joshua Bloch&#8217;s</a> second-day keynote was also highly worthy of praise. Good insight and excellent effective code examples (yes, in a <em>keynote</em>). Also worth the greatly discounted entry ticket price was the many interesting conversations I had with past colleagues and new friends on many different development issues.</p>
<p>In short, JAOO was generally of very high quality and I hope is keeps coming to Brisbane! Will definitely be going next year. Many thanks to all the organisers, presenters and sponsors.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.crazymcphee.net/x/2009/05/13/jaoo-brisbane-2009-highlights-and-thoughts/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Building Oracle 10g portlets in a continuous integration environment</title>
		<link>http://www.crazymcphee.net/x/2009/04/29/building-oracle-10g-portlets-in-a-continuous-integration-environment/</link>
		<comments>http://www.crazymcphee.net/x/2009/04/29/building-oracle-10g-portlets-in-a-continuous-integration-environment/#comments</comments>
		<pubDate>Wed, 29 Apr 2009 07:15:37 +0000</pubDate>
		<dc:creator>Scot Mcphee</dc:creator>
				<category><![CDATA[professional practice]]></category>
		<category><![CDATA[tools and techniques]]></category>
		<category><![CDATA[build]]></category>
		<category><![CDATA[continuous integration]]></category>
		<category><![CDATA[jsr168]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[portal]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[wizards considered harmful]]></category>

		<guid isPermaLink="false">http://www.crazymcphee.net/x/?p=336</guid>
		<description><![CDATA[Ignoring all the hints (to use wizards and manual deployments) from the Oracle information as to how to go about creating JSR168 portlets for the Oracle 10g Portal server, we have successfully designed a continuous integration environment for the Oracle portal environment for a client. The Oracle 10g portal server is the old-school Oracle app-server [...]]]></description>
			<content:encoded><![CDATA[<p>Ignoring all the hints (to use wizards and manual deployments) from the Oracle information as to how to go about creating JSR168 portlets for the Oracle 10g Portal server, we have successfully designed a continuous integration environment for the Oracle portal environment for a client. The Oracle 10g portal server is the old-school Oracle app-server portal environment, not the BEA environment. As such it&#8217;s pretty old school (the database is the World), but it did surprise us with a command line utility (&#8216;<em>dcmctl</em>&#8216;) that allows us to programmatically deploy components such as portlet WARs into the application server using nothing but simple shell scripts. Unfortunately no such programmatic control has been found yet for the actual portal configuration, but we are working on that (if you know how to programmatically control the configuration of an Oracle 10g Portal with the command line please leave a comment!).</p>
<p>Simply put, using nothing but a <em>/bin/bash</em> script and <em>wget</em> we scrape the latest version of the relevant artefacts from the Artifactory Maven repository. These artefacts are deployed (published) into the repository by the Hudson continuous integration build.</p>
<p>As they say, a picture tells a thousand words and I&#8217;ve included a schematic of the environment we have created below (image links to PDF).</p>
<p> </p>
<p><a href="http://www.crazymcphee.net/x/wp-content/uploads/2009/04/build-process.pdf"><img class="alignnone size-full wp-image-338" title="build-process" src="http://www.crazymcphee.net/x/wp-content/uploads/2009/04/build-process.png" alt="build-process" width="418" height="281" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.crazymcphee.net/x/2009/04/29/building-oracle-10g-portlets-in-a-continuous-integration-environment/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Making Maven work through a web proxy</title>
		<link>http://www.crazymcphee.net/x/2009/03/25/making-maven-work-through-a-web-proxy/</link>
		<comments>http://www.crazymcphee.net/x/2009/03/25/making-maven-work-through-a-web-proxy/#comments</comments>
		<pubDate>Wed, 25 Mar 2009 06:13:20 +0000</pubDate>
		<dc:creator>Scot Mcphee</dc:creator>
				<category><![CDATA[tools and techniques]]></category>
		<category><![CDATA[maven]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://www.crazymcphee.net/x/?p=290</guid>
		<description><![CDATA[Client has a vicious network policy installed with prevents access to the rest of the world&#8217;s internet, unless you use the web proxy. How to make Maven use this proxy? Well, the documentation for Maven is perfectly easy to search, and you&#8217;ll find that it says to add the following to your ~/.m2/settings.xml: &#60;settings&#62; ... [...]]]></description>
			<content:encoded><![CDATA[<p>Client has a vicious network policy installed with prevents access to the rest of the world&#8217;s internet, unless you use the web proxy. How to make Maven use this proxy? Well, the documentation for Maven is perfectly easy to search, and you&#8217;ll find that it says to add the following to your ~/.m2/settings.xml:</p>
<pre>&lt;settings&gt;
...
    &lt;proxies&gt;
        &lt;proxy&gt;
            &lt;active&gt;true&lt;/active&gt;
            &lt;protocol&gt;http&lt;/protocol&gt;
            &lt;host&gt;proxy-server.example.com&lt;/host&gt;
            &lt;port&gt;8080&lt;/port&gt;
            &lt;nonProxyHosts/&gt;
        &lt;/proxy&gt;
    &lt;/proxies&gt;
...
&lt;/settings&gt;</pre>
<p>Now, that&#8217;s as great as far as it goes &#8211; it works. But the problem is I need to put this setup on my laptop. And I take the laptop home and work on the code-base there. So why doesn&#8217;t Maven allow the &lt;proxies&gt; tag to appear inside the &lt;profile&gt; tag? It&#8217;s really annoying that I have to edit the &#8216;active&#8217; tag back and forth depending what site I&#8217;m currently connected at! Much easier to use a &#8216;-P client1&#8242; argument on the command line to active the proxy network setting for the &#8216;client1&#8242; location.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.crazymcphee.net/x/2009/03/25/making-maven-work-through-a-web-proxy/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Upgrading to Maven 2.1.0 on Macintosh OS X</title>
		<link>http://www.crazymcphee.net/x/2009/03/23/upgrading-to-maven-210-on-macintosh-os-x/</link>
		<comments>http://www.crazymcphee.net/x/2009/03/23/upgrading-to-maven-210-on-macintosh-os-x/#comments</comments>
		<pubDate>Mon, 23 Mar 2009 02:43:30 +0000</pubDate>
		<dc:creator>Scot Mcphee</dc:creator>
				<category><![CDATA[technical]]></category>
		<category><![CDATA[tools and techniques]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[macintosh]]></category>
		<category><![CDATA[maven]]></category>
		<category><![CDATA[osx]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[unix]]></category>

		<guid isPermaLink="false">http://www.crazymcphee.net/x/?p=265</guid>
		<description><![CDATA[Recently I found a Maven plugin that wouldn&#8217;t run under Maven version 2.0.6, and I had to upgrade it on my Macintosh. I quickly discovered the usual *nix upgrade (unpack, then update ${PATH}) didn&#8217;t seem to work, as the Macintosh OS X 10.5 comes with Maven pre-installed in /usr/share/ directory. Tip &#8211; I found where [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I found a Maven plugin that wouldn&#8217;t run under Maven version 2.0.6, and I had to upgrade it on my Macintosh. I quickly discovered the usual *nix upgrade (unpack, then update ${PATH}) didn&#8217;t seem to work, as the Macintosh OS X 10.5 comes with Maven pre-installed in /usr/share/ directory.</p>
<blockquote><p><strong><em>Tip</em></strong> &#8211; I found where it was installed with this simple series of *nix commands that should work on most Unix variants such as Linux, for anything on your ${PATH}, using the &#8216;which&#8217; command:</p>
<pre>CrazyMcphee:systems smcphee$ which mvn
/usr/bin/mvn
CrazyMcphee:systems smcphee$ ls -lrta /usr/bin/mvn
lrwxr-xr-x  1 root  wheel  24  9 Mar 22:50 /usr/bin/mvn -&gt; \
  /usr/share/maven/bin/mvn</pre>
</blockquote>
<p>Following the information on <a href="http://www.gridshore.nl/2008/01/28/upgrading-maven-on-the-mac/">this page</a> as a template, here&#8217;s the procedure I used to upgrade to the latest version at time of writing, Maven 2.1.0:</p>
<pre>CrazyMcphee:~ smcphee$ sudo su -
Password:
CrazyMcphee:~ root# cd /usr/share/
CrazyMcphee:share root# mv maven maven-2.0.6
CrazyMcphee:share root# cp -R \
/Users/smcphee/Development/systems/apache-maven-2.1.0/ \
maven-2.1.0
CrazyMcphee:share root# ln -s maven-2.1.0/ maven
CrazyMcphee:share root# exit
logout
CrazyMcphee:~ smcphee$ mvn -version
Apache Maven 2.1.0 (r755702; 2009-03-19 05:10:27+1000)
Java version: 1.5.0_16
Java home: /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home
Default locale: en_AU, platform encoding: MacRoman
OS name: "mac os x" version: "10.5.6" arch: "i386" Family: "unix"</pre>
<p>You&#8217;ll note I used a symlink for the &#8216;maven&#8217; directory to the &#8216;maven-2.1.0&#8242; directory (the command &#8216;ln -s maven-2.1.0/ maven&#8217; &#8230;). This is to allow me to quickly switch back to version 2.0.6 if I find any incompatibilities in my old POM files with the new version of Maven, by simply changing which directory the symlink points to.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.crazymcphee.net/x/2009/03/23/upgrading-to-maven-210-on-macintosh-os-x/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>GUI builders, modern development practices, and vendor lock-in</title>
		<link>http://www.crazymcphee.net/x/2009/02/14/gui-builders-modern-development-practices-and-vendor-lock-in/</link>
		<comments>http://www.crazymcphee.net/x/2009/02/14/gui-builders-modern-development-practices-and-vendor-lock-in/#comments</comments>
		<pubDate>Sat, 14 Feb 2009 02:22:34 +0000</pubDate>
		<dc:creator>Scot Mcphee</dc:creator>
				<category><![CDATA[infrastructure and frameworks]]></category>
		<category><![CDATA[rants]]></category>
		<category><![CDATA[technical]]></category>
		<category><![CDATA[tools and techniques]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[methodology]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[weblogic]]></category>
		<category><![CDATA[wizards considered harmful]]></category>

		<guid isPermaLink="false">http://www.crazymcphee.net/x/?p=176</guid>
		<description><![CDATA[The Paranoid Engineer has declared &#8216;Screw All Gui Builders&#8216;, with an excellent example of the genre of code that can be produced by one such tool, contrasted against the much nicer hand-written code. Now I can certainly sympathise with his pain. The thing that really gets my goat up, and the subject of this post, [...]]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://paranoid-engineering.blogspot.com/">Paranoid Engineer</a> has declared <a href="http://paranoid-engineering.blogspot.com/2009/02/screw-all-gui-builders.html" target="_blank"><em>&#8216;Screw All Gui Builders</em></a>&#8216;, with an excellent example of the genre of code that can be produced by one such tool, contrasted against the much nicer hand-written code. Now I can certainly sympathise with his pain. The thing that really gets my goat up, and the subject of this post, is when vendors use a GUI builder to lock the poor developer and the target <span style="text-decoration: line-through;">victim</span> sorry, enterprise, into their <em>entire product suite</em>.</p>
<p>My case-in-point <em>du jour</em> is Oracle&#8217;s new <a title="Oracle Rich Enterprise Applications" href="http://rea.oracle.com/" target="_blank">Rich Enterprise Applications</a> site and the associated technology.  On that site you will find a flash presentation of their technology around delivering and I quote:</p>
<blockquote><p>multi-channel capable applications that deliver desktop quality, highly interactive user experiences that are pre-integrated to enterprise class server technology.</p></blockquote>
<p>That sounds pretty good, might be of interest to me. Lets investigate further. Now, a lot this technology is built on top of standards, like JSF, and other commonly used technology like AJAX. The earlier version of the ADF component technology was donated to Apache where it lives as the <a title="Apache Trinidad" href="http://myfaces.apache.org/trinidad/index.html" target="_blank">Apache Myfaces Trinidad</a> project. The new components are built on top of these open sourced components. So far, so much is OK.</p>
<p>But, the kick in the tail can be seen in   even just in the quoted sentence above: <em>&#8220;pre-integrated to enterprise class server technology&#8221;</em> &#8211; they certainly don&#8217;t mean <em>Tomcat</em>, right? The point of the presentation is induce <em>lock in</em>. However I&#8217;m still willing to cut them some slack on this particular point. Of course, if you are thinking about using Oracle&#8217;s JSF technology, you probably are already committed to Oracle&#8217;s middleware technology anyway &#8211; and Weblogic is a perfectly good application server, if you need such advanced capabilities (and whether you actually do is another question for another day).</p>
<p>But what absolutely does my head in, is the insistence the only way to develop for this technology is to write it using their proprietary, non-standard developer technology, aka <em>JDeveloper</em>. This is the point where I have to say, I&#8217;m sorry Oracle, but &#8230; <em><strong>FAIL</strong></em>. <em>I actually don&#8217;t even care if your IDE is even the world&#8217;s best!</em> Or even if it comes as an Eclipse plugin. My beef with this sort of IDE integration is the total mind-set that it embodies. The IDE might have all the <em>drag-and-drop interface-building mojo</em> in all the world, but the code it produces will never, ever, stand up to a hand coded model driven off the target domain, using modern agile development techniques that are designed to ensure the most cost-effective, best-quality development delivering timely business process transformation (aka <em>value</em>) that the enterprise prioritises and chooses. Just look at the <a title="Oracle ADF FAQ" href="http://wiki.oracle.com/page/Oracle+ADF+FAQ?t=anon" target="_blank">ADF FAQ on the Oracle Wiki</a>.  Half the questions are related to the <em>IDE</em>. Here&#8217;s a <a title="Introduction to Oracle's ADF Faces" href="http://java.dzone.com/news/introduction-oracles-adf-faces" target="_blank">tutorial style introduction</a> that just assumes JDeveloper as the default way to get access to the Oracle JDF components.<em> </em></p>
<p><em>No, no a thousand times NO!</em></p>
<p>The biggest insult is the way that developers are treated as mere <em>commodities</em> in this whole process. They are just the warm bodies occupying the chair driving the interface. Much like the continually failed dream of <a title="Programmerless programming is just a mirage" href="http://www.crazymcphee.net/x/2009/01/17/programmerless-programming-is-just-a-mirage/" target="_self">developerless development</a>, their primary skill is seen as not &#8220;being a programmer&#8221; but &#8220;being a driver of a software package&#8221;. If I said, my financial skills and experience include 10 years Excel and 5 years MYOB &#8211; <em>I can haz CFO jobz now</em>? NO?! <em>Why not?</em> It&#8217;s insulting, that&#8217;s why not.</p>
<p>Software development is a profession, or at the very least a <em>craft</em>, and software developers should be able to choose their own tools. Obviously, some agreement has to be made organisationally, or at least across a single team or a whole project, to use a certain common toolset. Here&#8217;s one possible checklist:</p>
<blockquote><p>We&#8217;re writing a Java app, check. Deploying onto Weblogic, check. Database is Oracle 11g, check. We have <a href="http://www.crazymcphee.net/x/tag/scrum/">Scrum</a> as our process framework, check. <a href="http://www.crazymcphee.net/x/tag/test-driven-design/">TDD</a> is in our list of favoured engineering disciplines, check. Maven is our chosen build tool, check. Using Subversion for version control, check. Hudson for a continuous integration server, check. Writing the interface with Oracle ADF, check. Using Crossfire to deliver our web services, check. Spring for application wiring, check. Hibernate for persistence, check.</p></blockquote>
<p>Each of these things has to be agreed upon at an architectural and organisational level (and obviously I don&#8217;t mean to say that each of the above is the only choice for each type of item, I&#8217;m just giving <em>examples</em>).</p>
<p>You should note one very deliberate omission from that list, the IDE. <em>Architects</em> might impose a certain application server, a particular approach to application layering, and so on. The <em>developers</em> &#8211; at least the senior ones &#8211; have to choose and agree, for example, on whether to use Ant or Maven, CVS or SVN, Cruisecontrol or Hudson. But what they do not do, is force developers to favour Eclipse or IntelliJ or Netbeans or JDeveloper. What is the point of taking someone who is super-productive with a particular IDE&#8217;s keystrokes and  then forcing them to spend six months learning a whole new set, a new environment? That&#8217;s not productive! A developer needs to have the IDE <em>get out of the way</em>, become second nature &#8211; they need to be thinking about <em>code</em>, not where the menu is for the rename-method refactoring because they are unfamiliar with the keystrokes of the unfamiliar IDE. Keystrokes are <em>muscle memory</em>. You just think, <em>rename this method</em> and your fingers are already on the keys you need to press, without breaking your all-important <em>flow</em>. That&#8217;s how a developer is as <em>productive</em> as they can be. A productive development team should have a <em>mix</em> of IDEs (I&#8217;d propose that this would be statistically in proportion to the usage patterns of the common IDEs). Then we have the specific example of JDeveloper. I won&#8217;t even go into it except to say I&#8217;ve never heard a developer do anything but <em>curse</em> it, or maybe <em>laugh</em> at it. But it&#8217;s the laughter of the condemned man.</p>
<p>It&#8217;s something that vendors really need to get serious about. Rather than presenting me with a seamlessly integrated vision, from developer&#8217;s screen, through application server, to user&#8217;s screen, their technology presentations ought to think <em>discrete</em>. Each piece of technology ought to live and die on it&#8217;s own merits, something I&#8217;m sure Oracle&#8217;s ADF is perfectly capable of &#8211; without JDeveloper. If it&#8217;s not capable of being developed productively without JDeveloper, it&#8217;s already in the reject pile as far as I am concerned.</p>
<p>This essential information needs to be right up front. Don&#8217;t bury the information a thousand web sites deep in your developer portal. <em>Put it right there in the first presentation!</em> Separate the selling of the developer tooling from the selling of the user presentation frameworks and the server technology. Show me how I integrate Oracle ADF into TDD, into continuous integration, into the IDE of the developer&#8217;s choice. Because if you don&#8217;t, <em>you&#8217;ve already lost me as a potential customer</em>. This is the <em>real</em> future of software development. Look at where the major thought leaders of software development are taking development &#8211; open source frameworks, inversion of control, TDD, Domain Driven Design, Domain Specific Languages, Agile Methods, delivering real process transformation and business capability as early as possible &#8211; not <em>drag and drop with wizards</em>. FFS.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.crazymcphee.net/x/2009/02/14/gui-builders-modern-development-practices-and-vendor-lock-in/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Incremental test running with JUnit Max</title>
		<link>http://www.crazymcphee.net/x/2009/02/07/incremental-test-running-with-junit-max/</link>
		<comments>http://www.crazymcphee.net/x/2009/02/07/incremental-test-running-with-junit-max/#comments</comments>
		<pubDate>Sat, 07 Feb 2009 06:38:29 +0000</pubDate>
		<dc:creator>Scot Mcphee</dc:creator>
				<category><![CDATA[tools and techniques]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[test driven design]]></category>
		<category><![CDATA[test first]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://www.crazymcphee.net/x/?p=146</guid>
		<description><![CDATA[Well looks like Joel Spolsky&#8217;s ignorant rant about Test Driven Design (TDD) resulted in some good after all. Kent Beck posted a brief response to Joel, which was pointed out in a mailing list discussion about the issue. But that&#8217;s not what I wanted to talk about here. Anyway it turns out that Kent is [...]]]></description>
			<content:encoded><![CDATA[<p>Well looks like Joel Spolsky&#8217;s ignorant rant about Test Driven Design (TDD) resulted in <em>some</em> good after all. Kent Beck posted a <a title="Joel Spolsky is wrong about my work: Kent Beck" href="http://www.threeriversinstitute.org/blog/?p=29" target="_blank">brief response to Joel</a>, which was pointed out in a<a href="http://groups.yahoo.com/group/straight_talking_java/"> mailing list</a> discussion about the issue. But that&#8217;s not what I wanted to talk about here.</p>
<p>Anyway it turns out that Kent is writing a product called <strong><a title="Junit Max" href="http://www.threeriversinstitute.org/junitmax/subscribe.html" target="_blank">JUnit Max</a></strong> which looks <em>super</em> interesting for those using the discipline of TDD to write better code. Look at the Flash presentation on this page: <a title="JUnit Max" href="http://www.threeriversinstitute.org/junitmax/subscribe.html" target="_blank">http://www.threeriversinstitute.org/junitmax/subscribe.html</a> &#8230; Also it brings together another thread we had on the mailing list which was about Eclipse&#8217;s incremental compilation features. This is incremental test running!</p>
<p>A pity it&#8217;s not free but I guess Kent&#8217;s got to eat. I might be tempted to buy it in the near future.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.crazymcphee.net/x/2009/02/07/incremental-test-running-with-junit-max/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
