<?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>Spyfoos&#039; Speculations</title>
	<atom:link href="http://www.spyfoos.com/index.php/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.spyfoos.com</link>
	<description></description>
	<lastBuildDate>Tue, 24 Jan 2012 21:46:35 +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>SAS vs. World Programming &#8211; Opinion of the Advocate General</title>
		<link>http://www.spyfoos.com/index.php/2011/11/29/sas-vs-world-programming-opinion-of-the-advocate-general/</link>
		<comments>http://www.spyfoos.com/index.php/2011/11/29/sas-vs-world-programming-opinion-of-the-advocate-general/#comments</comments>
		<pubDate>Tue, 29 Nov 2011 21:24:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[copyright]]></category>
		<category><![CDATA[sas]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[wpl]]></category>

		<guid isPermaLink="false">http://www.spyfoos.com/?p=293</guid>
		<description><![CDATA[So the Advocate General to the ECJ has submitted its opinion to the Court on the questions submitted by the High Court of Justice of England and Wales in the SAS vs World Programming case that i wrote about here and here. The Advocate concludes the following: (1) Article 1(2) of Council Directive 91/250/EEC of [...]]]></description>
			<content:encoded><![CDATA[<p>So the Advocate General to the ECJ has submitted its <a href="http://curia.europa.eu/jurisp/cgi-bin/form.pl?lang=en&amp;jurcdj=jurcdj&amp;newform=newform&amp;docj=docj&amp;docop=docop&amp;docnoj=docnoj&amp;typeord=ALLTYP&amp;numaff=&amp;ddatefs=22&amp;mdatefs=11&amp;ydatefs=2011&amp;ddatefe=29&amp;mdatefe=11&amp;ydatefe=2011&amp;nomusuel=&amp;domaine=&amp;mots=&amp;resmax=100&amp;Submit=Rechercher" target="_blank">opinion</a> to the Court on the questions submitted by the High Court of Justice of England and Wales in the SAS vs World Programming case that i wrote about <a href="http://www.spyfoos.com/index.php/2010/07/23/sas-vs-world-programming/">here</a> and <a href="http://www.spyfoos.com/index.php/2010/07/29/sas-vs-world-programming-sas-version/" target="_blank">here</a>.</p>
<p>The Advocate concludes the following:</p>
<blockquote><p>(1)</p>
<p>Article 1(2) of Council Directive 91/250/EEC of 14 May 1991 on the legal protection of computer programs is to be interpreted as meaning that the functionalities of a computer program and the programming language are not eligible, as such, for copyright protection. It will be for the national court to examine whether, in reproducing these functionalities in its computer program, the author of the program has reproduced a substantial part of the elements of the first program which are the expression of the author’s own intellectual creation.</p>
<p>(2)</p>
<p>Articles 1(2) and 6 of Directive 91/250 are to be interpreted as meaning that it is not regarded as an act subject to authorisation for a licensee to reproduce a code or to translate the form of the code of a data file format so as to be able to write, in his own computer program, a source code which reads and writes that file format, provided that that act is absolutely indispensable for the purposes of obtaining the information necessary to achieve interoperability between the elements of different programs. That act must not have the effect of enabling the licensee to recopy the code of the computer program in his own program, a question which will be for the national court to determine.</p>
<p>(3)</p>
<p>Article 5(3) of Directive 91/250, read in conjunction with Articles 4(a) and (b) and 5(1) thereof, is to be interpreted as meaning that the expression ‘any of the acts of loading, displaying, running, transmitting or storing the computer program [which the person having the right] is entitled to do’ relates to the acts for which that person has obtained authorisation from the rightholder and to the acts of loading and running necessary in order to use the computer program in accordance with its intended purpose. Acts of observing, studying or testing the functioning of a computer program which are performed in accordance with that provision must not have the effect of enabling the person having a right to use a copy of the program to access information which is protected by copyright, such as the source code or the object code.</p>
<p>(4)</p>
<p>Article 2(a) of Directive 2001/29/EC of the European Parliament and of the Council of 22 May 2001 on the harmonisation of certain aspects of copyright and related rights in the information society is to be interpreted as meaning that the reproduction, in a computer program or a user manual, of certain elements described in the manual for another computer program may constitute an infringement of the copyright in the latter manual if – a question which will be for the national court to determine – the elements reproduced in this way are the expression of their author’s own intellectual creation.</p></blockquote>
<p>The opinion is pretty much a slam dunk for World Programming. The only hiccup is the issue related to the copying of parts of SAS&#8217; manuals, but that is a minor issue compared to a situation where World Programming would have been restricted in their ability to produce a product compatible with SAS&#8217; product. Now we just have to hope that the Court agrees with the Advocate General.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.spyfoos.com/index.php/2011/11/29/sas-vs-world-programming-opinion-of-the-advocate-general/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Off-topic: Restaurant in Alcudia, Mallorca</title>
		<link>http://www.spyfoos.com/index.php/2011/10/23/off-topic-restaurant-in-alcudia-mallorca/</link>
		<comments>http://www.spyfoos.com/index.php/2011/10/23/off-topic-restaurant-in-alcudia-mallorca/#comments</comments>
		<pubDate>Sun, 23 Oct 2011 07:57:53 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.spyfoos.com/?p=289</guid>
		<description><![CDATA[If you ever find yourself in Alcudia, Mallorca around dinner time try out Sa Portassa. Basic but good Mallorcan food, especially the pa amb olí is very good.]]></description>
			<content:encoded><![CDATA[<p>If you ever find yourself in Alcudia, Mallorca around dinner time try out <a href="http://maps.google.com/maps/place?cid=1311025724199995053&amp;q=mallorca+sa+portassa&amp;sll=39.661687,3.083315&amp;sspn=0.458142,0.157785&amp;ie=UTF8&amp;ll=39.810646,3.083038&amp;spn=0.001055,0.001373&amp;t=h&amp;z=10&amp;vpsrc=0" target="_blank">Sa Portassa</a>. Basic but good Mallorcan food, especially the <a href="http://es.wikipedia.org/wiki/Pa_amb_oli" target="_blank">pa amb olí </a>is very good.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.spyfoos.com/index.php/2011/10/23/off-topic-restaurant-in-alcudia-mallorca/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oracle Java 7 and &#8220;Commercial Features&#8221;</title>
		<link>http://www.spyfoos.com/index.php/2011/07/28/oracle-java-7-and-commercial-features/</link>
		<comments>http://www.spyfoos.com/index.php/2011/07/28/oracle-java-7-and-commercial-features/#comments</comments>
		<pubDate>Thu, 28 Jul 2011 20:55:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[copyright]]></category>
		<category><![CDATA[evil]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[license]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[sla]]></category>

		<guid isPermaLink="false">http://www.spyfoos.com/?p=277</guid>
		<description><![CDATA[Oracle has just announced the general availability of Java 7 SE including Java SE Advanced and Java SE Suite. Being a software license nerd I of course skimmed the Java SE License Agreement (full title &#8220;Oracle Binary Code License Agreement for the Java SE Platform Products&#8221;). The license contains some interesting wording regarding &#8220;Commercial Features&#8221; [...]]]></description>
			<content:encoded><![CDATA[<p>Oracle has just announced the general availability of Java 7 SE including Java SE Advanced and Java SE Suite.</p>
<p>Being a software license nerd I of course skimmed the <a href="http://www.oracle.com/technetwork/java/javase/terms/license/index.html" target="_blank">Java SE License Agreement </a>(full title &#8220;Oracle Binary Code License Agreement for the Java SE Platform Products&#8221;).</p>
<p>The license contains some interesting wording regarding &#8220;Commercial Features&#8221; in section 1, 2 and SUPPLEMENTAL LICENSE TERMS section A and G. The &#8220;Commercial Features&#8221; are defined in <a href="http://www.oracle.com/technetwork/java/javase/terms/products/index.html" target="_blank">this</a> document (PDF version with better layout <a href="http://www.oracle.com/technetwork/java/javase/documentation/java-se-product-editions-397069.pdf" target="_blank">here</a>). Please note that the specification of &#8220;Commercial Features&#8221; is not part of the license as such and therefor subject to change at Oracle&#8217;s discretion.</p>
<blockquote>
<p lang="en-US" xml:lang="en-US"><em>Table 1-1 &#8211; Commercial Features in Java SE Product Editions</em></p>
<table border="1" cellspacing="0" cellpadding="7" frame="hsides" rules="rows" bordercolor="#000000">
<colgroup>
<col></col>
<col></col>
<col></col>
</colgroup>
<tbody>
<tr valign="top">
<td height="14" bgcolor="#ffffff">
<p lang="en-US" xml:lang="en-US"><strong>Feature</strong></p>
</td>
<td bgcolor="#ffffff">
<p lang="en-US" xml:lang="en-US"><strong>Java SE</strong></p>
<p lang="en-US" xml:lang="en-US"><strong>Advanced</strong></p>
</td>
<td bgcolor="#ffffff">
<p lang="en-US" xml:lang="en-US"><strong>Java SE</strong></p>
<p lang="en-US" xml:lang="en-US"><strong>Suite</strong></p>
</td>
<td bgcolor="#ffffff">
<p lang="en-US" xml:lang="en-US"><strong>Java SE</strong></p>
<p lang="en-US" xml:lang="en-US"><strong>Suite</strong></p>
</td>
</tr>
<tr valign="top">
<td height="1" bgcolor="#ffffff">
<p lang="en-US" xml:lang="en-US"><strong>Profiling and Diagnostics</strong></p>
</td>
<td bgcolor="#ffffff">
<p lang="en-US" xml:lang="en-US">
</td>
<td bgcolor="#ffffff">
<p lang="en-US" xml:lang="en-US">
</td>
<td></td>
</tr>
<tr valign="top">
<td height="1" bgcolor="#ffffff">
<p lang="en-US" xml:lang="en-US">JRockit Flight Recorder (1)</p>
</td>
<td bgcolor="#ffffff">
<p lang="en-US" xml:lang="en-US">Y</p>
</td>
<td bgcolor="#ffffff">
<p lang="en-US" xml:lang="en-US">Y</p>
</td>
<td bgcolor="#ffffff">
<p lang="en-US" xml:lang="en-US">JRockit JDK R28.1.3</p>
</td>
</tr>
<tr valign="top">
<td height="1" bgcolor="#ffffff">
<p lang="en-US" xml:lang="en-US">JRockit Mission Control Console observability (1)</p>
</td>
<td bgcolor="#ffffff">
<p lang="en-US" xml:lang="en-US">Y</p>
</td>
<td bgcolor="#ffffff">
<p lang="en-US" xml:lang="en-US">Y</p>
</td>
<td bgcolor="#ffffff">
<p lang="en-US" xml:lang="en-US">JRockit JDK R28.1.3<br />
JRockit Real Time 3.1.2<br />
JRockit Mission Control 3.1.2</p>
</td>
</tr>
<tr valign="top">
<td height="1" bgcolor="#ffffff">
<p lang="en-US" xml:lang="en-US">JRockit Mission Control Memory Leak Detector observability (1)</p>
</td>
<td bgcolor="#ffffff">
<p lang="en-US" xml:lang="en-US">Y</p>
</td>
<td bgcolor="#ffffff">
<p lang="en-US" xml:lang="en-US">Y</p>
</td>
<td bgcolor="#ffffff">
<p lang="en-US" xml:lang="en-US">JRockit JDK R28.1.3<br />
JRockit Real Time 3.1.2<br />
JRockit Mission Control 3.1.2</p>
</td>
</tr>
<tr valign="top">
<td height="1" bgcolor="#ffffff">
<p lang="en-US" xml:lang="en-US">JRE Usage Tracking</p>
</td>
<td bgcolor="#ffffff">
<p lang="en-US" xml:lang="en-US">Y</p>
</td>
<td bgcolor="#ffffff">
<p lang="en-US" xml:lang="en-US">Y</p>
</td>
<td bgcolor="#ffffff">
<p lang="en-US" xml:lang="en-US">Java for Business JRE 6u25<br />
Java for Business JRE 6u26<br />
Java for Business JRE 7</p>
</td>
</tr>
<tr valign="top">
<td height="1" bgcolor="#ffffff">
<p lang="en-US" xml:lang="en-US"><strong>Extreme Low Latency</strong></p>
</td>
<td bgcolor="#ffffff">
<p lang="en-US" xml:lang="en-US">
</td>
<td bgcolor="#ffffff">
<p lang="en-US" xml:lang="en-US">
</td>
<td></td>
</tr>
<tr valign="top">
<td height="1" bgcolor="#ffffff">
<p lang="en-US" xml:lang="en-US">JRockit Real Time, Deterministic GC</p>
</td>
<td bgcolor="#ffffff">
<p lang="en-US" xml:lang="en-US">N</p>
</td>
<td bgcolor="#ffffff">
<p lang="en-US" xml:lang="en-US">Y</p>
</td>
<td bgcolor="#ffffff">
<p lang="en-US" xml:lang="en-US">JRockit JDK R28.1.3<br />
JRockit Real Time 3.1.2<br />
JRockit Mission Control 3.1.2</p>
</td>
</tr>
<tr valign="top">
<td height="1" bgcolor="#ffffff">
<p lang="en-US" xml:lang="en-US"><strong>Desktop</strong></p>
</td>
<td bgcolor="#ffffff">
<p lang="en-US" xml:lang="en-US">
</td>
<td bgcolor="#ffffff">
<p lang="en-US" xml:lang="en-US">
</td>
<td></td>
</tr>
<tr valign="top">
<td bgcolor="#ffffff">
<p lang="en-US" xml:lang="en-US">JRE Installer Auto-Update Off</p>
</td>
<td bgcolor="#ffffff">
<p lang="en-US" xml:lang="en-US">Y</p>
</td>
<td bgcolor="#ffffff">
<p lang="en-US" xml:lang="en-US">Y</p>
</td>
<td bgcolor="#ffffff">
<p lang="en-US" xml:lang="en-US">Java for Business JRE 6u25<br />
Java for Business JRE 6u26<br />
Java for Business JRE 7</p>
</td>
</tr>
</tbody>
</table>
</blockquote>
<p>It turns out the &#8220;Commercial Features&#8221; are subject to rather draconian restrictions (SUPPLEMENTAL LICENSE TERMS section A):</p>
<blockquote><p>A.  COMMERCIAL FEATURES.  You may not use the Commercial Features for running Programs, Java applets or applications in your internal business operations or for any commercial or production  purpose, or for any purpose other than as set forth in Sections B, C, D and E of these Supplemental Terms.  If You want to use the Commercial Features for any purpose other than as permitted in this Agreement, You must obtain a separate license from Oracle.</p></blockquote>
<p>As you can tell any meaningful business use of the &#8220;Commercial Features&#8221; are subject to a separate license.</p>
<p>So does the regular Java 7 SE download contain any of these &#8220;Commercial Features&#8221;? It does not look like it and the Java Se Advance and Java SE Suite packages doesn&#8217;t either, because they do not exist. From below two sections that appear at end of <a href="http://www.oracle.com/technetwork/java/javase/terms/products/index.html" target="_blank">this </a>document, it is clear that the Java SE Advanced and Java SE Suite &#8220;products&#8221; are a combination of the Java 7 SE and a number of separate packages.</p>
<blockquote>
<h2 lang="en-US" xml:lang="en-US">Installation of Java SE Product Editions</h2>
<p lang="en-US" xml:lang="en-US">Oracle does not provide installation programs that correspond directly to Java SE, Oracle Java SE Advanced and Oracle Java SE Suite. Depending on the features licensed, one or more of the following individual packages must be downloaded:</p>
<p lang="en-US" xml:lang="en-US">JRE JDK</p>
<p lang="en-US" xml:lang="en-US">JRockit JDK</p>
<p lang="en-US" xml:lang="en-US">JRockit Mission Control</p>
<p>Java for Business JRE</p>
<p>Java for Business JDK</p>
<h3>Licensing Considerations and Restricted-Use Licensing</h3>
<p lang="en-US" xml:lang="en-US">Some of the packages described in Installation of Java SE Product Editions install commercial features that are restricted to Oracle Java SE Advanced or Oracle Java SE Suite. For example, the JRockit JDK comes with a deterministic garbage collector that requires a Oracle Java SE Suite license.</p>
</blockquote>
<p>If you download (which you can do for instance <a href="http://www.oracle.com/technetwork/java/javase/downloads/jrefb-5u30-download-401429.html" target="_blank">here</a> and <a href="http://www.oracle.com/technetwork/middleware/jrockit/downloads/index.html" target="_blank">here</a>) and use these extra packages for the purposes outlined above (any meaning full business use) in combination with Java 7 SE you are subject to a separate (ostensibly payable) license.</p>
<p>The only mention I can find of this change from Oracle is <a href="http://blogs.oracle.com/henrik/entry/jrockit_is_now_free_and" target="_blank">this</a> blog post with the clearly misleading title &#8220;JRockit is Now Free (and Other Java License Updates)&#8221;, as this does not apply to the JRockit &#8220;Commercial Features&#8221; listed above.</p>
<p>You should make sure that your developers, ops people and relevant vendors of such service knows this, or you could end up breaching your license and owing Oracle a lot of money.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.spyfoos.com/index.php/2011/07/28/oracle-java-7-and-commercial-features/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dropbox Unzip</title>
		<link>http://www.spyfoos.com/index.php/2011/04/24/dropbox-unzip/</link>
		<comments>http://www.spyfoos.com/index.php/2011/04/24/dropbox-unzip/#comments</comments>
		<pubDate>Sun, 24 Apr 2011 12:42:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[automator]]></category>
		<category><![CDATA[dropbox]]></category>
		<category><![CDATA[incron]]></category>
		<category><![CDATA[inotify]]></category>
		<category><![CDATA[OSX]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[unzip]]></category>

		<guid isPermaLink="false">http://www.spyfoos.com/?p=256</guid>
		<description><![CDATA[Inspirer by this post where the author shows how to add automatic unzipping to a Dropbox folder on OS X, I wanted to see if something similar was easily achievable on Ubuntu (10.10). After a bit of searching I found incron. Quoting from the website incron &#8220;is an &#8220;inotify cron&#8221; system. It consists of a [...]]]></description>
			<content:encoded><![CDATA[<p>Inspirer by this <a href="http://wetzler.me/ios-unzipping/" target="_blank">post</a> where the author shows how to add automatic unzipping to a <a href="http://www.dropbox.com/" target="_blank">Dropbox</a> folder on OS X, I wanted to see if something similar was easily achievable on Ubuntu (10.10).</p>
<p>After a bit of searching I found <a href="http://inotify.aiken.cz/?section=incron&amp;page=about&amp;lang=en" target="_blank">incron</a>. Quoting from the website incron &#8220;is an &#8220;inotify cron&#8221; system. It consists of a daemon and a table manipulator. You can use it a similar way as the regular cron. The difference is that the inotify cron handles filesystem events rather than time periods.&#8221;</p>
<p>To create a folder in your Dropbox that automatically unzips any zip file dropped into it first install incron. It is available in the Ubuntu Universe repository and can be installed using:</p>
<blockquote><p>sudo apt-get install incron</p></blockquote>
<p>After the package is installed you must add the username of all users who should be permitted to add jobs to incron to /etc/incron.allow like this(replace [username] with your username):</p>
<blockquote><p>sudo echo &#8220;[username]&#8221; &gt;&gt; /etc/incron.allow</p></blockquote>
<p>Next create the unzip folder in your Dropbox folder:</p>
<blockquote><p>mkdir [path to your Dropbox folder]/unzip</p></blockquote>
<p>Next we need to add the actual unzip job row to incron like this:</p>
<blockquote><p>incrontab -e</p></blockquote>
<p>This opens the user incron table in the deafult editor. Insert the following line, replacing [path to your Dropbox folder] with the absolute path (don&#8217;t use ~) to your Dropbox folder:</p>
<blockquote><p>[path to your Dropbox folder]/unzip IN_CLOSE_WRITE unzip $@/$# -d $@</p></blockquote>
<p>Check that the job row was added to your incron table:</p>
<blockquote><p>incrontab -l</p></blockquote>
<p>This should output the line you just added above. Finally we have to start the incron daemon:</p>
<blockquote><p>sudo incrond</p></blockquote>
<p>Now try copying a zip file into the Dropbox/unzip folder. If everything works it should unzip automatically. This obviously only so long the machine you installed the incron job is online and the daemon is running.</p>
<p>If you start thinking about the possible applications for this pattern are endless. How about converting just about any document type to PDF just by dropping it into a Dropbox subfolder? First install unoconv using:</p>
<blockquote><p>sudo apt-get install unoconv</p></blockquote>
<p>Then create a folder called &#8220;topdf&#8221; and add the following instruction using incrontab -e :</p>
<blockquote><p>[path to your Dropbox folder]/topdf IN_CLOSE_WRITE unoconv -f pdf $@/$# -o $@</p></blockquote>
<p>Voila any file of a format readable by OpenOffice dropped into the &#8220;topdf&#8221; folder will instantly be converted to PDF.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.spyfoos.com/index.php/2011/04/24/dropbox-unzip/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Emacs from master on Ubuntu</title>
		<link>http://www.spyfoos.com/index.php/2011/04/10/emacs-from-master-on-ubuntu/</link>
		<comments>http://www.spyfoos.com/index.php/2011/04/10/emacs-from-master-on-ubuntu/#comments</comments>
		<pubDate>Sun, 10 Apr 2011 16:08:34 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[emacs]]></category>
		<category><![CDATA[git]]></category>

		<guid isPermaLink="false">http://www.spyfoos.com/?p=217</guid>
		<description><![CDATA[Check out source using: git clone git://git.savannah.gnu.org/emacs.git Generate configure script: cd emacs ./autogen.sh Configure make and install: ./configure make sudo make install Done!]]></description>
			<content:encoded><![CDATA[<p>Check out source using:</p>
<blockquote><p>git clone git://git.savannah.gnu.org/emacs.git</p></blockquote>
<p>Generate configure script:</p>
<blockquote><p>cd emacs</p>
<p>./autogen.sh</p></blockquote>
<p>Configure make and install:</p>
<blockquote><p>./configure<br />
make<br />
sudo make install</p></blockquote>
<p>Done!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.spyfoos.com/index.php/2011/04/10/emacs-from-master-on-ubuntu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A simple chat app using Aleph, Websockets and Clojure</title>
		<link>http://www.spyfoos.com/index.php/2010/08/27/a-simple-chat-app-using-aleph-websockets-and-clojure/</link>
		<comments>http://www.spyfoos.com/index.php/2010/08/27/a-simple-chat-app-using-aleph-websockets-and-clojure/#comments</comments>
		<pubDate>Fri, 27 Aug 2010 09:26:23 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[aleph]]></category>
		<category><![CDATA[clojure]]></category>
		<category><![CDATA[netty]]></category>
		<category><![CDATA[websocket]]></category>
		<category><![CDATA[websockets]]></category>

		<guid isPermaLink="false">http://www.spyfoos.com/?p=116</guid>
		<description><![CDATA[I have implemented a small example shoving how to use the websocket support in Aleph, the asynchronous webframework for Clojure built on Netty. The example is tested with Chrome and Firefox on Ubuntu. It should work in all modern browsers as it relies on web-socket-js for websocket emulation in browsers that do not have native support. [...]]]></description>
			<content:encoded><![CDATA[<p>I have implemented a small example shoving how to use the websocket support in <a href="http://github.com/ztellman/aleph" target="_blank">Aleph</a>, the asynchronous webframework for <a href="http://clojure.org/" target="_blank">Clojure</a> built on <a href="http://www.jboss.org/netty" target="_blank">Netty</a>.</p>
<p>The example is tested with Chrome and Firefox on Ubuntu. It should work in all modern browsers as it relies on <a href="http://github.com/gimite/web-socket-js/" target="_blank">web-socket-js</a> for websocket emulation in browsers that do not have native support. Please note the updated Usage instructions. The socket-policy-server necessary for Flash websocket emulation has to listen on port 843 (at least that is the first place Flash asks for the policy file) so the server has to be run using sudo.</p>
<p>If you are interested the example is at hosted on <a href="http://github.com/maacl/aleph-ws-test" target="_blank">github</a>, along with usage instructions.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.spyfoos.com/index.php/2010/08/27/a-simple-chat-app-using-aleph-websockets-and-clojure/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Oracle vs. Google &#8211; implementing the JVM specification</title>
		<link>http://www.spyfoos.com/index.php/2010/08/24/oracle-vs-google-implementing-the-java-specification/</link>
		<comments>http://www.spyfoos.com/index.php/2010/08/24/oracle-vs-google-implementing-the-java-specification/#comments</comments>
		<pubDate>Tue, 24 Aug 2010 14:19:47 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[copyright]]></category>
		<category><![CDATA[dalvik]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jvm]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[patents]]></category>

		<guid isPermaLink="false">http://www.spyfoos.com/?p=218</guid>
		<description><![CDATA[A lot has already been written on the Oracle vs. Google Android case. (UPDATED: Some are brilliant.) Some (UPDATE:  are illuminating, some less so. Since the complaint is devoid of any details as to how Android infringes upon the patents listed in the complaint, I will focus on the alleged copyright infringement. Here too Oracle is not specific [...]]]></description>
			<content:encoded><![CDATA[<p>A lot has already been written on the Oracle vs. Google Android <a href="http://www.scribd.com/doc/35811761/Oracle-s-complaint-against-Google-for-Java-patent-infringement" target="_self">case</a>. (UPDATED: <a href="http://blog.headius.com/2010/08/my-thoughts-on-oracle-v-google.html" target="_blank">Some</a> are brilliant.) <a href="http://tirania.org/blog/archive/2010/Aug-13.html" target="_self">Some</a> (UPDATE:  are illuminating, <a href="http://fosspatents.blogspot.com/2010/08/oracle-vs-google-licensing-issues.html" target="_blank">some</a> less so. Since the complaint is devoid of any details as to how Android infringes upon the patents listed in the complaint, I will focus on the alleged copyright infringement. Here too Oracle is not specific but it is clear that the infringement is alleged at least in part on the basis of unlicensed use of specification(s) in which Oracle holds copyright(cf. Count VIII section 38 of the complaint) .</p>
<p>For context Oracle in the complaint defines Android as:</p>
<blockquote><p>The Android operating system software “stack” consists of Java applications running on a Java-based object-oriented application framework, and core libraries running on a “Dalvik” virtual machine (VM) that features just-in-time (JIT) compilation.</p></blockquote>
<p><span style="font-size: 13.3333px;">One aspect that appears to confuse matters is what <a href="http://en.wikipedia.org/wiki/Dalvik_(software)" target="_blank">Dalvik</a> is. Dalvik is VM but *not* a Java VM. Dalvik executes .dex files which are created from .class files produced by a Java compiler. The .dex files are created by a tool called &#8220;dx&#8221;. As such Dalvik does not implement the Java Language Specification. The &#8220;dx&#8221; tool does however appear to implement part of the Java <a href="http://java.sun.com/docs/books/jvms/second_edition/html/VMSpecTOC.doc.html" target="_blank">Virtual Machine Specification</a>, namely <a href="http://java.sun.com/docs/books/jvms/second_edition/html/ClassFile.doc.html" target="_self">the part</a> that specifies the .class file format. As the &#8220;dx&#8221; tool does not comply with the conditions of SUN&#8217;s <a href="http://java.sun.com/docs/books/jvms/second_edition/html/Copyright.doc.html" target="_self">license grant</a> t</span><span style="font-size: 13.3333px;">he question is then: Does Google need a copyright license from SUN to implement the &#8220;dx&#8221; tool?</span></p>
<p>From a European perspective the recent SAS vs. World Programming(WPL) case sheds some very interesting light on this issue. The case a addresses the application of copyright to programming languages, interfaces and functionality. While the judge submits all of the questions to the ECJ for a preliminary ruling, he clearly thinks, on the strength English precedents(specifically the Navitaire <a href="http://www.bailii.org/ew/cases/EWHC/Ch/2004/1725.html" target="_blank">case</a>) that neither programming languages, interfaces or functionality is protectable by copyright. If the ECJ concurs with the judges opinion it is hard to see why Google would need a license to implement the .class file format as part of their &#8220;dx&#8221; tool.</p>
<p>Would the analysis under US copyright law be the same?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.spyfoos.com/index.php/2010/08/24/oracle-vs-google-implementing-the-java-specification/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SAS vs World Programming &#8211; SAS&#8217; version</title>
		<link>http://www.spyfoos.com/index.php/2010/07/29/sas-vs-world-programming-sas-version/</link>
		<comments>http://www.spyfoos.com/index.php/2010/07/29/sas-vs-world-programming-sas-version/#comments</comments>
		<pubDate>Thu, 29 Jul 2010 20:02:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[copyright]]></category>
		<category><![CDATA[sas]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[world_programming]]></category>
		<category><![CDATA[wpl]]></category>

		<guid isPermaLink="false">http://www.spyfoos.com/?p=182</guid>
		<description><![CDATA[SAS issued a press release today with its take on the recent decision in the case between the two companies. While WPL&#8217;s press release might have been s optimistic in its evaluation of the decision, SAS&#8217; press release is a master piece of hypocrisy and highly tendentious. The headline: &#8220;Court finds World Programming Ltd. Infringed [...]]]></description>
			<content:encoded><![CDATA[<p>SAS issued a <a href="http://www.sas.com/news/preleases/WPL.html" target="_blank">press release</a> today with its take on the <a href="http://www.bailii.org/ew/cases/EWHC/Ch/2010/1829.html" target="_blank">recent decision</a> in the case between the two companies.</p>
<p>While WPL&#8217;s <a href="http://teamwpc.co.uk/press/world_programming_secures_high_court_victory_against_SAS">press release</a> might have been s optimistic in its evaluation of the decision, SAS&#8217; press release is a master piece of hypocrisy and highly tendentious. The headline:</p>
<blockquote><p>&#8220;Court finds World Programming Ltd. Infringed on SAS Copyrights; refers case to European Court of Justice&#8221;</p></blockquote>
<p>Technically this is wrong. The judge referred a number of key questions to the ECJ &#8211; not the case it self. More specifically the judge asked for a <a href="http://en.wikipedia.org/wiki/European_Court_of_Justice#References_for_a_preliminary_ruling" target="_blank">preliminary ruling</a> on 6 questions (<a href="http://www.bailii.org/ew/cases/EWHC/Ch/2010/1829.html#para332" target="_blank">para 332</a> i, ii, iii, v, vi and viii):</p>
<blockquote><p>&#8220;i)	Although I am not persuaded that Pumfrey J was wrong to conclude in <em>Navitaire</em> that, on the true interpretation of Article 1(2) of the Software  Directive, copyright in computer programs does not protect programming  languages from being copied, I agree with him that this is a question on  which guidance from the ECJ is required (see paragraphs 211-218 above).</p>
<p>ii)	Although I am not persuaded that Pumfrey J was wrong to conclude in <em>Navitaire</em> that, on the true interpretation of Article 1(2) of the Software  Directive, copyright in computer programs does not protect interfaces  from being copied where this can be achieved without decompiling the  object code, I consider this is also a question on which guidance from  the ECJ is required (see paragraphs 219-227 above).</p>
<p>iii)	Although I am not persuaded that Pumfrey J was wrong to conclude in <em>Navitaire</em> that, on the true interpretation of Article 1(2) of the Software  Directive, copyright in computer programs does not protect the functions  of the programs from being copied, and although his decision on that  point was upheld by the Court of Appeal in <em>Nova</em>, I consider that this is also a question on which guidance from the ECJ is required (see paragraphs 228-238 above).</p>
<p>&#8230;</p>
<p>v)	I consider that the reasoning which supports Pumfrey J&#8217;s  interpretation of Article 1(2) of the Software Directive also applies to  Article 2(a) of the Information Society Directive, but again this is a  question on which guidance from the ECJ is required (see paragraphs  251-256 above).</p>
<p>vi)	On the assumption that Article 2(a) of the Information Society  Directive is to be interpreted in the same manner as Article 1(2) of the  Software Directive, WPL has not infringed SAS Institute&#8217;s copyright in  the SAS Manuals by producing or testing WPS (see paragraphs 257-267  above).&#8221;</p></blockquote>
<p>SAS completely neglects to mention that the judge is clearly prepared to find in favor of WPL in all these questions and cites English precedents in support of such a decision. He asks for the ECJs confirmation of his interpretation because the basis for the rules in English law is EU Directives (see here for the<a href="http://www.hmcourts-service.gov.uk/cms/801.htm" target="_blank"> practice directions </a>the court operates under).</p>
<p>SAS goes on to state the following:</p>
<blockquote><p>&#8220;The court also found that WPL acted outside the scope of its license  agreement for SAS Learning Edition software by using that product to  develop WPL’s World Programming System (WPS) software.&#8221;</p></blockquote>
<p>What the judge actually said was this (my emphasis):</p>
<blockquote><p>vii)	WPL&#8217;s use of the SAS Learning Edition falls outside the scope of  the terms of the relevant licences (see paragraphs 276-290 above).</p>
<p>viii)	The interpretation of Article 5(3) of the Software Directive is  another question on which guidance from the ECJ is required (see  paragraphs 291-311 and 314 above).</p>
<p><em>ix)	On the interpretation of Article 5(3) which I favour, WPL&#8217;s use  of the Learning Edition is within Article 5(3), and to the extent that  the licence terms prevent this they are null and void, with the result  that none of WPL&#8217;s acts complained of was a breach of contract or an  infringement of copyright except perhaps one (see paragraphs 313-315  above).</em></p></blockquote>
<p>Also on this issue SAS chooses not to disclose that the judge is prepared to find in favor of WPL.</p>
<p>Accusing WPL of spinning the courts decision and then applying tornado class spin to the decision yourself is just pathetic.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.spyfoos.com/index.php/2010/07/29/sas-vs-world-programming-sas-version/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Clojure, Jetty 7 and WebSockets</title>
		<link>http://www.spyfoos.com/index.php/2010/07/28/clojure-jetty-7-and-websockets/</link>
		<comments>http://www.spyfoos.com/index.php/2010/07/28/clojure-jetty-7-and-websockets/#comments</comments>
		<pubDate>Wed, 28 Jul 2010 10:19:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[clojure]]></category>
		<category><![CDATA[jetty]]></category>
		<category><![CDATA[jetty_7]]></category>
		<category><![CDATA[websockets]]></category>

		<guid isPermaLink="false">http://www.spyfoos.com/?p=171</guid>
		<description><![CDATA[I found this gist by Chris McDevitt which is a simple chat server and browser client that uses Jetty 7, Clojure and WebSockets. I turned out to be quite a hassle to get it running so I thought I would document it here so others might save some time. I have create a project on github [...]]]></description>
			<content:encoded><![CDATA[<p>I found this <a href="http://gist.github.com/281490" target="_blank">gist</a> by Chris McDevitt which is a simple chat server and browser client that uses Jetty 7, Clojure and WebSockets.</p>
<p>I turned out to be quite a hassle to get it running so I thought I would document it here so others might save some time.</p>
<p>I have create a <a href="http://github.com/maacl/websocket-test" target="_blank">project</a> on github that includes all the dependencies. I run it in Emacs using swank-clojure-project. The two last forms start the two servers &#8211; one is the websocket chat server, the other just serves the index.html file (this is necessary for the web_socket.js  to work). I have only been able to make this work in browsers with native websocket support (Chrome and Safari). If anybody can figure out what goes wrong in the other browsers (e.g. Firefox) let me know, and I will update.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.spyfoos.com/index.php/2010/07/28/clojure-jetty-7-and-websockets/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Budget airline fail</title>
		<link>http://www.spyfoos.com/index.php/2010/07/27/budget-airline-fail/</link>
		<comments>http://www.spyfoos.com/index.php/2010/07/27/budget-airline-fail/#comments</comments>
		<pubDate>Tue, 27 Jul 2010 11:12:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[airline]]></category>
		<category><![CDATA[Bruxelles]]></category>
		<category><![CDATA[bruxelles_airlines]]></category>
		<category><![CDATA[fail]]></category>
		<category><![CDATA[flight]]></category>

		<guid isPermaLink="false">http://www.spyfoos.com/?p=162</guid>
		<description><![CDATA[I am not picky about the airlines I fly with and I am happy to fly coach unless the flight is longer than 5 hours. That said I prefer a reasonable measure of mechanical integrity of the seat I am suppose to travel in. This was not the case on my 6.20 AM (sic!) CPH -&#62; [...]]]></description>
			<content:encoded><![CDATA[<p>I am not picky about the airlines I fly with and I am happy to fly coach unless the flight is longer than 5 hours. That said I prefer a reasonable measure of mechanical integrity of the seat I am suppose to travel in. This was not the case on my 6.20 AM (sic!) CPH -&gt; BRU flight with Bruxelles Airlines on 8 June.</p>
<p><a rel="attachment wp-att-164" href="http://www.spyfoos.com/index.php/2010/07/27/budget-airline-fail/img00006-20100608-0616/"><img class="aligncenter size-medium wp-image-164" title="IMG00006-20100608-0616" src="http://www.spyfoos.com/wp-content/uploads/2010/07/IMG00006-20100608-0616-300x225.jpg" alt="" width="300" height="225" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.spyfoos.com/index.php/2010/07/27/budget-airline-fail/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

