<?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>software-entropy</title>
	<atom:link href="http://software-entropy.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://software-entropy.com</link>
	<description>thoughts about software development and its fragility</description>
	<lastBuildDate>Thu, 19 Apr 2012 21:47:48 +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>Daily Scala WTF</title>
		<link>http://software-entropy.com/2012/04/19/daily-scala-wtf-2/</link>
		<comments>http://software-entropy.com/2012/04/19/daily-scala-wtf-2/#comments</comments>
		<pubDate>Thu, 19 Apr 2012 21:47:48 +0000</pubDate>
		<dc:creator>eddardstark</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://software-entropy.com/?p=35</guid>
		<description><![CDATA[Another one:  this one failed when I deleted a method, when it tried to compile a file still trying to reference the method. Spectacularly, it caused the compiler to crash, rather than simply report a compile error: error: java.lang.Error: trying &#8230; <a href="http://software-entropy.com/2012/04/19/daily-scala-wtf-2/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Another one:  this one failed when I deleted a method, when it tried to compile a file still trying to reference the method. Spectacularly, it caused the compiler to crash, rather than simply report a compile error:</p>
<pre>error: java.lang.Error: trying to do lub/glb of typevar ?Q</pre>
]]></content:encoded>
			<wfw:commentRss>http://software-entropy.com/2012/04/19/daily-scala-wtf-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Daily Scala WTF</title>
		<link>http://software-entropy.com/2012/04/18/daily-scala-wtf/</link>
		<comments>http://software-entropy.com/2012/04/18/daily-scala-wtf/#comments</comments>
		<pubDate>Wed, 18 Apr 2012 23:13:59 +0000</pubDate>
		<dc:creator>eddardstark</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://software-entropy.com/?p=32</guid>
		<description><![CDATA[Error recently received from scala compiler: error: type mismatch; found : ?0(in method visit) =&#62; ?0(in method visit) where type ?0(in method visit) &#60;: java.io.Serializable required: (some other)?0(in method visit) =&#62; ? where type (some other)?0(in method visit) &#60;: java.io.Serializable &#8230; <a href="http://software-entropy.com/2012/04/18/daily-scala-wtf/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Error recently received from scala compiler:</p>
<pre>error: type mismatch;
found : ?0(in method visit) =&gt; ?0(in method visit) where type ?0(in method visit) &lt;: java.io.Serializable
required: (some other)?0(in method visit) =&gt; ? where type (some other)?0(in method visit) &lt;: java.io.Serializable
new InOperator[Q, Serializable](expression.getField, expression.getValues.map(x =&gt; x))</pre>
<p>What?</p>
]]></content:encoded>
			<wfw:commentRss>http://software-entropy.com/2012/04/18/daily-scala-wtf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>All Dependency Managers Suck</title>
		<link>http://software-entropy.com/2011/12/29/all-dependency-managers-suck/</link>
		<comments>http://software-entropy.com/2011/12/29/all-dependency-managers-suck/#comments</comments>
		<pubDate>Thu, 29 Dec 2011 17:38:53 +0000</pubDate>
		<dc:creator>eddardstark</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://software-entropy.com/?p=28</guid>
		<description><![CDATA[I generally use Maven; I&#8217;ve used Ivy; I&#8217;ve used SBT.  I&#8217;ve even (long, long ago) checked my dependencies into SCM.  And every single one of them occasionally requires 'rm -rf somecachedirectory' to make them work.]]></description>
			<content:encoded><![CDATA[<p>I generally use Maven; I&#8217;ve used Ivy; I&#8217;ve used SBT.  I&#8217;ve even (long, long ago) checked my dependencies into SCM.  And every single one of them occasionally requires <code>'rm -rf somecachedirectory'</code> to make them work.</p>
]]></content:encoded>
			<wfw:commentRss>http://software-entropy.com/2011/12/29/all-dependency-managers-suck/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The only thing worse . . .</title>
		<link>http://software-entropy.com/2011/05/30/the-only-thing-worse/</link>
		<comments>http://software-entropy.com/2011/05/30/the-only-thing-worse/#comments</comments>
		<pubDate>Mon, 30 May 2011 21:33:00 +0000</pubDate>
		<dc:creator>eddardstark</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://software-entropy.com/?p=22</guid>
		<description><![CDATA[The only thing worse than searching for an answer to a technical problem on the internet and finding only forum posts without answers is searching for an answer to a technical problem on the internet and finding only forum posts &#8230; <a href="http://software-entropy.com/2011/05/30/the-only-thing-worse/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>The only thing worse than searching for an answer to a technical problem on the internet and finding only forum posts without answers is searching for an answer to a technical problem on the internet and finding only forum posts <strong>you originated</strong>, still without answers.</p>
]]></content:encoded>
			<wfw:commentRss>http://software-entropy.com/2011/05/30/the-only-thing-worse/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>More Tutorial Madness</title>
		<link>http://software-entropy.com/2011/01/30/more-tutorial-madness/</link>
		<comments>http://software-entropy.com/2011/01/30/more-tutorial-madness/#comments</comments>
		<pubDate>Mon, 31 Jan 2011 01:24:23 +0000</pubDate>
		<dc:creator>eddardstark</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://software-entropy.com/?p=16</guid>
		<description><![CDATA[So I&#8217;ve also been following Glen Mazza&#8217;s X.509 tutorial for JAX-WS, found here.  It has some of the same problems as the other ones.  But this post is about something different. Glen&#8217;s tutorial, and every other tutorial I&#8217;ve seen for &#8230; <a href="http://software-entropy.com/2011/01/30/more-tutorial-madness/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>So I&#8217;ve <em>also</em> been following Glen Mazza&#8217;s X.509 tutorial for JAX-WS, found <a href="http://www.jroller.com/gmazza/entry/metro_x509_profile">here</a>.  It has some of the same problems as the other ones.  But <em>this</em> post is about something different.</p>
<p>Glen&#8217;s tutorial, and every other tutorial I&#8217;ve seen for JAX-WS/Metro and WS-Security, includes configurations in the WSDL for the security engine like this (along with a lot of other policy markup, without explanation; one of my beefs with these is that they don&#8217;t actually <em>explain</em> what any of the stuff they&#8217;re asking you to do is for):</p>
<pre>&lt;sc:KeyStore wspp:visibility="private"
   location="/home/gmazza/workspace/DoubleIt/mykeys/servicestore.jks"
   type="JKS" storepass="sspass" alias="myservicekey" keypass="skpass"/&gt;
&lt;sc:TrustStore wspp:visibility="private" storepass="sspass"
   type="JKS"
   location="/home/gmazza/workspace/DoubleIt/mykeys/servicestore.jks"/&gt;</pre>
<p>So I understand this is a &#8220;quick and dirty&#8221; tutorial, but this is code that is <em>completely</em> unsuited for a production deployment.  Never mind the cleartext passwords which, given that there&#8217;s <em>never</em> really a good way to store them, may be excusable.  In no environment I&#8217;ve ever heard of would it be possible to hard-code the path to a keystore in a WSDL file and then deploy it to various environments (qa, prod, etc.).  Yet that&#8217;s how the tutorial specifies it.</p>
<p>So I&#8217;ve got a couple of complaints:</p>
<ol>
<li>I think it&#8217;s irresponsible for tutorial writers to take these kind of shortcuts, at least without noting them.  Every tutorial I&#8217;ve seen for JAX-WS and WS-Security has been had basically the same structure, and this is apparently what Netbeans generates.</li>
<li>I think it&#8217;s irresponsible of the Metro/Glassfish team to even <em>allow</em> this kind of configuration.  I found some documents today in the WSIT project mentioning that this configuration option was put in the project to make it quick and easy for developers to get started, and that it wasn&#8217;t intended for production use, although no good alternative was mentioned in the document.  And because it exists, every tutorial and document will use it.  And since developers are like lemmings, there are probably sysadmins all over the world silently cursing while hand-editing the production WSDL for the same web-service for the six-hundredth time.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://software-entropy.com/2011/01/30/more-tutorial-madness/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Failed Tutorials and Failed Standards</title>
		<link>http://software-entropy.com/2011/01/30/failed-tutorials-and-failed-standards/</link>
		<comments>http://software-entropy.com/2011/01/30/failed-tutorials-and-failed-standards/#comments</comments>
		<pubDate>Mon, 31 Jan 2011 01:24:04 +0000</pubDate>
		<dc:creator>eddardstark</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://software-entropy.com/?p=14</guid>
		<description><![CDATA[I&#8217;ve been recently trying to set up WS-Security on a web-service implementation I&#8217;m working on.  To that end, I&#8217;ve been trying to find out how to actually implement it.  I won&#8217;t say that the standard has failed me (yet), or &#8230; <a href="http://software-entropy.com/2011/01/30/failed-tutorials-and-failed-standards/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been recently trying to set up WS-Security on a web-service implementation I&#8217;m working on.  To that end, I&#8217;ve been trying to find out how to actually implement it.  I won&#8217;t say that the standard has failed me (yet), or that the internet has failed me.  I&#8217;ve actually found much useful information . . . and <em>maybe</em> I&#8217;m almost there.</p>
<p>But . . . there are roadblocks along the way.  There are surprisingly few actually <em>useful</em> resources available on these topics, despite the fact that WS-Security is <em>supposed</em> to be the standard way of securing SOAP web services.  No wonder everyone just adds a username and password to the WSDL data and leaves it at that.  Start with the WS-Security standards themselves.  They say things like (and I quote):</p>
<blockquote><p>The keywords &#8220;MUST&#8221;, &#8220;MUST NOT&#8221;, &#8220;REQUIRED&#8221;, &#8220;SHALL&#8221;, &#8220;SHALL NOT&#8221;, &#8220;SHOULD&#8221;, &#8220;SHOULD NOT&#8221;, &#8221;RECOMMENDED&#8221;, &#8220;MAY&#8221;, and &#8220;OPTIONAL&#8221; in this document are to be interpreted as described in RFC 2119.</p></blockquote>
<p>To which I have to say . . . really?!!!  Do I <em>really</em> need to read RFC 2119 to know what those words mean?  And if that&#8217;s the case (because you don&#8217;t use the words in a way a normal person can just understand), how do you expect anyone to actually <em>use</em> your standard?</p>
<p>Then there&#8217;s the tutorials (of which there are precious few).  To start with, Oracle has manged to make the java.net sites basically unavailable.  (Which is why there&#8217;s no quote for this assertion.)  But when you <em>can</em> access them, you find tutorials for using the standard Java JAX-WS framework to do WS-Security that say:</p>
<ol>
<li>You can&#8217;t, so replace the entire JVM&#8217;s JAX-WS implementation with the Metro one, for which it&#8217;s impossible to find the right JAR&#8217;s.</li>
<li>Once you do that, we can&#8217;t explain how to configure it, or what the schema is for the configuration language, or how it works.</li>
<li>Instead, use Netbeans to generate the boring, complex XML documents for you.</li>
<li>And, by the way, if you do, your application will only work in Glassfish, so good luck if you&#8217;re using a different application server.</li>
</ol>
<p>So I&#8217;m stuck reading tutorials written by Glen Mazza, mostly around Apache CXF.  Amazingly, after my experiences so far, these are actually useful.  <em>But</em> . . . they&#8217;re only <em>so</em> useful.  I&#8217;m staring <a href="http://www.jroller.com/gmazza/entry/cxf_x509_profile_secpol">here</a>, and my experience has been frustrating in various ways.</p>
<p>First, that tutorial actually says to look at two other tutorials he&#8217;s written, both of which reference <em>other</em> tutorials, and replace Step X sub-step Y with XYZ, etc.  A more frustrating experience of cut-and-paste I haven&#8217;t had in a while.  And when I&#8217;m done, things don&#8217;t quite work, either because of software version changes between the tutorial post&#8217;s writing and now, or environment changes, or because the author got somewhat confused in his writing, as I&#8217;ve been in reading.</p>
<p>Be that as it may, I think I&#8217;ve finally succeeded in making it work, so I have to hand it to Glen Mazza, since he&#8217;s the only one that presented something I could find that was <em>actually</em> useful.</p>
]]></content:encoded>
			<wfw:commentRss>http://software-entropy.com/2011/01/30/failed-tutorials-and-failed-standards/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Software Entropy</title>
		<link>http://software-entropy.com/2011/01/30/software-entropy/</link>
		<comments>http://software-entropy.com/2011/01/30/software-entropy/#comments</comments>
		<pubDate>Mon, 31 Jan 2011 01:23:34 +0000</pubDate>
		<dc:creator>eddardstark</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://software-entropy.com/?p=12</guid>
		<description><![CDATA[The title of this blog comes from the fact that I believe software code strictly follows the second law of thermodynamics.   Here are a couple of the English-language formulations of that law (from the Wikipedia article): - In a system, &#8230; <a href="http://software-entropy.com/2011/01/30/software-entropy/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>The title of this blog comes from the fact that I believe software code strictly follows the <a href="http://en.wikipedia.org/wiki/Second_law_of_thermodynamics">second law of thermodynamics</a>.   Here are a couple of the English-language formulations of that law (from the Wikipedia article):</p>
<blockquote><p>- In a system, a process that occurs will tend to increase the total entropy of the universe.- It is impossible to convert heat completely into work.- The entropy of the universe tends to a maximum.</p></blockquote>
<p>The idea of &#8220;software entropy,&#8221; or that disorder slowly creeps into evolving software code, isn&#8217;t new; it&#8217;s certainly not my invention.It just strikes me that not only is there such a thing as &#8220;software entropy&#8221; or &#8220;code entropy,&#8221; but that such chaos in code is in fact inevitable, much as the second law states that entropy is inevitably increasing in an isolated system.  (And yes, I&#8217;m aware that entropy != disorder in a meaningful sense in chemistry or physics; I&#8217;m using the word in its popular sense.)I think there are plenty of people in the software industry who can share stories of increasing disorder in a system&#8217;s design and code, and I think that much of that disorder occurs despite the best efforts of many bright people to prevent it.  There are even <a href="http://en.wikipedia.org/wiki/Agile_programming">theories and processes</a> which attempt to embrace and manage that disorder, which says something about how prevalent it is in the industry.But I personally think &#8220;software entropy&#8221; is more than something we need to guard against or manage.One implication the second law, as I understand it, is that when energy or heat moves from a hotter region or object to a cooler one, the net change in entropy of the system is always an increase.  And when work is applied to a system to move heat or energy from a colder region to a hotter one to increase the heat of the hotter one, energy is always &#8220;wasted&#8221; and there is always a net increase of entropy in the system.I think this is true of software code.  We can attempt, through rigorous standards and processes, application of our most senior staff, careful design, etc. (in other words with a great deal of &#8220;work&#8221; expended) to reduce the disorder in one application or one region of an application (for example via a rewrite or redesign, or through an extensive refactoring process), this effort always results in a net increase in disorder in other regions of the system.  Either our standards cause unintended problems or consequences, or we&#8217;ve pulled senior staff from other projects and those projects suffer, or we stop paying attention to the code of application A to focus on reviewing application B and the code of application A gets worse.So I&#8217;m going to writing about software design and construction, and &#8220;software entropy&#8221; is one of the things I&#8217;ll be considering on the way.I&#8217;ll leave with the following quotation (also from the WP article) that sometimes seems apt for the software industry:</p>
<blockquote><p>The tendency for entropy to increase in isolated systems is expressed in the second law of thermodynamics &#8211; perhaps the most pessimistic and amoral formulation in all human thought.- Greg Hill and Kerry Thornley, <em>Principia Discordia</em> (1965)</p></blockquote>
<p>[edit: I corrected a few typos and errors] </p>
]]></content:encoded>
			<wfw:commentRss>http://software-entropy.com/2011/01/30/software-entropy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>About this Blog</title>
		<link>http://software-entropy.com/2011/01/30/about-this-blog/</link>
		<comments>http://software-entropy.com/2011/01/30/about-this-blog/#comments</comments>
		<pubDate>Mon, 31 Jan 2011 01:21:34 +0000</pubDate>
		<dc:creator>eddardstark</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://software-entropy.com/?p=7</guid>
		<description><![CDATA[I&#8217;ve been designing and writing software for various IT departments since 1997, and I&#8217;ve spent a lot of that time wondering why the IT industry does what it does, and why the process of designing, writing, and using software seems &#8230; <a href="http://software-entropy.com/2011/01/30/about-this-blog/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been designing and writing software for various IT departments since 1997, and I&#8217;ve spent a lot of that time wondering why the IT industry does what it does, and why the process of designing, writing, and using software seems to be so problematic.</p>
<p>I intend for this blog to be about that process, and about the inevitable disorder that seems to result.</p>
]]></content:encoded>
			<wfw:commentRss>http://software-entropy.com/2011/01/30/about-this-blog/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

