<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link rel="hub" href="http://tumblr.superfeedr.com/" xmlns:atom="http://www.w3.org/2005/Atom"/><description>A blog about the tools, methods and thinking of successful software development and developers.

Viktor Klang is a code connoisseur and pragmatic software professional currently residing in the exotic Helsingborg and working as Akka Tech Lead at Typesafe Inc.. Follow on twitter?



  var _gaq = _gaq || [];
  _gaq.push([‘_setAccount’, ‘UA-17736330-1’]);
  _gaq.push([‘_trackPageview’]);

  (function() {
    var ga = document.createElement(‘script’); ga.type = ‘text/javascript’; ga.async = true;
    ga.src = (‘https:’ == document.location.protocol ? ‘https://ssl’ : ‘http://www’) + ‘.google-analytics.com/ga.js’;
    var s = document.getElementsByTagName(‘script’)[0]; s.parentNode.insertBefore(ga, s);
  })();</description><title>Klangism</title><generator>Tumblr (3.0; @klangism)</generator><link>http://klangism.tumblr.com/</link><item><title>Serializable dynamic Proxies</title><description>&lt;p&gt;So, I found myself in a situation where I was creating JDK &lt;a href="http://docs.oracle.com/javase/6/docs/api/java/lang/reflect/Proxy.html" title="Dynamic Proxies" target="_blank"&gt;Proxies&lt;/a&gt;, and I was in control of the invocation of &lt;a href="http://docs.oracle.com/javase/6/docs/api/java/lang/reflect/Proxy.html#newProxyInstance%28java.lang.ClassLoader,%20java.lang.Class%5B%5D,%20java.lang.reflect.InvocationHandler%29" title="newProxyInstance" target="_blank"&gt;newProxyInstance&lt;/a&gt; and needed to make the Proxies transparently Serializable.&lt;/p&gt;

&lt;p&gt;The problem is that for it to work you need &lt;a href="http://docs.oracle.com/javase/6/docs/platform/serialization/spec/output.html#5324" title="writeReplace" target="_blank"&gt;writeReplace&lt;/a&gt;, so that you&amp;#8217;re in control of the rematerialization of the Proxy on the deserializing side using &lt;a href="http://docs.oracle.com/javase/6/docs/platform/serialization/spec/input.html#5903" title="readResolve" target="_blank"&gt;readResolve&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;However, the problem is that you need to make sure that the Proxy gets a writeReplace method, and you don&amp;#8217;t want to force the guy providing you with what interfaces to proxy to implement writeReplace himself, because at some point someone will forget it.&lt;/p&gt;
&lt;p&gt;The solution might seem trivial, but the solution is the following:&lt;/p&gt;
&lt;p&gt;Define a trait/interface with the writeReplace method (with correct signature)&lt;/p&gt;

&lt;script src="https://gist.github.com/1388812.js?file=serialize_Dyn_proxy.scala"&gt;&lt;/script&gt;&lt;p&gt;Happy hAkking!&lt;/p&gt;
&lt;p&gt;Cheers, √&lt;/p&gt;</description><link>http://klangism.tumblr.com/post/13204429354</link><guid>http://klangism.tumblr.com/post/13204429354</guid><pubDate>Wed, 23 Nov 2011 15:36:13 +0100</pubDate><category>Scala</category><category>Proxy</category><category>Serialization</category><category>LikeABoss</category></item><item><title>DIY: Exhaustiveness checking on Scala Enums</title><description>&lt;p&gt;Long time no blog,&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m not much of a writer, so here&amp;#8217;s the code!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://gist.github.com/1057513"&gt;Hardlink
&lt;script src="https://gist.github.com/1057513.js"&gt;&lt;/script&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://gist.github.com/1057513"&gt;Cheers,&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://gist.github.com/1057513"&gt;
&lt;p&gt;√&lt;/p&gt;
&lt;/a&gt;&lt;/p&gt;</description><link>http://klangism.tumblr.com/post/7098500142</link><guid>http://klangism.tumblr.com/post/7098500142</guid><pubDate>Fri, 01 Jul 2011 01:16:00 +0200</pubDate><category>scala</category><category>enum</category><category>exhaustive</category></item><item><title>Implementing PostStart in #Akka</title><description>&lt;p&gt;This question comes up every now and then, and my answer has since the first time, been refined, so I thought I&amp;#8217;d give the answer here.&lt;/p&gt;
&lt;p&gt;&amp;#8220;How do I run some initialization logic in the thread of the dispatcher and not the creator of the actor?&amp;#8221;&lt;/p&gt;
&lt;p&gt;I present to you, PostStart:&lt;/p&gt;
&lt;script src="https://gist.github.com/856818.js"&gt; &lt;/script&gt;&lt;p&gt;If you can&amp;#8217;t see the code, click &lt;a href="https://gist.github.com/856818"&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Easy?&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;</description><link>http://klangism.tumblr.com/post/3667529448</link><guid>http://klangism.tumblr.com/post/3667529448</guid><pubDate>Sun, 06 Mar 2011 00:14:00 +0100</pubDate><category>Akka</category><category>PostStart</category><category>become</category><category>actors</category></item><item><title>This is exactly what I want Akka to solve</title><description>&lt;p&gt;&amp;#8220;The fact is that everyone has scalability issues, no one can deal with  their service going from zero to a few million users without revisiting  almost every aspect of their design and architecture.&amp;#8221;&lt;/p&gt;
&lt;p&gt;Quoted from&amp;#160;: &lt;a href="http://37signals.com/svn/archives2/dont_scale_99999_uptime_is_for_walmart.php"&gt;http://37signals.com/svn/archives2/dont_scale_99999_uptime_is_for_walmart.php&lt;/a&gt;&lt;/p&gt;</description><link>http://klangism.tumblr.com/post/3500545825</link><guid>http://klangism.tumblr.com/post/3500545825</guid><pubDate>Fri, 25 Feb 2011 10:59:50 +0100</pubDate><category>akka</category><category>scalability</category><category>productivity</category></item><item><title>All #Actors in #Scala - compared</title><description>&lt;p&gt;As a late Christmas present I bring this to you dear readers:&lt;/p&gt;
&lt;p&gt;I recently invited &lt;strong&gt;David Pollak&lt;/strong&gt; (of &lt;em&gt;Lift&lt;/em&gt; fame),&lt;strong&gt; Jason Zaugg&lt;/strong&gt; (of Scalaz fame), &lt;strong&gt;Philipp Haller&lt;/strong&gt; (of Scala Actors fame) and myself to collaborate on a feature matrix that would allow people to see the &lt;em&gt;similarities&lt;/em&gt; and &lt;em&gt;differences&lt;/em&gt; between the &lt;strong&gt;Actor &lt;/strong&gt;libraries on the &lt;strong&gt;Scala&lt;/strong&gt; platform.&lt;/p&gt;
&lt;p&gt;So I&amp;#8217;d like to start out by thanking David, Jason, Runar, Jonas, Philipp, Martin and all the people involved in these great projects for taking the time to fill out the matrix.&lt;/p&gt;
&lt;p&gt;Here&amp;#8217;s a &lt;a href="http://doc.akka.io/docs/misc/Comparison_between_4_actor_frameworks.pdf" title="Comparison between 4 different Actor implementations" target="_blank"&gt;link&lt;/a&gt; to a PDF-version of the document, enjoy!&lt;/p&gt;
&lt;p&gt;PS. I attempted to embed the comparison to this blog post, but the formatting simply goes haywire. DS.&lt;/p&gt;</description><link>http://klangism.tumblr.com/post/2497057136</link><guid>http://klangism.tumblr.com/post/2497057136</guid><pubDate>Tue, 28 Dec 2010 13:56:00 +0100</pubDate><category>Scala</category><category>Actors</category><category>Akka</category><category>Lift</category><category>Scalaz</category></item><item><title>√iktor needs your help!</title><description>&lt;p&gt;I&amp;#8217;ve got some ideas for conference/group talks that I have yet to assemble, but I thought I&amp;#8217;d let the community have a vote in what they&amp;#8217;d think be interesting.&lt;/p&gt;
&lt;p&gt;Proposal 1:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Git things done&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Approx time: 45 minutes&lt;br/&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&amp;#8220;This is a case-study on moving from CVS/SVN to Git I did at a previous employer. It&amp;#8217;s about the challenges faced - cultural problems, technical problems, process problems and touches areas like: Code reviews, agile&amp;amp;lean (Scrum/Kanban), pragmatisism and corporate politics.&amp;#8221;&lt;/em&gt;&lt;/p&gt;

&lt;/blockquote&gt;

&lt;p&gt;Proposal 2:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;The Kay Way - True Object Orientation&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Approx time: 30 minutes&lt;br/&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&amp;#8220;This talk explores OO using Actors, a model of concurrency that encapsulates Alan Kays original concept of object-orientation, showing different models of composition and inheritance, message-passing, asynchronous and synchronous messaging using the Akka framework&amp;#8221;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;


&lt;p&gt;Proposal 3:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Faster, Harder, Actor&lt;/strong&gt;&lt;strong&gt;&lt;br/&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Approx time: 25 minutes&lt;br/&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&amp;#8220;At the very core of Akka lies the Executor-Based-Event-Driven-Dispatcher, or EBEDD as we call it for short. This talk goes through its design and how it manages to provide the best default for Akka Actors in terms of performance and reliability and what configuration is possible to tune it for your workloads.&amp;#8221;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;


&lt;p&gt;Proposal 4:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Scala4Java&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Approx time: 20 minutes&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&amp;#8220;This talk is some tips and tricks to write Scala-code that can be easily consumed by Java code, with dos and don&amp;#8217;ts and examples from Scala projects.&amp;#8221;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So what I need from you is to comment on this blog post what you&amp;#8217; find interesting of the above mentioned proposals, or if you have any other suggestions on what you&amp;#8217;d like for me to present.&lt;/p&gt;
&lt;p&gt;Thanks for helping me out!&lt;/p&gt;</description><link>http://klangism.tumblr.com/post/2482971663</link><guid>http://klangism.tumblr.com/post/2482971663</guid><pubDate>Mon, 27 Dec 2010 16:03:52 +0100</pubDate><category>Actors</category><category>Akka</category><category>Presentation</category><category>Git</category><category>CVS</category><category>SVN</category></item><item><title>Hardcore Pom</title><description>&lt;p&gt;A fairly nice technique to speed up update- times in &lt;a title="SBT" target="_blank" href="http://code.google.com/p/simple-build-tool/"&gt;SBT&lt;/a&gt; is by using ModuleConfigurations. A ModuleConfiguration can be viewed as a filter on top of a repository, saying: &lt;em&gt;&amp;#8220;Only look in the repository if the artifact you&amp;#8217;re looking for has the following group id.&amp;#8221;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Pattern:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;class MyProject(info: ProjectInfo) extends DefaultProject(info) {&lt;/p&gt;
&lt;p&gt;object Repositories {&lt;/p&gt;
&lt;p&gt;  //Add repositories here, they won&amp;#8217;t be used for artifact lookup since they&amp;#8217;re inside the object&lt;/p&gt;
&lt;p&gt;  lazy val ScalaToolsRepo = MavenRepository(&amp;#8220;Scala Tools Repository&amp;#8221;, &amp;#8220;http://nexus.scala-tools.org/content/repositories/hosted&amp;#8221;)&lt;/p&gt;
&lt;p&gt;  //&amp;#8230; add more repos here&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;//Here we add our ModuleConfigurations&lt;/p&gt;
&lt;p&gt;lazy val scalaTestModuleConfig  = ModuleConfiguration(&amp;#8220;org.scalatest&amp;#8221;, ScalaToolsRepo) //equiv of saying: &amp;#8220;When you look for something with group id &amp;#8220;org.scalatest&amp;#8221;, look n this repo, but not otherwise&lt;/p&gt;
&lt;p&gt;//Here we add our dependencies&lt;/p&gt;
&lt;p&gt;val scalatest = &amp;#8220;org.scalatest&amp;#8221; % &amp;#8220;scalatest&amp;#8221; % &amp;#8220;1.2&amp;#8221; % &amp;#8220;test&amp;#8221;&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;That&amp;#8217;s the entire pattern, this leads to extremely fast &amp;#8220;&lt;strong&gt;sbt update&lt;/strong&gt;&amp;#8220;s and you are in more control of what gets downloaded from where.&lt;/p&gt;
&lt;p&gt;However, I noticed that there is a &lt;strong&gt;big&lt;/strong&gt; caveat.&lt;/p&gt;
&lt;p&gt;Unfortunately SBT doesn&amp;#8217;t take ModuleConfigurations into consideration when generating poms during publish-local and publish, this leads to poms that are missing a lot if not all of the repositories needed for its dependencies if you use the technique above.&lt;/p&gt;
&lt;p&gt;With a big list of dependencies and ModuleConfigurations this is what I got in my pom:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;lt;repositories&amp;gt;&lt;br/&gt;         &amp;lt;repository&amp;gt;&lt;br/&gt;             &amp;lt;id&amp;gt;ScalaToolsReleasesRepo&amp;lt;/id&amp;gt;&lt;br/&gt;             &amp;lt;name&amp;gt;Scala Tools Releases Repo&amp;lt;/name&amp;gt;&lt;br/&gt;             &amp;lt;url&amp;gt;http://scala-tools.org/repo-releases/&amp;lt;/url&amp;gt;&lt;br/&gt;         &amp;lt;/repository&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;/repositories&amp;gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Not what I had expected, there should be quite a few repos in there&amp;#8230;&lt;/p&gt;
&lt;p&gt;So I hacked together a small chunk of Scala that will post-process the poms and add all repos in your ModuleConfigurations, and I&amp;#8217;ve named it &lt;a title="McPom" target="_blank" href="https://gist.github.com/731645"&gt;McPom&lt;/a&gt; (&lt;strong&gt;M&lt;/strong&gt;odule&lt;strong&gt;C&lt;/strong&gt;onfiguration into &lt;strong&gt;Pom&lt;/strong&gt;).&lt;/p&gt;
&lt;p&gt;And this is the same artifact after McPom is thrown into the game:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;    &amp;lt;repositories&amp;gt;&lt;br/&gt;        &amp;lt;repository&amp;gt;&lt;br/&gt;            &amp;lt;id&amp;gt;ScalaToolsReleasesRepo&amp;lt;/id&amp;gt;&lt;br/&gt;            &amp;lt;name&amp;gt;Scala Tools Releases Repo&amp;lt;/name&amp;gt;&lt;br/&gt;            &amp;lt;url&amp;gt;http://scala-tools.org/repo-releases/&amp;lt;/url&amp;gt;&lt;br/&gt;        &amp;lt;/repository&amp;gt;&lt;br/&gt;        &amp;lt;repository&amp;gt;&lt;br/&gt;            &amp;lt;id&amp;gt;javanetRepo&amp;lt;/id&amp;gt;&lt;br/&gt;            &amp;lt;name&amp;gt;java.net Repo&amp;lt;/name&amp;gt;&lt;br/&gt;            &amp;lt;url&amp;gt;http://download.java.net/maven/2/&amp;lt;/url&amp;gt;&lt;br/&gt;        &amp;lt;/repository&amp;gt;&lt;br/&gt;        &amp;lt;repository&amp;gt;&lt;br/&gt;            &amp;lt;id&amp;gt;JBossRepo&amp;lt;/id&amp;gt;&lt;br/&gt;            &amp;lt;name&amp;gt;JBoss Repo&amp;lt;/name&amp;gt;&lt;br/&gt;            &amp;lt;url&amp;gt;http://repository.jboss.org/nexus/content/groups/public/&amp;lt;/url&amp;gt;&lt;br/&gt;        &amp;lt;/repository&amp;gt;&lt;br/&gt;        &amp;lt;repository&amp;gt;&lt;br/&gt;            &amp;lt;id&amp;gt;public&amp;lt;/id&amp;gt;&lt;br/&gt;            &amp;lt;name&amp;gt;public&amp;lt;/name&amp;gt;&lt;br/&gt;            &amp;lt;url&amp;gt;http://repo1.maven.org/maven2/&amp;lt;/url&amp;gt;&lt;br/&gt;        &amp;lt;/repository&amp;gt;&lt;br/&gt;        &amp;lt;repository&amp;gt;&lt;br/&gt;            &amp;lt;id&amp;gt;CodehausRepo&amp;lt;/id&amp;gt;&lt;br/&gt;            &amp;lt;name&amp;gt;Codehaus Repo&amp;lt;/name&amp;gt;&lt;br/&gt;            &amp;lt;url&amp;gt;http://repository.codehaus.org/&amp;lt;/url&amp;gt;&lt;br/&gt;        &amp;lt;/repository&amp;gt;&lt;br/&gt;        &amp;lt;repository&amp;gt;&lt;br/&gt;            &amp;lt;id&amp;gt;GuiceyFruitRepo&amp;lt;/id&amp;gt;&lt;br/&gt;            &amp;lt;name&amp;gt;GuiceyFruit Repo&amp;lt;/name&amp;gt;&lt;br/&gt;            &amp;lt;url&amp;gt;http://guiceyfruit.googlecode.com/svn/repo/releases/&amp;lt;/url&amp;gt;&lt;br/&gt;        &amp;lt;/repository&amp;gt;&lt;br/&gt;        &amp;lt;repository&amp;gt;&lt;br/&gt;            &amp;lt;id&amp;gt;DatabinderRepo&amp;lt;/id&amp;gt;&lt;br/&gt;            &amp;lt;name&amp;gt;Databinder Repo&amp;lt;/name&amp;gt;&lt;br/&gt;            &amp;lt;url&amp;gt;http://databinder.net/repo/&amp;lt;/url&amp;gt;&lt;br/&gt;        &amp;lt;/repository&amp;gt;&lt;br/&gt;        &amp;lt;repository&amp;gt;&lt;br/&gt;            &amp;lt;id&amp;gt;GlassfishRepo&amp;lt;/id&amp;gt;&lt;br/&gt;            &amp;lt;name&amp;gt;Glassfish Repo&amp;lt;/name&amp;gt;&lt;br/&gt;            &amp;lt;url&amp;gt;http://download.java.net/maven/glassfish/&amp;lt;/url&amp;gt;&lt;br/&gt;        &amp;lt;/repository&amp;gt;&lt;br/&gt;    &amp;lt;/repositories&amp;gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Woot&lt;/strong&gt;! McPom saves the day!&lt;/p&gt;
&lt;p&gt;The only thing you need to do is to add the McPom trait to your project file, and mix it into the projects that needs it, and add the following override to them:&lt;/p&gt;
&lt;blockquote&gt;&lt;span class="c1"&gt;override def pomPostProcess(node: Node): Node = mcPom(moduleConfigurations)(super.pomPostProcess(node))&lt;/span&gt;&lt;/blockquote&gt;
That&amp;#8217;s it!&lt;br/&gt;McPom can be found &lt;a title="McPom" target="_blank" href="https://gist.github.com/731645"&gt;here&lt;/a&gt;&lt;br/&gt;Enjoy!&lt;br/&gt;</description><link>http://klangism.tumblr.com/post/2141977562</link><guid>http://klangism.tumblr.com/post/2141977562</guid><pubDate>Wed, 08 Dec 2010 10:42:14 +0100</pubDate><category>SBT</category><category>dependency</category><category>pom</category><category>ModuleConfiguration</category><category>McPom</category></item><item><title>SBT-fu: Publish privately</title><description>&lt;p&gt;Have you&amp;#8217;ve ever had the problem that you need to publish some Jars where your colleagues need to find them, but they are your secret web-scale sauce Jars and no one on the outside should be able to see them?&lt;/p&gt;
&lt;p&gt;And you don&amp;#8217;t get any permission to put the jars on a network share, and you&amp;#8217;re not worthy of your own build server, says mr Infrastructure Manager?&lt;/p&gt;
&lt;p&gt;And you happen to be using &lt;a title="SBT" target="_self" href="https://code.google.com/p/simple-build-tool/"&gt;SBT&lt;/a&gt;?&lt;/p&gt;
&lt;p&gt;There&amp;#8217;s this wonderful service out there called &lt;a title="Dropbox" target="_self" href="http://www.dropbox.com"&gt;Dropbox&lt;/a&gt; which is a small &amp;#8220;cloud&amp;#8221; storage solution that gives you a stash where you can put your personal files, and you have an option to have files available to the public, but they &lt;em&gt;ALSO&lt;/em&gt; give you the possibility to _share_ folder with your trusted accomplices.&lt;/p&gt;
&lt;p&gt;Here&amp;#8217;s what you need to do:&lt;/p&gt;
&lt;p&gt;1) Download and install &lt;a title="Dropbox" target="_self" href="http://www.dropbox.com"&gt;dropbox&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;2) Create a &lt;strong&gt;new folder&lt;/strong&gt; in your Dropbox root folder and name it something like &lt;em&gt;&amp;#8220;M2&amp;#8221;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;3) Add the following to your SBT project file&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;override def managedStyle = ManagedStyle.Maven&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt; val publishTo = Resolver.file(&amp;#8220;shared-repo&amp;#8221;,&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;             Path.userHome / &amp;#8220;Dropbox&amp;#8221; / &amp;#8220;M2&amp;#8221; asFile)&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;    This tells SBTs&lt;em&gt; &amp;#8220;publish&amp;#8221; &lt;/em&gt;action to place your artifacts in your &lt;em&gt;&amp;#8220;M2&amp;#8221; &lt;/em&gt;folder in your dropbox root&lt;/p&gt;
&lt;p&gt;4) Then add your awesome Dropbox M2 repo to the projects that needs to use the published artifacts&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt; &lt;strong&gt;val SharedRepo  = MavenRepository(&amp;#8220;shared-repo&amp;#8221;, &lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;                                  (Path.userHome / &amp;#8220;Dropbox&amp;#8221; / &amp;#8220;M2&amp;#8221;).asURL.toString)&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;5) Log onto &lt;a href="http://www.dropbox.com"&gt;www.dropbox.com&lt;/a&gt; and go into the &amp;#8220;Sharing&amp;#8221;-tab and share the M2 folder with all your awesome ninja buddies&lt;/p&gt;
&lt;p&gt;6) Do an SBT publish, this places your freshly baked artifacts in your dropbox, and after Dropbox has synched it&amp;#8217;s going to be propagated to your awesome friends.&lt;/p&gt;
&lt;p&gt;7) No, seriously, you&amp;#8217;re all done.&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;</description><link>http://klangism.tumblr.com/post/1986830314</link><guid>http://klangism.tumblr.com/post/1986830314</guid><pubDate>Tue, 30 Nov 2010 16:36:00 +0100</pubDate><category>SBT</category><category>publish</category><category>Dropbox</category><category>awesome</category></item><item><title>Dispatchers in Akka 1.0-RC1</title><description>&lt;p&gt;Curious about what we&amp;#8217;ve done?&lt;/p&gt;
&lt;p&gt;A lot of work has gone into the different dispatchers through Akkas relatively short but intense life so far.&lt;/p&gt;
&lt;p&gt;Here are some news for Akka 1.0-RC1:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;1) There is no public start/stop lifecycle anymore, the dispatcher will be started when it gets its first actor and will be stopped when the last actor leaves&lt;/p&gt;
&lt;p&gt;2) The dispatchers will re-start when they get another actor if they were previously stopped&lt;/p&gt;
&lt;p&gt;3) The dispatchers will only stop if a new actor hasn&amp;#8217;t registered within X millis after the last one leaves. This timeout is tunable by default in your akka.conf: &amp;#8220;akka.actor.dispatcher-shutdown-timeout&amp;#8221;&lt;/p&gt;
&lt;p&gt;4) All dispatchers now share the same unit test, this means that can ensure they have the same behavior i.e. respecting the Actor Model.&lt;/p&gt;
&lt;p&gt;5) Since Dispatchers can be restarted you never need to worry about when and how to stop your dispatchers, and how to handle re-initialization.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We have also removed the Reactor based Dispatchers since they had lousy performance and were never used.&lt;/p&gt;
&lt;p&gt;Some more good news is that we have managed to improve the performance even further, with ExecutorBasedEventDrivenDispatcher closing in on the HawtDispatchers excellent non-blocking performance.&lt;/p&gt;

