<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Cape Coder</title>
	<atom:link href="http://capecoder.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://capecoder.wordpress.com</link>
	<description>Code from the Fairest Cape in All the World</description>
	<lastBuildDate>Sun, 27 Jan 2013 07:31:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='capecoder.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Cape Coder</title>
		<link>http://capecoder.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://capecoder.wordpress.com/osd.xml" title="Cape Coder" />
	<atom:link rel='hub' href='http://capecoder.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Downloads of Scala plugin for IntelliJ rocket upwards</title>
		<link>http://capecoder.wordpress.com/2012/10/31/downloads-of-scala-plugin-for-intellij-rocket-upwards/</link>
		<comments>http://capecoder.wordpress.com/2012/10/31/downloads-of-scala-plugin-for-intellij-rocket-upwards/#comments</comments>
		<pubDate>Wed, 31 Oct 2012 20:54:52 +0000</pubDate>
		<dc:creator>capecoder</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://capecoder.wordpress.com/2012/10/31/downloads-of-scala-plugin-for-intellij-rocket-upwards/</guid>
		<description><![CDATA[JetBrains&#8217; IntelliJ IDE (http://www.jetbrains.com/) is widely regarded as the best dev. environment for Scala. I&#8217;ve been very happy with the combination of the Apache-licensed free version of IntelliJ + the Scala plugin. The plugin download centre of IntelliJ provides cumulative &#8230; <a href="http://capecoder.wordpress.com/2012/10/31/downloads-of-scala-plugin-for-intellij-rocket-upwards/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=capecoder.wordpress.com&#038;blog=34735969&#038;post=132&#038;subd=capecoder&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>JetBrains&#8217; IntelliJ IDE (<a href="http://www.jetbrains.com/">http://www.jetbrains.com/</a>) is widely regarded as the best dev. environment for Scala. I&#8217;ve been very happy with the combination of the Apache-licensed free version of IntelliJ + the Scala plugin. The plugin download centre of IntelliJ provides cumulative download numbers for their various plugins. Over the last year I&#8217;ve noticed a very interesting trend. Between mid January and mid March of 2012 there were approximately <strong>6,000</strong> new downloads of the Scala plugin. The rate at which the cumulative download count is growing has rocketed up dramatically over the last several months. Between mid August and mid October the Scala plugin was downloaded <strong>90,000</strong> times. This increase represents a <strong>15x increase</strong> in the download rate vs the same period just 7 months earlier. With the total number of downloads to date sitting at over 318,000 the Scala plugin is now the most popular plugin for IntelliJ by a very wide margin. </p>
<p>I&#8217;ve plotted some of the data I gather manually from their update centre (note that April is missing as I didn&#8217;t take any samples during that month). The dramatic increase in the download rate is very clear:</p>
<p><a href="http://capecoder.files.wordpress.com/2012/10/cumulative.png"><img id="i-131" class="size-full wp-image" alt="Image" src="http://capecoder.files.wordpress.com/2012/10/cumulative.png?w=487" /></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/capecoder.wordpress.com/132/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/capecoder.wordpress.com/132/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=capecoder.wordpress.com&#038;blog=34735969&#038;post=132&#038;subd=capecoder&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://capecoder.wordpress.com/2012/10/31/downloads-of-scala-plugin-for-intellij-rocket-upwards/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6c334c397357ae2e43a0d3da164a9fe5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">capecoder</media:title>
		</media:content>

		<media:content url="http://capecoder.files.wordpress.com/2012/10/cumulative.png?w=487" medium="image">
			<media:title type="html">Image</media:title>
		</media:content>
	</item>
		<item>
		<title>Language benchmark results mapped to car types</title>
		<link>http://capecoder.wordpress.com/2012/10/03/language-benchmark-results-mapped-to-car-types/</link>
		<comments>http://capecoder.wordpress.com/2012/10/03/language-benchmark-results-mapped-to-car-types/#comments</comments>
		<pubDate>Wed, 03 Oct 2012 21:34:25 +0000</pubDate>
		<dc:creator>capecoder</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://capecoder.wordpress.com/?p=128</guid>
		<description><![CDATA[Just for fun I&#8217;ve mapped the programming language benchmark results from http://shootout.alioth.debian.org/ onto different types of car. The images below are selected based on the execution time of the benchmarks in different languages. The images are creative commons images sourced &#8230; <a href="http://capecoder.wordpress.com/2012/10/03/language-benchmark-results-mapped-to-car-types/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=capecoder.wordpress.com&#038;blog=34735969&#038;post=128&#038;subd=capecoder&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Just for fun I&#8217;ve mapped the programming language benchmark results from <a href="http://shootout.alioth.debian.org/" rel="nofollow">http://shootout.alioth.debian.org/</a> onto different types of car. The images below are selected based on the execution time of the benchmarks in different languages. The images are creative commons images sourced from <a href="http://carpictures.cc/cars/photo/" rel="nofollow">http://carpictures.cc/cars/photo/</a></p>
<p><a href="http://capecoder.files.wordpress.com/2012/10/cars1.jpg"><img class="size-full wp-image" src="http://capecoder.files.wordpress.com/2012/10/cars1.jpg?w=487" alt="Image" /></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/capecoder.wordpress.com/128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/capecoder.wordpress.com/128/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=capecoder.wordpress.com&#038;blog=34735969&#038;post=128&#038;subd=capecoder&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://capecoder.wordpress.com/2012/10/03/language-benchmark-results-mapped-to-car-types/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6c334c397357ae2e43a0d3da164a9fe5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">capecoder</media:title>
		</media:content>

		<media:content url="http://capecoder.files.wordpress.com/2012/10/cars1.jpg?w=487" medium="image">
			<media:title type="html">Image</media:title>
		</media:content>
	</item>
		<item>
		<title>Turbocharge your Scala code by using scala.collection.JavaConversions</title>
		<link>http://capecoder.wordpress.com/2012/07/29/scalamapbenchmark/</link>
		<comments>http://capecoder.wordpress.com/2012/07/29/scalamapbenchmark/#comments</comments>
		<pubDate>Sun, 29 Jul 2012 12:46:08 +0000</pubDate>
		<dc:creator>capecoder</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://capecoder.wordpress.com/?p=83</guid>
		<description><![CDATA[As noted in a previous blog post, Scala&#8217;s mutable map class is currently significantly less efficient than the corresponding HashMap class that ships with the JDK. The good news is that Scala makes it really easy to transparently use Java &#8230; <a href="http://capecoder.wordpress.com/2012/07/29/scalamapbenchmark/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=capecoder.wordpress.com&#038;blog=34735969&#038;post=83&#038;subd=capecoder&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>As noted in a <a href="http://capecoder.wordpress.com/2012/05/01/my-real-world-impressions-from-using-scala/" title="previous blog post" target="_blank">previous blog post</a>, Scala&#8217;s mutable map class is currently significantly less efficient than the corresponding HashMap class that ships with the JDK. The good news is that Scala makes it really easy to transparently use Java collections as if they were Scala collections, supporting all of the bells and whistles of the Scala collections framework.</p>
<p><pre class="brush: scala;">
import scala.collection.JavaConversions.mapAsScalaMap
var map: mutable.Map[String, String] = new java.util.HashMap[String, String]
map(&quot;MyKey&quot;) = &quot;MyValue&quot;
map += &quot;blah&quot; -&gt; &quot;blah&quot;
</pre><br />
I decided to benchmark the various map implementations in Scala and Java (JDK 7u5, Scala 2.10 Milestone 5). The results are rather interesting (but consistent with previous observations in real world usage). It was a pretty straightforward task. One million strings were inserted into the map/hash to measure insertion time, these strings were then each looked up in the map. The times reported are for steady state after repeated runs (to factor out any JIT effects).</p>
<p>What I found interesting was the extent to which using java.util.HashMap via the javaconversions package gives a major performance boost over using the default Scala Map collections. The performance gain was between 2-3x when switching from mutable.Map to java.util.HashMap for both lookups and insertions. As is to be expected using immutable.Map was even slower than mutable.Map. Given the fact that using j.u.HashMap results in a serious performance boost over the default mutable.Map one wonders why the Scala guys don&#8217;t simply use java.util.HashMap under to hood as the default mutable map (or come up with a more efficient alternative).</p>
<p>Ruby (1.8.7 and 1.9.3) were also benchmarked to provide a reference point as a language with rather pedestrian performance, to put the relative performance differences in perspective. Not surprisingly using java.util.HashMap from Scala using implicit javaconversions is 30-40x faster than Ruby.</p>
<p><a href="http://capecoder.files.wordpress.com/2012/07/benchpng.png"><img class="size-full wp-image" src="http://capecoder.files.wordpress.com/2012/07/benchpng.png?w=786" alt="Image" /></a></p>
<p>As requested by Andriy in the comments I&#8217;ve put the source below. Keep in mind that the code will probably need some editing as I&#8217;ve used comments to switch between various collection types. The code is designed to run the benchmark rather than targeting elegance etc. I could neaten it up a bit when I get the time, but it should be sufficient to give an idea of that tests I ran. Everything was run with default VM settings. Only the -server switch was added. I can&#8217;t find the link for the dictionary of words I used, but pretty much any 100k unique words from any dictionary will do (feel free to substitute a text file with random strings).</p>
<p>Java code:<br />
<pre class="brush: java;">
import java.io.File;
import java.io.FileNotFoundException;
import java.util.*;

import static java.lang.System.currentTimeMillis;
import static java.lang.System.out;

/**
 */
public class JBenchmark {

    private final int WARMUP_ITERATIONS = 100;
    private String[] strings;
    private Map&lt;String, String&gt; map;

    public static void main(String[] args) {
        JBenchmark bench = new JBenchmark();
        bench.loadStrings();
        out.println(&quot;bench HashMap&quot;);
        bench.benchInsertion(false, false);
        bench.benchLookup();
        out.println(&quot;bench HashMap, recycle map&quot;);//to avoid rehashing
        bench.benchInsertion(false, true);
        bench.benchLookup();
        out.println(&quot;bench TreeMap&quot;);//to avoid rehashing
        bench.benchInsertion(true, false);
        bench.benchLookup();
        out.println(&quot;bench TreeMap, recycling map&quot;);//to avoid rehashing
        bench.benchInsertion(true, true);
        bench.benchLookup();
        
    }

    private void benchInsertion(boolean useTree, boolean recycle) {
        //warmup
        for (int i = 0; i &lt; WARMUP_ITERATIONS; i++) {
            try {
                insertion(true, useTree, recycle);
                Thread.sleep(50);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        insertion(false, useTree, recycle);
    }

    private void benchLookup() {
        //warmup
        for (int i = 0; i &lt; WARMUP_ITERATIONS; i++) {
            try {
                lookup(true);
                Thread.sleep(50);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        lookup(false);
    }

    private void insertion(boolean warmup, boolean useTree, boolean recycle) {
        long start = currentTimeMillis();
        if (recycle) {
            if (map != null) {
                map.clear();
            }
        } else {
            if (useTree) {
                map = new TreeMap&lt;&gt;();
            } else {
                map = new HashMap&lt;&gt;();
            }
        }
        for (String s : strings) {
            map.put(s, s);
        }
        if (!warmup) {
            out.println(&quot;insertion millis: &quot; + (currentTimeMillis() - start));
        }
    }

    private void lookup(boolean warmup) {
        boolean empty = false;
        long start = currentTimeMillis();
        for (int i = 0; i &lt; strings.length; i++) {
            empty = map.get(strings[i]).length() != 0;
        }
        if (!warmup) {
            out.println(&quot;lookup millis: &quot; + (currentTimeMillis() - start));
            out.println(empty);  //just in case the compiler tries to optimize away all the work
        }
    }

    //load dictionary from disk
    private void loadStrings() {
        List&lt;String&gt; lines = new ArrayList&lt;&gt;();
        try (Scanner sc = new Scanner(new File(&quot;pathToDictionaryWith100kWords&quot;))) {
            while (sc.hasNext()) {
                lines.add(sc.nextLine());
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        for (int i = 0; i &lt; 900000; i++) {
            lines.add(i + &quot;&quot;);
        }
        strings = lines.toArray(new String[0]);
    }

}
</pre></p>
<p>Scala (may require some editing)<br />
<pre class="brush: scala;">
import collection.{immutable, mutable}
import io.Source
import collection.mutable._
import java.lang.System.currentTimeMillis
import java.util
import scala.collection.JavaConversions.mapAsScalaMap

/**
 * Code is pretty rough, but serves its purpose. May require some editing
 */
object SBenchmarkMutable extends App {
  val WarmUpIterations = 100

  loadStrings
  println(&quot;bench Map&quot;)
  benchInsertion(false, false)
  benchLookup
  
  println(&quot;bench Map, recycling&quot;)
  benchInsertion(false, true)
  benchLookup
  
  println(&quot;bench java Map&quot;)
  benchInsertion(true, false)
  benchLookup
  
  println(&quot;bench java Map, recycling&quot;)
  benchInsertion(true, true)
  benchLookup
  

  def benchInsertion(useJavaConversion: Boolean, recycle: Boolean) {
    var i = 0
    while (i &lt; WarmUpIterations) {
      insertion(true, useJavaConversion, recycle)
      Thread.sleep(50)
      i += 1
    }
    insertion(false, useJavaConversion, recycle)
  }

  def benchLookup {
    var i = 0
    while (i &lt; WarmUpIterations) {
      lookup(true)
      Thread.sleep(50)
      i += 1
    }
    lookup(false)
  }

  def insertion(warmup: Boolean, useJavaConversion: Boolean, recycle: Boolean) {
    val start = currentTimeMillis
    if (recycle) {
      if (map != null) {
         map.clear
      }
    }
    else {
      if (useJavaConversion) {
        map = new util.HashMap[String, String]()
      }
      else {
                map = mutable.Map()
//                map = immutable.Map()
      }
    }
    var i = 0
    //    while (i &lt; strings.size) {
    //      val s = strings(i)
    for (s &lt;- strings) {
      map += s -&gt; s //map(s) = s
      //      i += 1
    }
    //    }
    if (!warmup) {
      println(&quot;insertion millis: &quot; + (currentTimeMillis - start))
    }
  }

  def lookup(warmup: Boolean) {
    var empty = false
    val start = currentTimeMillis
    //    var i = 0
        for (s &lt;- strings) {
          empty = map(s).length != 0
        }
//    var i = 0
//    while (i &lt; strings.length) {
//      empty = map(strings(i)).length != 0
//      i += 1
//    }
    if (!warmup) {
      println(&quot;lookup millis: &quot; + (currentTimeMillis - start))
    }
  }

  def loadStrings {
    val lines = new ArrayBuffer[String]
    Source.fromFile(&quot;pathTo100kWords&quot;).getLines.foreach{lines += _}

    var i = 0
    while (i &lt; 900000) {
      lines += (i + &quot;&quot;)
      i += 1
    }
    strings = lines.toArray
  }

    private var strings: Array[String] = _
//  private var map: immutable.Map[String, String] = _
    private var map: mutable.Map[String, String] = _
}
</pre></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/capecoder.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/capecoder.wordpress.com/83/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=capecoder.wordpress.com&#038;blog=34735969&#038;post=83&#038;subd=capecoder&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://capecoder.wordpress.com/2012/07/29/scalamapbenchmark/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6c334c397357ae2e43a0d3da164a9fe5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">capecoder</media:title>
		</media:content>

		<media:content url="http://capecoder.files.wordpress.com/2012/07/benchpng.png?w=786" medium="image">
			<media:title type="html">Image</media:title>
		</media:content>
	</item>
		<item>
		<title>Scala adoption continues to climb rapidly</title>
		<link>http://capecoder.wordpress.com/2012/05/29/scala-adoption-continues-to-climb-rapidly-2/</link>
		<comments>http://capecoder.wordpress.com/2012/05/29/scala-adoption-continues-to-climb-rapidly-2/#comments</comments>
		<pubDate>Tue, 29 May 2012 21:02:58 +0000</pubDate>
		<dc:creator>capecoder</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Scala]]></category>
		<category><![CDATA[Trends]]></category>

		<guid isPermaLink="false">http://capecoder.wordpress.com/2012/05/29/scala-adoption-continues-to-climb-rapidly/</guid>
		<description><![CDATA[Various measures have been proposed for tracking the popularity of languages. Measuring the adoption of a programming language is an inexact science, but key indicators (job adverts, stack overflow tags, open source contributors) all point to rapid Scala adoption. Data &#8230; <a href="http://capecoder.wordpress.com/2012/05/29/scala-adoption-continues-to-climb-rapidly-2/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=capecoder.wordpress.com&#038;blog=34735969&#038;post=81&#038;subd=capecoder&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Various measures have been proposed for tracking the popularity of languages. Measuring the adoption of a programming language is an inexact science, but key indicators (job adverts, stack overflow tags, open source contributors) all point to rapid Scala adoption. Data gathered from indeed.com, stackoverflow.com and ohloh.net.</p>
<p><a href="http://capecoder.files.wordpress.com/2012/05/scalagrowth1.png"><img class="size-full wp-image" src="http://capecoder.files.wordpress.com/2012/05/scalagrowth1.png?w=487" alt="Image" /></a></p>
<p> </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/capecoder.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/capecoder.wordpress.com/81/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=capecoder.wordpress.com&#038;blog=34735969&#038;post=81&#038;subd=capecoder&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://capecoder.wordpress.com/2012/05/29/scala-adoption-continues-to-climb-rapidly-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6c334c397357ae2e43a0d3da164a9fe5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">capecoder</media:title>
		</media:content>

		<media:content url="http://capecoder.files.wordpress.com/2012/05/scalagrowth1.png?w=487" medium="image">
			<media:title type="html">Image</media:title>
		</media:content>
	</item>
		<item>
		<title>Scala books being published at quite a rate</title>
		<link>http://capecoder.wordpress.com/2012/05/06/scala-books-being-published-at-quite-a-rate/</link>
		<comments>http://capecoder.wordpress.com/2012/05/06/scala-books-being-published-at-quite-a-rate/#comments</comments>
		<pubDate>Sun, 06 May 2012 09:07:53 +0000</pubDate>
		<dc:creator>capecoder</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://capecoder.wordpress.com/?p=51</guid>
		<description><![CDATA[Since it emerged that Twitter was using Scala the number of books on the subject has risen dramatically. Today there are no fewer than 14 books either published or about to be published on the topic of Scala. I&#8217;ve previously &#8230; <a href="http://capecoder.wordpress.com/2012/05/06/scala-books-being-published-at-quite-a-rate/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=capecoder.wordpress.com&#038;blog=34735969&#038;post=51&#038;subd=capecoder&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Since it emerged that Twitter was using Scala the number of books on the subject has risen dramatically. Today there are no fewer than 14 books either published or about to be published on the topic of Scala. I&#8217;ve previously blogged about Scala books, but since then I&#8217;ve found that the list I provided was incomplete and that new Scala books are being published at quite a rate, so I missed some.</p>
<p>The following list of 14 Scala books [update:added another book] should be exhaustive, but if you know of any Scala books that I left out feel free to add a note in the comments or discuss which is your favourite.</p>
<ol>
<li><a title="Scala for the Impatient" href="http://www.amazon.com/Scala-Impatient-Cay-S-Horstmann/dp/0321774094/" target="_blank">Scala for the Impatient</a> perhaps the best book for learning Scala </li>
<li><a title="Programming in Scala" href="http://www.amazon.com/Programming-Scala-Comprehensive-Step---Step/dp/0981531644/" target="_blank">Programming in Scala</a> Detailed coverage by Martin Odersky himself</li>
<li><a title="Play for Scala" href="http://www.manning.com/hilton/" target="_blank">Play for Scala</a> (covers version 2)</li>
<li><a title="Scala in Depth" href="http://www.amazon.com/Scala-Depth-Joshua-Suereth-D/dp/1935182706/" target="_blank">Scala in Depth</a></li>
<li><a title="Programming Scala Scalability = Functional Programming + Objects (Animal Guide)" href="http://www.amazon.com/Programming-Scala-Scalability-Functional-Objects/dp/0596155956/" target="_blank">Programming Scala Scalability = Functional Programming + Objects (Animal Guide)</a></li>
<li><a title="Programming Scala Tackle Multi-Core Complexity on the Java Virtual Machine (Pragmatic Programmers)" href="http://www.amazon.com/Programming-Scala-Multi-Core-Complexity-Programmers/dp/193435631X/" target="_blank">Programming Scala Tackle Multi-Core Complexity on the Java Virtual Machine</a></li>
<li><a title="Actors in Scala" href="http://www.amazon.com/Actors-Scala-Philipp-Haller/dp/0981531652/" target="_blank">Actors in Scala</a></li>
<li><a title="Scala in Action" href="http://www.amazon.com/Scala-Action-Nilanjan-Raychaudhuri/dp/1935182757/" target="_blank">Scala in Action</a></li>
<li><a title="Lift in Action: The Simply Functional Web Framework for Scala" href="http://www.amazon.com/Lift-Action-Simply-Functional-Framework/dp/1935182803/" target="_blank">Lift in Action: The Simply Functional Web Framework for Scala</a></li>
<li><a title="The Definitive Guide to Lift: A Scala-based Web Framework (Expert's Voice in Open Source)" href="http://www.amazon.com/The-Definitive-Guide-Lift-Scala-based/dp/1430224215/" target="_blank">The Definitive Guide to Lift: A Scala-based Web Framework</a></li>
<li><a title="Introduction to the Art of Programming Using Scala (Chapman &amp; Hall/CRC Textbooks in Computing)" href="http://www.amazon.com/Introduction-Programming-Chapman-Textbooks-Computing/dp/1439896666/" target="_blank">Introduction to the Art of Programming Using Scala (Textbook)</a></li>
<li><a title="Functional Programming in Scala" href="http://manning.com/bjarnason/" target="_blank">Functional Programming in Scala</a></li>
<li><a title="Steps in Scala: An Introduction to Object-Functional Programming" href="http://www.amazon.com/Steps-Scala-Introduction-Object-Functional-Programming/dp/0521747589/" target="_blank">Steps in Scala: An Introduction to Object-Functional Programming</a></li>
<li><a title="Beginning Scala" href="http://www.amazon.com/Beginning-Scala-Experts-Voice-Source/dp/1430219890/" target="_blank">Beginning Scala</a></li>
</ol>
<p>I didn&#8217;t count this one, but note that there&#8217;s also a book on <a title="Play (2) for Java" href="http://www.manning.com/leroux/" target="_blank">Play (2) for Java</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/capecoder.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/capecoder.wordpress.com/51/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=capecoder.wordpress.com&#038;blog=34735969&#038;post=51&#038;subd=capecoder&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://capecoder.wordpress.com/2012/05/06/scala-books-being-published-at-quite-a-rate/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6c334c397357ae2e43a0d3da164a9fe5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">capecoder</media:title>
		</media:content>
	</item>
		<item>
		<title>Real world feedback from a Java dev using Scala</title>
		<link>http://capecoder.wordpress.com/2012/05/01/my-real-world-impressions-from-using-scala/</link>
		<comments>http://capecoder.wordpress.com/2012/05/01/my-real-world-impressions-from-using-scala/#comments</comments>
		<pubDate>Tue, 01 May 2012 16:28:45 +0000</pubDate>
		<dc:creator>capecoder</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://capecoder.wordpress.com/?p=40</guid>
		<description><![CDATA[It&#8217;s no secret that a large proportion of Scala programmers originate from the Java developer community. I&#8217;ve been writing Java code since the late 90&#8242;s and have recently starting doing some dev work in Scala. Since I fall squarely within &#8230; <a href="http://capecoder.wordpress.com/2012/05/01/my-real-world-impressions-from-using-scala/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=capecoder.wordpress.com&#038;blog=34735969&#038;post=40&#038;subd=capecoder&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>It&#8217;s no secret that a large proportion of Scala programmers originate from the Java developer community. I&#8217;ve been writing Java code since the late 90&#8242;s and have recently starting doing some dev work in Scala. Since I fall squarely within the target audience for Scala I&#8217;ve decided to share my experiences and impressions using Scala from a Java programmer&#8217;s perspective. Overall I&#8217;m very impressed by Scala and plan to use it more, but do have plenty of constructive criticism which I provide at the end of this blog post.</p>
<p>The first thing that struck me when reading up on Scala was just how many times I thought <em>&#8220;that&#8217;s a really good way of doing things, it&#8217;s much cleaner than the way Java does it&#8221;</em>. I&#8217;d been reading up on the language for a few months and experimenting with code, but I&#8217;ve now used Scala for actual dev work and I&#8217;ve learned a lot. The standard approach for learning to code in Scala is to start using it as &#8220;<em>java without semicolons</em>&#8220;. This was how I started a few months ago and I&#8217;ve gradually learned more and written more idiomatic Scala. The result of writing code the Scala way is code which is much cleaner (and more compact). At first it seems like you&#8217;re simply saving yourself a bit of typing over Java and not asking the IDE to generate code all the time. That doesn&#8217;t seem like much, but as I learned and coded more Scala I began to realise just how much easier it was to express ideas. Everything in Scala just seems to fit together better. Strings, Arrays, Lists, StringBuilders etc. all &#8220;feel&#8221; the same with common syntax and methods for common tasks such as accessing values, and adding items. Methods like groupBy, filter and map make common tasks such as processing a list of items surprisingly simple.</p>
<p>Overall I was very happy my decision to use Scala. The code was clear, it ran as fast as Java code and simply put the best word to describe Scala is <strong>elegant</strong>. For the first time in about many years I find myself wanting to switch my primary dev language. In terms of tooling and documentation I strongly recommend the IntelliJ Scala plugin (intelliJ has an open source community edition of their IDE these days and the plugin is free $0). In terms of books to learn Scala I found <a title="Scala for the impatient" href="http://www.amazon.com/Scala-Impatient-Cay-S-Horstmann/dp/0321774094" target="_blank"><strong>Scala for the Impatient</strong></a> (published a month or two ago) to be by far the best introduction to the language.</p>
<p>I was working on a Java codebase after the Scala work, and it struck me how dissatisfied working with Scala had made me with Java the language. It was like taking a giant leap backwards after being spoiled by the elegance of Scala.</p>
<p>As stated in the introduction I&#8217;m very pleased with Scala, but do have some constructive criticism to provide. It&#8217;s quite a long list, so before anyone tries to twist this as a &#8220;anti-Scala&#8221; post let me make it clear that if I were to come up with a similar list of issues for the other languages I use that list would be significantly longer. Here goes:</p>
<p>[Update: check Simon's response in the comments. Very informative!]</p>
<ol>
<li>The syntax for providing package level access to a method (a very common need when writing unit tests) is rather nasty: private[mypackagename] def doStuff = {&#8230;} Even the Java equivalent of void doStuff() looks better.</li>
<li>Some Scala standard library classes are slower than their Java counterparts e.g. HashMap and StringBuilder. Scala&#8217;s mutable Map doesn&#8217;t seem to provide a constructor that lets me specify initial capacity (so I&#8217;m forced to pay the cost of rehashing). This is easily worked around by using Java collections together with the implicit conversion classes provided by Scala (which work transparently and fantastically well)</li>
<li>Scala API documentation seems very terse and unfriendly. It&#8217;s not uncommon for a method to come with virtually no understandable information on what it actually does or a nice example. I <strong>very frequently</strong> found myself on StackOverflow to figure out how to use classes. [update: to fast-track better API docs perhaps providing a wiki-fied version would enable more community contributions]. Due to alphabetical sorting of method names overloaded operators are always at the top of the method listings. This makes the docs for a class very intimidating for beginners. Just move the operator docs to the end of the listing so that we&#8217;re not faced with the same storm of punctuation at the top the table each time.</li>
<li>Compiling takes a lot longer than Java. For a small project I would estimate (roughly) around a 5x difference. I&#8217;m willing to put up with a slower compiler for a better language, but would appreciate it if it were much faster.</li>
<li>There are some inconsistencies regarding which collections support the readOnly method to provide the Scala equivalent of java.util.Collections.unmodifiableList(). Do I really need to call toMap to make my mutable.Map an immutable one? I should probably check the source to see if the toMap call is expensive or not.</li>
<li>The various collections interfaces were a source of confusion. In Java the common class to use is Collection. In Scala I&#8217;m not so sure there&#8217;s Iterable, Traversable, GenTraversable, TraversableLike, GenTraversableLike, TraversableOnce, GenTraversableOnce, Iterator etc. There seems to be an endless list of options. If I invested a day reading up on the differences I could probably figure it out. For now Traversable or Iterable seem to be reasonable choices for a java.util.Collection equivalent. [update: it seems the non-intuitively named GenTraversable is the preferred choice]</li>
<li>Looking at my profiling data implicit conversions do appear to generate a small amount of overhead (apparently this is to be fixed in 2.10)</li>
<li>for loops seem to introduce more overhead when iterating compared to while loops or Java for loops. There was some talk of optimizing this in 2.10</li>
</ol>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/capecoder.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/capecoder.wordpress.com/40/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=capecoder.wordpress.com&#038;blog=34735969&#038;post=40&#038;subd=capecoder&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://capecoder.wordpress.com/2012/05/01/my-real-world-impressions-from-using-scala/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6c334c397357ae2e43a0d3da164a9fe5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">capecoder</media:title>
		</media:content>
	</item>
		<item>
		<title>Spellchecker in Scala vs Kotlin</title>
		<link>http://capecoder.wordpress.com/2012/04/15/spellchecker-in-scala-vs-kotlin/</link>
		<comments>http://capecoder.wordpress.com/2012/04/15/spellchecker-in-scala-vs-kotlin/#comments</comments>
		<pubDate>Sun, 15 Apr 2012 17:41:15 +0000</pubDate>
		<dc:creator>capecoder</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://capecoder.wordpress.com/?p=22</guid>
		<description><![CDATA[Recently code for a spellchecker in Kotlin was posted on a blog. What is interesting about the code is that it can almost be converted to Scala using only find and replace (&#8220;fun&#8221; -&#62; &#8220;def&#8221;, &#8220;&#60;&#8221; -&#62; &#8220;[",  "&#62;" -&#62; &#8230; <a href="http://capecoder.wordpress.com/2012/04/15/spellchecker-in-scala-vs-kotlin/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=capecoder.wordpress.com&#038;blog=34735969&#038;post=22&#038;subd=capecoder&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Recently code for a spellchecker in Kotlin was posted on <a title="a blog" href="http://richardlog.com/post/21142113656/exploring-kotlin-writing-a-simple-spell-checker" target="_blank">a blog</a>. What is interesting about the code is that it can almost be converted to Scala using only find and replace (&#8220;fun&#8221; -&gt; &#8220;def&#8221;, &#8220;&lt;&#8221; -&gt; &#8220;[",  "&gt;" -&gt; "]&#8220;).</p>
<p>More interesting is that idiomatic Scala code is much less verbose than the Kotlin version. The Scala version (21 lines) is almost half the size of the Kotlin version (40 lines). The Java published on the blog linked above is 43 lines.</p>
<p>Scala version here:</p>
<p><pre class="brush: scala;">
package com.wordpress.capecoder

import scala.io.Source

object ScalaSpellChecker {

    private val DICTIONARY_WORDS = &quot;/usr/share/dict/words&quot;;

    def checkSpelling(input : String) = {
        val words = readDictionary()
        !input.toLowerCase().split(&quot; &quot;).exists(!words.contains(_))
    }

    private def readDictionary = Source.fromFile(DICTIONARY_WORDS).getLines.toSet+&quot;scala&quot;

	def main(args : Array[String]) {
       val defaultInput = &quot;scala fuses functional and OO programming&quot;
       val valid = checkSpelling(if (args.size &gt; 0) args(0) else defaultInput)
       println(&quot;Is the text valid? &quot;+valid)
    }
}
</pre></p>
<p>Kotlin version here:</p>
<p><pre class="brush: scala;">
package com.richardlog.spellcheck

import java.io.*
import java.io.File
import java.util.Set

class KotlinSpellChecker {

    private val DICTIONARY_WORDS = File(&quot;/usr/share/dict/words&quot;);

    fun checkSpelling(input : String) : Boolean {
        val words = readDictionary()
        for (word in input.toLowerCase().split(&quot; &quot;)) {
            if (!words.contains(word)) {
                println(&quot;$word is not in the dictionary&quot;);
                return false;
            }
        }
        return true;
    }

    private fun readDictionary() : Set {
        val words = hashSet(&quot;kotlin&quot;) // add kotlin to dictionary
        val stream = FileInputStream(DICTIONARY_WORDS).buffered();
        try {
            val reader = InputStreamReader(stream, &quot;UTF-8&quot;);
            reader.forEachLine( { words.add(it)} )
        } finally {
            stream.close();
        }
        return words;
    }
}

fun main(args : Array) {
    val defaultInput = &quot;Kotlin is an island&quot;
    val valid = KotlinSpellChecker().checkSpelling(if (args.size &gt; 0) args[0] else defaultInput)
    println(&quot;Is the text valid? $valid&quot;)
}
</pre></p>
<p>Note that I knocked the Scala version together in about 5 minutes so there may still be some minor syntax errors/typos.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/capecoder.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/capecoder.wordpress.com/22/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=capecoder.wordpress.com&#038;blog=34735969&#038;post=22&#038;subd=capecoder&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://capecoder.wordpress.com/2012/04/15/spellchecker-in-scala-vs-kotlin/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6c334c397357ae2e43a0d3da164a9fe5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">capecoder</media:title>
		</media:content>
	</item>
		<item>
		<title>Language popularity: It&#8217;s not about search engine result counts</title>
		<link>http://capecoder.wordpress.com/2012/04/09/language-popularity-its-not-about-search-engine-result-counts/</link>
		<comments>http://capecoder.wordpress.com/2012/04/09/language-popularity-its-not-about-search-engine-result-counts/#comments</comments>
		<pubDate>Mon, 09 Apr 2012 21:00:15 +0000</pubDate>
		<dc:creator>capecoder</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://capecoder.wordpress.com/?p=16</guid>
		<description><![CDATA[Recently there has been a lot of noise about the Tiobe index in which search engine result counts are compared for various programming languages. Looking at search engine results is an approximate, but very inaccurate method of measuring popularity. One &#8230; <a href="http://capecoder.wordpress.com/2012/04/09/language-popularity-its-not-about-search-engine-result-counts/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=capecoder.wordpress.com&#038;blog=34735969&#038;post=16&#038;subd=capecoder&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Recently there has been a lot of noise about the Tiobe index in which search engine result counts are compared for various programming languages. Looking at search engine results is an approximate, but very inaccurate method of measuring popularity. One problem with such a method is that the mere mention of a programming language on any web page (regardless of context) is interpreted as &#8220;popularity&#8221;. There is no notion of how old a web page is. If C++ gets mentioned in a blog post from 1997 that&#8217;s counted towards current &#8220;popularity&#8221; even if the author of the blog post no longer uses C++. Search results including &#8220;I hate XYX programming&#8221; and &#8220;XYZ programming sucks&#8221; get counted as &#8220;popularity&#8221;.</p>
<p>What<strong> </strong>we should really be measuring is which languages are actively being used. How do you measure usage? The first idea which usually springs to mind is to see how many open source projects are using language X on GitHub or Sourceforge. This logic is deeply flawed as a great deal of code being written today is not open source. Focusing only on open source projects excludes vast quantities of code being churned out by paid developers working on projects and internal systems which will never be open sourced.</p>
<p>We need to measure the number of developers actively writing code in a particular language *<strong>today</strong>*. What do programming languages all have in common? They all have developers trying to solve real problems. Typically when a developer has a problem he can&#8217;t solve he goes to a site like stackoverflow.com and asks for advice. If you&#8217;re asking questions about how to do something in a programming language there&#8217;s a very high probability that you are actively using that language.</p>
<p>Looking at stackoverflow.com data for the last week we get a picture which is very different from the Tiobe index. The first thing that stands out is that Java, C#, Javascript and PHP feature much higher in the rankings than C. This should not be surprising. While C is suited to many tasks such as operating systems and device driver development the vast majority of code being churned out by Joe Developer is not written in C.</p>
<p>The next thing stands out is that the next generation of JVM languages (Scala, Groovy, Clojure) feature well ahead of languages such as Ada, Nxt-g and Logo which are ranked surprisingly high in naive search engine result counts. Scala is in fact getting very close to breaking into the mainstream group.</p>
<p><a href="http://capecoder.files.wordpress.com/2012/04/lang.png"><img class="alignnone size-full wp-image-17" title="lang" src="http://capecoder.files.wordpress.com/2012/04/lang.png?w=584&#038;h=429" alt="stackoverflow questions per week by language" width="584" height="429" /></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/capecoder.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/capecoder.wordpress.com/16/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=capecoder.wordpress.com&#038;blog=34735969&#038;post=16&#038;subd=capecoder&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://capecoder.wordpress.com/2012/04/09/language-popularity-its-not-about-search-engine-result-counts/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6c334c397357ae2e43a0d3da164a9fe5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">capecoder</media:title>
		</media:content>

		<media:content url="http://capecoder.files.wordpress.com/2012/04/lang.png" medium="image">
			<media:title type="html">lang</media:title>
		</media:content>
	</item>
		<item>
		<title>New Scala books</title>
		<link>http://capecoder.wordpress.com/2012/04/08/new-scala-books/</link>
		<comments>http://capecoder.wordpress.com/2012/04/08/new-scala-books/#comments</comments>
		<pubDate>Sun, 08 Apr 2012 17:07:25 +0000</pubDate>
		<dc:creator>capecoder</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://capecoder.wordpress.com/?p=11</guid>
		<description><![CDATA[One of the signs of a healthy language is the large number of books written on the subject. Last month saw the release of Scala for the Impatient, an excellent introduction to the language for programmers who already know a &#8230; <a href="http://capecoder.wordpress.com/2012/04/08/new-scala-books/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=capecoder.wordpress.com&#038;blog=34735969&#038;post=11&#038;subd=capecoder&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>One of the signs of a healthy language is the large number of books written on the subject. Last month saw the release of <a title="Scala for the Impatient" href="http://www.amazon.com/Scala-Impatient-Cay-S-Horstmann/dp/0321774094" target="_blank">Scala for the Impatient</a>, an excellent introduction to the language for programmers who already know a language like Java, C# or Ruby. If you&#8217;ve been thinking about learning Scala this is a no-nonsense introduction.</p>
<p>Next month will see the release of <a title="Scala in Depth" href="http://www.amazon.com/Scala-Depth-Joshua-Suereth-D/dp/1935182706" target="_blank">Scala in Depth</a>, which makes for an excellent second book on the subject, focusing on best practices, not unlike Josh Bloch&#8217;s Effective Java Programming.</p>
<p>A third new book being published soon is <a title="Scala in Action" href="http://www.amazon.com/Scala-Action-Nilanjan-Raychaudhuri/dp/1935182757/" target="_blank">Scala in Action</a> which is slated for release in July.</p>
<p>[EDIT: See the comments section for details on <strong>more</strong> Scala books about to be published which I missed!]</p>
<p>The existing collection of books on Scala is already impressive and includes:<br />
<a title="Programming in Scala" href="http://www.amazon.com/Programming-Scala-Comprehensive-Step-Step/dp/0981531644/" target="_blank">Programming in Scala</a> (Odersky 2nd Ed.) An excellent book to understand the &#8220;why&#8221; as much as the &#8220;how&#8221;<br />
<a title="Programming Scala" href="http://www.amazon.com/Programming-Scala-Scalability-Functional-Objects/dp/0596155956/" target="_blank">Programming Scala</a> (O&#8217;Reilly)<br />
<a title="Programming Scala" href="http://www.amazon.com/Programming-Scala-Multi-Core-Complexity-Programmers/dp/193435631X/" target="_blank">Programming Scala</a> (Pragmatic Series)</p>
<p>It would be nice to see an updated or new book coming out on the 2nd version of the <a title="Play Framework" href="http://www.playframework.org/" target="_blank">Play Framework</a></p>
<p>Another opportunity for a new book would be a Scala cookbook including examples using the standard libraries as well as third party libraries.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/capecoder.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/capecoder.wordpress.com/11/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=capecoder.wordpress.com&#038;blog=34735969&#038;post=11&#038;subd=capecoder&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://capecoder.wordpress.com/2012/04/08/new-scala-books/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6c334c397357ae2e43a0d3da164a9fe5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">capecoder</media:title>
		</media:content>
	</item>
	</channel>
</rss>
