<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>
<channel>
	<title>Comments on: Actor concurrency for Java</title>
	<atom:link href="http://blog.tmorris.net/actor-concurrency-for-java/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.tmorris.net/actor-concurrency-for-java/</link>
	<description>The weblog of Tony Morris</description>
	<pubDate>Tue, 06 Jan 2009 08:44:53 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6</generator>
		<item>
		<title>By: DonJuan</title>
		<link>http://blog.tmorris.net/actor-concurrency-for-java/#comment-24100</link>
		<dc:creator>DonJuan</dc:creator>
		<pubDate>Sun, 30 Nov 2008 06:41:50 +0000</pubDate>
		<guid isPermaLink="false">http://blog.tmorris.net/actor-concurrency-for-java/#comment-24100</guid>
		<description>Hi Tony,

Thanks for the response.

The article you pointed  is a bit complex for me as I lack knowledge of 'formal logic'  and I'll have to  gain significant knowledge in 'type theory' and other things the article is based on or referenes, before I'll be able to understand and appreciate the concept fully and be able to actually put it to use. My background is IT and not Computer Science.

I got exposed to functional programming through one of your java's  'throws' Monad article.
It got me interested enough to research about Monad.
And now I want more :-)

Since you got me in this confusion in the first place, I would like you to to help me out a little ;)

IT would be very helpful for me and newbies like me if you could write up an article on how to use FJ to create an actor-based server application with some example code.