&lt;p&gt;Happy hAkking!&lt;/p&gt;</description><link>http://klangism.tumblr.com/post/1726592447</link><guid>http://klangism.tumblr.com/post/1726592447</guid><pubDate>Mon, 29 Nov 2010 13:32:03 +0100</pubDate><category>Akka</category><category>Dispatcher</category><category>News</category><category>Actor Model</category></item><item><title>The Future is dead?</title><description>&lt;p&gt;No! Long live the Future!&lt;/p&gt;

&lt;p&gt;Something that&amp;#8217;s new in Akka 1.0-RC1 is the possibility to add hooks that are executed when a Future is completed.&lt;/p&gt;
&lt;p&gt;Behold!&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Welcome to Scala version 2.8.1.final (Java HotSpot(TM) 64-Bit Server VM, Java 1.6.0_22).&lt;br/&gt;Type in expressions to have them evaluated.&lt;br/&gt;Type :help for more information.&lt;br/&gt;&lt;br/&gt;scala&amp;gt; import akka.actor._&lt;br/&gt;import akka.actor._&lt;br/&gt;&lt;br/&gt;scala&amp;gt; import akka.actor.Actor._&lt;br/&gt;import akka.actor.Actor._&lt;br/&gt;&lt;br/&gt;scala&amp;gt; val actor = actorOf( new Actor {&lt;br/&gt;  def receive = {&lt;br/&gt;    case &amp;#8220;foo&amp;#8221; =&amp;gt; Thread.sleep(10000); /*Simulate blocking*/&lt;br/&gt;                  self.reply(&amp;#8220;bar&amp;#8221;)&lt;br/&gt;  }&lt;br/&gt;}).start&lt;br/&gt;&lt;br/&gt;scala&amp;gt; (actor.!!![String](&amp;#8220;foo&amp;#8221;)) onComplete { &lt;br/&gt;  f =&amp;gt; println( &lt;br/&gt;         if (f.result.isDefined)&lt;br/&gt;           &amp;#8220;Got result: &amp;#8221; + f.result.get&lt;br/&gt;         else&lt;br/&gt;           &amp;#8220;Got exception: &amp;#8221; + f.exception.get&lt;br/&gt;       )&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;11:55:33.762 [akka:event-driven:dispatcher:global-3] DEBUG akka.dispatch.MonitorableThread - Created thread akka:event-driven:dispatcher:global-3&lt;br/&gt;res8: akka.dispatch.Future[String] = akka.dispatch.DefaultCompletableFuture@422f3d17&lt;br/&gt;&lt;br/&gt;scala&amp;gt; Got result: bar&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This also enables non-busy-waiting Futures.awaitAll, Futures.awaitOne and Futures.awaitEither!&lt;/p&gt;
&lt;p&gt;Happy hAkking!&lt;/p&gt;</description><link>http://klangism.tumblr.com/post/1726109471</link><guid>http://klangism.tumblr.com/post/1726109471</guid><pubDate>Mon, 29 Nov 2010 12:00:38 +0100</pubDate><category>Akka</category><category>Future</category><category>listener</category><category>onComplete</category></item><item><title>Dependency Hell</title><description>&lt;p&gt;I&amp;#8217;ve been meaning to write something very thoughtful about dependency management over the past year, but haven&amp;#8217;t found time to do it.&lt;/p&gt;
&lt;p&gt;So now I&amp;#8217;ll just blurt it out and see what you think of it.&lt;/p&gt;

&lt;p&gt;Dependency management in Java land usually means keeping track of .jar-files - this is stupid. &amp;#8220;What?&amp;#8221; you say?&lt;/p&gt;
&lt;p&gt;Well packaging a .jar file means that you feel you&amp;#8217;re qualified to make the decision on what parts of your code other people will need and use. In other words, you&amp;#8217;re trying to see into the future and create the optimal jar for your users.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Well, wake up and smell the snow. &lt;/strong&gt;You ain&amp;#8217;t going to do that well.&lt;/p&gt;
&lt;p&gt;That&amp;#8217;s why tools like ProGuard exist - to remove superfluous code from your jars, code that isn&amp;#8217;t needed for the program to work.&lt;/p&gt;
&lt;p&gt;Now, wouldn&amp;#8217;t it be nicer if things were the other way around? So instead of&lt;em&gt; _removing_ &lt;/em&gt;what isn&amp;#8217;t needed, you only get the classes/code you need instead?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Think about it&lt;/strong&gt; for a second.&lt;/p&gt;

&lt;p&gt;Then we have the current situation with Maven repositories. I hate it. It means that you have to manually keep track of tons of servers and if one is down when you need it, you either have to make sure your build works without it, or start looking for the lint in your bellybutton for a while, waiting for it to come online again.&lt;/p&gt;
&lt;p&gt;We&amp;#8217;ve had p2p-networks, BitTorrent and tons of different distributed storage solutions, so &lt;em&gt;_why_&lt;/em&gt; Dear God do we need to have manual repository management and &lt;strong&gt;SPOF&lt;/strong&gt;s?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Think about it&lt;/strong&gt; for a second.&lt;/p&gt;

&lt;p&gt;I don&amp;#8217;t have the technical solutions, but something where the needed classes/code would be loaded at build time and a class loader would find runtime dependencies on a distributed network at runtime and cache them locally.&lt;/p&gt;
&lt;p&gt;Make it happen, I dare you&lt;/p&gt;</description><link>http://klangism.tumblr.com/post/1718210584</link><guid>http://klangism.tumblr.com/post/1718210584</guid><pubDate>Sun, 28 Nov 2010 22:07:39 +0100</pubDate><category>jar</category><category>Java</category><category>JVM</category><category>dependency</category><category>dependencies</category><category>Maven</category><category>packaging</category></item><item><title>When you don't handle it</title><description>&lt;p&gt;Something that&amp;#8217;s new in Akka 1.0-RC1 is the &amp;#8220;unhandled&amp;#8221;-callback for Actor.&lt;/p&gt;
&lt;p&gt;This is what it looks like:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;  /**&lt;br/&gt;    * User overridable callback.&lt;br/&gt;    *&lt;br/&gt;    * Is called when a message isn&amp;#8217;t handled by the current behavior of the actor&lt;br/&gt;    * by default it throws an UnhandledMessageException&lt;br/&gt;    */&lt;br/&gt;    def unhandled(msg: Any){&lt;br/&gt;      throw new UnhandledMessageException(msg,self)&lt;br/&gt;    }&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Then the current behavior of an actor doesn&amp;#8217;t handle a message, we pass that message to the unhandled method, and by default that throws an UnhandledMessageException with the affected actor and the message that wasn&amp;#8217;t handled. This exception doesn&amp;#8217;t have a stacktrace (so it&amp;#8217;s rather efficient to create).&lt;/p&gt;
&lt;p&gt;However, this gives you an excellent opportunity to override this behavior, if you want to have &lt;a title="DLQ" target="_blank" href="http://middlewarenews.blogspot.com/2009/03/what-is-deadletter-queue.html"&gt;DLQ &lt;/a&gt;or you simply want to log the unhandled message.&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;</description><link>http://klangism.tumblr.com/post/1712571997</link><guid>http://klangism.tumblr.com/post/1712571997</guid><pubDate>Sun, 28 Nov 2010 10:01:00 +0100</pubDate><category>akka</category><category>DLQ</category><category>unhandled</category></item><item><title>The self matters</title><description>&lt;p&gt;What&amp;#8217;s new in Akka 1.0-RC1 is that HotSwap now takes the following signature:&lt;/p&gt;
&lt;p&gt;case class HotSwap(code: ActorRef =&amp;gt; Actor.Receive, discardOld: Boolean = true)&lt;/p&gt;
&lt;p&gt;Before it only had:&lt;/p&gt;
&lt;p&gt;case class HotSwap(code: Actor.Receive)&lt;/p&gt;
&lt;p&gt;So what&amp;#8217;s new is that you can use the &amp;#8220;discardOld&amp;#8221; parameter to control if you want behaviors to be stacked or not. &amp;#8220;discardOld = true&amp;#8221; will essentially issue an &amp;#8220;unbecome&amp;#8221; before it applies the new code.&lt;/p&gt;
&lt;p&gt;The problem with HotSwap before was that you couldn&amp;#8217;t have any reference to &amp;#8220;self&amp;#8221;, and that became a major pain in the rear, so we changed the signature to be a function from ActorRef to Receive, and the parameter passed to that function will be &amp;#8220;self&amp;#8221;.&lt;/p&gt;
&lt;p&gt;So now you can do:&lt;/p&gt;
&lt;p&gt;val newBehavior = (self:ActorRef) =&amp;gt; {&lt;/p&gt;
&lt;p&gt;  case msg =&amp;gt; self.reply(&amp;#8220;Service temporarily unavailable&amp;#8221;)&lt;/p&gt;
&lt;p&gt;}: Receive&lt;/p&gt;
&lt;p&gt;and send it to any actor:&lt;/p&gt;
&lt;p&gt;actorRef&amp;#160;! HotSwap(newBehavior)&lt;/p&gt;
&lt;p&gt;Happy hAkking!&lt;/p&gt;</description><link>http://klangism.tumblr.com/post/1702083509</link><guid>http://klangism.tumblr.com/post/1702083509</guid><pubDate>Sat, 27 Nov 2010 15:02:00 +0100</pubDate><category>akka</category><category>actors</category><category>HotSwap</category></item><item><title>Akka 1.0-M1 is out!!</title><description>&lt;p&gt;Hey!&lt;br/&gt;&lt;br/&gt; We, the Akka committers, are very proud to announce the release of Akka 1.0-M1,&lt;br/&gt; the first of 2 milestone releases leading up to the final 1.0 release.&lt;/p&gt;
&lt;p&gt;&lt;br/&gt; It is all thanks to a fantastic team [&lt;a target="_blank" href="http://doc.akkasource.org/team"&gt;&lt;a href="http://doc.akkasource.org/team"&gt;http://doc.akkasource.org/team&lt;/a&gt;&lt;/a&gt;]&lt;br/&gt; and user community. Thank you all for your time, hard work and great contributions.&lt;br/&gt;&lt;br/&gt; The full release notes can be seen here: [&lt;a target="_blank" href="http://doc.akkasource.org/release-notes"&gt;&lt;a href="http://doc.akkasource.org/release-notes"&gt;http://doc.akkasource.org/release-notes&lt;/a&gt;&lt;/a&gt;].&lt;br/&gt;&lt;br/&gt;91 tickets have been handled since the release of 0.10, and they can be seen here: &lt;br/&gt; [&lt;a target="_blank" href="https://www.assembla.com/spaces/akka/milestones/243291-1-0-milestone1"&gt;&lt;a href="https://www.assembla.com/spaces/akka/milestones/243291-1-0-milestone1"&gt;https://www.assembla.com/spaces/akka/milestones/243291-1-0-milestone1&lt;/a&gt;&lt;/a&gt;]&lt;br/&gt;&lt;br/&gt; Download it here: [&lt;a target="_blank" href="http://github.com/jboner/akka/downloads"&gt;&lt;a href="http://github.com/jboner/"&gt;http://github.com/jboner/&lt;/a&gt;&lt;span&gt;akka&lt;/span&gt;/downloads&lt;/a&gt;].&lt;br/&gt;&lt;br/&gt; Updated Maven repository here: [&lt;a target="_blank" href="http://www.scalablesolutions.se/akka/repository/"&gt;&lt;a href="http://www.scalablesolutions.se/"&gt;http://www.scalablesolutions.se/&lt;/a&gt;&lt;span&gt;akka&lt;/span&gt;/repository/&lt;/a&gt;].&lt;br/&gt;&lt;br/&gt; Here&amp;#8217;s the documentation: [&lt;a target="_blank" href="http://doc.akkasource.org/"&gt;&lt;a href="http://doc.akkasource.org"&gt;http://doc.akkasource.org&lt;/a&gt;&lt;/a&gt;]&lt;br/&gt;&lt;br/&gt;&lt;/p&gt;
&lt;p&gt;Here&amp;#8217;s the highlights on what&amp;#8217;s happened since 0.10!&lt;br/&gt;&lt;br/&gt; - Java API on par with the Scala API&lt;br/&gt; - Say less, do more! Boilerplate reduction surgery performed.&lt;br/&gt; - New persistence backends: Voldemort, HBase, Riak and CouchDB!&lt;br/&gt; - Fewer deps for using actors only: akka-core is split into akka-actor, akka-remote and akka-typed-actor&lt;br/&gt; - Lower memory footprint gives you 25% more actors on the same hardware&lt;br/&gt; - ThreadBasedDispatcher can deallocate its thread when idling&lt;br/&gt; - Lots of tweaks and bugfixes&lt;br/&gt;&lt;br/&gt; Enjoy!&lt;/p&gt;</description><link>http://klangism.tumblr.com/post/1366790095</link><guid>http://klangism.tumblr.com/post/1366790095</guid><pubDate>Thu, 21 Oct 2010 17:54:00 +0200</pubDate><category>akka</category><category>scala</category><category>1.0-M1</category><category>Riak</category><category>HBase</category><category>Voldemort</category><category>CouchDB</category></item><item><title>Cheaper ThreadBasedDispatchers in Akka 1.0</title><description>&lt;p&gt;One of the small gems that will be available in Akka 1.0 is that ThreadBasedDispatcher is based upon ExecutorBasedEventDrivenDispatcher with a core thread pool of 1 and a max thread pool of 1 that allows core thread timeouts. This means that Actors with ThreadBasedDispatcher won&amp;#8217;t hang on to any threads if they do not have anything to do.&lt;/p&gt;</description><link>http://klangism.tumblr.com/post/1290666245</link><guid>http://klangism.tumblr.com/post/1290666245</guid><pubDate>Mon, 11 Oct 2010 13:27:39 +0200</pubDate><category>Akka 1.0</category><category>ThreadBasedDispatcher</category><category>Scala</category><category>Java</category></item><item><title>Dispatcher configuration for Akka 0.10</title><description>&lt;p&gt;Something that&amp;#8217;s new for &lt;a title="Akka" target="_blank" href="http://www.akkasource.com"&gt;Akka&lt;/a&gt; 0.10 is the possibility to tweak the default dispatcher and the comet dispatcher in the akka.conf, this means that the operations guys can tweak the CPU usage and allows for greater possibilities to tune without recompiling.&lt;/p&gt;
&lt;p&gt;So I thought I ought to give an explanation of the different settings possible, but first, here is what it looks like in the &lt;a title="Akka configuration" target="_blank" href="http://doc.akkasource.org/configuration"&gt;akka.conf&lt;/a&gt;&lt;/p&gt;
&lt;pre&gt;&lt;br/&gt;default-dispatcher {&lt;br/&gt;  type = "GlobalExecutorBasedEventDriven"&lt;br/&gt;  keep-alive-ms = 60000&lt;br/&gt;  core-pool-size-factor = 1.0&lt;br/&gt;  max-pool-size-factor = 4.0&lt;br/&gt;  executor-bounds = -1&lt;br/&gt;  allow-core-timeout = on&lt;br/&gt;  rejection-policy = "caller-runs"&lt;br/&gt;  throughput = 5&lt;br/&gt;  aggregate = off&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;&lt;/pre&gt;
&lt;p&gt;Alright, now that&amp;#8217;s quite a few settings, so we&amp;#8217;d best walk through them one by one.&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;type &lt;/strong&gt;is the type of the dispatcher, and the following are possible:&lt;br/&gt;&lt;br/&gt;&lt;span class="co1"&gt; &lt;/span&gt;&lt;span class="br0"&gt;&lt;br/&gt;&lt;/span&gt;&lt;span class="co1"&gt;ReactorBasedSingleThreadEventDriven&lt;br/&gt;ExecutorBasedEventDriven&lt;/span&gt;&lt;br/&gt;&lt;span class="co1"&gt;ReactorBasedThreadPoolEventDriven&lt;br/&gt;Hawt&lt;br/&gt;&lt;/span&gt;&lt;span class="co1"&gt;GlobalReactorBasedSingleThreadEventDriven&lt;/span&gt;[1]&lt;br/&gt;&lt;span class="co1"&gt;GlobalReactorBasedThreadPoolEventDriven[1]&lt;br/&gt;GlobalExecutorBasedEventDriven[1]&lt;br/&gt;GlobalHawt[1]&lt;/span&gt;&lt;span class="br0"&gt; &lt;/span&gt;&lt;br/&gt;&lt;span class="co1"&gt;(ExecutorBasedEventDrivenWorkStealing)&lt;/span&gt;[2]&lt;br/&gt;&lt;br/&gt;[1] The ones named Global* are already preconfigured, shared dispatchers, so if you specify them as the type, the other settings won&amp;#8217;t apply.&lt;br/&gt;[2] The Workstealing won&amp;#8217;t work if you have more than one type of actor in your application, since the workstealer only can steal from the exact same actor type,&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;keep&lt;span class="sy0"&gt;-&lt;/span&gt;alive&lt;span class="sy0"&gt;-&lt;/span&gt;ms&lt;/strong&gt;&lt;br/&gt;Applies to: &lt;span class="co1"&gt;ExecutorBasedEventDriven, &lt;/span&gt;&lt;span class="co1"&gt;ReactorBasedThreadPoolEventDriven, &lt;/span&gt;&lt;span class="co1"&gt;ExecutorBasedEventDrivenWorkStealing&lt;br/&gt;&lt;/span&gt;&lt;span class="co1"&gt;Value: Numeric in milliseconds&lt;br/&gt;Does:  Specifies keep alive time for threads when they are idling&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;strong&gt;core&lt;span class="sy0"&gt;-&lt;/span&gt;pool&lt;span class="sy0"&gt;-&lt;/span&gt;size&lt;span class="sy0"&gt;-&lt;/span&gt;factor&lt;/strong&gt;&lt;br/&gt;Applies to: &lt;span class="co1"&gt;ExecutorBasedEventDriven, &lt;/span&gt;&lt;span class="co1"&gt;ReactorBasedThreadPoolEventDriven, &lt;/span&gt;&lt;span class="co1"&gt;ExecutorBasedEventDrivenWorkStealing&lt;br/&gt;&lt;/span&gt;Value: Positive decimal value&lt;br/&gt;Does: Specifies the factor of the number of &lt;a title="Javadoc" target="_blank" href="http://download.oracle.com/javase/1.5.0/docs/api/java/util/concurrent/ThreadPoolExecutor.html"&gt;Core Threads&lt;/a&gt; according to the following formula &lt;span class="co1"&gt;ceil(available processors * factor)&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;max&lt;span class="sy0"&gt;-&lt;/span&gt;pool&lt;span class="sy0"&gt;-&lt;/span&gt;size&lt;span class="sy0"&gt;-&lt;/span&gt;factor&lt;/strong&gt;&lt;br/&gt;Applies to: &lt;span class="co1"&gt;ExecutorBasedEventDriven, &lt;/span&gt;&lt;span class="co1"&gt;ReactorBasedThreadPoolEventDriven, &lt;/span&gt;&lt;span class="co1"&gt;ExecutorBasedEventDrivenWorkStealing&lt;br/&gt;&lt;/span&gt;Value: Positive decimal value&lt;br/&gt;Does: Specifies the factor of the maximum number of &lt;a title="Javadoc" target="_blank" href="http://download.oracle.com/javase/1.5.0/docs/api/java/util/concurrent/ThreadPoolExecutor.html"&gt;Threads&lt;/a&gt; according to the following formula &lt;span class="co1"&gt;ceil(available processors * factor)&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;executor&lt;span class="sy0"&gt;-&lt;/span&gt;bounds&lt;/strong&gt;&lt;br/&gt;Applies to: &lt;span class="co1"&gt;ExecutorBasedEventDriven, &lt;/span&gt;&lt;span class="co1"&gt;ReactorBasedThreadPoolEventDriven, &lt;/span&gt;&lt;span class="co1"&gt;ExecutorBasedEventDrivenWorkStealing&lt;br/&gt;&lt;/span&gt;Value: -1 or a positive number&lt;br/&gt;Does: Specifies whether the dispatcher is boundless (-1) or how many tasks it can handle at most at the same time.&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;allow&lt;span class="sy0"&gt;-&lt;/span&gt;core&lt;span class="sy0"&gt;-&lt;/span&gt;timeout&lt;/strong&gt;&lt;br/&gt;Applies to: &lt;span class="co1"&gt;ExecutorBasedEventDriven, &lt;/span&gt;&lt;span class="co1"&gt;ReactorBasedThreadPoolEventDriven, &lt;/span&gt;&lt;span class="co1"&gt;ExecutorBasedEventDrivenWorkStealing&lt;br/&gt;&lt;/span&gt;Value: on or off&lt;br/&gt;Does: Specifies whether &lt;a title="Javadoc" target="_blank" href="http://download.oracle.com/javase/1.5.0/docs/api/java/util/concurrent/ThreadPoolExecutor.html"&gt;Core Threads&lt;/a&gt; should also be timed out if idle&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;rejection&lt;span class="sy0"&gt;-&lt;/span&gt;policy&lt;/strong&gt;&lt;br/&gt;Applies to: &lt;span class="co1"&gt;ExecutorBasedEventDriven, &lt;/span&gt;&lt;span class="co1"&gt;ReactorBasedThreadPoolEventDriven, &lt;/span&gt;&lt;span class="co1"&gt;ExecutorBasedEventDrivenWorkStealing&lt;br/&gt;&lt;/span&gt;Value: &amp;#8220;&lt;span class="co1"&gt;abort&amp;#8221;, &amp;#8220;caller-runs&amp;#8221;, &amp;#8220;discard-oldest&amp;#8221; or &amp;#8220;discard&amp;#8221;&lt;br/&gt;&lt;/span&gt;Does: Specifies what the dispatcher should do if it cannot accept a message, see &lt;a title="Javadoc" target="_blank" href="http://download.oracle.com/javase/1.5.0/docs/api/java/util/concurrent/RejectedExecutionHandler.html"&gt;this&lt;/a&gt; for more detailed information.&lt;br/&gt;&lt;br/&gt;&lt;span class="co1"&gt;&lt;/span&gt;&lt;strong&gt;throughput&lt;/strong&gt;&lt;br/&gt;Applies to: ExecutorBasedEventDriven&lt;br/&gt;Value: Positive number greater than 0&lt;br/&gt;Does: Specifies how many messages the dispatcher should process for an actor before executing another actors messages.&lt;br/&gt;&lt;span class="co1"&gt;&lt;/span&gt;&lt;br/&gt;&lt;strong&gt;aggregate&lt;/strong&gt; &lt;br/&gt;Applies to: Hawt&lt;br/&gt;Value: on or off&lt;br/&gt;Does: Specifies whether the dispatcher should aggregate messages that one actor sends to another, and send all at once when the dispatcher has finished executing for that actor.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;For more documentation of what the different types of dispatchers do, check &lt;a title="Dispatchers" target="_blank" href="http://doc.akkasource.org/dispatchers-scala"&gt;this&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Happy hAkking!&lt;/p&gt;</description><link>http://klangism.tumblr.com/post/976672961</link><guid>http://klangism.tumblr.com/post/976672961</guid><pubDate>Thu, 19 Aug 2010 12:29:15 +0200</pubDate></item><item><title>Dining hakkers</title><description>&lt;p&gt;Ladies and gentlemen,&lt;/p&gt;
&lt;p&gt;I got inspired reading &lt;a title="Dining Philosophers" target="_blank" href="http://www.dalnefre.com/wp/2010/08/dining-philosophers-in-humus/"&gt;Actors all the way down&lt;/a&gt; so without more BS, I present to you:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Dining Hakkers&lt;/strong&gt; implemented in &lt;a title="Akka" target="_blank" href="http://www.akkasource.com"&gt;Akka&lt;/a&gt; using the &lt;a title="Actor model description" target="_blank" href="http://en.wikipedia.org/wiki/Actor_model"&gt;ActorModel&lt;/a&gt;&lt;/p&gt;
&lt;script src="http://gist.github.com/531728.js?file=DiningHakkers.scala"&gt;&lt;/script&gt;&lt;p&gt;&lt;a title="The source" target="_blank" href="http://gist.github.com/531728"&gt;Can&amp;#8217;t see the code?&lt;/a&gt;&lt;/p&gt;</description><link>http://klangism.tumblr.com/post/968180337</link><guid>http://klangism.tumblr.com/post/968180337</guid><pubDate>Tue, 17 Aug 2010 22:06:00 +0200</pubDate><category>actors</category><category>akka</category><category>concurrency</category><category>dining philosophers</category></item><item><title>A new era</title><description>&lt;p&gt;So last friday was my last day at Yves Rocher Nordique, and it has been some very rewarding, interesting and inspiring years there. I&amp;#8217;d like to thank my team: Jack, John, Oscar, Magnus, Kristoffer and Manne - keep being ninjas and do what&amp;#8217;s right.&lt;/p&gt;
&lt;p&gt;We&amp;#8217;ve managed to pull things off no one could ever dream of, so it feels great to leave when things are going great.&lt;/p&gt;
&lt;p&gt;But as always, when something ends something new begins, and for me that&amp;#8217;s joining AkkaSource where I&amp;#8217;ll be acting R&amp;amp;D director, so expect to see a lot of cool features appearing in both the OSS and the enterprise commercial offering.&lt;/p&gt;
&lt;p&gt;Cheers!&lt;/p&gt;
&lt;p&gt;/V&lt;/p&gt;</description><link>http://klangism.tumblr.com/post/828001716</link><guid>http://klangism.tumblr.com/post/828001716</guid><pubDate>Sun, 18 Jul 2010 16:54:00 +0200</pubDate><category>Akka</category><category>Yves Rocher</category><category>Job</category><category>Ninja</category></item><item><title>Akka Message Routing: Part 2</title><description>&lt;p&gt;This is the second part of the akka message routing miniseries.&lt;/p&gt;
&lt;p&gt;This time I&amp;#8217;m going to show you how to create a message loadbalancer,&lt;/p&gt;
&lt;p&gt;so without further ado:&lt;/p&gt;
&lt;script src="http://gist.github.com/394745.js"&gt;&lt;/script&gt;&lt;p&gt;&lt;a title="Can't see the code?" target="_blank" href="http://gist.github.com/394745"&gt;Can&amp;#8217;t see the code? &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;That wasn&amp;#8217;t hard was it?&lt;/p&gt;
&lt;p&gt;Now, go experiment and perhaps create your own message distribution algorithms, there&amp;#8217;s already &lt;a title="A smallest-mailbox first implementation" target="_blank" href="http://github.com/jboner/akka/blob/master/akka-core/src/main/scala/routing/Iterators.scala#L31"&gt;one&lt;/a&gt; that dispatches depending on target mailbox size, effectively dispatching to the one that&amp;#8217;s got fewest messages to process right now.&lt;/p&gt;</description><link>http://klangism.tumblr.com/post/582112173</link><guid>http://klangism.tumblr.com/post/582112173</guid><pubDate>Sat, 08 May 2010 22:20:00 +0200</pubDate></item><item><title>Akka Message Routing: Part 1</title><description>&lt;p&gt;This is the start of a miniseries of the components available to do interesting message dispatching.&lt;/p&gt;
&lt;p&gt;Here&amp;#8217;s a common scenario: Depending on the message, I want to forward it to different other Actors.&lt;/p&gt;
&lt;p&gt;Enough talk, here&amp;#8217;s some code!&lt;/p&gt;
&lt;script src="http://gist.github.com/388381.js"&gt;&lt;/script&gt;&lt;p&gt;&lt;a title="Can't see the code?" target="_blank" href="http://gist.github.com/388381"&gt;Can&amp;#8217;t see the code? &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;That was simple enough, right? Stay tuned for the next part!&lt;/p&gt;</description><link>http://klangism.tumblr.com/post/568698056</link><guid>http://klangism.tumblr.com/post/568698056</guid><pubDate>Mon, 03 May 2010 20:25:00 +0200</pubDate><category>Akka</category><category>Scala</category><category>routing</category></item></channel></rss>
