<?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>crossedstreams.com &#187; Development</title>
	<atom:link href="http://blog.crossedstreams.com/category/development/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.crossedstreams.com</link>
	<description>Total protonic reversal!</description>
	<lastBuildDate>Sat, 21 Jan 2012 20:10:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Setting up my Project Website</title>
		<link>http://blog.crossedstreams.com/development/setting-up-my-project-website/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=setting-up-my-project-website</link>
		<comments>http://blog.crossedstreams.com/development/setting-up-my-project-website/#comments</comments>
		<pubDate>Sun, 11 Sep 2011 20:27:16 +0000</pubDate>
		<dc:creator>Paul Brabban</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[MSc]]></category>
		<category><![CDATA[Project]]></category>
		<category><![CDATA[mscproject]]></category>

		<guid isPermaLink="false">http://blog.crossedstreams.com/?p=998</guid>
		<description><![CDATA[One of the assessed deliverables for my MSc project is a project website, so I&#8217;ve been having a bit of a setup session this weekend. The objectives set for the website are a little&#8230; what&#8217;s the word&#8230; vague? See what you think: A multipage website summarizing the work so far. - Objectives - Deliverables - [...]]]></description>
			<content:encoded><![CDATA[<p>One of the assessed deliverables for my MSc project is a project website, so I&#8217;ve been having a bit of a setup session this weekend.</p>
<p>The objectives set for the website are a little&#8230; what&#8217;s the word&#8230; <em>vague</em>? See what you think:</p>
<blockquote><p>A multipage website summarizing the work so far.<br />
- Objectives<br />
- Deliverables<br />
- Plan<br />
- Literature</p></blockquote>
<p>That&#8217;s it as far as I can tell. Exactly how will the delivered work be assessed? Your guess is probably about as good as mine. Having looked at the discussion forum for the module (the full-timers did this in the first half of the year &#8211; I&#8217;ve been told I set my own deadlines when it comes to the project stuff as I&#8217;m not a full-time student) it seems that the marking scheme was quite severe with many complaints about low marks and little evident explanation, so I&#8217;ll make some enquiries before I start work on the content proper.</p>
<p>Back in April, I asked how the website deliverable should be &#8216;handed in&#8217; and was told that a zip with some files in it would be fine.</p>
<p>Screw that.</p>
<p>I mean, seriously &#8211; the world has moved on. To be even vaguely interesting, I&#8217;m thinking about reusing relevant content from this blog, and some of the tooling I&#8217;m using like <a title="Gantt project for poducing Gantt charts" href="http://www.ganttproject.biz">Ganttproject</a> saves XML data that&#8217;s crying out for some transformation and JavaScript magic.  I have my own domain name and there&#8217;s an opportunity here to learn some stuff about infrastructure (and I am doing this MSc. to learn stuff in the first place), so I&#8217;ve been setting up a server. Again, checking back on the forums, some of the other students went the same route and there&#8217;s no evidence of it harming their chances. I think hosting the project website as a subdomain of crossedstreams.com makes sense &#8211; I already own the domain name and subdomains are a simple matter of extra DNS records, which is dead easy to set up with my provider, <a title="getNetPortal web hosting" href="https://getnetportal.com/access/">getNetPortal</a>.</p>
<p>I shan&#8217;t be hosting my site on getNetPortal though. As I spend most of my professional life working on the Java EE platform, Java is the obvious choice. Why not use a different language for the experience? Whilst I&#8217;ve got the time to learn a bit about hosting a public-facing website, I&#8217;m not sure I&#8217;ll have the time to learn a new way of creating websites that I&#8217;ll be happy with&#8230; not to mention that there&#8217;s a toolset and delivery pipeline that varies from platform to platform. Playing about with Erlang or some such will have to wait for another day.</p>
<p>GetNetPortal do host Java web applications, but it&#8217;s a shared <a title="Homepage for Apache Tomcat Java Application Server" href="http://tomcat.apache.org/">Tomcat</a> environment with a bunch of limitations as well as apparently risks to other people&#8217;s app availability if I deploy more than three times in a day. So where else can I go? Other specialised hosting companies are out there, but they&#8217;re not exactly cheap&#8230;</p>
<p>So I&#8217;ve provisioned myself a server on <a title="Amazon EC2 cloud service" href="http://aws.amazon.com/ec2/">Amazon&#8217;s Elastic Compute Cloud (Amazon EC2)</a>. Amazon provide a bunch of images themselves and one of them happens to be a Linux-based 64bit Tomcat 7 server. Time between me finding the image I wanted and having a working server available? About five minutes. No matter how you cut it, that&#8217;s pretty awesome. To be honest, the biggest challenge was choosing an image &#8211; there&#8217;s a huge number to choose from and I tried a couple of other images that weren&#8217;t as well set up before settling on the Amazon-provided one. The best thing &#8211; EC2 is pay-as-you-go, at dirt cheap rates for low utilisation.</p>
<p>For those of you who haven&#8217;t seen EC2, here&#8217;s a couple of screenshots that might help explain what it&#8217;s all about. First up, let&#8217;s take a look at the application server I provisioned.</p>
<div id="attachment_1007" class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.crossedstreams.com/wp-content/uploads/2011/09/Screenshot-AWS-Management-Console-Mozilla-Firefox.png"><img class="size-medium wp-image-1007" title="AWS Management Console" src="http://blog.crossedstreams.com/wp-content/uploads/2011/09/Screenshot-AWS-Management-Console-Mozilla-Firefox-300x159.png" alt="AWS Management Console with my instances" width="300" height="159" /></a><p class="wp-caption-text">AWS Management Console with my instances</p></div>
<p>Checking my bill tonight, I can see an itemised account of exactly what I&#8217;ve been billed for. Being able to see this level of detail should let me stay in control of what I&#8217;m spending.</p>
<div id="attachment_1006" class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.crossedstreams.com/wp-content/uploads/2011/09/Screenshot-Amazon-Web-Services-Mozilla-Firefox.png"><img class="size-medium wp-image-1006" title="Amazon Web Services - Billing" src="http://blog.crossedstreams.com/wp-content/uploads/2011/09/Screenshot-Amazon-Web-Services-Mozilla-Firefox-300x290.png" alt="Amazon Web Services - Billing" width="300" height="290" /></a><p class="wp-caption-text">Amazon Web Services - Billing</p></div>
<p>The rest of my time has been spent having a look around my new server, setting up Tomcat (to host a placeholder app in the root context) and iptables (to route traffic from the privileged ports 80 and 443 out to the ports Tomcat is listening on &#8211; 8080 and 8443 &#8211; thus avoiding the need to install a dedicated webserver or run Tomcat with root privileges), setting up some self-signed SSL certificates (I&#8217;ll need those so that I can bring up apps that require logon &#8211; without SSL, those usernames and passwords would be floating around the internetz in clear, negating the point of their existence) and finally scripting up the setup process in case I need to set this stuff up again.</p>
<p>Now, I can tick off the project tasks around setting up hosting nice and early. Quite a productive weekend!</p>
<div class="disclaimer">These are my thoughts and opinions and do not reflect
those of anyone else. Read the <a href="disclaimer">disclaimer</a> for more verbal
teflon.</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.crossedstreams.com/development/setting-up-my-project-website/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Essays on the State of the Art and Future of Text Mining</title>
		<link>http://blog.crossedstreams.com/development/essays-on-the-state-of-the-art-and-future-of-text-mining/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=essays-on-the-state-of-the-art-and-future-of-text-mining</link>
		<comments>http://blog.crossedstreams.com/development/essays-on-the-state-of-the-art-and-future-of-text-mining/#comments</comments>
		<pubDate>Wed, 04 May 2011 22:08:20 +0000</pubDate>
		<dc:creator>Paul Brabban</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://blog.crossedstreams.com/?p=976</guid>
		<description><![CDATA[The coursework for this Text Mining module has been quite challenging. Each week we had a task to complete, along the lines of evaluating training of a part-of-speech tagger (a piece of software that tries to tag words with the part of speech they serve), or create a named entity recogniser (a piece of software [...]]]></description>
			<content:encoded><![CDATA[<p>The coursework for this Text Mining module has been quite challenging. Each week we had a task to complete, along the lines of evaluating training of a part-of-speech tagger (a piece of software that tries to tag words with the part of speech they serve), or create a named entity recogniser (a piece of software that tries to work out that some sequences of words have meaning above their component parts &#8211; for example &#8220;New York&#8221; means something different to &#8220;new&#8221; and &#8220;York&#8221;) using various methods. As I&#8217;ve worked through though, the goals have become clear &#8211; we were building up components that could work in sequence to process text. Neat.</p>
<p>One aspect of the coursework that was unusual was that it is all to be handed in together at the end, rather than week by week. If I&#8217;m honest it&#8217;d probably have been a little easier if I&#8217;d done the coursework in step with the lecture days &#8211; I actually fell a little behind because of various commitments.</p>
<p>Then there was the essay. A 3,000 word essay on the state of the art of text mining and my views for the future of the field.</p>
<p>I&#8217;ve not written an essay for at least 15 years now, and getting started was a real challenge. Text mining and Semantic Web maybe? Sentiment analysis is the future? I was pulling my hair out, trying to find an angle that I could argue cleanly though, citing academic research and the like. I&#8217;ve been screwing up outlines on bits of paper about a week now!</p>
<p>That said, when I headed into Manchester yesterday and sat in my lectures, I had something of an epiphany. I guess the problem was that I feel the field has huge untapped potential, and I struggle to argue through a point of view I care about when I can&#8217;t see the current approaches panning out. I&#8217;m going to take a bit of a risk, and write an essay that (constructively) criticises some aspects of text mining today, proposing and arguing through a slightly different approach.</p>
<p>We&#8217;ll see how it goes &#8211; the last few bits of paper have so far avoided a one-way ticket to the bin. Hopefully I can produce a well-argued, reasonably interesting essay that I&#8217;ll get some marks for!</p>
<div class="disclaimer">These are my thoughts and opinions and do not reflect
those of anyone else. Read the <a href="disclaimer">disclaimer</a> for more verbal
teflon.</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.crossedstreams.com/development/essays-on-the-state-of-the-art-and-future-of-text-mining/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why I didn&#8217;t write any software for Windows Mobile</title>
		<link>http://blog.crossedstreams.com/development/why-i-didnt-write-any-software-for-windows-mobile/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=why-i-didnt-write-any-software-for-windows-mobile</link>
		<comments>http://blog.crossedstreams.com/development/why-i-didnt-write-any-software-for-windows-mobile/#comments</comments>
		<pubDate>Tue, 25 Jan 2011 23:46:22 +0000</pubDate>
		<dc:creator>Paul Brabban</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Mobile]]></category>

		<guid isPermaLink="false">http://blog.crossedstreams.com/?p=940</guid>
		<description><![CDATA[A few year ago, around 2006 at a guess, I saved up a bit of my hard-earned dollar and bought a Dell Axim X51v. It was a wonderful little device for the time and I fancied having a go at writing software for it. So I went to the Microsoft website to find out how [...]]]></description>
			<content:encoded><![CDATA[<p>A few year ago, around 2006 at a guess, I saved up a bit of my hard-earned dollar and bought a <a href="http://en.wikipedia.org/wiki/Dell_Axim">Dell Axim X51v</a>. It was a wonderful little device for the time and I fancied having a go at writing software for it.</p>
<p>So I went to the Microsoft website to find out how to do that, where I was confronted with a request for more cash. In order to write a line of code for Windows Mobile at that time, you had to shell out for licenses to use Microsoft&#8217;s IDE and developer tools. That&#8217;s on top of whatever fees that MS was getting from Dell and the license I&#8217;d bought with the device to actually run Windows Mobile.</p>
<p>Naturally, I baulked at the idea and never gave it a go.</p>
<p>Nor have I bought anything from Microsoft since &#8211; although that wasn&#8217;t a conscious decision. It&#8217;s just that since then, there hasn&#8217;t been anything that wanted to do in terms of development that mandated some kind of payment. Case in point &#8211; my faithful little HTC Magic, succeeded by my Samsung Galaxy S mobile phones. These phones are thoroughly awesome bits of kit which run on Android technology, and recently I had my first dabble in Android development.</p>
<p>Of course, everything you need to write software for Android is freely available on the web, and you can expect a post of two about how that&#8217;s going.</p>
<p>Out of curiosity, I <a href="http://create.msdn.com/en-us/home/getting_started">checked back in on Microsoft</a>, and it sure looks like you can write for Windows Mobile these days for free. Would it still cost money to write for Windows Mobile if the competition wasn&#8217;t giving away their goodies for free? I also had a look at Apple&#8217;s tooling to build stuff for the iPhone but I couldn&#8217;t work out if it&#8217;s free right now or not. (I couldn&#8217;t be bothered to look for more than a minute or two to be honest &#8211; any readers know?)</p>
<p>I wonder if my decisions since then would have played out any differently if I&#8217;d been able to just download the stuff I&#8217;d needed to have a go back on &#8217;06? Who knows, I might have gotten hooked on the Microsoft toolset like Visual Studio.</p>
<div class="disclaimer">These are my thoughts and opinions and do not reflect
those of anyone else. Read the <a href="disclaimer">disclaimer</a> for more verbal
teflon.</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.crossedstreams.com/development/why-i-didnt-write-any-software-for-windows-mobile/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>A quick post from my Kindle</title>
		<link>http://blog.crossedstreams.com/development/a-quick-post-from-my-kindle/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=a-quick-post-from-my-kindle</link>
		<comments>http://blog.crossedstreams.com/development/a-quick-post-from-my-kindle/#comments</comments>
		<pubDate>Sat, 01 Jan 2011 20:04:12 +0000</pubDate>
		<dc:creator>Paul Brabban</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Kindle]]></category>

		<guid isPermaLink="false">http://blog.crossedstreams.com/development/a-quick-post-from-my-kindle/</guid>
		<description><![CDATA[The web browser that comes on the new Kindle 3 is pretty neat, supporting everything I&#8217;ve thrown at it so far&#8230; including this blog&#8217;s dashboard. That means I can post from my Kindle. Not sure I&#8217;d want to do that much, as the keyboard is functional rather than comfortable. Happy new year! These are my [...]]]></description>
			<content:encoded><![CDATA[<p>The web browser that comes on the new Kindle 3 is pretty neat, supporting everything I&#8217;ve thrown at it so far&#8230; including this blog&#8217;s dashboard.</p>
<p>That means I can post from my Kindle. Not sure I&#8217;d want to do that much, as the keyboard is functional rather than comfortable.</p>
<p>Happy new year!</p>
<div class="disclaimer">These are my thoughts and opinions and do not reflect
those of anyone else. Read the <a href="disclaimer">disclaimer</a> for more verbal
teflon.</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.crossedstreams.com/development/a-quick-post-from-my-kindle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oracle Sues Google over Android</title>
		<link>http://blog.crossedstreams.com/development/oracle-sues-google-over-android/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=oracle-sues-google-over-android</link>
		<comments>http://blog.crossedstreams.com/development/oracle-sues-google-over-android/#comments</comments>
		<pubDate>Fri, 13 Aug 2010 22:58:46 +0000</pubDate>
		<dc:creator>Paul Brabban</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://blog.crossedstreams.com/?p=821</guid>
		<description><![CDATA[News has emerged of legal action being taken by Oracle (which recently acquired Sun Microsystems, the company behind Java) against Google over alleged infringements of patents in the Android operating system which currently enjoys great popularity in the mobile phone market. As I&#8217;ve been giving software patents a bit of thought recently, I find this [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://arstechnica.com/tech-policy/news/2010/08/oracle-sues-google-over-use-of-java-in-android-sdk.ars">News has emerged</a> of legal action being taken by Oracle (which recently acquired Sun Microsystems, the company behind Java) against Google over alleged infringements of patents in the Android operating system which currently enjoys great popularity in the mobile phone market.</p>
<p>As I&#8217;ve been giving <a href="http://blog.crossedstreams.com/development/on-software-patents/">software patents</a> a bit of thought recently, I find this development quite interesting. The actual complaint against Google has been posted on <a title="Oracle vs. Google on VentureBeat" href="http://mobile.venturebeat.com/2010/08/12/oracle-sues-google-over-android/">VentureBeat</a> and is worth a read. The language used comes over as direct and aggressive, but I think that&#8217;s just the way these legal claims are phrased generally.</p>
<p>There are a number of patents involved, all issued in the United States &#8211; so what are the alleged infringements? Let&#8217;s take a look &#8211; I&#8217;ll link the patents mentioned to copies of the claims and give a few thoughts based on a quick review of what I think the gist is. I should also say that patent claims are generally pretty dull to read so I don&#8217;t claim to have done a detailed analysis!</p>
<p><a href="http://www.google.com/patents/about?id=dyQGAAAAEBAJ&amp;dq=6125447">US Patent No. 6125447, &#8220;Protection domains to provide security in a computer system&#8221;</a> filed in 1997. Lays out mechanisms to manage what software components can do in a computer system.</p>
<p><a href="http://www.google.com/patents/about?id=G1YGAAAAEBAJ&amp;dq=6,192,476">US Patent No. 6192476, &#8220;Controlling access to a resource&#8221;</a>, filed again in 1997. A method for controlling, for example, the access a thread has to system resources based on what code is running in the thread at the time.</p>
<p><a href="http://www.google.com/patents/about?id=TzsPAAAAEBAJ&amp;dq=5966702">US Patent No. 5966702, &#8220;Method and apparatus for pre-processing and packaging class files&#8221;</a> filed in 1999. A collection of mechanisms used in Java&#8217;s classloading operations.</p>
<p><a href="http://www.patentgenius.com/patent/7426720.html">US Patent No. 7426720, &#8220;System and method for dynamic preloading of classes through memory space cloning of a master runtime system process&#8221;</a>, filed 2003. Er &#8211; what the title says!</p>
<p><a href="http://www.google.com/patents/about?id=8xkPAAAAEBAJ&amp;dq=RE38104">US Patent No. RE38104, &#8220;Method and apparatus for resolving data references in generated code&#8221;</a>, a re-issue of another patent originally filed in 1992 &#8211; three years before Java was released &#8211; by <a href="http://en.wikipedia.org/wiki/James_Gosling"><em>the</em> James Gosling</a>. This patent is all about mechanisms Java uses to achieve the flexibility of an interpreted language with performance more akin to a compiled language. I wonder if this (potential) patent suit was a driver for Gosling&#8217;s departure from Oracle in early 2010?</p>
<p><a href="http://www.google.com/patents/about?id=U-4UAAAAEBAJ&amp;dq=6910205">US Patent No. 6910205, &#8220;Interpreting functions utilizing a hybrid of virtual and native machine&#8221;</a>, filed 2002. More mechanisms Java uses to improve performance.</p>
<p><a href="http://www.google.com/patents/about?id=mEwEAAAAEBAJ&amp;dq=6061520">US Patent No. 6061520, &#8220;Method and system for performing static initialization&#8221;</a>, filed 1998, improving performance of initialising static arrays.</p>
<p>Regardless of your views on software patents in general, I&#8217;d say these patents are quite well written and quite specific to the ways Java works. It&#8217;s likely that many will view this action as evil Oracle sniping at good ol&#8217; Google, but I&#8217;m not sure I share that view.</p>
<p>This isn&#8217;t a corporate giant picking on the little guy &#8211; right now, Oracle is  worth around $115bn, and Google weighs in at around $158bn. Why shouldn&#8217;t Oracle use the intellectual property assets it acquired when it bought Sun?</p>
<p>Will this lawsuit damage Google or kill Android? I don&#8217;t think so &#8211; besides the size and diversity of Google, Oracle and Google don&#8217;t seem to be directly competing in related domains, so it wouldn&#8217;t make much sense for Oracle to actually want to damage Google. I expect that this action is a move to get Oracle a slice of the Android pie and I think it might succeed.</p>
<p>Will Oracle&#8217;s customers turn away because of this action? Oracle&#8217;s big in the corporate world, and big companies aren&#8217;t very likely to take issue with business machinations such as these.</p>
<p>It could turn evil from there. If legal action against Google sticks, is it possible for action to be taken against everyone downstream of Google from the phone companies to we the users? It&#8217;s more difficult to imagine those kinds of moves being played by Oracle &#8211; there would surely then be reputational damage.</p>
<p>Another question I&#8217;m not sure of the answer to &#8211; where is OpenJDK in all this? Does this action present a future risk to these open source efforts or are there differences in licensing between Android and other open source initiatives?</p>
<p>At this stage at least, it seems to me that Oracle is playing the patent game by the rules. If there&#8217;s something wrong, it&#8217;s with the game, not the players.</p>
<div class="disclaimer">These are my thoughts and opinions and do not reflect
those of anyone else. Read the <a href="disclaimer">disclaimer</a> for more verbal
teflon.</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.crossedstreams.com/development/oracle-sues-google-over-android/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Hibernate 3 Tip &#8211; Log PreparedStatement bindings</title>
		<link>http://blog.crossedstreams.com/development/hibernate-3-tip-log-preparedstatement-bindings/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=hibernate-3-tip-log-preparedstatement-bindings</link>
		<comments>http://blog.crossedstreams.com/development/hibernate-3-tip-log-preparedstatement-bindings/#comments</comments>
		<pubDate>Wed, 04 Aug 2010 18:23:24 +0000</pubDate>
		<dc:creator>Paul Brabban</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://blog.crossedstreams.com/?p=811</guid>
		<description><![CDATA[I was trying to see what values were being bound to placeholders in the JDBC PreparedStatements generated by Hibernate DAO test classes I&#8217;ve created as they go about their persistent business. Dead easy, right? Hibernate supports a configuration parameter &#8216;show_sql&#8217;. Set that to true and see what&#8217;s going on under the covers. Well&#8230; not so [...]]]></description>
			<content:encoded><![CDATA[<p>I was trying to see what values were being bound to placeholders in the JDBC PreparedStatements generated by Hibernate DAO test classes I&#8217;ve created as they go about their persistent business.</p>
<p>Dead easy, right? Hibernate supports a configuration parameter &#8216;show_sql&#8217;. Set that to true and see what&#8217;s going on under the covers. Well&#8230; not so much. For a simple save operation, setting that results in the following logged output:</p>
<blockquote><p>Hibernate: insert into ComponentGroup (name, id) values (?, ?)</p></blockquote>
<p>Not exactly what I was hoping for. I don&#8217;t know what values have been bound to those two question-marks. After a bit of faffing and google-fu, I found <a href="http://sathyasekar.wordpress.com/2008/12/29/enabling-log4j-logging-in-hibernate/">this short-but-sweet post</a> which showed a number of additional logging options to enable (assuming use of log4j). As it turns out, the important one in this case is:</p>
<blockquote><p>log4j.logger.org.hibernate.type=TRACE</p></blockquote>
<p>Which add a little more detail to the output:</p>
<blockquote><p>Hibernate: insert into ComponentGroup (name, id) values (?, ?)<br />
19:23:40,753 TRACE StringType:151 &#8211; binding &#8216;group1&#8242; to parameter: 1<br />
19:23:40,754 TRACE LongType:151 &#8211; binding &#8217;1&#8242; to parameter: 2</p></blockquote>
<p>It has to be the TRACE level, not DEBUG, and I can now see that the effective SQL, substituting for the placeholders is</p>
<blockquote><p>insert into ComponentGroup(name, id) values (&#8216;group1&#8242;, 1)</p></blockquote>
<p>which helps me work out the detail of what&#8217;s going on.</p>
<div class="disclaimer">These are my thoughts and opinions and do not reflect
those of anyone else. Read the <a href="disclaimer">disclaimer</a> for more verbal
teflon.</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.crossedstreams.com/development/hibernate-3-tip-log-preparedstatement-bindings/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quick Review of &#8216;Spring in Action&#8217;</title>
		<link>http://blog.crossedstreams.com/development/quick-review-of-spring-in-action/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=quick-review-of-spring-in-action</link>
		<comments>http://blog.crossedstreams.com/development/quick-review-of-spring-in-action/#comments</comments>
		<pubDate>Sun, 01 Aug 2010 21:24:40 +0000</pubDate>
		<dc:creator>Paul Brabban</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://blog.crossedstreams.com/?p=702</guid>
		<description><![CDATA[My better half bought me a copy of Spring in Action (2nd Edition) by Craig Walls last year. I think it&#8217;s been a great help for me as I&#8217;ve been getting started with Spring. I&#8217;d say the first four chapters are worth reading in sequence to get a feel for what Spring does and how [...]]]></description>
			<content:encoded><![CDATA[<p>My better half bought me a copy of <a href="http://www.amazon.co.uk/Spring-Action-Craig-Walls/dp/1933988134/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1270933333&amp;sr=8-1">Spring in Action (2nd Edition)</a> by Craig Walls last year. I think it&#8217;s been a great help for me as I&#8217;ve been getting started with Spring.</p>
<p>I&#8217;d say the first four chapters are worth reading in sequence to get a feel for what Spring does and how it does it.</p>
<p>Chapter 1 introduces what Spring does, with some really nice examples of how using the dependency injection capabilities allows components to be mocked up and unit tested much more easily. I think writing good unit tests can be challenging (well, it is for me anyway) so it&#8217;s nice to see this theme taking a prominent role.</p>
<p>Chapters 2 and 3 start onto a description of Spring&#8217;s dependency injection capabilities, from declaring beans and references to craziness like declaratively substituting method implementations in a class.</p>
<p>Chapter 4 moves on to Spring support for aspect-oriented programming, a technique with which behaviours of an application that really don&#8217;t belong in an object&#8217;s code (think security, auditing, etc.) can be defined outside of your business logic. There&#8217;s a nice theme of examples running through these chapters that somehow does make this stuff make intuitive sense.</p>
<p>From here on in things get a bit more esoteric. Other topics I found interesting were database access (covering JDBC, Hibernate, JPA and more), web services, EJB and JMS &#8211; but there are many more. For these later topics, you tend to get a little background and step-by-step introductions with examples. Given the range of topics there&#8217;s a often a surprising depth. The material has also proven to be quite accessible when I&#8217;ve gone back for reference.</p>
<p>There aren&#8217;t really any downsides. Where I&#8217;d like the material to go deeper there are other books I can get that are more specific. The occasional humour can be irritating if I&#8217;m in the wrong mood but hey, it&#8217;s in moderation.</p>
<p>If you&#8217;re looking for a good general introduction to what Spring is and what it can do for you,  can recommend this book.</p>
<div class="disclaimer">These are my thoughts and opinions and do not reflect
those of anyone else. Read the <a href="disclaimer">disclaimer</a> for more verbal
teflon.</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.crossedstreams.com/development/quick-review-of-spring-in-action/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>On Software Patents</title>
		<link>http://blog.crossedstreams.com/development/on-software-patents/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=on-software-patents</link>
		<comments>http://blog.crossedstreams.com/development/on-software-patents/#comments</comments>
		<pubDate>Thu, 01 Jul 2010 21:25:05 +0000</pubDate>
		<dc:creator>Paul Brabban</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[patents]]></category>

		<guid isPermaLink="false">http://blog.crossedstreams.com/?p=773</guid>
		<description><![CDATA[As I&#8217;ve been trying to broaden my knowledge of IT and software development, I thought it would be a good idea to read up on the issues around Intellectual Property as it relates to software &#8211; specifically, the idea of software patents and the implications for developers. I think this stuff is important &#8211; infringement [...]]]></description>
			<content:encoded><![CDATA[<p>As I&#8217;ve been trying to broaden my knowledge of IT and software development, I thought it would be a good idea to read up on the issues around Intellectual Property as it relates to software &#8211; specifically, the idea of software patents and the implications for developers. I think this stuff is important &#8211; infringement of patents can lead to legal action which is expensive and can damage reputations.</p>
<p>There&#8217;s a lot of information out there on the subject, so rather than just repeat stuff that&#8217;s already been said, I thought I would link off a few resources I thought were informative/enjoyable and why.</p>
<p>I found <a href="http://en.wikipedia.org/wiki/Paul_Graham_%28computer_programmer%29">Paul Graham</a>&#8216;s essay, &#8216;<a href="http://www.paulgraham.com/softwarepatents.html">Are Software Patents Evil?</a>&#8216; after reading a few other resources, but I&#8217;d recommend it as a first read as it&#8217;s not too long and it has a prosaic style which I thought was quite accessible. It also seems to be a fairly balanced account of the pros and cons of software patents, whereas the other resources I found tended to be in one camp or the other.</p>
<p>Ciaran O&#8217;Riordan has published a <a href="http://ciaran.compsoc.com/software-patents.html">lengthy overview</a> of the state of play with Software Patents in Europe, also referencing interesting material about the reality of software patents and impact on innovation in the US. There&#8217;s a lot of information here between the content and the links and I found it took a bit of digesting, but worth it to find out the recent history with regards software patent legislation.</p>
<p><a href="http://www.iusmentis.com/computerprograms/opensourcesoftware/patentrisks/">Patent Risks of Open Source Software</a> is a nice short article, focusing on the legal risks inherent in Open Source. There are some good points made in this paper, answering questions like &#8216;can you just swap out an open source component that infringes a patent for a custom component you wrote yourself and be safe?&#8217;. Although the article is focussed on Open Source, it seems (to me) that most of it is actually applicable to software in general &#8211; how much protection do you really get if the closed source software that you&#8217;re using is found to infringe patents?</p>
<p>I couldn&#8217;t decide whether a user of software that infringes on a third party&#8217;s patent could be liable for infringement themselves, so I asked the <a href="http://stackoverflow.com/questions/3160683/is-patent-infringement-transitive">question on stackoverflow.com</a>. The answer seems to be that yes, a user could be liable, and there are a couple of statements and links off to articles that support that conclusion.</p>
<p>It seems to be something of a consensus that the software patent situation is becoming more heated, and that this focus is being driven by <a href="http://www.apple.com/pr/library/2010/03/02patents.html">newer</a> <a href="http://en.wikipedia.org/wiki/1-Click#Barnes_.26_Noble">players</a> in the game taking legal action perhaps inappropriately against other parties infringing their patents. Searching for company names and &#8216;patent&#8217; tends to find sequences of results that patent-related news for that company.</p>
<p>The most surprising thing for me about this whole patent business is that <a href="http://en.wikipedia.org/wiki/Term_of_patent">a patent lasts twenty years</a>. In IT today, the world changes week by week and month by month. <a href="http://www.walthowe.com/navnet/history.html">Twenty years ago, there was no such thing as a website</a>. I guess no-one patented the idea of a website. I wonder how the world would be different if someone had?</p>
<p>Pop quiz &#8211; can you think of an example of a computing technology that succeeded because it wasn&#8217;t patented, or one that succeeded because it was?</p>
<div class="disclaimer">These are my thoughts and opinions and do not reflect
those of anyone else. Read the <a href="disclaimer">disclaimer</a> for more verbal
teflon.</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.crossedstreams.com/development/on-software-patents/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nexus and OpenJDK</title>
		<link>http://blog.crossedstreams.com/development/nexus-and-openjdk/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=nexus-and-openjdk</link>
		<comments>http://blog.crossedstreams.com/development/nexus-and-openjdk/#comments</comments>
		<pubDate>Mon, 21 Jun 2010 21:27:25 +0000</pubDate>
		<dc:creator>Paul Brabban</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://blog.crossedstreams.com/?p=767</guid>
		<description><![CDATA[An odd one tonight, using the Nexus Repository Manager with OpenJDK, the open source Java implementation. Nexus mostly works fine, but fails to re-index the public repository group with (according to the wrapper log) a JVM crash. jvm 1    &#124; 2010-06-21 20:55:11 INFO  [pool-1-thread-1] &#8211; o.s.n.i.DefaultInde~          &#8211; Cascading merge of group indexes for group &#8220;public&#8221;, [...]]]></description>
			<content:encoded><![CDATA[<p>An odd one tonight, using the <a href="http://nexus.sonatype.org/">Nexus Repository Manager</a> with OpenJDK, the open source Java implementation. Nexus mostly works fine, but fails to re-index the public repository group with (according to the wrapper log) a JVM crash.</p>
<blockquote><p>jvm 1    | 2010-06-21 20:55:11 INFO  [pool-1-thread-1] &#8211; o.s.n.i.DefaultInde~          &#8211; Cascading merge of group indexes for group &#8220;public&#8221;, where repository &#8220;releases&#8221; is member.<br />
wrapper  | JVM exited unexpectedly.<br />
wrapper  | JVM exited in response to signal UNKNOWN (11).</p></blockquote>
<p>The problem manifested in the Eclipse IDE when the repositories view wouldn&#8217;t update, showing an empty folder under the Nexus public repo.</p>
<p>Switching out the OpenJDK implementation for the Sun implementation fixes the problem, and now re-indexing the public repository group works fine. Bug report <a href="https://issues.sonatype.org/browse/NEXUS-3603">NEXUS-3603</a> raised, but if you&#8217;re seeing this issue swapping the Java implementations seems to work.</p>
<div class="disclaimer">These are my thoughts and opinions and do not reflect
those of anyone else. Read the <a href="disclaimer">disclaimer</a> for more verbal
teflon.</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.crossedstreams.com/development/nexus-and-openjdk/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>End of Patterns for e-Business</title>
		<link>http://blog.crossedstreams.com/development/end-of-patterns-for-e-business/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=end-of-patterns-for-e-business</link>
		<comments>http://blog.crossedstreams.com/development/end-of-patterns-for-e-business/#comments</comments>
		<pubDate>Tue, 01 Jun 2010 21:03:43 +0000</pubDate>
		<dc:creator>Paul Brabban</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://blog.crossedstreams.com/?p=753</guid>
		<description><![CDATA[Well, the P4EB exam was last week, so that wraps up that module &#8211; unless something goes terribly, terribly wrong and I have to resit! The exam deviated from the previous years&#8217; exams quite a bit. In two parts, the first part being pretty much just bookwork, the second part being a choice of three [...]]]></description>
			<content:encoded><![CDATA[<p>Well, the P4EB exam was last week, so that wraps up that module &#8211; unless something goes terribly, terribly wrong and I have to resit!</p>
<p>The exam deviated from the previous years&#8217; exams quite a bit. In two parts, the first part being pretty much just bookwork, the second part being a choice of three questions and more analysis based. In previous years, the second part was a set of three standalone questions, which meant that they were pretty well defined and it was fairly easy to see what knowledge the question wanted you to demonstrate.</p>
<p>This year, the second part consisted of business description and context diagram that was then used as the basis for all three questions. I thought that the questions weren&#8217;t so well defined, and so I&#8217;m not totally sure how much or little I should have answered with. Oh well &#8211; time will tell!</p>
<p>That&#8217;s also half-way through the taught part of the course &#8211; three down, three to go. For the last three I&#8217;ll be heading back to Computer Science modules, probably centred on Logic, Ontologies and Natural Language Processing &#8211; which means that I need to spend some quality time with mathematical logic this summer ready for next year.</p>
<div class="disclaimer">These are my thoughts and opinions and do not reflect
those of anyone else. Read the <a href="disclaimer">disclaimer</a> for more verbal
teflon.</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.crossedstreams.com/development/end-of-patterns-for-e-business/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