Armed with an example I understand, it would help me explore more into functional programming and use it to solve problems better if it permits.</description>
		<content:encoded><![CDATA[<p>Hi Tony,</p>
<p>Thanks for the response.</p>
<p>The article you pointed  is a bit complex for me as I lack knowledge of &#8216;formal logic&#8217;  and I&#8217;ll have to  gain significant knowledge in &#8216;type theory&#8217; and other things the article is based on or referenes, before I&#8217;ll be able to understand and appreciate the concept fully and be able to actually put it to use. My background is IT and not Computer Science.</p>
<p>I got exposed to functional programming through one of your java&#8217;s  &#8216;throws&#8217; Monad article.<br />
It got me interested enough to research about Monad.<br />
And now I want more <img src='http://blog.tmorris.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Since you got me in this confusion in the first place, I would like you to to help me out a little <img src='http://blog.tmorris.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>IT would be very helpful for me and newbies like me if you could write up an article on how to use FJ to create an actor-based server application with some example code.</p>
<p>Armed with an example I understand, it would help me explore more into functional programming and use it to solve problems better if it permits.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tony Morris</title>
		<link>http://blog.tmorris.net/actor-concurrency-for-java/#comment-23981</link>
		<dc:creator>Tony Morris</dc:creator>
		<pubDate>Fri, 28 Nov 2008 21:05:30 +0000</pubDate>
		<guid isPermaLink="false">http://blog.tmorris.net/actor-concurrency-for-java/#comment-23981</guid>
		<description>Hi anzaan,
What you are seeking is called the Curry-Howard Isomorphism. Here is an excellent introduction http://en.wikibooks.org/wiki/Haskell/The_Curry-Howard_isomorphism</description>
		<content:encoded><![CDATA[<p>Hi anzaan,<br />
What you are seeking is called the Curry-Howard Isomorphism. Here is an excellent introduction <a href="http://en.wikibooks.org/wiki/Haskell/The_Curry-Howard_isomorphism" onclick="javascript:pageTracker._trackPageview('/outbound/comment/en.wikibooks.org');" rel="nofollow">http://en.wikibooks.org/wiki/Haskell/The_Curry-Howard_isomorphism</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: anzaan</title>
		<link>http://blog.tmorris.net/actor-concurrency-for-java/#comment-23937</link>
		<dc:creator>anzaan</dc:creator>
		<pubDate>Fri, 28 Nov 2008 10:44:07 +0000</pubDate>
		<guid isPermaLink="false">http://blog.tmorris.net/actor-concurrency-for-java/#comment-23937</guid>
		<description>@tony

Thanks for the response.

I had great pleasure reading your comments and was a bit disappointed when it came to an end though ;)

And also  I was a bit disappointed to realise that out of the two programmers camps you mentioned,  I   unfortunately  fall into the second  one.
Although you mentioned that its an objective refutable fact - and I take your words for it,
 I'm keeping my chins up with the help of my assumption that no empirical evidence has yet been found that says the ones from the second camp cannot  cross-over to first one over time.  :-)

I'll keep my eyes peeled on your blog  due to learning opportunity available here ;).</description>
		<content:encoded><![CDATA[<p>@tony</p>
<p>Thanks for the response.</p>
<p>I had great pleasure reading your comments and was a bit disappointed when it came to an end though <img src='http://blog.tmorris.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>And also  I was a bit disappointed to realise that out of the two programmers camps you mentioned,  I   unfortunately  fall into the second  one.<br />
Although you mentioned that its an objective refutable fact - and I take your words for it,<br />
 I&#8217;m keeping my chins up with the help of my assumption that no empirical evidence has yet been found that says the ones from the second camp cannot  cross-over to first one over time.  <img src='http://blog.tmorris.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>I&#8217;ll keep my eyes peeled on your blog  due to learning opportunity available here ;).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tony Morris</title>
		<link>http://blog.tmorris.net/actor-concurrency-for-java/#comment-23924</link>
		<dc:creator>Tony Morris</dc:creator>
		<pubDate>Fri, 28 Nov 2008 07:30:29 +0000</pubDate>
		<guid isPermaLink="false">http://blog.tmorris.net/actor-concurrency-for-java/#comment-23924</guid>
		<description>Hello anzaan,
The aforementioned debate is far from interesting. Pseudo-intellectuals and, in this case, an inability to maintain a coherent discussion (note the original objection and the subsequent slippery slope into fallacy e.g. argument from authority) bores me to tears, hence the abandonment &#8212; some are willingly stupid, oh well!. 

I'll see what I can do regarding echo server. Keep an eye out ;)</description>
		<content:encoded><![CDATA[<p>Hello anzaan,<br />
The aforementioned debate is far from interesting. Pseudo-intellectuals and, in this case, an inability to maintain a coherent discussion (note the original objection and the subsequent slippery slope into fallacy e.g. argument from authority) bores me to tears, hence the abandonment &mdash; some are willingly stupid, oh well!. </p>
<p>I&#8217;ll see what I can do regarding echo server. Keep an eye out <img src='http://blog.tmorris.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: anzaan</title>
		<link>http://blog.tmorris.net/actor-concurrency-for-java/#comment-23921</link>
		<dc:creator>anzaan</dc:creator>
		<pubDate>Fri, 28 Nov 2008 06:43:10 +0000</pubDate>
		<guid isPermaLink="false">http://blog.tmorris.net/actor-concurrency-for-java/#comment-23921</guid>
		<description>Very interesting debate.... and beyond my understanding mostly :-)
But I liked the example of “Creationism versus Evolution debate”. 
I had used it in a one of my arguments but in a different context.  I was just trying to draw parallel between a line of reasoning I came across and  how as soon as Creationism proponents  run out of their ammunition of rehearsed bullet point pseudo logics, they declare certain things are the way they are because god intended it to be so.
But that's another story.

I followed a few FJ tutorials and found them very impressive.
 But being a mere application developer with just enough understanding of Java to make it work mostly, I found the examples a little hard to grasp and replicate them  in a meaningful way for me. 
I build a Java TCP server for a vehicle tracking system and I was pleased with my work as it was my first attempt at socket programming as well as multi-threading and Its been working quite well apart from GC problems. But due to a new business prospect at our company I need to quickly come up with  a better solution than the one I have currently, as the number of connections to the server is likely to increase by anything between a few hundred to 1-2 thousands per month.
So my current challange is to find a good vertical scaling solution before horizontal scaling so the hardware cost  and  maintenance/operation complexity is kept at mimimum.
I have looked at few alternatives, learn Erlang, learn Scala or other dynamic languages that run on JVM that allows me to write Actor style application, or find a solution within Java.
Since I like the third option for obvious reasons, I have looked at a couple of options.
Kilim was the first one I looked at besides others. 

I like the idea behind Kilim but I'm not very comfortable with the idea of byte-code manipulation. 
I'm a big fan of unobtrusive drop-in-libraries and FunctionalJava is very appealing to me in that matter. 
But I find the examples a bit hard to grasp.

So, is there any chance that you could write up a quick and dirty Echo Server like example  that utilises Actors to do  some trivial tasks? 

It would me immensely appreciated and I'm sure it will be beneficial to other people looking for alternatives to the current shared-memory thread programming.</description>
		<content:encoded><![CDATA[<p>Very interesting debate&#8230;. and beyond my understanding mostly <img src='http://blog.tmorris.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /><br />
But I liked the example of “Creationism versus Evolution debate”.<br />
I had used it in a one of my arguments but in a different context.  I was just trying to draw parallel between a line of reasoning I came across and  how as soon as Creationism proponents  run out of their ammunition of rehearsed bullet point pseudo logics, they declare certain things are the way they are because god intended it to be so.<br />
But that&#8217;s another story.</p>
<p>I followed a few FJ tutorials and found them very impressive.<br />
 But being a mere application developer with just enough understanding of Java to make it work mostly, I found the examples a little hard to grasp and replicate them  in a meaningful way for me.<br />
I build a Java TCP server for a vehicle tracking system and I was pleased with my work as it was my first attempt at socket programming as well as multi-threading and Its been working quite well apart from GC problems. But due to a new business prospect at our company I need to quickly come up with  a better solution than the one I have currently, as the number of connections to the server is likely to increase by anything between a few hundred to 1-2 thousands per month.<br />
So my current challange is to find a good vertical scaling solution before horizontal scaling so the hardware cost  and  maintenance/operation complexity is kept at mimimum.<br />
I have looked at few alternatives, learn Erlang, learn Scala or other dynamic languages that run on JVM that allows me to write Actor style application, or find a solution within Java.<br />
Since I like the third option for obvious reasons, I have looked at a couple of options.<br />
Kilim was the first one I looked at besides others. </p>
<p>I like the idea behind Kilim but I&#8217;m not very comfortable with the idea of byte-code manipulation.<br />
I&#8217;m a big fan of unobtrusive drop-in-libraries and FunctionalJava is very appealing to me in that matter.<br />
But I find the examples a bit hard to grasp.</p>
<p>So, is there any chance that you could write up a quick and dirty Echo Server like example  that utilises Actors to do  some trivial tasks? </p>
<p>It would me immensely appreciated and I&#8217;m sure it will be beneficial to other people looking for alternatives to the current shared-memory thread programming.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Paul King</title>
		<link>http://blog.tmorris.net/actor-concurrency-for-java/#comment-17220</link>
		<dc:creator>Paul King</dc:creator>
		<pubDate>Tue, 30 Sep 2008 09:40:58 +0000</pubDate>
		<guid isPermaLink="false">http://blog.tmorris.net/actor-concurrency-for-java/#comment-17220</guid>
		<description>Well, all I can base my comments on are a PhD in formal specification techniques and 30+ related refereed publications.  That definitely doesn't make me the world expert on lambda calculus but I certainly have bumped into it shall we say ... many times. I do believe it has many uses and I use it in places myself where I find it fruitful, but my preferred weapon of choice for reasoning based exercises would have to be techniques based on Zermelo-Fränkel set theory, e.g. Z or Object-Z. I don't see any point in debating over whether one reasoning technique is better than another - to each his own - and if the truth be known many of these techniques are but two sides of, if not the same coin, two very similar ones.

What I can say is that I have much less angst over reasoning about dynamically typed languages than you appear to have. I respect your right to your preferences but don't really see the big deal. All the same types are still there, you may just have to infer them or apply higher order reasoning. I really don't see what the problem is.

For me the really hard systems to reason about are the large complex ones. Functional flavoured langages and techniques give me one set of tools for finding ways to reason about smaller parts of larger systems. Imperative and constraint-based languages give me other sets of useful tools and I don't claim that the best tools for reasoning about such languages are lambda calculus based - indeed if I tried to do that I would probably be dismayed at such languages - so I don't.

I do agree with your comments about unit tests being theoretically undesirable in some scenarios but exemplar driven steps within your development approach are sometimes the most crucial ones as they allow you to validate your theorems and code with your customers conceptual models of your theorems and code.</description>
		<content:encoded><![CDATA[<p>Well, all I can base my comments on are a PhD in formal specification techniques and 30+ related refereed publications.  That definitely doesn&#8217;t make me the world expert on lambda calculus but I certainly have bumped into it shall we say &#8230; many times. I do believe it has many uses and I use it in places myself where I find it fruitful, but my preferred weapon of choice for reasoning based exercises would have to be techniques based on Zermelo-Fränkel set theory, e.g. Z or Object-Z. I don&#8217;t see any point in debating over whether one reasoning technique is better than another - to each his own - and if the truth be known many of these techniques are but two sides of, if not the same coin, two very similar ones.</p>
<p>What I can say is that I have much less angst over reasoning about dynamically typed languages than you appear to have. I respect your right to your preferences but don&#8217;t really see the big deal. All the same types are still there, you may just have to infer them or apply higher order reasoning. I really don&#8217;t see what the problem is.</p>
<p>For me the really hard systems to reason about are the large complex ones. Functional flavoured langages and techniques give me one set of tools for finding ways to reason about smaller parts of larger systems. Imperative and constraint-based languages give me other sets of useful tools and I don&#8217;t claim that the best tools for reasoning about such languages are lambda calculus based - indeed if I tried to do that I would probably be dismayed at such languages - so I don&#8217;t.</p>
<p>I do agree with your comments about unit tests being theoretically undesirable in some scenarios but exemplar driven steps within your development approach are sometimes the most crucial ones as they allow you to validate your theorems and code with your customers conceptual models of your theorems and code.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tony Morris</title>
		<link>http://blog.tmorris.net/actor-concurrency-for-java/#comment-17099</link>
		<dc:creator>Tony Morris</dc:creator>
		<pubDate>Mon, 29 Sep 2008 17:54:27 +0000</pubDate>
		<guid isPermaLink="false">http://blog.tmorris.net/actor-concurrency-for-java/#comment-17099</guid>
		<description>"One style of formal theory"? You mean, that which is founded on decades of computing science research? I'm glad I limit myself to one &lt;strong&gt;reality&lt;/strong&gt; as well. Can you imagine if &lt;em&gt;all of us&lt;/em&gt; jumped aboard hype bubbles and starting repeating mythological nonsense to perpetuate our double-think through sheer ignorance?

Let me make something very clear; all programmers fall into one of two distinct camps:
1) Those who write logical theorems and know it
2) Those who write logical theorems and do not know it (and suffer significant adverse consequences).
This is an objective irrefutable fact that cannot be false no matter how hard you and I wish it to be so.

I'm well aware of many other &lt;em&gt;logically consistent&lt;/em&gt; ways of observing programming and I use them all very effectively. I am also aware of the many &lt;em&gt;pseudo-scientific&lt;/em&gt; memes that perpetuate in our industry, especially in dynamic languages (yes, even one as desperately lacking as Groovy). Indeed, I am more than capable of degenerating into a mindset that is perpetuated by these non-ideas, however, I elect not to, not out of fundamentalism, but simply because it would not be useful.

It is remarkable that my earlier analogy to Creationism (out of the many possible) was followed by an argument that is often used by Creationists! Your comment boils down to "why limit oneself to an understanding of reality, when there are so many delusions of grandeur available to indulge?". It is as if you are advocating that I accept some alternative to reality, on the assumption that I do not understand that alternative. Let me also make this clear, I can use your dynamic language as effectively as you can, which is not very effective at all. I simply elect not to, because it offers nothing in my interest (or yours for that matter, but you don't know that) at a significant disadvantage.

I don't wish to sound mean and I hesitated before deciding to say what clearly needs to be said, but &lt;strong&gt;it would really pay for you to know what you are talking about&lt;/strong&gt;. I say this simply because there is quite possibly a learning opportunity available. Also, it would allow this discussion to continue without silly remarks being made.

I am not bemused by your desire to limit yourself to wilful ignorance, simply because my armchair cognitive science knowledge explains why it is so, but this is another matter (George Orwell calls it double-think; I call it Cognitive Dissonance). I think discussion is going nowhere due to silly remarks (Creationists, take note), but to turn it into something meaningful, it might pay to start down a path of education. This would require an admission by yourself, even if only to yourself.

Are you aware that the untyped lambda calculus is an instance of the typed lambda calculi? Are you aware that with sufficient utilisation of a type system and for some programs, the need for unit tests disappears completely (in that, it is not only not desirable to write a unit test, but impossible because there is nothing more to say)?</description>
		<content:encoded><![CDATA[<p>&#8220;One style of formal theory&#8221;? You mean, that which is founded on decades of computing science research? I&#8217;m glad I limit myself to one <strong>reality</strong> as well. Can you imagine if <em>all of us</em> jumped aboard hype bubbles and starting repeating mythological nonsense to perpetuate our double-think through sheer ignorance?</p>
<p>Let me make something very clear; all programmers fall into one of two distinct camps:<br />
1) Those who write logical theorems and know it<br />
2) Those who write logical theorems and do not know it (and suffer significant adverse consequences).<br />
This is an objective irrefutable fact that cannot be false no matter how hard you and I wish it to be so.</p>
<p>I&#8217;m well aware of many other <em>logically consistent</em> ways of observing programming and I use them all very effectively. I am also aware of the many <em>pseudo-scientific</em> memes that perpetuate in our industry, especially in dynamic languages (yes, even one as desperately lacking as Groovy). Indeed, I am more than capable of degenerating into a mindset that is perpetuated by these non-ideas, however, I elect not to, not out of fundamentalism, but simply because it would not be useful.</p>
<p>It is remarkable that my earlier analogy to Creationism (out of the many possible) was followed by an argument that is often used by Creationists! Your comment boils down to &#8220;why limit oneself to an understanding of reality, when there are so many delusions of grandeur available to indulge?&#8221;. It is as if you are advocating that I accept some alternative to reality, on the assumption that I do not understand that alternative. Let me also make this clear, I can use your dynamic language as effectively as you can, which is not very effective at all. I simply elect not to, because it offers nothing in my interest (or yours for that matter, but you don&#8217;t know that) at a significant disadvantage.</p>
<p>I don&#8217;t wish to sound mean and I hesitated before deciding to say what clearly needs to be said, but <strong>it would really pay for you to know what you are talking about</strong>. I say this simply because there is quite possibly a learning opportunity available. Also, it would allow this discussion to continue without silly remarks being made.</p>
<p>I am not bemused by your desire to limit yourself to wilful ignorance, simply because my armchair cognitive science knowledge explains why it is so, but this is another matter (George Orwell calls it double-think; I call it Cognitive Dissonance). I think discussion is going nowhere due to silly remarks (Creationists, take note), but to turn it into something meaningful, it might pay to start down a path of education. This would require an admission by yourself, even if only to yourself.</p>
<p>Are you aware that the untyped lambda calculus is an instance of the typed lambda calculi? Are you aware that with sufficient utilisation of a type system and for some programs, the need for unit tests disappears completely (in that, it is not only not desirable to write a unit test, but impossible because there is nothing more to say)?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Paul King</title>
		<link>http://blog.tmorris.net/actor-concurrency-for-java/#comment-17002</link>
		<dc:creator>Paul King</dc:creator>
		<pubDate>Mon, 29 Sep 2008 07:08:05 +0000</pubDate>
		<guid isPermaLink="false">http://blog.tmorris.net/actor-concurrency-for-java/#comment-17002</guid>
		<description>I have no problem with a desire to prove correctness about a program. Just a little bemused why anyone would want to always limit themselves to one style of formal theory.</description>
		<content:encoded><![CDATA[<p>I have no problem with a desire to prove correctness about a program. Just a little bemused why anyone would want to always limit themselves to one style of formal theory.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tony Morris</title>
		<link>http://blog.tmorris.net/actor-concurrency-for-java/#comment-16419</link>
		<dc:creator>Tony Morris</dc:creator>
		<pubDate>Thu, 25 Sep 2008 20:01:31 +0000</pubDate>
		<guid isPermaLink="false">http://blog.tmorris.net/actor-concurrency-for-java/#comment-16419</guid>
		<description>I'm not sure what you're saying here, but there is a very common mistake, "I cannot prove the general program, therefore, I should concede to proving correctness about any program". Since this mistake is common (often a result of misunderstanding both the halting problem and proof writing in my anecdotes), I will assume this is what is happening. I asked earlier to prove an extremely simple program (the components of the SKI combinator calculus), which is even possible in such a useless language as Java (a subset).

Alternatively you might be saying that writing code is not proving a theorem, in which case, I advise you to prepare yourself for your Nobel Prize :) I suspect this is not happening mostly due to the audaciousness of the claim.

Please clarify the misunderstanding. Like I said, I am not going to debate because there is no debate to be had (admittedly, this is slightly a lie, but I'm taking a Socratic Midwife approach here).</description>
		<content:encoded><![CDATA[<p>I&#8217;m not sure what you&#8217;re saying here, but there is a very common mistake, &#8220;I cannot prove the general program, therefore, I should concede to proving correctness about any program&#8221;. Since this mistake is common (often a result of misunderstanding both the halting problem and proof writing in my anecdotes), I will assume this is what is happening. I asked earlier to prove an extremely simple program (the components of the SKI combinator calculus), which is even possible in such a useless language as Java (a subset).</p>
<p>Alternatively you might be saying that writing code is not proving a theorem, in which case, I advise you to prepare yourself for your Nobel Prize <img src='http://blog.tmorris.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> I suspect this is not happening mostly due to the audaciousness of the claim.</p>
<p>Please clarify the misunderstanding. Like I said, I am not going to debate because there is no debate to be had (admittedly, this is slightly a lie, but I&#8217;m taking a Socratic Midwife approach here).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Paul King</title>
		<link>http://blog.tmorris.net/actor-concurrency-for-java/#comment-16387</link>
		<dc:creator>Paul King</dc:creator>
		<pubDate>Thu, 25 Sep 2008 08:39:23 +0000</pubDate>
		<guid isPermaLink="false">http://blog.tmorris.net/actor-concurrency-for-java/#comment-16387</guid>
		<description>It is easy to prove the halting problem. I look forward to your code.</description>
		<content:encoded><![CDATA[<p>It is easy to prove the halting problem. I look forward to your code.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
